Советы по развертыванию
Вот список вещей, которые следует помнить при размещении на хостинге большого бота.
Вас также могут заинтересовать наши инструкции по размещению ботов. Просмотрите Хостинг / Туториалы в верхней части страницы, чтобы увидеть некоторых хостинг-провайдеров, которые уже имеют специальные руководства.
Ошибки
- Установите обработчик ошибок с помощью
bot
для long polling или в вашем серверном фреймворке для вебхуков..catch - Используйте
await
для всехPromise
и установите линтинг с правилами, которые гарантируют, что вы никогда об этом не забудете.
Отправка сообщений
- Отправляйте файлы, передавая путь или
Buffer
вместо потока (stream
), или по крайней мере убедитесь, что вы знаете о возможных подводных камнях. - Используйте
bot
в качестве резервного обработчика для реагирования на все.on("callback _query: data") callback
._query - Используйте плагин
auto
для автоматической обработки ошибок, вызванных превышением лимита количества запросов, и повторной отправки таких запросов.-retry
Масштабирование
Это зависит от типа развертывания.
Long Polling
- Используйте плагин
runner
. - Используйте
sequentialize
с той же функцией для получения ключа сессии, что и в плагине сессий. - Просмотрите параметры конфигурации
run
(документация API) и убедитесь, что они соответствуют вашим потребностям, или даже рассмотрите возможность собрать собственный runner со своим источником обновлений и их поглотителем (sink). Главное, что нужно учитывать — это максимальная нагрузка, которую вы хотите применить к вашему серверу, то есть сколько обновлений может быть обработано одновременно. - Подумайте о реализации корректного завершения работы, чтобы завершить обработку текущих обновлений прежде чем вы остановите бота, например, для его обновления.
Вебхуки
- Убедитесь, что вы не выполняете долговременные операции в middleware: например, передача больших файлов. Это приводит к ошибкам таймаута для вебхуков и дублированию обработки обновлений, поскольку Telegram будет повторно отправлять неподтвержденные обновления. Вместо этого рассмотрите возможность использования очереди задач.
- Ознакомьтесь с конфигурацией
webhook
(документация API).Callback - Если вы изменяли параметр
get
для плагина сессий, используйтеSession Key sequentialize
с той же функцией для получения ключа сессии, что и в плагине сессий. - Если вы работаете на бессерверной платформе или платформе с автоматическим масштабированием, установите информацию о боте, чтобы предотвратить чрезмерное количество вызовов
get
.Me - Подумайте об использовании ответов вебхука.
Сессии
- Подумайте об использовании
lazy
, как описано здесь.Sessions - Используйте опцию
storage
для настройки вашего адаптера хранения данных, иначе все данные будут потеряны, когда процесс бота остановится.
Тестирование
Пишите тесты для своего бота. Это можно сделать с помощью grammY следующим образом:
- Имитируйте исходящие запросы API с помощью трансформирующих функций.
- Определите и отправьте образцы объектов обновления вашему боту с помощью
bot
(документация API). Воспользуйтесь этими объектами обновления, предоставленными командой Telegram, для вдохновения..handle Update
Предложите собственный плагин для тестирования
Хотя grammY предоставляет необходимые хуки для начала написания тестов, было бы очень полезно иметь плагин для тестирования ботов. Это новая территория, т. к. таких плагинов для тестирования практически не существует. Мы с нетерпением ждем вашего вклада!
Пример того, как можно провести тестирование, можно найти здесь.