You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写Discord.js的!embed指令,实现自定义参数的嵌入消息发送功能

Discord.js 自定义embed指令实现方案

以下实现基于Discord.js v14版本,为前缀命令方案

1. 前置准备

  • 已安装discord.js v14:npm install discord.js@latest
  • 已在Discord开发者后台的「Privileged Gateway Intents」板块开启MessageContent权限,代码注册intent时也需要同步添加该权限

2. 核心实现逻辑

用户使用命令的格式为:!embed <标题> | <描述> | <十六进制颜色码>,使用|作为参数分隔符,支持标题、描述内部携带空格。

完整代码示例:

const { Client, GatewayIntentBits, EmbedBuilder } = require('discord.js');
const client = new Client({
  intents: [
    GatewayIntentBits.Guilds,
    GatewayIntentBits.GuildMessages,
    GatewayIntentBits.MessageContent // 必须开启,否则无法读取普通消息内容
  ]
});
const PREFIX = '!';

client.on('messageCreate', async message => {
  // 过滤机器人消息、非前缀开头的消息
  if (message.author.bot || !message.content.startsWith(PREFIX)) return;
  
  // 提取命令名和参数
  const args = message.content.slice(PREFIX.length).trim().split(/ +/);
  const command = args.shift().toLowerCase();

  if (command === 'embed') {
    // 拼接参数后按|拆分三个配置项
    const rawContent = args.join(' ');
    const [title, description, color] = rawContent.split('|').map(item => item.trim());
    
    // 参数合法性校验
    if (!title || !description || !color) {
      return message.reply('参数格式错误,正确用法:\n`!embed 标题 | 描述 | 十六进制颜色码`\n示例:`!embed 服务器公告 | 今晚8点进行例行维护 | #FF5500`');
    }
    // 校验十六进制颜色格式
    const hexReg = /^#([0-9A-F]{3}|[0-9A-F]{6})$/i;
    if (!hexReg.test(color)) {
      return message.reply('颜色格式错误,请输入合法的十六进制颜色码,例如#00FF00');
    }

    try {
      // 构造embed消息
      const customEmbed = new EmbedBuilder()
        .setTitle(title)
        .setDescription(description)
        .setColor(color)
        .setTimestamp() // 可选配置:添加发送时间戳
        .setFooter({ text: `发布人:${message.author.tag}` }); // 可选配置:添加发布人脚注

      // 发送embed到当前频道
      await message.channel.send({ embeds: [customEmbed] });
      // 可选配置:删除用户发送的触发命令原消息
      await message.delete();
    } catch (err) {
      console.error('Embed发送失败:', err);
      message.reply('消息发送失败,请稍后重试');
    }
  }
});

client.login('你的机器人Token');

3. 可调整配置

  • 可自定义参数分隔符,把代码中的|替换为其他符号即可
  • 可扩展embed的其他属性,比如添加缩略图、字段、跳转链接等,直接在EmbedBuilder链式调用对应方法即可

内容的提问来源于stack exchange,提问作者SefovskiLeaks

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 07:42:02