Как запустить telegram бота на heroku

от admin

How to Deploy a Telegram Bot using Heroku for FREE

A Complete Guide Using the python-telegram-bot Library

R unning your telegram bot locally suffices for simple applications. However, if you wanted to scale up your bot and enable others to use your bot even when you are not running the bot locally, you will need to go one step further to deploy the bot.

In this tutorial, I will be going through how to deploy a telegram bot you have created using the python-telegram-bot library with Heroku. What’s even better is that we can do this completely for free! Forget about all the fees you incur from other hosting options, Heroku will mostly likely suffice for your needs, without you having to pay a single cent nor enter your credit card details.

In order to do so, I will use a simple starter script taken from the examples in the python-telegram-bot Github repository where the bot simply echos whatever the user sends. You may have a different script, but I will show you which sections to modify in order to deploy the bot using Heroku.

If you want to go straight to the files needed, head over to this Github repository to download them!

This is our starting point:

Modifying the python-telegram-bot script

Changing from Polling to Webhooks

Firstly, we will modify how the bot fetches new data. The python-telegram-bot script uses polling instead of webhooks to fetch new data. For simple testing purposes, polling is sufficient because it’s simple to implement. However, the disadvantage of polling is that it is inefficient and the data it fetches is always old and never real-time. This is because polling sends a request at a predetermined frequency to detect any changes in the data, meaning it constantly checks if the data is modified, instead of being “notified” when a change is made to the data.

On the other hand, webhooks act like push notifications. Rather than fetching information, webhooks are triggered when the data is modified. This allows for realtime information and also makes it much more efficient because there is no need to continuously send requests to check for data.

We first import os, and then set the port number to listen in for the webhook.

Next, we modify the following line from

What this is doing is that it changes the polling method to webhook, listening in to 0.0.0.0 with the port you specified above with the PORT variable. The token refers to the API token of your telegram bot, which should be defined at the top of the code. The next line is to set the Webhook with the link to your heroku app, which we will get to next.

With all the changes to the python file, it should look similar to this (with your own Telegram bot token):

Creating your Heroku Webapp — Setting up the Directory

We are done with editing the python-telegram-bot script, except for changing the name of your heroku app which we will get into soon. In order for heroku to recognise the following as a python app, you need the following files in the same directory:

The python code should be inside the bot.py file, and I will go through the process to create the Procfile and requirements.txt.

First, change the directory of your terminal / command prompt to the same directory containing your python script. Then, create a requirements.txt file containing the following line:

This is needed to tell heroku which libraries it needs to install in order to execute the code. Assuming you are using the sample code above, the only library you need is python-telegram-bot, and the version we are using is 12.7. If you are importing other libraries to run your python code, be sure to include the other libraries as well in the requirements.txt file.

Next, you need a Procfile. The procfile declares the process type followed by the command, in the format <process type>: <command>. Here, we are using the web process type, which receives external HTTP traffic from Heroku’s routers. The command is python3 bot.py, which tells Heroku to execute the python file as you normally would with a python file locally. So your Procfile should contain the line:

Make sure that the Procfile does not have any file extension like .txt behind it, because it won’t work.

Creating your Heroku Webapp

With the three files in the same directory, we will now create the Heroku Webapp.

  1. Login / create a Heroku account.
  2. Install the Heroku CLI. If you do not have Git installed, first install Git before proceeding with the Heroku CLI.
  3. Once installed, you can use the heroku command in your terminal / command prompt. Go to the same directory as your python files, and type:

A new window will be opened in your browser prompting you to login, so just click on the button.

4. Once you are logged in, go back to the command line. Type in

to create your new webapp. Here, heroku will assign your webapp a name as well as the link to your webapp, which should be of the format https://yourherokuappname.herokuapp.com/. Paste the URL into the bot.py code, for the line

With all the changes to your bot.py file, it should look similar to this (with your own Telegram bot token and heroku app name, of course):

5. Next, in your command line, type in

The first line creates a new Git repository. The second line then tells Git that you want to include updates to a particular file in the next commit. The third line then commits the changes. In the fourth line, change “YourAppName” to the name of your heroku app. Lastly, the fifth line pushes everything to the server.

You should then see the following messages:

In particular, it will say that a Python app is detected and it will install the required libraries in the requirements.txt file using pip. Then, it will read the Procfile which specifies that the bot.py file is to be executed.

So that’s it! Once it finishes executing, you can simply head over to Telegram and message /start to your bot. It should now behave as you expect it to.

