如何将Discord音乐队列普通消息代码修改为embed嵌入消息格式
Discord音乐队列Embed格式修改方案
完整修改后代码(适配discord.js v13版本)
const { MessageEmbed } = require('discord.js'); module.exports = { name: 'queue', aliases: ['q'], category: 'Music', utilisation: '{prefix}queue', execute(client, message) { // 无活跃队列时返回提示 if (!client.player.getQueue(message)) return message.channel.send('当前没有正在运行的音乐队列'); const queue = client.player.getQueue(message); // 生成队列列表文本 const trackList = queue.tracks.map((track, i) => { return `**${i + 1})** ${track.author} - ${track.title} | ${track.requestedBy.username}` }).slice(0, 10).join('\n'); const footerTip = queue.tracks.length > 10 ? `还有 ${queue.tracks.length - 10} 首歌曲未列出` : '已经到队列末尾啦'; // 构造Embed实例 const queueEmbed = new MessageEmbed() .setColor('#1DB954') // 可自定义侧边栏颜色,此处为Spotify绿 .setTitle(`播放队列 ${queue.loopMode ? '(循环已开启)' : ''}`) .setDescription(`**当前播放:**\n${queue.playing.author} | ${queue.playing.title}`) .addField('待播放列表', trackList) .setFooter({ text: footerTip }); // 发送Embed消息 message.channel.send({ embeds: [queueEmbed] }); }, };
v14版本适配修改说明
- 导入类替换为
const { EmbedBuilder } = require('discord.js') - 实例化embed时改为
new EmbedBuilder(),其余配置方法保持一致
注意事项
- 发送embed必须使用
{ embeds: [实例对象] }的参数格式,直接传递embed实例会导致发送失败,这是修改时最常见的报错原因 - 单条embed字段内容上限为1024字符,此处限制最多显示10首歌曲,刚好规避长度超限报错
- 可按需扩展embed属性:例如调用
.setThumbnail(queue.playing.thumbnail)添加当前播放歌曲封面、.setTimestamp()添加发送时间戳等
内容的提问来源于stack exchange,提问作者El Meron
相关产品推荐
相关产品推荐

