我是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');
}
}
});
答案 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));
}
})