Discord.js v14消息日志机器人报错:List item values of ModelType必填
Discord.js v14 消息日志机器人附件上传错误修复
错误原因
直接上传图片/GIF时,这类消息既无文字内容(message.content为空),也无嵌入内容(message.embeds为空数组),你的代码会将content赋值为{ embeds: [undefined] },而Discord API要求嵌入数组的每个元素必须是有效Embed对象,undefined会触发LIST_ITEM_VALUE_REQUIRED错误。
修复后的代码
const { WebhookClient } = require('discord.js'); const client = require('../index'); const wbc = new WebhookClient({ id: "", token: "", }); module.exports = { name: 'messageCreate', async execute(message) { if (message.channel.id === "1003856060647477298") return; // 构建webhook发送参数 const sendOptions = {}; // 处理文字内容 if (message.content) { sendOptions.content = message.content; } // 处理嵌入内容(保留原逻辑只取第一个) if (message.embeds.length > 0) { sendOptions.embeds = [message.embeds[0]]; } // 处理上传的图片/GIF附件 if (message.attachments.size > 0) { sendOptions.files = message.attachments.map(att => att.url); } // 确保有可发送内容时再调用webhook if (Object.keys(sendOptions).length > 0) { await wbc.send(sendOptions); } } }
关键改动说明
- 拆分原三元表达式的赋值逻辑,分情况构建
sendOptions对象,避免生成含undefined的无效嵌入数组 - 新增附件处理:通过
message.attachments获取上传文件的链接,作为files参数传递给webhook - 增加空值判断,确保有可发送内容时才调用webhook,避免触发空消息相关错误
内容的提问来源于stack exchange,提问作者SadSenpai
相关产品推荐
相关产品推荐

