Создание божества раздора. Получение "вы выиграли" не только по 6 броскам, но и по 2 и 4. Я знаю, что это не лучший способ сделать это. Кажется, что неважно, будет ли random == 'insert string here' или random == 'insert int here'.
//Dice Roll Game
bot.on('message', (message) =>{
let diceNum = ['1','2','3','4','5','6'];
let random = diceNum[Math.floor(Math.random() * diceNum.length)];
if(message.content == '!roll') {
message.reply('You rolled a' + ' ' + random + '!');
}
if(random == 6){
message.reply('You win!');
}
});
Я вижу основные проблемы с вашим кодом:
Вы не поместили весь свой код, связанный с костями, в
if
-block проверяет, является ли сообщение командойroll
.
- Это заставляет бота отвечать, когда число "проката" равно 6, даже если команда не вызывается.
Вы не проверяли, появилось ли сообщение от бота.
- Он ответил бы несколько раз, так как вы не проверяли, появилось ли сообщение от вашего бота.
Ваш код будет выглядеть так, как только вы исправили все свои ошибки:
//Dice Roll Game
bot.on('message', message => { // If theres only one parameter, you can omit brackets
// Bot Check
if(message.author.bot)return;
// Even with useless parameters to the command, it will still run
if(message.content.startsWith('!roll')) {
// Arrays are not needed
// Gives a random int from 1 - 6, (~~) floors an integer
let random = ~~(Math.random() * 6) + 1;
message.reply('You rolled a ${ random }!'); // ES6 Template Strings
// Please use strict equality signs to prevent bugs from appearing in your code
if(random === 6){
message.reply('You win!');
}
}
});
Сторона Примечание. Если вы не хотите упоминать, добавленное к вашему бот-сообщению, используйте message.channel.send
вместо message.reply
.