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

Pyrogram中ChatMember.Status判断失效问题求助

问题分析

你遇到的核心问题是把枚举类型当成字符串来做比较,导致判断条件永远不成立。

Pyrogram中的ChatMemberStatus是一个枚举类,chat_member_info.status返回的是该枚举的实例(比如ChatMemberStatus.OWNER),而不是字符串"ChatMemberStatus.OWNER"。你用字符串去和枚举实例对比,结果必然是False,所以每次都会执行Do B分支。

解决方案
  1. 确保你已经导入了ChatMemberStatus枚举:
from pyrogram.enums import ChatMemberStatus
  1. 修改if判断条件,直接使用枚举值进行比较,而不是字符串:

修正后的代码:

@app.on_message(filters.chat(TARGET) & filters.command("start"))
async def start(client, message):
    # Check if the sender is the owner or admin of the chat
    chat_member_info = await client.get_chat_member(TARGET, message.from_user.id)    
    chat_member_info_status = chat_member_info.status
    # checkpoint 1
    await message.reply_text(f'You are {chat_member_info_status}')
    if chat_member_info_status == ChatMemberStatus.OWNER or chat_member_info_status == ChatMemberStatus.ADMINISTRATOR:
        # Do A
        pass  # 替换为你的实际逻辑
    else:
        # Do B
        pass  # 替换为你的实际逻辑
补充说明

当你打印chat_member_info_status时,它的字符串表现形式是"ChatMemberStatus.OWNER",但这只是它的字符串表示,实际类型是枚举实例。直接用枚举值对比才是正确的方式,这样就能正确识别群主和管理员身份,执行对应的Do A分支。

内容的提问来源于stack exchange,提问作者Zhdan Bybin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 10:02:32