discord-bots-manager 0.1.0 → 4.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2026 discord-bot-manager
3
+ Copyright (c) 2026 discord-bots-manager
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
package/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # discord-bot-manager
1
+ # discord-bots-manager
2
2
 
3
3
  Spawn, monitor, and manage multiple Discord bot processes from a single Node.js process.
4
4
 
@@ -6,18 +6,21 @@ Each bot runs in its own isolated child process (`child_process.fork`), so a cra
6
6
 
7
7
  ## Features
8
8
 
9
- - **Multi-process isolation** — each bot is a separate OS process
10
- - **Auto-restart** — configurable delay and max retry count
11
- - **IPC** — send messages between the manager and any bot process
12
- - **Lifecycle events** — `start`, `ready`, `crash`, `restart`, `stop`, `error`
13
- - **Graceful shutdown** — sends `shutdown` message, then SIGKILL after 5s timeout
14
- - **Status reporting** — query PID, status, uptime, and restart count per bot
15
- - **TypeScript** — full type declarations included
9
+ - **Discord Bot Management** — manage multiple Discord bots from a single manager process
10
+ - **Multi-Process Isolation** — each bot runs in its own OS process via `child_process.fork`
11
+ - **Auto-Restart** — automatic restart on crash with configurable delay and max retry count
12
+ - **IPC Communication** — send and receive messages between the manager and any bot process
13
+ - **Cluster & Sharding Ready** — built for sharded and clustered Discord bot architectures
14
+ - **Process Lifecycle Control** — start, stop, and restart individual bots or all at once
15
+ - **Graceful Shutdown** — sends shutdown signal, then SIGKILL after configurable timeout
16
+ - **Status Monitoring** — query real-time PID, status, uptime, and restart count per bot
17
+ - **Event System** — rich lifecycle events: `start`, `ready`, `crash`, `restart`, `stop`, `error`
18
+ - **TypeScript First** — full type declarations included out of the box
16
19
 
17
20
  ## Install
18
21
 
19
22
  ```bash
20
- npm install discord-bot-manager
23
+ npm install discord-bots-manager
21
24
  ```
22
25
 
23
26
  > **Peer dependency:** requires `discord.js@^14`
@@ -27,7 +30,7 @@ npm install discord-bot-manager
27
30
  ### Manager (index.js)
28
31
 
29
32
  ```ts
30
- import { Manager } from 'discord-bot-manager'
33
+ import { Manager } from 'discord-bots-manager'
31
34
 
32
35
  const manager = new Manager({
33
36
  bots: [
@@ -64,7 +67,7 @@ This is the script the manager forks. It receives `BOT_NAME`, `BOT_TOKEN`, and `
64
67
 
