Telethon: фильтрация событий по типу чатов, из которых они приходят - PullRequest
1 голос
/ 29 марта 2020

Я хочу отфильтровать events.newMessage, чтобы срабатывать только тогда, когда сообщения приходят из частных чатов. но я не хочу помещать все идентификаторы чата в список чатов в качестве аргумента события

У вас есть идеи?

@client.on(events.NewMessage)
async def my_event_handler(event):
    if 'hello' in event.raw_text:
        await client.delete_messages(await event.get_chat(), event.id)

в приведенном выше примере вы думаете, что хотите удалить все сообщения из частных чатов (каждый из них)

1 Ответ

3 голосов
/ 29 марта 2020

NewMessage события реализуют класс ChatGetter , поэтому вы можете использовать следующее:

event.is_private → Пользователь

event.is_group → Чат и канал (мегагруппа) флаг установлен)

event.is_channel → Канал

Также для более полного ответа

any private = is_private
any group = is_group
any channel = is_channel
only small groups = is_group and not is_channel
only mega groups = is_group and is_channel
only broadcast channels = not is_group and is_channel
...