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

如何在discord.js Embed中使用forEach循环展示警告列表

在Discord.js中整合动态数量的警告到单个Embed

你可以通过先创建基础Embed,再遍历警告数组拼接内容(或添加字段)的方式,把所有警告整合到一个Embed里发送,不用单独逐条发送。以下是具体实现:

方法一:将警告内容拼接至Embed描述

适合警告数量较多的场景,避免字段数量限制:

// 假设已从数据库/存储中获取到用户的警告数组
const userWarnings = [
  { id: 1, reason: "恶意刷屏", timestamp: "2024-05-20 12:30" },
  { id: 2, reason: "辱骂成员", timestamp: "2024-05-21 14:15" }
];

// 创建Embed实例(Discord.js v14+ 使用 EmbedBuilder)
const warningsEmbed = new EmbedBuilder()
  .setTitle(`${user.tag} 的警告记录`)
  .setColor(0xFF4444)
  .setTimestamp();

// 拼接所有警告内容
let warnContent = "";
userWarnings.forEach((warn, idx) => {
  warnContent += `\n**第 ${idx + 1} 条警告**
- 警告ID: ${warn.id}
- 原因: ${warn.reason}
- 警告时间: ${warn.timestamp}\n`;
});

// 处理无警告的情况
if (userWarnings.length === 0) {
  warnContent = "此用户目前没有任何警告记录";
}

// 将内容设置到Embed描述中
warningsEmbed.setDescription(warnContent);

// 发送最终的Embed
message.channel.send({ embeds: [warningsEmbed] });

方法二:用Embed字段展示每条警告

适合警告数量较少(≤25条,Discord单Embed字段上限)的场景,排版更规整:

const userWarnings = [/* 你的警告数组 */];
const warningsEmbed = new EmbedBuilder()
  .setTitle(`${user.tag} 的警告记录`)
  .setColor(0xFF4444)
  .setTimestamp();

// 遍历警告添加字段
userWarnings.forEach((warn, idx) => {
  warningsEmbed.addFields({
    name: `警告 ${idx + 1}`,
    value: `ID: ${warn.id}\n原因: ${warn.reason}\n时间: ${warn.timestamp}`,
    inline: false // 设为true可让字段并排,建议false保证可读性
  });
});

// 无警告时的兜底
if (userWarnings.length === 0) {
  warningsEmbed.setDescription("此用户目前没有任何警告记录");
}

// 发送Embed
message.channel.send({ embeds: [warningsEmbed] });

注意事项

  • 如果警告数量极多导致Embed字符数超出Discord限制(描述最大4096字符,总字段内容最大6000字符),可以考虑拆分多个Embed发送,比如每10条警告一个Embed。
  • 代码示例基于Discord.js v14+,如果是旧版本,将EmbedBuilder替换为MessageEmbed即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 23:50:20