Telegram-бот на Python: от первой строчки до запуска на Heroku
Напишем простой диалоговый Telegram-бот на Python и запустим его на сервере Heroku.
Примечание Вы читаете улучшенную версию некогда выпущенной нами статьи.
  1. Настройка
  2. Hello, bot!
  3. Деплой на Heroku
  4. Заключение


  5. Настройка

    Откройте Telegram, найдите @BotFather и начните беседу. Отправьте команду /newbot и следуйте инструкциям. Вы получите:
    • свой токен;
    • адрес Telegram API;
    • ссылку на документацию.
  6. Обязательно сохраните токен, так как это ключ для взаимодействия с ботом.
    Примечание Хранение токена должно быть локальным: ни в коем случае не выгружайте его в общий доступ.
    Далее начните беседу с ботом. Введите в поисковой строке его имя и нажмите /start. Отправьте любое сообщение: оно станет первым обновлением, которое получит бот.


  7. Установка Python

    Для написания Telegram-бота на Python, нужно установить сам язык. Если вы пользуетесь Windows, скачать Python можно с официального сайта. Версия не важна, но в этой статье будет использоваться Python 3.x. Если же у вас Linux или macOS, то обе версии уже установлены.

    Установка pip

    Это менеджер пакетов. В версиях выше Python 2.7.9 и Python 3.4, а также на macOS/Linux он уже есть. Проверить это можно командой pip --version в терминале. Если же по каким-то причинам он отсутствует, установить его можно при помощи команды:


  8. Установка pyTelegramBotAPI

    Есть два способа установить эту библиотеку:
    1. С помощью pip:
      pip install pytelegrambotapi
    2. Из исходников (требуется git):
      $ git clone https://github.com/eternnoir/pyTelegramBotAPI.git
      $ cd pyTelegramBotAPI
      $ python setup.py install
  9. Hello, bot!

    Давайте напишем простенькую программу приветствия. Для начала следует импортировать библиотеку и подключить токен Telegram-бота на Python:
    import telebot
    bot = telebot.TeleBot('TOKEN')
    
    Теперь напишем обработчик текстовых сообщений, который будет обрабатывать входящие команды /start и /help:


  10. @bot.message_handler(commands=['start', 'help'])
    def send_welcome(message):
        bot.reply_to(message, f'Я бот. Приятно познакомиться, {message.from_user.first_name}')
    Добавим ещё один обработчик для получения текстовых сообщений. Если бот получит «Привет», он также поздоровается. Все остальные сообщения будут определены, как нераспознанные:
    @bot.message_handler(content_types=['text'])
    def get_text_messages(message):
        if message.text.lower() == 'привет':
            bot.send_message(message.from_user.id, 'Привет!')
        else:
            bot.send_message(message.from_user.id, 'Не понимаю, что это значит.')
    Запускаем бота следующей строкой:
    bot.polling(none_stop=True)
    Примечание Так мы задаём боту непрерывное отслеживание новых сообщений. Если бот упадёт, а сообщения продолжат поступать, они будут накапливаться в течение 24 часов на серверах Telegram, и в случае восстановления бота прилетят ему все сразу.


  11. Деплой Телеграм-бота на Heroku

    Последним шагом будет развёртывание бота на сервере. Зарегистрируйтесь на GitHub, если у вас ещё нет там аккаунта, и установите Git. Для этого на Linux выполните следующую команду:
    $ sudo apt-get install git-all
    На macOS и Windows его нужно скачать и установить вручную. И не забудьте зарегистрироваться на Heroku. Установите virtualenv:
    $ pip install virtualenv
    Создайте новую папку и перейдите в неё в терминале или командной строке. Инициализируйте в ней virtualenv:
    $ virtualenv my_env
    Имя не имеет значения, но лучше сделать его интуитивно понятным. Перейдите в папку my_env. Теперь нужно склонировать git-репозиторий. Введите команду:
    $ git clone https://github.com/имя_вашего_профиля/имя_вашего_репозитория
    Поместите скрипт в папку, полученную в результате выполнения команды git clone. Вернитесь в папку my_env и запустите virtualenv:
    • На Windows:
      $ scripts\activate.bat
    • На Linux/macOS:
      $ source bin/activate
  12. Если вы успешно запустили virtualenv, приглашение командной строки должно начинаться с (my_env). Перейдите в папку репозитория и ещё раз установите модуль requests:
    $ pip install requests
    Теперь нужно создать список зависимостей Heroku. Это несложно. Введите:
    $ pip freeze > requirements.txt
    Создайте Procfile. В этом файле следует разместить инструкции по работе со скриптом. Имя файла обязательно должно быть Procfile (Procfile.windows в случае с Windows). У него не должно быть других расширений. Содержимое файла должно быть таким (замените my_bot на имя вашего скрипта):
    web: python my_bot.py
    Добавьте файл __init__.py в вашу папку. Он может быть пустым, но должен там быть. Отправьте коммит с изменениями в репозиторий:
    $ git init
    $ git add .
    $ git commit -m 'короткое сообщение, описывающее изменения в коммите'
    $ git push -u https://github.com/имя_вашего_профиля/имя_вашего_репозитория
    Теперь развернём Telegram-бота на Heroku. Можно использовать и панель управления на сайте, но мы потренируемся делать всё через консоль.
    Если вы пользуетесь macOS или Windows, установите интерфейс командной строки, следуя гайду. Если у вас Ubuntu, используйте следующие команды:
    $ sudo add-apt-repository "deb https://cliassets.heroku.com/branches/stable/apt ./"
    $ curl -L https://cli-assets.heroku.com/apt/release.key |
    $ sudo apt-key add -
    $ sudo apt-get update
    $ sudo apt-get install heroku
    Теперь выполните следующие команды:
    $ heroku login
    $ heroku create
    $ git push heroku master
    $ heroku ps:scale web=1
    $ heroku open
    С этого момента приложение должно работать на сервере Heroku. Если что-то пойдёт не так, проверить логи можно следующим образом:
    $ heroku logs --tail
Реклама
Написать комментарии
Имя:*
E-Mail:


Подписаться на комментарии
Внимание! мошенники
Какие категории вам интересны?
Информация
3
посетителя сейчас на сайте
из них:
Гости3

Хостинг высокого качества

Реклама

Нашли ошибку?
Вы можете сообщить об этом администрации.
Выделив текст нажмите CTRL+Enter


Добро пожаловать на myozzy.me!

Для того чтобы стать полноценным пользователем нашего портала, вам необходимо пройти регистрацию.
Зарегистрироваться
Создайте собственную учетную запись!

Пройти регистрацию
Авторизоваться
Уже зарегистрированны? А ну-ка живо авторизуйтесь!

Войти на сайт