【问题标题】:having optional args, for discord.js embed command具有可选参数,用于 discord.js 嵌入命令
【发布时间】:2021-01-26 15:16:48
【问题描述】:

编辑 所以我正在尝试制作一个嵌入命令,它会根据用户输入发送一个嵌入, 用户将发送类似 `.embed ?d description ?f footer ?i image url

的命令

等等

如何使 ?d 和 ?f 之类的选项成为可选的,并且顺序很重要,但它会在给定的选项上创建嵌入

'example: .embed ?d description : 这将创建一个只有描述的嵌入'

我已经尝试过了,但我搞砸了这里是代码https://hatebin.com/uzdsqwtqyw

但这会输出这个:

【问题讨论】:

    标签: discord.js


    【解决方案1】:

    您需要做的是:进入您的主文件(如 index.js)并在代码顶部设置:

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

    那么你需要在哪里设置“嵌入”命令:

    if(command === 'embed'){
              client.commands.get('embed').execute(message, args, Discord);
    

    然后在您的命令文件夹中,您将创建一个名为 embed.js 的文件。在 embed.js 中你需要设置这个代码:

    module.exports = {
        name: 'embed',
        description: 'Embed Test',
        execute(message, args, Discord){
            const newEmbed = new Discord.MessageEmbed()
            .setTitle('Your Title')
            .setColor('RANDOM')
            .setFooter('Some Footer here', 'another footer here' )
            .setDescription('> ?testa\n' + '> ?testb\n' + '> testc');
            message.delete();
            message.channel.send(newEmbed);
        }
    
    });
    

    而且您只会得到命令后的描述,而带有命令([prefix]embed)的消息会在您发布后删除!

    【讨论】:

    • hmmm 不,我的意思是你做的一个命令,.embed ?d 描述,我有一个命令处理程序设置。
    • 我不明白你想做什么。请提供更多详细信息!
    • 对不起,如果我不能说清楚,但我编辑了现在看到的问题
    • 我还是不明白,伙计!您想要一个发送带有描述的嵌入的命令,对吧?
    【解决方案2】:

    好的,我自己修好了:)

    我将 args 按 (?) 拆分并检查每个值以查看 args 是否具有所需的选项

    这是我为将来参考所做的:

    let text = args.join(' ')
    
    const Embed = new Discord.MessageEmbed()
    let errrors = []
    
    if(!text) return message.channel.send('Error')
    let tex = text.split('?')
    
    
    tex.forEach(async e => { .........
    
    
     if(e.toLowerCase().startsWith('d')) {
       let description = e.replace('d', '')
         if(description.length == 0) {
           return await errrors.push('Description option was given but no description was given!!')
         } else {
          await Embed.setDescription(description)
         }
      } else if(e.toLowerCase().startsWith('t')) ........
    
    
    }
    
    // then 
    
    if(errrors.length > 0) {
      let errr = errrors
       Embed.setTitle('Following errors occured while constructing your embed')
    Embed.setDescription(errr)
      return message.channel.send(Embed)
    } else {
    
    message.channel.send(Embed)
    
    }
    
    

    【讨论】:

      猜你喜欢
      • 2020-07-14
      • 2021-11-07
      • 2020-12-08
      • 2019-08-21
      • 2020-10-09
      • 1970-01-01
      • 2021-04-19
      • 2022-01-16
      • 1970-01-01
      相关资源
      最近更新 更多