Как запустить Телеграм бота на github

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

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

Настройка

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

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

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

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

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

< «ok»:true, «result»:[< «update_id»:523349956, «message»:< «message_id»:51, «from»:< «id»:303262877, «first_name»:»YourName» >, «chat»:< «id»:303262877, «first_name»:»YourName», «type»:»private» >, «date»:1486829360, «text»:»Hello» > >] >

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

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

Пишем telegram бота на Python. Часть 1. Github.


https://api.telegram.org/bot/sendMessage?chat_id=303262877 ? Вы можете сделать то же самое, добавив словарь в качестве второго дополнительного параметра в функциях get / post из пакета requests.

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

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

def main(): update_id = last_update(get_updates_json(url))[‘update_id’] while True: if update_id == last_update(get_updates_json(url))[‘update_id’]: send_mess(get_chat_id(last_update(get_updates_json(url))), ‘test’) update_id += 1 sleep(1) if __name__ == ‘__main__’: main()

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

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

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

def get_updates_json(request): params = response = requests.get(request + ‘getUpdates’, data=params) return response.json()

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

import requests import datetime class BotHandler: def __init__(self, token): self.token = token self.api_url .format(token) def get_updates(self, offset=None, timeout=30): method = ‘getUpdates’ params = resp = requests.get(self.api_url + method, params) result_json = resp.json()[‘result’] return result_json def send_message(self, chat_id, text): params = method = ‘sendMessage’ resp = requests.post(self.api_url + method, params) return resp def get_last_update(self): get_result = self.get_updates() if len(get_result) > 0: last_update = get_result[-1] else: last_update = get_result[len(get_result)] return last_update

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

greet_bot = BotHandler(token) greetings = (‘здравствуй’, ‘привет’, ‘ку’, ‘здорово’) now = datetime.datetime.now() def main(): new_offset = None today = now.day hour = now.hour while True: greet_bot.get_updates(new_offset) last_update = greet_bot.get_last_update() last_update_id = last_update[‘update_id’] last_chat_text = last_update[‘message’][‘text’] last_chat_id = last_update[‘message’][‘chat’][‘id’] last_chat_name = last_update[‘message’][‘chat’][‘first_name’] if last_chat_text.lower() in greetings and today == now.day and 6 ‘.format(last_chat_name)) today += 1 elif last_chat_text.lower() in greetings and today == now.day and 12 ‘.format(last_chat_name)) today += 1 elif last_chat_text.lower() in greetings and today == now.day and 17 ‘.format(last_chat_name)) today += 1 new_offset = last_update_id + 1 if __name__ == ‘__main__’: try: main() except KeyboardInterrupt: exit()

Еще по теме:  Группа перекупов авто в Телеграмм

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

Деплой на 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 :

$ scriptsactivate.bat
$ source bin/activate

Если вы успешно запустили 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

Заключение

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

Источник: news.myseldon.com

Создание бота в Телеграм Питон 3: пример программирования, как сделать кнопки для чата и написать код

FAQ

Автор fast12v0_steleg На чтение 7 мин Просмотров 200 Опубликовано 14.01.2020

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

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

Немного теории об API

Создание Python Telegram Bot с нуля

Application Programming Interface – интерфейс, при помощи которого разработчик способен формировать приложения. Инструкция по использованию представлена на сайте stelegram.ru.

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

Изначально api использовался для передачи информации и приказов между разными переменными программами. Сегодня он дает возможность получить доступ к ресурсам на другом сервере.

Его применение имеет такие достоинства:

  1. Доступность партнерских программ.
  2. Работа с пре-форматированными ссылками, загружающимися одновременно с ID.
  3. Возможность предоставлять максимально точные и актуальные данные в любой момент времени.
  4. Получение ответных данных в JSON или XML форматах.
  1. Публичными. К ним легко получить доступ.
  2. Приватными. Может использоваться исключительно внутри одной компании. Если у нее разработано много продуктов, то интерфейс позволяет разным программам взаимодействовать между собой.
Еще по теме:  Сливы с анонимного чата ВК и ТГ

К основным задачам Application Programming Interface относят:

  • помощь в написании кодов;
  • преобразование сложных задач в простые.

Инструкция по созданию телеграм-бот на Python

