Python – перспективный и относительно простой язык программирования. Он поддерживает строгую динамическую типизацию. Относится к языкам высокого уровня и общего назначения. Может применяться как самостоятельный инструмент разработки проектов, так и в качестве средства обеспечения дополнительной функциональности. Изучается новичками и более опытными разработчиками. В его основе заложен ABC, благодаря которому исходный код получится читабельным и компактным. 

Питон используется для того, чтобы создавать небольшие утилиты и даже игры. Пример – можно написать бот на Python для Телеграм. Далее предстоит познакомиться с этим процессом поближе. В конце каждый научится создавать bot message для Телеграмм. Это простой алгоритм, который повторяет фразы за пользователем. Такое программное обеспечение называется echo bot message.

Предварительная подготовка

Bot в Телеграмм – это небольшая мини-программа внутри мессенджера. Она управляется текстовыми командами в чате по принципу «Вопрос-ответ». Используется для различных целей – от рассылки рекламы до информирования о событиях, погоде или иных операциях. С 2015 года в Telegram каждый может написать собственный бот.

Telegram-боты на Python условно делятся на несколько категорий:

  • поисковые;
  • помощники-информаторы (бухгалтерия, штрафы, налоги, напоминания);
  • сервисы (словари, конвертеры, переводчики);
  • развлекательные (симуляторы, гадания, мемы и анекдоты).

Далее будет представлен пример bot message, который дублирует сообщения пользователя – эхо-бот. Он отлично подойдет для обучения написания ботов с нуля.

Чтобы сделать собственный telebot в Telegram, потребуется подготовить:

  1. Ноутбук или компьютер.
  2. Python 3 (скачать и установить).
  3. Любой редактор кода.
  4. Подключение к Интернету.
  5. Несколько библиотек (library) для bot message (Aiogram, telebot).

Создать первый bot для Телеграма – это не так сложно. С этой задачей сможет справиться даже тот, кто раньше не имел никакого опыта в разработке программного обеспечения.

О библиотеках

Телеграм-боты создают при помощи специальных модулей – библиотек. У Питона очень много подобных инструментов. Все они различаются по функциональности и популярности, а также степени поддержки. Вот наиболее популярные библиотеки:

  1. Python telegram bot. Одна из первых библиотек для формирования bot message. Поддерживает синхронный подход к работе. При ожидании ответа от пользователя выполнение исходного кода приложения будет остановлено.
  2. Aiogram. Ее рекомендуется скачать и установить всем, кого интересует создание ботов message в Телеграм. На этой библиотеке базируются многие чат-боты. Здесь поддерживается асинхронность функционирования кода. Это значит, что во время ожидания пользовательского ответа останавливать bot message нет необходимости. Отличительной чертой Aiogram является наличие бесплатной официальной документации на русском языке.
  3. TeleBot. Небольшая и популярная библиотека. Она позволяет создавать небольших ботов с асинхронным или синхронным подходом – на выбор и усмотрение разработчика. Это отличный вариант для небольших проектов.

Далее предстоит изучать процесс создания Python telebot на примере Aiogram. Это связано с тем, что соответствующая библиотека является современной и распространенной.

Создание бота

В Телеграмм создать бот message не слишком трудно, если действовать поэтапно. Далее предстоит разобраться с формированием эхо-bot’а. Он будет отвечать на пользовательские сообщения его же словами.

Условно создание bot message можно представить следующей инструкцией:

  1. Скачать и установить Python.
  2. Настроить виртуальное окружение для программирования.
  3. Зарегистрировать бота в специальном Телеграмм канале.
  4. Установить библиотеку Aiogram.
  5. Написать код эхо-бота, а затем связать его по API Telegram.

После всего этого bot message будет успешно работать. Его можно подключить к себе на канал.

Установка языка

В Linux и MacOS Python обычно уже установлен. Для его проверки используется команда в терминале: python —version. Если язык установлен, на экране появится характерное сообщение с версией. В противном случае необходимо скачать и установить Питон. Операция выполняется точно так же, как и в случае с Windows:

  1. Открыть официальный сайт разработчика.
  2. Перейти во вкладку «Downloads» и выбрать версию языка.
  3. Нажать на кнопку, отвечающую за скачивание. Подождать, пока система загрузит «Мастер установки».
  4. Запустить инициализатор и, следуя подсказкам на экране, завершить процедуру.

