You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Pyrogram中判断Telegram消息是否已被对方查看?

Pyrogram存在对应的状态判断逻辑,相关属性没有直接挂载在Chat、Message单对象上,需要结合Dialog属性联动判断:

核心判断逻辑

  • 私聊场景下判断消息是否被对方查看:
    1. 调用get_dialog(chat_id)接口获取目标对话的Dialog对象
    2. 读取Dialog对象的read_outbox_max_id属性:该属性值为你发出的消息中,已被对方阅读的最大消息ID,所有ID小于等于该值的己方发出消息,都对应官方客户端的蓝色双对勾已读状态
    3. 对比目标消息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,提问作者Богдан Туренко

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 05:36:03