Как заменить это на конструкцию if-else

Во многих гайдах по созданию telegram-ботов на python есть такая конструкция: @bot.message_handler(content_types = ["text"]) def... Я бы хотел сделать это через if-else, но в документации по pyTelegramBotApi никакого message_handler не нашёл, и других альтернатив определения типа содержимого сообщения тоже не нашёл, да и, вообще, методы в документации какие-то странные: не совпадают с тем, что приходится использовать. Например, в документации sendMessage, но компилятор говорит, что его не существует, работает только send_message, который в документации не присутствует. У меня, конечно, есть свои догадки по этому поводу, но хотелось бы знать точно). Пожалуйста, объясните мне момент с if-else и расскажите, что не так я понимаю в документации.


Ответы (2 шт):

Автор решения: Vasily Esipenko
@bot.message_handler - это декоратор (функция, которая обертывает другую функцию)

Ниже после этого декоратора можно добавить функцию, которая будет содержать дополнительные условия. Например:

@bot.message_handler(content_types=["text"])
def text_handler(message):
    if message.text == "Привет!":
        bot.send_message(message.chat.id, "Добрый день!")
    else:
        bot.send_message(message.chat.id, "Я вас не понимаю...")
→ Ссылка
Автор решения: Vasily Esipenko

Вот способ обработки сообщений без использования декораторов:

import telebot

bot = telebot.TeleBot(token)

upd = bot.get_updates()
last_upd = upd[-1]
print(last_upd)
last_msg = last_upd.message
print(last_msg)

if last_msg.text == "Hi":
    bot.send_message(last_msg.chat.id, "Hello, how are you?")

bot.polling()

Здесь используется метод .get_updates(), с помощью него можно узнать последние обновления (last_upd). Из последнего обновления получаем сообщение от пользователя last_upd.message (там содержится информация о пользователе, дата отправки, сам текст сообщения и тд.) Далее информацию из объекта last_msg (last_upd.message) можно использовать, как в примере выше. (единственная проблема, ответ на сообщение отправляется один раз, видимо, бот отключается и его надо каждый раз обновлять)

→ Ссылка