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

discord.py在服务器内运行时ctx.message.guild返回None如何修复?

问题根因
  • 该报错由Discord机器人的网关意图配置缺失导致。从discord.py 1.5版本开始,官方默认关闭了服务器相关的特权网关意图,未开启对应权限的情况下,机器人无法在上下文对象中获取到服务器实例,ctx.message.guild就会返回None,调用id属性就会触发属性不存在的报错。
  • 排除场景:确认命令是在服务器的公开/私有频道内触发,私聊机器人的场景下ctx.message.guild本身就会返回None,属于正常逻辑。
修复步骤
  • 打开Discord开发者平台,进入对应机器人的设置页,找到「Privileged Gateway Intents」模块,开启Guilds Intent开关,如果需要用到成员相关能力还可以同步开启Server Members Intent。
  • 调整机器人初始化代码,显式声明你需要用到的网关意图,示例代码如下:
import discord
from discord.ext import commands

# 初始化意图配置
intents = discord.Intents.default()
intents.guilds = True
# 如果你的机器人用的是前缀触发命令,discord.py 2.0及以上版本需要额外开启消息内容意图
intents.message_content = True

# 实例化机器人时传入意图参数
bot = commands.Bot(command_prefix='你设置的命令前缀', intents=intents)
  • 保存修改后重启机器人,在服务器内重新触发命令即可正常获取到服务器ID。

内容的提问来源于stack exchange,提问作者real trappa

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 12:54:03