Существует несколько вариантов получения собственного робота:

  1. Написать его самостоятельно. Для этого можно использовать различные языки программирования. Одним из наиболее понятных и востребованных на данный момент является Питон. Такой способ хоть и трудоемкий, но при этом позволяет получить универсальное решение.
  2. Воспользоваться услугами конструктора. Но здесь можно столкнуться с ограниченным функционалом, которого не всегда бывает достаточно, чтобы воплотить то, что вы хотите.
  3. Покупка. Однако, нужно понимать, что в основном, чтобы написать telebot, используется язык python. А он считается настолько легким, что применить его могут даже новички, потому лучше попробовать самому.

Известно два класса ботов, способных самообучаться и работать по определенным правилам:

Как создать Python Telegram Bot с нуля

  1. Первый вид менее распространен. Робот обучен определенным правилам, основываясь на которые он отвечает на поставленные вопросы. Bot занимается регулярной обработкой простых запросы, а очень сложные у него могут вызвать проблемы.
  2. Самообучающийся робот более эффективен. Он бывает следующих видов:
    • поисковым – использует для ответа реплики, прописанные в базе библиотеки. В зависимости от контекста разговора он выбирает text из списка;
    • генеративным – способен сам создавать сообщения на основе изученных слов в запросе.

    Свой телеграм-бот на Питон можно сделать самостоятельно. Рассмотрим подробную инструкцию.

    Регистрация бота

    Дополнительно укажите name. В ответ он пришлет ссылку на документацию (documentation) и токен. Их желательно сразу сохранить, так как они будут единственным ключом к авторизации при взаимодействии с помощником.

    Установка

    Для начала проводится установка программы.

    Есть несколько способов:

    1. Скачать с сайта, нажав значение install.
    2. Те, кто пользуется ОС Linux, имеют возможность запустить ее из менеджера пакетов.
    3. Владельцы macOS должны поставить приложение Homebrew.
    4. Воспользоваться интерпритатором программы, позволяющей работать онлайн.
    5. При работе на мобильном устройстве представлена среда программирования Питон.

    После загрузки следует установить pip – систему управления пакетами. Важно использовать последние версии. При необходимости можно провести ее обновление.

    Написание кода

    За создание и функционирование робота отвечает модуль python telegram bot api. Для этого нужно послать следующее: pip install pyTelegramBotAPI.

    Писать код получится где угодно. Это может быть вордовский файл или блокнот. Но гораздо эффективнее это делать в умной среде. Здесь автоматически будут подсвечиваться возможные ошибки в проекте.

    Создание кода начинаем с подключения телебота. Здесь понадобится сохраненный раньше токен. Первая строка будет выглядеть следующим образом: message: TOKEN=ключ, который прислал бот.

    Во второй строке создает объект, который обзываем bot. В аргументах прописывается код аутентификации.

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

    Протестировать его можно, выполнив команду python полный_ путь_ к_ файлу/test.py. робот должен отвечать.

    Настройка и запуск бота

    Настройка Python Telegram Bot

    Для того, чтобы помощник мог работать, нужно:

    1. Войти в мессенджер.
    2. Открыть аккаунт робота.
    3. В новом диалоговом окне кликнуть на изображение с тремя точками вверху.
    4. Дальше перейти к пункту Настройки.

    Чтобы запустить робота, нужно:

    1. В строке поиска на клавиатуре руками ввести name помощника и начать диалог с ним.
    2. Добавить его к каналу при помощи кнопки «Добавить нового участника».
    3. Осталось из списка выбрать нужный вариант и кликнуть элемент «Invite».

    Обработчики команд

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

    Обработчика также можно добавить самостоятельно. В таком случае на первой строке следует вбить «handler». Этот параметр срабатывает всегда, за исключением ввода «help» или «старт».

    Обработчики кнопок

    В основе программы telegram api python также будет исходник клавиатуры. При подготовке к работе KeyboardButton обязательным параметром является текст (text), который юзер сможет переслать после нажатия на данную клавишу.

    При написании кода используются различные методы:

    1. Add – количество кнопок любое. При этом они выстраиваются в ряд. Если установленная изначально ширина уже достигнута, импортируем их.
    2. Row – число клавиш также не ограничено, но все они расположены в одной строке.
    3. Insert – напоминает первый способ, но иконки добавляются к последнему ряду.
    Еще по теме:  Зашифрованный файл в телеге

    Встроенный режим

    Это один вид взаимодействия с ботами. С его помощью они получили еще больше возможностей. Такие роботы способны выполнять любые задачи. Например, из examples: отправка text из сайта в чат, размещение гифки или картинки.

    Генератор для диалогового бота

    Python Telegram Bot с нуля

    Используя конструкцию yield from, роботы создают друг для друга курс на выполнение определенной задачи. Для этого применяется модуль itertools.

    Генераторы для python telegram bot proxy являются отличным инструментом. Они дают возможность упростить код и продолжить беседу с нужного момента.

    Развертывание бота на сервере

    Это завершающий этап создания помощника в Тelegram. Для этого не нужно приобретать дорогую аппаратуру. Можно воспользоваться облачными прокси ресурсами с протоколом mtproto, где предлагают разместить любое приложение бесплатно.

    Вначале придется зарегистрировать аккаунт на GitHub. С этой учетной записью получится развернуть бота на Heroku proxy. Если приложение не работает, рекомендуется проверить журналы.

    Из-за блокировки мессенджера в России, им нельзя воспользоваться. Но можно пойти в обход запрету, установив VPN.

    Выводы

    Python – программа для написания скриптов в Телеграм с нуля, которые станут отличным помощником владельцу канала. Они умеют автопостить, форматировать материал, ведут статистику, создают кнопки на русском или другом языке и прочее.

    Детальную инструкцию увидите на видео:

    Источник: stelegram.ru

    Деплоймент бота на Heroku

    Рано или поздно в разработке ботов вы столкнетесь с проблемой хостинга бота. Скорее всего, у вас нет своего собственного сервера, а платить за виртуальный не каждый хочет, да и настройка виртуального сервера может казаться чем-то непосильным для начинающих разработчиков. К счастью, есть много сервисов, предоставляющих хостинг приложений бесплатно. Одним из таких есть Heroku. Сегодня я расскажу, как легко и быстро развернуть простенького бота на данной платформе.

    heroku logo

    Почему именно Heroku? Она была одной из первых платформ, предоставляющих услуги типа PaaS (Platform as a Service) и есть лидером в этой сфере. Используя такие облачные сервисы, разработчик должен предоставить только приложение. Обо всем остальном – серверное железо, операционная система, интерпретатор языка и база данных, позаботится сервис.

    PaaS

    По умолчанию, Heroku предлагает до 5 приложений на аккаунт и дает 550 бесплатных дино-часов в месяц. Если же подключить к аккаунту банковскую карту, их к-во расширится до 1000. Подробнее о фри дино-часах можно почитать здесь.

    Регистрация и установка клиента Heroku

    Прежде всего, для использования Heroku, нужно авторизироваться. Если у вас нет аккаунта, создайте его, перейдя по этой ссылке. Затем нужно установить Heroku Toolbelt. Эта утилита на данный момент поддерживает основные ОС: Windows, macOS и Linux.

    Скачать и установить Heroku CLI на Windows или macOS можно прямо отсюда. На Ubuntu/Debian платформах вам понадобится ввести данную комманду:

    $ curl https : / / cli — assets . heroku . com / install — ubuntu . sh | sh

    После установки, чтобы убедиться, что все установилось, откройте консоль и введите heroku :

    code

    Если все работает, логинимся, используя данные, введенные при регистрации:

    $ heroku login

    Создание приложения

    Сегодня мы будем деплоить бота, написанного во второй части. Для начала создадим наше приложение под названием momentumbots :

    code

    Вывод команды показывает, что приложение было успешно создано и доступно на https://momentumbots.herokuapp.com .

    code

    Имя momentumbots уже занято мной, так что придумайте свое

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

    code

    Ставим Вебхуки

    В прошлых частях мы писали ботов, использующих Long Polling. Суть его в том, что на сервера Телеграмма периодически приходят запросы на получение обновлений. Это ненадежно, т.к. сервера Telegram могут возвращать ошибку 504, вырубая бота. Используя же вебхуки, мы устанаваливаем URL, на который будут приходить обновления автоматически, таким образом избавляясь от этой проблемы. Вебхуки в тг работают только по HTTPS. Благо, Heroku предоставляет доступ к приложению через HTTPS и SSL-сертификат, освободжая нас от заботы о создании сертификатов.

    В качестве веб-сервера будем использовать Flask, однако вам не составит труда разобраться с другими фреймворками. На Github-странице pyTelegramBotAPI, помимо Flask’а, есть примеры для aiohttp, CherryPy, CPython и Tornado.

    Добавим в config.py переменную, которая хранит название нашего приложения:

    Источник: momentum-bots.top

    Рейтинг
    ( Пока оценок нет )
    Загрузка ...