Since you are using the free plan on heroku, the bot will sleep after 30 minutes of inactivity. So do expect the bot to take a few seconds to respond to your /start if you are using it more than 30 minutes after it was previously used. Other than that, the bot will respond almost instantaneously

What to do if your Bot stops responding

I’ve noticed that the bot stops responding after about 24 hours of inactivity (because we are using the free version of Heroku), so if you want to “jolt” the bot awake, one way is to make a change to one of the files (eg. changing the python3 in the procfile to python and vice versa) and then committing the changes with the lines below:

You should see again see the messages about a Python app being detected and once it finishes executing, your bot should revive now!

Создаем Telegram-бота на Python. Часть 2

Создаем Telegram-бота на Python. Часть два

1454

1 сентября 2022 Free 4 Ukraine

Чат боты — это новый инструмент взаимодействия разработчика с пользователем. Их все чаще внедряют для совершенно различных целей. Новостные ленты, обработка налоговых деклараций, сохранение файлов – боты становятся удобным интерфейсом взаимодействия c различными сервисами.

В прошлой статье мы рассмотрели, как написать простейшего чат-бота на Python и запустить его на своем компьютере. Сегодня мы рассмотрим, как того, написанного нами бота, разместить на внешнем сервере в сети Интернет.

В качестве места размещения мы будем использовать бесплатный сервис Heroku.

1 сентября 2022 Free 4 Ukraine

Установка и настройка Git

Для дальнейшей работы нам понадобится установить Git, зарегистрироваться на GitHub и создать репозиторий с именем нашего приложения. В нашем случае это MyFirstTestBot.

Скачать версии Git, соответствующие вашей операционной системе, можно по следующим ссылкам для macOS и для Windows. На Linux Git можно установить, выполнив такую команду:

Далее, желательно использовать виртуальную среду. Если она не установлена, при установке Python вы можете ее установить, выполнив команду:

Создадим новую папку для нашего приложения и связи его с GitHub. В нашем случае это папка PythonApplication1 в корне диска C.

Выполним клонирование репозитория. Для этого находясь в нашей папке в консоли выполним команду, введя ссылку на ваш репозиторий:

Тема связана со специальностями:

После выполнения этой команды в нашей папке с именем PythonApplication1 мы получили еще одну папку – MyFirstTestBot.

В консоли перейдем в корень диска C и выполним команду:

Если команда не выполняется, и вы на экране консоли видите «"virtualenv" не является внутренней или внешней командой…» — вам следует настроить системную переменную PATH и добавить в нее адреса расположения вашей папки с Python и подпапки со скриптами (в моем случае C:\Users\B\AppData\Local\Programs\Python\Python37-32\Scripts).

Будем в дальнейшем пользоваться консолью Git, которую мы установили ранее:

После выполнения этого скрипта в нашей папке будет такое содержимое:

Читать:
Telegram групповые звонки сколько человек

Поместим скрипт в папку, полученную в результате выполнения команды git clone (папка MyFirstTestBot). Имя файла с нашим скриптом — mftb.py

Теперь запустим наше виртуальное окружение. Перейдем в консоли в папку C:\PythonApplication1 и выполним команду:

Если все сработало нормально – в консоли приглашение командной строки будет начинаться с имени нашей папки (PythonApplication1):

Перейдём в нашу папку репозитория и выполним команду:

Создадим список зависимостей для Heroku, введя команду:

Обратите внимание – в файле requirements.txt указываются требования к серверу Huroku. Там должно быть приблизительно такое содержимое:

Если вы не продолжаете проект из предыдущей статьи, а создали новый – не забудьте указать все зависимости.

В папке MyFirstTestBot создадим файл с именем Procfile без расширения. В теле этого файла пропишем:

Видео курсы по схожей тематике:

Как стать программистом?

Как стать программистом?

Python 3.8.6 Стартовый

Python 3.8.6 Стартовый

Flask Framework

В папке MyFirstTestBot создадим также файл с именем __init__.py без содержимого.

Содержимое нашей папки MyFirstTestBot теперь такое:

Отправим в GitHub репозиторий наш набор изменений. Для этого выполним следующую серию команд, с указанием ссылки на ваш репозиторий:

Код нашего бота теперь загружен на GitHub и нам остается загрузить его на Heroku, где будет хоститься наш бот.

Рекомендуется ознакомиться с основами работы с Heroku по ссылке. По той же ссылке следует скачать установщик интерфейса командной строки (CLI) от Heroku и запустить его.

После установки CLI зарегистрируемся на Heroku через веб браузер.

Далее подключимся к Heroku через консоль используя команду:

