首页 > 解决方案 > 如何修复 DiscordAPIError:未知消息?

问题描述

我制作了一个删除图像通道中的文本消息的机器人,但是当我使用它时,它会记录此错误。

client.on("message", async message => {
    if (message.author.bot) return;
    const users = ['853248522563485717'];
    if (message.channel.id === '841260660960395287') {
        if (users.includes(message.author.id)) return;
        if (message.attachments.size !== 0) return;
        message.member.send("You can't send text in 'images' channel")
         await message.delete();
    } else return;
});

(这与同一主题的其他问题不同)我该如何解决?

标签: javascriptnode.jsdiscord.js

解决方案


从上面的错误来看,您似乎在message event listener为您希望机器人执行的每个命令或功能使用 a。最大值为 11(相同类型)。这不是正确的方法。

什么是事件监听器?

//the 'client.on' function is called every time a 'message' is sent

client.on("message", async (message) => {
  //do code
});

如何解决这个问题:

不是每个命令使用 1 个事件侦听器,而是为整个客户端使用 1。你可以通过多种方式解决这个问题,使用命令处理程序等,但我会保持简单。

这是您应该在index.jsormain.js文件中看到的基本设置:

// require the discord.js module
const Discord = require('discord.js');

// create a new Discord client
const client = new Discord.Client();

// on message, run this
client.on('message', (message) => {
    if (!message) return;
    console.log(`message sent in ${message.channel.name}. message content: ${message.content}`);
    //this event will fire every time a message is sent, for example.
});

// login to Discord with your app's token
client.login('your-token-goes-here');

那么如果你想用你的机器人做多个功能,你会怎么做?(例如删除仅图像通道中的文本并将消息记录到控制台)

命令处理。这是唯一的方法。我在上面链接了一个官方 Discord.js 指南,通读它,看看你能做什么。我强烈建议使用完全不同的机器人和干净的索引文件尝试此操作,因为它比尝试在已经有问题的代码之间适应您不理解的代码更容易。


推荐阅读