Сложное условие в message_handler
хочу сделать сложное условие в декораторе message_handler для бота тг
библиотека pyTelegramBotAPI, подскажите, пожалуйста, как можно это реализовать.
Нужно, чтобы функция рекомендации срабатывала при нажатии любой из 4 предложенных ранее кнопок
@bot.message_handler(chat_types=["private"], func=lambda msg: msg.text == 'Читал, классная'| 'Читал, не очень'| 'Не читал, но хочу'| 'Не читал, не хочу'| 'Подробнее о книге')
def if_sp(message: types.Message):
markup = ReplyKeyboardMarkup(resize_keyboard=True, one_time_keyboard=True)
markup.row('Читал, классная', 'Читал, не очень', 'Не читал, но хочу', 'Не читал, не хочу', 'Подробнее о книге')
sarkup = types.InlineKeyboardMarkup()
sarkup.add(types.InlineKeyboardButton("796,00₽",url="ссылка"))
china = open('492fbb33-82d6-45b3-a1aa-0e1351962523_9cf6529d-66e9-4c67-849b-a1b2a641c60b.webp', 'rb')
bot.send_photo(message.chat.id, china, caption=f'Китай и окрестности. Мифология, фольклор, литература')
bot.send_message(message.chat.id, 'Купить', reply_markup=sarkup)
bot.send_message(message.chat.id, 'Оцените книгу', reply_markup=markup)
Ответы (2 шт):
Автор решения: Aleksandr Fetisov
→ Ссылка
Можно попробовать решить таким способом
@bot.message_handler(chat_types=["private"], func=lambda msg: any([
msg.text == 'Читал, классная',
msg.text == 'Читал, не очень',
msg.text == 'Не читал, но хочу',
msg.text == 'Не читал, не хочу',
msg.text == 'Подробнее о книге'
]))
def if_sp(message: types.Message):
# Ваш код здесь
Автор решения: mironovmeow
→ Ссылка
Можно добавить проверку сообщения в множестве.
@bot.message_handler(chat_types=["private"], func=lambda msg: msg.text in {
'Читал, классная',
'Читал, не очень',
'Не читал, но хочу',
'Не читал, не хочу',
'Подробнее о книге'
})
def if_sp(message: types.Message):
...