对于重新启动命令,我有以下三行代码。但是,当我运行命令时,该自动程序会关闭并且永远不会重新启动。我不完全确定为什么该漫游器不会自行重启;或使用此代码可能吗?
Nodemon:v^2.0.4
Discord.JS:v12.2.0
const { token } = require("./config.json");
// Other Codes
if (message.author.id !== '422103069808132106') return;
await message.channel.send("Restarting")
process.exit().then(() => client.login(token))
答案 0 :(得分:0)
似乎可以通过使用child_process
来做类似的事情。您可以通过运行npm i child_process
来添加它,然后像这样const cp = require('child_process');
导入它。
重新启动的代码将如下所示:
await message.channel.send("Restarting")
const child = cp.spawn('node', ['<YourScriptFileNameHere>'], { detached: true })
child.unref()
process.exit()
这将创建另一个进程,该进程将再次运行您的脚本,并将其与当前进程分离。现在,当您运行process.exit()
时,当前进程将退出,但另一个进程将在后台运行bot。
如果通常在控制台中运行类似node index.js
之类的程序来启动bot,则在运行第一个重新启动命令后将看不到任何输出。如果您在任务管理器中查找,可以通过搜索Node.js: Server-side Javascript
找到运行机器人的进程。如果要停止漫游器,则必须手动结束此任务。
我自己没有发现任何内存泄漏,但是如果您经常运行重新启动命令,那可能是个问题。