Объединение фильтров¶
Вы можете указывать в качестве аргументов обработчиков несколько фильтров и по умолчанию они будут объединены логическим "И"
# Ловит все сообщения из приватных чатов, в которых есть hi
@bot.message_handler(
filters.TextFilter("hi"),
filters.MessageFromConversationTypeFilter("from_pm")
)
def only_hi_in_text_from_pm(event: SimpleBotEvent):
event.ans("Привет!") # ...и отвечает на них
Так же можно использовать символы &
, |
или ~
между фильтрами в хендлере для "И", "ИЛИ", "НЕ" соответственно:
# Ловит все сообщения из приватных чатов или те в которых не встречается hi
@bot.message_handler(
~filters.TextFilter("hi")
| filters.MessageFromConversationTypeFilter("from_pm")
)
)
def not_hi_or_text_from_pm(event: SimpleBotEvent):
event.ans("Привет!") # ...и отвечает на них