Pyrogram中ChatMember.Status判断失效问题求助
问题分析
你遇到的核心问题是把枚举类型当成字符串来做比较,导致判断条件永远不成立。
Pyrogram中的ChatMemberStatus是一个枚举类,chat_member_info.status返回的是该枚举的实例(比如ChatMemberStatus.OWNER),而不是字符串"ChatMemberStatus.OWNER"。你用字符串去和枚举实例对比,结果必然是False,所以每次都会执行Do B分支。
解决方案
- 确保你已经导入了
ChatMemberStatus枚举:
from pyrogram.enums import ChatMemberStatus
- 修改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
相关产品推荐
相关产品推荐

