messageid出现问题,并将反应收集器放置在discord.js中的正确消息上

时间:2020-08-19 19:36:30

标签: javascript discord discord.js

我正在尝试创建一个不和谐的嵌入,该嵌入在按下反应时会更新。到目前为止,这是我尝试过的:

bot.on('message', message => {
    //  if (message.author.bot) return;
    const args = message.content.slice(prefix.length).trim().split(/ +/g);
    let msg = message.content.toLowerCase();

    if (msg === 'test2') {
        message.channel.send(embed)
         .then(async embedmsg => 
        await embedmsg.react('⚔️')).then(() => {
            let collector = embedmsg.createReactionCollector(() => {
                return true;
            }, {
                dispose: true,
            });
            collector.on('collect', (reaction, user) => {
                let emojiName = reaction.emoji.name;
                if (user.id == bot.user.id) return;
                if (emojiName != '⚔️') return;
                console.log('here')
                embedmsg.edit(newEmbed1)

一切似乎正常,但我收到错误消息msg

(node:58428) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'createReactionCollector' of undefined

是的,我已经声明了var embedmsg。 如果我更改行:

let collector = embedmsg.createReactionCollector(() => { 

收件人:

let collector = message.createReactionCollector(() => {

它仅在原始“ test2”消息上运行收集器,由于它不是由机器人发送的,因此无法对其进行编辑。任何提示将不胜感激!由于我已经很长时间没有编码了,所以这可能是一个超级容易的修复程序。

1 个答案:

答案 0 :(得分:1)

embedmsg不再定义,因为您关闭了.then()方法。

 message.channel.send(embed)
         .then(async embedmsg => 
        await embedmsg.react('⚔️'))
//                                ^^
// since you ended the callback, embedmsg is no longer defined.
             .then(() => {

相反,使用:

message.channel.send(embed).then(async (embedmsg) => {
  await embedmsg.react("⚔️").then(() => {
    let collector = embedmsg.createReactionCollector(
      () => {
        return true;
      },
      {
        dispose: true,
      }
    );
  });
}); // close the callback down here instead