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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 09:02:39