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.author
是 User
对象,而不是公会 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 未定义,即使有定义的主要内容,如果未能解决你的问题,请参考以下文章