Бот – это небольшая программа внутри Telegram, которая управляется за счет отправки текстовых команд в чате. Принцип функционирования осуществляется через модель «вопрос–ответ». Соответствующие технологии ранее встречались в ICQ. Тогда боты присылали анекдоты, гороскопы и различные статьи из «Википедии», а также переводили тексты. 

Сейчас бот в Telegram – это удобный инструмент для разнообразных целей. Такое программное обеспечение используется интернет-магазинами, компаниями и «обычными» пользователями. Далее предстоит выяснить, как писать ботов на Python. Это не архисложная  задача, особенно если разобраться с ней поэтапно.

Предложенная далее информация предназначается для широкого круга лиц. С помощью нее создавать ботов для Телеграмм смогут разработчики разного уровня.

Перед началом разработки

Телеграм позволяет писать ботов в свободной форме, начиная с 2015-го года. Боты – это небольшие скрипты, которые взаимодействуют с API для получения сообщений с пользовательской стороны. В ответ на них система передает информацию на каналы и разнообразные чаты.

Для того, чтобы создать bot Python, требуется:

  • дать «скрипту» название;
  • задать адрес расположения бота;
  • получить токен – строку, которая используется для однозначной идентификации бота на Телеграм-серверах.

Далее происходит программирование скрипта и его запуск. Сделать бота можно как полностью самостоятельно, так и посредством специализированных библиотек. Далее будут представлены самые популярные из них.

Библиотеки для Python

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

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

  1. Aiogram. Современная библиотека Питона для разработки ботов. Большинство рассматриваемых скриптов в Телеграмм написаны с ее помощью. В Aiogram реализована асинхронная работа кода. Она дает возможность не останавливать скрипт в процессе ожидания ответа со стороны пользователя. Упомянутая библиотека поддерживает подробную документацию и русскоязычное сообщество.
  2. TeleBot. Библиотека, используемая для создания простейших мини-программ для Телеграмма. Дает возможность выбора принципа их функционирования: синхронно или асинхронно. Отлично подойдет для формирования проектов небольшого масштаба.
  3. Python-telegram-bot. Одна из первых библиотек для создания bots в ТГ. От Aiogram отличается синхронным подходом к функционированию. Это значит, что в процессе работы скрипта и во время ожидания ответа от пользователя выполнение имеющегося кода останавливается.

Далее будут приведены примеры создания ботов на Aiogram и PythonTelegramBot. Предстоит изучить самые распространенные варианты скриптов.

Краткая инструкция по программированию

Написание бота на Питоне – не самая сложная задача, если грамотно подойти к соответствующему вопросу. Даже разработчик с минимальными знаниями упомянутого языка сможет создать первый проект для Телеграм.

Пошагово программирование можно представить так:

  1. Зарегистрировать бота в Телеграм.
  2. Установить Python-библиотеку для разработки ботов. Пример – Aiogram.
  3. Добавить библиотеку в программу и научить грамотно реагировать на сообщения в чате. Этот этап и есть непосредственное программирование.
  4. Добавить дополнительные элементы (пример – кнопки) по мере необходимости. Привязать к ним функциональность.
  5. Запустить бота для проверки.

Далее предстоит создать эхо-бота и другие распространенные типы скриптов для Telegram. Для некоторых приложений будет использоваться Aiogram.

Разработка ботов

Начать создание ботов для Телеграм-канала или чата необходимо с установки Python и его инструментов. В MacOS и Linux соответствующее программное обеспечение обычно уже имеется в системах. Для проверки используется консольная команда: python —version.

В Windows Python необходимо устанавливать. Рекомендуется загрузить инициализатор через официальный сайт разработчиков. Рекомендуется выбирать Python3 – более современную версию. 

Как только Python установлен, необходимо сформировать и активировать виртуальное окружение. Для этого используется virtualenv. Виртуальным окружением называется инструмент, позволяющий изолировать друг от друга проекты, находящиеся в стадии разработки. В каждый из них необходимо устанавливать пакеты и инструменты обособленно. Виртуальное окружение особо удобно тогда, когда программист одновременно планирует работать с несколькими разными проектами.

Установить virtualenv поможет терминал и команда:

sudo pip3 install virtualenv.

Далее предстоит сформировать директорию для проекта. В ней будет запускаться и работать виртуальное окружение:

Чат-бот на Питоне

Здесь:

  • mkdir – команда, которая создает папку telegram_bot;
  • cd – переводит пользователя в заданную директорию.

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

Чат-бот на Питоне

Теперь остается активировать упомянутый элемент. Иначе окружение вовсе не будет функционировать:

Чат-бот на Питоне

Как только подобные операции завершены, можно перейти к непосредственному программированию бота. Далее будут приведены различные примеры Телеграм-ботов. Они используются на практике чаще всего.

