Telethon:我可以在 iter_message 中使用两个过滤器吗?

Telethon: Can I use two filters in iter_message?

你好,我想制作一个机器人,它可以从忽略贴纸或短信的聊天中下载所有媒体。问题是我一次只能使用一个过滤器。

我尝试使用逻辑运算符和元组,但它们没有用。

我读到我也可以使用 type() 函数代替电视节目的过滤器,但我不明白如何使用。有人可以帮助我吗?

这些是我的尝试:

python
    async for message in client.iter_messages(chat,
         reverse=True, filter=InputMessagesFilterDocument and InputMessagesFilterMusic):
async for message in client.iter_messages(chat,
         reverse=True, filter=InputMessagesFilterDocument or InputMessagesFilterMusic):


async for message in client.iter_messages(chat,
             reverse=True, filter=(InputMessagesFilterDocument, InputMessagesFilterMusic)):

据我所知,Telegram 不允许对API请求进行多重过滤,因此您需要在收到信息。为此,您可以使用以下代码。

async for message in client.iter_messages(chat):
      if message.media and not message.sticker:
        #do your things

这样 message.media 您可以检查邮件是否包含任何媒体,而 not message.sticker 您可以检查邮件中包含的媒体是否是贴纸。