我正在 discord.js 中制作自定义动态嵌入帮助命令,如何嵌入命令信息?
Posted
技术标签:
【中文标题】我正在 discord.js 中制作自定义动态嵌入帮助命令,如何嵌入命令信息?【英文标题】:I'm making a custom dynamic embed help command in discord.js how do I embed the command information? 【发布时间】: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 $prefixhelp [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 );
【问题讨论】:
【参考方案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。
【讨论】:
以上是关于我正在 discord.js 中制作自定义动态嵌入帮助命令,如何嵌入命令信息?的主要内容,如果未能解决你的问题,请参考以下文章