Python – перспективный и относительно простой язык программирования. Он поддерживает строгую динамическую типизацию. Относится к языкам высокого уровня и общего назначения. Может применяться как самостоятельный инструмент разработки проектов, так и в качестве средства обеспечения дополнительной функциональности. Изучается новичками и более опытными разработчиками. В его основе заложен ABC, благодаря которому исходный код получится читабельным и компактным.
Питон используется для того, чтобы создавать небольшие утилиты и даже игры. Пример – можно написать бот на Python для Телеграм. Далее предстоит познакомиться с этим процессом поближе. В конце каждый научится создавать bot message для Телеграмм. Это простой алгоритм, который повторяет фразы за пользователем. Такое программное обеспечение называется echo bot message.
Предварительная подготовка
Bot в Телеграмм – это небольшая мини-программа внутри мессенджера. Она управляется текстовыми командами в чате по принципу «Вопрос-ответ». Используется для различных целей – от рассылки рекламы до информирования о событиях, погоде или иных операциях. С 2015 года в Telegram каждый может написать собственный бот.
Telegram-боты на Python условно делятся на несколько категорий:
- поисковые;
- помощники-информаторы (бухгалтерия, штрафы, налоги, напоминания);
- сервисы (словари, конвертеры, переводчики);
- развлекательные (симуляторы, гадания, мемы и анекдоты).
Далее будет представлен пример bot message, который дублирует сообщения пользователя – эхо-бот. Он отлично подойдет для обучения написания ботов с нуля.
Чтобы сделать собственный telebot в Telegram, потребуется подготовить:
- Ноутбук или компьютер.
- Python 3 (скачать и установить).
- Любой редактор кода.
- Подключение к Интернету.
- Несколько библиотек (library) для bot message (Aiogram, telebot).
Создать первый bot для Телеграма – это не так сложно. С этой задачей сможет справиться даже тот, кто раньше не имел никакого опыта в разработке программного обеспечения.
О библиотеках
Телеграм-боты создают при помощи специальных модулей – библиотек. У Питона очень много подобных инструментов. Все они различаются по функциональности и популярности, а также степени поддержки. Вот наиболее популярные библиотеки:
- Python telegram bot. Одна из первых библиотек для формирования bot message. Поддерживает синхронный подход к работе. При ожидании ответа от пользователя выполнение исходного кода приложения будет остановлено.
- Aiogram. Ее рекомендуется скачать и установить всем, кого интересует создание ботов message в Телеграм. На этой библиотеке базируются многие чат-боты. Здесь поддерживается асинхронность функционирования кода. Это значит, что во время ожидания пользовательского ответа останавливать bot message нет необходимости. Отличительной чертой Aiogram является наличие бесплатной официальной документации на русском языке.
- TeleBot. Небольшая и популярная библиотека. Она позволяет создавать небольших ботов с асинхронным или синхронным подходом – на выбор и усмотрение разработчика. Это отличный вариант для небольших проектов.
Далее предстоит изучать процесс создания Python telebot на примере Aiogram. Это связано с тем, что соответствующая библиотека является современной и распространенной.
Создание бота
В Телеграмм создать бот message не слишком трудно, если действовать поэтапно. Далее предстоит разобраться с формированием эхо-bot’а. Он будет отвечать на пользовательские сообщения его же словами.
Условно создание bot message можно представить следующей инструкцией:
- Скачать и установить Python.
- Настроить виртуальное окружение для программирования.
- Зарегистрировать бота в специальном Телеграмм канале.
- Установить библиотеку Aiogram.
- Написать код эхо-бота, а затем связать его по API Telegram.
После всего этого bot message будет успешно работать. Его можно подключить к себе на канал.
Установка языка
В Linux и MacOS Python обычно уже установлен. Для его проверки используется команда в терминале: python —version. Если язык установлен, на экране появится характерное сообщение с версией. В противном случае необходимо скачать и установить Питон. Операция выполняется точно так же, как и в случае с Windows:
- Открыть официальный сайт разработчика.
- Перейти во вкладку «Downloads» и выбрать версию языка.
- Нажать на кнопку, отвечающую за скачивание. Подождать, пока система загрузит «Мастер установки».
- Запустить инициализатор и, следуя подсказкам на экране, завершить процедуру.
Последнюю версию Питона можно загрузить с главной страницы официального сайта разработчика.
Виртуальное окружение
Второй этап создания bot message – это формирование виртуального окружения. Для этого используется virtualenv. Такое название получил специальный инструмент, позволяющий изолировать проекты друг от друга в разработке, независимо устанавливая library и пакеты. Данный инструмент особо полезен, когда программист одновременно трудится над несколькими приложениями.
Для формирования виртуального окружения используется команда:
Теперь можно создать директорию для message проекта. Внутри соответствующей папки будет работать виртуальное окружение:
mkdir telegram_bot
cd telegram_bot
Команда mkdir создаст в Python папку telegram bot. Cd позволяет перейти в соответствующую директорию. В ней сохранятся все файлы рассматриваемого проекта.
Теперь необходимо развернуть виртуальное окружение внутри папки telegram_bot:
virtualenv venv -p python3
Далее – активировать. Если не сделать этого, сервис в виде bot message работать не будет, как и само виртуальное окружение.
Выше – команда активации. Теперь можно двигаться дальше и создавать самого bot message.
Сохранение токена
Чтобы сделать message_handler (эхо-бот), его необходимо зарегистрировать и сохранить токен. Для этого потребуется:
- Открыть телеграмм и найти @BotFather.
- Открыть соответствующий канал. Кликнуть по кнопке «Запустить».
- Ввести в поле сообщений команду «/newbot».
- Дать название боту. Пусть он называется echo_otus_bot.
- В ответ пользователю придет токен. Его нужно сохранить для дальнейшего подключения к Api Telegram.
Message handler создан. Теперь остается грамотно запрограммировать его. Для этого пригодится Aoigram.
Установка библиотек
Для инициализации Aiogram, чтобы создавать ботов без bot polling (бесконечно выполняющегося цикла запросов к серверам мессенджера), используется команда:
Библиотека установится в созданное виртуальное окружение, которое связано с папкой telegram_bot. Для нового бота придется устанавливать Aiogram повторно.
Программирование бота
Рекомендуется писать message handler в IDE Python, а не в окне терминала. Пример – Visual Studio Code. Это бесплатный редактор кода со множеством полезных функций.
Чтобы запрограммировать бота, необходимо открыть IDE и создать файл main с расширением py. Для рассматриваемого проекта этого будет достаточно. Теперь необходимо произвести импорт из Aiogram нужных классов и модулей:
from aiogram import Bot, Dispatcher, executor, types
Здесь:
- bot – отвечает за команды от пользователя и способы ответа на них;
- dispatcher – отслеживание обновлений;
- executor – запуск бота и выполнение функций, которые были задуманы.
За счет модуля types можно использовать базовые классы для аннотирования. Пример – types. Message позволяет работать с приемом текстовых сообщений со стороны пользователя. В официальной документации можно получить больше информации о types.
Теперь необходимо импортировать токен, позволяющий связываться с API Telegram:
Далее требуется инициализировать объекты bot и Dispatcher. Первому передается токен. Если не инициализировать соответствующие объекты, исходный код работать не будет:
Теперь можно настроить приветственное окно для нового пользователя. Это сообщение, которое появляется при нажатии «/start». Для этого создается message-handler. Ему прописывается функция ответа:
Этот код работает так:
- Message_handler – декоратор. Он реагирует на входящие сообщения и включает в себя функцию ответа.
- Commands=[‘start’] – связанная с декоратором команда. Запускает вложенную в него операцию или функцию.
- Async def send welcome – отвечает за создание асинхронной функции. Она принимает в себя сообщения пользователя message, определяемое через тип Message. Сама функция может быть названа любым именем. В примере это send_welcome.
- Await message.reply – используется для определения ответа пользователя. Await применяется из-за того, что библиотека работает асинхронно.
Теперь можно создать событие для обработки введенного со стороны пользователя сообщения:
Из-за того, что реакция со стороны bot должна быть на любое текстовое сообщение, скобки в @dp.message_handler остаются пустыми. Для ответа в Python bot api используется тот же метод message. В нем указывается, что необходимо вернуть исходный текст, принятый ранее от клиента.
Получение сообщений от сервера
Если не настроить получение сообщений от сервера в Телеграм, ответы со стороны программируемого мини-приложения увидеть не получится. Реализация операции возможна при помощи поллинга. Он работает элементарно – метод start_polling опрашивает сервер и проверяет на нем обновления. При их наличии происходит отправка в Telegram.
Для активации поллинга используются две строки:
А вот весь исходный код, с которым предстоит столкнуться:
Этот текст сохраняется в папке telegram_bot под именем main.py.
Запуск и проверка
Для того, чтобы запустить бота, потребуется терминал. После его запуска необходимо перейти в папку проекта и ввести команду:
В ответ придет сообщение о том, что обновления успешно пропущены. Можно зайти в Telegram и отыскать по имени @echo_otus_bot мини-приложение. Далее – запустить его, нажав на кнопку «Начать». При обработке команды «/start» сервис пришлет приветственное сообщение. Можно написать текст и отправить его в bot. Результат не заставит себя ждать.
Интересует Python? Добро пожаловать на курс в Otus!