discord.js v12.5.3 发送Embed消息无报错却不生效问题求助
问题定位
- 核心错误:未声明
channel变量,代码中直接调用channel.send()属于无效调用,正确的发送目标应为触发指令的当前频道message.channel - 次要问题:
setThumbnail传入的是Imgur图集页面链接,不是可直接加载的图片资源直链,会导致缩略图加载失败,不影响Embed发送但会出现裂图 - 补充优化:你已经通过解构导入了
MessageEmbed,无需再从Discord对象下调用该类
修复后代码
const { MessageEmbed, Client } = require('discord.js') const client = new Client(); client.on('message', async (message) => { // 排除机器人自身消息,避免循环触发 if (message.author.bot) return; if (message.content.toLowerCase() === 'ip') { const embed = new MessageEmbed() .setColor('#000000') .setTitle('Région Loxydienne') .setAuthor('Rayden') .addFields( { name: '**IP**', value: 'DaddyTermi.aternos.me' }, { name: '**VERSION**', value: 'MC 1.17.1' }, { name: '**IP DYNAMIQUE**', value: 'Demande à Tormi' } ) .setTimestamp() .setImage('https://img.wallpapersafari.com/desktop/1680/1050/6/72/8xbBhw.jpg') .setDescription('bon toutou!') // 此处替换为后缀为.jpg/.png的图片直链即可正常显示缩略图 .setThumbnail('替换为实际图片直链') // 修正频道调用逻辑,新增异常捕获方便排查问题 message.channel.send(embed).catch(err => console.log(err)) } }) // 填入你的机器人令牌启动 client.login('你的机器人Token')
额外检查项
- 确认机器人在对应服务器拥有
发送消息、嵌入链接权限,缺少嵌入链接权限会导致Embed无法发送 - 确认你已经在代码末尾调用
client.login()传入正确的机器人令牌 - 若仍有问题可通过上述代码中新增的catch块打印异常信息定位问题
内容的提问来源于stack exchange,提问作者Rayden
相关产品推荐
相关产品推荐

