【问题标题】:How do i delete a message in discord.js v12如何删除 discord.js v12 中的消息
【发布时间】:2021-01-12 00:51:36
【问题描述】:

我制作了一个机器人,当我更新到 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
}

【问题讨论】:

    标签: discord discord.js


    【解决方案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);
    }
    

    这不是尝试两次删除相同的消息,而是将通道存储在一个变量中,将消息发送到通道,然后删除它自己的消息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-21
      • 2021-01-03
      • 2020-10-18
      • 2021-07-16
      • 2020-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多