Discord.js日志配置:如何将已删消息通过Embed发送到指定日志频道?
实现方案
前置准备
- 开启Discord开发者模式,复制你预设的专用moderation日志频道的ID
- 确认你使用的是discord.js v14及以上版本,若为更低版本需调整Embed构造器名称
代码修改
第一步:修改messagedelete.js文件代码
替换原文件内容为以下代码,将代码中你复制的日志频道ID替换为你实际的频道ID即可:
const { EmbedBuilder } = require('discord.js'); const LOG_CHANNEL_ID = '你复制的日志频道ID'; module.exports = async (message) => { // 过滤机器人消息、未完全缓存的部分消息,避免运行报错 if (message.author?.bot || !message.author || message.partial) return; // 获取日志频道实例 const logChannel = await message.guild.channels.cache.get(LOG_CHANNEL_ID); if (!logChannel) return; // 构造Embed格式的日志 const deleteLogEmbed = new EmbedBuilder() .setColor('#FF0000') .setTitle('消息已删除') .addFields( { name: '发送者', value: `${message.author.tag} (ID: ${message.author.id})`, inline: true }, { name: '原所属频道', value: `${message.channel} (ID: ${message.channel.id})`, inline: true }, { name: '消息内容', value: message.content || '无文本内容(可能为纯图片/附件消息)' } ) .setTimestamp() .setFooter({ text: 'Moderation 日志' }); // 发送到指定日志频道 await logChannel.send({ embeds: [deleteLogEmbed] }); };
第二步:main.js代码无需调整,保持原有监听逻辑即可正常运行
补充说明
- 若你需要同时记录被删消息的附件,可自行添加字段遍历
message.attachments输出附件链接 - 若运行时报错找不到
EmbedBuilder,说明你使用的是discord.js v13及更低版本,将第一行引入的构造器名称改为MessageEmbed即可,其余逻辑无需修改
内容的提问来源于stack exchange,提问作者Blake ツ
相关产品推荐
相关产品推荐

