在语音频道中随机化用户 (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)));
我现在不知道这条线是否正确,但应该是这样的。
我正在尝试将用户随机分为两个团队,团队 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)));
我现在不知道这条线是否正确,但应该是这样的。