Telethon使用iter_messages遍历频道时如何过滤机器人消息?
过滤Telethon频道消息中的机器人消息
你可以通过Message对象的sender属性来判断消息是否来自机器人——当sender是User类型时,它自带一个bot布尔字段,True表示是机器人,False则是普通用户。直接在遍历过程中加条件判断即可:
async def process_non_bot_messages(channel): async for message in client.iter_messages(channel): # 先确认消息发送者是用户账号,而非频道本身 if message.sender and isinstance(message.sender, User): if not message.sender.bot: # 这里处理非机器人发送的消息 print(f"非机器人消息:{message.text}")
注意点
- 部分消息的
sender可能为None,这类一般是频道自身发布的系统消息(比如频道名称变更通知),可根据需求决定是否保留 - 不需要使用额外的过滤器,直接在遍历逻辑里做判断就能实现过滤
内容的提问来源于stack exchange,提问作者apeman
相关产品推荐
相关产品推荐

