У меня проблемы с тем, чтобы мой бот-диск node.js (Discord.js Lib) запускал только один процесс.
Как я запускаю скрипт
зависимости:
ansi-colors 3.2.4
discord.js 11.4.2
enmap 4.8.4
esm 3.2.22
nodemon 1.18.11
superagent 5.0.2
uuid 3.3.2
devDependencies:
babel-eslint 10.0.1
eslint-config-airbnb-base 13.1.0
eslint-plugin-import 2.17.2
my scripts
свойство package.json
файла
{
"scripts": {
"start": "nodemon -r esm index.js"
}
}
примечание: esm
- это модуль узла для запуска модулей es6
В index.js
:
/**
* my real index.js file has a command handler,
* error handler and much more, as well as a few
* Enmaps for some personal uses, but nothing that
* would make this bot reply to itself
*/
import Enmap from 'enmap';
import { Client } from 'discord.js';
import { config } from 'dotenv';
config();
const client = new Client({ disableEveryone: true });
client.commands = new Enmap
client.on('ready', client => {
console.log('Ready!');
}
client.on('message', message => {
if (message.author.bot) {
return;
}
/** @type {string} */
const prefix = "-";
if (!message.content.startsWith(prefix)) {
return;
}
const args = message.content.slice(prefix.length).split(/\s+/g);
const command = args.shift();
const cmd = client.commands.get(command);
if (!cmd) {
return;
}
cmd.run(message, args);
}
client.login(process.env.CLIENT_TOKEN)
В моем каталоге с моим package.json
$ npm start
Кажется, что все нормально, но затем в диспетчере задач появляются процессы с 2, 3 или даже 6 узлами, и моя программа отвечает столько раз.
Если есть 3 процесса, и я запускаю событие, оно запускается 3 раза, хотя я не знаю, что могло бы вызвать это.
Теоретически, должно быть запущено только одно событие 'message'
Что я пробовал
Уничтожение всех процессов node.js в моем текущем и других открытых терминалах (Git Bash)
Уничтожение всех процессов в моем диспетчере задач
Запуск моего стартового скрипта без вызова npm
Запуск моего сценария запуска (с и без npm) в командной строке по умолчанию