(discord.js)如何从公会中挑选两个不同的用户



下面是我的命令代码:

module.exports = {
name: 'test1',
cooldown: '30',
description: 'NaN',
execute(message) {
message.delete({ timeout: 10 });
const ranUser1 = message.guild.members.cache.random().user;
const ranUser2 = message.guild.members.cache.random().user;
const max = 100;
const number = Math.floor(Math.random() * max) + 1;
message.channel.send(`${ranUser1} ${ranUser2} ${number}%.`);
console.log('nExecuted command: !test');
},
};

我想做的是,当变量ranUser1等于ranUser2时;重新滚动";ranUser1,然后发送带有更改后的变量的消息。我想重新滚动这个变量,直到它不等于ranUser2。预期的结果是确保选择两个不同的用户,而不是两次选择同一个用户。

while循环应该可以工作。它将不断选择一个随机用户,直到它与第二个用户不一样。您必须将ranUser1改为let而不是const,因为您需要更改它。

module.exports = {
name: 'test1',
cooldown: '30',
description: 'NaN',
execute(message) {
message.delete({ timeout: 10 });
let ranUser1 = message.guild.members.cache.random().user; // Converted to var so it can be changed
const ranUser2 = message.guild.members.cache.random().user;
while (ranUser1.id === ranUser2.id) {
ranUser1 = message.guild.members.cache.random().user;
}
const max = 100;
const number = Math.floor(Math.random() * max) + 1;
message.channel.send(`${ranUser1} ${ranUser2} ${number}%.`);
console.log('nExecuted command: !test');
},
};

所以我不是discord.js的完全专家,但我想我知道这样做的方法:

module.exports = {
name: 'test1',
cooldown: '30',
description: 'NaN',
execute(message) {
message.delete({ timeout: 10 });

function roll() {
var ranUser1 = message.guild.members.cache.random().user; // constants aren't ideal if you want to be able to change them later
var ranUser2 = message.guild.members.cache.random().user;
if (ranUser1==ranUser2) { // you can do === for better accuracy
roll()
};
};
roll();
const max = 100;
const number = Math.floor(Math.random() * max) + 1;
message.channel.send(`${ranUser1} ${ranUser2} ${number}%.`);
console.log('nExecuted command: !test');
},

不是最擅长使代码美观的,但这应该做到。

一个快速函数,它将重新滚动变量,直到变量不相等:

var ranUser1;
var ranUser2;
function check() {
ranUser1 = message.guild.members.cache.random().user;
ranUser2 = message.guild.members.cache.random().user;
if (ranUser1 === ranUser2) return check()
const max = 100;
const number = Math.floor(Math.random() * max) + 1;
message.channel.send(`${ranUser1} ${ranUser2} ${number}%.`);
console.log('nExecuted command: !test');
}

这样,如果它们相同,它将尝试选择两个不同的用户,直到得到不同的用户。

下面是一个使用随机数的例子来展示它的作用:

var ranUser1;
var ranUser2;
function check() {
ranUser1 = Math.floor(Math.random() * (3 - 1 + 1)) + 1
ranUser2 = Math.floor(Math.random() * (3 - 1 + 1)) + 1
if (ranUser1 === ranUser2) return check()
const max = 100;
const number = Math.floor(Math.random() * max) + 1;
console.log(`${ranUser1} ${ranUser2} ${number}%.`);
console.log('nExecuted command: !test');
}
check()

最新更新