Нас попросят подключиться через браузер к сайту Heroku и залогиниться там. Нужно будет ввести ваши данные.

Выполним команду для создания приложения в Heroku:

Дальнейшие наши команды отправят наш проект на сервер Heroku и укажут необходимую настройку:

Последняя команда запустит наше приложение на сервере:

Теперь наше предложение установлено и запущено на сервере. Мы можем проверить это, пообщавшись с нашим ботом в Telegram:

Как мы видим – все работает. Если по каким-то причинам бот не запустился, нужно ввести в консоли команду:

И смотреть на коды ошибок на сайте.

Резюме.

В прошлой статье мы с вами посмотрели, как можно создать простого Telegram бота. Теперь мы опубликовали его на удаленном сервере. Наш чатбот работает, и мы можем к нему обращаться, используя привычный мессенджер. Конечно, этот вариант бота далек от идеала, но для учебных целей, как первый проект бота, он подойдет.

Бесплатные вебинары по схожей тематике:

Создание первого веб-сайта при помощи Python и Django - видео уроки ITVDN

Создание первого веб-сайта при помощи Python и Django — видео уроки ITVDN

Причины успеха Python. Как стать Python разработчиком

Причины успеха Python. Как стать Python разработчиком

Знакомство с Python - видеоуроки ITVDN

Знакомство с Python — видеоуроки ITVDN

Попробуйте создать своего бота с другим набором предопределенных ответов. В дальнейшем вы сможете создавать более продвинутых чатботов, работающих с нейросетями и другими элементам искусственного интеллекта.

Чаще всего востребованные библиотеки для работы ботов сейчас пишут на Python. Именно поэтому мы рассмотрели этот простой пример. Для дальнейшего развития вас как квалифицированного Python разработчика мы рекомендуем ознакомиться с курсом подготовки Python-разработчика на портале ITVDN.

Разворачиваем Telegram бота на heroku.com (Урок №8)

Доброго времени суток, сегодня наша задача деплоить (разворачивать) нашего телеграм бота на площадке heroku, который парсит погоду по заданному населенному пункту.

Регистрация бота была рассмотрена в статье Регистрация бота в Telegram

Создание парсера погоды в статье Парсим погоду на Python

Совмещение парсера и телеграм бота в статье Соединяем парсер погоды на python с телеграм ботом

Для работы я использую Pycharm, скачать его можно с официального сайта

Приступим к выполнению поставленной цели.

а) Переходим на сайт Хероку, проходим регистрацию.

б) Скачиваем с официального сайта The Heroku CLI, устанавливаем его. Это интерфейс командной строки Heroku (CLI) позволяет легко создавать приложения Heroku и управлять ими непосредственно из терминала. Это неотъемлемая часть использования Heroku.

в) Если вы ранее не работали с Git, то его нужно тоже скачать и установить. Это система контроля версий

  1. В pycharm открываем наш проект, заходим в терминал

Разворачиваем Telegram бота на heroku.com (Урок №8), изображение №1

3. Создаем локальный репозиторий введя команду: git init

Telegram-бот на Python: от первой строчки до запуска на Heroku

