kythia-core 0.12.6-beta → 0.12.7-beta

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.
Files changed (72) hide show
  1. package/dist/Kythia.d.ts.map +1 -1
  2. package/dist/Kythia.js +1 -521
  3. package/dist/Kythia.js.map +1 -1
  4. package/dist/KythiaClient.js +1 -78
  5. package/dist/cli/Command.js +1 -16
  6. package/dist/cli/commands/AboutCommand.js +1 -114
  7. package/dist/cli/commands/CacheClearCommand.js +1 -97
  8. package/dist/cli/commands/DIGenerateCommand.js +1 -168
  9. package/dist/cli/commands/LangCheckCommand.js +1 -478
  10. package/dist/cli/commands/LangSyncCommand.js +1 -253
  11. package/dist/cli/commands/LangTranslateCommand.js +1 -224
  12. package/dist/cli/commands/MakeMigrationCommand.js +1 -55
  13. package/dist/cli/commands/MakeModelCommand.js +1 -56
  14. package/dist/cli/commands/MigrateCommand.js +1 -190
  15. package/dist/cli/commands/NamespaceCommand.js +1 -92
  16. package/dist/cli/commands/StructureCommand.js +1 -51
  17. package/dist/cli/commands/UpversionCommand.js +1 -68
  18. package/dist/cli/index.js +1 -43
  19. package/dist/cli/utils/db.js +1 -93
  20. package/dist/database/KythiaMigrator.js +1 -94
  21. package/dist/database/KythiaModel.js +1 -1128
  22. package/dist/database/KythiaSequelize.js +1 -99
  23. package/dist/database/KythiaStorage.js +1 -80
  24. package/dist/database/ModelLoader.js +1 -54
  25. package/dist/index.js +1 -36
  26. package/dist/lang/lang/en.json +85 -0
  27. package/dist/managers/AddonManager.js +1 -1097
  28. package/dist/managers/EventManager.js +1 -106
  29. package/dist/managers/InteractionManager.d.ts.map +1 -1
  30. package/dist/managers/InteractionManager.js +1 -482
  31. package/dist/managers/InteractionManager.js.map +1 -1
  32. package/dist/managers/MiddlewareManager.js +1 -106
  33. package/dist/managers/ShutdownManager.js +1 -179
  34. package/dist/managers/TelemetryManager.d.ts +7 -0
  35. package/dist/managers/TelemetryManager.d.ts.map +1 -1
  36. package/dist/managers/TelemetryManager.js +1 -201
  37. package/dist/managers/TelemetryManager.js.map +1 -1
  38. package/dist/managers/TranslatorManager.js +1 -145
  39. package/dist/middlewares/botPermissions.js +1 -28
  40. package/dist/middlewares/cooldown.js +1 -42
  41. package/dist/middlewares/isInMainGuild.js +1 -52
  42. package/dist/middlewares/ownerOnly.js +1 -24
  43. package/dist/middlewares/userPermissions.js +1 -28
  44. package/dist/structures/BaseCommand.js +1 -42
  45. package/dist/types/AddonManager.js +1 -3
  46. package/dist/types/DiscordHelpers.js +1 -3
  47. package/dist/types/EventManager.js +1 -3
  48. package/dist/types/InteractionManager.js +1 -3
  49. package/dist/types/KythiaClient.js +1 -3
  50. package/dist/types/KythiaConfig.js +1 -3
  51. package/dist/types/KythiaContainer.d.ts +1 -0
  52. package/dist/types/KythiaContainer.d.ts.map +1 -1
  53. package/dist/types/KythiaContainer.js +1 -3
  54. package/dist/types/KythiaLogger.js +1 -3
  55. package/dist/types/KythiaMigrator.js +1 -3
  56. package/dist/types/KythiaModel.js +1 -3
  57. package/dist/types/KythiaOptions.js +1 -3
  58. package/dist/types/KythiaSequelize.js +1 -3
  59. package/dist/types/KythiaStorage.js +1 -3
  60. package/dist/types/MiddlewareManager.js +1 -3
  61. package/dist/types/ModelLoader.js +1 -3
  62. package/dist/types/ShutdownManager.js +1 -3
  63. package/dist/types/TranslatorManager.js +1 -3
  64. package/dist/types/error.js +1 -3
  65. package/dist/types/index.js +1 -29
  66. package/dist/utils/InteractionFactory.js +1 -334
  67. package/dist/utils/color.js +1 -156
  68. package/dist/utils/discord.js +1 -19
  69. package/dist/utils/formatter.js +1 -89
  70. package/dist/utils/index.js +1 -56
  71. package/dist/utils/logger.js +1 -204
  72. package/package.json +5 -2
