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

discord.py使用on_message无法获取新消息,非管理员服务器如何解决?

解决Discord机器人在无管理员权限服务器中获取新消息的问题

核心问题拆解

你遇到的情况分为两部分:无管理员权限无法添加机器人到服务器,以及添加后确保机器人能获取消息内容,以下是具体解决步骤:


1. 让服务器管理员协助添加机器人

你自己没有目标服务器的管理员权限时,必须联系该服务器拥有「管理服务器」权限的成员,让他们完成机器人的添加操作:

  • 在Discord开发者门户的OAuth2 URL Generator页面,生成正确的授权链接:
    • 勾选Scopes里的bot(如果需要用斜杠命令,可额外勾选applications.commands)
    • 在Bot Permissions中,只勾选必要权限:
      • 查看频道:确保机器人能看到目标频道
      • 读取消息历史:可选,但建议勾选以兼容历史消息读取需求
      • 不要勾选「管理员」这类高权限,降低管理员的授权顾虑
  • 把生成的链接发给服务器管理员,让他们访问链接并完成机器人的授权加入。

2. 确保机器人的意图和权限配置正确

机器人成功加入服务器后,还要确认以下配置,否则无法正常获取消息:

  • 开发者门户配置:进入Bot页面,找到「Privileged Gateway Intents」,开启Message Content Intent(仅代码中设置intents不生效,必须在门户开启)
  • 服务器频道权限:让管理员在目标频道的权限设置中,给机器人分配「查看频道」和「读取消息历史」权限;如果是私有频道,还要确保机器人被添加到频道的权限列表中
  • 代码验证:你当前的intents设置是正确的,保留即可:
    intents = discord.Intents.default()
    intents.messages = True
    intents.message_content = True
    

3. 验证机器人运行状态

机器人加入服务器后,重启代码:

  • 控制台打印Logged in as {机器人账号}后,在目标频道发送消息,检查控制台是否能输出消息内容和频道信息
  • 如果仍无反应,让管理员检查机器人的角色权限是否被频道的权限设置覆盖(比如频道设置了拒绝机器人查看)

内容的提问来源于stack exchange,提问作者祝靖雲

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 09:13:28