Как запустить бота на heroku
Перейти к содержимому

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

  • автор:

Как загрузить Telegram бота на хостинг

Telegram является одним из самых популярных мессенджеров в мире: каждый месяц 700 миллионов пользователей используют его для общения, управления своими проектами и бизнесом. Важной функцией Телеграма (ТГ) считается возможность создания чат-ботов — виртуальных помощников, которые могут автоматизировать взаимодействие с клиентами, разгрузить службу поддержки, обеспечить быстрый и удобный для аудитории доступ к информации. Однако, чтобы ваш телеграм-бот работал круглосуточно, необходимо разместить его на сервере у провайдера хостинга. В статье поэтапно рассказываем, как поставить бота на хостинг и настроить сервер, чтобы организовать его бесперебойную работу.

Пошаговая инструкция, как запустить бота на хостинге

Сделать универсальное руководство по загрузке телеграм-бота на хостинг нельзя, поскольку для создания ботов используются разные технологии и языки программирования. Чаще всего виртуальных ассистентов для Телеграма пишут на Python или NodeJS. Наша инструкция основана на первом варианте: мы опишем, как выбрать хостинг для чат-бота на Python, установить нужные модули на сервер, залить, запустить, а также поставить бота на автоисполнение. Однако общая схема действий по установке, размещению и запуску может быть применима к любому телеграм-боту.

Как загрузить Telegram бота на хостинг.

Изображение от redgreystock на Freepik.

Выбор хостинга для телеграм-бота

Выбирая, где разместить своего чат-бота, следует обращать внимание на возможности и ресурсы, которые поставляет хостинг-провайдер. Установить и запустить телеграм-бота можно и бесплатно: например, через облачный сервис Heroku. Но бесплатный хостинг крайне ограничен и часто небезопасен. Если у вас простой бот, который отвечает на триггеры заготовленными репликами, его можно залить на обычный shared hosting. Главное, найти тариф с поддержкой Python и Telegram API.

Если же ваш помощник основан на нейросети и ожидается большой поток клиентов, лучше остановиться на аренде VPS (Virtual Private Server). На виртуальном сервере подключение будет стабильнее за счет изолированности вычислительных мощностей, а кроме того, VPS легче масштабировать. Вам не понадобится сайт и домен, чтобы его арендовать: подключиться можно будет по выделенному IP-адресу.

Настройка сервера для telegram-бота

Допустим, вы заказали подходящий сервер и удаленно подключились к нему по SSH. Прежде чем размещать на нем файлы нашего бота, нужно установить зависимости, которые потребуются для его работы. В частности, это язык Python и библиотека РуTelegramBotAPI. Мы покажем, как поставить эти компоненты на примере ОС Ubuntu. Введите в терминал:

sudo apt install python3 
sudo apt install python3-pip
pip3 install pyTelegramBotAPI

Мы взяли третью версию «Питона», но если ваш бот написан на другой, то загрузите нужную. Теперь можно заливать файл на сервер.

Размещение чат-бота

Сначала создадим папку, в которой будем размещать телеграм-бота:

cd /home 
mkdir имя_папки
cd имя_папки

Где имя_папки — это придуманное вами название директории (на латинице). Команда cd позволит нам перейти в эту директорию. Далее необходимо загрузить сами файлы. Это можно сделать через сторонний FTP-клиент (например, FileZilla) или панель управления VPS/VDS, если она имеется. В любом случае вам понадобятся данные для входа на сервер: логин, пароль и IP-адрес (вы должны были использовать их, когда устанавливали SSH-подключение). Откройте выбранную программу, найдите папку с указанным именем и залейте в нее файлы телеграм-бота.

Запуск бота

Чтобы запустить бота, примените команду следующего вида, подставив свое значение:

python3 имя_файла.ру

Обычно проект телеграм-бота хранится в файле с названием main.py или bot.py. У вас он может иметь другое имя, главное, чтобы расширение было «ру».

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

Настройка автозапуска телеграм-бота

Ставить нашего бота на автовыполнение мы будем с помощью менеджера systemd. Чтобы создать службу, введите команду вида:

sudo nano /lib/systemd/system/example_bot.service

Замените example_bot на собственное значение. Теперь нужно прописать конфигурацию юнита. Она может выглядеть следующим образом:

[Unit]

Description=Example — Telegram Bot \\ В переменной «Description» вы можете указать название своего бота, это просто описание, чтобы при открытии файла вы сразу поняли, к чему относятся нижеследующие параметры.

After=syslog.target 
After=network.target
[Service] 
Type=simple
WorkingDirectory=/home/имя_папки/

ExecStart=/usr/bin/python3 /home/имя_папки/имя_файла.py \\ Здесь и выше укажите названия, которые установили для директории и файла с ботом.

RestartSec=60 
Restart=always
[Install] 
WantedBy=multi-user.target

Чтобы сохранить изменения и выйти, нажмите CTRL+S и CTRL+X. Теперь остается только запустить саму службу:

sudo systemctl enable example_bot 
sudo systemctl start example_bot

Где example_bot — это название службы, которое вы указали в начале данного шага. Готово! Ваш телеграм-бот будет работать в фоновом режиме, даже когда вы отключитесь от сервера.

Заключение

Поставить на хостинг чат-бота для Телеграма может показаться сложной задачей, особенно для новичков. Но если вы будете следовать инструкции, которую мы написали, вам удастся разместить файлы и установить зависимости на сервере, чтобы ваш виртуальный ассистент работал 24/7.

Как развернуть и запустить телеграм-бота на heroku?

Я пытаюсь развернуть и запустить телеграм-бота на heroku. Я использую python 3 и библиотеку python-telegram-bot.

