Telegram bot на локале
При разработке любых приложений их приходится тестировать, а значит, инструмент должен быть рабочим. В современных реалиях просто необходимо, чтобы в продакшене находился только рабочий код, соответственно вся разработка должна вестись на локале. Сегодня поговорим о том, как запустить телеграм бота на локальной машине без наличия белого IP, HTTPS сертификата и т.п.
Шаг 1
Первое, что нам понадобится сделать, это зарегистрировать тестового бота в Telegram.
Для этого пишем боту BotFather сообщение
/newbot
Далее следуем инструкциям и получаем токен для тестового бота, например:
1637791451:AAGRg52LucasXcd-6oXT-W13QpHoJRGp_J4
Шаг 2
Для того, чтобы Telegram бот работал, ему надо обращаться к URL по протоколу https и у домена должен быть сертификат. Для решения этой проблемы существует сервис ngrok
.
Он позволяет создать туннель с локальной машины к серверу, у которого есть все необходимые сертификаты.
Регистрируемся и авторизуемся на сайте. Прямо на главной странице будет инструкция, что нужно сделать:
- Скачать файл
- Распаковать
- Присоединиться к своему аккаунту
- Запустить туннель на 8000 порту
./ngrok http 8000
Шаг 3
Теперь нужно зарегистрировать бот на сервер ngrok. Надо понимать, что сервер поднимается только тогда, когда запущен туннель и каждый раз это новый сервер, поэтому после перезагрузки туннеля, шаг 3 нужно будет делать заново для продолжения работы с ботом.
Для регистрации бота, нужно пройти по адресу
https://api.telegram.org/bot1637791451:AAGRg52LucasXcd-6oXT-W13QpHoJRGp_J4/setWebhook?url=https://a2f86c865986.ngrok.io/telegram/OmoTestBot/
где OmoTestBot
— название тестового бота
Подробнее о установке Webhook можно почитать здесь
Шаг 4
Осталось добавить a2f86c865986.ngrok.io
в ALLOWED_HOSTS и запустить dev вебсервер на локальной машине на порту 8000. В случае с Django — ./manage.py runserver_plus