如何在Pyrogram中判断Telegram消息是否已被对方查看?
Pyrogram存在对应的状态判断逻辑,相关属性没有直接挂载在Chat、Message单对象上,需要结合Dialog属性联动判断:
核心判断逻辑
- 私聊场景下判断消息是否被对方查看:
- 调用
get_dialog(chat_id)接口获取目标对话的Dialog对象 - 读取
Dialog对象的read_outbox_max_id属性:该属性值为你发出的消息中,已被对方阅读的最大消息ID,所有ID小于等于该值的己方发出消息,都对应官方客户端的蓝色双对勾已读状态 - 对比目标消息ID和上述属性值即可得出结果,示例判断代码:
from pyrogram import Client app = Client("my_account") async def is_message_read(chat_id: int, message_id: int) -> bool: dialog = await app.get_dialog(chat_id) target_msg = await app.get_messages(chat_id, message_id) # 仅判断己方发出的消息的对方已读状态 if target_msg.out: return message_id <= dialog.read_outbox_max_id return False - 调用
- 群聊/频道场景下,判断消息是否被查看可以直接读取
Message对象的views属性,数值大于0即代表消息已被至少一名成员查看。
注意:
read_outbox_max_id、read_inbox_max_id属性仅在Pyrogram 2.0及以上版本提供,1.x旧版本需要先升级库版本才可使用。
内容的提问来源于stack exchange,提问作者Богдан Туренко
相关产品推荐
相关产品推荐

