【问题标题】:Searching for a fix for my discord bot's 8ball command正在寻找我的不和谐机器人的 8ball 命令的修复程序
【发布时间】:2019-11-18 23:37:59
【问题描述】:

如果我只使用 ?8ball,该命令就可以正常工作。如果我将问题添加到命令中,我似乎无法弄清楚如何让机器人回复,例如?8ball 我应该呆在家里吗?或 ?8ball 是或否?

如果有用户的问题,我如何让我的机器人对 8ball 命令做出反应?我敢打赌这很简单,但不幸的是我对编码知之甚少。

感谢您的帮助。

这是代码。它适用于 ?8ball,但如果我添加问题,则无效。

client.on('message', msg => {
  if (msg.content === '?8ball') {
     msg.reply(eightball[Math.floor(Math.random() * eightball.length)]);
}

【问题讨论】:

    标签: javascript node.js discord discord.js


    【解决方案1】:

    问题是您的 if 语句正在明确寻找

    ?8ball

    如果您希望它响应 includes '?8ball' 的任何请求,您可以改用:

    client.on('message', msg => {
        if( msg.content.includes('?8ball') ) {
            msg.reply(eightball[Math.floor(Math.random() * eightball.length)]);
        }
    }
    

    请注意,这将无法确定他们所问的问题,只是它包含一个预定义的字符串(更糟糕的是它不检查字符串是在消息的前面还是在中间)。您必须进行额外的解析才能从消息中获取问题,例如String.split()

    使用 String.split() 和 Array.shift()Array.join() 来获取与查询分开的消息内容的示例:

    client.on('message', msg => {
        var msgarray = msg.content.split(' ');
    
        //If the first part of the created array matches your message.
        if( msgarray[0] === '?8ball' ) {
    
            //Remove first part of array and put it together again.
            msgarray.shift();
    
            //Put the user query back together without the first part and spaces between the words
            var msgcontent = msgarray.join(' ');
    
            msg.reply(eightball[Math.floor(Math.random() * eightball.length)]);
        }
    });
    

    【讨论】:

    • 现在显示引用错误,未定义味精。知道我可能做错了什么吗?我是编码新手,我在这里得到的东西已经让我永远:/ @RageFoxx
    • @roterputzlumpe 我已对其进行了更新以包含缺失的部分。我强烈建议继续学习。现在可能看起来很难,但如果你继续前进,你就会到达那里。并尝试按照我在那里提供的链接进行操作 - 它们有助于解释发生了什么。
    • msg.content.split(/\s+/g) 是定义参数的更好选择。通过在空格处拆分,一些参数将包含空格(或只是空格)和换行符。 \s 匹配空格 换行符,+ 匹配参数之间的任意数量。
    • @slothiful 我看到的唯一问题是,如果你用换行符分割,它不会被重建回原来的形式。严格按空格分隔将允许​​保留换行符。使用多个参数,您可以引用类似于上面第一个索引的起始索引。将参数设为换行符或空格会很奇怪,但您可以通过简单的空格分隔成功地将它们进行比较。
    • 如果您想保留问题格式,您可以简单地对message.content 进行切片。
    猜你喜欢
    • 2022-01-15
    • 2018-11-10
    • 2020-05-10
    • 2018-07-21
    • 2021-01-06
    • 2019-09-04
    • 2017-05-31
    • 2021-11-15
    • 2021-12-03
    相关资源
    最近更新 更多