因此,当用户键入“!biscuit”之类的东西时,机器人会从数组中选择一个随机字符串(并且该数组具有“您可以吃饼干”和“您不能吃饼干”之类的东西),我是否想要机器人发送“您可以吃饼干”之类的消息来向该用户添加特定角色。我已经做了一切,我只是不知道如何检查机器人选择了什么,因此可以向用户添加角色。
答案 0 :(得分:1)
您可以有一个包含所有可能结果的简单数组(例如const responses = ["you can eat biscuits", "you cant eat biscuits"]
。
然后,使用Math.random()
函数获取0到<1之间的随机数。(https://www.whateveriwant.com)
let randomNumber = Math.floor(Math.random() * Math.floor(responses.length))
// this will return a number between 0 and the length of 'responses'
“ Math.floor()
函数返回小于或等于给定数字的最大整数”
(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/random)
let randomMessage = responses[randomNumber];
// this gives you a random element from the "responses" array.
要将角色添加到发送消息的成员,您可以使用以下代码:
client.on('message', message => {
let member = message.guild.members.cache.get(message.author.id);
member.roles.add('role-id');
});
您应该检出的真正有用的链接:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/floor
编辑:一种简单的方法来决定是否要添加角色,您可以尝试更改响应数组,在每个响应上添加另一个元素,第一个元素包含消息,然后第二个为布尔值,这将作为条件,true
可以添加角色,false
可以添加角色。
const responses = [["you can eat biscuits", true], ["you cant eat biscuits", false]]
。
randomMessage
现在应该看起来像这样:let randomMessage = responses[randomNumber][0];
现在的最终代码应如下所示:
client.on('message', message => {
let member = message.guild.members.cache.get(message.author.id);
const responses = [["you can eat biscuits", true], ["you cant eat biscuits", false]];
let randomNumber = Math.floor(Math.random() * Math.floor(responses.length));
let randomMessage = responses[randomNumber][0];
message.channel.send(randomMessage);
if(responses[randomNumber][1]) {
member.roles.add('role-id');
};
});