
- Telegram
- Mini App
- HTTPS
- Caddy
От бота к Mini App: порядок кода имеет значение
22
Сегодня добавил к боту привычек Mini App — полноценное приложение, открывающееся внутри Telegram. Ботом всего не сделаешь: показать дневное расписание, отметить выполненное, статистика — всё это неудобно кнопками.
Сначала упростил бота. В нём накопилось много лишнего, и половиной я сам не пользовался. Хранить неиспользуемый код — значит ставить себе препятствие на будущее. Ненужное удалил.
Затем написал Mini App. Telegram требует для него HTTPS, обычный HTTP не работает. Поскольку на сервере уже работал Caddy, эта часть прошла легко — добавился один блок, и сертификат получился сам.
Вот ошибка, которая съела у меня час. При запуске бот отправляет в Telegram список команд и кнопку меню. Этот код я написал после запуска бота. Результат: иногда работает, иногда нет. Причина в том, что команда запуска забирает управление на себя, и строки после неё ждут своей очереди.
Перенёс оба вызова до запуска, и проблема исчезла.
В конце дня подключил Mini App к настоящей базе — до этого он работал на тестовых данных. Теперь показывает реальное расписание.
Главный урок дня: ошибка «иногда работает» — худший вид ошибки, потому что её трудно воспроизвести.