Telethon edit_admin方法在非频道所有者身份下无法正常工作问题求助
解决Telegram管理员编辑权限代码失效的问题
这问题我之前帮朋友排查过类似的,核心原因大概率是Telegram API的底层权限限制,或者你用的Telegram库(比如Pyrogram)的权限校验逻辑调整了。咱们一步步拆解:
关键原因:Telegram的权限门槛
你可能不知道,Telegram对「修改其他管理员权限」这个操作有严格要求:只有频道所有者,或者拥有**「添加新管理员」权限**的管理员,才能执行这个操作——哪怕你只是修改对方的「编辑消息」「删除消息」这类权限,也必须满足这个前提。
之前代码正常运行,可能是当时你的管理员账号确实拥有「添加新管理员」权限,后来不小心被取消了;或者你用的库之前对这个权限的校验不够严格,最近更新后补了校验逻辑。
具体解决方案
1. 先手动确认管理员权限
先去你的频道后台,找到当前操作的管理员账号,检查它的权限列表里是否有**「添加新管理员」**这一项:
- 哪怕你选了「全部权限」,有时候可能因为频道设置bug或者误操作,导致这个权限被隐性取消了;
- 如果没有,手动勾选这个权限,再重新运行代码试试。
2. 代码里先校验自身权限
可以在执行edit_admin之前,先检查当前账号的权限,避免无意义的报错,示例代码(以Pyrogram为例):
# 获取当前账号在目标频道的权限信息 current_member = await client.get_chat_member(chat_id=chat, user_id="me") # 检查是否拥有添加管理员的权限 if current_member.privileges.can_add_admins: # 执行编辑管理员权限的操作 await client.edit_admin( chat=chat, admin=admin, post_messages=None, add_admins=False, change_info=True, delete_messages=True, edit_messages=True ) else: print("错误:当前账号没有「添加新管理员」权限,无法修改其他管理员的权限")
3. 检查库版本并调整
如果你最近更新了所用的Telegram库(比如Pyrogram),可能新版本对权限的校验更严格了:
- 可以尝试回滚到之前正常运行的版本,比如:
pip install pyrogram==2.0.106 # 替换成你之前能用的版本号 - 也可以去库的官方文档/更新日志看看,确认
edit_admin方法是否有参数或权限逻辑的变动。
4. 用Telegram原生API测试
如果还是搞不定,可以直接用Telegram Bot API的promoteChatMember接口手动测试,看返回的错误信息:
- 比如用curl调用(替换成你的bot token、频道ID、目标管理员ID):
curl -X POST https://api.telegram.org/bot<你的BotToken>/promoteChatMember \ -d chat_id=<频道ID> \ -d user_id=<目标管理员ID> \ -d can_change_info=true \ -d can_delete_messages=true \ -d can_edit_messages=true - 如果返回
403 Forbidden,错误信息会明确告诉你是权限不足,这就坐实了是权限问题。
总结
本质上这不是代码的bug,而是Telegram的底层规则:修改其他管理员权限的操作,必须由所有者或拥有「添加管理员」权限的账号执行。只要确保你的操作账号满足这个前提,代码就能恢复正常。
内容的提问来源于stack exchange,提问作者Mohammad Sh
相关产品推荐
相关产品推荐

