xernerx 4.4.17 → 4.4.18
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/dist/build/ContextCommandBuilder.d.ts +23 -31
- package/dist/build/ContextCommandBuilder.js +39 -39
- package/dist/build/EventBuilder.d.ts +1 -1
- package/dist/build/EventBuilder.js +2 -2
- package/dist/build/InhibitorBuilder.d.ts +2 -11
- package/dist/build/InhibitorBuilder.js +2 -2
- package/dist/build/MessageCommandBuilder.d.ts +20 -26
- package/dist/build/MessageCommandBuilder.js +34 -34
- package/dist/build/SlashCommandBuilder.d.ts +25 -39
- package/dist/build/SlashCommandBuilder.js +48 -48
- package/dist/client/XernerxClient.d.ts +22 -30
- package/dist/client/XernerxClient.js +33 -33
- package/dist/client/XernerxShardClient.d.ts +1 -1
- package/dist/client/XernerxShardClient.js +13 -15
- package/dist/functions/delay.d.ts +1 -1
- package/dist/functions/delay.js +1 -1
- package/dist/functions/deploy.d.ts +1 -1
- package/dist/functions/deploy.js +20 -15
- package/dist/functions/isOwner.d.ts +1 -1
- package/dist/functions/isOwner.js +1 -1
- package/dist/functions/isVoter.d.ts +1 -1
- package/dist/functions/isVoter.js +1 -1
- package/dist/functions/load.d.ts +1 -1
- package/dist/functions/load.js +3 -2
- package/dist/functions/reload.d.ts +1 -1
- package/dist/functions/reload.js +12 -9
- package/dist/functions/sendWebhook.d.ts +1 -1
- package/dist/functions/sendWebhook.js +3 -2
- package/dist/functions/setPresence.d.ts +2 -2
- package/dist/functions/setPresence.js +11 -12
- package/dist/functions/xernerxUser.d.ts +1 -1
- package/dist/functions/xernerxUser.js +1 -1
- package/dist/handlers/CommandHandler.d.ts +1 -1
- package/dist/handlers/CommandHandler.js +109 -86
- package/dist/handlers/CommandHandler.js.map +1 -1
- package/dist/handlers/EventHandler.d.ts +1 -1
- package/dist/handlers/EventHandler.js +3 -3
- package/dist/handlers/ExtensionHandler.d.ts +1 -1
- package/dist/handlers/ExtensionHandler.js +5 -3
- package/dist/handlers/Handler.d.ts +1 -1
- package/dist/handlers/Handler.js +16 -6
- package/dist/handlers/InhibitorHandler.d.ts +1 -1
- package/dist/handlers/InhibitorHandler.js +3 -3
- package/dist/handlers/WebhookHandler.d.ts +4 -2
- package/dist/handlers/WebhookHandler.js +6 -9
- package/dist/main.d.ts +22 -29
- package/dist/main.js +22 -29
- package/dist/models/Arguments.d.ts +2 -5
- package/dist/models/Arguments.js +63 -48
- package/dist/tools/XernerxError.d.ts +1 -1
- package/dist/tools/XernerxError.js +1 -1
- package/dist/tools/XernerxLog.d.ts +1 -1
- package/dist/tools/XernerxLog.js +2 -7
- package/dist/types/extenders.d.ts +9 -5
- package/dist/types/extenders.js +1 -1
- package/dist/types/interfaces.d.ts +6 -9
- package/dist/types/interfaces.js +1 -1
- package/dist/types/types.d.ts +7 -179
- package/dist/types/types.js +1 -1
- package/dist/utils/ClientUtil.d.ts +4 -4
- package/dist/utils/ClientUtil.js +14 -8
- package/dist/utils/InteractionUtil.d.ts +2 -2
- package/dist/utils/InteractionUtil.js +1 -1
- package/dist/utils/MessageUtil.d.ts +2 -2
- package/dist/utils/MessageUtil.js +9 -5
- package/dist/utils/Util.d.ts +1 -1
- package/dist/utils/Util.js +1 -1
- package/dist/validators/commandValidation.d.ts +2 -5
- package/dist/validators/commandValidation.js +29 -19
- package/dist/validators/inhibitorValidations.d.ts +3 -19
- package/dist/validators/inhibitorValidations.js +2 -2
- package/package.json +1 -1
|
@@ -14,26 +14,28 @@ export default class CommandHandler extends Handler {
|
|
|
14
14
|
super(client);
|
|
15
15
|
}
|
|
16
16
|
loadMessageCommands(options) {
|
|
17
|
-
if (!this.client.options.intents.has(GatewayIntentBits.MessageContent))
|
|
18
|
-
|
|
17
|
+
if (!this.client.options.intents.has(GatewayIntentBits.MessageContent))
|
|
18
|
+
new XernerxLog(this.client).warn(`Message commands might not work as you're missing the intent MessageContent!`);
|
|
19
|
+
if (!this.client.options.intents.has(GatewayIntentBits.GuildMessages))
|
|
20
|
+
new XernerxLog(this.client).warn(`Message commands might not work as you're missing the intent GuildMessages!`);
|
|
19
21
|
options = z
|
|
20
22
|
.object({
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
})
|
|
31
|
-
.default({}),
|
|
32
|
-
handleEdits: z.boolean().default(false),
|
|
33
|
-
handleDeletes: z.boolean().default(false),
|
|
34
|
-
handleTyping: z.boolean().default(false),
|
|
35
|
-
logging: z.boolean().default(false),
|
|
23
|
+
directory: z.string(),
|
|
24
|
+
prefix: z.string().or(z.array(z.string())),
|
|
25
|
+
allowMention: z.boolean().default(false),
|
|
26
|
+
cooldown: z.number().default(0),
|
|
27
|
+
permissions: z
|
|
28
|
+
.object({
|
|
29
|
+
user: z.array(z.string()).default([]),
|
|
30
|
+
client: z.array(z.string()).default([]),
|
|
31
|
+
dm: z.boolean().default(true),
|
|
36
32
|
})
|
|
33
|
+
.default({}),
|
|
34
|
+
handleEdits: z.boolean().default(false),
|
|
35
|
+
handleDeletes: z.boolean().default(false),
|
|
36
|
+
handleTyping: z.boolean().default(false),
|
|
37
|
+
logging: z.boolean().default(false),
|
|
38
|
+
})
|
|
37
39
|
.parse(options);
|
|
38
40
|
this.client.modules.options.message = options;
|
|
39
41
|
const files = this.readdir(options.directory);
|
|
@@ -62,27 +64,28 @@ export default class CommandHandler extends Handler {
|
|
|
62
64
|
// return reload(this.client, 'message');
|
|
63
65
|
// }
|
|
64
66
|
loadSlashCommands(options) {
|
|
65
|
-
if (!this.client.settings.local)
|
|
67
|
+
if (!this.client.settings.local)
|
|
68
|
+
new XernerxLog(this.client).warn(`Slash commands might not work as you haven't specified a local guild ID.`);
|
|
66
69
|
options = z
|
|
67
70
|
.object({
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
})
|
|
84
|
-
.default({}),
|
|
71
|
+
directory: z.string(),
|
|
72
|
+
cooldown: z.number().default(0),
|
|
73
|
+
permissions: z
|
|
74
|
+
.object({
|
|
75
|
+
user: z.array(z.string()).default([]),
|
|
76
|
+
client: z.array(z.string()).default([]),
|
|
77
|
+
dm: z.boolean().default(true),
|
|
78
|
+
})
|
|
79
|
+
.default({}),
|
|
80
|
+
logging: z.boolean().default(false),
|
|
81
|
+
defer: z
|
|
82
|
+
.object({
|
|
83
|
+
reply: z.boolean().default(false),
|
|
84
|
+
ephemeral: z.boolean().default(false),
|
|
85
|
+
fetchReply: z.boolean().default(false),
|
|
85
86
|
})
|
|
87
|
+
.default({}),
|
|
88
|
+
})
|
|
86
89
|
.parse(options);
|
|
87
90
|
this.client.modules.options.slash = options;
|
|
88
91
|
const files = this.readdir(options.directory);
|
|
@@ -98,27 +101,28 @@ export default class CommandHandler extends Handler {
|
|
|
98
101
|
});
|
|
99
102
|
}
|
|
100
103
|
loadContextCommands(options) {
|
|
101
|
-
if (!this.client.settings.local)
|
|
104
|
+
if (!this.client.settings.local)
|
|
105
|
+
new XernerxLog(this.client).warn(`Context commands might not work as you haven't specified a local guild ID.`);
|
|
102
106
|
options = z
|
|
103
107
|
.object({
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
})
|
|
112
|
-
.default({}),
|
|
113
|
-
logging: z.boolean().default(false),
|
|
114
|
-
defer: z
|
|
115
|
-
.object({
|
|
116
|
-
reply: z.boolean().default(false),
|
|
117
|
-
ephemeral: z.boolean().default(false),
|
|
118
|
-
fetchReply: z.boolean().default(false),
|
|
119
|
-
})
|
|
120
|
-
.default({}),
|
|
108
|
+
directory: z.string(),
|
|
109
|
+
cooldown: z.number().default(0),
|
|
110
|
+
permissions: z
|
|
111
|
+
.object({
|
|
112
|
+
user: z.array(z.string()).default([]),
|
|
113
|
+
client: z.array(z.string()).default([]),
|
|
114
|
+
dm: z.boolean().default(true),
|
|
121
115
|
})
|
|
116
|
+
.default({}),
|
|
117
|
+
logging: z.boolean().default(false),
|
|
118
|
+
defer: z
|
|
119
|
+
.object({
|
|
120
|
+
reply: z.boolean().default(false),
|
|
121
|
+
ephemeral: z.boolean().default(false),
|
|
122
|
+
fetchReply: z.boolean().default(false),
|
|
123
|
+
})
|
|
124
|
+
.default({}),
|
|
125
|
+
})
|
|
122
126
|
.parse(options);
|
|
123
127
|
this.client.modules.options.context = options;
|
|
124
128
|
const files = this.readdir(options.directory);
|
|
@@ -135,14 +139,18 @@ export default class CommandHandler extends Handler {
|
|
|
135
139
|
}
|
|
136
140
|
async messageCommandRun(message, message2) {
|
|
137
141
|
const filetype = 'MessageCommand';
|
|
138
|
-
if (message.author.bot)
|
|
142
|
+
if (message.author.bot)
|
|
143
|
+
return;
|
|
139
144
|
message.util = new MessageUtil(this.client, message);
|
|
140
145
|
message.user = await xernerxUser(message, this.client);
|
|
141
|
-
if (typeof message2 === 'object')
|
|
146
|
+
if (typeof message2 === 'object')
|
|
147
|
+
message = message2;
|
|
142
148
|
if (message2 === 'delete') {
|
|
143
|
-
if (!this.client.cache.messages.has(message.id))
|
|
149
|
+
if (!this.client.cache.messages.has(message.id))
|
|
150
|
+
return;
|
|
144
151
|
const id = this.client.cache.messages.get(message.id);
|
|
145
|
-
if (!id)
|
|
152
|
+
if (!id)
|
|
153
|
+
return;
|
|
146
154
|
(async () => {
|
|
147
155
|
const msg = await message.channel.messages.fetch(id);
|
|
148
156
|
await msg.delete();
|
|
@@ -153,24 +161,25 @@ export default class CommandHandler extends Handler {
|
|
|
153
161
|
if (message.content && this.client.modules.options.message) {
|
|
154
162
|
const commands = this.client.commands.message;
|
|
155
163
|
const prefixes = Array.isArray(this.client.modules.options.message.prefix) ? this.client.modules.options.message.prefix : [this.client.modules.options.message.prefix];
|
|
156
|
-
let commandName = null,
|
|
157
|
-
cmd,
|
|
158
|
-
commandAlias = null,
|
|
159
|
-
commandPrefix = null;
|
|
164
|
+
let commandName = null, cmd, commandAlias = null, commandPrefix = null;
|
|
160
165
|
commands.map((command) => {
|
|
161
166
|
let prefix = null;
|
|
162
167
|
if (command.regex && message.content.match(command.regex)) {
|
|
163
168
|
const [match] = message.content.match(command.regex) || [null];
|
|
164
|
-
if (match)
|
|
169
|
+
if (match)
|
|
170
|
+
commandName = command.name;
|
|
165
171
|
}
|
|
166
172
|
const cp = Array.isArray(command.prefix) ? command.prefix : [command.prefix];
|
|
167
173
|
prefixes.map((p) => {
|
|
168
|
-
if (message.content.startsWith(p))
|
|
174
|
+
if (message.content.startsWith(p))
|
|
175
|
+
prefix = p;
|
|
169
176
|
});
|
|
170
177
|
cp.map((p) => {
|
|
171
|
-
if (message.content.startsWith(p))
|
|
178
|
+
if (message.content.startsWith(p))
|
|
179
|
+
prefix = p;
|
|
172
180
|
});
|
|
173
|
-
if (!prefix)
|
|
181
|
+
if (!prefix)
|
|
182
|
+
return;
|
|
174
183
|
if (!commandName)
|
|
175
184
|
commandName =
|
|
176
185
|
message.content
|
|
@@ -191,15 +200,18 @@ export default class CommandHandler extends Handler {
|
|
|
191
200
|
commandName = message.content.replace(`<@${this.client.user?.id}>`, '').trim().split(/ +/).shift()?.toLowerCase() || null;
|
|
192
201
|
}
|
|
193
202
|
}
|
|
194
|
-
if (this.client.commands.message.has(commandName))
|
|
195
|
-
|
|
196
|
-
if (
|
|
203
|
+
if (this.client.commands.message.has(commandName))
|
|
204
|
+
cmd = this.client.commands.message.get(commandName);
|
|
205
|
+
if (await inhibitorValidation(message, cmd))
|
|
206
|
+
return;
|
|
207
|
+
if (!cmd)
|
|
208
|
+
return this.client.emit('commandNotFound', message, filetype);
|
|
197
209
|
message.util.parsed = {
|
|
198
210
|
alias: commandAlias,
|
|
199
211
|
prefix: commandPrefix,
|
|
200
212
|
};
|
|
201
213
|
this.client.emit('commandStart', message, filetype);
|
|
202
|
-
this.exec(cmd, message, await messageArguments(message, cmd), filetype);
|
|
214
|
+
return await this.exec(cmd, message, await messageArguments(message, cmd), filetype);
|
|
203
215
|
}
|
|
204
216
|
}
|
|
205
217
|
async slashCommandRun(interaction) {
|
|
@@ -207,20 +219,25 @@ export default class CommandHandler extends Handler {
|
|
|
207
219
|
interaction.util = new InteractionUtil(this.client, interaction);
|
|
208
220
|
interaction.user = await xernerxUser(interaction, this.client);
|
|
209
221
|
let cmd = null;
|
|
210
|
-
if (this.client.commands.slash.has(interaction.commandName))
|
|
211
|
-
|
|
212
|
-
if (
|
|
222
|
+
if (this.client.commands.slash.has(interaction.commandName))
|
|
223
|
+
cmd = this.client.commands.slash.get(interaction.commandName);
|
|
224
|
+
if (await inhibitorValidation(interaction, cmd))
|
|
225
|
+
return;
|
|
226
|
+
if (!cmd)
|
|
227
|
+
return this.client.emit('commandNotFound', interaction);
|
|
213
228
|
new Promise(async (resolve) => {
|
|
214
229
|
if (interaction.isAutocomplete()) {
|
|
215
230
|
const focused = interaction.options.getFocused(true);
|
|
216
231
|
const options = interaction.options;
|
|
217
232
|
await cmd.autocomplete(interaction, focused, options);
|
|
218
|
-
}
|
|
233
|
+
}
|
|
234
|
+
else
|
|
235
|
+
resolve(true);
|
|
219
236
|
})
|
|
220
237
|
.then(async () => {
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
238
|
+
this.client.emit('commandStart', interaction, filetype);
|
|
239
|
+
return await this.exec(cmd, interaction, await interactionArguments(interaction, cmd), filetype);
|
|
240
|
+
})
|
|
224
241
|
.catch((error) => this.client.emit('commandError', interaction, error, filetype));
|
|
225
242
|
}
|
|
226
243
|
async contextCommandRun(interaction) {
|
|
@@ -228,22 +245,28 @@ export default class CommandHandler extends Handler {
|
|
|
228
245
|
interaction.util = new InteractionUtil(this.client, interaction);
|
|
229
246
|
interaction.user = await xernerxUser(interaction, this.client);
|
|
230
247
|
let cmd;
|
|
231
|
-
if (this.client.commands.context.has(interaction.commandName))
|
|
232
|
-
|
|
233
|
-
if (
|
|
248
|
+
if (this.client.commands.context.has(interaction.commandName))
|
|
249
|
+
cmd = this.client.commands.context.get(interaction.commandName);
|
|
250
|
+
if (await inhibitorValidation(interaction, cmd))
|
|
251
|
+
return;
|
|
252
|
+
if (!cmd)
|
|
253
|
+
return this.client.emit('commandNotFound', interaction, filetype);
|
|
234
254
|
this.client.emit('commandStart', interaction, filetype);
|
|
235
|
-
return this.exec(cmd, interaction, await interactionArguments(interaction, cmd), filetype);
|
|
255
|
+
return await this.exec(cmd, interaction, await interactionArguments(interaction, cmd), filetype);
|
|
236
256
|
}
|
|
237
257
|
async exec(cmd, event, args, type) {
|
|
238
258
|
try {
|
|
239
|
-
if (await commandValidation(event, cmd))
|
|
240
|
-
|
|
259
|
+
if (await commandValidation(event, cmd))
|
|
260
|
+
return;
|
|
261
|
+
if (cmd.conditions && (await cmd.conditions(event, args)))
|
|
262
|
+
return;
|
|
241
263
|
cmd.exec(event, args);
|
|
242
|
-
this.client.emit('commandFinish', event, type);
|
|
243
|
-
}
|
|
264
|
+
return await this.client.emit('commandFinish', event, type);
|
|
265
|
+
}
|
|
266
|
+
catch (error) {
|
|
244
267
|
new XernerxLog(this.client).error(`An error occurred executing ${cmd.name}`, error);
|
|
245
|
-
this.client.emit('commandError', event, error, type);
|
|
268
|
+
return await this.client.emit('commandError', event, error, type);
|
|
246
269
|
}
|
|
247
270
|
}
|
|
248
271
|
}
|
|
249
|
-
//# sourceMappingURL=CommandHandler.js.map
|
|
272
|
+
//# sourceMappingURL=CommandHandler.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CommandHandler.js","sourceRoot":"","sources":["../../src/handlers/CommandHandler.ts"],"names":[],"mappings":"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","sourcesContent":["import { z } from 'zod';\nimport * as path from 'path';\nimport { GatewayIntentBits } from 'discord.js';\n\nimport XernerxClient from '../client/XernerxClient.js';\nimport { ContextHandlerOptions, MessageHandlerOptions, SlashHandlerOptions } from '../types/interfaces.js';\nimport Handler from './Handler.js';\nimport { XernerxMessage, XernerxMessageContextInteraction, XernerxSlashInteraction, XernerxUserContextInteraction } from '../types/extenders.js';\nimport MessageUtil from '../utils/MessageUtil.js';\nimport ContextCommandBuilder from '../build/ContextCommandBuilder.js';\nimport MessageCommandBuilder from '../build/MessageCommandBuilder.js';\nimport SlashCommandBuilder from '../build/SlashCommandBuilder.js';\nimport { FileType } from '../types/types.js';\nimport { xernerxUser } from '../functions/xernerxUser.js';\nimport InteractionUtil from '../utils/InteractionUtil.js';\nimport commandValidation from '../validators/commandValidation.js';\nimport XernerxLog from '../tools/XernerxLog.js';\nimport { interactionArguments, messageArguments } from '../models/Arguments.js';\nimport { inhibitorValidation } from '../validators/inhibitorValidations.js';\n\nexport default class CommandHandler extends Handler {\n constructor(client: XernerxClient) {\n super(client);\n }\n\n public loadMessageCommands(options: MessageHandlerOptions) {\n if (!this.client.options.intents.has(GatewayIntentBits.MessageContent)) new XernerxLog(this.client).warn(`Message commands might not work as you're missing the intent MessageContent!`);\n if (!this.client.options.intents.has(GatewayIntentBits.GuildMessages)) new XernerxLog(this.client).warn(`Message commands might not work as you're missing the intent GuildMessages!`);\n\n options = z\n .object({\n directory: z.string(),\n prefix: z.string().or(z.array(z.string())),\n allowMention: z.boolean().default(false),\n cooldown: z.number().default(0),\n permissions: z\n .object({\n user: z.array(z.string()).default([]),\n client: z.array(z.string()).default([]),\n dm: z.boolean().default(true),\n })\n .default({}),\n handleEdits: z.boolean().default(false),\n handleDeletes: z.boolean().default(false),\n handleTyping: z.boolean().default(false),\n logging: z.boolean().default(false),\n })\n .parse(options);\n\n this.client.modules.options.message = options;\n\n const files = this.readdir(options.directory);\n\n for (const file of files) {\n const filePath = `${path.resolve(options.directory)}\\\\${file}`;\n\n this.load(filePath, 'MessageCommand');\n }\n\n new XernerxLog(this.client).info(`Loaded ${files.length} Message Commands.`);\n\n this.emit({\n name: 'messageCreate',\n fileType: 'MessageCommand',\n run: (message: XernerxMessage) => this.messageCommandRun(message),\n });\n\n this.emit({\n name: 'messageUpdate',\n fileType: 'MessageCommand',\n run: (message: XernerxMessage, message2: XernerxMessage) => this.messageCommandRun(message, message2),\n });\n\n this.emit({\n name: 'messageDelete',\n fileType: 'MessageCommand',\n run: (message: XernerxMessage) => this.messageCommandRun(message, 'delete'),\n });\n }\n\n // public reloadMessageCommands() {\n // return reload(this.client, 'message');\n // }\n\n public loadSlashCommands(options: SlashHandlerOptions) {\n if (!this.client.settings.local) new XernerxLog(this.client).warn(`Slash commands might not work as you haven't specified a local guild ID.`);\n\n options = z\n .object({\n directory: z.string(),\n cooldown: z.number().default(0),\n permissions: z\n .object({\n user: z.array(z.string()).default([]),\n client: z.array(z.string()).default([]),\n dm: z.boolean().default(true),\n })\n .default({}),\n logging: z.boolean().default(false),\n defer: z\n .object({\n reply: z.boolean().default(false),\n ephemeral: z.boolean().default(false),\n fetchReply: z.boolean().default(false),\n })\n .default({}),\n })\n .parse(options);\n\n this.client.modules.options.slash = options;\n\n const files = this.readdir(options.directory);\n\n for (const file of files) {\n const filePath = `${path.resolve(options.directory)}\\\\${file}`;\n\n this.load(filePath, 'SlashCommand');\n }\n\n new XernerxLog(this.client).info(`Loaded ${files.length} Slash Commands.`);\n\n this.emit({\n name: 'interactionCreate',\n fileType: 'SlashCommand',\n run: (interaction: XernerxSlashInteraction) => this.slashCommandRun(interaction),\n });\n }\n public loadContextCommands(options: ContextHandlerOptions) {\n if (!this.client.settings.local) new XernerxLog(this.client).warn(`Context commands might not work as you haven't specified a local guild ID.`);\n\n options = z\n .object({\n directory: z.string(),\n cooldown: z.number().default(0),\n permissions: z\n .object({\n user: z.array(z.string()).default([]),\n client: z.array(z.string()).default([]),\n dm: z.boolean().default(true),\n })\n .default({}),\n logging: z.boolean().default(false),\n defer: z\n .object({\n reply: z.boolean().default(false),\n ephemeral: z.boolean().default(false),\n fetchReply: z.boolean().default(false),\n })\n .default({}),\n })\n .parse(options);\n\n this.client.modules.options.context = options;\n\n const files = this.readdir(options.directory);\n\n for (const file of files) {\n const filePath = `${path.resolve(options.directory)}\\\\${file}`;\n\n this.load(filePath, 'ContextCommand');\n }\n\n new XernerxLog(this.client).info(`Loaded ${files.length} Context Commands.`);\n\n this.emit({\n name: 'interactionCreate',\n fileType: 'ContextCommand',\n run: (interaction: XernerxMessageContextInteraction | XernerxUserContextInteraction) => this.contextCommandRun(interaction),\n });\n }\n\n private async messageCommandRun<T extends XernerxMessage>(message: T, message2?: T | 'delete') {\n const filetype = 'MessageCommand';\n\n if (message.author.bot) return;\n\n message.util = new MessageUtil(this.client, message);\n\n message.user = await xernerxUser(message, this.client);\n\n if (typeof message2 === 'object') message = message2;\n\n if (message2 === 'delete') {\n if (!this.client.cache.messages.has(message.id)) return;\n\n const id = this.client.cache.messages.get(message.id);\n\n if (!id) return;\n\n (async () => {\n const msg = await message.channel.messages.fetch(id);\n\n await msg.delete();\n\n this.client.cache.messages.delete(message.id);\n })();\n\n return;\n }\n\n if (message.content && this.client.modules.options.message) {\n const commands = this.client.commands.message;\n\n const prefixes = Array.isArray(this.client.modules.options.message.prefix) ? this.client.modules.options.message.prefix : [this.client.modules.options.message.prefix];\n\n let commandName: string | null = null,\n cmd,\n commandAlias: string | null = null,\n commandPrefix: string | null = null;\n\n commands.map((command) => {\n let prefix: string | null = null;\n\n if (command.regex && message.content.match(command.regex)) {\n const [match] = message.content.match(command.regex) || [null];\n\n if (match) commandName = command.name;\n }\n\n const cp = Array.isArray(command.prefix) ? command.prefix : [command.prefix as string];\n\n prefixes.map((p) => {\n if (message.content.startsWith(p)) prefix = p;\n });\n\n cp.map((p) => {\n if (message.content.startsWith(p)) prefix = p;\n });\n\n if (!prefix) return;\n\n if (!commandName)\n commandName =\n message.content\n .replace(prefix, '')\n .split(command.separator || / +/)\n .shift()\n ?.trim()\n ?.toLowerCase() || '';\n\n if (!this.client.commands.message.has(commandName) && command.aliases?.includes(commandName)) {\n commandAlias = commandName;\n\n commandName = command.name;\n }\n\n commandAlias = commandAlias ? commandAlias : commandName;\n\n commandPrefix = prefix;\n });\n\n if (!cmd && this.client.modules.options.message.allowMention) {\n if (message.mentions.users.has(this.client.user?.id as string) || message.mentions.repliedUser?.id === this.client.user?.id) {\n commandName = message.content.replace(`<@${this.client.user?.id}>`, '').trim().split(/ +/).shift()?.toLowerCase() || null;\n }\n }\n\n if (this.client.commands.message.has(commandName as string)) cmd = this.client.commands.message.get(commandName as string);\n\n if (await inhibitorValidation(message, cmd)) return;\n\n if (!cmd) return this.client.emit('commandNotFound', message, filetype);\n\n message.util.parsed = {\n alias: commandAlias,\n prefix: commandPrefix,\n };\n\n this.client.emit('commandStart', message, filetype);\n\n this.exec(cmd, message, await messageArguments(message, cmd), filetype);\n }\n }\n\n private async slashCommandRun<T extends Record<string, any>>(interaction: XernerxSlashInteraction) {\n const filetype = 'SlashCommand';\n\n interaction.util = new InteractionUtil(this.client, interaction);\n\n interaction.user = await xernerxUser(interaction, this.client);\n\n let cmd: SlashCommandBuilder | null | undefined = null;\n\n if (this.client.commands.slash.has(interaction.commandName)) cmd = this.client.commands.slash.get(interaction.commandName);\n\n if (await inhibitorValidation(interaction, cmd as SlashCommandBuilder)) return;\n\n if (!cmd) return this.client.emit('commandNotFound', interaction);\n\n new Promise(async (resolve) => {\n if (interaction.isAutocomplete()) {\n const focused = (interaction as T).options.getFocused(true);\n const options = (interaction as T).options;\n\n await (cmd as SlashCommandBuilder).autocomplete(interaction, focused, options);\n } else resolve(true);\n })\n .then(async () => {\n this.client.emit('commandStart', interaction, filetype);\n\n await this.exec(cmd as SlashCommandBuilder, interaction, await interactionArguments(interaction, cmd as SlashCommandBuilder), filetype);\n })\n .catch((error) => this.client.emit('commandError', interaction, error, filetype));\n }\n\n private async contextCommandRun(interaction: XernerxUserContextInteraction | XernerxMessageContextInteraction) {\n const filetype = 'ContextCommand';\n\n interaction.util = new InteractionUtil(this.client, interaction);\n\n interaction.user = await xernerxUser(interaction as XernerxUserContextInteraction, this.client);\n\n let cmd;\n\n if (this.client.commands.context.has(interaction.commandName)) cmd = this.client.commands.context.get(interaction.commandName);\n\n if (await inhibitorValidation(interaction, cmd)) return;\n\n if (!cmd) return this.client.emit('commandNotFound', interaction, filetype);\n\n this.client.emit('commandStart', interaction, filetype);\n\n return this.exec(cmd as unknown as SlashCommandBuilder, interaction, await interactionArguments(interaction, cmd), filetype);\n }\n\n private async exec(\n cmd: MessageCommandBuilder | SlashCommandBuilder | ContextCommandBuilder,\n event: XernerxMessage | XernerxSlashInteraction | XernerxMessageContextInteraction | XernerxUserContextInteraction,\n args: any,\n type: FileType\n ) {\n try {\n if (await commandValidation(event as XernerxMessage, cmd)) return;\n\n if (((cmd as MessageCommandBuilder).conditions as unknown) && (await ((cmd as MessageCommandBuilder).conditions(event as never, args) as unknown))) return;\n\n cmd.exec(event as never, args);\n\n this.client.emit('commandFinish', event, type);\n } catch (error) {\n new XernerxLog(this.client).error(`An error occurred executing ${cmd.name}`, error);\n\n this.client.emit('commandError', event, error, type);\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"CommandHandler.js","sourceRoot":"","sources":["../../src/handlers/CommandHandler.ts"],"names":[],"mappings":"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","sourcesContent":["import { z } from 'zod';\nimport * as path from 'path';\nimport { GatewayIntentBits } from 'discord.js';\n\nimport XernerxClient from '../client/XernerxClient.js';\nimport { ContextHandlerOptions, MessageHandlerOptions, SlashHandlerOptions } from '../types/interfaces.js';\nimport Handler from './Handler.js';\nimport { XernerxMessage, XernerxMessageContextInteraction, XernerxSlashInteraction, XernerxUserContextInteraction } from '../types/extenders.js';\nimport MessageUtil from '../utils/MessageUtil.js';\nimport ContextCommandBuilder from '../build/ContextCommandBuilder.js';\nimport MessageCommandBuilder from '../build/MessageCommandBuilder.js';\nimport SlashCommandBuilder from '../build/SlashCommandBuilder.js';\nimport { FileType } from '../types/types.js';\nimport { xernerxUser } from '../functions/xernerxUser.js';\nimport InteractionUtil from '../utils/InteractionUtil.js';\nimport commandValidation from '../validators/commandValidation.js';\nimport XernerxLog from '../tools/XernerxLog.js';\nimport { interactionArguments, messageArguments } from '../models/Arguments.js';\nimport { inhibitorValidation } from '../validators/inhibitorValidations.js';\n\nexport default class CommandHandler extends Handler {\n constructor(client: XernerxClient) {\n super(client);\n }\n\n public loadMessageCommands(options: MessageHandlerOptions) {\n if (!this.client.options.intents.has(GatewayIntentBits.MessageContent)) new XernerxLog(this.client).warn(`Message commands might not work as you're missing the intent MessageContent!`);\n if (!this.client.options.intents.has(GatewayIntentBits.GuildMessages)) new XernerxLog(this.client).warn(`Message commands might not work as you're missing the intent GuildMessages!`);\n\n options = z\n .object({\n directory: z.string(),\n prefix: z.string().or(z.array(z.string())),\n allowMention: z.boolean().default(false),\n cooldown: z.number().default(0),\n permissions: z\n .object({\n user: z.array(z.string()).default([]),\n client: z.array(z.string()).default([]),\n dm: z.boolean().default(true),\n })\n .default({}),\n handleEdits: z.boolean().default(false),\n handleDeletes: z.boolean().default(false),\n handleTyping: z.boolean().default(false),\n logging: z.boolean().default(false),\n })\n .parse(options);\n\n this.client.modules.options.message = options;\n\n const files = this.readdir(options.directory);\n\n for (const file of files) {\n const filePath = `${path.resolve(options.directory)}\\\\${file}`;\n\n this.load(filePath, 'MessageCommand');\n }\n\n new XernerxLog(this.client).info(`Loaded ${files.length} Message Commands.`);\n\n this.emit({\n name: 'messageCreate',\n fileType: 'MessageCommand',\n run: (message: XernerxMessage) => this.messageCommandRun(message),\n });\n\n this.emit({\n name: 'messageUpdate',\n fileType: 'MessageCommand',\n run: (message: XernerxMessage, message2: XernerxMessage) => this.messageCommandRun(message, message2),\n });\n\n this.emit({\n name: 'messageDelete',\n fileType: 'MessageCommand',\n run: (message: XernerxMessage) => this.messageCommandRun(message, 'delete'),\n });\n }\n\n // public reloadMessageCommands() {\n // return reload(this.client, 'message');\n // }\n\n public loadSlashCommands(options: SlashHandlerOptions) {\n if (!this.client.settings.local) new XernerxLog(this.client).warn(`Slash commands might not work as you haven't specified a local guild ID.`);\n\n options = z\n .object({\n directory: z.string(),\n cooldown: z.number().default(0),\n permissions: z\n .object({\n user: z.array(z.string()).default([]),\n client: z.array(z.string()).default([]),\n dm: z.boolean().default(true),\n })\n .default({}),\n logging: z.boolean().default(false),\n defer: z\n .object({\n reply: z.boolean().default(false),\n ephemeral: z.boolean().default(false),\n fetchReply: z.boolean().default(false),\n })\n .default({}),\n })\n .parse(options);\n\n this.client.modules.options.slash = options;\n\n const files = this.readdir(options.directory);\n\n for (const file of files) {\n const filePath = `${path.resolve(options.directory)}\\\\${file}`;\n\n this.load(filePath, 'SlashCommand');\n }\n\n new XernerxLog(this.client).info(`Loaded ${files.length} Slash Commands.`);\n\n this.emit({\n name: 'interactionCreate',\n fileType: 'SlashCommand',\n run: (interaction: XernerxSlashInteraction) => this.slashCommandRun(interaction),\n });\n }\n public loadContextCommands(options: ContextHandlerOptions) {\n if (!this.client.settings.local) new XernerxLog(this.client).warn(`Context commands might not work as you haven't specified a local guild ID.`);\n\n options = z\n .object({\n directory: z.string(),\n cooldown: z.number().default(0),\n permissions: z\n .object({\n user: z.array(z.string()).default([]),\n client: z.array(z.string()).default([]),\n dm: z.boolean().default(true),\n })\n .default({}),\n logging: z.boolean().default(false),\n defer: z\n .object({\n reply: z.boolean().default(false),\n ephemeral: z.boolean().default(false),\n fetchReply: z.boolean().default(false),\n })\n .default({}),\n })\n .parse(options);\n\n this.client.modules.options.context = options;\n\n const files = this.readdir(options.directory);\n\n for (const file of files) {\n const filePath = `${path.resolve(options.directory)}\\\\${file}`;\n\n this.load(filePath, 'ContextCommand');\n }\n\n new XernerxLog(this.client).info(`Loaded ${files.length} Context Commands.`);\n\n this.emit({\n name: 'interactionCreate',\n fileType: 'ContextCommand',\n run: (interaction: XernerxMessageContextInteraction | XernerxUserContextInteraction) => this.contextCommandRun(interaction),\n });\n }\n\n private async messageCommandRun<T extends XernerxMessage>(message: T, message2?: T | 'delete') {\n const filetype = 'MessageCommand';\n\n if (message.author.bot) return;\n\n message.util = new MessageUtil(this.client, message);\n\n message.user = await xernerxUser(message, this.client);\n\n if (typeof message2 === 'object') message = message2;\n\n if (message2 === 'delete') {\n if (!this.client.cache.messages.has(message.id)) return;\n\n const id = this.client.cache.messages.get(message.id);\n\n if (!id) return;\n\n (async () => {\n const msg = await message.channel.messages.fetch(id);\n\n await msg.delete();\n\n this.client.cache.messages.delete(message.id);\n })();\n\n return;\n }\n\n if (message.content && this.client.modules.options.message) {\n const commands = this.client.commands.message;\n\n const prefixes = Array.isArray(this.client.modules.options.message.prefix) ? this.client.modules.options.message.prefix : [this.client.modules.options.message.prefix];\n\n let commandName: string | null = null,\n cmd,\n commandAlias: string | null = null,\n commandPrefix: string | null = null;\n\n commands.map((command) => {\n let prefix: string | null = null;\n\n if (command.regex && message.content.match(command.regex)) {\n const [match] = message.content.match(command.regex) || [null];\n\n if (match) commandName = command.name;\n }\n\n const cp = Array.isArray(command.prefix) ? command.prefix : [command.prefix as string];\n\n prefixes.map((p) => {\n if (message.content.startsWith(p)) prefix = p;\n });\n\n cp.map((p) => {\n if (message.content.startsWith(p)) prefix = p;\n });\n\n if (!prefix) return;\n\n if (!commandName)\n commandName =\n message.content\n .replace(prefix, '')\n .split(command.separator || / +/)\n .shift()\n ?.trim()\n ?.toLowerCase() || '';\n\n if (!this.client.commands.message.has(commandName) && command.aliases?.includes(commandName)) {\n commandAlias = commandName;\n\n commandName = command.name;\n }\n\n commandAlias = commandAlias ? commandAlias : commandName;\n\n commandPrefix = prefix;\n });\n\n if (!cmd && this.client.modules.options.message.allowMention) {\n if (message.mentions.users.has(this.client.user?.id as string) || message.mentions.repliedUser?.id === this.client.user?.id) {\n commandName = message.content.replace(`<@${this.client.user?.id}>`, '').trim().split(/ +/).shift()?.toLowerCase() || null;\n }\n }\n\n if (this.client.commands.message.has(commandName as string)) cmd = this.client.commands.message.get(commandName as string);\n\n if (await inhibitorValidation(message, cmd)) return;\n\n if (!cmd) return this.client.emit('commandNotFound', message, filetype);\n\n message.util.parsed = {\n alias: commandAlias,\n prefix: commandPrefix,\n };\n\n this.client.emit('commandStart', message, filetype);\n\n return await this.exec(cmd, message, await messageArguments(message, cmd), filetype);\n }\n }\n\n private async slashCommandRun<T extends Record<string, any>>(interaction: XernerxSlashInteraction) {\n const filetype = 'SlashCommand';\n\n interaction.util = new InteractionUtil(this.client, interaction);\n\n interaction.user = await xernerxUser(interaction, this.client);\n\n let cmd: SlashCommandBuilder | null | undefined = null;\n\n if (this.client.commands.slash.has(interaction.commandName)) cmd = this.client.commands.slash.get(interaction.commandName);\n\n if (await inhibitorValidation(interaction, cmd as SlashCommandBuilder)) return;\n\n if (!cmd) return this.client.emit('commandNotFound', interaction);\n\n new Promise(async (resolve) => {\n if (interaction.isAutocomplete()) {\n const focused = (interaction as T).options.getFocused(true);\n const options = (interaction as T).options;\n\n await (cmd as SlashCommandBuilder).autocomplete(interaction, focused, options);\n } else resolve(true);\n })\n .then(async () => {\n this.client.emit('commandStart', interaction, filetype);\n\n return await this.exec(cmd as SlashCommandBuilder, interaction, await interactionArguments(interaction, cmd as SlashCommandBuilder), filetype);\n })\n .catch((error) => this.client.emit('commandError', interaction, error, filetype));\n }\n\n private async contextCommandRun(interaction: XernerxUserContextInteraction | XernerxMessageContextInteraction) {\n const filetype = 'ContextCommand';\n\n interaction.util = new InteractionUtil(this.client, interaction);\n\n interaction.user = await xernerxUser(interaction as XernerxUserContextInteraction, this.client);\n\n let cmd;\n\n if (this.client.commands.context.has(interaction.commandName)) cmd = this.client.commands.context.get(interaction.commandName);\n\n if (await inhibitorValidation(interaction, cmd)) return;\n\n if (!cmd) return this.client.emit('commandNotFound', interaction, filetype);\n\n this.client.emit('commandStart', interaction, filetype);\n\n return await this.exec(cmd as unknown as SlashCommandBuilder, interaction, await interactionArguments(interaction, cmd), filetype);\n }\n\n private async exec(\n cmd: MessageCommandBuilder | SlashCommandBuilder | ContextCommandBuilder,\n event: XernerxMessage | XernerxSlashInteraction | XernerxMessageContextInteraction | XernerxUserContextInteraction,\n args: any,\n type: FileType\n ) {\n try {\n if (await commandValidation(event as XernerxMessage, cmd)) return;\n\n if (((cmd as MessageCommandBuilder).conditions as unknown) && (await ((cmd as MessageCommandBuilder).conditions(event as never, args) as unknown))) return;\n\n cmd.exec(event as never, args);\n\n return await this.client.emit('commandFinish', event, type);\n } catch (error) {\n new XernerxLog(this.client).error(`An error occurred executing ${cmd.name}`, error);\n\n return await this.client.emit('commandError', event, error, type);\n }\n }\n}\n"]}
|
|
@@ -9,8 +9,8 @@ export default class EventHandler extends Handler {
|
|
|
9
9
|
async loadEvents(options) {
|
|
10
10
|
options = z
|
|
11
11
|
.object({
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
directory: z.string(),
|
|
13
|
+
})
|
|
14
14
|
.parse(options);
|
|
15
15
|
this.client.modules.options.events = options;
|
|
16
16
|
const files = this.readdir(options.directory);
|
|
@@ -22,4 +22,4 @@ export default class EventHandler extends Handler {
|
|
|
22
22
|
new XernerxLog(this.client).info(`Loaded ${this.client.events.size} Events.`);
|
|
23
23
|
}
|
|
24
24
|
}
|
|
25
|
-
//# sourceMappingURL=EventHandler.js.map
|
|
25
|
+
//# sourceMappingURL=EventHandler.js.map
|
|
@@ -7,16 +7,18 @@ export default class ExtensionHandler extends Handler {
|
|
|
7
7
|
loadExtensions(...extensions) {
|
|
8
8
|
const active = extensions.map((extension) => {
|
|
9
9
|
try {
|
|
10
|
-
if (extension.main)
|
|
10
|
+
if (extension.main)
|
|
11
|
+
extension.main(this.client);
|
|
11
12
|
if (extension.defer) {
|
|
12
13
|
this.client.on('ready', (client) => extension.defer(client));
|
|
13
14
|
}
|
|
14
15
|
return extension.name;
|
|
15
|
-
}
|
|
16
|
+
}
|
|
17
|
+
catch (error) {
|
|
16
18
|
return new XernerxLog(this.client).error(`An error occurred while loading ${extension.name}`, error);
|
|
17
19
|
}
|
|
18
20
|
});
|
|
19
21
|
new XernerxLog(this.client).info(`Loaded ${extensions.length} Extensions: ${active.filter((e) => e).join(', ')}`);
|
|
20
22
|
}
|
|
21
23
|
}
|
|
22
|
-
//# sourceMappingURL=ExtensionHandler.js.map
|
|
24
|
+
//# sourceMappingURL=ExtensionHandler.js.map
|
|
@@ -12,4 +12,4 @@ export default class Handler {
|
|
|
12
12
|
load(filePath: string, type: FileType): Promise<any>;
|
|
13
13
|
emit<T extends Record<string, string | boolean | Function | void>>(event: T): Promise<void>;
|
|
14
14
|
}
|
|
15
|
-
//# sourceMappingURL=Handler.d.ts.map
|
|
15
|
+
//# sourceMappingURL=Handler.d.ts.map
|
package/dist/handlers/Handler.js
CHANGED
|
@@ -13,7 +13,8 @@ export default class Handler {
|
|
|
13
13
|
readdir(dir) {
|
|
14
14
|
try {
|
|
15
15
|
return fs.readdirSync(path.resolve(dir)).filter((file) => file.endsWith('.js'));
|
|
16
|
-
}
|
|
16
|
+
}
|
|
17
|
+
catch (error) {
|
|
17
18
|
console.error(error);
|
|
18
19
|
}
|
|
19
20
|
return [];
|
|
@@ -24,14 +25,23 @@ export default class Handler {
|
|
|
24
25
|
return file;
|
|
25
26
|
}
|
|
26
27
|
async emit(event) {
|
|
27
|
-
if (!event?.fileType)
|
|
28
|
+
if (!event?.fileType)
|
|
29
|
+
return;
|
|
28
30
|
if (event.fileType === 'Event') {
|
|
29
|
-
if (event.emitter === 'client')
|
|
30
|
-
|
|
31
|
+
if (event.emitter === 'client')
|
|
32
|
+
event.once
|
|
33
|
+
? this.client.once(event.name, (...args) => event.run(...args))
|
|
34
|
+
: this.client.on(event.name, (...args) => event.run(...args));
|
|
35
|
+
else if (event.emitter === 'process')
|
|
36
|
+
event.once
|
|
37
|
+
? process.once(event.name, (...args) => event.run(...args))
|
|
38
|
+
: process.on(event.name, (...args) => event.run(...args));
|
|
31
39
|
}
|
|
32
40
|
if (['MessageCommand', 'SlashCommand', 'ContextCommand'].includes(event.fileType)) {
|
|
33
|
-
event.once
|
|
41
|
+
event.once
|
|
42
|
+
? this.client.once(event.name, (...args) => event.run(...args))
|
|
43
|
+
: this.client.on(event.name, (...args) => event.run(...args));
|
|
34
44
|
}
|
|
35
45
|
}
|
|
36
46
|
}
|
|
37
|
-
//# sourceMappingURL=Handler.js.map
|
|
47
|
+
//# sourceMappingURL=Handler.js.map
|
|
@@ -9,8 +9,8 @@ export default class InhibitorHandler extends Handler {
|
|
|
9
9
|
async loadInhibitors(options) {
|
|
10
10
|
options = z
|
|
11
11
|
.object({
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
directory: z.string(),
|
|
13
|
+
})
|
|
14
14
|
.parse(options);
|
|
15
15
|
this.client.modules.options.inhibitors = options;
|
|
16
16
|
const files = this.readdir(options.directory);
|
|
@@ -22,4 +22,4 @@ export default class InhibitorHandler extends Handler {
|
|
|
22
22
|
new XernerxLog(this.client).info(`Loaded ${this.client.inhibitors.size} Inhibitors.`);
|
|
23
23
|
}
|
|
24
24
|
}
|
|
25
|
-
//# sourceMappingURL=InhibitorHandler.js.map
|
|
25
|
+
//# sourceMappingURL=InhibitorHandler.js.map
|
|
@@ -2,7 +2,9 @@ import XernerxClient from '../client/XernerxClient.js';
|
|
|
2
2
|
import Handler from './Handler.js';
|
|
3
3
|
export default class WebhookHandler extends Handler {
|
|
4
4
|
constructor(client: XernerxClient);
|
|
5
|
-
loadWebhooks(options: {
|
|
5
|
+
loadWebhooks(options: {
|
|
6
|
+
token: string;
|
|
7
|
+
}): Promise<void>;
|
|
6
8
|
private post;
|
|
7
9
|
}
|
|
8
|
-
//# sourceMappingURL=WebhookHandler.d.ts.map
|
|
10
|
+
//# sourceMappingURL=WebhookHandler.d.ts.map
|
|
@@ -11,13 +11,9 @@ export default class WebhookHandler extends Handler {
|
|
|
11
11
|
this.post(client.token);
|
|
12
12
|
}, 60000 * 30);
|
|
13
13
|
this.client.util.hasVoted = async (userId) => {
|
|
14
|
-
return !!(
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
headers: { Authorization: options.token, 'Content-Type': 'application/json' },
|
|
18
|
-
})
|
|
19
|
-
).json()
|
|
20
|
-
).voted;
|
|
14
|
+
return !!(await (await fetch(`https://top.gg/api/bots/${this.client.user?.id}/check?userId=${userId}`, {
|
|
15
|
+
headers: { Authorization: options.token, 'Content-Type': 'application/json' },
|
|
16
|
+
})).json()).voted;
|
|
21
17
|
};
|
|
22
18
|
});
|
|
23
19
|
}
|
|
@@ -42,10 +38,11 @@ export default class WebhookHandler extends Handler {
|
|
|
42
38
|
shard_count: this.client.stats.shardCount,
|
|
43
39
|
}),
|
|
44
40
|
});
|
|
45
|
-
}
|
|
41
|
+
}
|
|
42
|
+
catch (error) {
|
|
46
43
|
new XernerxLog(this.client).error(`An error occurred while posting stats to Top.gg`, error);
|
|
47
44
|
return this.client.emit('webhookError', this.client, this.client.stats);
|
|
48
45
|
}
|
|
49
46
|
}
|
|
50
47
|
}
|
|
51
|
-
//# sourceMappingURL=WebhookHandler.js.map
|
|
48
|
+
//# sourceMappingURL=WebhookHandler.js.map
|