@@ -1 +1 @@
1
- {"version":3,"file":"Kythia.d.ts","sourceRoot":"","sources":["../src/Kythia.ts"],"names":[],"mappings":"AAmCA,OAAO,KAAK,EACX,YAAY,IAAI,aAAa,EAC7B,eAAe,IAAI,gBAAgB,EACnC,YAAY,IAAI,aAAa,EAC7B,aAAa,EACb,mBAAmB,EACnB,kBAAkB,EAClB,uBAAuB,EACvB,mBAAmB,EACnB,gBAAgB,EAChB,YAAY,EACZ,aAAa,EACb,kBAAkB,EAElB,MAAM,SAAS,CAAC;AAEjB,OAAO,KAAK,EACX,sBAAsB,EACtB,uBAAuB,EACvB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACN,IAAI,EAMJ,MAAM,YAAY,CAAC;AAyBpB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAE/D,cAAM,MAAM;IACJ,YAAY,EAAE,aAAa,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,aAAa,CAAC;IACtB,IAAI,EAAE,IAAI,CAAC;IACX,MAAM,EAAE,sBAAsB,CAAC;IAC/B,OAAO,EAAE,uBAAuB,CAAC;IACjC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,MAAM,EAAE,YAAY,CAAC;IACrB,SAAS,EAAE,gBAAgB,CAAC;IAC5B,YAAY,EAAE,QAAQ,EAAE,CAAC;IACzB,gBAAgB,EAAE,QAAQ,EAAE,CAAC;IAE7B,YAAY,EAAG,aAAa,CAAC;IAC7B,kBAAkB,EAAG,mBAAmB,CAAC;IACzC,YAAY,EAAG,aAAa,CAAC;IAC7B,eAAe,EAAG,gBAAgB,CAAC;IACnC,UAAU,EAAG,kBAAkB,CAAC;IAChC,gBAAgB,EAAG,gBAAgB,CAAC;gBAO/B,EACX,MAAM,EACN,MAAM,EACN,KAAK,EACL,SAAS,EACT,MAAW,EACX,OAAY,EACZ,KAAU,EACV,OAAO,GACP,EAAE;QACF,MAAM,EAAE,aAAa,CAAC;QACtB,MAAM,CAAC,EAAE,YAAY,CAAC;QACtB,KAAK,CAAC,EAAE,KAAK,CAAC;QACd,SAAS,CAAC,EAAE,SAAS,CAAC;QACtB,MAAM,CAAC,EAAE,sBAAsB,CAAC;QAChC,OAAO,CAAC,EAAE,OAAO,CAAC,uBAAuB,CAAC,CAAC;QAC3C,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAChC,OAAO,CAAC,EAAE,MAAM,CAAC;KACjB;IA+ED,OAAO,CAAC,oBAAoB;IAiFrB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB;IAYpE,oBAAoB,CAC1B,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,kBAAkB;IAYrB,yBAAyB,CAC/B,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,uBAAuB;YAYnB,eAAe;IA4F7B,OAAO,CAAC,iBAAiB;IAkClB,cAAc,CAAC,QAAQ,EAAE,QAAQ;IAQjC,kBAAkB,CAAC,QAAQ,EAAE,QAAQ;IAsC/B,KAAK;CA0SlB;AAED,SAAS,MAAM,CAAC"}
1
+ {"version":3,"file":"Kythia.d.ts","sourceRoot":"","sources":["../src/Kythia.ts"],"names":[],"mappings":"AAmCA,OAAO,KAAK,EACX,YAAY,IAAI,aAAa,EAC7B,eAAe,IAAI,gBAAgB,EACnC,YAAY,IAAI,aAAa,EAC7B,aAAa,EACb,mBAAmB,EACnB,kBAAkB,EAClB,uBAAuB,EACvB,mBAAmB,EACnB,gBAAgB,EAChB,YAAY,EACZ,aAAa,EACb,kBAAkB,EAElB,MAAM,SAAS,CAAC;AAEjB,OAAO,KAAK,EACX,sBAAsB,EACtB,uBAAuB,EACvB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACN,IAAI,EAMJ,MAAM,YAAY,CAAC;AAyBpB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAE/D,cAAM,MAAM;IACJ,YAAY,EAAE,aAAa,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,aAAa,CAAC;IACtB,IAAI,EAAE,IAAI,CAAC;IACX,MAAM,EAAE,sBAAsB,CAAC;IAC/B,OAAO,EAAE,uBAAuB,CAAC;IACjC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,MAAM,EAAE,YAAY,CAAC;IACrB,SAAS,EAAE,gBAAgB,CAAC;IAC5B,YAAY,EAAE,QAAQ,EAAE,CAAC;IACzB,gBAAgB,EAAE,QAAQ,EAAE,CAAC;IAE7B,YAAY,EAAG,aAAa,CAAC;IAC7B,kBAAkB,EAAG,mBAAmB,CAAC;IACzC,YAAY,EAAG,aAAa,CAAC;IAC7B,eAAe,EAAG,gBAAgB,CAAC;IACnC,UAAU,EAAG,kBAAkB,CAAC;IAChC,gBAAgB,EAAG,gBAAgB,CAAC;gBAO/B,EACX,MAAM,EACN,MAAM,EACN,KAAK,EACL,SAAS,EACT,MAAW,EACX,OAAY,EACZ,KAAU,EACV,OAAO,GACP,EAAE;QACF,MAAM,EAAE,aAAa,CAAC;QACtB,MAAM,CAAC,EAAE,YAAY,CAAC;QACtB,KAAK,CAAC,EAAE,KAAK,CAAC;QACd,SAAS,CAAC,EAAE,SAAS,CAAC;QACtB,MAAM,CAAC,EAAE,sBAAsB,CAAC;QAChC,OAAO,CAAC,EAAE,OAAO,CAAC,uBAAuB,CAAC,CAAC;QAC3C,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAChC,OAAO,CAAC,EAAE,MAAM,CAAC;KACjB;IA+ED,OAAO,CAAC,oBAAoB;IAiFrB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB;IAYpE,oBAAoB,CAC1B,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,kBAAkB;IAYrB,yBAAyB,CAC/B,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,uBAAuB;YAYnB,eAAe;IAuG7B,OAAO,CAAC,iBAAiB;IAkClB,cAAc,CAAC,QAAQ,EAAE,QAAQ;IAQjC,kBAAkB,CAAC,QAAQ,EAAE,QAAQ;IAsC/B,KAAK;CA4TlB;AAED,SAAS,MAAM,CAAC"}
package/dist/Kythia.js CHANGED
@@ -1,521 +1 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- var __importDefault = (this && this.__importDefault) || function (mod) {
36
- return (mod && mod.__esModule) ? mod : { "default": mod };
37
- };
38
- const discord_js_1 = require("discord.js");
39
- const Sentry = __importStar(require("@sentry/node"));
40
- const node_path_1 = __importDefault(require("node:path"));
41
- const figlet_1 = __importDefault(require("figlet"));
42
- const cli_color_1 = __importDefault(require("cli-color"));
43
- const AddonManager_1 = __importDefault(require("./managers/AddonManager"));
44
- const InteractionManager_1 = require("./managers/InteractionManager");
45
- const ShutdownManager_1 = require("./managers/ShutdownManager");
46
- const EventManager_1 = __importDefault(require("./managers/EventManager"));
47
- const MiddlewareManager_1 = __importDefault(require("./managers/MiddlewareManager"));
48
- const TranslatorManager_1 = __importDefault(require("./managers/TranslatorManager"));
49
- const KythiaMigrator_1 = __importDefault(require("./database/KythiaMigrator"));
50
- const ModelLoader_1 = __importDefault(require("./database/ModelLoader"));
51
- const KythiaModel_1 = __importDefault(require("./database/KythiaModel"));
52
- const logger_1 = __importDefault(require("./utils/logger"));
53
- const discord_1 = __importDefault(require("./utils/discord"));
54
- const package_json_1 = require("../package.json");
55
- const KythiaClient_1 = __importDefault(require("./KythiaClient"));
56
- const TelemetryManager_1 = require("./managers/TelemetryManager");
57
- class Kythia {
58
- kythiaConfig;
59
- appRoot;
60
- client;
61
- rest;
62
- models;
63
- helpers;
64
- utils;
65
- redis;
66
- sequelize;
67
- logger;
68
- container;
69
- dbReadyHooks;
70
- clientReadyHooks;
71
- addonManager;
72
- interactionManager;
73
- eventManager;
74
- shutdownManager;
75
- translator;
76
- telemetryManager;
77
- constructor({ config, logger, redis, sequelize, models = {}, helpers = {}, utils = {}, appRoot, }) {
78
- const missingDeps = [];
79
- if (!config)
80
- missingDeps.push('config');
81
- if (missingDeps.length > 0) {
82
- console.error(`FATAL: Missing required dependencies: ${missingDeps.join(', ')}.`);
83
- process.exit(1);
84
- }
85
- this.kythiaConfig = config;
86
- this.appRoot = appRoot || process.cwd();
87
- this.client = (0, KythiaClient_1.default)();
88
- this.client.commands = new discord_js_1.Collection();
89
- this.rest = new discord_js_1.REST({ version: '10' }).setToken(this.kythiaConfig.bot.token);
90
- this.models = models;
91
- const internalDiscordHelpers = (0, discord_1.default)({
92
- kythiaConfig: this.kythiaConfig,
93
- });
94
- const userHelpers = helpers || {};
95
- const userDiscordHelpers = userHelpers.discord || {};
96
- this.helpers = {
97
- ...userHelpers,
98
- discord: {
99
- ...internalDiscordHelpers,
100
- ...userDiscordHelpers,
101
- },
102
- };
103
- this.utils = utils;
104
- this.redis = redis;
105
- this.sequelize = sequelize;
106
- this.logger = logger || logger_1.default;
107
- this.telemetryManager = new TelemetryManager_1.TelemetryManager({
108
- licenseKey: this.kythiaConfig.licenseKey,
109
- logger: this.logger,
110
- version: package_json_1.version,
111
- config: this.kythiaConfig,
112
- });
113
- this.container = {
114
- client: this.client,
115
- sequelize: this.sequelize,
116
- logger: this.logger,
117
- redis: this.redis,
118
- kythiaConfig: this.kythiaConfig,
119
- helpers: this.helpers,
120
- appRoot: this.appRoot,
121
- telemetry: this.telemetryManager,
122
- t: async (_interaction, key) => key,
123
- models: this.models,
124
- };
125
- this.translator = new TranslatorManager_1.default({ container: this.container });
126
- this.container.translator = this.translator;
127
- this.client.container = this.container;
128
- this.client.cooldowns = new discord_js_1.Collection();
129
- this.dbReadyHooks = [];
130
- this.clientReadyHooks = [];
131
- }
132
- _checkRequiredConfig() {
133
- const requiredBotConfig = [
134
- ['bot', 'token'],
135
- ['bot', 'clientId'],
136
- ['bot', 'clientSecret'],
137
- ];
138
- const missingBotConfigs = [];
139
- for (const pathArr of requiredBotConfig) {
140
- let value = this.kythiaConfig;
141
- for (const key of pathArr) {
142
- value = value?.[key];
143
- }
144
- if (value === undefined || value === null || value === '') {
145
- missingBotConfigs.push(pathArr.join('.'));
146
- }
147
- }
148
- if (!this.kythiaConfig.db) {
149
- this.kythiaConfig.db = {};
150
- }
151
- let driver = this.kythiaConfig.db.driver;
152
- if (!driver || driver === '') {
153
- this.kythiaConfig.db.driver = 'sqlite';
154
- driver = 'sqlite';
155
- this.logger.info('💡 DB driver not specified. Defaulting to: sqlite');
156
- }
157
- else {
158
- driver = driver.toLowerCase();
159
- this.kythiaConfig.db.driver = driver;
160
- }
161
- if (driver === 'sqlite') {
162
- if (!this.kythiaConfig.db.name || this.kythiaConfig.db.name === '') {
163
- this.kythiaConfig.db.name = 'kythiadata.sqlite';
164
- }
165
- }
166
- const requiredDbConfig = [
167
- ['db', 'driver'],
168
- ['db', 'name'],
169
- ];
170
- if (driver !== 'sqlite') {
171
- requiredDbConfig.push(['db', 'host'], ['db', 'port'], ['db', 'user'], ['db', 'pass']);
172
- }
173
- const missingDbConfigs = [];
174
- for (const pathArr of requiredDbConfig) {
175
- let value = this.kythiaConfig;
176
- for (const key of pathArr) {
177
- value = value?.[key];
178
- }
179
- if (value === undefined || value === null || value === '') {
180
- missingDbConfigs.push(pathArr.join('.'));
181
- }
182
- }
183
- const missingConfigs = missingBotConfigs.concat(missingDbConfigs);
184
- if (missingConfigs.length > 0) {
185
- this.logger.error('❌ Required configurations are not set:');
186
- for (const missing of missingConfigs) {
187
- this.logger.error(` - ${missing}`);
188
- }
189
- process.exit(1);
190
- }
191
- this.logger.info('✔️ All required configurations are set');
192
- }
193
- registerButtonHandler(customId, handler) {
194
- if (this.addonManager) {
195
- this.addonManager.registerButtonHandler(customId, handler);
196
- }
197
- }
198
- registerModalHandler(customIdPrefix, handler) {
199
- if (this.addonManager) {
200
- this.addonManager.registerModalHandler(customIdPrefix, handler);
201
- }
202
- }
203
- registerSelectMenuHandler(customIdPrefix, handler) {
204
- if (this.addonManager) {
205
- this.addonManager.registerSelectMenuHandler(customIdPrefix, handler);
206
- }
207
- }
208
- async _deployCommands(commands) {
209
- if (!commands || commands.length === 0) {
210
- this.logger.info('No commands to deploy.');
211
- return;
212
- }
213
- try {
214
- const { slash, user, message } = this._getCommandCounts(commands);
215
- const clientId = this.kythiaConfig.bot.clientId;
216
- const devGuildId = this.kythiaConfig.bot.devGuildId;
217
- const mainGuildId = this.kythiaConfig.bot.mainGuildId;
218
- if (this.kythiaConfig.env === 'development') {
219
- if (!devGuildId) {
220
- this.logger.warn('⚠️ devGuildId not set in config. Skipping guild command deployment.');
221
- return;
222
- }
223
- this.logger.info(`🟠 Deploying to GUILD ${devGuildId}...`);
224
- await this.rest.put(discord_js_1.Routes.applicationGuildCommands(clientId, devGuildId), { body: commands });
225
- this.logger.info('✅ Guild commands deployed instantly!');
226
- }
227
- else {
228
- const globalCommands = [];
229
- const mainGuildCommands = [];
230
- for (const cmdJSON of commands) {
231
- const cmdName = cmdJSON.name;
232
- const originalCmd = this.client.commands.get(cmdName);
233
- if (originalCmd?.mainGuildOnly) {
234
- mainGuildCommands.push(cmdJSON);
235
- }
236
- else {
237
- globalCommands.push(cmdJSON);
238
- }
239
- }
240
- this.logger.info(`🟢 Deploying ${globalCommands.length} global commands...`);
241
- await this.rest.put(discord_js_1.Routes.applicationCommands(clientId), {
242
- body: globalCommands,
243
- });
244
- this.logger.info('✅ Global commands deployed successfully!');
245
- if (mainGuildId && mainGuildCommands.length > 0) {
246
- this.logger.info(`🔒 Deploying ${mainGuildCommands.length} MAIN GUILD commands to: ${mainGuildId}...`);
247
- await this.rest.put(discord_js_1.Routes.applicationGuildCommands(clientId, mainGuildId), { body: mainGuildCommands });
248
- this.logger.info('✅ Main Guild commands deployed successfully.');
249
- }
250
- if (devGuildId && devGuildId !== mainGuildId) {
251
- this.logger.info(`🧹 Clearing lingering commands from dev guild: ${devGuildId}...`);
252
- try {
253
- await this.rest.put(discord_js_1.Routes.applicationGuildCommands(clientId, devGuildId), { body: [] });
254
- this.logger.info('✅ Dev guild commands cleaned up.');
255
- }
256
- catch (e) {
257
- this.logger.warn(`⚠️ Dev guild cleanup info: ${e}`);
258
- }
259
- }
260
- }
261
- this.logger.info(`⭕ All Slash Commands: ${commands.length}`);
262
- this.logger.info(`⭕ Top Level Slash Commands: ${slash}`);
263
- this.logger.info(`⭕ User Context Menu: ${user}`);
264
- this.logger.info(`⭕ Message Context Menu: ${message}`);
265
- this.logger.info('▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬');
266
- }
267
- catch (err) {
268
- this.logger.error('❌ Failed to deploy slash commands:', err);
269
- }
270
- }
271
- _getCommandCounts(commandJsonArray) {
272
- const counts = { slash: 0, user: 0, message: 0 };
273
- if (!Array.isArray(commandJsonArray)) {
274
- this.logger.warn('commandJsonArray is not iterable. Returning zero counts.');
275
- return counts;
276
- }
277
- for (const cmd of commandJsonArray) {
278
- switch (cmd?.type) {
279
- case 1:
280
- case undefined:
281
- counts.slash++;
282
- break;
283
- case 2:
284
- counts.user++;
285
- break;
286
- case 3:
287
- counts.message++;
288
- break;
289
- }
290
- }
291
- return counts;
292
- }
293
- addDbReadyHook(callback) {
294
- this.dbReadyHooks.push(callback);
295
- }
296
- addClientReadyHook(callback) {
297
- this.clientReadyHooks.push(callback);
298
- }
299
- async start() {
300
- const figletText = (text, opts) => new Promise((resolve, reject) => {
301
- figlet_1.default.text(text, opts, (err, data) => {
302
- if (err) {
303
- reject(err);
304
- }
305
- else {
306
- resolve(data || '');
307
- }
308
- });
309
- });
310
- try {
311
- const data = await figletText('KYTHIA', {
312
- font: 'ANSI Shadow',
313
- horizontalLayout: 'full',
314
- verticalLayout: 'full',
315
- });
316
- const infoLines = [
317
- cli_color_1.default.cyan('Architected by kenndeclouv'),
318
- cli_color_1.default.cyan('Discord Support: ') + cli_color_1.default.underline('https://dsc.gg/kythia'),
319
- cli_color_1.default.cyan('Official Github: ') +
320
- cli_color_1.default.underline('https://github.com/kythia'),
321
- cli_color_1.default.cyan('Official Website: ') + cli_color_1.default.underline('https://kythia.me'),
322
- '',
323
- cli_color_1.default.cyanBright(`Kythia Core version: ${package_json_1.version}`),
324
- '',
325
- cli_color_1.default.yellowBright('Respect my work by not removing the credit'),
326
- ];
327
- const rawInfoLines = infoLines.map((line) => cli_color_1.default.strip(line));
328
- const infoMaxLen = Math.max(...rawInfoLines.map((l) => l.length));
329
- const pad = 8;
330
- const borderWidth = infoMaxLen + pad * 2;
331
- const borderChar = cli_color_1.default.cyanBright('═');
332
- const sideChar = cli_color_1.default.cyanBright('║');
333
- const topBorder = cli_color_1.default.cyanBright(`╔${borderChar.repeat(borderWidth)}╗`);
334
- const bottomBorder = cli_color_1.default.cyanBright(`╚${borderChar.repeat(borderWidth)}╝`);
335
- const emptyLine = sideChar + ' '.repeat(borderWidth) + sideChar;
336
- const figletLines = data.split('\n');
337
- const centeredFigletInBorder = figletLines
338
- .map((line) => {
339
- const rawLen = cli_color_1.default.strip(line).length;
340
- const spaces = ' '.repeat(Math.max(0, Math.floor((borderWidth - rawLen) / 2)));
341
- return (sideChar +
342
- spaces +
343
- cli_color_1.default.cyanBright(line) +
344
- ' '.repeat(borderWidth - spaces.length - rawLen) +
345
- sideChar);
346
- })
347
- .join('\n');
348
- const centeredInfo = infoLines
349
- .map((line, idx) => {
350
- const raw = rawInfoLines[idx];
351
- const spaces = ' '.repeat(Math.floor((borderWidth - raw.length) / 2));
352
- return (sideChar +
353
- spaces +
354
- line +
355
- ' '.repeat(borderWidth - spaces.length - raw.length) +
356
- sideChar);
357
- })
358
- .join('\n');
359
- console.log(`\n${topBorder}`);
360
- console.log(emptyLine);
361
- console.log(centeredFigletInBorder);
362
- console.log(emptyLine);
363
- console.log(centeredInfo);
364
- console.log(emptyLine);
365
- console.log(`${bottomBorder}\n`);
366
- }
367
- catch (err) {
368
- this.logger.error('❌ Failed to render figlet banner:', err);
369
- }
370
- this.logger.info('🚀 Starting kythia...');
371
- const legalConfig = this.kythiaConfig.legal;
372
- if (!legalConfig || !legalConfig.acceptTOS || !legalConfig.dataCollection) {
373
- this.logger.error('▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬');
374
- this.logger.error('🛑 ACTION REQUIRED: TERMS OF SERVICE AGREEMENT');
375
- this.logger.error('▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬');
376
- this.logger.error('To use Kythia Core, you MUST accept our Terms of Service.');
377
- this.logger.error('');
378
- this.logger.error('We collect the following data for license verification:');
379
- this.logger.error(' - IP Address');
380
- this.logger.error(' - Hardware Specification (CPU/RAM) for HWID');
381
- this.logger.error(' - Bot Configuration');
382
- this.logger.error('');
383
- this.logger.error('👉 HOW TO FIX:');
384
- this.logger.error(' Open your "kythia.config.js" file and set:');
385
- this.logger.error(' legal: {');
386
- this.logger.error(' acceptTOS: true,');
387
- this.logger.error(' dataCollection: true');
388
- this.logger.error(' }');
389
- this.logger.error('');
390
- this.logger.error('By setting true, you agree to our Privacy Policy at:');
391
- this.logger.error('https://kythia.me/privacy');
392
- this.logger.error('▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬');
393
- process.exit(1);
394
- }
395
- if (this.kythiaConfig.sentry?.dsn) {
396
- Sentry.init({
397
- dsn: this.kythiaConfig.sentry.dsn,
398
- tracesSampleRate: 1.0,
399
- profilesSampleRate: 1.0,
400
- });
401
- this.logger.info('✔️ Sentry Error Tracking is ACTIVE');
402
- }
403
- else {
404
- this.logger.warn('🟠 Sentry DSN not found in config. Error tracking is INACTIVE.');
405
- }
406
- this._checkRequiredConfig();
407
- const isLicenseValid = await this.telemetryManager.verify();
408
- if (!isLicenseValid) {
409
- this.logger.error('▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬');
410
- this.logger.error('🚫 ACCESS DENIED');
411
- this.logger.error('Your license key is missing, invalid, or expired.');
412
- this.logger.error('Please verify your license key in .env or contact support at:');
413
- this.logger.error('👉 https://dsc.gg/kythia');
414
- this.logger.error('▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬');
415
- }
416
- if (isLicenseValid) {
417
- this.telemetryManager.startHeartbeat();
418
- this.telemetryManager.startAutoFlush();
419
- this.telemetryManager.report('info', `Bot Process Started (v${package_json_1.version})`, {
420
- node: process.version,
421
- platform: process.platform,
422
- cwd: process.cwd(),
423
- });
424
- }
425
- try {
426
- const shouldDeploy = !process.argv.includes('--dev');
427
- this.logger.info('▬▬▬▬▬▬▬▬▬▬▬[ Translator System ]▬▬▬▬▬▬▬▬▬▬▬');
428
- const coreLangPath = node_path_1.default.join(__dirname, 'lang');
429
- this.translator.loadLocalesFromDir(coreLangPath);
430
- const userLangPath = node_path_1.default.join(this.appRoot, 'lang');
431
- this.translator.loadLocalesFromDir(userLangPath);
432
- this.container.translator = this.translator;
433
- this.container.t = this.translator.t.bind(this.translator);
434
- this.logger.info('▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬[ Kythia Addons ]▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬');
435
- this.addonManager = new AddonManager_1.default({
436
- client: this.client,
437
- container: this.container,
438
- });
439
- const allCommands = (await this.addonManager.loadAddons(this));
440
- if (this.sequelize) {
441
- this.logger.info('▬▬▬▬▬▬▬▬▬▬▬▬▬▬[ Connect Database ]▬▬▬▬▬▬▬▬▬▬▬▬▬▬');
442
- await this.sequelize.authenticate();
443
- await (0, KythiaMigrator_1.default)({
444
- sequelize: this.sequelize,
445
- container: this.container,
446
- logger: this.logger,
447
- });
448
- await (0, ModelLoader_1.default)(this, this.sequelize);
449
- this.logger.info('🪝 Attaching Cache Hooks...');
450
- KythiaModel_1.default.attachHooksToAllModels(this.sequelize, this.client);
451
- }
452
- else {
453
- this.logger.warn('⚠️ Sequelize instance not provided. Skipping database initialization.');
454
- }
455
- const handlers = this.addonManager.getHandlers();
456
- this.eventManager = new EventManager_1.default({
457
- client: this.client,
458
- container: this.container,
459
- eventHandlers: handlers.eventHandlers,
460
- });
461
- this.eventManager.initialize();
462
- this.logger.info('▬▬▬▬▬▬▬▬▬▬▬▬▬[ Middleware ]▬▬▬▬▬▬▬▬▬▬▬▬▬');
463
- const middlewareManager = new MiddlewareManager_1.default({
464
- container: this.container,
465
- });
466
- await middlewareManager.loadMiddlewares();
467
- this.container.middlewareManager = middlewareManager;
468
- this.interactionManager = new InteractionManager_1.InteractionManager({
469
- client: this.client,
470
- container: this.container,
471
- handlers: handlers,
472
- });
473
- this.interactionManager.initialize();
474
- this.logger.info('▬▬▬▬▬▬▬▬▬▬▬▬▬[ Deploy Commands ]▬▬▬▬▬▬▬▬▬▬▬▬▬');
475
- if (shouldDeploy) {
476
- await this._deployCommands(allCommands);
477
- }
478
- else {
479
- this.logger.info('⏭️ Skipping command deployment because --dev flag is present.');
480
- }
481
- this.shutdownManager = new ShutdownManager_1.ShutdownManager({
482
- client: this.client,
483
- container: this.container,
484
- });
485
- this.shutdownManager.initialize();
486
- this.logger.info('▬▬▬▬▬▬▬▬▬▬▬[ Systems Initializing ]▬▬▬▬▬▬▬▬▬▬▬▬');
487
- this.client.once('clientReady', async (c) => {
488
- this.logger.info(`🌸 Logged in as ${this.client.user?.tag}`);
489
- this.telemetryManager.report('info', `Bot Client Ready: ${c.user?.tag}`, {
490
- guilds: c.guilds.cache.size,
491
- users: c.users.cache.size,
492
- });
493
- this.logger.info(`🚀 Executing ${this.clientReadyHooks.length} client-ready hooks...`);
494
- for (const hook of this.clientReadyHooks) {
495
- try {
496
- await hook(c);
497
- }
498
- catch (error) {
499
- this.logger.error('Failed to execute a client-ready hook:', error);
500
- }
501
- }
502
- });
503
- await this.client.login(this.kythiaConfig.bot.token);
504
- }
505
- catch (error) {
506
- this.logger.error('❌ Kythia initialization failed:', error);
507
- try {
508
- await this.telemetryManager.report('error', `Startup Fatal Crash`, {
509
- stack: error,
510
- });
511
- }
512
- catch (_e) { }
513
- if (this.kythiaConfig.sentry?.dsn) {
514
- Sentry.captureException(error);
515
- }
516
- process.exit(1);
517
- }
518
- }
519
- }
520
- module.exports = Kythia;
521
- //# sourceMappingURL=Kythia.js.map
1
+ 'use strict';function a0_0x48ad(){const _0x9dfb30=['yxbWuM9VDa','zMLNBgv0','zxjYB3i','qhnLBNrYEs9UB2rL','y29UzMLNDxjHyMXL','CMvZDa','8j+QNsbbDhrHy2HPBMCGq2fJAguGsg9VA3mUlI4','y2XPzw50uMvHzhLiB29RCW','Aw50zxjHy3rPB25nyw5Hz2vY','8j+sOsbeqIbKCML2zxiGBM90ihnWzwnPzMLLzc4GrgvMyxvSDgLUzYb0BZOGC3fSAxrL','D3jPDgfIBgu','s0TZuKK','Cg9YDa','icaGlsa','x2nOzwnRuMvXDwLYzwrdB25MAwC','4PYfierLDIbNDwLSzcbJB21Tyw5KCYbJBgvHBMvKihvWlG','mZLcDgvSyMW','nduYotjxwNP0CwK','x19PBxbVCNrtDgfY','oefOwfb0ta','s1jvvxa','z2v0','icaGBgvNywW6ihS','qM90ifbYB2nLC3mGu3rHCNrLzcaODG','4PYu77IpicbbBgWGCMvXDwLYzwqGy29UzMLNDxjHDgLVBNmGyxjLihnLDa','BgvUz3rO','y2XPzw50','BgLJzw5ZzuTLEq','nJCZnZqWuxfKshvx','tM8Gy29TBwfUzhmGDg8GzgvWBg95lG','mZq0nfvACxLJta','mJq0sfDYzwP5','igDSB2jHBcbJB21Tyw5KCY4UlG','EwvSBg93qNjPz2H0','zgjszwfKEuHVB2TZ','C3rYAxa','lI4VCgfJA2fNzs5QC29U','AgvSCgvYCW','B2DItxG','y29TBwfUzePZB25bCNjHEsbPCYbUB3qGAxrLCMfIBguUifjLDhvYBMLUzYb6zxjVignVDw50CY4','Aw5JBhvKzxm','zgf0yunVBgXLy3rPB24','4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PASwYblExrOAweGqwrKB25Zif3ILQZILQZILQZILQZILQZILQZILQZILQZILQZILQZILQZILQZILQZILQZILQZILQW','z2v0sgfUzgXLCNm','CMvWzwf0','y3LHBG','4Q2viefSBcbtBgfZAcbdB21Tyw5KCZOG','C2v0vg9Rzw4','qNKGC2v0DgLUzYb0CNvLlcb5B3uGywDYzwuGDg8GB3vYifbYAxzHy3KGug9SAwn5igf0oG','vgTkrgS','C2vUDhj5','4PYfieDSB2jHBcbJB21Tyw5KCYbKzxbSB3LLzcbZDwnJzxnZzNvSBhKH','4Q2vie1LC3nHz2uGq29UDgv4Dcbnzw51oIa','qw9pA0S','sLDvsKu','BwfW','sLfXvMy','CMvNAxn0zxjtzwXLy3rnzw51sgfUzgXLCG','4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS','4PQG77IpigrLDKD1AwXKswqGBM90ihnLDcbPBIbJB25MAwCUifnRAxbWAw5NigD1AwXKignVBw1HBMqGzgvWBg95BwvUDc4','x2DLDenVBw1HBMrdB3vUDhm','CMvKAxm','AgfZt3DUuhjVCgvYDhK','Dg9Rzw4','y29Uy2f0','tuXwt00','mJu1otvXzhn5uha','C2XHC2G','4PQG77IpienVBNrPBNvPBMCGAw4GBgLTAxrLzcbTB2rLlIbcB3qGD2LSBcbZAhv0igrVD24GAw4GmIbTAw51DgvZlG','qM90ienSAwvUDcbszwfKEtOG','u3rHCNr1CcbgyxrHBcbdCMfZAa','4O+T77IpicbdB21Tyw5KigrLCgXVEw1LBNqGzgvMzxjYzwqGzhvLihrVihjHDguGBgLTAxrPBMCU','zNvSBa','A3L0AgLHq29UzMLN','BLvNtNC','Bg9Nz2vY','x2rLCgXVEunVBw1HBMrZ','ls1Kzxy','uM91DgvZ','mJC1ofbewuvruq','yM90','yxbWBgLJyxrPB25hDwLSzenVBw1HBMrZ','8j+sGcbmAwnLBNnLihzHBgLKyxrPB24GCMvXDwLYzwqUifnODxr0Aw5NigrVD24U','4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS','DxnLCNm','Bg9N','zhnU','BMfTzq','zgvMAw5LuhjVCgvYDhK','zhjPDMvY','D2fYBG','yxr0ywnOsg9VA3nuB0fSBe1VzgvSCW','u2H1DgrVD25nyw5Hz2vY','CM5nsNm','y2XPzw50swq','DhjHBNnSyxrVCG','4PYfieD1AwXKignVBw1HBMrZigrLCgXVEwvKigLUC3rHBNrSEse','8j+FOcbezxbSB3LPBMCGDg8Gr1vjteqG','Cfr3sxi','8j+rIsbODhrWCZOVl2rZyY5NzY9RExrOAwe','lI4U','q29SBgvJDgLVBG','lI9KyxrHyMfZzs9lExrOAwfnAwDYyxrVCG','4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PASwYbnAwrKBgv3yxjLif3ILQZILQZILQZILQZILQZILQZILQZILQZILQZILQZILQZILQZILQW','y3DbCKu','y3LHBKjYAwDODa','nJz6svDuEhu','CMvNAxn0zxjnB2rHBeHHBMrSzxi','zgvMyxvSDa','DgvSzw1LDhj5twfUywDLCG','zMXVB3i','mZGXnZu1n2L6AfjsAW','AM9PBG','ELzMs2i','y2XPlwnVBg9Y','C2vXDwvSAxPL','y3DK','C3rHCNrizwfYDgjLyxq','AxnuB2TLBLzHBgLK','4P2mifjLCxvPCMvKignVBMzPz3vYyxrPB25ZigfYzsbUB3qGC2v0oG','vg8GDxnLieT5DgHPysbdB3jLlcb5B3uGtvvtvcbHy2nLChqGB3vYifrLCM1Zig9MifnLCNzPy2uU','zgv2zwXVCg1LBNq','rgLZy29YzcbtDxbWB3j0oIa','t2zMAwnPywWGv2vIC2L0ztOG','zxHPDa','DMvYC2LVBG','lI9KyxrHyMfZzs9nB2rLBeXVywrLCG','r1b6Cw4','ywnJzxb0ve9t','lI9Tyw5Hz2vYCY9fDMvUDe1HBMfNzxi','Aw5MBW','8j+rIsbit1CGve8GrKLyoG','otq5nZyXze16uwfh','BwfPBKD1AwXKswq','CMvNAxn0zxjcDxr0B25iyw5KBgvY','8j+BKsbbq1rjt04GuKvrvuLsruq6ifrfuK1tie9gifnfuLzjq0uGquDsruvnru5u','zMvgvxu','zgv2r3vPBgrjza','yxv0AgvUDgLJyxrL','8j+NUsbdBgvHCMLUzYbSAw5NzxjPBMCGy29TBwfUzhmGzNjVBsbKzxyGz3vPBgq6ia','C3bSAxq','Bw9KzwXZ','zxHWB3j0CW','ywrKB25nyw5Hz2vY','4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PASwYbtExn0zw1ZieLUAxrPywXPEMLUzYbD4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS','nJGXnNfsEunUza','BwfPBKD1AwXKt25SEq','ywrKq2XPzw50uMvHzhLiB29R','mtmYmJfiExvrrMK','y3jLyxrL','zxzLBNrnyw5Hz2vY','Chv0','Ahr0Chm6lY9RExrOAweUBwuVChjPDMfJEq','ChvZAa','vgPnBfa','AxnbCNjHEq','4P2miezHAwXLzcb0BYbKzxbSB3KGC2XHC2GGy29TBwfUzhm6','y2XPzw50u2vJCMv0','ywrKrgjszwfKEuHVB2S','Dg9mB3DLCKnHC2u','4Q2vifrVCcbmzxzLBcbtBgfZAcbdB21Tyw5KCZOG','DxnLCG','y29UDgfPBMvY','Bg9NAw4','lI91DgLSCY9SB2DNzxi','C3fSAxrL','rMfPBgvKihrVigv4zwn1DguGysbJBgLLBNqTCMvHzhKGAg9VAZO','CgXHDgzVCM0','x19ZzxrnB2r1BgvezwzHDwX0','icaGFq','4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PAS4PASwYbezxbSB3KGq29TBwfUzhmGxEkwRokwRokwRokwRokwRokwRokwRokwRokwRokwRokwRokwRokwRa','AfjAqve','BgvNywW','x19JCMvHDgvcAw5KAw5N','zxzLBNriyw5KBgvYCW'];a0_0x48ad=function(){return _0x9dfb30;};return a0_0x48ad();}const a0_0x595fc1=a0_0x5c6d;function a0_0x5c6d(_0x16cd67,_0x5eae1f){_0x16cd67=_0x16cd67-(0x157f*-0x1+-0x1134+0x1*0x27c7);const _0x2b8332=a0_0x48ad();let _0x41a05a=_0x2b8332[_0x16cd67];if(a0_0x5c6d['FrdlHk']===undefined){var _0xa09c28=function(_0x3072a1){const _0x4d37e1='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x16c7bd='',_0x8704c0='';for(let _0x31d0de=0x2*-0x28f+0xb1*0x5+0x19*0x11,_0x42322e,_0x42a690,_0x2274a3=0x1*-0x2316+0x1190+0x2*0x8c3;_0x42a690=_0x3072a1['charAt'](_0x2274a3++);~_0x42a690&&(_0x42322e=_0x31d0de%(-0x7*0xd+-0x431*0x7+-0x1*-0x1db6)?_0x42322e*(-0x251f+-0xbd4+0xb*0x479)+_0x42a690:_0x42a690,_0x31d0de++%(-0xa8a*0x1+-0x3*-0x504+0xa*-0x73))?_0x16c7bd+=String['fromCharCode'](-0x719*-0x4+0xd6d+-0x28d2&_0x42322e>>(-(-0x1ff4*-0x1+-0x1f79+-0x79)*_0x31d0de&0x2353+0x9d3+0x5a4*-0x8)):0x256f+-0x11*0x119+-0x12c6){_0x42a690=_0x4d37e1['indexOf'](_0x42a690);}for(let _0x4fdd92=0x89*-0x9+0x14dd+-0x100c,_0x3f5209=_0x16c7bd['length'];_0x4fdd92<_0x3f5209;_0x4fdd92++){_0x8704c0+='%'+('00'+_0x16c7bd['charCodeAt'](_0x4fdd92)['toString'](-0xf1a+0x2076+0x9*-0x1ec))['slice'](-(-0x269b+0x81*0xf+0xf87*0x2));}return decodeURIComponent(_0x8704c0);};a0_0x5c6d['EWqMWe']=_0xa09c28,a0_0x5c6d['pSXDzH']={},a0_0x5c6d['FrdlHk']=!![];}const _0xd7d9b8=_0x2b8332[-0x6*0x635+-0x201f+0x455d],_0x4f7e93=_0x16cd67+_0xd7d9b8,_0x5f181a=a0_0x5c6d['pSXDzH'][_0x4f7e93];return!_0x5f181a?(_0x41a05a=a0_0x5c6d['EWqMWe'](_0x41a05a),a0_0x5c6d['pSXDzH'][_0x4f7e93]=_0x41a05a):_0x41a05a=_0x5f181a,_0x41a05a;}(function(_0x993893,_0x185520){const a0_0x2eb9d5={_0x121a18:0x127,_0x5235a1:0x158,_0x32d0cc:0x134,_0x233223:0x165,_0x210243:0x129,_0x84bd05:0x185,_0x2a611d:0x180,_0x413b8b:0x1a7},_0x29c39d=a0_0x5c6d,_0x535b5e=_0x993893();while(!![]){try{const _0x2d9cc3=parseInt(_0x29c39d(0x19a))/(0x11b5+-0x1ff4+0x2*0x720)+parseInt(_0x29c39d(a0_0x2eb9d5._0x121a18))/(0x1484+0xfe9+-0x246b)*(parseInt(_0x29c39d(0x126))/(-0x1ccf+-0x1cf*-0xf+-0x1*-0x1b1))+-parseInt(_0x29c39d(0x135))/(0x25f3+-0x13*-0x157+0x1*-0x3f64)*(parseInt(_0x29c39d(a0_0x2eb9d5._0x5235a1))/(-0x953+-0xbb5+-0x150d*-0x1))+-parseInt(_0x29c39d(a0_0x2eb9d5._0x32d0cc))/(0x1953+-0x99*-0x39+-0x3b5e)*(-parseInt(_0x29c39d(a0_0x2eb9d5._0x233223))/(0x3*0x119+-0x27*-0x22+-0x872*0x1))+parseInt(_0x29c39d(a0_0x2eb9d5._0x210243))/(-0x1*-0x222b+-0x28b+-0x1f98)*(-parseInt(_0x29c39d(a0_0x2eb9d5._0x84bd05))/(0x1*0x1257+-0x444+-0xe0a))+-parseInt(_0x29c39d(0x132))/(-0x71*-0x41+0x697+-0xd*0x2b6)*(-parseInt(_0x29c39d(a0_0x2eb9d5._0x2a611d))/(0x1cda+-0x870+-0x145f))+-parseInt(_0x29c39d(a0_0x2eb9d5._0x413b8b))/(-0x1bc2+-0x2111+0x3cdf*0x1)*(parseInt(_0x29c39d(0x1aa))/(0x1d5c+-0x166f+-0x6e0));if(_0x2d9cc3===_0x185520)break;else _0x535b5e['push'](_0x535b5e['shift']());}catch(_0x48c818){_0x535b5e['push'](_0x535b5e['shift']());}}}(a0_0x48ad,0xa0eed*-0x1+-0xff*0x19c+0x1436a8));var __createBinding=this&&this[a0_0x595fc1(0x114)]||(Object[a0_0x595fc1(0x1ab)]?function(_0x32eb40,_0x457c8e,_0x1bb70f,_0x162ede){const a0_0x415f56={_0x1997dd:0x160,_0x5a13fd:0x120},_0x18e6a6=a0_0x595fc1,_0x5c65ae={'nUgNw':function(_0x30da86,_0xa5434b){return _0x30da86 in _0xa5434b;},'rnMJs':_0x18e6a6(0x12b)};if(_0x162ede===undefined)_0x162ede=_0x1bb70f;var _0x31bd40=Object['getOwnPropertyDescriptor'](_0x457c8e,_0x1bb70f);(!_0x31bd40||(_0x5c65ae[_0x18e6a6(a0_0x415f56._0x1997dd)](_0x5c65ae[_0x18e6a6(0x173)],_0x31bd40)?!_0x457c8e['__esModule']:_0x31bd40[_0x18e6a6(a0_0x415f56._0x5a13fd)]||_0x31bd40[_0x18e6a6(0x11a)]))&&(_0x31bd40={'enumerable':!![],'get':function(){return _0x457c8e[_0x1bb70f];}}),Object[_0x18e6a6(0x16e)](_0x32eb40,_0x162ede,_0x31bd40);}:function(_0x1096fd,_0x8cc7a9,_0x39a2a8,_0x179b1f){const _0x27f79f=a0_0x595fc1,_0x5dc27a={'zVfKb':function(_0x1dd9a5,_0x5dba02){return _0x1dd9a5===_0x5dba02;}};if(_0x5dc27a[_0x27f79f(0x187)](_0x179b1f,undefined))_0x179b1f=_0x39a2a8;_0x1096fd[_0x179b1f]=_0x8cc7a9[_0x39a2a8];}),__setModuleDefault=this&&this[a0_0x595fc1(0x1be)]||(Object['create']?function(_0x84a8d1,_0x5ddc23){const _0x3c9fc9=a0_0x595fc1;Object['defineProperty'](_0x84a8d1,_0x3c9fc9(0x182),{'enumerable':!![],'value':_0x5ddc23});}:function(_0x9bf19c,_0x286ea2){const a0_0x250d45={_0xc1b51:0x182},_0x205449=a0_0x595fc1;_0x9bf19c[_0x205449(a0_0x250d45._0xc1b51)]=_0x286ea2;}),__importStar=this&&this[a0_0x595fc1(0x128)]||(function(){const _0x2385c9={'hRZAQ':function(_0x25cd56,_0x12effb){return _0x25cd56(_0x12effb);},'KKsRI':function(_0x817422,_0x33138a){return _0x817422<_0x33138a;},'qnXRx':function(_0x20f278,_0xd5d54a){return _0x20f278!==_0xd5d54a;}};var _0x556ec4=function(_0x4e1bfe){const a0_0x1df2d9={_0xfa7848:0x154,_0x2f1732:0x12f};return _0x556ec4=Object['getOwnPropertyNames']||function(_0x30c63c){const _0x2a405f=a0_0x5c6d;var _0x46169c=[];for(var _0x1caeea in _0x30c63c)if(Object['prototype'][_0x2a405f(a0_0x1df2d9._0xfa7848)]['call'](_0x30c63c,_0x1caeea))_0x46169c[_0x46169c[_0x2a405f(a0_0x1df2d9._0x2f1732)]]=_0x1caeea;return _0x46169c;},_0x556ec4(_0x4e1bfe);};return function(_0x5aceb3){const _0x25ecf4=a0_0x5c6d;if(_0x5aceb3&&_0x5aceb3['__esModule'])return _0x5aceb3;var _0x3d30ae={};if(_0x5aceb3!=null){for(var _0x56ba56=_0x2385c9[_0x25ecf4(0x1c1)](_0x556ec4,_0x5aceb3),_0x209392=0x15*-0x65+-0x16ac+0x631*0x5;_0x2385c9[_0x25ecf4(0x121)](_0x209392,_0x56ba56['length']);_0x209392++)if(_0x2385c9['qnXRx'](_0x56ba56[_0x209392],_0x25ecf4(0x182)))__createBinding(_0x3d30ae,_0x5aceb3,_0x56ba56[_0x209392]);}return __setModuleDefault(_0x3d30ae,_0x5aceb3),_0x3d30ae;};}()),__importDefault=this&&this['__importDefault']||function(_0x49ea2a){return _0x49ea2a&&_0x49ea2a['__esModule']?_0x49ea2a:{'default':_0x49ea2a};};const discord_js_1=require('discord.js'),Sentry=__importStar(require(a0_0x595fc1(0x119))),node_path_1=__importDefault(require('node:path')),figlet_1=__importDefault(require(a0_0x595fc1(0x117))),cli_color_1=__importDefault(require(a0_0x595fc1(0x188))),AddonManager_1=__importDefault(require('./managers/AddonManager')),InteractionManager_1=require('./managers/InteractionManager'),ShutdownManager_1=require('./managers/ShutdownManager'),EventManager_1=__importDefault(require(a0_0x595fc1(0x197))),MiddlewareManager_1=__importDefault(require('./managers/MiddlewareManager')),TranslatorManager_1=__importDefault(require('./managers/TranslatorManager')),KythiaMigrator_1=__importDefault(require(a0_0x595fc1(0x17c))),ModelLoader_1=__importDefault(require(a0_0x595fc1(0x194))),KythiaModel_1=__importDefault(require('./database/KythiaModel')),logger_1=__importDefault(require(a0_0x595fc1(0x1ba))),discord_1=__importDefault(require('./utils/discord')),package_json_1=require(a0_0x595fc1(0x13a)),KythiaClient_1=__importDefault(require('./KythiaClient')),TelemetryManager_1=require('./managers/TelemetryManager');class Kythia{[a0_0x595fc1(0x15f)];[a0_0x595fc1(0x116)];[a0_0x595fc1(0x130)];[a0_0x595fc1(0x11b)];['models'];['helpers'];['utils'];[a0_0x595fc1(0x153)];[a0_0x595fc1(0x189)];['logger'];['container'];[a0_0x595fc1(0x138)];['clientReadyHooks'];[a0_0x595fc1(0x1a5)];[a0_0x595fc1(0x11e)];['eventManager'];['shutdownManager'];['translator'];['telemetryManager'];constructor({config:_0x5a1124,logger:_0x5b36e1,redis:_0x3b6822,sequelize:_0x57887b,models:models={},helpers:helpers={},utils:utils={},appRoot:_0x521700}){const a0_0x190d4a={_0x5ad72f:0x12f,_0x19d5f3:0x118,_0x65482:0x15f,_0x3f1681:0x116,_0x28730d:0x182,_0x229572:0x13b,_0x55ff95:0x182,_0x5e5488:0x161,_0x1d1f48:0x116,_0x6edd8e:0x182,_0x431a6f:0x1b8,_0x36b232:0x1b8,_0x5db372:0x17b},_0x173373=a0_0x595fc1,_0xf6cc74={'cwArE':'config'},_0x12c952=[];if(!_0x5a1124)_0x12c952['push'](_0xf6cc74[_0x173373(0x17e)]);_0x12c952[_0x173373(a0_0x190d4a._0x5ad72f)]>0x840+-0x8e4+0xa4&&(console[_0x173373(a0_0x190d4a._0x19d5f3)]('FATAL:\x20Missing\x20required\x20dependencies:\x20'+_0x12c952['join'](',\x20')+'.'),process['exit'](-0x879+-0x5*-0x507+-0x10a9));this[_0x173373(a0_0x190d4a._0x65482)]=_0x5a1124,this[_0x173373(a0_0x190d4a._0x3f1681)]=_0x521700||process[_0x173373(0x18a)](),this['client']=(-0x48a+0x1eaa+-0x8*0x344,KythiaClient_1[_0x173373(a0_0x190d4a._0x28730d)])(),this['client']['commands']=new discord_js_1['Collection'](),this[_0x173373(0x11b)]=new discord_js_1['REST']({'version':'10'})[_0x173373(0x145)](this[_0x173373(0x15f)][_0x173373(0x166)]['token']),this[_0x173373(0x1a3)]=models;const _0x2ec51b=(0xc1*0x1d+-0x234+0x1*-0x13a9,discord_1[_0x173373(0x182)])({'kythiaConfig':this['kythiaConfig']}),_0x57f7bc=helpers||{},_0x3bee05=_0x57f7bc['discord']||{};this[_0x173373(a0_0x190d4a._0x229572)]={..._0x57f7bc,'discord':{..._0x2ec51b,..._0x3bee05}},this['utils']=utils,this['redis']=_0x3b6822,this['sequelize']=_0x57887b,this['logger']=_0x5b36e1||logger_1[_0x173373(a0_0x190d4a._0x55ff95)],this[_0x173373(0x183)]=new TelemetryManager_1['TelemetryManager']({'licenseKey':this['kythiaConfig'][_0x173373(0x131)],'logger':this[_0x173373(a0_0x190d4a._0x5e5488)],'version':package_json_1['version'],'config':this['kythiaConfig']}),this['container']={'client':this[_0x173373(0x130)],'sequelize':this[_0x173373(0x189)],'logger':this['logger'],'redis':this['redis'],'kythiaConfig':this[_0x173373(0x15f)],'helpers':this['helpers'],'appRoot':this[_0x173373(a0_0x190d4a._0x1d1f48)],'telemetry':this['telemetryManager'],'t':async(_0x6b8549,_0x5576c7)=>_0x5576c7,'models':this[_0x173373(0x1a3)]},this['translator']=new TranslatorManager_1[(_0x173373(a0_0x190d4a._0x6edd8e))]({'container':this[_0x173373(a0_0x190d4a._0x431a6f)]}),this[_0x173373(0x1b8)]['translator']=this['translator'],this['client'][_0x173373(0x1b8)]=this[_0x173373(a0_0x190d4a._0x36b232)],this[_0x173373(0x130)]['cooldowns']=new discord_js_1[(_0x173373(a0_0x190d4a._0x5db372))](),this['dbReadyHooks']=[],this['clientReadyHooks']=[];}[a0_0x595fc1(0x124)](){const a0_0x3d5242={_0x38742a:0x1b3,_0x4ba648:0x1b0,_0x2f1505:0x15f,_0x38c9b4:0x16f,_0x521614:0x161,_0x398bfe:0x198,_0x314ed2:0x1bb,_0x1d4f04:0x16d,_0x162dcf:0x16d,_0x479c86:0x122,_0x1f7280:0x1b7,_0x3027b1:0x15f,_0x16a56e:0x186,_0x5a16c5:0x156,_0x23dee9:0x18d,_0x495a05:0x161,_0x25f6d8:0x12e},_0x2fd283=a0_0x595fc1,_0x13325f={'TjMlP':function(_0x33dd32,_0x39bb2f){return _0x33dd32===_0x39bb2f;},'YnYEg':function(_0x32fe57,_0xf749da){return _0x32fe57!==_0xf749da;},'evZTO':function(_0x2a21f0,_0x5e3e7c){return _0x2a21f0>_0x5e3e7c;}},_0x561d75=[['bot',_0x2fd283(0x155)],['bot',_0x2fd283(0x174)],['bot',_0x2fd283(a0_0x3d5242._0x38742a)]],_0x568e34=[];for(const _0x36b11d of _0x561d75){let _0x1c4bee=this['kythiaConfig'];for(const _0x1e53e7 of _0x36b11d){_0x1c4bee=_0x1c4bee?.[_0x1e53e7];}(_0x13325f[_0x2fd283(a0_0x3d5242._0x4ba648)](_0x1c4bee,undefined)||_0x1c4bee===null||_0x1c4bee==='')&&_0x568e34['push'](_0x36b11d[_0x2fd283(0x186)]('.'));}!this[_0x2fd283(0x15f)]['db']&&(this['kythiaConfig']['db']={});let _0x4a7715=this[_0x2fd283(a0_0x3d5242._0x2f1505)]['db'][_0x2fd283(0x16f)];!_0x4a7715||_0x4a7715===''?(this[_0x2fd283(0x15f)]['db'][_0x2fd283(a0_0x3d5242._0x38c9b4)]='sqlite',_0x4a7715='sqlite',this[_0x2fd283(a0_0x3d5242._0x521614)][_0x2fd283(a0_0x3d5242._0x398bfe)](_0x2fd283(0x11f))):(_0x4a7715=_0x4a7715[_0x2fd283(0x1b5)](),this['kythiaConfig']['db'][_0x2fd283(a0_0x3d5242._0x38c9b4)]=_0x4a7715);_0x4a7715===_0x2fd283(a0_0x3d5242._0x314ed2)&&((!this['kythiaConfig']['db'][_0x2fd283(a0_0x3d5242._0x1d4f04)]||_0x13325f['TjMlP'](this[_0x2fd283(0x15f)]['db'][_0x2fd283(a0_0x3d5242._0x162dcf)],''))&&(this['kythiaConfig']['db'][_0x2fd283(a0_0x3d5242._0x1d4f04)]='kythiadata.sqlite'));const _0x40d6bf=[['db',_0x2fd283(0x16f)],['db','name']];_0x13325f['YnYEg'](_0x4a7715,'sqlite')&&_0x40d6bf['push'](['db','host'],['db',_0x2fd283(a0_0x3d5242._0x479c86)],['db',_0x2fd283(a0_0x3d5242._0x1f7280)],['db','pass']);const _0x576477=[];for(const _0x524524 of _0x40d6bf){let _0x2efd2d=this[_0x2fd283(a0_0x3d5242._0x3027b1)];for(const _0x2f7c69 of _0x524524){_0x2efd2d=_0x2efd2d?.[_0x2f7c69];}(_0x2efd2d===undefined||_0x2efd2d===null||_0x2efd2d==='')&&_0x576477[_0x2fd283(0x1af)](_0x524524[_0x2fd283(a0_0x3d5242._0x16a56e)]('.'));}const _0x63e4c=_0x568e34[_0x2fd283(a0_0x3d5242._0x5a16c5)](_0x576477);if(_0x13325f['evZTO'](_0x63e4c['length'],-0x1dad+0x1*0x166+0x1c47)){this[_0x2fd283(0x161)]['error'](_0x2fd283(a0_0x3d5242._0x23dee9));for(const _0x1480ba of _0x63e4c){this[_0x2fd283(a0_0x3d5242._0x495a05)]['error'](_0x2fd283(0x123)+_0x1480ba);}process['exit'](0x53*-0x27+0x14d3+0xd*-0xa1);}this['logger']['info'](_0x2fd283(a0_0x3d5242._0x25f6d8));}[a0_0x595fc1(0x19c)](_0x417d24,_0x5b11ab){const a0_0x1732cb={_0x474f0e:0x1a5,_0x29ee88:0x1a5},_0x560f63=a0_0x595fc1;this[_0x560f63(a0_0x1732cb._0x474f0e)]&&this[_0x560f63(a0_0x1732cb._0x29ee88)]['registerButtonHandler'](_0x417d24,_0x5b11ab);}[a0_0x595fc1(0x181)](_0x18e9e9,_0x4c33e6){const a0_0x54753c={_0x12de7f:0x1a5},_0x4815dd=a0_0x595fc1;this['addonManager']&&this[_0x4815dd(a0_0x54753c._0x12de7f)]['registerModalHandler'](_0x18e9e9,_0x4c33e6);}['registerSelectMenuHandler'](_0x1b6896,_0x386bb6){const a0_0x29d631={_0x2d29c9:0x1a5},_0x236632=a0_0x595fc1;this[_0x236632(a0_0x29d631._0x2d29c9)]&&this[_0x236632(0x1a5)][_0x236632(0x14f)](_0x1b6896,_0x386bb6);}async[a0_0x595fc1(0x162)](_0x3f33ff){const a0_0xde5901={_0x4d64dc:0x151,_0x334d0f:0x150,_0x36fc64:0x198,_0x31810b:0x18f,_0x250794:0x177,_0x500304:0x17a,_0x4f49e5:0x11b,_0xa98634:0x1ad,_0x4c7609:0x1a8,_0xe70839:0x161,_0x5a4e66:0x167,_0x41355d:0x12a,_0xfe6fb5:0x11b,_0x1834a7:0x1ad,_0x53c34b:0x125,_0x1b228d:0x161,_0x1aa0c8:0x161},_0x33e09d=a0_0x595fc1,_0x2bc56d={'qiyXN':_0x33e09d(a0_0xde5901._0x4d64dc),'JWUJE':'✅\x20Main\x20Guild\x20commands\x20deployed\x20successfully.','KRUUp':function(_0x230966,_0x3004de){return _0x230966!==_0x3004de;},'FCZMn':_0x33e09d(a0_0xde5901._0x334d0f)};if(!_0x3f33ff||_0x3f33ff['length']===-0x15*0x119+0x17b4+0xa7*-0x1){this['logger'][_0x33e09d(a0_0xde5901._0x36fc64)](_0x33e09d(0x133));return;}if(this['container']['_degraded']||!this['telemetryManager'][_0x33e09d(0x18c)]()){if(Math['random']()<0xe1b+0x47a+-0x1295+0.5){this['logger'][_0x33e09d(0x198)](_0x33e09d(0x15d));return;}}try{const {slash:_0x3f5e19,user:_0x235637,message:_0x4efa79}=this[_0x33e09d(0x152)](_0x3f33ff),_0x40d1b0=this[_0x33e09d(0x15f)]['bot']['clientId'],_0x2e6e51=this[_0x33e09d(0x15f)]['bot'][_0x33e09d(0x19f)],_0x385180=this[_0x33e09d(0x15f)][_0x33e09d(0x166)][_0x33e09d(0x19b)];if(this['kythiaConfig']['env']===_0x33e09d(a0_0xde5901._0x31810b)){if(!_0x2e6e51){this[_0x33e09d(0x161)][_0x33e09d(0x170)](_0x2bc56d['qiyXN']);return;}this['logger']['info'](_0x33e09d(a0_0xde5901._0x250794)+_0x2e6e51+_0x33e09d(a0_0xde5901._0x500304)),await this[_0x33e09d(a0_0xde5901._0x4f49e5)][_0x33e09d(a0_0xde5901._0xa98634)](discord_js_1['Routes'][_0x33e09d(0x167)](_0x40d1b0,_0x2e6e51),{'body':_0x3f33ff}),this['logger']['info'](_0x33e09d(0x176));}else{const _0x27e702=[],_0x59ffc2=[];for(const _0x43e280 of _0x3f33ff){const _0x46a93f=_0x43e280['name'],_0x2781e9=this['client']['commands']['get'](_0x46a93f);_0x2781e9?.[_0x33e09d(a0_0xde5901._0x4c7609)]?_0x59ffc2['push'](_0x43e280):_0x27e702[_0x33e09d(0x1af)](_0x43e280);}this['logger'][_0x33e09d(0x198)]('🟢\x20Deploying\x20'+_0x27e702['length']+_0x33e09d(0x136)),await this['rest'][_0x33e09d(a0_0xde5901._0xa98634)](discord_js_1['Routes']['applicationCommands'](_0x40d1b0),{'body':_0x27e702}),this[_0x33e09d(a0_0xde5901._0xe70839)]['info'](_0x33e09d(0x149));_0x385180&&_0x59ffc2['length']>-0x77*0x16+0x10*-0x205+0x79*0x5a&&(this[_0x33e09d(a0_0xde5901._0xe70839)][_0x33e09d(0x198)]('🔒\x20Deploying\x20'+_0x59ffc2['length']+'\x20MAIN\x20GUILD\x20commands\x20to:\x20'+_0x385180+'...'),await this[_0x33e09d(0x11b)][_0x33e09d(0x1ad)](discord_js_1['Routes'][_0x33e09d(a0_0xde5901._0x5a4e66)](_0x40d1b0,_0x385180),{'body':_0x59ffc2}),this[_0x33e09d(0x161)]['info'](_0x2bc56d[_0x33e09d(0x14c)]));if(_0x2e6e51&&_0x2bc56d[_0x33e09d(a0_0xde5901._0x41355d)](_0x2e6e51,_0x385180)){this['logger'][_0x33e09d(0x198)](_0x33e09d(0x1a1)+_0x2e6e51+_0x33e09d(0x17a));try{await this[_0x33e09d(a0_0xde5901._0xfe6fb5)][_0x33e09d(a0_0xde5901._0x1834a7)](discord_js_1[_0x33e09d(0x164)]['applicationGuildCommands'](_0x40d1b0,_0x2e6e51),{'body':[]}),this['logger']['info'](_0x33e09d(a0_0xde5901._0x53c34b));}catch(_0x5c7159){this[_0x33e09d(0x161)]['warn']('⚠️\x20Dev\x20guild\x20cleanup\x20info:\x20'+_0x5c7159);}}}this['logger'][_0x33e09d(a0_0xde5901._0x36fc64)](_0x33e09d(0x144)+_0x3f33ff['length']),this[_0x33e09d(a0_0xde5901._0x1b228d)][_0x33e09d(0x198)](_0x33e09d(0x1b6)+_0x3f5e19),this['logger']['info']('⭕\x20User\x20Context\x20Menu:\x20'+_0x235637),this[_0x33e09d(a0_0xde5901._0xe70839)]['info'](_0x33e09d(0x14a)+_0x4efa79),this[_0x33e09d(a0_0xde5901._0x1aa0c8)][_0x33e09d(0x198)](_0x2bc56d['FCZMn']);}catch(_0x365ee9){this['logger']['error'](_0x33e09d(0x1b2),_0x365ee9);}}[a0_0x595fc1(0x152)](_0x3d120b){const a0_0x2d235e={_0x316bb8:0x1b1,_0x475bfc:0x1b7},_0xaf03d9=a0_0x595fc1,_0x3aa014={'slash':0x0,'user':0x0,'message':0x0};if(!Array[_0xaf03d9(a0_0x2d235e._0x316bb8)](_0x3d120b))return this[_0xaf03d9(0x161)]['warn'](_0xaf03d9(0x13d)),_0x3aa014;for(const _0x33c511 of _0x3d120b){switch(_0x33c511?.['type']){case 0x1462+0x10f0*-0x2+0xd7f:case undefined:_0x3aa014[_0xaf03d9(0x159)]++;break;case 0x5b+0x9d*0x6+-0x407:_0x3aa014[_0xaf03d9(a0_0x2d235e._0x475bfc)]++;break;case-0x355+0x217d+-0x1e25:_0x3aa014['message']++;break;}}return _0x3aa014;}[a0_0x595fc1(0x1b4)](_0x365fff){this['dbReadyHooks']['push'](_0x365fff);}[a0_0x595fc1(0x1a9)](_0x242a9f){const a0_0x26dc9f={_0x15ebaf:0x1af},_0x1337fa=a0_0x595fc1;this[_0x1337fa(0x11d)][_0x1337fa(a0_0x26dc9f._0x15ebaf)](_0x242a9f);}async['start'](){const a0_0x2c6757={_0x5d5512:0x168,_0x4199f3:0x19d,_0x45140f:0x118,_0xb7ad91:0x14e,_0x4f5a7a:0x143,_0x20af45:0x182,_0x40c0cd:0x17f,_0x54365e:0x182,_0x511409:0x14d,_0x4c0291:0x186,_0x3ded1b:0x16b,_0x17ee9a:0x16b,_0x2bf020:0x15f,_0x291a86:0x196,_0x1d3a10:0x169,_0x34dc5d:0x118,_0x573075:0x161,_0x3d541c:0x118,_0x5c3d2e:0x118,_0x4174a5:0x146,_0x8205b:0x18e,_0x5974e5:0x118,_0x23150e:0x118,_0x332def:0x16c,_0x273736:0x161,_0x27eb7c:0x161,_0x33dc6e:0x118,_0xd1c5e5:0x179,_0x20583d:0x15a,_0x11277a:0x12d,_0x11c820:0x193,_0x2afec1:0x13e,_0x171704:0x163,_0x128fac:0x186,_0x13e2e5:0x175,_0x20c1e5:0x186,_0x4dc580:0x1b8,_0x3f13ed:0x140,_0x5435a2:0x1a5,_0x234469:0x130,_0x37c892:0x198,_0x2f9911:0x182,_0x45abd2:0x161,_0x2c192f:0x182,_0x42ed8c:0x189,_0x205e2b:0x161,_0x3b176a:0x1ac,_0x25863a:0x115,_0xaeb472:0x161,_0x21dbad:0x1b8,_0x10db79:0x1c0,_0x5ee27f:0x172,_0x3cc660:0x198,_0x27e9d9:0x1b9,_0x2e7753:0x15c,_0x1f803e:0x15f},a0_0x13fd9b={_0x2dd49f:0x130,_0x2d962b:0x13c,_0x425100:0x15b,_0x342d4c:0x16a,_0x16e87e:0x198,_0x41fef8:0x11d},a0_0x16c4fc={_0x1c810b:0x161,_0x545d00:0x118,_0x4838e0:0x195},a0_0x49e62e={_0x293fd4:0x139,_0x53a9ed:0x184},_0x24ba86=a0_0x595fc1,_0x428ccb={'TApFc':function(_0xc58105,_0x2e998a){return _0xc58105-_0x2e998a;},'pTwIr':function(_0x49fb3f,_0x42d52e){return _0x49fb3f-_0x42d52e;},'GPzqn':_0x24ba86(a0_0x2c6757._0x5d5512),'ogbMx':'info','enTcn':function(_0x5dd8f3,_0x2386ed,_0x42f5ed){return _0x5dd8f3(_0x2386ed,_0x42f5ed);},'JQqVf':_0x24ba86(0x15e),'XaKZh':'Official\x20Github:\x20','UGMuZ':function(_0xec8e90,_0x3e5cce){return _0xec8e90+_0x3e5cce;},'cWdHE':function(_0x1a518b,_0x435e84){return _0x1a518b+_0x435e84;},'MLVOM':_0x24ba86(a0_0x2c6757._0x4199f3),'feFUu':'\x20\x20\x20-\x20IP\x20Address','AoOkK':'\x20\x20\x20-\x20Bot\x20Configuration','zROmj':'🚫\x20ACCESS\x20DENIED','zsqWr':'▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬','oKbpG':function(_0xbfdd95,_0x491cf8){return _0xbfdd95*_0x491cf8;},'TkJDk':_0x24ba86(0x11c),'eBAFr':_0x24ba86(a0_0x2c6757._0x45140f)},_0x102b94=(_0x415c41,_0x54cafb)=>new Promise((_0x2ea063,_0x4dc199)=>{const _0x3f91c7=_0x24ba86;figlet_1[_0x3f91c7(0x182)]['text'](_0x415c41,_0x54cafb,(_0x5d08f4,_0x54ef9f)=>{_0x5d08f4?_0x4dc199(_0x5d08f4):_0x2ea063(_0x54ef9f||'');});});try{const _0x5c5ee6=await _0x428ccb['enTcn'](_0x102b94,'KYTHIA',{'font':'ANSI\x20Shadow','horizontalLayout':_0x428ccb[_0x24ba86(a0_0x2c6757._0xb7ad91)],'verticalLayout':_0x24ba86(0x15e)}),_0x369420=[cli_color_1[_0x24ba86(0x182)][_0x24ba86(a0_0x2c6757._0x4f5a7a)]('Architected\x20by\x20kenndeclouv'),cli_color_1['default']['cyan'](_0x24ba86(0x190))+cli_color_1[_0x24ba86(0x182)]['underline']('https://dsc.gg/kythia'),cli_color_1[_0x24ba86(a0_0x2c6757._0x20af45)]['cyan'](_0x428ccb['XaKZh'])+cli_color_1['default']['underline']('https://github.com/kythia'),_0x428ccb['UGMuZ'](cli_color_1[_0x24ba86(a0_0x2c6757._0x20af45)][_0x24ba86(0x143)](_0x24ba86(0x191)),cli_color_1['default']['underline']('https://kythia.me')),'',cli_color_1['default']['cyanBright']('Kythia\x20Core\x20version:\x20'+package_json_1['version']),'',cli_color_1[_0x24ba86(a0_0x2c6757._0x20af45)][_0x24ba86(0x137)]('Respect\x20my\x20work\x20by\x20not\x20removing\x20the\x20credit')],_0x503bfb=_0x369420['map'](_0x30e412=>cli_color_1[_0x24ba86(0x182)][_0x24ba86(0x139)](_0x30e412)),_0x59b2e5=Math['max'](..._0x503bfb[_0x24ba86(0x14d)](_0x2a4ad3=>_0x2a4ad3[_0x24ba86(0x12f)])),_0xb82fc0=0x1ba2+0xda0+0xdbe*-0x3,_0x8fa152=_0x428ccb['cWdHE'](_0x59b2e5,_0xb82fc0*(0x20cb+-0x1f*-0x17+-0x2392)),_0x3c3eab=cli_color_1['default']['cyanBright']('═'),_0x16e67e=cli_color_1[_0x24ba86(0x182)][_0x24ba86(a0_0x2c6757._0x40c0cd)]('║'),_0x38fd0e=cli_color_1['default']['cyanBright']('╔'+_0x3c3eab[_0x24ba86(0x142)](_0x8fa152)+'╗'),_0x151aad=cli_color_1[_0x24ba86(a0_0x2c6757._0x54365e)]['cyanBright']('╚'+_0x3c3eab[_0x24ba86(0x142)](_0x8fa152)+'╝'),_0x5cc0ae=_0x16e67e+'\x20'['repeat'](_0x8fa152)+_0x16e67e,_0x436068=_0x5c5ee6[_0x24ba86(0x1a2)]('\x0a'),_0xe8e751=_0x436068[_0x24ba86(0x14d)](_0x4c96cf=>{const _0x23017a=_0x24ba86,_0x330446=cli_color_1['default'][_0x23017a(a0_0x49e62e._0x293fd4)](_0x4c96cf)[_0x23017a(0x12f)],_0x54ef58='\x20'[_0x23017a(0x142)](Math['max'](0x1f01+-0xa03+0x14fe*-0x1,Math[_0x23017a(a0_0x49e62e._0x53a9ed)](_0x428ccb['TApFc'](_0x8fa152,_0x330446)/(0x44*0xb+0x11dc+-0x14c6))));return _0x16e67e+_0x54ef58+cli_color_1[_0x23017a(0x182)]['cyanBright'](_0x4c96cf)+'\x20'['repeat'](_0x428ccb[_0x23017a(0x178)](_0x8fa152-_0x54ef58[_0x23017a(0x12f)],_0x330446))+_0x16e67e;})['join']('\x0a'),_0x200c6c=_0x369420[_0x24ba86(a0_0x2c6757._0x511409)]((_0x4e2a26,_0x2c18ff)=>{const _0x2e51a7=_0x24ba86,_0x25fc7f=_0x503bfb[_0x2c18ff],_0x412856='\x20'['repeat'](Math[_0x2e51a7(0x184)]((_0x8fa152-_0x25fc7f['length'])/(0x3*-0x9bd+-0x557+-0x4f0*-0x7)));return _0x16e67e+_0x412856+_0x4e2a26+'\x20'['repeat'](_0x428ccb[_0x2e51a7(0x178)](_0x8fa152,_0x412856['length'])-_0x25fc7f[_0x2e51a7(0x12f)])+_0x16e67e;})[_0x24ba86(a0_0x2c6757._0x4c0291)]('\x0a');console['log']('\x0a'+_0x38fd0e),console[_0x24ba86(0x16b)](_0x5cc0ae),console[_0x24ba86(a0_0x2c6757._0x3ded1b)](_0xe8e751),console['log'](_0x5cc0ae),console[_0x24ba86(a0_0x2c6757._0x17ee9a)](_0x200c6c),console[_0x24ba86(0x16b)](_0x5cc0ae),console[_0x24ba86(0x16b)](_0x151aad+'\x0a');}catch(_0x3ef766){this['logger']['error']('❌\x20Failed\x20to\x20render\x20figlet\x20banner:',_0x3ef766);}this[_0x24ba86(0x161)]['info']('🚀\x20Starting\x20kythia...');const _0x2c00b3=this[_0x24ba86(a0_0x2c6757._0x2bf020)][_0x24ba86(0x1c2)];if(!_0x2c00b3||!_0x2c00b3[_0x24ba86(a0_0x2c6757._0x291a86)]||!_0x2c00b3[_0x24ba86(0x13f)]){const _0x26fe0b='9|4|1|11|6|5|17|13|18|0|15|2|12|7|16|14|20|10|19|3|8'['split']('|');let _0x319ab5=0x389+0x2000+0x2389*-0x1;while(!![]){switch(_0x26fe0b[_0x319ab5++]){case'0':this['logger'][_0x24ba86(a0_0x2c6757._0x45140f)]('');continue;case'1':this['logger']['error'](_0x24ba86(a0_0x2c6757._0x1d3a10));continue;case'2':this['logger'][_0x24ba86(a0_0x2c6757._0x34dc5d)]('\x20\x20\x20Open\x20your\x20\x22kythia.config.js\x22\x20file\x20and\x20set:');continue;case'3':this['logger']['error'](_0x24ba86(0x169));continue;case'4':this[_0x24ba86(a0_0x2c6757._0x573075)]['error'](_0x428ccb[_0x24ba86(0x157)]);continue;case'5':this['logger'][_0x24ba86(0x118)]('We\x20collect\x20the\x20following\x20data\x20for\x20license\x20verification:');continue;case'6':this[_0x24ba86(a0_0x2c6757._0x573075)][_0x24ba86(0x118)]('');continue;case'7':this[_0x24ba86(0x161)][_0x24ba86(0x118)]('\x20\x20\x20\x20\x20\x20\x20acceptTOS:\x20true,');continue;case'8':process['exit'](-0x1*-0x215b+-0x1*0x22b+-0x1f2f);continue;case'9':this[_0x24ba86(0x161)][_0x24ba86(a0_0x2c6757._0x3d541c)]('▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬');continue;case'10':this[_0x24ba86(0x161)][_0x24ba86(a0_0x2c6757._0x5c3d2e)](_0x24ba86(a0_0x2c6757._0x4174a5));continue;case'11':this['logger']['error'](_0x24ba86(a0_0x2c6757._0x8205b));continue;case'12':this['logger'][_0x24ba86(0x118)](_0x24ba86(0x12c));continue;case'13':this[_0x24ba86(0x161)]['error']('\x20\x20\x20-\x20Hardware\x20Specification\x20(CPU/RAM)\x20for\x20HWID');continue;case'14':this[_0x24ba86(0x161)][_0x24ba86(a0_0x2c6757._0x5974e5)](_0x24ba86(0x1bf));continue;case'15':this[_0x24ba86(0x161)]['error'](_0x24ba86(0x199));continue;case'16':this['logger'][_0x24ba86(a0_0x2c6757._0x23150e)]('\x20\x20\x20\x20\x20\x20\x20dataCollection:\x20true');continue;case'17':this['logger']['error'](_0x428ccb[_0x24ba86(0x19e)]);continue;case'18':this['logger']['error'](_0x428ccb[_0x24ba86(0x14b)]);continue;case'19':this['logger']['error'](_0x24ba86(0x1ae));continue;case'20':this[_0x24ba86(a0_0x2c6757._0x573075)][_0x24ba86(0x118)]('');continue;}break;}}this['kythiaConfig']['sentry']?.['dsn']?(Sentry['init']({'dsn':this['kythiaConfig'][_0x24ba86(0x148)][_0x24ba86(a0_0x2c6757._0x332def)],'tracesSampleRate':0x1,'profilesSampleRate':0x1}),this['logger'][_0x24ba86(0x198)]('✔️\x20\x20Sentry\x20Error\x20Tracking\x20is\x20ACTIVE')):this[_0x24ba86(a0_0x2c6757._0x273736)]['warn']('🟠\x20Sentry\x20DSN\x20not\x20found\x20in\x20config.\x20Error\x20tracking\x20is\x20INACTIVE.');this['_checkRequiredConfig']();const _0x5cfaab=await this['telemetryManager']['verify']();this['container']['_degraded']=!_0x5cfaab;!_0x5cfaab&&(this['logger']['error'](_0x24ba86(0x169)),this['logger']['error'](_0x428ccb['zROmj']),this['logger']['error']('Your\x20license\x20key\x20is\x20missing,\x20invalid,\x20or\x20expired.'),this[_0x24ba86(a0_0x2c6757._0x27eb7c)][_0x24ba86(a0_0x2c6757._0x33dc6e)]('Please\x20verify\x20your\x20license\x20key\x20in\x20.env\x20or\x20contact\x20support\x20at:'),this[_0x24ba86(a0_0x2c6757._0x573075)][_0x24ba86(0x118)](_0x24ba86(a0_0x2c6757._0xd1c5e5)),this['logger']['error'](_0x428ccb['zsqWr']),this[_0x24ba86(0x161)][_0x24ba86(0x170)](_0x24ba86(a0_0x2c6757._0x20583d)),setTimeout(()=>{const _0x4aa4e8=_0x24ba86;this[_0x4aa4e8(a0_0x16c4fc._0x1c810b)][_0x4aa4e8(a0_0x16c4fc._0x545d00)](_0x428ccb[_0x4aa4e8(a0_0x16c4fc._0x4838e0)]),process['exit'](0xe76*0x1+-0x1*-0xfd5+-0x1*0x1e4a);},_0x428ccb['oKbpG'](0x16f4+-0x1810+-0xd*-0x16,0x198+-0x11*-0x209+-0x23f5)*(-0xd88+0x25a+0x1*0xf16)));_0x5cfaab&&(this['telemetryManager'][_0x24ba86(0x18b)](),this['telemetryManager']['startAutoFlush'](),this['telemetryManager']['report']('info',_0x24ba86(a0_0x2c6757._0x11277a)+package_json_1[_0x24ba86(a0_0x2c6757._0x11c820)]+')',{'node':process[_0x24ba86(a0_0x2c6757._0x11c820)],'platform':process[_0x24ba86(0x1bd)],'cwd':process['cwd']()}));try{const _0x193980=!process['argv'][_0x24ba86(a0_0x2c6757._0x2afec1)](_0x24ba86(a0_0x2c6757._0x171704));this['logger']['info']('▬▬▬▬▬▬▬▬▬▬▬[\x20Translator\x20System\x20]▬▬▬▬▬▬▬▬▬▬▬');const _0x54a8e6=node_path_1['default'][_0x24ba86(a0_0x2c6757._0x128fac)](__dirname,'lang');this[_0x24ba86(a0_0x2c6757._0x13e2e5)]['loadLocalesFromDir'](_0x54a8e6);const _0x25d319=node_path_1[_0x24ba86(a0_0x2c6757._0x54365e)][_0x24ba86(a0_0x2c6757._0x20c1e5)](this[_0x24ba86(0x116)],'lang');this['translator']['loadLocalesFromDir'](_0x25d319),this[_0x24ba86(0x1b8)]['translator']=this['translator'],this[_0x24ba86(a0_0x2c6757._0x4dc580)]['t']=this[_0x24ba86(0x175)]['t']['bind'](this[_0x24ba86(0x175)]),this[_0x24ba86(0x161)][_0x24ba86(0x198)](_0x24ba86(a0_0x2c6757._0x3f13ed)),this[_0x24ba86(a0_0x2c6757._0x5435a2)]=new AddonManager_1[(_0x24ba86(a0_0x2c6757._0x20af45))]({'client':this[_0x24ba86(a0_0x2c6757._0x234469)],'container':this[_0x24ba86(a0_0x2c6757._0x4dc580)]});const _0x2ffd47=await this['addonManager']['loadAddons'](this);this['sequelize']?(this[_0x24ba86(a0_0x2c6757._0x27eb7c)][_0x24ba86(a0_0x2c6757._0x37c892)]('▬▬▬▬▬▬▬▬▬▬▬▬▬▬[\x20Connect\x20Database\x20]▬▬▬▬▬▬▬▬▬▬▬▬▬▬'),await this['sequelize'][_0x24ba86(0x1a0)](),await(-0x262c*-0x1+0x1*0x206d+0x35*-0x155,KythiaMigrator_1[_0x24ba86(a0_0x2c6757._0x2f9911)])({'sequelize':this['sequelize'],'container':this[_0x24ba86(0x1b8)],'logger':this[_0x24ba86(a0_0x2c6757._0x45abd2)]}),await(-0x19d5+-0x60c+0x1fe1*0x1,ModelLoader_1[_0x24ba86(a0_0x2c6757._0x2c192f)])(this,this[_0x24ba86(0x189)]),this[_0x24ba86(0x161)]['info'](_0x428ccb[_0x24ba86(0x147)]),KythiaModel_1[_0x24ba86(a0_0x2c6757._0x54365e)][_0x24ba86(0x171)](this[_0x24ba86(a0_0x2c6757._0x42ed8c)],this['client'])):this[_0x24ba86(a0_0x2c6757._0x205e2b)][_0x24ba86(0x170)]('⚠️\x20Sequelize\x20instance\x20not\x20provided.\x20Skipping\x20database\x20initialization.');const _0x584d74=this['addonManager'][_0x24ba86(0x141)]();this[_0x24ba86(a0_0x2c6757._0x3b176a)]=new EventManager_1[(_0x24ba86(0x182))]({'client':this[_0x24ba86(0x130)],'container':this['container'],'eventHandlers':_0x584d74[_0x24ba86(a0_0x2c6757._0x25863a)]}),this[_0x24ba86(0x1ac)]['initialize'](),this[_0x24ba86(a0_0x2c6757._0xaeb472)]['info'](_0x24ba86(0x17d));const _0x1f75de=new MiddlewareManager_1['default']({'container':this['container']});await _0x1f75de['loadMiddlewares'](),this[_0x24ba86(a0_0x2c6757._0x21dbad)]['middlewareManager']=_0x1f75de,this['interactionManager']=new InteractionManager_1['InteractionManager']({'client':this['client'],'container':this['container'],'handlers':_0x584d74}),this['interactionManager']['initialize'](),this[_0x24ba86(0x161)][_0x24ba86(0x198)](_0x24ba86(a0_0x2c6757._0x10db79)),_0x193980?await this['_deployCommands'](_0x2ffd47):this['logger']['info']('⏭️\x20\x20Skipping\x20command\x20deployment\x20because\x20--dev\x20flag\x20is\x20present.'),this['shutdownManager']=new ShutdownManager_1[(_0x24ba86(a0_0x2c6757._0x5ee27f))]({'client':this[_0x24ba86(a0_0x2c6757._0x234469)],'container':this['container']}),this['shutdownManager']['initialize'](),this['logger'][_0x24ba86(a0_0x2c6757._0x3cc660)](_0x24ba86(0x1a6)),this['client']['once']('clientReady',async _0x1fa76a=>{const _0x452cd1=_0x24ba86;this['logger']['info']('🌸\x20Logged\x20in\x20as\x20'+this[_0x452cd1(a0_0x13fd9b._0x2dd49f)]['user']?.['tag']),this['telemetryManager']['report'](_0x428ccb[_0x452cd1(a0_0x13fd9b._0x2d962b)],_0x452cd1(a0_0x13fd9b._0x425100)+_0x1fa76a['user']?.['tag'],{'guilds':_0x1fa76a['guilds']['cache']['size'],'users':_0x1fa76a[_0x452cd1(a0_0x13fd9b._0x342d4c)]['cache']['size']}),this[_0x452cd1(0x161)][_0x452cd1(a0_0x13fd9b._0x16e87e)]('🚀\x20Executing\x20'+this[_0x452cd1(a0_0x13fd9b._0x41fef8)]['length']+'\x20client-ready\x20hooks...');for(const _0x5e00bd of this['clientReadyHooks']){try{await _0x5e00bd(_0x1fa76a);}catch(_0x53766f){this['logger']['error'](_0x452cd1(0x1bc),_0x53766f);}}}),await this[_0x24ba86(0x130)][_0x24ba86(a0_0x2c6757._0x27e9d9)](this[_0x24ba86(0x15f)]['bot']['token']);}catch(_0x1d652b){this['logger']['error']('❌\x20Kythia\x20initialization\x20failed:',_0x1d652b);try{await this['telemetryManager']['report'](_0x428ccb['eBAFr'],_0x24ba86(a0_0x2c6757._0x2e7753),{'stack':_0x1d652b});}catch(_0x470e16){}this[_0x24ba86(a0_0x2c6757._0x1f803e)][_0x24ba86(0x148)]?.['dsn']&&Sentry['captureException'](_0x1d652b),process[_0x24ba86(0x192)](-0x12e3+-0xbbe*-0x2+-0x498);}}}module[a0_0x595fc1(0x1a4)]=Kythia;