【问题标题】:Telethon: Can I use two filters in iter_message?Telethon:我可以在 iter_message 中使用两个过滤器吗?
【发布时间】:2020-05-13 18:02:18
【问题描述】:

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

我尝试使用逻辑运算符和元组,但它们不起作用。

我读到我也可以使用 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 不支持这种东西。

标签: python bots telegram telethon


【解决方案1】:

据我所知,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 可以检查消息中包含的媒体是否是贴纸。

【讨论】:

    猜你喜欢
    • 2014-06-30
    • 1970-01-01
    • 2011-08-03
    • 1970-01-01
    • 1970-01-01
    • 2016-05-07
    • 1970-01-01
    • 2022-11-10
    • 1970-01-01
    相关资源
    最近更新 更多