Сегодня чат-боты становятся неотъемлемой частью нашего онлайн-присутствия, они предлагают новые удобные способы автоматизации общения. А возможность создать собственного цифрового помощника для Telegram открывает перед нами захватывающие перспективы. В этой статье мы рассмотрим, как с нуля создать функционального бота на Python с использованием библиотеки Aiogram – от регистрации его в Telegram до написания асинхронного кода, который оживит виртуального помощника.
Особенности чат-ботов на Python и Aiogram
Чат-бот – это специальный программный агент, который может взаимодействовать с пользователями путем автоматизированного обмена сообщениями. Они находят широкое применение в управлении сообществами и поддержке пользователей, особенно в таких популярных мессенджерах, как Telegram. С учетом возрастающей популярности чат-ботов, их разработка становится все более актуальной задачей.
Существует множество готовых решений с базовым функционалом, но создание персонализированного бота позволяет значительно расширить возможности взаимодействия с аудиторией и предложить уникальный пользовательский опыт. А благодаря современным инструментам, этот процесс становится доступным практически для всех желающих.
Python является одним из самых популярных языков для разработки чат-ботов благодаря своей простоте и мощному набору библиотек. Среди них особенно можно выделить Aiogram – высокоуровневую асинхронную библиотеку для Telegram Bot API.
Она обладает сразу несколькими важными преимуществами:
- интуитивно понятный интерфейс;
- минимизация необходимости глубокого погружения в детали реализации Telegram API;
- сосредоточенность на логике взаимодействия бота с пользователем.
Благодаря таким возможностям разработчики могут значительно упростить и ускорить процесс разработки бота.
Популярные библиотеки для создания бота
Разнообразие доступных библиотек шаблонов и функций значительно упрощает задачу создания функциональных и интерактивных чат-ботов для Telegram. Благодаря этому, запускать простых ботов могут даже пользователи, которые не обладают глубокими знаниями в программировании.
Один из популярных примеров – это так называемый эхо-бот, который отвечает пользователю его же сообщениями. Он являет собой простую, но эффективную демонстрацию возможностей ботов, которая может быть расширена для более сложных задач, таких как автоматизация рассылок, функции личных ассистентов и многое другое.
К самым популярным библиотекам для создания Telegram-ботов можно отнести следующие:
- Aiogram. Это асинхронная библиотека, которая разработана специально для работы с Telegram. Она позволяет реализовывать ботов, которые могут работать параллельно с несколькими пользователями, не ожидая ответа от каждого из них. Это придает ботам видимость независимости и способности вести диалог “живым” образом.
- Python-telegram-bot. Эта библиотека предлагает более традиционный подход к разработке чат-ботов, основанный на синхронном взаимодействии в стиле вопрос-ответ. Она может быть предпочтительна для создания ассистентов с более простой логикой взаимодействия, где каждое действие пользователя требует немедленного ответа от бота.
- TeleBot. Объединяет преимущества асинхронной и синхронной обработки, благодаря чему обеспечивает гибкость в разработке, позволяя создавать как простых, так и более сложных ботов. Эта библиотека поддерживает различные стратегии взаимодействия с пользователем, что делает ее удобным инструментом для широкого спектра приложений.
Выбор подходящей библиотеки зависит от конкретных требований к боту и предпочтений разработчика в плане стиля программирования:
- асинхронные библиотеки, такие как Aiogram, обеспечивают более высокую производительность для ботов, обслуживающих большое количество пользователей одновременно;
- синхронные библиотеки могут быть более интуитивно понятными для новичков в программировании.
Со временем эти технологии развиваются и открывают новые горизонты для разработки чат-ботов. В итоге они могут поддерживать все более сложные диалоги и предоставлять персонализированные решения. Это становится возможным благодаря обширным библиотекам и фреймворкам, которые постоянно обновляются и расширяются, предлагая разработчикам новые инструменты для создания инновационных и эффективных ассистентов.
Что нужно знать об Aiogram перед написанием кода
Перед началом работы с Aiogram важно понимать особенности асинхронного программирования. Эта концепция позволяет боту обрабатывать несколько задач одновременно без блокирования выполнения кода. Именно такие возможности делают его более отзывчивым и эффективным при обслуживании множества пользователей.
Для реализации таких функций Aiogram использует специальные команды:
- async – говорит программе, что функция может выполняться по частям, а не всё сразу;
- await – используется, когда программа должна подождать, пока одна часть задачи закончится, прежде чем двигаться дальше.
Это ключевые элементы асинхронного кода, которые позволяют выполнять параллельную обработку задач, не теряя время на ожидание.
Вот пример простого хендлера для команды /start, который отправляет пользователю приветственное сообщение:
@dp.message(Command("start")) async def start(message: types.Message): await message.answer("Привет, пользователь!")
В этом примере @dp.message_handler(Command(“start”)) определяет хендлер, который реагирует на команду /start. А функция start асинхронно обрабатывает сообщения и использует await для отправки ответа, что позволяет боту продолжать обработку других событий во время ожидания отправки сообщения.
Хендлеры в Aiogram – это функции, которые определяются для обработки различных типов сообщений или команд от пользователя. В нашем примере хендлер принимает команду /start и отправляет приветственное сообщение.
Стоит отметить что библиотека Aiogram содержит множество других полезных функций. Например, возможности для бота публиковать фото, видео, управлять клавиатурой и так далее. Все это внешние декоративные функции, но они позволяют очень разнообразить деятельность электронного ассистента.
Создаем эхо-бота в Telegram
Для создания эхо-бота необходимо выполнить несколько базовых шагов:
- Первым делом нужно убедиться, что на вашем компьютере установлен Python. Если нет, то придется его установить, так как этот язык программирования будет основой для написания кода бота.
- Далее нужно создать самого бота. Это делается через специального бота @BotFather в Telegram, который может прямо в мессенджере предоставить все необходимые инструкции.
- Также понадобится установленная библиотека Aiogram, которая содержит удобные инструменты для работы с Telegram Bot API.
С этими подготовительными шагами вы создадите основу для разработки вашего эхо-бота. В целом это отличный стартовый проект для знакомства с процессом разработки ботов в Telegram, а также для освоения работы с асинхронным программированием в Python и Aiogram.
Проверка и установка Python
На macOS и на большинстве дистрибутивов Linux Python обычно устанавливается по умолчанию. Чтобы проверить его наличие и версию, откройте терминал и введите команду:
python --version
Если система использует Python 3:
python3 --version
Если в ответ команда выводит версию Python, значит он уже установлен. В противном случае следует выполнить его установку.
Установка Python на Windows
На Windows Python нужно устанавливать отдельно, так как по умолчанию он не включен в состав ОС.
Этот процесс почти не отличается от стандартной установки программ:
- Перейти на официальный сайт Python (https://www.python.org/).
- Открыть раздел «Downloads».
- Скачать установочный файл для Windows. Рекомендуется выбирать самую актуальную версию Python, чтобы иметь доступ к новым функциям и улучшениям безопасности.
- Запустить скачанный файл и следовать инструкциям мастера установки. При этом нужно отметить опцию «Add Python to PATH», чтобы Python был доступен в командной строке.
После установки нужно открыть командную строку (CMD) и проверить версию Python.
Команды аналогичные:
python --version
Или для Python 3:
python3 --version
Если в окне появится текущая версия Python, значит установка прошла успешно.
Создаем виртуальное окружение
Создание виртуального окружения – это рекомендуемый шаг в разработке программного обеспечения, в том числе при создании чат-ботов для Telegram. То есть это делать необязательно, но желательно для того, чтобы изолировать работу приложения (бота) от других программ. Таким образом мы предотвращаем конфликты версий библиотек и упрощаем управление пакетами.
Установка virtualenv
Для начала нужно установить пакет virtualenv, если он еще не установлен. Это можно сделать через пакетный менеджер pip для Python, используя готовую команду:
sudo pip install virtualenv
Или, если вы используете Python 3:
sudo pip3 install virtualenv
Создание новой директории для проекта
Внутри этого virtual environment создаем готовые директории для нашего приложения. Это папки, в которых будет храниться создаваемый чат-бот:
mkdir telegram_bot cd telegram_bot
Здесь использованы следующие функции:
- mkdir – для создания новой директории (папки с названием telegram_bot);
- cd – для перехода в созданную директорию.
Это простейшие команды, но важно не забывать их прописывать. Они работают как в Unix-подобных системах (Linux, macOS), так и в командной строке Windows.
В языке Питон это обычное дело, когда все переходы между каталогами осуществляются с помощью командной строки.
Инициализация виртуального окружения
Внутри папки telegram_bot нужно инициализировать виртуальное окружение:
virtualenv venv -p python3
Эта команда создаст виртуальное окружение с именем venv, используя интерпретатор Python 3. А -p python3 – указывает версию Python, которую нужно использовать, если в системе их установлено несколько.
Активация виртуального окружения
Чтобы начать использовать, виртуальное окружение нужно его активировать.
Для Unix-подобных систем используется команда:
source venv/bin/activate
Для Windows:
.\venv\Scripts\activate
Теперь ваша командная строка должна измениться, отображая имя окружения (venvо). Это означает, что все дальнейшие команды pip будут воздействовать именно на это окружение.
С этого момента вы находитесь в изолированной среде разработки, и можете удобно приступать к написанию программы самого бота, имея все подключенные библиотеки и среду разработки. Также можно устанавливать необходимые зависимости, не беспокоясь о влиянии на другие проекты или систему в целом.
Создаем бота
Процесс создания нового чат-бота начинается прямо в приложении Телеграм и при использовании специального бота BotFather. Соответственно, первым шагом нужно в поисковой строке мессенджера прописать название @BotFather. Он должен появиться в результатах поиска на одной из первых позиций.
Далее нужно выбрать BotFather и нажать кнопку «Запустить». В ответ он отправит автоматическое сообщение с перечнем команд, которые можно использовать для взаимодействия с ним.
![](https://e-sevenweb.ru/wp-content/uploads/2024/07/02093c4b7ae07c2410c4f28081cc5a7d0a1c3add.png)
Теперь вы можете продолжать общение с ботом через стандартный чат, отправляя ему специальные команды:
- /newbot – это первая команда для создания бота.
- В ответ BotFather отправит сообщение, в котором попросит указать имя (name) бота.
- Нужно вручную прописать любое название бота и отправить его обычным сообщением. Желательно, чтобы это название было читаемым, так как в дальнейшем его будут видеть все пользователи при взаимодействии с ботом. Например «Самый лучший бот».
- Далее BotFather отправит еще одно сообщение, в котором попросит указать юзернейм (username) бота.
- Аналогично, нужно вручную прописать юзернейм и отправить его обычным сообщением. Он должен быть уникальным и заканчиваться на «bot».
Если юзернейм занят, то BotFather попросит выбрать другой. Если же свободен, то он отправит сообщение с поздравлением и некоторыми дополнительными инструкциями. На этом процесс регистрации нового бота можно считать завершенным.
![](https://e-sevenweb.ru/wp-content/uploads/2024/07/7d7c354eefcbb2da73314caff9e1e5c81638e7d3-jpeg.webp)
Кроме того, после успешной регистрации бота, BotFather предоставит вам токен –уникальную строку, которая служит ключом для доступа к API Telegram и управления вашим ботом.
Токен будет выглядеть примерно так:
123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11.
Это крайне важный код, который необходимо сохранить в надежном месте. Так как с его помощью кто угодно сможет управлять вашим ботом.
Подключаем Aiogram
Если вы планируете писать чат-бота с использованием библиотеки Aiogram, ее нужно установить в ваше виртуальное окружение Python. Это поможет организовать все необходимые инструменты для чат-бота в одном месте и предотвратит конфликты с другими проектами или программами на вашем компьютере.
Предварительно нужно убедиться, что виртуальное окружение активировано. Если вы следовали предыдущим шагам, то ваша командная строка должна отображать имя виртуального окружения. Например, (venv), которое указывает на то, что все последующие команды будут выполняться в контексте этого виртуального окружения.
Чтобы установить Aiogram, нужно воспользоваться стандартной командой:
pip install aiogram
Эта команда загрузит и установит актуальную версию Aiogram и все ее компоненты в ваше виртуальное окружение, не затрагивая глобальные установки Python и другие проекты. После этого вы будете готовы начать разработку нового чат-бота.
Стоит учитывать, что если в будущем вы будете работать над другими проектами, которые тоже используют Aiogram или любую другую библиотеку, то вам нужно будет установить необходимые компоненты в новое или соответствующее виртуальное окружение для того проекта.
Пишем код для эхо-бота
Написание кода эхо-бота в Telegram с использованием библиотеки Aiogram представляет собой последовательный процесс. Начиная от импорта необходимых модулей и заканчивая настройкой обработчиков сообщений. При этом лучше всего использовать редактор IDE – то есть отдельное приложение для составления кода (вместо стандартного окна терминала). Так вы сможете сразу привить себе культуру грамотного пользования Пайтон.
Первой командой станет импортирование из Aiogram модулей и классов, то есть содержимого самой библиотеки:
from aiogram import Bot, Dispatcher, executor, types
В результате вы импортируете следующие компоненты:
- Класс Bot – отвечает за взаимодействие с пользователем в чате, а именно за стандартные реакции на его различные действия. Это основа любого бота.
- Dispatcher – нужен для контроля обновлений Телеграм, чтобы бот не вышел из строя в свежих версиях.
- Класс executor – запускает работу бота с Telegram API, то есть активирует его функционал.
- Модуль types для работы с различными типами данных в Telegram. В нашем случае отвечает за текстовые сообщения, которые чат-бот будет повторять.
В целом это стандартные наборы функций.
Далее для корректной работы бота потребуется импортировать сохраненный ранее токен из API приложения:
API_TOKEN = '123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11'
В одинарных кавычках размещаем токен, полученный от @BotFather.
Теперь присваиваем этот номер классам Bot и Dispatcher:
bot = Bot(token=API_TOKEN) dp = Dispatcher(bot)
Благодаря этой команде они будут понимать, с чем конкретно им нужно работать. То есть с нашим пользовательским эхо-ботом.
Следующим шагом добавим окно приветствия для пользователя при подключении бота (командой /start). Создадим тот самый хендлер, то есть реакцию на действия посетителя и ответ на него:
@dp.message_handler(commands=['start']) async def send_welcome(message: types.Message): await message.reply("Привет!\nЯ Самый лучший бот!\nОтправь мне любое сообщение, и я тебе отвечу.")
В этой команде:
- message_handler выступает в роли так называемого декоратора. То есть это упрощенный вариант реагирования на действия пользователя, как часть элемента асинхронного кода. Декоратор как бы создает внешнюю обертку готовой функции (в данном случае – ответа), не меняя ее суть но видоизменяя результат в зависимости от поступающих пользовательских действий.
- commands=[‘start’] просто запускает начинку хендлера.
- async def send_welcome создает асинхронность работы бота при получении текстового сообщения типа message. Тем самым бот и ответит на слова пользователя, и поприветствует нового посетителя одновременно.
- await message.reply определяет ожидание ответа пользователя на указанное в скобочках предложение.
Дальше можно прописать конкретную реакцию на любые слова посетителя:
@dp.message_handler() async def echo(message: types.Message): await message.answer(message.text)
Здесь скобочки после первой команды пустые, это предполагает ответ на любое сообщение. Все типы одинаковых данных – это переменные класса message. Поэтому, например, ответ бота не будет ничем отличаться от слов собеседника, и можно даже настроить ботов на работу друг с другом, воспринимая как двух реальных собеседников.
Завершающий этап – это настройка контактов бота с сервером Телеграм. Так как мессенджер работает всегда онлайн, и все сообщения проходят через удаленный сервер.
Для этого используется так называемый поллинг, то есть проверка обновлений от сервера:
if __name__ == '__main__': executor.start_polling(dp, skip_updates=True)
Тут все просто – в случае правильной настройки, готовый чат-бот будет уже автоматически подключен к серверам Телеграм. На этом шаге можно считать, что разработка завершена успешно.
Этот пример кода является базовой реализацией эхо-бота, который отвечает на любое сообщение тем же текстом. Он будет сохранен в исходной папке telegram_bot единым файлом main.py.
Запускаем бота и проверяем работу
Запуск созданного чат-бота в Telegram и последующая проверка его работы – это завершающие шаги в разработке. Причем их можно выполнить даже без запуска самого мессенджера.
Для этого нужно запустить терминал или командную строку на компьютере и перейти в директорию проекта, где находится файл main.py с кодом бота.
Затем нужно выполнить команду:
python main.py
Или для Python 3:
python3 main.py
Если все обновления корректны, то должно прийти сообщение об успешном запуске программы.
В самом Телеграме установленный чат-бот можно найти по юзернейму, который был указан при регистрации через BotFather. Он был там официально зарегистрирован еще до создания внутреннего кода. После запуска, если в коде нет ошибок, бот начнет работать и будет ожидать входящие сообщения.
Соответственно, чтобы проверить его работу в самом мессенджере, нужно выполнить следующие действия:
- открыть Telegram;
- найти бота по юзернейму;
- начать чат, путем отправки команды /start.
Теперь можно отправить боту любое сообщение, а он должен ответить тем же текстом (если это эхо-бот).
Заключение
Создание простого эхо-бота для Telegram является отличным началом в направлении разработки чат-ботов. Он уже способен на непрерывное взаимодействие с пользователями без необходимости специфических запросов, что делает его доступным для общения в любое время.
Далее можно продолжать развивать свои навыки в более сложных проектах. Используйте полученные знания и инструменты для создания более функциональных ботов, которые могут автоматизировать повседневные задачи, информировать и развлекать пользователей. Это открывает перед вами широкие возможности для творчества и инноваций.