我希望我的机器人在每次出错时都发送一条消息

时间:2019-08-14 13:28:28

标签: discord.js

我想做到这一点,所以每次我的机器人出现错误时,它都会在通道中发送错误,但它什么都不做

bot.on('error', function (err) {
  bot.guilds.get("609118791854456860").channels.get("609118791854456865").send(err)
})

2 个答案:

答案 0 :(得分:2)

我不认为客户端会发出一个称为“错误”的事件。此处的代码应捕获所​​有未捕获的错误,并将其发送到您选择的频道中:

process.on("uncaughtException", e => {
    console.error(e);
    Client.channels.get("YOUR CHANNEL ID").send(e.stack.slice(0, 2000); //ensure the stack trace is not too long, messages are limited to 2000 characters
    process.exit();
});

在此代码段中,我将我的new Discord.Client()实例命名为Client,似乎您已经将自己的命名为bot,因此可以交换两个名称。

答案 1 :(得分:0)

根据文档,Error Event被称为
whenever the client's WebSocket encounters a connection error.
,我相信关键是连接错误。因此,如果调用此事件,则说明您不再连接或连接出现问题。因此,如果无法连接,则无法发送任何消息。

一种解决方法是Cloud的答案,并使用
process.on("uncaughtException", e => {})

但以防万一错误是致命的,并且僵尸程序无法连接。您应该将错误保存到.txt文件中,这样,只要漫游器成功重新连接,就可以将该文件中的所有内容发送到所需的频道。然后,如果机器人成功发送了邮件,请让它删除该文件。