Discord.JS - 使用角色将 Discord 中的用户移动到您的 VC

问题描述

我正在尝试从具有特定角色的 VC 中转移所有用户,例如:!summon @role

这样,所有具有该特定角色的用户都应该进入用户键入该命令的 VC

目前我的代码是这样的:

else if (command === 'summon') {
                    const channel = message.member.voice.channel;
                    message.guild.members.cache.forEach(member => {
                        member.voice.setChannel(channel);
                    });
                    message.channel.send(`${message.author} users moved to your channel!`);
                }

目前我正在移动所有用户,但我只想要具有知情角色的用户

我尝试使用:

                    message.mentions.roles.forEach(member => {
                        member.setChannel(channel);
                    });

但是没有成功……有人可以帮我解决这个问题吗?

解决方法

您可以尝试更换

message.guild.members.cache.forEach(member => {
    member.voice.setChannel(channel);
});

message.guild.members.cache.forEach(member => {
    if(member.roles.cache.has(message.mentions.roles.first()) {
        member.voice.setChannel(channel);
    }
}

因为 member.roles.cache 是一个 Collection,所以它有一个函数 .has。我们使用 message.mentions.roles.first() 从消息中获取第一个角色提及,并使用 member.roles.cache.has() 检查它是否存在于用户的当前角色中。如果用户确实具有消息中提到的第一个角色,则该函数返回 true,我们可以将其移动到指定的频道。希望这会有所帮助,不要忘记 https://discord.js.org/#/docs 的一些文档,它非常有用?。