Discord.js:如果用户输入特定的字符串,如何将用户从任何语音通道移至特定的语音通道?

时间:2020-11-06 10:58:00

标签: javascript discord.js

我是discord.js的新手,我检查了他们的文档,但似乎找不到这个问题的任何答案。到目前为止,这是我的代码,应该执行的操作是检查每条消息,查看消息是否来自漫游器,检查是否输入了密码,然后删除密码并将其移至另一个语音通道。

我遇到的错误是:UnhandledPromiseRejectionWarning:错误[GUILD_VOICE_CHANNEL_RESOLVE]:无法将通道解析为行会语音通道。有人可以帮忙吗?谢谢!

client.on('message', message => {
    if (message.author.bot === false) {
        if (message.content == 'password') {
            message.delete();
            message.guild.member(message.author.id).voice.setChannel('The Grind 3');
        }
    }
});

2 个答案:

答案 0 :(得分:0)

我不知道您使用的是哪个版本,而不是setChannel('The Grind 3') 您应该setChannel('channel id')可以setting>Appearance>turn on Developer Mode获得,然后右键单击指定的频道并复制ID并粘贴,而不是 “ The Grind 3”,这应该做:)

答案 1 :(得分:0)

这很容易做到。

首先,您需要找到要使用的频道。

const VCchannel = message.guild.channels.cache.find(channel => channel.name === 'The Grind 3');

现在,您可以设置将成员发送到该语音频道。 注意:我们在这里捕获了错误,以便在出现问题时可以进行处理。

message.member.voice.setChannel(VCchannel).catch(err => console.log(err));

请记住,这仅在使用此命令的成员已经在语音通道中时有效,因为漫游器无法强迫某人进入语音通道。

注意:您可能要考虑检查该成员是否为机器人,然后返回true。这样做的好处是您不需要将整个代码放在if语句中。

if (message.author.bot) return;

您整个onMessage事件应该看起来像这样。

client.on('message', message => {
    if (message.author.bot) return;

    if (message.content == 'password') {
        message.delete();
        const VCchannel = message.guild.channels.cache.find(channel => channel.name === 'The Grind 3');
        message.member.voice.setChannel(VCchannel).catch(err => console.log(err));
    }
})