【问题标题】:I'm making a custom dynamic embed help command in discord.js how do I embed the command information?我正在 discord.js 中制作自定义动态嵌入帮助命令,如何嵌入命令信息?
【发布时间】:2021-08-20 12:34:40
【问题描述】:

代码有效,当我执行 -help 时它会嵌入,但如果执行 -help {command},它会显示未嵌入的文本。我将如何嵌入名称、别名、描述和冷却时间(动态)。

这是我尝试过的。

module.exports = {
  name: 'help',
  aliases: ['h'],
  description: 'A help Command',
  cooldown: 5,
  execute(message, args, cmd, client, Discord) {
    const data = [];
    const { commands } = message.client;
    const prefix = process.env.PREFIX;

    if (!args.length) {
      const title = 'Here\'s a list of all my commands:';
      const description = data.push(commands.map(command => command.name).join(', '));
      const footer = `You can send ${prefix}help [command name] to get info on a specific command!`;
      const helpEmbed = new Discord.MessageEmbed()
        .setColor('RANDOM')
        .setAuthor(message.author.tag, message.author.displayAvatarURL({ dynamic: true }))
        .setTitle(title)
        .setDescription(data)
        .setTimestamp()
        .setFooter(footer);
      return message.author.send(helpEmbed)
        .then(() => {
          if (message.channel.type === 'dm') return;
            message.reply('I\'ve sent you a DM with all my commands!');
        })
        .catch(error => {
          console.error(`Could not send help DM to ${message.author.tag}.\n`, error);
          message.reply(`it seems like I can't DM you! Do you have DMs disabled?`);
        });
    }
    const name = args[0].toLowerCase();
    const command = commands.get(name) || commands.find(c => c.aliases && c.aliases.includes(name));

    if (!command) {
      return message.reply('that\'s not a valid command!');
    }
          
    data.push(`**Name:** ${command.name}`);
          
    if (command.aliases) data.push(`**Aliases:** ${command.aliases.join(', ')}`);
    if (command.description) data.push(`**Description:** ${command.description}`);
    if (command.usage) data.push(`**Usage:** ${prefix}${command.name} ${command.usage}`);
    if (command.cooldown) data.push(`**Cooldown:** ${command.cooldown} seconds`);        
          
    message.channel.send(data, { split: true });
  }
}

【问题讨论】:

    标签: discord.js embed


    【解决方案1】:

    目前,您只是发送一个字符串数组,而不是embed object。对于create an embed,您可以执行以下操作之一:

    使用MessageEmbed 构造函数:

    const {MessageEmbed} = require("discord.js");
    
    const embed = new MessageEmbed();
    // dynamically add data using MessageEmbed methods
    if (someCondition) embed.addField("name", "value");
    if (anotherCondition) embed.setDescription("description");
    

    使用对象创建嵌入:

    const embed = {
      description: "",
      fields: []
    };
    // dynamically add data using basic JavaScript methods
    if (someCondition) embed.fields.push({name: "name", value: "value"});
    if (anotherCondition) embed.description = "description";
    

    查看docs 以查看可用于MessageEmbed 类的方法。

    另一个有用的资源是Embed Visualizer

    【讨论】:

      猜你喜欢
      • 2020-09-19
      • 2020-07-14
      • 2021-01-12
      • 2021-08-10
      • 2021-11-07
      • 2021-01-13
      • 1970-01-01
      • 2020-10-18
      • 1970-01-01
      相关资源
      最近更新 更多