Последнюю версию Питона можно загрузить с главной страницы официального сайта разработчика.

Виртуальное окружение

Второй этап создания bot message – это формирование виртуального окружения. Для этого используется virtualenv. Такое название получил специальный инструмент, позволяющий изолировать проекты друг от друга в разработке, независимо устанавливая library и пакеты. Данный инструмент особо полезен, когда программист одновременно трудится над несколькими приложениями.

Для формирования виртуального окружения используется команда:

Бот для Telegram: как написать на Питоне

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

mkdir telegram_bot

cd telegram_bot

Команда mkdir создаст в Python папку telegram bot. Cd позволяет перейти в соответствующую директорию. В ней сохранятся все файлы рассматриваемого проекта. 

Теперь необходимо развернуть виртуальное окружение внутри папки telegram_bot:

virtualenv venv -p python3

Далее – активировать. Если не сделать этого, сервис в виде bot message работать не будет, как и само виртуальное окружение.

Бот для Telegram: как написать на Питоне

Выше – команда активации. Теперь можно двигаться дальше и создавать самого bot message.

Сохранение токена

Чтобы сделать message_handler (эхо-бот), его необходимо зарегистрировать и сохранить токен. Для этого потребуется:

  1. Открыть телеграмм и найти @BotFather.
  2. Открыть соответствующий канал. Кликнуть по кнопке «Запустить».
  3. Ввести в поле сообщений команду «/newbot».
  4. Дать название боту. Пусть он называется echo_otus_bot.
  5. В ответ пользователю придет токен. Его нужно сохранить для дальнейшего подключения к Api Telegram.

Message handler создан. Теперь остается грамотно запрограммировать его. Для этого пригодится Aoigram.

Установка библиотек

Для инициализации Aiogram, чтобы создавать ботов без bot polling (бесконечно выполняющегося цикла запросов к серверам мессенджера), используется команда:

Бот для Telegram: как написать на Питоне

Библиотека установится в созданное виртуальное окружение, которое связано с папкой 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:

Бот для Telegram: как написать на Питоне

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

Бот для Telegram: как написать на Питоне

Теперь можно настроить приветственное окно для нового пользователя. Это сообщение, которое появляется при нажатии «/start». Для этого создается message-handler. Ему прописывается функция ответа:

Бот для Telegram: как написать на Питоне

Этот код работает так:

  1. Message_handler – декоратор. Он реагирует на входящие сообщения и включает в себя функцию ответа.
  2. Commands=[‘start’] – связанная с декоратором команда. Запускает вложенную в него операцию или функцию.
  3. Async def send welcome – отвечает за создание асинхронной функции. Она принимает в себя сообщения пользователя message, определяемое через тип Message. Сама функция может быть названа любым именем. В примере это send_welcome.
  4. Await message.reply – используется для определения ответа пользователя. Await применяется из-за того, что библиотека работает асинхронно.

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

Бот для Telegram: как написать на Питоне

Из-за того, что реакция со стороны bot должна быть на любое текстовое сообщение, скобки в @dp.message_handler остаются пустыми. Для ответа в Python bot api используется тот же метод message. В нем указывается, что необходимо вернуть исходный текст, принятый ранее от клиента.

Получение сообщений от сервера

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

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

Бот для Telegram: как написать на Питоне

А вот весь исходный код, с которым предстоит столкнуться:

Бот для Telegram: как написать на Питоне

Этот текст сохраняется в папке telegram_bot под именем main.py.

Запуск и проверка

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

Бот для Telegram: как написать на Питоне

В ответ придет сообщение о том, что обновления успешно пропущены. Можно зайти в Telegram и отыскать по имени @echo_otus_bot мини-приложение. Далее – запустить его, нажав на кнопку «Начать». При обработке команды «/start» сервис пришлет приветственное сообщение. Можно написать текст и отправить его в bot. Результат не заставит себя ждать.

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