Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/403.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Discord.js:如何确保bot不会';Don’不要从列表中选择两个相同的单词_Javascript_Discord.js - Fatal编程技术网

Javascript Discord.js:如何确保bot不会';Don’不要从列表中选择两个相同的单词

Javascript Discord.js:如何确保bot不会';Don’不要从列表中选择两个相同的单词,javascript,discord.js,Javascript,Discord.js,所以我在discord.js中做了一个猜谜游戏,机器人从列表中随机抽取4个单词,放在聊天中,你必须用相同的单词回复。以下是我尝试做的一个简化版本: const profileModel = require("../models/profileSchema"); module.exports = { name: "guess", description: "guessing game", async execute

所以我在discord.js中做了一个猜谜游戏,机器人从列表中随机抽取4个单词,放在聊天中,你必须用相同的单词回复。以下是我尝试做的一个简化版本:

const profileModel = require("../models/profileSchema");
module.exports = {
    name: "guess",
    description: "guessing game",
    async execute(client, message, args, Discord, profileData) {
        let words = [
            "red",
             "orange",
             "yellow",
             "green",
             "blue",
             "purple",
             "pink",
             "black",
             "white"
         ]
         let firstWord = words[Math.floor(Math.random() * words.length)];
         let secondWord = words[Math.floor(Math.random() * words.length)];
         let thirdWord = words[Math.floor(Math.random() * words.length)]; 
         let fourthWord = words[Math.floor(Math.random() * words.length)];

         message.reply(`Type the following words into chat: \`${firstWord}\` \`${secondWord}\` \`${thirdWord}\` \`${fourthWord}\``)
           .then((msg) => {
               setTimeout(function() {
                   msg.edit('Type the words into chat!');
               }, 5000)});  
               message.channel.awaitMessages(m => m.author.id == message.author.id, { max: 1, time: 10000 }).then(collected => {
                   if (collected.first().content.toLowerCase() == `${firstWord} ${secondWord} ${thirdWord} ${fourthWord}`) {
                       message.reply('Correct!');
                   } else
                       message.reply('Incorrect');
               }).catch(() => {
                   message.reply('No answer after 10 seconds, time out.');
               });
           });
    }
}

我如何使机器人不会重复选择同一个单词?例如,让它不能说“蓝绿橙”之类的话。谢谢

通过一种非常简单的方式,您可以执行以下操作:

  • 指定单词后,使用
    splice()
    函数将元素从数组中剪断:
  • index=words.indexOf(第一个单词);
    单词.拼接(索引,1);
    
  • 对其他单词重复,如下所示:
  • let firstWord=words[Math.floor(Math.random()*words.length)];
    索引=单词。indexOf(第一个单词);
    单词.拼接(索引,1);
    让secondWord=words[Math.floor(Math.random()*words.length)];
    索引=单词。indexOf(第二个单词);
    单词.拼接(索引,1);
    设thirdWord=words[Math.floor(Math.random()*words.length)];
    索引=words.indexOf(第三个单词);
    单词.拼接(索引,1);
    设fourthWord=words[Math.floor(Math.random()*words.length)];
    索引=words.indexOf(四字);
    单词.拼接(索引,1);
    
    最后,bot将从
    words[]
    数组中删除该元素,直到调用该命令为止

    参考资料:


      • 通过一种非常简单的方式,您可以执行以下操作:

      • 指定单词后,使用
        splice()
        函数将元素从数组中剪断:
      • index=words.indexOf(第一个单词);
        单词.拼接(索引,1);
        
      • 对其他单词重复,如下所示:
      • let firstWord=words[Math.floor(Math.random()*words.length)];
        索引=单词。indexOf(第一个单词);
        单词.拼接(索引,1);
        让secondWord=words[Math.floor(Math.random()*words.length)];
        索引=单词。indexOf(第二个单词);
        单词.拼接(索引,1);
        设thirdWord=words[Math.floor(Math.random()*words.length)];
        索引=words.indexOf(第三个单词);
        单词.拼接(索引,1);
        设fourthWord=words[Math.floor(Math.random()*words.length)];
        索引=words.indexOf(四字);
        单词.拼接(索引,1);
        
        最后,bot将从
        words[]
        数组中删除该元素,直到调用该命令为止

        参考资料:


        在它选择单词后,您可以将该单词存储在一个临时变量中,并检查该单词是否等于它选择的下一个单词。如果是,则选择另一个单词。在它选择该单词后,您可以将该单词存储在临时变量中,并检查该单词是否等于它选择的下一个单词。如果是,那么选择另一个单词。