下面是我的命令代码:
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()