Discord.js:module.exports内使用MessageEmbed发送时报空消息错误
解决Discord.js发送MessageEmbed时报“Cannot send an empty message”的问题
问题分析及修复步骤:
适配Discord.js v13+的消息发送API
从Discord.js v13版本开始,发送Embed不再直接传递Embed对象,而是需要将其放入embeds数组中作为参数传递。原代码直接传embed会被识别为空消息内容,导致报错。修改发送语句:// 替换 message.channel.send(embed); message.channel.send({ embeds: [embed] });修复
avatarURL的调用错误message.author.avatarURL是一个方法,必须通过()调用才能获取到用户头像的URL。原代码未加括号,传递的是函数本身,可能导致Embed加载异常:.setImage(message.author.avatarURL()) // 可选:指定头像尺寸,比如256x256 // .setImage(message.author.avatarURL({ size: 256 }))补全未定义的变量
代码中shuffler函数和quotes数组未定义,这会先引发其他错误,需要提前定义:// 在module.exports前添加示例代码(可根据需求修改) const quotes = ["不要等待机会,而要创造机会。", "人生最大的错误是不断担心会犯错。"]; function shuffler(arr) { let shuffledArr = [...arr]; let currentIndex = shuffledArr.length; // Fisher-Yates洗牌算法 while (currentIndex !== 0) { const randomIndex = Math.floor(Math.random() * currentIndex); currentIndex--; [shuffledArr[currentIndex], shuffledArr[randomIndex]] = [shuffledArr[randomIndex], shuffledArr[currentIndex]]; } let pointer = 0; return () => { if (pointer >= shuffledArr.length) { pointer = 0; // 重新洗牌 currentIndex = shuffledArr.length; while (currentIndex !== 0) { const randomIndex = Math.floor(Math.random() * currentIndex); currentIndex--; [shuffledArr[currentIndex], shuffledArr[randomIndex]] = [shuffledArr[randomIndex], shuffledArr[currentIndex]]; } } return shuffledArr[pointer++]; }; }
内容的提问来源于stack exchange,提问作者Trader
相关产品推荐
相关产品推荐

