使用python-telegram-bot的get_chat_member方法报错“User not found”求助
问题原因及解决方法
核心错误点
- 传错了用户ID:你代码里的
update.effective_chat.id是当前交互场景的聊天ID(比如在群组里触发指令时,这个ID是群组ID而非你的个人用户ID)。把群组ID传给get_chat_member查询频道成员,必然会提示“User not found”。正确的个人用户ID应该取update.effective_user.id。 - Bot权限不足:确保你的Bot已被添加到目标频道,且拥有
查看成员的权限——即使你是频道管理员,Bot本身需要独立配置权限。 - 频道用户名错误:检查
@Numbew拼写是否完全匹配频道实际用户名,避免字母多打/少打。
修正后的代码
# 获取当前用户的个人ID,而非聊天对象ID user_id = update.effective_user.id print(user_id) channel_username = "@Numbew" try: member = await context.bot.get_chat_member(channel_username, user_id) print(f"成员状态:{member.status}") except telegram.error.BadRequest as e: print(f"错误:{e}")
替代方法
如果仅需验证自己是否为频道管理员,可使用get_chat_administrators接口遍历确认:
channel_username = "@Numbew" user_id = update.effective_user.id administrators = await context.bot.get_chat_administrators(channel_username) is_admin = any(admin.user.id == user_id for admin in administrators) print(f"是否为管理员:{is_admin}")
内容的提问来源于stack exchange,提问作者Behnam Alamshahi
相关产品推荐
相关产品推荐

