Troubleshooting¶
AddTelegramBot must be called before ...¶
Framework handler и transport APIs требуют Telegram bot services.
Правильный order:
builder.Services.AddTelegramBot(options => options.Token = token);
builder.Services.AddTelegramHandlersFromAssembly(typeof(Program).Assembly);
builder.Services.AddLongPolling();
Assembly does not contain generated Telegram handler metadata¶
AddTelegramHandlersFromAssembly(...) требует IWF.TeleFlow.Generators.
Исправление:
Потом пересобери application.
Если generated registration не нужен, используй:
Или:
Можно ли читать token из appsettings.json?¶
Да. TeleFlow не важно, откуда пришёл token. Прочитай его через обычную .NET configuration и явно передай resolved value:
builder.Services.AddTelegramBot(options =>
{
options.Token = configuration["Telegram:BotToken"]
?? throw new InvalidOperationException("Telegram:BotToken is not configured.");
});
Смотри Конфигурация и секреты.
Handler не срабатывает¶
Проверь:
- update type: message, callback, chat member;
- command prefix;
- text exact match vs contains;
- state requirement;
- class-level filters;
- custom filter return value;
- allowed updates for long polling.
State недоступен¶
Зарегистрируй state storage:
Для custom storage убедись, что IStateStore и state middleware registered.
Wizard back не работает¶
Wizard back требует state history storage. AddMemoryStateStorage() его регистрирует. Custom storage должен предоставить IStateHistoryStore.
Callback data слишком длинная¶
Telegram callback data ограничен 64 UTF-8 bytes. Используй compact payloads:
Не клади large JSON payloads в callback data.
Webhook возвращает unauthorized¶
Проверь SecretToken configuration и Telegram webhook settings. Incoming request должен использовать expected secret token.
Бот получает старые updates после рестарта¶
Telegram может вернуть pending updates после downtime. Current public API не документирует drop-pending-updates option. Deployment и startup behavior нужно проектировать с учётом pending updates.