我制作了一个机器人,当我更新到 discord.js v12 时,我将代码更改为 v12,但出现此错误 这是我的代码 我试图卸载然后安装discord.js
const Discord = require("discord.js");
const bot = new Discord.Client();
module.exports.run = async (bot, message, args) => {
message.delete();
let totalSeconds = (bot.uptime / 1000);
totalSeconds %= 86400;
let hours = Math.floor(totalSeconds / 3600);
totalSeconds %= 3600;
let minutes = Math.floor(totalSeconds / 60);
let uptimeEmbed = new Discord.MessageEmbed()
.setDescription(`${bot.user.username} Bot Uptime`)
.setColor("#e56b00")
.addField("Hours", hours)
.addField("Minutes", minutes)
.setTimestamp()
.setFooter(`Lavet`)
message.channel.send(uptimeEmbed).then(message.delete({ timeout: 5000 })).catch(console.error)
}
module.exports.help = {
name: "uptime" //NAVNET ER LIG MED KOMMANDOEN
}
这是我尝试时遇到的错误
C:\Users\lauri\Desktop\QuebecCity\node_modules\discord.js\src\rest\RequestHandler.js:154
throw new DiscordAPIError(request.path, data, request.method, res.status);
^
DiscordAPIError: Unknown Message
at RequestHandler.execute (C:\Users\lauri\Desktop\QuebecCity\node_modules\discord.js\src\rest\RequestHandler.js:154:13)
at processTicksAndRejections (node:internal/process/task_queues:93:5)
at async RequestHandler.push (C:\Users\lauri\Desktop\QuebecCity\node_modules\discord.js\src\rest\RequestHandler.js:39:14)
at async MessageManager.delete (C:\Users\lauri\Desktop\QuebecCity\node_modules\discord.js\src\managers\MessageManager.js:126:5) {
method: 'delete',
path: '/channels/791725159362330635/messages/798219060780466196',
code: 10008,
httpStatus: 404
}
答案 0 :(得分:1)
在您的代码中,您尝试删除同一条消息两次。
首先在 message.delete();
中,然后在
message.channel.send(uptimeEmbed).then(message.delete({ timeout: 5000 })).catch(console.error)
对于上下文,Discord API 中的错误代码 10008 表示无法找到该消息,这在当前情况下是有意义的。
为了解决这个问题,假设第二个 message.delete 试图删除机器人发送的 uptimeEmbed 消息,你可以这样做:
module.exports.run = async (bot, message, args) => {
let channel = message.channel;
message.delete();
let totalSeconds = (bot.uptime / 1000);
totalSeconds %= 86400;
let hours = Math.floor(totalSeconds / 3600);
totalSeconds %= 3600;
let minutes = Math.floor(totalSeconds / 60);
let uptimeEmbed = new Discord.MessageEmbed()
.setDescription(`${bot.user.username} Bot Uptime`)
.setColor("#e56b00")
.addField("Hours", hours)
.addField("Minutes", minutes)
.setTimestamp()
.setFooter(`Lavet`)
channel.send(uptimeEmbed).then(msg => msg.delete({ timeout: 5000 })).catch(console.error);
}
这不是尝试两次删除同一条消息,而是将通道存储在一个变量中,将消息发送到通道,然后删除它自己的消息。