Discord.py Cog中ctx.guild.id无法使用,如何修复该错误?
Discord.py Cogs 命令访问ctx.guild.id报错修复方案
问题根源
你的代码存在几处语法与逻辑错误,导致程序误把Cog实例当成了ctx对象,才会触发“cog类没有guild属性”的报错:
- 类定义拼写错误:
Class需改为小写class,commands.cog要大写为commands.Cog - 类方法缺少
self参数:命令方法是Cog类的成员方法,第一个参数必须是self,你遗漏后,ctx被错误绑定到了Cog实例本身 - 异步方法未加
await:ctx.send()是异步操作,必须用await调用 - 使用了中文引号:代码里的“testcommand”要替换为英文双引号
""
修正后的代码
class cogname(commands.Cog): @commands.hybrid_command(name="testcommand") async def testcommand(self, ctx): await ctx.send(data[ctx.guild.id])
额外注意事项
- 确保
data变量在Cog类的作用域内可访问,如果data是全局变量或来自其他模块,要保证正确导入或引用 - 对于hybrid命令,记得在机器人启动时同步命令树(比如执行
await bot.tree.sync()),否则服务器内可能无法看到该命令
内容的提问来源于stack exchange,提问作者Eddie Reasoner
相关产品推荐
相关产品推荐

