Развертывание Python Telegram Bot на Heroku без использования Flask

Вы уже создали своего Telegram-бота и он прекрасно работает на вашей локальной машине, теперь вы хотите развернуть и запустить его на Heroku без использования фреймворка flask. В этой статье я дам вам пошаговое руководство, как именно это сделать.

Необходимые условия

У вас должно быть следующее:-

  1. Учетная запись Heroku. Вы можете создать ее на сайте https://signup.heroku.com/.
  2. 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 и взаимодействуйте с вашим ботом. Он должен работать.

Оцените статью
devanswers.ru
Добавить комментарий