在语音频道中随机化用户 (discord.js v12)

Randomize Users in a Voice Channel (discord.js v12)

我正在尝试将用户随机分为两个团队,团队 1 和团队 2。但是,在某些情况下,它会在两个团队中重复相同的用户。

例如:

Team 1: User 1

Team 2: User 1

有没有办法在一个团队中不向同一个用户展示两次或只展示一次。

try {
 
let users = message.member.voice.channel.members.map(member => `<@${member.user.id}>`)
                       
                        let team1 = users.sort(() => Math.random() - 0.5).slice(0, Math.floor(users.length / 2))
                        let team2 = users.sort(() => Math.random() - 0.5).slice(Math.floor(users.length / 2))
    
                        
                        const embed = new MessageEmbed()
                            .setTitle("Teams Created")
                            .setDescription(`Team 1: ${team1.join(', ')}\nTeam 2: ${team2.join(', ')}`)
                            .setColor("#36393E")
                            .setTimestamp()
                 
                        message.channel.send(embed)
                       
    
    
                    } catch (error) {
                        console.log(error)
                        const errorembed = new MessageEmbed()
                            .setTitle("⚙️ Error")
                            .setDescription(`An error has occured. Please try again`)
                            .setColor("#36393E")
                            .setFooter("If this error has occured multiple times, please contact the developer.")
                            .setTimestamp()
                        await message.channel.send("There was an error. Please try again.")
                    }

一旦你填满了team1,你不应该再users.sort(),因为一旦定义了第一个团队,第二个也被定义了。如果你再次排序,你就给了它发生的机会。您只需将不在 team1 中的用户放入 team2。

let team2=users.filter(!(user=> team1.includes(user)));

我现在不知道这条线是否正确,但应该是这样的。