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

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

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

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

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

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

【问题讨论】:

    标签: javascript discord discord.js


    【解决方案1】:

    根据the discord.js documentationbot.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 确实起作用了,我不知道为什么我没有早点意识到这一点。非常感谢修复!
    • 没问题!希望您在继续使用该机器人时玩得开心。
    猜你喜欢
    • 2021-04-06
    • 2020-12-24
    • 2021-12-04
    • 2021-10-06
    • 2021-05-30
    • 2017-07-03
    • 2021-06-25
    • 2020-08-25
    • 2020-08-07
    相关资源
    最近更新 更多