Доброго времени суток, программисты,
В прошлом уроке мы поработали немного с браузером, используя адресную строку, и написали небольшой код - эхо-бота.
В этом уроке мы разберём обработчики сообщений(Хэндлеры) и добавим их в наш код.
Итак, приступим.
Message handlers - обработчики сообщений
Определения, что же такое обработчики сообщений, я думаю не надо
и так понятно, что они обрабатывают сообщения.
Когда наш код принимает входящее сообщение от пользователя,
программа идёт сверху вниз и ищет к какому хэндлеру подходит тип данного входящего сообщения, подчёркнуто "сверху вниз" к тому, что
может быть ситуация, когда программа не доходит до вашего хэндлера или вовсе не обрабатывает сообщения в нём, часто ошибкой может быть, что вышестоящий хэндлер берёт эту работу на себя.
Поэтому хэндлеры стоит располагать правильно!
Сегодня рассмотрим основные хэндлеры: text, audio, video, document.
Но их гораздо больше.
С этим хэндлером "content_types=["text"]" мы уже встречались в прошлой статье,
в нём я лишь напишу, чтобы он отправлял нам сообщение "Текст.".
И в следующий хэндлерах тоже будут соответсвующие ответы по типу сообщения.
Начнём, напишем сразу все хендлеры в одной программе,
убедимся, что они "Понимают" тип сообщения и что хэндлер который не принимает тип сообщения, пропускает сообщение дальше по коду.
КОД:
<<
import telebot
import config
bot = telebot.TeleBot(config.TOKEN)
@bot.message_handler(commands=['start'])
def welcome(message):
bot.send_message(message.chat.id, "Привет,{0.first_name}!".format(message.from_user, bot.get_me()))
@bot.message_handler(content_types=["text"])
def first(message):
bot.send_message(message.chat.id, "Текст.")
@bot.message_handler(content_types=["audio"])
def second(message):
bot.send_message(message.chat.id, "Аудио.")
@bot.message_handler(content_types=["video"])
def third(message):
bot.send_message(message.chat.id, "Видео.")
@bot.message_handler(content_types=["document"])
def fourth(message):
bot.send_message(message.chat.id, "Документ.")
bot.polling(none_stop=True)
>>
Тестирование в telegram
Для наглядности, думаю, понятно.
К сведению, если загрузить фотографию как картинку, то он её не обработает, т.к. у нас нет хэндлера "content_type=["photo"]", но добавить его очень просто.
Также если добавить фотографию как документ, то он её и примет как документ, а не как фото.
Полезная информация:
Хэндлер может принимать по типу несколько аргументов(максимум не проверял).
Это значит, что вы спокойно можете принимать одним хэндлером, к примеру, и текст и аудио.
Пример: content_type=["text","audio"].
P.s. сам лично проверял, всё так работает.
Все возможные типы content type: text, audio, document, photo, sticker, video, video_note, voice, location, contact, new_chat_members, left_chat_member, new_chat_title, new_chat_photo, delete_chat_photo, group_chat_created, supergroup_chat_created, channel_chat_created, migrate_to_chat_id, migrate_from_chat_id, pinned_message.
Так что их много.)
__________________________________________________________________________________________
-Спасибо, что дочитали данную статью до конца, она получилась совсем не длинной, Надеюсь, она была вам полезна. Также если что-то осталось не разобранным и непонятным - пишите в комментарии. Подписывайтесь, дальше будет ещё интереснее. и ждите уже совсем скоро продолжения по телеграм боту:)