【问题标题】:voiceChannel undefenition语音信道不防御
【发布时间】:2018-06-28 06:08:35
【问题描述】:

所以我开始了我的不和谐机器人的音乐部分。现在,就像我在上一个问题中所做的那样,这里是音乐命令的 sn-p:Pastebin #1

在显示if (msg.member.voiceConnection === undefined) return msg.channel.sendMessage(wrap(':x: You\'re not in a voice channel.')); 的那一行,控制台:Pastebin #2

另一个未定义的错误。我对这里未定义的内容感到困惑。我搜索了 discord.js.org 文档无济于事。 (discord.js 官方的不和谐也没有多大帮助。)我总是对未定义的错误感到困惑。

我也尝试过使用if (guild.member.voiceConnection),但出现同样的错误。

我只是看不出什么是未定义的,也许我还没有喝过咖啡,而且我错过了一些非常明显的东西,但感谢任何帮助。

【问题讨论】:

    标签: javascript node.js discord discord.js


    【解决方案1】:

    未定义意味着它根本没有价值,因此是未知的。您可以将其与包含 5 个项目的数组进行比较,然后尝试获取索引 7。因此 undefined 不知道。

    要查找用户的 voiceChannel,您不需要使用 .voiceConnection,但需要 .voiceChannel。如果您在语音频道中,这将是未定义的。否则它将为您提供频道信息:)

    编辑:但除了我现在看到的,还有更多错误。您使用了 msg.member 但 msg 只是一个包含消息内容的字符串。您需要消息事件中的消息对象来检查 .member.voiceChannel 而不是消息的内容

    【讨论】:

    • ooOOOO 哦,我现在明白了,我以前没有意识到这一点,非常感谢!
    【解决方案2】:

    您使用的许多方法都已被贬低,所以让我先介绍一下。

    if (msg.member.voiceConnection === undefined) 
         return msg.channel.sendMessage(wrap(':x: You\'re not in a voice channel.'));
    

    首先,msg.channel.sendMessage 应该是message.channel.send。接下来,msg.member.voiceConnection 应该是 msg.member.voiceChannel。 您可以查看docs

    所以在所有这些更改之后,我们有:

    if (msg.member.voiceChannel === undefined) 
         return msg.channel.send(wrap(':x: You\'re not in a voice channel.'));
    

    【讨论】:

    • 我确实看到了这里出了什么问题,非常感谢您的帮助,而且我看到msg 是消息内容,这在获取语音频道时没有帮助。我已经把它修好了,谢谢你的帮助:)
    • 没问题,编码愉快
    猜你喜欢
    • 2018-09-25
    • 2021-11-10
    • 1970-01-01
    • 2020-09-24
    • 2013-06-05
    • 2020-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多