Как найти, какую случайную строку бот выберет из массива [Discord.js ]

#node.js #discord.js

#node.js #discord.js

Вопрос:

Поэтому, когда пользователь вводит что-то вроде «!biscuit», бот выберет случайную строку из массива (а в массиве есть что-то вроде «вы можете есть печенье» и «вы не можете есть печенье»), и я хочу, чтобы бот отправил сообщение типа «вы можете есть печенье», чтобы добавитьконкретная роль для этого пользователя. Я сделал все, я просто не знаю, как проверить, что выбрал бот, чтобы я мог добавить роль пользователю.

Комментарии:

1. if (element === 'you can eat biscuits')

Ответ №1:

У вас может быть простой массив, содержащий все возможные результаты (например const responses = ["you can eat biscuits", "you cant eat biscuits"] .

Затем используйте Math.random() функцию, чтобы получить случайное число от 0 до <1.(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/random )

 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/floor )

 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://discordjs.guide/

https://discord.js.org/#/docs/main/stable/general/welcome

РЕДАКТИРОВАТЬ: простой способ решить, хотите ли вы добавить роль или нет, вы можете попробовать изменить массив ответов, добавив еще один элемент к каждому ответу, причем первый элемент содержит сообщение, а второй — логическое значение, которое будет использоваться в качестве условия, с 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');
    };
});
  

Комментарии:

1. Да, я понял это сразу после публикации, но спасибо