我有一个Discord机器人,正在为其编写重启功能。我希望能够运行一个命令,该命令不仅可以停止脚本,而且可以杀死并重新启动它,因此我可以快速实现更新。我已经意识到Discord API不足以实现此目的,因此我没有将其添加到标签中。我能想到的最简单的方法是使用两个相互调用的脚本。
我发现的每个资源都引用了称为PM2的模块(?)或称为VBScript的编程语言。我不想弄乱每次保存时都会自动重新启动的模块,尤其是我不想尝试学习一种新语言。
这是我的伪代码,显示我的目标:
[bot.js]
function reboot() {
runFile(`./reboot.js`)
}
[reboot.js]
kill (`./bot.js`)
runFile(`./bot.js`)
我希望的结果是让bot.js运行reboot.js。然后Reboot.js将退出bot.js并再次运行。然后reboot.js将关闭。我不在乎bot.js上已经在运行任何进程。
当然,如果有更简单的方法可以做到这一点,请告诉我。我需要尽可能的简单。
答案 0 :(得分:1)
PM2是一位流程经理,将为您解决问题。
易于安装:npm install pm2 -g
启动您的机器人:pm2 start bot.js --name "Discord Bot"
从代码角度来说,您只需要kill the process。 PM2,作为流程管理器,将为您重新启动。
答案 1 :(得分:1)
我知道了。我使用了内置在node.js中的子进程模块。
[bot.js]
var cp = require('child_process');
function reboot() {
var ls = cp.spawn('node', ['reboot.js']);
client.destroy()
}
[full contents of reboot.js]
var cp = require('child_process');
var ls = cp.spawn('node', ['bot.js']);
(将所有这些信息发布给其他菜鸟使用)
编辑:请注意,重新启动后,控制台输出不再起作用,因为它是从reboot.js运行的,而不是直接从终端运行的。
答案 2 :(得分:0)
我不熟悉Discord机器人,但是如果您想以编程方式在NodeJS中启动,杀死和重新启动进程,则需要研究child_process
模块。
https://nodejs.org/api/child_process.html#child_process_child_process