首页 > 解决方案 > Discord JS - DiscordAPIError:未知消息

问题描述

我收到一个错误:

DiscordAPIError: Unknown Message
    at RequestHandler.execute (D:\Programming\Discord Bot\node_modules\discord.js\src\rest\RequestHandler.js:298:13)        
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
    at async RequestHandler.push (D:\Programming\Discord Bot\node_modules\discord.js\src\rest\RequestHandler.js:50:14)      
    at async MessageManager.delete (D:\Programming\Discord Bot\node_modules\discord.js\src\managers\MessageManager.js:205:5)
    at async Message.delete (D:\Programming\Discord Bot\node_modules\discord.js\src\structures\Message.js:741:5)
    at async AudioPlayer.<anonymous> (D:\Programming\Discord Bot\src\commands\next.js:44:21) {
  method: 'delete',
  path: '/channels/888095042437259287/messages/909879363472855080',
  code: 10008,
  httpStatus: 404,
  requestData: { json: undefined, files: [] }
}

尝试删除上一个时。像这样的消息:

await client.message.channel.send({
            content: `Song "${client.currentSong}" is playing`,
            components: [row],
        })
            .then(message => {
                client.player.on(AudioPlayerStatus.Idle, async () => {
                    await message.delete();
                });
            });

此代码通过另外一个事件代码执行:

client.player.on(AudioPlayerStatus.Idle, () => {
    if (!client.loop) client.playlist.shift();
    if (client.playlist.length === 0) return;
    next.run(client.message, client.args, client);
});

为什么它不起作用?

标签: javascriptnode.jsdiscord.js

解决方案


您正在创建一个无限事件侦听器,这意味着每当音频播放器空闲时,它都会尝试删除消息(即使它已经被删除)。更改它,client.player.once以便第一次删除侦听器。

.then(message => {
    client.player.once(AudioPlayerStatus.Idle, async () => {
        await message.delete();
    });
})

推荐阅读