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');

        }

    }

});


Cats萌萌
浏览 123回答 2
2回答

肥皂起泡泡

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

慕妹3146593

这很容易做到。首先,您需要找到您要使用的频道。const VCchannel = message.guild.channels.cache.find(channel => channel.name === 'The Grind 3');现在您可以设置将成员发送到该语音通道。注意:我们在这里捕获错误,以便在出现问题时可以进行处理。message.member.voice.setChannel(VCchannel).catch(err => console.log(err));请记住,只有当使用此命令的成员已经在语音频道中时,这才有效,因为机器人无法强制某人进入语音频道。注意:您可能需要考虑检查该成员是否是机器人,如果是则返回。这样做的优点是您不需要将整个代码放入语句中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));    }})
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript