Вы уже создали своего Telegram-бота и он прекрасно работает на вашей локальной машине, теперь вы хотите развернуть и запустить его на Heroku без использования фреймворка flask. В этой статье я дам вам пошаговое руководство, как именно это сделать.
Необходимые условия
У вас должно быть следующее:-
- Учетная запись Heroku. Вы можете создать ее на сайте https://signup.heroku.com/.
- Telegram-бот, работающий на вашей локальной машине. (Если у вас его нет, не беспокойтесь, я расскажу вам, как сделать простой бот).
Давайте начнем…
Откройте место, где у вас есть код, который запускает вашего telegram-бота, если у вас его еще нет, вы можете скопировать код ниже для простого бота, который я создал, который повторяет текст, отправленный ему.
from telegram.ext import *
from telegram import *
TOKEN = 'Your API Key'
def echo_message(update, context):
update.message.reply_text(f'{update.message.text}')
def main():
updater = Updater(TOKEN, use_context=True)
disp = updater.dispatcher
disp.add_handler(MessageHandler(Filters.regex(r'.*'), echo_message))
updater.start_polling()
updater.idle()
if __name__ == '__main__':
main()
Создание приложения на Heroku
Войдите в Heroku и перейдите в раздел dashboard >> new >> create a new app. Введите название приложения и выберите регион, затем нажмите кнопку «Создать». Я использую «testingnotes» в качестве названия приложения и США в качестве региона.
Выберите настройки, затем прокрутите вниз до доменов и скопируйте URL-адрес вашего приложения, который вам будет дан, вы будете использовать его позже.
Вы получите свой URL здесь:-.
Модификация кода вашего telegram-бота
Чтобы развернуть telegram-бота на Heroku, внесите следующие изменения в ваш код на python.
В верхней части кода добавьте следующие строки:-
import os
TOKEN = os.environ.get('TOKEN')
PORT = int(os.environ.get('PORT',88))
Внесенные изменения позволят вам получить ключ API и PORT (порт, который будет прослушивать бот) из переменных окружения.
В конце кода удалите updater.start_polling()
и добавьте следующие строки:-
updater.start_webhook(listen="0.0.0.0",
port=int(PORT),
url_path=TOKEN,
webhook_url='app URL that you copied from Heroku + TOKEN)
updater.idle()
Создайте профиль и назовите его ‘Procfile’ без использования расширений и добавьте в него следующие строки:
web: python3 main.py $PORT
‘main.py’ — это файл python, который запускает бота.
Создайте файл requirements.txt, набрав следующие команды в виртуальной среде:
pip freeze > requirements.txt
Теперь код вашего бота должен выглядеть следующим образом:
from telegram.ext import *
from telegram import *
import os
TOKEN = os.environ.get('TOKEN')
PORT = int(os.environ.get('PORT', 88))
def echo_message(update, context):
update.message.reply_text(f'{update.message.text}')
def main():
updater = Updater(TOKEN, use_context=True)
disp = updater.dispatcher
disp.add_handler(MessageHandler(Filters.regex(r'.*'), echo_message))
updater.start_webhook(listen="0.0.0.0",
port=int(PORT),
url_path=TOKEN,
webhook_url='https://testingnotes.herokuapp.com/' + TOKEN)
updater.idle()
if __name__ == '__main__':
main()
Развертывание
Откройте терминал, перейдите в папку с проектом и введите следующие команды:
$ Heroku login
$ git init
$ heroku git:remote -a appname
$ git add.
$ git commit -am "make it better"
$ git push Heroku master
Если развертывание прошло успешно, вы увидите следующее сообщение.
Перейдите к настройкам, затем Config Vars. Добавьте ‘TOKEN’ в качестве ключа, а затем поместите ваш ключ API в качестве значения.
Вы поместите ключ API сюда:-.
Теперь вернитесь в Telegram и взаимодействуйте с вашим ботом. Он должен работать.