-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathmain.ts
133 lines (116 loc) · 4.09 KB
/
main.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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
/**
* User: Bc. Milián Daniel
* Date: 27/07/2021
* Time: 18:07
*/
import {Bot} from "./bot";
import * as _Config from "./config.json";
import * as _Messages from "./messages.json";
import * as _Auth from "./auth.json";
import * as _Package from "./package.json";
export let Config = _Config;
export let Messages = _Messages;
export let Auth = _Auth;
export let Package = _Package;
import * as Services from "./libs/Services";
import * as Logger from "./libs/Logger";
import {Client} from "discord.js";
import * as _Database from "./libs/DB";
export let Database = _Database;
import {VerificationService} from "./services/VerificationService";
import {StudentCheckService} from "./services/StudentCheckService";
import {AdminService} from "./services/AdminService";
import {ChannelCleanService} from "./services/ChannelCleanService";
import {PostingService} from "./services/PostingService";
import {PollService} from "./services/PollService";
import {StudentInfoScraperService} from "./services/StudentInfoScraperService";
import {CheckerLogService} from "./services/CheckerLogService";
import {DatabaseManagerService} from "./services/DatabaseManagerService";
import {MasterServerSocketService} from "./services/MasterServerSocketService";
import {MessageManagerService} from "./services/MessageManagerService";
// const WebService = require("./services/WebService");
//const PinService = require("./services/PinService");
//const PermissionService = require("./services/PermissionService");
export let DEBUG: boolean = false;
let bots: Bot[] = [];
let currentBot: Bot = null;
/**
* Returns bot by name.
* @param {string} name
* @return {Bot}
*/
export function GetBot(name: string): Bot {
for (let i = 0; i < bots.length; ++i) {
if (bots[i].name === name) return bots[i];
}
return null;
}
export function WaitForBot(name: string): Promise<Bot> {
return new Promise<Bot>((resolve, reject) => {
let bot: Bot = GetBot(name);
if (bot.client.user === null) {
bot.client.on("ready", () => {
resolve(bot);
});
return;
}
resolve(bot);
});
}
export function SetCurrentBot(client: Client): void {
for (let i = 0; i < bots.length; ++i) {
if (bots[i].client === undefined)
continue;
if (bots[i].client.user.id === client.user.id) {
currentBot = bots[i];
return;
}
}
}
/**
* Returns current executing bot.
* @return {Bot}
*/
export function GetCurrentBot(): Bot {
return currentBot;
}
/**
* Checks if specified ID is bot's ID.
* @param {string} id
* @return {boolean}
*/
export function IsBotId(id: string) {
for (let i = 0; i < bots.length; ++i) {
if (bots[i].client.user.id === id) return true;
}
return false;
}
let start = () => {
DEBUG = false;
if (process.argv.length >= 3 && process.argv[2] === "--debug")
DEBUG = true;
let keys = Object.keys(Auth.bots);
for (let i = 0; i < keys.length; ++i) {
Logger.Info(`Registering bot ${keys[i]}.`);
let token = Auth.bots[keys[i]];
bots.push(new Bot(keys[i], token));
}
Services.AddService(new VerificationService());
// Services.AddService(new StudentCheckService());
Services.AddService(new AdminService());
// Services.AddService(new ChannelCleanService());
// Services.AddService(new PostingService());
Services.AddService(new PollService());
// Services.AddService(new StudentInfoScraperService());
// Services.AddService(new WebService());
Services.AddService(new CheckerLogService());
//Services.AddService(new PinService());
//Services.AddService(new PermissionService());
Services.AddService(new DatabaseManagerService());
Services.AddService(new MasterServerSocketService());
Services.AddService(new MessageManagerService());
Services.OnStart(null).then(() => {
Logger.Info(`Ready. Version: ${Package.version} ${DEBUG ? "[DEBUG]" : ""}`);
});
};
start();