Контрольний список розгортання
Ось список речей, які слід памʼятати при розміщенні на хостингу великого бота.
Вас також можуть зацікавити наші інструкції по розміщенню ботів. Перегляньте Хостинг/Посібники у верхній частині сторінки, щоб побачити деякі платформи, які вже мають спеціальні посібники.
Помилки
- Встановіть обробник помилок за допомогою
bot
для тривалого опитування або у вашому серверному фреймворку для вебхуків..catch - Використовуйте
await
для всіхPromise
і встановіть лінтинг з правилами, які забезпечують, щоб ви ніколи про це не забували.
Надсилання повідомлень
- Надсилайте файли, передаючи шлях або
Buffer
замість потоку, або принаймні переконайтеся, що ви знаєте про можливі підводні камені. - Використовуйте
bot
як резервний обробник для реагування на всі запити зворотного виклику..on("callback _query: data") - Використовуйтея плагін
auto
для автоматичного оброблення помилок, викликаних перевищенням ліміту кількості запитів, та повторного надсилання таких запитів.-retry
Масштабування
Це залежить від типу розгортання.
Тривале опитування (long polling)
- Використовуйте плагін для конкурентності (runner)
. - Використовуйте
sequentialize
з тією самою функцією для отримання ключу сесії, що і в плагіні сесій. - Перегляньте параметри конфігурації
run
(довідка API) і переконайтеся, що вони відповідають вашим потребам, або навіть розгляньте можливість зібрати власний runner зі своїм джерелом оновлень (source) та їх поглиначем (sink). Головне, що потрібно враховувати, — це максимальне навантаження, яке ви хочете застосувати до вашого сервера, тобто скільки оновлень може бути оброблено одночасно. - Подумайте про реалізацію коректного завершення роботи, щоб завершити обробку поточних оновлень перш ніж ви зупините бота, наприклад, для його оновлення.
Вебхуки
- Переконайтеся, що ви не виконуєте довготривалі операції у проміжних обробниках: наприклад, передача великих файлів. Це призводить до помилок тайм
-ауту для вебхуків та дублювання обробки оновлень, оскільки Telegram буде повторно надсилати непідтверджені оновлення. Замість цього розгляньте можливість використання черги завдань. - Ознайомтеся з конфігурацією
webhook
(довідка API).Callback - Якщо ви змінювали параметр
get
для плагіну сесій, використовуйтеSession Key sequentialize
з тією ж функцією для отримання ключу сесії. - Якщо ви працюєте на безсерверній платформі або платформі з автоматичним масштабуванням, встановіть інформацію про бота, щоб запобігти надмірній кількості викликів
get
.Me - Подумайте про використання відповідей вебхуку.
Сесії
- Подумайте про використання
lazy
, як описано тут.Sessions - Використовуйте опцію
storage
для налаштування вашого адаптера зберігання даних, інакше всі дані будуть втрачені, коли процес бота зупиниться.
Тестування
Пишіть тести для свого бота. Це можна зробити за допомогою grammY наступним чином:
- Імітуйте вихідні запити API за допомогою перетворювачів.
- Визначте та надішліть зразки обʼєктів оновлення вашому боту за допомогою
bot
(довідка API). Скористайтеся цими обʼєктами оновлення, наданими командою Telegram, для натхнення..handle Update
Запропонуйте власний фреймворк для тестування
Хоча grammY надає необхідні хуки для початку написання тестів, було б дуже корисно мати фреймворк для тестування ботів. Це нова територія — подібних тестових фреймворків здебільшого не існує. Ми з нетерпінням чекаємо на ваші внески!
Приклад того, як можна провести тестування, можна знайти тут.