javascript - 如何修复 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;
});
(这与同一主题的其他问题不同)我该如何解决?
解决方案
从上面的错误来看,您似乎在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.js
ormain.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 指南,通读它,看看你能做什么。我强烈建议使用完全不同的机器人和干净的索引文件尝试此操作,因为它比尝试在已经有问题的代码之间适应您不理解的代码更容易。
推荐阅读
- apache-kafka - 使用 Debezium 提取密钥的转换中不存在字段
- django - 为什么我的输入字段没有显示在网站上?
- python - pd.cut 的最小人口规模
- c# - 用于文本框和标签的通用 MouseButtonEventHandler
- python - 即使使用复制方法,Python 列表也会无缘无故地更改
- javascript - ReactJS 和 Material UI CheckBox 状态变化
- python - 将矩阵转换为时空特征向量
- c# - MongoDB - 如何将模型类映射到 C# 中的单个字段?
- javascript - 作为函数参数传递的函数范围
- sql - 如何在两个值之间取最大值?