Discord.js - 公会 ID 未定义,即使有定义

Posted

技术标签:

【中文标题】Discord.js - 公会 ID 未定义,即使有定义【英文标题】:Discord.js - Guild ID is undefined even though definition is there 【发布时间】:2018-06-24 16:27:31 【问题描述】:

制作一个不和谐的机器人。一切正常,除了-!prefix 的一个命令。 -! 是前缀,命令采用 args 并更改服务器的前缀。

在详细介绍这件事之前,这是机器人的代码,也许我只是在 consts 中做错了什么:Hastebin Link

这里的错误在第52行,根据控制台:Console Log

我对如何处理“未定义”感到困惑。我尝试使用 message.guild.id 属性作为变量,以及代码中显示的变量。我试过把它移到多个地方,虽然它唯一注册的地方是前缀命令的内部(由于这个错误,它目前被破坏了。)

任何人有任何修复?我不是整个 javascript 方面的专家,因为我是从 Python 和普通 Java 过来的。

【问题讨论】:

【参考方案1】:

根据the discord.js documentation,bot.guilds 由每个公会的 ID 索引。 message.authorUser 对象,而不是公会 ID。您不能将 User 对象放入 bot.guilds.get 并期望它工作;它只接受公会ID。

要获取发送消息的服务器,只需执行message.guild

【讨论】:

是的,我现在意识到,经过深思熟虑以及其他答案,感谢您的帮助,非常感谢。【参考方案2】:

您在line 52 的代码目前是:

var server = bot.guilds.get(message.author).id

您当前将User 对象传递给.get(),它应该会收到id or snowflake

考虑到这一点,您的代码应如下所示:

var server = bot.guilds.get(message.guild.id).id;

但是,这有点过分,因为您可以简单地将其缩短为:

var server = message.guild.id;

现在你说你已经

尝试使用message.guild.id 属性作为变量,也是代码中显示的那个。

我不确定你的意思是不是我刚才的建议,但如果是,请通知我。

【讨论】:

感谢您的回答,是的,我同时使用了 message.guild.id 和当前属性,但出现了相同的错误。但似乎var server = bot.guilds.get(message.guild.id).id 确实起作用了,我不知道为什么我没有早点意识到这一点。非常感谢修复! 没问题!希望您在继续使用该机器人时玩得开心。

以上是关于Discord.js - 公会 ID 未定义,即使有定义的主要内容,如果未能解决你的问题,请参考以下文章

如何获取大型公会 discord.js 的所有成员

Discord.js 让所有成员陷入公会问题

Discord.js票务系统错误发送未定义错误

Discord.js 机器人离开公会

如何在 discord.js v12 中列出所有公会成员

discord.js 没有发送到自定义频道