Эхо-бот на Aiogram

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

Первый вариант – это программирование бота Python через Aoigram. Для этого сначала потребуется создать bot. Данный этап будет единым для всех рассматриваемых далее примеров.

Чтобы создать бота, потребуется:

  1. Открыть Телеграмм и отыскать там BotFather.
  2. Кликнуть на «Запустить» и ввести команду newbot.
  3. Дать имя боту. Путь им станет echo_otus_bot.
  4. В ответ пользователь получит токен. Он должен быть сохранен. Это идентификатор мини-приложения для Телеграма.

Теперь разработчик должен подключить Aiogram через pip install aiorgram в Питоне. Далее – запрограммировать бот на Python. Лучше всего писать код в IDE, а не в терминале. Ниже используется редактор Visual Studio Code.

После открытия IDE требуется создать документ main.py. Для рассматриваемого чат-бота достаточно соответствующего компонента. Из Aiogram необходимо импортировать некоторые классы и модули:

Чат-бот на Питоне

Здесь:

  1. Bot – помогает определить, какие команды от пользователя должны приниматься, а также как на них реагировать.
  2. Dispatcher – проверяет обновления.
  3. Executor – осуществляет запуск бота, а также выполняет функции, которые должны обрабатываться в процессе работы скрипта.

При помощи types можно будет использовать базовые классы для того, чтобы вводить аннотации. Они необходимы для упрощения восприятия сообщений и представляют собой своеобразные подсказки. Пример далее будет использовать types Message. С его помощью удается обрабатывать текст, который приходит от пользователя.

Теперь необходимо импортировать токен для взаимодействия с API Telegram:

Чат-бот на Питоне

Далее предстоит организовать инициализацию объектов Dispatcher и bot. Второму элементу передается токен. Если не инициализировать указанные компоненты, исходный код работать не будет:

Чат-бот на Питоне

Можно настроить приветственное окно для нового пользователя. Оно появляется при вводе команды start в чат-боте на Python Telegram. Необходимо написать message handler и задать ему функцию ответа:

Чат-бот на Питоне

Теперь, после того как пользователь нажмет на кнопку «Начать» или введет команду start, на экране появится приветственное сообщение (hello message).

Здесь:

  1. Message handler – декоратор. Он будет реагировать на входящие сообщения. Носит в себе функцию ответа.
  2. Commands =[start] – команда, связанная с декоратором. Будет запускать функцию, которую в нее вложили.
  3. Async def send welcome – создает функцию асинхронного типа. Она принимает сообщения от пользователя message, которые определяются через тип Message. Сама функция может быть названа как угодно. Send_welcome выбрано для того, чтобы было удобнее ориентироваться в коде.
  4. Await message.reply – отвечает за определение ответа пользователя. Await используется из-за асинхронности работы Aiogram.

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

Чат-бот на Питоне

Из-за того, что мини-приложение должно реагировать на любое текстовое message со стороны пользователя, скобки в dp message handler остаются пустыми. Параметр message не отличается от использованного ранее. 

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

Последний этап – настройка получения сообщений от Телеграмм-сервера. Для этого может использоваться поллинг. Он функционирует легко – метод start_polling опрашивает сервер и проверяет обновления. Если они обнаружены, соответствующие новшества будут высланы в Телеграм. Для активации поллинга задаются две строки:

Чат-бот на Питоне

Теперь можно сохранить код, перейти в терминале в папку telegram_bot (командой python3 main.py), а затем отыскать bot через мессенджер. После этого – запустить его, нажав на кнопку «Начать». В ответ на это или сообщение (message) start придет приветственное сообщение.

Если написать что-либо в мессенджере и отправить – скрипт продублирует соответствующее message.

Классический эхо-бот

А вот – еще один вариант того, как можно написать бота для Telegram на Python. Для этого используется библиотека telebot:

Чат-бот на Питоне

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

Статьи из Wikipedia

Небольшой справочник в Телеграмме. По введенному слову система будет давать статью, обнаруженную на Википедии:

Чат-бот на Питоне
Чат-бот на Питоне

Здесь на помощь приходит модуль Wikipedia. Он подключается в самом начале разработки кода.

Две кнопки

Еще один распространенный вариант. Он предусматривает наличие виртуальных кнопок в скрипте. Отдельные message и команды для выполнения тех или иных операций вводить не придется.

Здесь представлены два документа: facts.txt и thinks.txt. Они включают в себя интересные факты и поговорки. Каждая строка в предложенных документах – это отдельное сообщение (message).

Чат-бот на Питоне
Чат-бот на Питоне

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

Интересует Python? Добро пожаловать на курс в Otus!