【问题标题】:Discord bot not joining the voice channel i'm inDiscord bot 未加入我所在的语音频道
【发布时间】:2020-12-21 18:00:17
【问题描述】:

我正在尝试编写自己的音乐机器人,但它没有加入我所在的语音频道。 其他一切工作正常。我认为我应该使用 npm 安装一个特定的东西,但我不知道这是否正确,我不确定所以有人可以告诉我我应该怎么做才能解决这个问题...

这是我的代码:

    client.on('message', message => {

    let args = message.content.substring(prefix.length).split(" ");

    switch (args[0]) {
        case 'play':
            
            function play(connection, message) {
                var server = servers[message.guild.id];

                server.dispatcher = connection.playStream(ytdl(server.queue[0], {filter: "audioonly"}));

                server.queue.shift();

                server.dispatcher.on("end", function() {
                    if(server.queue[0]) {
                        play(connection, message);
                    } else {
                        connection.disconnect();
                    }
                });


            }
            
            
            if(!args[1]) {
                message.channel.send("You need to provide a link!");
                return;
            }

            if(!message.member.voiceChannel) {
                message.channel.send("You must be in a voice channel to use this command!");
                return;
            }

            if(!servers[message.guild.id]) servers[message.guild.id] = {
                queue: []
            }

            var server = servers[message.guild.id];

            server.queue.push(args[1]);

            if(!message.guild.voiceConnection) message.member.voice.channel.join().then(function(connection) {
                play(connection, message);
            })

        break;
    }

});

【问题讨论】:

    标签: javascript discord discord.js ytdl


    【解决方案1】:

    我认为您使用的是 discord.js 版本 12+,在此版本中,voiceConnection 属性已从 GuildMember 类中删除。

    您应该尝试以下方法 -

    message.member.voice.channel.join()
    

    【讨论】:

    • 还是没有加入
    • if(!message.guild.voice.connection) message.member.voice.channel.join().then(function(connection) {
    • 它在括号内的第一个连接上给我一个错误
    • 试试这个 - if(!message.guild.me.voice.channel)
    • 但是我会尝试你的新方法,这样我才能得到这个问题的答案
    【解决方案2】:

    我认为您定义 args 的行代码是错字, 您正在尝试使用 'substring' 方法定义 'args' 但这是一个错误,请尝试将其更改为 'slice' ,这应该可以解决您的问题。 除非您尝试了其他命令并且它们有效。

    尝试将其更改为该行代码:

    让 args = message.content.slice(prefix.length).split(" ");

    【讨论】:

      猜你喜欢
      • 2022-01-23
      • 2021-01-05
      • 2020-11-04
      • 2020-11-03
      • 1970-01-01
      • 2020-06-26
      • 2017-06-22
      • 2021-11-18
      • 1970-01-01
      相关资源
      最近更新 更多