Discord bot 未加入我所在的语音频道

Posted

技术标签:

【中文标题】Discord bot 未加入我所在的语音频道【英文标题】:Discord bot not joining the voice channel i'm in 【发布时间】: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;
    

);

【问题讨论】:

【参考方案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(" ");

【讨论】:

以上是关于Discord bot 未加入我所在的语音频道的主要内容,如果未能解决你的问题,请参考以下文章

Discord 机器人未加入语音频道

如何使用 Discord.py Cogs 使 Discord Bot 加入语音频道并在成员加入频道时播放音频文件

Discord Bot (C#) 问题加入语音频道

Discord.js 在文本频道中加入/离开语音频道通知

从 twitch bot 调用 Discord.js 音乐问题找到语音频道

使用 Discord.js 使用 Discord Bot 将语音频道中的所有人静音