Напишем простой диалоговый Telegram-бот на Python, который в дальнейшем можно дополнить различными функциями, и запустим его на сервере Heroku.

    1. Настройка
    2. Создание Telegram-бота
    3. Деплой на Heroku
    4. Заключение

    Настройка

    Откройте Telegram , найдите @BotFather и начните беседу. Отправьте команду /newbot и следуйте инструкциям. Вы получите:

    • свой токен;
    • адрес Telegram API (https://api. telegram .org/bot);
    • ссылку на документацию.

    Далее начните беседу с ботом. Введите в поисковой строке его имя и нажмите /start . Отправьте любое сообщение: оно станет первым обновлением, которое получит бот.

    Если вы в первый раз работаете с API, то разобраться поможет браузер. Откройте новую вкладку и перейдите по ссылке:

    https://api. telegram .org/bot /getUpdates

    Так вы отправите запрос на сервер Telegram , и он ответит вам в формате JSON:

    Если вы откроете раздел метода /sendMessage , то увидите, что он принимает два параметра: chat_id и text . Вы можете создавать цепочки параметров в адресной строке браузера, используя ? для первого параметра и & для всех последующих. Команда для отправки сообщения будет выглядеть так:

    Попробуйте получить ответ от вашего бота, подставив в качестве chat_id значение, полученное после вызова /getUpdates (в нашем примере это 303262877 ). Текст сообщения может быть любым. Запрос должен выглядеть так:

    Загвоздка в том, что разные версии Python используют разные pip. Если у вас macOS, вы можете попробовать следовать советам со Stack Overflow. В случае с Windows вам нужно скачать get-pip.py, открыть командную строку, перейти в директорию со скачанным файлом и выполнить команду:

    Установим пакет requests с помощью pip:

    Создание Telegram-бота

    Напишем на Python скрипт, который будет проверять обновления и отвечать на новые сообщения.

    Exness , Лимассол, Кипр , По итогам собеседования

    Первое сообщение можно расценивать как самое свежее, но getUpdates возвращает все обновления за последние 24 часа. Напишем скрипт, чтобы получить самое последнее обновление:

    Помните, как мы объединяли параметры при помощи ? и & ? Вы можете сделать то же самое, добавив словарь в качестве второго дополнительного параметра в функциях get / post из пакета requests.

    Главный минус текущего скрипта — необходимость запускать его всякий раз, когда нужно, чтобы бот отправил сообщение. Исправим это.

    Чтобы бот слушал сервер и получал обновления, нужно запустить основной цикл. После import requests добавьте from time import sleep и замените две последние строки на следующий код:

    Хотя мы и добавили таймаут в 1 секунду, пример выше можно использовать только в обучающих целях, поскольку он использует частые опросы (short polling), что плохо влияет на сервер Telegram .

    Есть ещё два способа получения обновлений через API — длинные опросы (long polling) и вебхуки (webhooks). Если мы будем использовать способ получения обновлений через getUpdates без параметров, то запросы будут происходить слишком часто.

    Переключимся на длинные опросы. Сперва изменим первую функцию, добавив в неё параметр timeout . Сам по себе он не уменьшит частоту проверки обновлений и будет работать только в том случае, когда обновлений нет. Чтобы помечать уже просмотренные обновления, нужно добавить параметр сдвига offset :

    Теперь Telegram-бот на Python должен работать нормально, но его всё ещё можно улучшить. Давайте инкапсулируем все функции в один класс. Должно получиться что-то вроде этого:

    Последний штрих — объявим переменные и научим бота приличным манерам. Сделаем так, чтобы бот приветствовал вас раз в день, при этом фраза должна зависеть от времени суток. Для этого добавьте следующий код в ваш скрипт:

    Теперь вы можете улучшать бота так, как захотите. Можно, например, настроить отправку медиафайлов или добавить собственные кнопки.

    Деплой на Heroku

    Последним шагом будет развёртывание бота на сервере. Зарегистрируйтесь на GitHub, если у вас ещё нет там аккаунта, и установите Git. Для этого на Linux выполните следующую команду:

    На macOS и Windows его нужно скачать и установить вручную. И не забудьте зарегистрироваться на Heroku. Установите virtualenv:

    Создайте новую папку и перейдите в неё в терминале или командной строке. Инициализируйте в ней virtualenv :

    Имя не имеет значения, но лучше сделать его интуитивно понятным. Перейдите в папку my_env . Теперь нужно склонировать git-репозиторий. Введите команду:

    Поместите скрипт в папку, полученную в результате выполнения команды git clone . Вернитесь в папку my_env и запустите virtualenv :

    • На Windows:
    • На Linux/macOS:

    Если вы успешно запустили virtualenv , приглашение командной строки должно начинаться с (my_env). Перейдите в папку репозитория и ещё раз установите модуль requests:

    Теперь нужно создать список зависимостей Heroku. Это несложно. Введите:

    Создайте Procfile . В этом файле следует разместить инструкции по работе со скриптом. Имя файла обязательно должно быть Procfile ( Procfile.windows в случае с Windows). У него не должно быть других расширений. Содержимое файла должно быть таким (замените my_bot на имя вашего скрипта):

    Добавьте файл __init__.py в вашу папку. Он может быть пустым, но должен там быть. Отправьте коммит с изменениями в репозиторий:

    Теперь развернём Telegram-бота на Heroku. Можно использовать и панель управления на сайте, но мы потренируемся делать всё через консоль.

    Если вы пользуетесь macOS или Windows, установите интерфейс командной строки, следуя гайду. Если у вас Ubuntu, используйте следующие команды:

    Теперь выполните следующие команды:

    С этого момента приложение должно работать на сервере Heroku. Если что-то пойдёт не так, проверить логи можно следующим образом:

    Заключение

    Поздравляем! Теперь вы знаете, как писать ботов для Telegram на Python. Лучше изучить возможности Telegram-ботов поможет видеокурс — в нём используется PHP, но суть та же.

Похожие статьи