-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathmanager.ts
48 lines (38 loc) · 1.53 KB
/
manager.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
import { Shard, ShardingManager } from 'discord.js';
import { JobService, Logger } from './services';
let Config = require('../config/config.json');
let Debug = require('../config/debug.json');
let Logs = require('../lang/logs.json');
export class Manager {
constructor(private shardManager: ShardingManager, private jobService: JobService) {}
public async start(): Promise<void> {
this.registerListeners();
let shardList = this.shardManager.shardList as number[];
try {
Logger.info(
Logs.info.managerSpawningShards
.replaceAll('{SHARD_COUNT}', shardList.length.toLocaleString())
.replaceAll('{SHARD_LIST}', shardList.join(', '))
);
await this.shardManager.spawn({
amount: this.shardManager.totalShards,
delay: Config.sharding.spawnDelay * 1000,
timeout: Config.sharding.spawnTimeout * 1000,
});
Logger.info(Logs.info.managerAllShardsSpawned);
} catch (error) {
Logger.error(Logs.error.managerSpawningShards, error);
return;
}
if (Debug.dummyMode.enabled) {
return;
}
this.jobService.start();
}
private registerListeners(): void {
this.shardManager.on('shardCreate', shard => this.onShardCreate(shard));
}
private onShardCreate(shard: Shard): void {
Logger.info(Logs.info.managerLaunchedShard.replaceAll('{SHARD_ID}', shard.id.toString()));
}
}