-3

我正在制作一个音乐机器人,我想在它返回消息时添加一个 Embed,但我收到一个错误,说 const 未定义。

这是我的代码:

const Discord = require('discord.js');
const bot = new Discord.Client({
    partials: ['MESSAGE', 'CHANNEL', 'REACTION']

});
const config = require('./settings.json');
const { loadCommands } = require('./utils/loadCommands');
const DisTube = require('distube');


bot.distube = new DisTube(bot, { searchSongs: false, emitNewSongOnly: true });
bot.distube
    .on("playSong", (message, queue, song) => message.channel.send(
    const exampleEmbed = new Discord.MessageEmbed()   
        .setColor('#0099ff')
    .setTitle('Playing Now:')
    .setDescription('`${song.name}`')
    .setTimestamp()
    .setFooter('Requested by: ${song.user}');        


    .on("addSong", (message, queue, song) => message.channel.send(
        .setColor('#0099ff')
    .setTitle('Added to Queue:')
    .setDescription('\`${song.name}\`')
    .setTimestamp()
    .setFooter('${song.formattedDuration} - Requested by ${song.user}');         

require('./utils/loadEvents')(bot);

bot.commands = new Discord.Collection();
bot.aliases = new Discord.Collection();

loadCommands(bot);

bot.login(config.token);

然后在我运行它之后,我得到了这个错误:

const exampleEmbed = new Discord.MessageEmbed()
    ^^^^^

SyntaxError: Unexpected token 'const'
←[90m    at wrapSafe (node:internal/modules/cjs/loader:1024:16)←[39m
←[90m    at Module._compile (node:internal/modules/cjs/loader:1072:27)←[39m
←[90m    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1137:10)←[39m
←[90m    at Module.load (node:internal/modules/cjs/loader:973:32)←[39m
←[90m    at Function.Module._load (node:internal/modules/cjs/loader:813:14)←[39m
←[90m    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:76:12)←[39m
4

2 回答 2

0

看起来 channel.send() 接受一个字符串或嵌入作为参数。您应该在发送之前在外部 lambda 中定义消息:

// abbreviated code to relevant snippet
bot.distube = new DisTube(bot, { searchSongs: false, emitNewSongOnly: true });
bot.distube
   .on("playSong", (message, queue, song) => {
       const exampleEmbed = new Discord.MessageEmbed()
           ...
       message.channel.send(exampleEmbed);
   });
于 2021-03-23T19:36:56.190 回答
0

我从来没有使用过discord js,但是快速浏览一下文档我猜你应该做一些事情,比如首先声明你的变量然后发送它

bot.distube
    .on("playSong", (message, queue, song) => {
    const exampleEmbed = new Discord.MessageEmbed()
           .setColor('#0099ff')
         .setTitle('Playing Now:')
         .setDescription('`${song.name}`')
         .setTimestamp()
         .setFooter(`Requested by: ${song.user}`);  

     message.channel.send(exampleEmbed);
}

还有2个问题。

  1. 注意.setFooter('Requested by: ${song.user}')模板字符串应该带有反引号 ' ' 。见下文
.setFooter(`Requested by: ${song.user}`)
  1. 您的事件侦听器( playSong 和 addSong )和您的send方法似乎没有“关闭”关闭)

在这里阅读更多 ->嵌入不和谐

于 2021-03-23T19:39:17.380 回答