Мой.py класс называется test.py, а git проект называется telegram_bot. Я также создал конвейер heroku (включает проект с названием telegram-bot-1) и подключил его к моему git. (поэтому каждый раз, когда я отправляю новые коммиты, heroku начинает создавать проект)

это все мои коды в git проекте (включая test.py, Dockerfile и herouku.yml):

import os import sys from telegram.ext import Updater, CommandHandler TOKEN = "515148657:dvGVfrSVU78SfvdEtvfZf25EvefvEftnU-8" def run(updater): PORT = int(os.environ.get("PORT", "8443")) HEROKU_APP_NAME = "telegram_bot" updater.start_webhook(listen="0.0.0.0", port=PORT, url_path=TOKEN) updater.bot.set_webhook("https://<>.herokuapp.com/<>".format(HEROKU_APP_NAME, TOKEN)) def start_handler(bot, update): user = update.message.from_user update.message.reply_text("Hello dear <> :).format(user['first_name'])) def get_handler(bot, update): stock_name = update.effective_message["text"] update.message.reply_text("you said: <>".format(stock_name)) if __name__ == '__main__': updater = Updater(TOKEN) updater.dispatcher.add_handler(CommandHandler("start", start_handler)) updater.dispatcher.add_handler(CommandHandler("get", get_handler)) run(updater) 
FROM python:3.7 RUN pip install python-telegram-bot RUN mkdir /app ADD . /app WORKDIR /app CMD python /app/test.py 
build: docker: web: Dockerfile 

все мои файлы находятся в одной папке.

но логи после автоматического создания heroku следующие:

2019-06-01T14:32:57.000000+00:00 app[api]: Build started by user esrvef@gmail.com 2019-06-01T14:33:55.792474+00:00 app[api]: Deploy 50b099c1 by user esrvef@gmail.com 2019-06-01T14:33:55.792474+00:00 app[api]: Release v40 created by user esrvef@gmail.com 2019-06-01T14:33:55.000000+00:00 app[api]: Build succeeded 

и код не запускается. поэтому бот не работает.

Что мне делать, чтобы сделать это правильно?

Деплой бота на сервере Heroku

Может кто—нибудь дать инструкцию, как развернуть бота на сервере heroku (написанном на python )? Спасибо заранее.

Отслеживать

5,756 3 3 золотых знака 23 23 серебряных знака 44 44 бронзовых знака

задан 22 окт 2018 в 8:00

518 1 1 золотой знак 6 6 серебряных знаков 19 19 бронзовых знаков

Официальную документацию читали? devcenter.heroku.com/articles/getting-started-with-python

22 окт 2018 в 8:17

3 ответа 3

Сортировка: Сброс на вариант по умолчанию

  • Первым делом создайте Git репозиторий в папке с ботом: git init
  • Войдите в аккаунт Heroku : heroku login
  • Создайте приложение: heroku create appname —region eu
  • Создайте файл Procfile с содержимым: bot: python main.py
    • Если бот на веб-хуках, замените bot на web . Но на бесплатном тарифе, бот будет засыпать каждые 30 минут если не будет подключений, по этому на Heroku free лучше держать ботов на лонг-поллинге. Но проблема с засыпанием веб приложения решается с помощью http://kaffeine.herokuapp.com/.
    • Теперь наша папка выглядит приблизительно так: Procfile main.py requirements.txt

    Отслеживать

    ответ дан 22 окт 2018 в 8:14

    Pavel Durmanov Pavel Durmanov

    5,756 3 3 золотых знака 23 23 серебряных знака 44 44 бронзовых знака

    22 окт 2018 в 8:50

    @Midnight Вы в Procfile точно bot указали?

    22 окт 2018 в 8:54

    Нет, у меня там web написано

    22 окт 2018 в 8:55

    @Midnight А нужно bot

    22 окт 2018 в 8:56

    Не подскажете почему на серваке вываливается ошибка? 2018-10-23T15:06:30.166700+00:00 app[bot.1]: File «/app/.heroku/python/lib/pytho n3.6/site-packages/aiogram/utils/exceptions.py», line 116, in detect 2018-10-23T15:06:30.166702+00:00 app[bot.1]: raise err(cls.text or description) 2018-10-23T15:06:30.166712+00:00 app[bot.1]: aiogram.utils.exceptions.Terminated ByOtherGetUpdates: Conflict: terminated by other getupdates request; make sure t hat only one bot instance is running

    Как разместить телеграм бота на heroku?

    есть где-нибудь в сети пошаговая(на сколько это вообще возможно) инструкция по деплою telegram бота на python на heroku? если кто-то разъяснит лично было бы совсем прекрасно. допустим у меня папка с файлом bot.py, что дальше-то?

    • Вопрос задан более трёх лет назад
    • 23661 просмотр

    Комментировать
    Решения вопроса 0
    Ответы на вопрос 2

    ptrvch

    вебдев-энтузиаст. Django, AngularJS

    Создайте в корневом каталоге файл Procfile, в нем введите следующее:
    worker: python bot.py
    Потом в командной строке в рабочем каталоге включите worker:
    heroku ps:scale worker=1

    в остальном деплой мало отличается от привычного деплоя веб-приложения на heroku, который описан в справке.

    Ответ написан более трёх лет назад
    Комментировать
    Нравится 5 Комментировать

    Вот есть неплохая инструкция: Развертывание Python бота для ВКонтакте на Heroku
    Для телеграма принцип такой же.

    Ответ написан более трёх лет назад
    Нравится 3 1 комментарий
    MajorTom69 @MajorTom69 Автор вопроса
    спасибо большое, я искал что-то типа такого, сегодня же опробую
    Ваш ответ на вопрос

    Войдите, чтобы написать ответ

    python

    • Python

    Не могу получать ответ в авторизации через python?

    • 1 подписчик
    • 31 минуту назад
    • 10 просмотров

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *