【发布时间】:2021-11-19 01:13:28
【问题描述】:
我正在使用 discord.js v13,我得到提示,我可能对 message.delete() 功能有问题。但是,我尝试将它包围在 try/catch statement 中,但我仍然收到错误消息。我不确定它是如何触发的,但它仍然会删除消息,但仍会保持消息对作者可见。
我的代码:
if(message.content.startsWith(PREFIX)) {
if(message.channel.id != ChannelID) return message.channel.send({ embeds: [wrongChannel] }) && message.delete({ timeout: 1000 });
switch(args[0]) {
case "help":
client.commands.get('help').run(client, message);
break;
case "ping":
client.commands.get('ping').run(client, message, args);
break;
case "ban":
client.commands.get('ban').run(client, message, args);
break;
case "kick":
client.commands.get('kick').run(client, message, args);
break;
case "mute":
client.commands.get('mute').run(client, message, args);
break;
default:
message.channel.send({ embeds: [err] });
try {
await message.delete({ timeout: 1000 });
} catch (e) {
console.error(e);
}
}
try {
await message.delete({ timeout: 1000 });
} catch (e) {
console.error(e);
}
}
错误:
DiscordAPIError: Unknown Message
at RequestHandler.execute (D:\Discord Bots\test\node_modules\discord.js\src\rest\RequestHandler.js:298:13)
at processTicksAndRejections (node:internal/process/task_queues:96:5)
at async RequestHandler.push (D:\Discord Bots\test\node_modules\discord.js\src\rest\RequestHandler.js:50:14)
at async MessageManager.delete (D:\Discord Bots\test\node_modules\discord.js\src\managers\MessageManager.js:205:5)
at async Message.delete (D:\Discord Bots\test\node_modules\discord.js\src\structures\Message.js:709:5)
at async Client.<anonymous> (D:\Discord Bots\test\index.js:72:13) {
method: 'delete',
path: '/channels/891701894559461407/messages/891720458859331585',
code: 10008,
httpStatus: 404,
requestData: { json: undefined, files: [] }
}
这是为了检查命令是否在错误频道中执行,然后它将向他们发送我制作的嵌入并删除消息。如果不是,但他们已经正确输入了命令,在正确输入后它将被删除,反之亦然。输入错误后,它将发送嵌入并将其删除。如果没有 try/catch,它只会让作者看到它并使机器人崩溃。但是使用 try/catch 它只会发送错误然后使消息对作者可见,但对其他人不可见。这意味着它可以工作并且确实会删除,而不是对作者并抛出该错误。
【问题讨论】:
-
嗨!您正在使用
await,但它是否在async函数中有效地等待承诺,然后再继续其工作? -
有人告诉我添加
await,但没有任何区别 -
好的,我刚刚注意到在您的代码中,您将其删除了两次,这是为了什么?如果
default:部分(第一次调用)已完成,那么我在第二次调用时收到404错误也就不足为奇了。我知道,它不处理消息保持可见的事实
标签: javascript discord discord.js