Telegram Бот не обрабатывает второй Handler
Бот обрабатывает 1-ый Handler на сообщение, но на второй просто не реагирует, в консоли логов никаких нет, подскажите, в чём проблема? код: https://pastebin.com/sveT081h
Ответы (1 шт):
Код так работает потому, что так устроен telebot, когда он нашел первый подходящий message_handler, он его выполняет и на этом успокаивается. Если порыться в исходниках, можно в этом убедиться.
Можно все решить двумя способами. Объединить обработчики в один и в if проверять содержание сообщение и исполнять нужный код. Но можно и по-другому.
В readme в репозитории на гитхабе, который скинул - там упомянуто, что декоратор message_handler может принимать параметр `func, туда передается функция, принимающая аргумент message, а возвращающая True/False.
В таком случае можно проверять условие срабатывания прямо в декораторе.
@bot.message_handler(content_types=['text'], func=lambda message: message.text.lower() == "проверить подписку")
def check(message):
for chri in statuses:
# ...
@bot.message_handler(content_types=['text'], func=lambda message: message.text.lower() == "получить ключ")
def key(message):
# ...
Должно сработать.