【问题标题】:Discord bot random replyDiscord 机器人随机回复
【发布时间】:2020-11-08 04:41:55
【问题描述】:

我目前正在开发一个带有简单迷你游戏的不和谐机器人。您编写“gamestart”,机器人会向您发送 4 个可能回复中的 1 个。但我的机器人没有发送任何东西。可能是什么问题?

bot.on('message', msg) => {
    if(msg.content === "gamestart"){
        var random = Math.random() * (4 - 1) + 1;
        Math.round(random);
        if(random === 1){
            message.channel.send('doggos, axes, chalice');
            
        }
        else
        if(random === 2){
            message.channel.send('sun, axes, doggos');
            
        }
        else
        if(random === 3){
            message.channel.send('axes, sun, chalice');
            
        }
        else
        if(random === 4){
            message.channel.send('chalice, doggos, sun');
            
        }   
    }
    
})

【问题讨论】:

  • Math.round(random); 这会返回一个新值,并且不会改变旧值。另请注意,当您尝试区分四个值时,您的随机数分布为三。 random === 4 永远不会发生。
  • 或许可以试试random = Math.round(random);
  • @ASDFGerte 我将最大值设置为 5,所以我应该工作。非常感谢您的帮助
  • 像往常一样,MDN 很适合作为开始阅读。我错过了,您使用的是round 而不是floor。这意味着我之前评论的第二部分略有错误。但是,它只是将一个问题换成另一个问题:在达到所有值时,您的分布将不再是统一的。

标签: javascript discord discord.js


【解决方案1】:
const Responses = ["doggos, axes, chalice", "sun, axes, doggos", "axes, sun, chalice", "chalice, doggogs, sun"]; // Storing the responses.
message.channel.send(Responses[Math.floor(Math.random() * Responses.length)]); // Sending a random response.

【讨论】:

    【解决方案2】:

    问题也可能与消息处理和undefined 频道 ID 有关。

    首先,通过以下代码确保机器人实际上正在侦听消息事件:

    bot.on('message', msg => {
        console.log(msg)
        if(msg.content === "gamestart"){
            var random = Math.random() * (4 - 1) + 1;
            ...
    

    第二个是,所有消息(即使它们是数字)都是实际的字符串,请确保传入的msg 值与您的句子“gamestart”相等。

    至于第三个,默认情况下,bot回复用户正在收听的频道,但如果你的bot正在收听message事件,但没有权限在当前频道写回复,那你就完蛋了。

    确保机器人在某个频道有权限,或通过permission=8(管理员)邀请它

    【讨论】:

      【解决方案3】:

      一个非常简单的解决方案,而且——在我看来——更有条理的是创建一个数组,然后让机器人随机选择一个并发送:

      const Answers = ['Answer 1', 'Answer 2', 'Answer 3']; 
      msg.channel.send(Answers[Math.floor(Math.random() * Answers.length)])
      
      
      

      另外(重要的),把'message'改成'msg'!!

      【讨论】:

        猜你喜欢
        • 2021-11-08
        • 2020-01-25
        • 1970-01-01
        • 2021-08-19
        • 2020-06-30
        • 1970-01-01
        • 2022-10-30
        • 1970-01-01
        • 2021-08-24
        相关资源
        最近更新 更多