【问题标题】:Discord Bot random prompt from array, no repeats来自数组的 Discord Bot 随机提示,无重复
【发布时间】:2020-08-19 02:45:17
【问题描述】:

这是我遇到的问题。这意味着当用户调用 !prompt 时从数组中随机选择一个单词,但随后它只会吐出该提示而不是其他任何东西。它应该在每次调用 !prompt 时随机选择。我该如何解决?

const Discord = require('discord.js');

const bot = new Discord.Client();

const PREFIX = '!';


const token = 'notforstackoverflow';
bot.on('ready', () =>{
    console.log('This bot is online!');
})



var prompts = ["Cloud", "Tifa", "Sarge", "Chocobo",
"Sephiroth",
"Materia",
"Lifestream",
"Mako",
"Ancient",
"Cetra", 
"Lost number",
"Ultimate weapon",
"Point of no return",
"Eorzea cafe",
"Artnia",
"Healing Spring",
"Unseen Realm",
"Sarnoia civil war",
"Dimensional shift",
"Day of conjuction",
"Disguise",
"Pirate",
"Monster",
"Astos",
"Four Fiends",
"Matoya",
"Sarah",
"Dancing Girl",
"Honey Bee",
"Rydia",
"Tidus",
"Tuna",
"Rikku",
"Aerith",
"Jenova",
"Jessie",
"Vincent Valentine",
"Zack Fair",
"Butch",
"Kotch",
"Weapons",
"Nibelheim",
"SOLDIER"];
const randomPrompt = prompts[Math.floor(Math.random() * prompts.length)];

bot.on('message', message=>{
    let args = message.content.substring(PREFIX.length).split(" ");
    switch(args[0]){
case 'prompt':
message.channel.send(randomPrompt); 
break;  }
})



bot.login(token);

一个正在发生的事情的例子,比如用户调用 !prompt 并吐出“Sephiroth”。然后它只会吐出“Sephiroth”,直到机器人被重置。

【问题讨论】:

    标签: javascript node.js discord


    【解决方案1】:

    您在脚本初始化时将randomPrompt 设置为const 一次,并且每次都引用相同的const。相反,请确定执行消息处理程序时的 randomPrompt 值:

    const Discord = require('discord.js');
    
    const bot = new Discord.Client();
    
    const PREFIX = '!';
    
    
    const token = 'notforstackoverflow';
    bot.on('ready', () => {
        console.log('This bot is online!');
    })
    
    
    
    var prompts = ["Cloud", "Tifa", "Sarge", "Chocobo",
        "Sephiroth",
        "Materia",
        "Lifestream",
        "Mako",
        "Ancient",
        "Cetra",
        "Lost number",
        "Ultimate weapon",
        "Point of no return",
        "Eorzea cafe",
        "Artnia",
        "Healing Spring",
        "Unseen Realm",
        "Sarnoia civil war",
        "Dimensional shift",
        "Day of conjuction",
        "Disguise",
        "Pirate",
        "Monster",
        "Astos",
        "Four Fiends",
        "Matoya",
        "Sarah",
        "Dancing Girl",
        "Honey Bee",
        "Rydia",
        "Tidus",
        "Tuna",
        "Rikku",
        "Aerith",
        "Jenova",
        "Jessie",
        "Vincent Valentine",
        "Zack Fair",
        "Butch",
        "Kotch",
        "Weapons",
        "Nibelheim",
        "SOLDIER"
    ];
    
    bot.on('message', message => {
        let args = message.content.substring(PREFIX.length).split(" ");
        switch (args[0]) {
            case 'prompt':
                const randomPrompt = prompts[Math.floor(Math.random() * prompts.length)];
                message.channel.send(randomPrompt);
                break;
        }
    })
    
    bot.login(token);
    

    我已经按照普遍接受的 JavaScript 缩进标准对您的代码进行了缩进。如果缩进正确,您的原始代码可能更易于阅读;您应该考虑使用合适的 IDE 来帮助您解决此问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-18
      • 2021-01-06
      • 2020-09-04
      • 1970-01-01
      • 2019-04-19
      • 2021-06-05
      • 2021-10-19
      • 2021-02-07
      相关资源
      最近更新 更多