【问题标题】:Discord.JS how to transfer argsDiscord.JS 如何传递参数
【发布时间】:2020-10-11 20:12:04
【问题描述】:

我需要将参数从一个命令传输到另一个命令。

我需要从以下位置传输 args(订单)的命令:

const invite = await message.channel.createInvite()
    if(cmd === `${prefix}order`){
        
    if(!args) return message.reply("Please specify what you would like to order.")        
        console.log(args)
        
        
        baseOrderNumber++;
        var order = args.join(" ")
    let orderEmbed = new Discord.MessageEmbed()
    orderIcon = "https://i.imgur.com/Le0Eist.png"
    orderEmbed.setTitle("New Order")
    orderEmbed.setColor("#FF2D00")
    orderEmbed.setThumbnail(orderIcon)
    orderEmbed.addField("Order Number", baseOrderNumber)
    orderEmbed.addField("Order", order)
    orderEmbed.addField("Customer", message.author)
    orderEmbed.addField("Server Invite", invite)

     bot.channels.cache.get('723838675489914891').send(orderEmbed)    
     let eekowo = fs.writeFileSync('orderAuthors.txt', message.author.tag, order); 
    }

我需要转移到的命令:

if(cmd === `${prefix}deliver`){
        if(!args[1]) message.reply("Please provide an order number.")
        let eekowo2 = fs.readFileSync('orderAuthors.txt', 'utf8')
        deliverEmbed = new Discord.MessageEmbed()
        deliverIcon = message.guild.iconURL
        deliverEmbed.addField("Invite", invite)
        deliverEmbed.addField("Customer", eekowo2)
        deliverEmbed.addField("Items", orderEmbed.order)
          message.author.send(deliverEmbed)
      }

这可能吗?如果是这样;怎么样?

【问题讨论】:

  • 你能提供更多你的代码吗?这是什么函数,你从哪里得到参数?
  • let args = messageArray.slice(1) 澄清:let messageArray = message.content.split(" ");
  • 你不把 args 保存在一个全局数组中吗?
  • 将其设为全局数组,然后在本地块中使用

标签: javascript node.js discord discord.js


【解决方案1】:

你有几个选择:

  1. 如果您使用的是命令处理程序,那么您可以 require() 另一个命令文件,并通过 module.exports 调用包含其代码的函数,并将 args 作为参数传入。
  2. 如果您没有使用命令处理程序,并且所有命令都在您的 index(或 bot).js 文件中,请获取第二条命令的代码,并将其复制到全局范围内的函数中,然后调用函数在 if 语句的正常部分和第一个命令中的位置,除了所有其他必要信息(例如“消息”)之外,将 args 作为参数传递给两者。
  3. 将要运行的代码复制到第一个命令中。 (不推荐,但可能)

我的建议是采用选项 1,但看起来好像您没有使用命令处理程序,所以这里是 #2 的可能应用:

// 1st command
const invite = await message.channel.createInvite()
if (cmd === `${prefix}order`) {

  if (!args) return message.reply("Please specify what you would like to order.")
  console.log(args)


  baseOrderNumber++;
  var order = args.join(" ")
  let orderEmbed = new Discord.MessageEmbed()
  orderIcon = "https://i.imgur.com/Le0Eist.png"
  orderEmbed.setTitle("New Order")
  orderEmbed.setColor("#FF2D00")
  orderEmbed.setThumbnail(orderIcon)
  orderEmbed.addField("Order Number", baseOrderNumber)
  orderEmbed.addField("Order", order)
  orderEmbed.addField("Customer", message.author)
  orderEmbed.addField("Server Invite", invite)

  bot.channels.cache.get('723838675489914891').send(orderEmbed)
  let eekowo = fs.writeFileSync('orderAuthors.txt', message.author.tag, order);

  Deliver(message, Discord, args);
}


// 2nd command
if (cmd === `${prefix}deliver`) {
  Deliver(message, Discord, args);
}




// In the global scope
function Deliver(message, embed, args) {
  if (!args[1]) message.reply("Please provide an order number.")
  //  ^ If this is an error check, you may want to put return here, before the reply
  let eekowo2 = fs.readFileSync('orderAuthors.txt', 'utf8')
  deliverEmbed = new Discord.MessageEmbed()
  deliverIcon = message.guild.iconURL
  deliverEmbed.addField("Invite", invite)
  deliverEmbed.addField("Customer", eekowo2)
  deliverEmbed.addField("Items", orderEmbed.order)
  message.author.send(deliverEmbed)
}
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-16
    • 2016-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多