【问题标题】:Multiple Options in a single argument单个参数中的多个选项
【发布时间】:2019-02-24 11:47:11
【问题描述】:

我正在开发我的机器人内部的票务系统。我想要:-ticket new-ticket close。但我需要知道如何对这些命令有两种不同的反应。因此,当玩家输入-ticket new <subject> 时,它会打开一个新票,在我的日志频道中发送一条日志消息,其中说明票的主题并提及我的支持团队角色。或者当玩家输入-ticket close <subject> 时,它将关闭现有票证并在我的日志频道中发送一条记录消息,说明票证的主题。

我试过了 exports.run(client, message, arg1, arg2, subject) => { if (args.slice(1).join(''))
exports.run(client, message, arg1, arg2, subject) => { if (args[1] === '')

我当前的代码

exports.run = (client, message, arg1, arg2, subject) => {
    let error = new Discord.RichEmbed()
    .setColor("RED")
    .setFooter("NebulaCraft")
    .setTimestamp()
    .setDescription("An error accoured please try again. If this reacours please contact support.")
    if (args.slice(1).join("new")) {
        let new1 = new Discord.RichEmbed()
        .setColor("GREEN")
        .setFooter("NebulaCraft")
        .setTimestamp()
        .setTitle('New Ticket')
        .addField('Author', message.author)
        .addField('Subject', `${subject}`)
        client.channels.get('539852428565282851').send(new1).catch(console.error)
        return (message.channel.send(error).catch(console.error))
    }
    if (args.slice(1).join("close")) {
        let close1 = new Discord.RichEmbed()
        .setColor("GREEN")
        .setFooter("NebulaCraft")
        .setTimestamp()
        .setTitle('Ticket Closed')
        .addField('Closed By', message.author)
        .addField('Subject', `${subject}`)
        client.channels.get('539852428565282851').send(close1).catch(console.error)
        return (message.channel.send(error).catch(console.error))
    }
}

我希望得到一个代码,它只为单个 arg 创建 2 个选项。我想让它为 2 个选项发送 2 条不同的消息。

【问题讨论】:

    标签: node.js discord.js


    【解决方案1】:

    保持导出与exports.run(client, message, args) =>之前一样 最终代码应该是:

    exports.run = (client, message, args) => {
        let error = new Discord.RichEmbed()
        .setColor("RED")
        .setFooter("NebulaCraft")
        .setTimestamp()
        .setDescription("An error accoured please try again. If this reacours please contact support.")
        if (args[0] === 'new') {
            let new1 = new Discord.RichEmbed()
            .setColor("GREEN")
            .setFooter("NebulaCraft")
            .setTimestamp()
            .setTitle('New Ticket')
            .addField('Author', message.author)
            .addField('Subject',  args.slice(1).join(' '))
            client.channels.get('539852428565282851').send(new1).catch(console.error)
            return (message.channel.send(error).catch(console.error))
        }
        if (args[0] === 'close') {
            let close1 = new Discord.RichEmbed()
            .setColor("GREEN")
            .setFooter("NebulaCraft")
            .setTimestamp()
            .setTitle('Ticket Closed')
            .addField('Closed By', message.author)
            .addField('Subject',  args.slice(1).join(' '))
            client.channels.get('539852428565282851').send(close1).catch(console.error)
            return (message.channel.send(error).catch(console.error))
        }
    }
    

    【讨论】:

      【解决方案2】:
      if (args[0] === 'option1') {
          // Command specific here
      } else if (args[0] === 'option2') {
          // Command specific here
      } else if (args[0] === 'option3') {
          // Command specific here
      } else {
          // If none of the options match
          // Command error specific here
      }
      

      这很好用!

      【讨论】:

        猜你喜欢
        • 2011-11-23
        • 1970-01-01
        • 1970-01-01
        • 2021-06-27
        • 2012-10-01
        • 1970-01-01
        • 2012-07-12
        • 1970-01-01
        • 2013-04-17
        相关资源
        最近更新 更多