Visual studio code 我想有一个消息发送到某个频道,机器人正在关闭或打开

Visual studio code 我想有一个消息发送到某个频道,机器人正在关闭或打开,visual-studio-code,command,bots,discord.js,Visual Studio Code,Command,Bots,Discord.js,所以我对制作机器人和编码之类的东西还不熟悉,这可能是一个新手问题,但无论如何,我的机器人没有主机服务器,所以我想也许当机器人关闭时,它会在一个频道中发送消息,但我不知道如何做,或者如果可能的话。我可以让它发生时,机器人打开,但我不知道如何让它发生时,机器人关闭 我甚至不知道从哪里开始。到目前为止,我所知道的是当我键入node时。在终端中,bot打开,通知控制台日志,然后通知服务器。但是我不知道怎么做,因为机器人关闭了 bot.on('ready', () =>{ bot.channels.

所以我对制作机器人和编码之类的东西还不熟悉,这可能是一个新手问题,但无论如何,我的机器人没有主机服务器,所以我想也许当机器人关闭时,它会在一个频道中发送消息,但我不知道如何做,或者如果可能的话。我可以让它发生时,机器人打开,但我不知道如何让它发生时,机器人关闭

我甚至不知道从哪里开始。到目前为止,我所知道的是当我键入node时。在终端中,bot打开,通知控制台日志,然后通知服务器。但是我不知道怎么做,因为机器人关闭了

bot.on('ready', () =>{
bot.channels.get("488916182406004747").send("The cloud has lifted");

})关闭命令

如注释中所述,您可以创建一个简单的命令来关闭客户端,这将发送所需的消息

例如:

//使用关键字'await'需要异步上下文
试一试{
wait message.channel.send('再见');//发送消息
等待消息。删除();//删除命令消息
wait client.user.setStatus('invisible');//将客户端标记为脱机(而不是等待)
wait client.destroy();//删除客户端实例
}捕捉(错误){
console.error(err);//返回拒绝承诺中的所有错误
}
Webhook

如果您希望在节点进程出于任何原因(例如客户端注销、计算机关闭、CTRL+C等)退出时发送消息,则可以创建一个并在进程的事件中使用它

要创建Webhook,请导航到要发送消息的频道的选项。转到Webhook,单击创建Webhook,自定义选项,复制Webhook URL,然后单击保存。在URL中,ID是仅在
/webhooks/
之后的第一组数字,标记紧跟在下一组
/
之后

例如:

const{id,token}=require('./webhook.json');//带有Webhook ID和令牌的json文件
//const Discord=require('Discord.js');
//const client=new Discord.client();
const webhook=new Discord.WebhookClient(id,token);
process.once('beforexit',()=>{
webhook.send(`${client.user}已脱机。`)
.catch(控制台错误);
});
另外:您还可以在ready事件中使用Webhook发送“ready”消息

client.once('ready',()=>{
webhook.send(`${client.user}现在联机。`)
.catch(控制台错误);
});

编辑:

当Node.js进程意外退出时,如关闭控制台窗口时,
beforeExit
事件将不会发出。因此,只有当客户端崩溃或在控制台窗口中使用
CTRL
/
CMD
+
C
时,Webhook选项才有帮助


我的建议是坚持执行关闭命令。若要在没有正确托管的情况下保持bot运行,您可以尝试使用process manager或创建Windows服务。

只有当bot因特定原因关闭时,您才能实现此目的。例如,如果您向其发出shutdown命令。但是,如果它是由于其他原因发生的,比如崩溃,或者你的电源断开,它不会发送消息。这取决于bot是如何启动的。你可能能够在系统端捕获崩溃,并向你创建的webhook url发送请求,这样webhook会在通道中发送消息,但这取决于bot脱机的方式/原因。如@MegaEmailman所说,如果是因为某个命令,您可以发送一条消息。你也可以用很难的方式来解决它,然后用(查找)来处理它。很抱歉,我无法让它工作。我可以让“准备好”消息工作,但不能让“退出前”消息工作。你是说用Webhook吗?有什么错误吗?发生了什么?没有任何错误。它只是不发送任何东西。对于我来说,这就是const{id,webtoken}=require('./webhook.json');const webhook=new Discord.WebhookClient(id,webtoken);process.once('beforexit',()=>{webhook.send(${bot.user}已脱机。).catch(console.error);});我的道歉;在我自己的一些测试之后,当强制停止Node.js进程时,
beforeExit
不会发出。当bot崩溃时,仍然会发送消息,但如果关闭命令提示窗口,则不会发送消息。我的建议是坚持执行关机命令。