Советы по развертыванию
Вот список вещей, которые следует помнить при размещении на хостинге большого бота.
Вас также могут заинтересовать наши инструкции по размещению ботов. Просмотрите Хостинг / Туториалы в верхней части страницы, чтобы увидеть некоторых хостинг-провайдеров, которые уже имеют специальные руководства.
Ошибки
- Установите обработчик ошибок с помощью
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 предоставляет необходимые хуки для начала написания тестов, было бы очень полезно иметь плагин для тестирования ботов. Это новая территория, т. к. таких плагинов для тестирования практически не существует. Мы с нетерпением ждем вашего вклада!
Пример того, как можно провести тестирование, можно найти здесь.