退出程序后Bot没有重新启动

时间:2020-07-08 23:59:14

标签: javascript node.js bots discord discord.js

对于重新启动命令,我有以下三行代码。但是,当我运行命令时,该自动程序会关闭并且永远不会重新启动。我不完全确定为什么该漫游器不会自行重启;或使用此代码可能吗?

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))

1 个答案:

答案 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找到运行机器人的进程。如果要停止漫游器,则必须手动结束此任务。

我自己没有发现任何内存泄漏,但是如果您经常运行重新启动命令,那可能是个问题。