Информационный телеграм-бот для сайта

Телеграм-бот – это робот, который генерирует автоматические сообщения в Telegram-канале. Давайте создадим простейшего Телеграм-бота с помощью Python, который будет информировать об учебных пособиях, предлагаемых на сайте simpleprogramming.ru. Запускаем десктопную версию Telegram. Для этого:
– Откройте любой браузер на вашем компьютере (например, Google Chrome, Mozilla Firefox, Opera, Yandex и т.д.), введите в адресной строке web.telegram.org и нажмите Enter.
– Появится сообщение, в котором будет предложено войти в Телеграм по номеру телефона, который был использован при регистрации в Telegram.
– Введите свой номер телефона в формате “+код страны номер телефона” (например, +7 123 456-78-90 для России) и нажмите Next.
– Telegram отправит на ваш номер телефона код подтверждения. После введения кода откроется знакомое зеленое поле Телеграм.
Также вы можете скачать на компьютер десктопную версию Telegram с официального сайта: https://desktop.telegram.org/?setln=ru
После входа в Telegram надо попасть в @BotFather. Для этого набираем в поисковой строке телеграм: @botfather и щелкаем по нему левой кнопкой мыши. Далее открываем меню и выбираем опцию: создать нового бота (create a new bot). Теперь нужно придумать заголовок бота. Заголовок может быть любым. Пусть будет: Simpleprogramming. Пишем это название в строке Сообщение. Нажимаем Enter. Далее нужно выбрать username для нашего бота. Username должен быть на английском языке, без пробелов и должен оканчиваться на bot. Telegram показывает пример названия: TetrisBot. Придумываем своё название, например, SimpleprogrammingBot. (Название не должно повторять названий уже существующих ботов). Жмем Enter. После этого в Телеграм появляется сообщение (рис. 1), в котором указан username созданного бота (выделено малым овалом) и токен (выделено большим овалом). Описание API-интерфейса на странице: https://core.telegram.org/bots/api

 
Рис. 1. Username созданного бота и его токен
 

Токен – это уникальный ключ для доступа к HTTP API, т.е. доступ к управлению вновь созданным ботом. Если вы не хотите, чтобы кто-то перехватил управление вашим ботом, никому не сообщайте токен.
Переходим к написанию кода программы, обслуживающей телеграм-бота. Программа создается на языке Питон. Запускаем среду программирования PyCharm. Выбираем опции File –> New Project и попадаем в окно, показанное на рис. 2. Оставляем в строке Location предложенное по умолчанию размещение папки проекта. Нажимаем Create.

 
Рис. 2. Расположение проекта в PyCharm
 

В появившемся следующем окне указываем ThisWindow. После этого появляется интерфейсное окно программы PyCharm (рис. 3) с уже предзаписанным в окне редактирования начальным кодом программы: main.py.

 
Рис. 3. Начальное окно PyCharm
 

В созданную по умолчанию папку (в нашем случае pythonProject4), надо скопировать библиотеку pytelegrambotapi для работы с Telegram. Для этого щелкнем по кнопке, выделенной слева на рис. 3 овалом. В нижней части окна рисунка 3 откроется вкладка Terminal, в которой внизу будет указан путь к созданной папке pythonProject4. Дописываем в этот путь команду: pip install pytelegrambotapi и щелкаем Enter. Сначала будет предложена команда для обновления pip: python.exe -m pip install –upgrade pip

 
Рис. 4. Список установленных библиотек
 

Обновляем pip и затем устанавливаем библиотеку pytelegrambotapi. Давайте проверим, скопировалась ли библиотека pyTelegramBotAPI в папку pythonProject4. Для этого наберем в окне Terminal команду pip list и щелкнем Enter. Появится список установленных библиотек (рис. 4), среди которых присутствует pyTelegramBotAPI, следовательно, всё мы сделали правильно.
Вместо начального кода в PyCharm вставляем код своего бота (рис. 5):

 
Рис. 5. Код телеграм бота
 

В созданную программу надо вставить токен, полученный от Telegram. Для этого переключаемся в Telegram, щелкаем левой кнопкой мыши по токену, выделенному большим овалом на рис. 1, при этом токен копируется в буфер обмена, и затем вставляем в код программы. Таким образом, мы связали Telegram с нашим python-файлом. Последующие строки python-файла являются обработкой сообщений в телеграм-чате. Строки, содержащие инструкции
@bot.message_handler( )
называются декораторами. Они указывают на тип обрабатываемых после этих строк сообщений (handler – обработчик). Типов декораторов очень много. Часто применяются следующие декораторы:
@bot.message_handler(commands=[“start”])
@bot.message_handler(content_types=[“text”])
Первый декоратор указывает, что должна обрабатываться команда (в строку телеграм должна быть введена команда). Второй декоратор указывает, что должен обрабатываться текст (в строку телеграм должен быть введен текст).
За декораторами размещаются функции. Функция состоит из заголовка и тела функции. Заголовок функции начинается с ключевого слова def. За def следует имя функции. Заголовок оканчивается двоеточием и переходом на новую строку. Тело функции записывается с отступом по отношению к заголовку. Заголовок функции может быть любым, также как и переменная.
Наш бот предназначен для общения с пользователем сайта simpleprogramming.ru и сообщает пользователю какие учебные пособия имеются на сайте. Кратко рассмотрим, что делает наш бот.
Работа бота начинается с команды /start, которая вводится внизу в строку Сообщение. Далее бот задает вопрос: Как тебя зовут? Пользователь вводит свое имя. В ответ бот здоровается с пользователем (9-я строка программы). Далее бот предлагает изучение языков программирования: Питон и Си. Для этого в боте имеются две кнопки:
btn1 – Питон,
btn2 – Си.
Эти две кнопки называются встроенной клавиатурой (InLineKeyboard). В случае, если пользователь выбирает кнопку Си, то бот рекомендует пользователю после изучения языка Си перейти к изучению программирования микроконтроллеров, и пользователь попадает на следующие две кнопки:
btn3 – AVR и PIC,
btn4 – STM32.
Кнопка btn3 предлагает пользователю изучить программирование микроконтроллеров AVR и PIC. Кнопка btn4 предлагает изучить программирование микроконтроллеров STM32.
Последняя строка программы: bot.polling, сообщает, что бот запущен и находится в режиме постоянного опроса.
Запускаем программу в PyCharm (для этого щелкаем по зеленому треугольнику сверху) и получаем сообщение: Бот запущен (рис. 6).

 
Рис. 6. Бот запущен
 
 

Можно переходить в телеграм и проверять работу созданного бота. На рис. 7 показано взаимодействие созданного бота с Telegram. Показан случай, когда пользователь выбирает сначала кнопку Си (btn2), а затем кнопку STM32 (btn4).   

 
Рис. 7. Диалог с помощью Телеграм-бота
 

Сейчас телеграм-бот доступен, если запущена программа в PyCharm. Чтобы бот был доступен всегда, его надо разместить на каком-нибудь хостинге (сервере).