УДК 004 Токарев Э.А., Галимянов Ф.А.
Токарев Э.А.
студент 2 курса Казанский национальный исследовательский технологический университет (г. Казань, Россия)
Научный руководитель: Галимянов Ф.А.
старший преподаватель Казанский национальный исследовательский технологический университет (г. Казань, Россия)
СТРУКТУРИРОВАНИЕ ОБРАБОТЧИКОВ В TELEGRAM-БОТАХ для ОПТИМИЗАЦИИ ВЗАИМОДЕЙСТВИЯ
Аннотация: в данной статье рассказывается, для каких целей можно использовать телеграмм бота, а также объясняется процесс разработки телеграмм бота на языке Python с использованием библиотекиpyTelegramBotAPI.
Ключевые слова: телеграмм боты, обработчики сообщений, создание бота, информационные технологии.
Цель данной работы - написать собственного телеграмм бота, изучить, как он устроен и продемонстрировать его в действии. Задачи:
1. Выяснить, для каких задач можно использовать бота.
2. Проинструктировать, как создать своего бота.
3. Изучить принципы работы телеграмм-бота.
1. Для чего используются телеграмм-боты.
• Получение данных.
Телеграмм-боты могут выдавать данные по запросу, такие как сведения о погоде, обменных курсах, актуальных новостях и т.д.
• Взаимодействие.
Боты могут служить для взаимодействия с людьми через телеграм, например, для пересылки текстов, изображений, видеоклипов и звуковых файлов.
• Автоматизация процессов.
Боты способны облегчить автоматизацию разнообразных процессов, например, для установки напоминаний, организации заданий, рассылки сообщений по заданному графику и прочего.
• Развлечение.
Имеются телеграм-боты, разработанные для развлекательных целей, например, для участия в играх, создания шуток, прохождения тестов и прочего.
• Ведение бизнеса.
Боты могут найти применение в коммерции для автоматизации взаимодействия с клиентами, например, для обработки заказов, реагирования на запросы и прочего.
• Обучение.
Боты могут быть применены в обучающих целях, например, для изучения иностранных языков, доступа к образовательным ресурсам и прочего.
2. Как создать собственного телеграмм бота
1. Установка PyCharm Community Edition на компьютер.
Чтобы изучить принципы работы телеграмм-бота более детально, необходимо сначала его создать и запустить в PyCharm. PyCharm - это интегрированная среда разработки (IDE), которую можно использовать для создания Python-программ. Программу можно скачать с официального сайта: https: //www.j etbrains. com/pycharm/download/.
2. Получение токена бота.
Перед созданием бота в Telegram вам необходимо иметь учетную запись Telegram и установленное приложение Telegram. После этого вы можете создать бота, перейдя к BotFather по ссылке: https://telegram.me/BotFather. Как только вы отправите ему сообщение "/start", BotFather отправит вам инструкцию по созданию нового бота.
После прохождения данных инструкций, он предоставит вам токен доступа, который нужно сохранить в надёжном месте. Он понадобится далее.
3. Установка pyTelegramBotAPI.
Мы будем использовать библиотеку pyTelegramBotAPI. Откройте PyCharm Community Edition, создайте новый проект и установите её, выполнив следующую команду в терминале PyCharm: pip install pyTelegramBotAPI (рис 1.).
File Edit View Navigate Code Refactor Run Tools VÇS Window Help D. ' ctclh . ости.ру ■ Ort стоиИос™.ру —- □ X
Python programs Bût стоимости [J Bot стой мости .py jt w Bot стоимости * ► й Q <1 »
■с HI Project - О - *Т" О — Bot СТОЙ hi ОСТИ, ру
cl > ta Python programs 70 Al Av. ¡g 2 й V
> Hill External Libraries 71 —
^ Scratches arid Consoles 72 =
73
7<
75 —
Terminât Local + V" О —
Windows PowerShell
CO Корпорация Майкрософт (Microsoft Corporation). Все права защищены.
" Попробуйте новую кроссплатфорненную оболочку PonerShell (https://sna.iFis/pscoreoJ
i РЕ E:\Desktop\Python programs? pip install pyTelegramBotAPlQ
Jf Favorites
i= TODO 9 Problems И Terminal S Fyttion Packages Ф Python Console Q Event Log
1У Python 3.9 (Python programs) Ъ
Рисунок 1. Открытие терминала и установка Telegram API.
4. Импортирование модуля telebot, создание бота (рис 2.).
telegram hat.py
1 import telehot
2
3 bot telebot.TeleBotC'TOKEN1)
к [
5
6
7
Рисунок 2. Импортирование 1е1еЬо1
После выполнения всех этих действий можно начинать писать код для нашего бота.
3. Принцип работы Телеграмм-бота.
Telebot использует обработчики сообщений (рис 3.) для реагирования на сообщения от пользователей. Обработчики сообщений могут быть определены для различных типов сообщений, таких как текстовые сообщения, фотографии, видео и другие.
f^ telegram botpy
l Import telebot n
3 bot telebot.TeleBoti'TOKEN'}
5 6 (&bot.raes5age_handter( 7 def send _i;iethods(i?isg) a bot. send_inessage(i:!sg. chat .id, ■['text']) "Привет, как дела?")
5
Рисунок 3. Обработчик для любого текстового сообщения.
"@bot.message_handler" - это обработчик сообщений. В данном случае он производит обработку любого сообщения, содержащего текст.
"@def send_methods(msg)" - это функция, вызываемая обработчиком. В нашем случае она принимает входящее от пользователя сообщение
Обратим внимание на метод "bot.send_message()". С помощью него бот может общаться с пользователем. Внутри круглых скобок метода сначала передаётся "msg.chat.id", который нужен для того, чтобы бот отправил сообщение только тому пользователю, кто ему написал. Далее можно в кавычках задать текст, который бот воспроизведёт.
Чтобы можно было запустить бота, необходимо в самом конце программы дописать одну строчку (рис 4.).
9
1Q bot.pollingC True)
11
Рисунок 4. Запуск цикла ожидания сообщений от Telegram.
Теперь давайте запустим бота и проверим, как он работает. Для этого нажмите на зелёную кнопку Run (рис 5.) и зайдите в диалог с вашим ботом. Если вы не знаете, как открыть диалоговое окно, то перейдите в BotFather и найдите сообщение подобного формата "@NAME_bot" и нажмите на него (NAME - имя бота, которого вы регистрировали).
Reractor Run tools VCS Window Help Bot aoi1 ic:i;: telegram bot.p — LI X
leiegram bot.py Jt* teiegram bet * '1* $ Q, ф fr
— £ telegram bat.py
1 import telebot дз vi ^
2
3 bot telebot.TeleBot('5840752078:AAEohbiSZbHrp№iElGSkXRztV9k_q__D8qE1)
■ ■ ■ ■ ■ J л
к
5
6 @bot.nessage_nandler( ^'text'J)
7 def send_nethods(i7isg)
a bot.send_message07Tsg.chat.id, "Привет, как дела?11) Я (
9
1Э bat.pollingC -True)
11 I
12 13
О -
Рисунок 5. Запуск бота.
Как мы уже знаем, бот на любое текстовое сообщение ответит этой фразой. Но что если отправить цифры в сообщении? (рис. 6.).
/start 23-. ■
Привет, как дела?
Привет1У меня все прекрасно, а у тебя?
23:12
Привет, как дел а?
J 2345 23:М vi'
Привет, как дела?
/Ф Write a message... |" J (v) д,
Рисунок 6. Демонстрация работы бота.
Интересный факт: цифры тоже относятся к текстовой информации, но не будем зацикливаться на этом.
Обработчики могут срабатывать не только на тип сообщения, но и на строго определённые команды. Достаточно лишь придумать название команды и вписать её в обработчик, например: "соттапёв=['команда']'\
Давайте теперь напишем бота, у которого есть обработчики команд и отдельный обработчик текста, который будет правильно расположен (рис 7.).
ц telegram bat.py
1 import telebot
2
3 bot telebot.TeleBoti'5840752078: AAEahbiSZbHrplNnElGSkXRztV9k_q__D8qE')
. . -. . ■. 1 i I
A
5 [BDOt.nessage_handlerf ['start'])
6 def send_welcoiae(iJisg)
7 bot.sencLnessageinsg.cbat.id, "Привет! Я телеграмм бот. Напиши /help," а "чтобы узнать все команды")
@bot.nessage_handler( ["help'I)
cfef send_help(i7isg}
bot.send_i0essage(jij5g.chat.id, "Список команд: /start - начать чат'1- "
"/help - показать список команд л" "/getuserid - получить свой ID")
.'Awwwwvvwvw г
ßbot.nessaqe_handler( ['qetuserid1])
-T*. S-S-y- V-. Л S-S-y-S-S-T^S-
def send_userid(i7isg)
bot.send_riessage(i7i5y.chat.id, f"Bau ID: ÜTTsg.ehat. id}")
|dbot.nessage_handler( [ 'text' I)
öef answer_to_any_text(i;isg)
bot.send_nessrtge('',|i4",l.chat.id, "Вы написали текстовое сообщение")
bot.pollingС)
Рисунок 7. Более сложный бот с обработчиками команд и обработчиком текста в конце.
Международный научный журнал «ВЕСТНИК НА УКИ» № 5 (74) Том 1. МАЙ 2024 г. Давайте запустим этого бота и напишем команду "/start" (рис 8.).
/start ф
Привет! Я телеграмм бот. Напиши elp, чтобы узнать все команды
У2) Write a menage... [l- ] (и)
Рисунок 8. Демонстрация команды старт.
При получении сообщения, бот проверяет каждый обработчик. В данном случае сразу же сработал самый первый обработчик "start", а все остальные обработчики даже не будут проверяться, пока не исполнится код из первого обработчика. В нашем случае бот исполнил весь код (нам пришло ответное сообщение). Теперь быстро проверим остальные команды (рис 9.).
/help 23:37 S/
Список команд:
/start - начать чат
/help - показать список команд
fgetu'sefid - получить свой ID
/getuserid 2337 SS
Ваш Ю: Л »/
ул Write a message,,. © ф
Рисунок 9. Демонстрация остальных команд.
Обратите внимание, что, если отправить команду без символа "/", бот распознает это сообщение, как текст (рис 10.).
start if t •> :42 S/
Вы написали текстовое сообщение
help ■:■ ■А1 SS
Вы написали текстовое сообщение
getuserid :42
Вы написали текстовое сообщение
Write a message,., ["J ^Ц/
Рисунок 10. Важность написания символа "/" для команд.
Что происходит в данном случае? Сначала проверяется обработчик команды "start", но из-за того, что текст не является командой, он не срабатывает. Затем по цепочке проверяются все остальные обработчики, и только в последнюю очередь проверяется текстовый обработчик, который срабатывает. Если бы обработчик текста был в самом начале, то мы никогда бы не получили ответ от команд, так как всегда срабатывал бы самый первый обработчик, а остальные даже бы не проверялись.
Заключение.
Использование обработчиков сообщений в Telegram-ботах является ключевым элементом для эффективного взаимодействия с пользователями. Основываясь на типах сообщений, таких как текст, фото или видео, или конкретных командах начинающихся с символа "/", можно настраивать бота, чтобы он реагировал адекватно и целенаправленно на каждый тип взаимодействия. При этом, порядок расположения обработчиков играет критическую роль, поскольку бот проверяет их последовательно, что подчеркивает важность стратегического планирования в разработке бота.
Обработчики позволяют боту не только эффективно управлять потоком коммуникаций, но и обеспечивать пользовательский опыт, понимая и правильно
реагируя на различные формы входящих сообщений. Это создает возможности для разработчиков создавать более умные и адаптируемые инструменты автоматизации, способные обслуживать широкий спектр запросов и потребностей пользователей.
СПИСОК ЛИТЕРАТУРЫ:
PyTBA. PyTBA documentation. Read the Docs. URL: https://pytba.readthedocs.io/ru/latest/index.html (дата обращения: 030.04.2024).
Tokarev E.A., Galimyanov F.A.
Tokarev E.A.
Kazan National Research Technological University (Kazan, Russia)
Scientific advisor: Galimyanov F.A.
Kazan National Research Technological University (Kazan, Russia)
STRUCTURING HANDLERS IN TELEGRAM BOTS TO OPTIMIZE INTERACTION
Abstract: this article describes for what purposes the telegram bot can be used, and also explains the process of developing telegram bots in Python using the pyTelegramBotAPI library.
Keywords: telegram bots, message handlers, bot creation, information technology.