如何找到机器人会从数组中选择什么随机字符串[Discord.js]

时间:2020-11-08 17:58:32

标签: node.js discord.js

因此,当用户键入“!biscuit”之类的东西时,机器人会从数组中选择一个随机字符串(并且该数组具有“您可以吃饼干”和“您不能吃饼干”之类的东西),我是否想要机器人发送“您可以吃饼干”之类的消息来向该用户添加特定角色。我已经做了一切,我只是不知道如何检查机器人选择了什么,因此可以向用户添加角色。

1 个答案:

答案 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

https://discordjs.guide/

编辑:一种简单的方法来决定是否要添加角色,您可以尝试更改响应数组,在每个响应上添加另一个元素,第一个元素包含消息,然后第二个为布尔值,这将作为条件,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');
    };
});