65
68
  ```ts
66
69
  import { Client, GatewayIntentBits } from 'discord.js'
67
- import type { IPCMessage } from 'discord-bot-manager'
70
+ import type { IPCMessage } from 'discord-bots-manager'
68
71
 
69
72
  const client = new Client({
70
73
  intents: Number(process.env.BOT_INTENTS) || GatewayIntentBits.Guilds,
@@ -7,9 +7,17 @@ export declare class BotProcess extends EventEmitter {
7
7
  restarts: number;
8
8
  lastRestart: number | null;
9
9
  startTime: number | null;
10
+ stdoutBuffer: string[];
11
+ stderrBuffer: string[];
10
12
  private manualStop;
11
13
  private restartTimer;
12
- constructor(config: BotConfig);
14
+ private heartbeatTimer;
15
+ private startupTimer;
16
+ private lastHeartbeat;
17
+ private heartbeatIntervalMs;
18
+ private startupTimeoutMs;
19
+ private backoffBase;
20
+ constructor(config: BotConfig, heartbeatInterval?: number, startupTimeout?: number);
13
21
  get pid(): number | null;
14
22
  get status(): BotStatus['status'];
15
23
  get uptime(): number | null;
@@ -20,6 +28,11 @@ export declare class BotProcess extends EventEmitter {
20
28
  send(msg: Omit<IPCMessage, 'from'> & {
21
29
  from?: 'manager' | 'worker';
22
30
  }): boolean;
31
+ private captureStdio;
32
+ private startHeartbeat;
33
+ private stopHeartbeat;
34
+ private startStartupTimer;
35
+ private clearStartupTimer;
23
36
  private scheduleRestart;
24
37
  private clearRestartTimer;
25
38
  }
@@ -1 +1 @@
1
- {"version":3,"file":"BotProcess.d.ts","sourceRoot":"","sources":["../src/BotProcess.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAQ,MAAM,eAAe,CAAA;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;AACrC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAE1D,qBAAa,UAAW,SAAQ,YAAY;IACnC,MAAM,EAAE,SAAS,CAAA;IACjB,OAAO,EAAE,YAAY,GAAG,IAAI,CAAO;IACnC,QAAQ,SAAI;IACZ,WAAW,EAAE,MAAM,GAAG,IAAI,CAAO;IACjC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAO;IACtC,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,YAAY,CAA6C;gBAErD,MAAM,EAAE,SAAS;IAK7B,IAAI,GAAG,IAAI,MAAM,GAAG,IAAI,CAEvB;IAED,IAAI,MAAM,IAAI,SAAS,CAAC,QAAQ,CAAC,CAOhC;IAED,IAAI,MAAM,IAAI,MAAM,GAAG,IAAI,CAI1B;IAED,QAAQ,IAAI,SAAS;IAWrB,KAAK,IAAI,IAAI;IA2Cb,IAAI,IAAI,IAAI;IAYZ,OAAO,IAAI,IAAI;IAef,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,GAAG;QAAE,IAAI,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAA;KAAE,GAAG,OAAO;IAK9E,OAAO,CAAC,eAAe;IAcvB,OAAO,CAAC,iBAAiB;CAM1B"}
1
+ {"version":3,"file":"BotProcess.d.ts","sourceRoot":"","sources":["../src/BotProcess.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAQ,MAAM,eAAe,CAAA;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;AACrC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAE1D,qBAAa,UAAW,SAAQ,YAAY;IACnC,MAAM,EAAE,SAAS,CAAA;IACjB,OAAO,EAAE,YAAY,GAAG,IAAI,CAAO;IACnC,QAAQ,SAAI;IACZ,WAAW,EAAE,MAAM,GAAG,IAAI,CAAO;IACjC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAO;IAC/B,YAAY,EAAE,MAAM,EAAE,CAAK;IAC3B,YAAY,EAAE,MAAM,EAAE,CAAK;IAClC,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,YAAY,CAA6C;IACjE,OAAO,CAAC,cAAc,CAA8C;IACpE,OAAO,CAAC,YAAY,CAA6C;IACjE,OAAO,CAAC,aAAa,CAAY;IACjC,OAAO,CAAC,mBAAmB,CAAQ;IACnC,OAAO,CAAC,gBAAgB,CAAQ;IAChC,OAAO,CAAC,WAAW,CAAQ;gBAEf,MAAM,EAAE,SAAS,EAAE,iBAAiB,SAAQ,EAAE,cAAc,SAAQ;IAQhF,IAAI,GAAG,IAAI,MAAM,GAAG,IAAI,CAEvB;IAED,IAAI,MAAM,IAAI,SAAS,CAAC,QAAQ,CAAC,CAUhC;IAED,IAAI,MAAM,IAAI,MAAM,GAAG,IAAI,CAI1B;IAED,QAAQ,IAAI,SAAS;IAarB,KAAK,IAAI,IAAI;IA+Db,IAAI,IAAI,IAAI;IAmBZ,OAAO,IAAI,IAAI;IAef,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,GAAG;QAAE,IAAI,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAA;KAAE,GAAG,OAAO;IAK9E,OAAO,CAAC,YAAY;IAiBpB,OAAO,CAAC,cAAc;IAUtB,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,iBAAiB;IASzB,OAAO,CAAC,iBAAiB;IAOzB,OAAO,CAAC,eAAe;IAcvB,OAAO,CAAC,iBAAiB;CAM1B"}
@@ -9,11 +9,22 @@ class BotProcess extends events_1.EventEmitter {
9
9
  restarts = 0;
10
10
  lastRestart = null;
11
11
  startTime = null;
12
+ stdoutBuffer = [];
13
+ stderrBuffer = [];
12
14
  manualStop = false;
13
15
  restartTimer = null;
14
- constructor(config) {
16
+ heartbeatTimer = null;
17
+ startupTimer = null;
18
+ lastHeartbeat = 0;
19
+ heartbeatIntervalMs;
20
+ startupTimeoutMs;
21
+ backoffBase;
22
+ constructor(config, heartbeatInterval = 30000, startupTimeout = 30000) {
15
23
  super();
16
24
  this.config = config;
25
+ this.heartbeatIntervalMs = heartbeatInterval;
26
+ this.startupTimeoutMs = startupTimeout;
27
+ this.backoffBase = config.restartDelay ?? 2000;
17
28
  }
18
29
  get pid() {
19
30
  return this.process?.pid ?? null;
@@ -29,13 +40,16 @@ class BotProcess extends events_1.EventEmitter {
29
40
  return 'stopped';
30
41
  if (this.startTime === null)
31
42
  return 'starting';
43
+ if (this.lastHeartbeat > 0 && Date.now() - this.lastHeartbeat > this.heartbeatIntervalMs * 2) {
44
+ return 'unresponsive';
45
+ }
32
46
  return 'running';
33
47
  }
34
48
  get uptime() {
35
49
  if (this.startTime === null)
36
50
  return null;
37
51
  if (this.process === null || this.process.killed)
38
- return (Date.now() - this.startTime);
52
+ return Date.now() - this.startTime;
39
53
  return Date.now() - this.startTime;
40
54
  }
41
55
  toStatus() {
@@ -45,13 +59,17 @@ class BotProcess extends events_1.EventEmitter {
45
59
  status: this.status,
46
60
  uptime: this.uptime,
47
61
  restarts: this.restarts,
48
- lastRestart: this.lastRestart
62
+ lastRestart: this.lastRestart,
63
+ shardId: this.config.shardId,
64
+ shardCount: this.config.shardCount
49
65
  };
50
66
  }
51
67
  start() {
52
68
  this.manualStop = false;
53
69
  this.startTime = Date.now();
54
70
  this.lastRestart = Date.now();
71
+ this.stdoutBuffer = [];
72
+ this.stderrBuffer = [];
55
73
  const env = {
56
74
  ...process.env,
57
75
  ...this.config.env,
@@ -59,17 +77,31 @@ class BotProcess extends events_1.EventEmitter {
59
77
  BOT_TOKEN: this.config.token,
60
78
  BOT_INTENTS: String(this.config.intents ?? 0)
61
79
  };
80
+ if (this.config.shardId !== undefined) {
81
+ env.SHARD_ID = String(this.config.shardId);
82
+ }
83
+ if (this.config.shardCount !== undefined) {
84
+ env.SHARD_COUNT = String(this.config.shardCount);
85
+ }
62
86
  this.process = (0, child_process_1.fork)(this.config.script, [], {
63
87
  env: env,
64
88
  stdio: ['pipe', 'pipe', 'pipe', 'ipc']
65
89
  });
90
+ this.captureStdio();
66
91
  this.process.on('message', (msg) => {
67
92
  if (msg.type === 'ready') {
93
+ this.clearStartupTimer();
68
94
  this.emit('ready', this.config.name);
69
95
  }
96
+ if (msg.type === 'pong') {
97
+ this.lastHeartbeat = Date.now();
98
+ this.emit('heartbeat', this.config.name);
99
+ }
70
100
  this.emit('message', msg, this.config.name);
71
101
  });
72
102
  this.process.on('exit', (code, signal) => {
103
+ this.stopHeartbeat();
104
+ this.clearStartupTimer();
73
105
  const crashed = !this.manualStop;
74
106
  this.emit('exit', { name: this.config.name, code, signal, crashed });
75
107
  if (crashed) {
@@ -82,6 +114,8 @@ class BotProcess extends events_1.EventEmitter {
82
114
  this.process.on('error', (err) => {
83
115
  this.emit('error', { name: this.config.name, error: err.message });
84
116
  });
117
+ this.startHeartbeat();
118
+ this.startStartupTimer();
85
119
  this.emit('start', this.config.name);
86
120
  }
87
121
  stop() {
@@ -89,11 +123,18 @@ class BotProcess extends events_1.EventEmitter {
89
123
  this.clearRestartTimer();
90
124
  if (!this.process)
91
125
  return;
126
+ const timeout = this.config.shutdownTimeout ?? 5000;
92
127
  this.send({ type: 'shutdown', from: 'manager', botName: this.config.name, timestamp: Date.now() });
93
128
  const killTimeout = setTimeout(() => {
94
- this.process?.kill('SIGKILL');
95
- }, 5000);
96
- this.process.once('exit', () => clearTimeout(killTimeout));
129
+ this.process?.kill('SIGTERM');
130
+ setTimeout(() => {
131
+ this.process?.kill('SIGKILL');
132
+ }, 3000);
133
+ }, timeout);
134
+ this.process.once('exit', () => {
135
+ clearTimeout(killTimeout);
136
+ this.emit('stop', this.config.name);
137
+ });
97
138
  this.process?.disconnect();
98
139
  }
99
140
  restart() {
@@ -116,14 +157,61 @@ class BotProcess extends events_1.EventEmitter {
116
157
  return false;
117
158
  return this.process.send({ ...msg, from: 'manager' });
118
159
  }
160
+ captureStdio() {
161
+ if (this.process?.stdout) {
162
+ this.process.stdout.on('data', (data) => {
163
+ const lines = data.toString().split('\n').filter(Boolean);
164
+ this.stdoutBuffer.push(...lines);
165
+ if (this.stdoutBuffer.length > 100)
166
+ this.stdoutBuffer.splice(0, 50);
167
+ });
168
+ }
169
+ if (this.process?.stderr) {
170
+ this.process.stderr.on('data', (data) => {
171
+ const lines = data.toString().split('\n').filter(Boolean);
172
+ this.stderrBuffer.push(...lines);
173
+ if (this.stderrBuffer.length > 100)
174
+ this.stderrBuffer.splice(0, 50);
175
+ });
176
+ }
177
+ }
178
+ startHeartbeat() {
179
+ this.lastHeartbeat = Date.now();
180
+ this.heartbeatTimer = setInterval(() => {
181
+ this.send({ type: 'ping', from: 'manager', botName: this.config.name, timestamp: Date.now() });
182
+ if (Date.now() - this.lastHeartbeat > this.heartbeatIntervalMs * 2) {
183
+ this.emit('unresponsive', this.config.name);
184
+ }
185
+ }, this.heartbeatIntervalMs);
186
+ }
187
+ stopHeartbeat() {
188
+ if (this.heartbeatTimer) {
189
+ clearInterval(this.heartbeatTimer);
190
+ this.heartbeatTimer = null;
191
+ }
192
+ }
193
+ startStartupTimer() {
194
+ this.startupTimer = setTimeout(() => {
195
+ this.emit('error', { name: this.config.name, error: 'Startup timeout - bot did not signal ready' });
196
+ if (this.process) {
197
+ this.process.kill('SIGTERM');
198
+ }
199
+ }, this.startupTimeoutMs);
200
+ }
201
+ clearStartupTimer() {
202
+ if (this.startupTimer) {
203
+ clearTimeout(this.startupTimer);
204
+ this.startupTimer = null;
205
+ }
206
+ }
119
207
  scheduleRestart() {
120
- const delay = this.config.restartDelay ?? 2000;
121
208
  const max = this.config.maxRestarts ?? Infinity;
122
209
  if (this.restarts >= max) {
123
210
  this.emit('error', { name: this.config.name, error: `Max restarts (${max}) reached` });
124
211
  return;
125
212
  }
126
213
  this.restarts++;
214
+ const delay = Math.min(this.backoffBase * Math.pow(1.5, this.restarts - 1), 30000);
127
215
  this.restartTimer = setTimeout(() => {
128
216
  this.emit('restart', this.config.name);
129
217
  this.start();
@@ -1 +1 @@
1
- {"version":3,"file":"BotProcess.js","sourceRoot":"","sources":["../src/BotProcess.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BotProcess.js","sourceRoot":"","sources":["../src/BotProcess.ts"],"names":[],"mappings":"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"}
package/dist/Manager.d.ts CHANGED
@@ -3,19 +3,31 @@ import { BotConfig, BotStatus, ManagerOptions } from './types';
3
3
  import { BotProcess } from './BotProcess';
4
4
  export declare class Manager extends EventEmitter {
5
5
  bots: Map<string, BotProcess>;
6
+ private heartbeatInterval;
7
+ private startupTimeout;
6
8
  private maxConcurrentRestarts;
7
9
  constructor(options: ManagerOptions);
8
10
  addBot(config: BotConfig): BotProcess;
9
11
  removeBot(name: string): boolean;
10
12
  startAll(): void;
11
13
  start(name: string): void;
14
+ startBatch(names: string[]): void;
12
15
  stopAll(): void;
13
16
  stop(name: string): void;
17
+ stopBatch(names: string[]): void;
14
18
  restartAll(): void;
15
19
  restart(name: string): void;
20
+ restartBatch(names: string[]): void;
21
+ restartShard(botName: string, shardId: number): void;
16
22
  sendTo(name: string, type: string, payload?: unknown): boolean;
17
23
  broadcast(type: string, payload?: unknown): void;
18
24
  status(): BotStatus[];
19
25
  statusOf(name: string): BotStatus | null;
26
+ getLogs(name: string): {
27
+ stdout: string[];
28
+ stderr: string[];
29
+ } | null;
30
+ private register;
31
+ private registerShard;
20
32
  }
21
33
  //# sourceMappingURL=Manager.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Manager.d.ts","sourceRoot":"","sources":["../src/Manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;AACrC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAEzC,qBAAa,OAAQ,SAAQ,YAAY;IAChC,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAY;IAChD,OAAO,CAAC,qBAAqB,CAAQ;gBAEzB,OAAO,EAAE,cAAc;IAQnC,MAAM,CAAC,MAAM,EAAE,SAAS,GAAG,UAAU;IAkBrC,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAQhC,QAAQ,IAAI,IAAI;IAMhB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIzB,OAAO,IAAI,IAAI;IAMf,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIxB,UAAU,IAAI,IAAI;IAMlB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI3B,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO;IAM9D,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI;IAMhD,MAAM,IAAI,SAAS,EAAE;IAIrB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;CAGzC"}
1
+ {"version":3,"file":"Manager.d.ts","sourceRoot":"","sources":["../src/Manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;AACrC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAEzC,qBAAa,OAAQ,SAAQ,YAAY;IAChC,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAY;IAChD,OAAO,CAAC,iBAAiB,CAAQ;IACjC,OAAO,CAAC,cAAc,CAAQ;IAC9B,OAAO,CAAC,qBAAqB,CAAQ;gBAEzB,OAAO,EAAE,cAAc;IAUnC,MAAM,CAAC,MAAM,EAAE,SAAS,GAAG,UAAU;IAiBrC,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAQhC,QAAQ,IAAI,IAAI;IAMhB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIzB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI;IAMjC,OAAO,IAAI,IAAI;IAMf,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIxB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI;IAMhC,UAAU,IAAI,IAAI;IAMlB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI3B,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI;IAMnC,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAIpD,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO;IAM9D,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI;IAMhD,MAAM,IAAI,SAAS,EAAE;IAIrB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAIxC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG;QAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,IAAI;IAMpE,OAAO,CAAC,QAAQ;IAoBhB,OAAO,CAAC,aAAa;CAatB"}
package/dist/Manager.js CHANGED
@@ -5,28 +5,33 @@ const events_1 = require("events");
5
5
  const BotProcess_1 = require("./BotProcess");
6
6
  class Manager extends events_1.EventEmitter {
7
7
  bots = new Map();
8
+ heartbeatInterval;
9
+ startupTimeout;
8
10
  maxConcurrentRestarts;
9
11
  constructor(options) {
10
12
  super();
13
+ this.heartbeatInterval = options.heartbeatInterval ?? 30000;
14
+ this.startupTimeout = options.startupTimeout ?? 30000;
11
15
  this.maxConcurrentRestarts = options.maxConcurrentRestarts ?? 3;
12
16
  for (const botCfg of options.bots) {
13
17
  this.addBot(botCfg);
14
18
  }
15
19
  }
16
20
  addBot(config) {
17
- if (this.bots.has(config.name)) {
18
- throw new Error(`Bot "${config.name}" already registered`);
21
+ if (config.shardCount && config.shardCount > 1) {
22
+ for (let i = 0; i < config.shardCount; i++) {
23
+ const shardCfg = {
24
+ ...config,
25
+ name: `${config.name}-shard-${i}`,
26
+ shardId: i,
27
+ shardCount: config.shardCount
28
+ };
29
+ this.registerShard(shardCfg);
30
+ }
31
+ const bp = this.bots.get(`${config.name}-shard-0`);
32
+ return bp;
19
33
  }
20
- const bp = new BotProcess_1.BotProcess(config);
21
- this.bots.set(config.name, bp);
22
- bp.on('start', (name) => this.emit('bot:start', name));
23
- bp.on('stop', (name) => this.emit('bot:stop', name));
24
- bp.on('crash', (data) => this.emit('bot:crash', data));
25
- bp.on('restart', (name) => this.emit('bot:restart', name));
26
- bp.on('ready', (name) => this.emit('bot:ready', name));
27
- bp.on('error', (data) => this.emit('bot:error', data));
28
- bp.on('message', (msg, name) => this.emit('bot:message', msg, name));
29
- return bp;
34
+ return this.register(config);
30
35
  }
31
36
  removeBot(name) {
32
37
  const bp = this.bots.get(name);
@@ -44,6 +49,11 @@ class Manager extends events_1.EventEmitter {
44
49
  start(name) {
45
50
  this.bots.get(name)?.start();
46
51
  }
52
+ startBatch(names) {
53
+ for (const name of names) {
54
+ this.bots.get(name)?.start();
55
+ }
56
+ }
47
57
  stopAll() {
48
58
  for (const bp of this.bots.values()) {
49
59
  bp.stop();
@@ -52,6 +62,11 @@ class Manager extends events_1.EventEmitter {
52
62
  stop(name) {
53
63
  this.bots.get(name)?.stop();
54
64
  }
65
+ stopBatch(names) {
66
+ for (const name of names) {
67
+ this.bots.get(name)?.stop();
68
+ }
69
+ }
55
70
  restartAll() {
56
71
  for (const bp of this.bots.values()) {
57
72
  bp.restart();
@@ -60,6 +75,14 @@ class Manager extends events_1.EventEmitter {
60
75
  restart(name) {
61
76
  this.bots.get(name)?.restart();
62
77
  }
78
+ restartBatch(names) {
79
+ for (const name of names) {
80
+ this.bots.get(name)?.restart();
81
+ }
82
+ }
83
+ restartShard(botName, shardId) {
84
+ this.bots.get(`${botName}-shard-${shardId}`)?.restart();
85
+ }
63
86
  sendTo(name, type, payload) {
64
87
  const bp = this.bots.get(name);
65
88
  if (!bp)
@@ -77,6 +100,41 @@ class Manager extends events_1.EventEmitter {
77
100
  statusOf(name) {
78
101
  return this.bots.get(name)?.toStatus() ?? null;
79
102
  }
103
+ getLogs(name) {
104
+ const bp = this.bots.get(name);
105
+ if (!bp)
106
+ return null;
107
+ return { stdout: bp.stdoutBuffer, stderr: bp.stderrBuffer };
108
+ }
109
+ register(config) {
110
+ if (this.bots.has(config.name)) {
111
+ throw new Error(`Bot "${config.name}" already registered`);
112
+ }
113
+ const bp = new BotProcess_1.BotProcess(config, this.heartbeatInterval, this.startupTimeout);
114
+ this.bots.set(config.name, bp);
115
+ bp.on('start', (name) => this.emit('bot:start', name));
116
+ bp.on('stop', (name) => this.emit('bot:stop', name));
117
+ bp.on('crash', (data) => this.emit('bot:crash', data));
118
+ bp.on('restart', (name) => this.emit('bot:restart', name));
119
+ bp.on('ready', (name) => this.emit('bot:ready', name));
120
+ bp.on('error', (data) => this.emit('bot:error', data));
121
+ bp.on('unresponsive', (name) => this.emit('bot:unresponsive', name));
122
+ bp.on('heartbeat', (name) => this.emit('bot:heartbeat', name));
123
+ bp.on('message', (msg, name) => this.emit('bot:message', msg, name));
124
+ return bp;
125
+ }
126
+ registerShard(config) {
127
+ const bp = new BotProcess_1.BotProcess(config, this.heartbeatInterval, this.startupTimeout);
128
+ this.bots.set(config.name, bp);
129
+ bp.on('start', (name) => this.emit('shard:start', name));
130
+ bp.on('ready', (name) => this.emit('shard:ready', name));
131
+ bp.on('crash', (data) => this.emit('shard:crash', data));
132
+ bp.on('restart', (name) => this.emit('shard:restart', name));
133
+ bp.on('stop', (name) => this.emit('shard:stop', name));
134
+ bp.on('error', (data) => this.emit('shard:error', data));
135
+ bp.on('unresponsive', (name) => this.emit('shard:unresponsive', name));
136
+ bp.on('message', (msg, name) => this.emit('shard:message', msg, name));
137
+ }
80
138
  }
81
139
  exports.Manager = Manager;
82
140
  //# sourceMappingURL=Manager.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Manager.js","sourceRoot":"","sources":["../src/Manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Manager.js","sourceRoot":"","sources":["../src/Manager.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -6,17 +6,26 @@ export interface BotConfig {
6
6
  env?: Record<string, string>;
7
7
  restartDelay?: number;
8
8
  maxRestarts?: number;
9
+ shutdownTimeout?: number;
10
+ shardId?: number;
11
+ shardCount?: number;
9
12
  }
10
13
  export interface BotStatus {
11
14
  name: string;
12
15
  pid: number | null;
13
- status: 'starting' | 'running' | 'stopped' | 'crashed';
16
+ status: 'starting' | 'running' | 'stopped' | 'crashed' | 'unresponsive';
14
17
  uptime: number | null;
15
18
  restarts: number;
16
19
  lastRestart: number | null;
20
+ shardId?: number;
21
+ shardCount?: number;
22
+ memory?: number;
23
+ cpu?: number;
17
24
  }
18
25
  export interface ManagerOptions {
19
26
  bots: BotConfig[];
27
+ heartbeatInterval?: number;
28
+ startupTimeout?: number;
20
29
  maxConcurrentRestarts?: number;
21
30
  }
22
31
  export interface IPCMessage {
@@ -26,5 +35,5 @@ export interface IPCMessage {
26
35
  botName: string;
27
36
  timestamp: number;
28
37
  }
29
- export type BotEvent = 'start' | 'stop' | 'crash' | 'restart' | 'ready' | 'error' | 'message';
38
+ export type BotEvent = 'start' | 'stop' | 'crash' | 'restart' | 'ready' | 'error' | 'message' | 'unresponsive' | 'heartbeat';
30
39
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;IAClB,MAAM,EAAE,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAA;IACtD,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;CAC3B;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,SAAS,EAAE,CAAA;IACjB,qBAAqB,CAAC,EAAE,MAAM,CAAA;CAC/B;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,IAAI,EAAE,SAAS,GAAG,QAAQ,CAAA;IAC1B,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO,GAAG,SAAS,CAAA"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;IAClB,MAAM,EAAE,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,cAAc,CAAA;IACvE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,GAAG,CAAC,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,SAAS,EAAE,CAAA;IACjB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,qBAAqB,CAAC,EAAE,MAAM,CAAA;CAC/B;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,IAAI,EAAE,SAAS,GAAG,QAAQ,CAAA;IAC1B,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO,GAAG,SAAS,GAAG,cAAc,GAAG,WAAW,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "discord-bots-manager",
3
- "version": "0.1.0",
3
+ "version": "4.2.0",
4
4
  "description": "Spawn and manage multiple Discord bot processes from a single manager using child_process.fork()",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -12,21 +12,15 @@
12
12
  },
13
13
  "keywords": [
14
14
  "discord",
15
- "bot",
16
- "manager",
17
- "process-manager",
18
- "discord.js",
15
+ "discord-bot",
16
+ "discord-js",
17
+ "bot-manager",
18
+ "multiprocess",
19
19
  "cluster",
20
- "shard",
21
20
  "sharding",
22
- "multiprocess",
23
- "child-process",
24
- "fork",
25
- "process-management",
26
- "bot-manager",
27
- "nodejs",
28
- "typescript",
29
- "discord-bot"
21
+ "process-manager",
22
+ "auto-restart",
23
+ "ipc"
30
24
  ],
31
25
  "license": "MIT",
32
26
  "files": [