如何修复Discord embed命令意外token错误并新增@用户提及功能
问题修复说明
1. 报错原因
你遇到的意外token错误是语法错误,在addFields()方法的末尾多写了一个多余的逗号,打断了Discord MessageEmbed的链式调用逻辑,JavaScript解析器无法识别后续的.setTimestamp()方法,直接抛出异常。
2. @用户功能实现逻辑
参考你提供的impostor命令代码,需要先获取两个用户对象:
- 命令触发者:
message.author - 被@的目标用户:
message.mentions.users.first(),如果用户执行命令时没有@任何人,可以加兜底提示避免报错
3. 修正后完整代码
module.exports = { name: "bonk", description: "bonks someone", category: "funsies", command: true, execute(message, args, Discord) { // 获取触发者和目标用户 const initiator = message.author; const target = message.mentions.users.first(); // 没@目标用户时返回提示 if (!target) return message.channel.send("你需要@一个用户才能使用bonk命令~"); const bonkEmbed = new Discord.MessageEmbed() .setColor("#cc4371") .setTitle(`<@${initiator.id}> BONKED <@${target.id}>`) .setDescription("[somethin, idfk]") .setThumbnail("https://discord.com/channels/774446440252309524/881660577351630849/887115025775476747") // 这里删掉了多余的逗号 .addFields({ name: "you got bonked!", value: "https://discord.com/channels/774446440252309524/881660577351630849/887110690719010847" }) // 新增video属性嵌入短视频,替换为你自己的视频直链即可 .setVideo("你的短视频直链地址,后缀需为.mp4等可直接播放的格式") .setTimestamp() .setFooter('~~lmao~~'); message.channel.send(bonkEmbed); } };
4. 补充说明
- 如果你要嵌入的短视频是存在Discord消息里的,需要右键点击视频选择「复制链接」拿到直链,不要用消息页面的链接,否则无法正常嵌入播放
- 用户提及的格式已经直接内置在标题里,发送后会自动识别为@提及,被@的用户会收到提醒
内容的提问来源于stack exchange,提问作者SchneebNabs
相关产品推荐
相关产品推荐

