在删除响应消息时出现“ DiscordAPIError:未知消息”

时间:2019-07-17 03:46:29

标签: javascript bots discord discord.js

我正在尝试使用Discord.js机器人在JavaScript中创建菜单。到目前为止,除我应用删除消息的响应外,其他所有操作均正常。该消息被删除,但是此错误在控制台中被发送垃圾邮件:

DiscordAPIError: Unknown Message

我在其他区域进行了检查,并小心地只删除了一次消息,但是即使如此,我仍然感觉到该漫游器试图多次删除它。我还尝试过return来尝试停止代码,并为delete方法设置一个计时器。这些尝试都没有解决错误。

这是我正在使用的代码:

message.channel.send(exampleEmbed2).then(sentEmbed => {

    sentEmbed.react('?');  
    sentEmbed.react('✅');
    sentEmbed.react('❌');

    client.on('messageReactionAdd', (reaction, user) => {

        if (!user.bot && reaction.emoji.name === '?') {
            sentEmbed.delete();
        }

    });
});

1 个答案:

答案 0 :(得分:2)

正如Gruntzy所解释的...

  

...使用此代码,每当有人对任何带有message的消息作出反应时,都会运行您的代码。

与将另一个侦听器附加到嵌套的message.channel.send(exampleEmbed2) .then(async sentEmbed => { // Somewhat awkward to switch to async/await here, but much cleaner. await sentEmbed.react('?'); await sentEmbed.react('✅'); await sentEmbed.react('❌'); const filter = (reaction, user) => ['?', '✅', '❌'].includes(reaction.emoji.name) && user.id === message.author.id const [reaction] = await sentEmbed.awaitReactions(filter, { maxMatches: 1 }); // ^^^^^^^^^^ // This is a destructuring // assignment. It takes the // first (and only) element // from the Collection/Map. if (reaction.emoji.name === '?') await sentEmbed.delete(); // Do stuff with the other reactions... }) .catch(console.error); 事件相反,请使用Reaction Collectors。这些是用于此目的的,并且只会在您将其附加到邮件上的反应时触发。

请考虑以下示例,该示例使用基于承诺的收集器版本(请参见Message.awaitReactions())...

{{1}}