xernerx 4.5.6 → 4.5.8

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 (129) hide show
  1. package/dist/build/XernerxContextCommand.d.ts +46 -46
  2. package/dist/build/XernerxContextCommand.d.ts.map +1 -1
  3. package/dist/build/XernerxContextCommand.js +63 -63
  4. package/dist/build/XernerxContextCommand.js.map +1 -1
  5. package/dist/build/XernerxEvent.d.ts +16 -15
  6. package/dist/build/XernerxEvent.d.ts.map +1 -1
  7. package/dist/build/XernerxEvent.js +20 -20
  8. package/dist/build/XernerxEvent.js.map +1 -1
  9. package/dist/build/XernerxInhibitor.d.ts +19 -19
  10. package/dist/build/XernerxInhibitor.d.ts.map +1 -1
  11. package/dist/build/XernerxInhibitor.js +12 -12
  12. package/dist/build/XernerxInhibitor.js.map +1 -1
  13. package/dist/build/XernerxMessageCommand.d.ts +44 -44
  14. package/dist/build/XernerxMessageCommand.d.ts.map +1 -1
  15. package/dist/build/XernerxMessageCommand.js +57 -57
  16. package/dist/build/XernerxMessageCommand.js.map +1 -1
  17. package/dist/build/XernerxSlashCommand.d.ts +56 -56
  18. package/dist/build/XernerxSlashCommand.d.ts.map +1 -1
  19. package/dist/build/XernerxSlashCommand.js +109 -109
  20. package/dist/build/XernerxSlashCommand.js.map +1 -1
  21. package/dist/client/XernerxClient.d.ts +45 -44
  22. package/dist/client/XernerxClient.d.ts.map +1 -1
  23. package/dist/client/XernerxClient.js +74 -73
  24. package/dist/client/XernerxClient.js.map +1 -1
  25. package/dist/client/XernerxShardClient.d.ts +11 -10
  26. package/dist/client/XernerxShardClient.d.ts.map +1 -1
  27. package/dist/client/XernerxShardClient.js +49 -48
  28. package/dist/client/XernerxShardClient.js.map +1 -1
  29. package/dist/functions/deploy.d.ts +1 -0
  30. package/dist/functions/deploy.d.ts.map +1 -1
  31. package/dist/functions/deploy.js +31 -30
  32. package/dist/functions/deploy.js.map +1 -1
  33. package/dist/functions/load.d.ts +1 -0
  34. package/dist/functions/load.d.ts.map +1 -1
  35. package/dist/functions/load.js +28 -27
  36. package/dist/functions/load.js.map +1 -1
  37. package/dist/functions/reload.d.ts +1 -0
  38. package/dist/functions/reload.d.ts.map +1 -1
  39. package/dist/functions/reload.js +35 -34
  40. package/dist/functions/reload.js.map +1 -1
  41. package/dist/functions/sendWebhook.d.ts +1 -0
  42. package/dist/functions/sendWebhook.d.ts.map +1 -1
  43. package/dist/functions/sendWebhook.js +11 -10
  44. package/dist/functions/sendWebhook.js.map +1 -1
  45. package/dist/functions/setPresence.d.ts +1 -0
  46. package/dist/functions/setPresence.d.ts.map +1 -1
  47. package/dist/functions/setPresence.js +18 -17
  48. package/dist/functions/setPresence.js.map +1 -1
  49. package/dist/functions/xernerxUser.d.ts +1 -0
  50. package/dist/functions/xernerxUser.d.ts.map +1 -1
  51. package/dist/functions/xernerxUser.js +6 -8
  52. package/dist/functions/xernerxUser.js.map +1 -1
  53. package/dist/handlers/CommandHandler.d.ts +9 -8
  54. package/dist/handlers/CommandHandler.d.ts.map +1 -1
  55. package/dist/handlers/CommandHandler.js +240 -239
  56. package/dist/handlers/CommandHandler.js.map +1 -1
  57. package/dist/handlers/EventHandler.d.ts +3 -2
  58. package/dist/handlers/EventHandler.d.ts.map +1 -1
  59. package/dist/handlers/EventHandler.js +19 -18
  60. package/dist/handlers/EventHandler.js.map +1 -1
  61. package/dist/handlers/ExtensionHandler.d.ts +3 -2
  62. package/dist/handlers/ExtensionHandler.d.ts.map +1 -1
  63. package/dist/handlers/ExtensionHandler.js +18 -17
  64. package/dist/handlers/ExtensionHandler.js.map +1 -1
  65. package/dist/handlers/Handler.d.ts +8 -7
  66. package/dist/handlers/Handler.d.ts.map +1 -1
  67. package/dist/handlers/Handler.js +32 -31
  68. package/dist/handlers/Handler.js.map +1 -1
  69. package/dist/handlers/InhibitorHandler.d.ts +3 -2
  70. package/dist/handlers/InhibitorHandler.d.ts.map +1 -1
  71. package/dist/handlers/InhibitorHandler.js +19 -18
  72. package/dist/handlers/InhibitorHandler.js.map +1 -1
  73. package/dist/handlers/WebhookHandler.d.ts +4 -3
  74. package/dist/handlers/WebhookHandler.d.ts.map +1 -1
  75. package/dist/handlers/WebhookHandler.js +47 -46
  76. package/dist/handlers/WebhookHandler.js.map +1 -1
  77. package/dist/main.d.ts +27 -26
  78. package/dist/main.d.ts.map +1 -1
  79. package/dist/main.js +27 -26
  80. package/dist/main.js.map +1 -1
  81. package/dist/models/Arguments.d.ts +3 -2
  82. package/dist/models/Arguments.d.ts.map +1 -1
  83. package/dist/models/Arguments.js +135 -134
  84. package/dist/models/Arguments.js.map +1 -1
  85. package/dist/tools/XernerxError.d.ts +5 -4
  86. package/dist/tools/XernerxError.d.ts.map +1 -1
  87. package/dist/tools/XernerxError.js +9 -8
  88. package/dist/tools/XernerxError.js.map +1 -1
  89. package/dist/tools/XernerxLog.d.ts +13 -12
  90. package/dist/tools/XernerxLog.d.ts.map +1 -1
  91. package/dist/tools/XernerxLog.js +76 -80
  92. package/dist/tools/XernerxLog.js.map +1 -1
  93. package/dist/types/extenders.d.ts +43 -12
  94. package/dist/types/extenders.d.ts.map +1 -1
  95. package/dist/types/extenders.js +1 -0
  96. package/dist/types/extenders.js.map +1 -1
  97. package/dist/types/interfaces.d.ts +186 -172
  98. package/dist/types/interfaces.d.ts.map +1 -1
  99. package/dist/types/interfaces.js +1 -0
  100. package/dist/types/interfaces.js.map +1 -1
  101. package/dist/types/types.d.ts +172 -171
  102. package/dist/types/types.d.ts.map +1 -1
  103. package/dist/types/types.js +1 -0
  104. package/dist/types/types.js.map +1 -1
  105. package/dist/utils/ClientUtil.d.ts +13 -6
  106. package/dist/utils/ClientUtil.d.ts.map +1 -1
  107. package/dist/utils/ClientUtil.js +56 -26
  108. package/dist/utils/ClientUtil.js.map +1 -1
  109. package/dist/utils/InteractionUtil.d.ts +10 -5
  110. package/dist/utils/InteractionUtil.d.ts.map +1 -1
  111. package/dist/utils/InteractionUtil.js +97 -8
  112. package/dist/utils/InteractionUtil.js.map +1 -1
  113. package/dist/utils/MessageUtil.d.ts +13 -9
  114. package/dist/utils/MessageUtil.d.ts.map +1 -1
  115. package/dist/utils/MessageUtil.js +130 -37
  116. package/dist/utils/MessageUtil.js.map +1 -1
  117. package/dist/utils/Util.d.ts +4 -3
  118. package/dist/utils/Util.d.ts.map +1 -1
  119. package/dist/utils/Util.js +8 -7
  120. package/dist/utils/Util.js.map +1 -1
  121. package/dist/validators/commandValidation.d.ts +3 -2
  122. package/dist/validators/commandValidation.d.ts.map +1 -1
  123. package/dist/validators/commandValidation.js +43 -42
  124. package/dist/validators/commandValidation.js.map +1 -1
  125. package/dist/validators/inhibitorValidations.d.ts +15 -14
  126. package/dist/validators/inhibitorValidations.d.ts.map +1 -1
  127. package/dist/validators/inhibitorValidations.js +31 -30
  128. package/dist/validators/inhibitorValidations.js.map +1 -1
  129. package/package.json +1 -1
@@ -1,12 +1,101 @@
1
+ /** @format */
2
+ import { ActionRowBuilder, ButtonBuilder, ButtonStyle, StringSelectMenuBuilder } from 'discord.js';
1
3
  import Util from './Util.js';
4
+ import XernerxError from '../tools/XernerxError.js';
2
5
  export default class InteractionUtil extends Util {
3
- interaction;
4
- constructor(client, interaction) {
5
- super(client);
6
- this.interaction = interaction;
7
- }
8
- async reply(content) {
9
- return await (this.interaction.replied || this.interaction.deferred ? this.interaction.editReply(content) : this.interaction.reply(content));
10
- }
6
+ interaction;
7
+ constructor(client, interaction) {
8
+ super(client);
9
+ this.interaction = interaction;
10
+ }
11
+ async send(content) {
12
+ if (!content) throw new XernerxError(`Can't send a message without content.`);
13
+ return await this.interaction.channel?.send(content);
14
+ }
15
+ async reply(content) {
16
+ if (!content) throw new XernerxError(`Can't send a message without content.`);
17
+ return await (this.interaction.replied || this.interaction.deferred ? this.interaction.editReply(content) : this.interaction.reply(content));
18
+ }
19
+ commandName() {}
20
+ async paginator(embeds, options = {}) {
21
+ let buttonRow, menuRow;
22
+ if (embeds.length <= 0) throw new XernerxError(`Can't make a paginator without embeds`);
23
+ options = {
24
+ type: options.type ?? 'combined',
25
+ buttons: options.buttons ?? ['⏪', '◀️', '⏹️', '▶️', '⏩'],
26
+ description: options.description ?? false,
27
+ placeholder: options.placeholder ?? 'Change page',
28
+ index: options.index ?? 0,
29
+ send: options.send ?? false,
30
+ filter: options.filter ?? (() => true),
31
+ time: options.time ?? 300000,
32
+ };
33
+ if (options.type == 'button' || options.type == 'combined') {
34
+ if (!options.buttons) throw new XernerxError(`¯\\_(ツ)_/¯ Somehow there are no buttons? ¯\\_(ツ)_/¯`);
35
+ buttonRow = new ActionRowBuilder().addComponents(
36
+ ...options.buttons.map((button, i) => new ButtonBuilder().setCustomId(`${this.interaction.id}-${i}`).setEmoji(button).setStyle(ButtonStyle.Primary))
37
+ );
38
+ }
39
+ if (options.type == 'select-menu' || options.type == 'combined') {
40
+ menuRow = new ActionRowBuilder().addComponents(
41
+ new StringSelectMenuBuilder()
42
+ .setCustomId(`${this.interaction.id}-select-menu`)
43
+ .setPlaceholder(options.placeholder)
44
+ .addOptions(...embeds.map((embed, i) => ({ label: embed.data.title || 'No Title', description: (options.description ? embed.data.description : undefined) || undefined, value: `${i}` })))
45
+ );
46
+ }
47
+ let index = options.index || 0;
48
+ return options.send
49
+ ? await this.interaction.util.send({
50
+ embeds: [embeds[index]],
51
+ components: [options.type == 'combined' || options.type == 'button' ? buttonRow : null, options.type == 'combined' || options.type == 'select-menu' ? menuRow : null].filter((x) => x),
52
+ })
53
+ : await this.interaction.util
54
+ .reply({
55
+ embeds: [embeds[index]],
56
+ components: [options.type == 'combined' || options.type == 'button' ? buttonRow : null, options.type == 'combined' || options.type == 'select-menu' ? menuRow : null].filter((x) => x),
57
+ })
58
+ .then(async (msg) => {
59
+ const collector = this.interaction.channel
60
+ ?.createMessageComponentCollector({ time: options.time })
61
+ .on('collect', (collect) => {
62
+ if (!collect.customId.startsWith(this.interaction.id)) return;
63
+ if (collect.customId.endsWith('select-menu')) {
64
+ index = Number(collect.values[0]);
65
+ collect.update({ embeds: [embeds[index]] });
66
+ } else {
67
+ const option = Number(collect.customId.split(/-/)[1]);
68
+ let embed = embeds[index];
69
+ if (option == 0) {
70
+ index = 0;
71
+ embed = embeds[index];
72
+ collect.update({ embeds: [embed] });
73
+ }
74
+ if (option == 1) {
75
+ index = embeds.indexOf(embed) >= 1 ? embeds.indexOf(embed) - 1 : 0;
76
+ embed = embeds[index];
77
+ collect.update({ embeds: [embed] });
78
+ }
79
+ if (option == 2) {
80
+ collect.update({ components: [] });
81
+ collector?.stop();
82
+ }
83
+ if (option == 3) {
84
+ index = embeds.indexOf(embed) < embeds.length - 1 ? embeds.indexOf(embed) + 1 : embeds.length - 1;
85
+ embed = embeds[index];
86
+ collect.update({ embeds: [embed] });
87
+ }
88
+ if (option == 4) {
89
+ index = embeds.length - 1;
90
+ embed = embeds[index];
91
+ collect.update({ embeds: [embed] });
92
+ }
93
+ }
94
+ })
95
+ .on('end', async () => {
96
+ this.interaction.editReply({ components: [] });
97
+ });
98
+ });
99
+ }
11
100
  }
12
101
  //# sourceMappingURL=InteractionUtil.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"InteractionUtil.js","sourceRoot":"","sources":["../../src/utils/InteractionUtil.ts"],"names":[],"mappings":"AAIA,OAAO,IAAI,MAAM,WAAW,CAAC;AAG7B,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,IAAI;IACrC,WAAW,CAAC;IAEpB,YAAY,MAAqB,EAAE,WAA2H;QAC1J,KAAK,CAAC,MAAM,CAAC,CAAC;QAEd,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACnC,CAAC;IAEM,KAAK,CAAC,KAAK,CAAC,OAAwF;QACvG,OAAO,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,OAAkC,CAAC,CAAC,CAAC;IAC5K,CAAC;CACJ","sourcesContent":["import { InteractionEditReplyOptions, InteractionReplyOptions, MessagePayload } from 'discord.js';\n\nimport XernerxClient from '../client/XernerxClient.js';\nimport { XernerxInteraction } from '../types/types.js';\nimport Util from './Util.js';\nimport { XernerxMessageContextInteraction, XernerxSlashInteraction, XernerxUserContextInteraction } from '../main.js';\n\nexport default class InteractionUtil extends Util {\n private interaction;\n\n constructor(client: XernerxClient, interaction: XernerxInteraction<XernerxSlashInteraction | XernerxUserContextInteraction | XernerxMessageContextInteraction>) {\n super(client);\n\n this.interaction = interaction;\n }\n\n public async reply(content: string | MessagePayload | InteractionReplyOptions | InteractionEditReplyOptions) {\n return await (this.interaction.replied || this.interaction.deferred ? this.interaction.editReply(content) : this.interaction.reply(content as InteractionReplyOptions));\n }\n}\n"]}
1
+ {"version":3,"file":"InteractionUtil.js","sourceRoot":"","sources":["../../src/utils/InteractionUtil.ts"],"names":[],"mappings":"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","sourcesContent":["/** @format */\n\nimport { ActionRowBuilder, ButtonBuilder, ButtonStyle, EmbedBuilder, InteractionEditReplyOptions, InteractionReplyOptions, MessagePayload, StringSelectMenuBuilder } from 'discord.js';\n\nimport XernerxClient from '../client/XernerxClient.js';\nimport { PaginatorOptions } from '../types/interfaces.js';\nimport { XernerxInteraction } from '../types/types.js';\nimport Util from './Util.js';\nimport XernerxError from '../tools/XernerxError.js';\nimport { XernerxMessageContextInteraction, XernerxSlashInteraction, XernerxUserContextInteraction } from '../types/extenders.js';\n\nexport default class InteractionUtil extends Util {\n\tprivate interaction;\n\n\tconstructor(client: XernerxClient, interaction: XernerxInteraction<XernerxSlashInteraction | XernerxUserContextInteraction | XernerxMessageContextInteraction>) {\n\t\tsuper(client);\n\n\t\tthis.interaction = interaction;\n\t}\n\n\tpublic async send(content: any) {\n\t\tif (!content) throw new XernerxError(`Can't send a message without content.`);\n\n\t\treturn await this.interaction.channel?.send(content);\n\t}\n\n\tpublic async reply(content: string | MessagePayload | InteractionReplyOptions | InteractionEditReplyOptions) {\n\t\tif (!content) throw new XernerxError(`Can't send a message without content.`);\n\n\t\treturn await (this.interaction.replied || this.interaction.deferred ? this.interaction.editReply(content) : this.interaction.reply(content as InteractionReplyOptions));\n\t}\n\n\tpublic commandName() {}\n\n\tpublic async paginator(embeds: Array<EmbedBuilder>, options: PaginatorOptions = {}) {\n\t\tlet buttonRow, menuRow;\n\n\t\tif (embeds.length <= 0) throw new XernerxError(`Can't make a paginator without embeds`);\n\n\t\toptions = {\n\t\t\ttype: options.type ?? 'combined',\n\t\t\tbuttons: options.buttons ?? ['⏪', '◀️', '⏹️', '▶️', '⏩'],\n\t\t\tdescription: options.description ?? false,\n\t\t\tplaceholder: options.placeholder ?? 'Change page',\n\t\t\tindex: options.index ?? 0,\n\t\t\tsend: options.send ?? false,\n\t\t\tfilter: options.filter ?? (() => true),\n\t\t\ttime: options.time ?? 300000,\n\t\t};\n\n\t\tif (options.type == 'button' || options.type == 'combined') {\n\t\t\tif (!options.buttons) throw new XernerxError(`¯\\\\_(ツ)_/¯ Somehow there are no buttons? ¯\\\\_(ツ)_/¯`);\n\n\t\t\tbuttonRow = new ActionRowBuilder().addComponents(\n\t\t\t\t...options.buttons.map((button, i) => new ButtonBuilder().setCustomId(`${this.interaction.id}-${i}`).setEmoji(button).setStyle(ButtonStyle.Primary))\n\t\t\t);\n\t\t}\n\n\t\tif (options.type == 'select-menu' || options.type == 'combined') {\n\t\t\tmenuRow = new ActionRowBuilder().addComponents(\n\t\t\t\tnew StringSelectMenuBuilder()\n\t\t\t\t\t.setCustomId(`${this.interaction.id}-select-menu`)\n\t\t\t\t\t.setPlaceholder(options.placeholder as string)\n\t\t\t\t\t.addOptions(...embeds.map((embed, i) => ({ label: embed.data.title || 'No Title', description: (options.description ? embed.data.description : undefined) || undefined, value: `${i}` })))\n\t\t\t);\n\t\t}\n\n\t\tlet index = options.index || 0;\n\n\t\treturn options.send\n\t\t\t? await this.interaction.util.send({\n\t\t\t\t\tembeds: [embeds[index]],\n\t\t\t\t\tcomponents: [options.type == 'combined' || options.type == 'button' ? buttonRow : null, options.type == 'combined' || options.type == 'select-menu' ? menuRow : null].filter((x) => x),\n\t\t\t } as never)\n\t\t\t: await this.interaction.util\n\t\t\t\t\t.reply({\n\t\t\t\t\t\tembeds: [embeds[index]],\n\t\t\t\t\t\tcomponents: [options.type == 'combined' || options.type == 'button' ? buttonRow : null, options.type == 'combined' || options.type == 'select-menu' ? menuRow : null].filter((x) => x),\n\t\t\t\t\t} as never)\n\t\t\t\t\t.then(async (msg) => {\n\t\t\t\t\t\tconst collector = this.interaction.channel\n\t\t\t\t\t\t\t?.createMessageComponentCollector({ time: options.time })\n\n\t\t\t\t\t\t\t.on('collect', (collect) => {\n\t\t\t\t\t\t\t\tif (!collect.customId.startsWith(this.interaction.id)) return;\n\n\t\t\t\t\t\t\t\tif (collect.customId.endsWith('select-menu')) {\n\t\t\t\t\t\t\t\t\tindex = Number((collect as unknown as Record<string, Array<string>>).values[0]);\n\n\t\t\t\t\t\t\t\t\tcollect.update({ embeds: [embeds[index]] });\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tconst option = Number(collect.customId.split(/-/)[1]);\n\n\t\t\t\t\t\t\t\t\tlet embed = embeds[index];\n\n\t\t\t\t\t\t\t\t\tif (option == 0) {\n\t\t\t\t\t\t\t\t\t\tindex = 0;\n\t\t\t\t\t\t\t\t\t\tembed = embeds[index];\n\t\t\t\t\t\t\t\t\t\tcollect.update({ embeds: [embed] });\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tif (option == 1) {\n\t\t\t\t\t\t\t\t\t\tindex = embeds.indexOf(embed) >= 1 ? embeds.indexOf(embed) - 1 : 0;\n\t\t\t\t\t\t\t\t\t\tembed = embeds[index];\n\t\t\t\t\t\t\t\t\t\tcollect.update({ embeds: [embed] });\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tif (option == 2) {\n\t\t\t\t\t\t\t\t\t\tcollect.update({ components: [] });\n\t\t\t\t\t\t\t\t\t\tcollector?.stop();\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tif (option == 3) {\n\t\t\t\t\t\t\t\t\t\tindex = embeds.indexOf(embed) < embeds.length - 1 ? embeds.indexOf(embed) + 1 : embeds.length - 1;\n\t\t\t\t\t\t\t\t\t\tembed = embeds[index];\n\t\t\t\t\t\t\t\t\t\tcollect.update({ embeds: [embed] });\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tif (option == 4) {\n\t\t\t\t\t\t\t\t\t\tindex = embeds.length - 1;\n\t\t\t\t\t\t\t\t\t\tembed = embeds[index];\n\t\t\t\t\t\t\t\t\t\tcollect.update({ embeds: [embed] });\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t.on('end', async () => {\n\t\t\t\t\t\t\t\tthis.interaction.editReply({ components: [] });\n\t\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t}\n}\n"]}
@@ -1,15 +1,19 @@
1
- import { MessageEditOptions, MessagePayload, MessageReplyOptions, User } from 'discord.js';
1
+ /** @format */
2
+ import { EmbedBuilder, MessageEditOptions, MessagePayload, MessageReplyOptions, User } from 'discord.js';
2
3
  import XernerxClient from '../client/XernerxClient.js';
3
4
  import { XernerxMessage } from '../types/extenders.js';
4
5
  import Util from './Util.js';
6
+ import { PaginatorOptions } from '../main.js';
5
7
  export default class MessageUtil extends Util {
6
- private readonly message;
7
- parsed: {
8
- alias: null | string;
9
- prefix: null | string;
10
- };
11
- constructor(client: XernerxClient, message: XernerxMessage);
12
- reply(content: string | MessagePayload | MessageReplyOptions | MessageEditOptions): Promise<import('discord.js').Message<boolean> | null>;
13
- webhookReply(content: MessagePayload, url?: URL, user?: User): Promise<void>;
8
+ private readonly message;
9
+ parsed: {
10
+ alias: null | string;
11
+ prefix: null | string;
12
+ };
13
+ constructor(client: XernerxClient, message: XernerxMessage);
14
+ send(content: any): Promise<import('discord.js').Message<false> | import('discord.js').Message<true> | null>;
15
+ reply(content: string | MessagePayload | MessageReplyOptions | MessageEditOptions): Promise<import('discord.js').Message<boolean> | null>;
16
+ webhookReply(content: MessagePayload, url?: URL, user?: User): Promise<void>;
17
+ paginator(embeds: Array<EmbedBuilder>, options?: PaginatorOptions): Promise<void | import('discord.js').Message<false> | import('discord.js').Message<true> | null>;
14
18
  }
15
19
  //# sourceMappingURL=MessageUtil.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MessageUtil.d.ts","sourceRoot":"","sources":["../../src/utils/MessageUtil.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6B,kBAAkB,EAAE,cAAc,EAAE,mBAAmB,EAA4B,IAAI,EAAE,MAAM,YAAY,CAAC;AAEhJ,OAAO,aAAa,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,IAAI,MAAM,WAAW,CAAC;AAI7B,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,IAAI;IACzC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;IAEV,MAAM,EAAE;QACnB,KAAK,EAAE,IAAI,GAAG,MAAM,CAAC;QACrB,MAAM,EAAE,IAAI,GAAG,MAAM,CAAC;KACzB,CAAC;gBAEU,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,cAAc;IAW7C,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,GAAG,mBAAmB,GAAG,kBAAkB;IAoBjF,YAAY,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI;CAsB5E"}
1
+ {"version":3,"file":"MessageUtil.d.ts","sourceRoot":"","sources":["../../src/utils/MessageUtil.ts"],"names":[],"mappings":"AAAA,cAAc;AAEd,OAAO,EAKN,YAAY,EAEZ,kBAAkB,EAClB,cAAc,EACd,mBAAmB,EAInB,IAAI,EACJ,MAAM,YAAY,CAAC;AAEpB,OAAO,aAAa,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,IAAI,MAAM,WAAW,CAAC;AAG7B,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE9C,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,IAAI;IAC5C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;IAEV,MAAM,EAAE;QACtB,KAAK,EAAE,IAAI,GAAG,MAAM,CAAC;QACrB,MAAM,EAAE,IAAI,GAAG,MAAM,CAAC;KACtB,CAAC;gBAEU,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,cAAc;IAW7C,IAAI,CAAC,OAAO,EAAE,GAAG;IAoBjB,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,GAAG,mBAAmB,GAAG,kBAAkB;IAoBjF,YAAY,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI;IAuB5D,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,YAAY,CAAC,EAAE,OAAO,GAAE,gBAAqB;CA4FlF"}
@@ -1,43 +1,136 @@
1
- import { ChannelType } from 'discord.js';
1
+ /** @format */
2
+ import { ActionRowBuilder, ButtonBuilder, ButtonStyle, ChannelType, StringSelectMenuBuilder } from 'discord.js';
2
3
  import Util from './Util.js';
3
4
  import sendWebhook from '../functions/sendWebhook.js';
4
5
  import XernerxError from '../tools/XernerxError.js';
5
6
  export default class MessageUtil extends Util {
6
- message;
7
- constructor(client, message) {
8
- super(client);
9
- this.message = message;
10
- this.parsed = {
11
- alias: null,
12
- prefix: null,
13
- };
14
- }
15
- async reply(content) {
16
- if (this.client.cache.messages.has(this.message.id)) {
17
- const id = this.client.cache.messages.get(this.message.id);
18
- if (!id) return null;
19
- const msg = await this.message.channel.messages.fetch(id);
20
- msg.edit(content);
21
- return msg;
22
- }
23
- const msg = await this.message.reply(content);
24
- this.client.cache.messages.set(this.message.id, msg.id);
25
- return msg;
26
- }
27
- async webhookReply(content, url, user) {
28
- if (this.message.channel.type === ChannelType.DM) throw new XernerxError(`Can't use this method in DM Channels`);
29
- const channel = this.message.channel;
30
- let webhook;
31
- if (!url) {
32
- webhook = await channel.createWebhook({
33
- name: user?.username || this.client.user?.username,
34
- avatar: user?.avatarURL() || this.client.user?.avatarURL(),
35
- });
36
- }
37
- if (!webhook) webhook = { url };
38
- await sendWebhook(webhook.url, content);
39
- if (!url) webhook.delete();
40
- return;
41
- }
7
+ message;
8
+ constructor(client, message) {
9
+ super(client);
10
+ this.message = message;
11
+ this.parsed = {
12
+ alias: null,
13
+ prefix: null,
14
+ };
15
+ }
16
+ async send(content) {
17
+ if (this.client.cache.messages.has(this.message.id) && this.client.modules.options.message?.handleEdits) {
18
+ const id = this.client.cache.messages.get(this.message.id);
19
+ if (!id) return null;
20
+ const msg = await this.message.channel.messages.fetch(id);
21
+ msg.edit(content);
22
+ return msg;
23
+ }
24
+ const msg = await this.message.channel.send(content);
25
+ this.client.cache.messages.set(this.message.id, msg.id);
26
+ return msg;
27
+ }
28
+ async reply(content) {
29
+ if (this.client.cache.messages.has(this.message.id) && this.client.modules.options.message?.handleEdits) {
30
+ const id = this.client.cache.messages.get(this.message.id);
31
+ if (!id) return null;
32
+ const msg = await this.message.channel.messages.fetch(id);
33
+ msg.edit(content);
34
+ return msg;
35
+ }
36
+ const msg = await this.message.reply(content);
37
+ this.client.cache.messages.set(this.message.id, msg.id);
38
+ return msg;
39
+ }
40
+ async webhookReply(content, url, user) {
41
+ if (this.message.channel.type === ChannelType.DM) throw new XernerxError(`Can't use this method in DM Channels`);
42
+ const channel = this.message.channel;
43
+ let webhook;
44
+ if (!url) {
45
+ webhook = await channel.createWebhook({
46
+ name: user?.username || this.client.user?.username,
47
+ avatar: user?.avatarURL() || this.client.user?.avatarURL(),
48
+ });
49
+ }
50
+ if (!webhook) webhook = { url };
51
+ await sendWebhook(webhook.url, content);
52
+ if (!url) webhook.delete();
53
+ return;
54
+ }
55
+ async paginator(embeds, options = {}) {
56
+ let buttonRow, menuRow;
57
+ if (embeds.length <= 0) throw new XernerxError(`Can't make a paginator without embeds`);
58
+ options = {
59
+ type: options.type ?? 'combined',
60
+ buttons: options.buttons ?? ['⏪', '◀️', '⏹️', '▶️', '⏩'],
61
+ description: options.description ?? false,
62
+ placeholder: options.placeholder ?? 'Change page',
63
+ index: options.index ?? 0,
64
+ send: options.send ?? false,
65
+ filter: options.filter ?? (() => true),
66
+ time: options.time ?? 300000,
67
+ };
68
+ if (options.type == 'button' || options.type == 'combined') {
69
+ if (!options.buttons) throw new XernerxError(`¯\\_(ツ)_/¯ Somehow there are no buttons? ¯\\_(ツ)_/¯`);
70
+ buttonRow = new ActionRowBuilder().addComponents(
71
+ ...options.buttons.map((button, i) => new ButtonBuilder().setCustomId(`${this.message.id}-${i}`).setEmoji(button).setStyle(ButtonStyle.Primary))
72
+ );
73
+ }
74
+ if (options.type == 'select-menu' || options.type == 'combined') {
75
+ menuRow = new ActionRowBuilder().addComponents(
76
+ new StringSelectMenuBuilder()
77
+ .setCustomId(`${this.message.id}-select-menu`)
78
+ .setPlaceholder(options.placeholder)
79
+ .addOptions(...embeds.map((embed, i) => ({ label: embed.data.title || 'No Title', description: (options.description ? embed.data.description : undefined) || undefined, value: `${i}` })))
80
+ );
81
+ }
82
+ let index = options.index || 0;
83
+ return options.send
84
+ ? await this.message.util.send({
85
+ embeds: [embeds[index]],
86
+ components: [options.type == 'combined' || options.type == 'button' ? buttonRow : null, options.type == 'combined' || options.type == 'select-menu' ? menuRow : null].filter((x) => x),
87
+ })
88
+ : await this.message.util
89
+ .reply({
90
+ embeds: [embeds[index]],
91
+ components: [options.type == 'combined' || options.type == 'button' ? buttonRow : null, options.type == 'combined' || options.type == 'select-menu' ? menuRow : null].filter((x) => x),
92
+ })
93
+ .then(async (msg) => {
94
+ const collector = this.message.channel
95
+ ?.createMessageComponentCollector({ time: options.time })
96
+ .on('collect', (collect) => {
97
+ if (!collect.customId.startsWith(this.message.id)) return;
98
+ if (collect.customId.endsWith('select-menu')) {
99
+ index = Number(collect.values[0]);
100
+ collect.update({ embeds: [embeds[index]] });
101
+ } else {
102
+ const option = Number(collect.customId.split(/-/)[1]);
103
+ let embed = embeds[index];
104
+ if (option == 0) {
105
+ index = 0;
106
+ embed = embeds[index];
107
+ collect.update({ embeds: [embed] });
108
+ }
109
+ if (option == 1) {
110
+ index = embeds.indexOf(embed) >= 1 ? embeds.indexOf(embed) - 1 : 0;
111
+ embed = embeds[index];
112
+ collect.update({ embeds: [embed] });
113
+ }
114
+ if (option == 2) {
115
+ collect.update({ components: [] });
116
+ collector?.stop();
117
+ }
118
+ if (option == 3) {
119
+ index = embeds.indexOf(embed) < embeds.length - 1 ? embeds.indexOf(embed) + 1 : embeds.length - 1;
120
+ embed = embeds[index];
121
+ collect.update({ embeds: [embed] });
122
+ }
123
+ if (option == 4) {
124
+ index = embeds.length - 1;
125
+ embed = embeds[index];
126
+ collect.update({ embeds: [embed] });
127
+ }
128
+ }
129
+ })
130
+ .on('end', async () => {
131
+ await msg?.edit({ components: [] });
132
+ });
133
+ });
134
+ }
42
135
  }
43
136
  //# sourceMappingURL=MessageUtil.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MessageUtil.js","sourceRoot":"","sources":["../../src/utils/MessageUtil.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAyG,MAAM,YAAY,CAAC;AAIhJ,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,WAAW,MAAM,6BAA6B,CAAC;AACtD,OAAO,YAAY,MAAM,0BAA0B,CAAC;AAEpD,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,IAAI;IACxB,OAAO,CAAC;IAOzB,YAAY,MAAqB,EAAE,OAAuB;QACtD,KAAK,CAAC,MAAM,CAAC,CAAC;QAEd,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QAEvB,IAAI,CAAC,MAAM,GAAG;YACV,KAAK,EAAE,IAAI;YACX,MAAM,EAAE,IAAI;SACf,CAAC;IACN,CAAC;IAEM,KAAK,CAAC,KAAK,CAAC,OAA2E;QAC1F,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;YACjD,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAE3D,IAAI,CAAC,EAAE;gBAAE,OAAO,IAAI,CAAC;YAErB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAE1D,GAAG,CAAC,IAAI,CAAC,OAA6B,CAAC,CAAC;YAExC,OAAO,GAAG,CAAC;SACd;QAED,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAA8B,CAAC,CAAC;QAErE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;QAExD,OAAO,GAAG,CAAC;IACf,CAAC;IAEM,KAAK,CAAC,YAAY,CAAC,OAAuB,EAAE,GAAS,EAAE,IAAW;QACrE,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,KAAK,WAAW,CAAC,EAAE;YAAE,MAAM,IAAI,YAAY,CAAC,sCAAsC,CAAC,CAAC;QAEjH,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAmD,CAAC;QAEjF,IAAI,OAAO,CAAC;QAEZ,IAAI,CAAC,GAAG,EAAE;YACN,OAAO,GAAG,MAAM,OAAO,CAAC,aAAa,CAAC;gBAClC,IAAI,EAAE,IAAI,EAAE,QAAQ,IAAK,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,QAAmB;gBAC9D,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE;aAC7D,CAAC,CAAC;SACN;QAED,IAAI,CAAC,OAAO;YAAE,OAAO,GAAG,EAAE,GAAG,EAAE,CAAC;QAEhC,MAAM,WAAW,CAAC,OAAO,CAAC,GAAU,EAAE,OAAO,CAAC,CAAC;QAE/C,IAAI,CAAC,GAAG;YAAG,OAAsC,CAAC,MAAM,EAAE,CAAC;QAE3D,OAAO;IACX,CAAC;CACJ","sourcesContent":["import { ChannelType, ForumChannel, MessageEditOptions, MessagePayload, MessageReplyOptions, NewsChannel, TextChannel, User } from 'discord.js';\n\nimport XernerxClient from '../client/XernerxClient.js';\nimport { XernerxMessage } from '../types/extenders.js';\nimport Util from './Util.js';\nimport sendWebhook from '../functions/sendWebhook.js';\nimport XernerxError from '../tools/XernerxError.js';\n\nexport default class MessageUtil extends Util {\n private readonly message;\n\n public declare parsed: {\n alias: null | string;\n prefix: null | string;\n };\n\n constructor(client: XernerxClient, message: XernerxMessage) {\n super(client);\n\n this.message = message;\n\n this.parsed = {\n alias: null,\n prefix: null,\n };\n }\n\n public async reply(content: string | MessagePayload | MessageReplyOptions | MessageEditOptions) {\n if (this.client.cache.messages.has(this.message.id)) {\n const id = this.client.cache.messages.get(this.message.id);\n\n if (!id) return null;\n\n const msg = await this.message.channel.messages.fetch(id);\n\n msg.edit(content as MessageEditOptions);\n\n return msg;\n }\n\n const msg = await this.message.reply(content as MessageReplyOptions);\n\n this.client.cache.messages.set(this.message.id, msg.id);\n\n return msg;\n }\n\n public async webhookReply(content: MessagePayload, url?: URL, user?: User) {\n if (this.message.channel.type === ChannelType.DM) throw new XernerxError(`Can't use this method in DM Channels`);\n\n const channel = this.message.channel as TextChannel | NewsChannel | ForumChannel;\n\n let webhook;\n\n if (!url) {\n webhook = await channel.createWebhook({\n name: user?.username || (this.client.user?.username as string),\n avatar: user?.avatarURL() || this.client.user?.avatarURL(),\n });\n }\n\n if (!webhook) webhook = { url };\n\n await sendWebhook(webhook.url as URL, content);\n\n if (!url) (webhook as Record<'delete', Function>).delete();\n\n return;\n }\n}\n"]}
1
+ {"version":3,"file":"MessageUtil.js","sourceRoot":"","sources":["../../src/utils/MessageUtil.ts"],"names":[],"mappings":"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","sourcesContent":["/** @format */\n\nimport {\n\tActionRowBuilder,\n\tButtonBuilder,\n\tButtonStyle,\n\tChannelType,\n\tEmbedBuilder,\n\tForumChannel,\n\tMessageEditOptions,\n\tMessagePayload,\n\tMessageReplyOptions,\n\tNewsChannel,\n\tStringSelectMenuBuilder,\n\tTextChannel,\n\tUser,\n} from 'discord.js';\n\nimport XernerxClient from '../client/XernerxClient.js';\nimport { XernerxMessage } from '../types/extenders.js';\nimport Util from './Util.js';\nimport sendWebhook from '../functions/sendWebhook.js';\nimport XernerxError from '../tools/XernerxError.js';\nimport { PaginatorOptions } from '../main.js';\n\nexport default class MessageUtil extends Util {\n\tprivate readonly message;\n\n\tpublic declare parsed: {\n\t\talias: null | string;\n\t\tprefix: null | string;\n\t};\n\n\tconstructor(client: XernerxClient, message: XernerxMessage) {\n\t\tsuper(client);\n\n\t\tthis.message = message;\n\n\t\tthis.parsed = {\n\t\t\talias: null,\n\t\t\tprefix: null,\n\t\t};\n\t}\n\n\tpublic async send(content: any) {\n\t\tif (this.client.cache.messages.has(this.message.id) && this.client.modules.options.message?.handleEdits) {\n\t\t\tconst id = this.client.cache.messages.get(this.message.id);\n\n\t\t\tif (!id) return null;\n\n\t\t\tconst msg = await this.message.channel.messages.fetch(id);\n\n\t\t\tmsg.edit(content as MessageEditOptions);\n\n\t\t\treturn msg;\n\t\t}\n\n\t\tconst msg = await this.message.channel.send(content as MessageReplyOptions);\n\n\t\tthis.client.cache.messages.set(this.message.id, msg.id);\n\n\t\treturn msg;\n\t}\n\n\tpublic async reply(content: string | MessagePayload | MessageReplyOptions | MessageEditOptions) {\n\t\tif (this.client.cache.messages.has(this.message.id) && this.client.modules.options.message?.handleEdits) {\n\t\t\tconst id = this.client.cache.messages.get(this.message.id);\n\n\t\t\tif (!id) return null;\n\n\t\t\tconst msg = await this.message.channel.messages.fetch(id);\n\n\t\t\tmsg.edit(content as MessageEditOptions);\n\n\t\t\treturn msg;\n\t\t}\n\n\t\tconst msg = await this.message.reply(content as MessageReplyOptions);\n\n\t\tthis.client.cache.messages.set(this.message.id, msg.id);\n\n\t\treturn msg;\n\t}\n\n\tpublic async webhookReply(content: MessagePayload, url?: URL, user?: User) {\n\t\tif (this.message.channel.type === ChannelType.DM) throw new XernerxError(`Can't use this method in DM Channels`);\n\n\t\tconst channel = this.message.channel as TextChannel | NewsChannel | ForumChannel;\n\n\t\tlet webhook;\n\n\t\tif (!url) {\n\t\t\twebhook = await channel.createWebhook({\n\t\t\t\tname: user?.username || (this.client.user?.username as string),\n\t\t\t\tavatar: user?.avatarURL() || this.client.user?.avatarURL(),\n\t\t\t});\n\t\t}\n\n\t\tif (!webhook) webhook = { url };\n\n\t\tawait sendWebhook(webhook.url as URL, content);\n\n\t\tif (!url) (webhook as Record<'delete', Function>).delete();\n\n\t\treturn;\n\t}\n\n\tpublic async paginator(embeds: Array<EmbedBuilder>, options: PaginatorOptions = {}) {\n\t\tlet buttonRow, menuRow;\n\n\t\tif (embeds.length <= 0) throw new XernerxError(`Can't make a paginator without embeds`);\n\n\t\toptions = {\n\t\t\ttype: options.type ?? 'combined',\n\t\t\tbuttons: options.buttons ?? ['⏪', '◀️', '⏹️', '▶️', '⏩'],\n\t\t\tdescription: options.description ?? false,\n\t\t\tplaceholder: options.placeholder ?? 'Change page',\n\t\t\tindex: options.index ?? 0,\n\t\t\tsend: options.send ?? false,\n\t\t\tfilter: options.filter ?? (() => true),\n\t\t\ttime: options.time ?? 300000,\n\t\t};\n\n\t\tif (options.type == 'button' || options.type == 'combined') {\n\t\t\tif (!options.buttons) throw new XernerxError(`¯\\\\_(ツ)_/¯ Somehow there are no buttons? ¯\\\\_(ツ)_/¯`);\n\n\t\t\tbuttonRow = new ActionRowBuilder().addComponents(\n\t\t\t\t...options.buttons.map((button, i) => new ButtonBuilder().setCustomId(`${this.message.id}-${i}`).setEmoji(button).setStyle(ButtonStyle.Primary))\n\t\t\t);\n\t\t}\n\n\t\tif (options.type == 'select-menu' || options.type == 'combined') {\n\t\t\tmenuRow = new ActionRowBuilder().addComponents(\n\t\t\t\tnew StringSelectMenuBuilder()\n\t\t\t\t\t.setCustomId(`${this.message.id}-select-menu`)\n\t\t\t\t\t.setPlaceholder(options.placeholder as string)\n\t\t\t\t\t.addOptions(...embeds.map((embed, i) => ({ label: embed.data.title || 'No Title', description: (options.description ? embed.data.description : undefined) || undefined, value: `${i}` })))\n\t\t\t);\n\t\t}\n\n\t\tlet index = options.index || 0;\n\n\t\treturn options.send\n\t\t\t? await this.message.util.send({\n\t\t\t\t\tembeds: [embeds[index]],\n\t\t\t\t\tcomponents: [options.type == 'combined' || options.type == 'button' ? buttonRow : null, options.type == 'combined' || options.type == 'select-menu' ? menuRow : null].filter((x) => x),\n\t\t\t } as never)\n\t\t\t: await this.message.util\n\t\t\t\t\t.reply({\n\t\t\t\t\t\tembeds: [embeds[index]],\n\t\t\t\t\t\tcomponents: [options.type == 'combined' || options.type == 'button' ? buttonRow : null, options.type == 'combined' || options.type == 'select-menu' ? menuRow : null].filter((x) => x),\n\t\t\t\t\t} as never)\n\t\t\t\t\t.then(async (msg) => {\n\t\t\t\t\t\tconst collector = this.message.channel\n\t\t\t\t\t\t\t?.createMessageComponentCollector({ time: options.time })\n\n\t\t\t\t\t\t\t.on('collect', (collect) => {\n\t\t\t\t\t\t\t\tif (!collect.customId.startsWith(this.message.id)) return;\n\n\t\t\t\t\t\t\t\tif (collect.customId.endsWith('select-menu')) {\n\t\t\t\t\t\t\t\t\tindex = Number((collect as unknown as Record<string, Array<string>>).values[0]);\n\n\t\t\t\t\t\t\t\t\tcollect.update({ embeds: [embeds[index]] });\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tconst option = Number(collect.customId.split(/-/)[1]);\n\n\t\t\t\t\t\t\t\t\tlet embed = embeds[index];\n\n\t\t\t\t\t\t\t\t\tif (option == 0) {\n\t\t\t\t\t\t\t\t\t\tindex = 0;\n\t\t\t\t\t\t\t\t\t\tembed = embeds[index];\n\t\t\t\t\t\t\t\t\t\tcollect.update({ embeds: [embed] });\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tif (option == 1) {\n\t\t\t\t\t\t\t\t\t\tindex = embeds.indexOf(embed) >= 1 ? embeds.indexOf(embed) - 1 : 0;\n\t\t\t\t\t\t\t\t\t\tembed = embeds[index];\n\t\t\t\t\t\t\t\t\t\tcollect.update({ embeds: [embed] });\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tif (option == 2) {\n\t\t\t\t\t\t\t\t\t\tcollect.update({ components: [] });\n\t\t\t\t\t\t\t\t\t\tcollector?.stop();\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tif (option == 3) {\n\t\t\t\t\t\t\t\t\t\tindex = embeds.indexOf(embed) < embeds.length - 1 ? embeds.indexOf(embed) + 1 : embeds.length - 1;\n\t\t\t\t\t\t\t\t\t\tembed = embeds[index];\n\t\t\t\t\t\t\t\t\t\tcollect.update({ embeds: [embed] });\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tif (option == 4) {\n\t\t\t\t\t\t\t\t\t\tindex = embeds.length - 1;\n\t\t\t\t\t\t\t\t\t\tembed = embeds[index];\n\t\t\t\t\t\t\t\t\t\tcollect.update({ embeds: [embed] });\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t.on('end', async () => {\n\t\t\t\t\t\t\t\tawait msg?.edit({ components: [] });\n\t\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t}\n}\n"]}
@@ -1,7 +1,8 @@
1
+ /** @format */
1
2
  import XernerxClient from '../client/XernerxClient.js';
2
3
  export default class Util {
3
- client: XernerxClient<unknown>;
4
- constructor(client: XernerxClient);
5
- delay(time: number): Promise<unknown>;
4
+ client: XernerxClient<unknown>;
5
+ constructor(client: XernerxClient);
6
+ delay(time: number): Promise<unknown>;
6
7
  }
7
8
  //# sourceMappingURL=Util.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Util.d.ts","sourceRoot":"","sources":["../../src/utils/Util.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,MAAM,4BAA4B,CAAC;AAEvD,MAAM,CAAC,OAAO,OAAO,IAAI;IACd,MAAM,yBAAC;gBAEF,MAAM,EAAE,aAAa;IAIpB,KAAK,CAAC,IAAI,EAAE,MAAM;CAGlC"}
1
+ {"version":3,"file":"Util.d.ts","sourceRoot":"","sources":["../../src/utils/Util.ts"],"names":[],"mappings":"AAAA,cAAc;AAEd,OAAO,aAAa,MAAM,4BAA4B,CAAC;AAEvD,MAAM,CAAC,OAAO,OAAO,IAAI;IACjB,MAAM,yBAAC;gBAEF,MAAM,EAAE,aAAa;IAIpB,KAAK,CAAC,IAAI,EAAE,MAAM;CAG/B"}
@@ -1,10 +1,11 @@
1
+ /** @format */
1
2
  export default class Util {
2
- client;
3
- constructor(client) {
4
- this.client = client;
5
- }
6
- async delay(time) {
7
- return await new Promise((resolve) => setTimeout(resolve, time));
8
- }
3
+ client;
4
+ constructor(client) {
5
+ this.client = client;
6
+ }
7
+ async delay(time) {
8
+ return await new Promise((resolve) => setTimeout(resolve, time));
9
+ }
9
10
  }
10
11
  //# sourceMappingURL=Util.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Util.js","sourceRoot":"","sources":["../../src/utils/Util.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,OAAO,OAAO,IAAI;IACd,MAAM,CAAC;IAEd,YAAY,MAAqB;QAC7B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACzB,CAAC;IAEM,KAAK,CAAC,KAAK,CAAC,IAAY;QAC3B,OAAO,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;IACrE,CAAC;CACJ","sourcesContent":["import XernerxClient from '../client/XernerxClient.js';\n\nexport default class Util {\n public client;\n\n constructor(client: XernerxClient) {\n this.client = client;\n }\n\n public async delay(time: number) {\n return await new Promise((resolve) => setTimeout(resolve, time));\n }\n}\n"]}
1
+ {"version":3,"file":"Util.js","sourceRoot":"","sources":["../../src/utils/Util.ts"],"names":[],"mappings":"AAAA,cAAc;AAId,MAAM,CAAC,OAAO,OAAO,IAAI;IACjB,MAAM,CAAC;IAEd,YAAY,MAAqB;QAChC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACtB,CAAC;IAEM,KAAK,CAAC,KAAK,CAAC,IAAY;QAC9B,OAAO,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;IAClE,CAAC;CACD","sourcesContent":["/** @format */\n\nimport XernerxClient from '../client/XernerxClient.js';\n\nexport default class Util {\n\tpublic client;\n\n\tconstructor(client: XernerxClient) {\n\t\tthis.client = client;\n\t}\n\n\tpublic async delay(time: number) {\n\t\treturn await new Promise((resolve) => setTimeout(resolve, time));\n\t}\n}\n"]}
@@ -1,10 +1,11 @@
1
+ /** @format */
1
2
  import XernerxContextCommand from '../build/XernerxContextCommand.js';
2
3
  import MessageCommandBuilder from '../build/XernerxMessageCommand.js';
3
4
  import XernerxSlashCommand from '../build/XernerxSlashCommand.js';
4
5
  import { XernerxMessage, XernerxSlashInteraction, XernerxUserContextInteraction } from '../types/extenders.js';
5
6
  import { XernerxInteraction } from '../types/types.js';
6
7
  export default function commandValidation(
7
- event: XernerxInteraction<XernerxSlashInteraction | XernerxUserContextInteraction | XernerxUserContextInteraction> | XernerxMessage,
8
- command: MessageCommandBuilder | XernerxSlashCommand | XernerxContextCommand
8
+ event: XernerxInteraction<XernerxSlashInteraction | XernerxUserContextInteraction | XernerxUserContextInteraction> | XernerxMessage,
9
+ command: MessageCommandBuilder | XernerxSlashCommand | XernerxContextCommand
9
10
  ): Promise<boolean>;
10
11
  //# sourceMappingURL=commandValidation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"commandValidation.d.ts","sourceRoot":"","sources":["../../src/validators/commandValidation.ts"],"names":[],"mappings":"AAEA,OAAO,qBAAqB,MAAM,mCAAmC,CAAC;AACtE,OAAO,qBAAqB,MAAM,mCAAmC,CAAC;AACtE,OAAO,mBAAmB,MAAM,iCAAiC,CAAC;AAElE,OAAO,EAAE,cAAc,EAAE,uBAAuB,EAAE,6BAA6B,EAAE,MAAM,uBAAuB,CAAC;AAC/G,OAAO,EAAmB,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAExE,wBAA8B,iBAAiB,CAC3C,KAAK,EAAE,kBAAkB,CAAC,uBAAuB,GAAG,6BAA6B,GAAG,6BAA6B,CAAC,GAAG,cAAc,EACnI,OAAO,EAAE,qBAAqB,GAAG,mBAAmB,GAAG,qBAAqB,oBA6C/E"}
1
+ {"version":3,"file":"commandValidation.d.ts","sourceRoot":"","sources":["../../src/validators/commandValidation.ts"],"names":[],"mappings":"AAAA,cAAc;AAId,OAAO,qBAAqB,MAAM,mCAAmC,CAAC;AACtE,OAAO,qBAAqB,MAAM,mCAAmC,CAAC;AACtE,OAAO,mBAAmB,MAAM,iCAAiC,CAAC;AAElE,OAAO,EAAE,cAAc,EAAE,uBAAuB,EAAE,6BAA6B,EAAE,MAAM,uBAAuB,CAAC;AAC/G,OAAO,EAAmB,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAExE,wBAA8B,iBAAiB,CAC9C,KAAK,EAAE,kBAAkB,CAAC,uBAAuB,GAAG,6BAA6B,GAAG,6BAA6B,CAAC,GAAG,cAAc,EACnI,OAAO,EAAE,qBAAqB,GAAG,mBAAmB,GAAG,qBAAqB,oBA6C5E"}
@@ -1,50 +1,51 @@
1
+ /** @format */
1
2
  import { ChannelType, PermissionFlagsBits } from 'discord.js';
2
3
  export default async function commandValidation(event, command) {
3
- const client = event.client;
4
- if (command.ignore?.owner && client.settings.ownerId.includes(event.user.id)) return false;
5
- if (!client.cache.cooldowns.has(`${event.user.id}-${command.name}`)) {
6
- client.cache.cooldowns.set(`${event.user.id}-${command.name}`, {
7
- id: event.user.id,
8
- command: command.name,
9
- createdTimestamp: Number(Date.now()) + (command.cooldown || 0),
10
- });
11
- setTimeout(() => {
12
- client.cache.cooldowns.delete(`${event.user.id}-${command.name}`);
13
- }, command.cooldown || 0);
14
- } else {
15
- const user = client.cache.cooldowns.get(`${event.user.id}-${command.name}`);
16
- const time = (user?.createdTimestamp || 0) - Number(Date.now());
17
- return emit(event, `Command on cooldown, ${time}`);
18
- }
19
- if ((command.ignore?.channels?.length || 0) > 0 && command.ignore?.channels?.includes(event.channel?.id)) return true;
20
- if ((command.ignore?.guilds?.length || 0) > 0 && command.ignore?.guilds?.includes(event.guild?.id)) return true;
21
- if ((command.ignore?.users?.length || 0) > 0 && command.ignore?.users?.includes(event.user.id)) return true;
22
- if (command.strict?.owner && !client.settings.ownerId.includes(event.user.id)) return await emit(event, 'Command is a developer command');
23
- if ((command.strict?.channels?.length || 0) > 0 && !command.strict?.channels?.includes(event.channel?.id)) return await emit(event, 'Command cannot be ran in this channel');
24
- if ((command.strict?.guilds?.length || 0) > 0 && !command.strict?.guilds?.includes(event.guild?.id)) return await emit(event, 'Command cannot be ran in this guild');
25
- if ((command.strict?.users?.length || 0) > 0 && !command.strict?.users?.includes(event.user.id)) return await emit(event, 'Command cannot be ran by you');
26
- if (command.permissions?.dm == false && event.channel?.type === ChannelType.DM) return await emit(event, "Can't use in a DM Channel");
27
- if (command.permissions?.user) {
28
- if (!(event.member?.permissions).has(toBigInt(command.permissions.user))) return await emit(event, 'Missing User Permissions');
29
- }
30
- return false;
4
+ const client = event.client;
5
+ if (command.ignore?.owner && client.settings.ownerId.includes(event.user.id)) return false;
6
+ if (!client.cache.cooldowns.has(`${event.user.id}-${command.name}`)) {
7
+ client.cache.cooldowns.set(`${event.user.id}-${command.name}`, {
8
+ id: event.user.id,
9
+ command: command.name,
10
+ createdTimestamp: Number(Date.now()) + (command.cooldown || 0),
11
+ });
12
+ setTimeout(() => {
13
+ client.cache.cooldowns.delete(`${event.user.id}-${command.name}`);
14
+ }, command.cooldown || 0);
15
+ } else {
16
+ const user = client.cache.cooldowns.get(`${event.user.id}-${command.name}`);
17
+ const time = (user?.createdTimestamp || 0) - Number(Date.now());
18
+ return emit(event, `Command on cooldown, ${time}`);
19
+ }
20
+ if ((command.ignore?.channels?.length || 0) > 0 && command.ignore?.channels?.includes(event.channel?.id)) return true;
21
+ if ((command.ignore?.guilds?.length || 0) > 0 && command.ignore?.guilds?.includes(event.guild?.id)) return true;
22
+ if ((command.ignore?.users?.length || 0) > 0 && command.ignore?.users?.includes(event.user.id)) return true;
23
+ if (command.strict?.owner && !client.settings.ownerId.includes(event.user.id)) return await emit(event, 'Command is a developer command');
24
+ if ((command.strict?.channels?.length || 0) > 0 && !command.strict?.channels?.includes(event.channel?.id)) return await emit(event, 'Command cannot be ran in this channel');
25
+ if ((command.strict?.guilds?.length || 0) > 0 && !command.strict?.guilds?.includes(event.guild?.id)) return await emit(event, 'Command cannot be ran in this guild');
26
+ if ((command.strict?.users?.length || 0) > 0 && !command.strict?.users?.includes(event.user.id)) return await emit(event, 'Command cannot be ran by you');
27
+ if (command.permissions?.dm == false && event.channel?.type === ChannelType.DM) return await emit(event, "Can't use in a DM Channel");
28
+ if (command.permissions?.user) {
29
+ if (!(event.member?.permissions).has(toBigInt(command.permissions.user))) return await emit(event, 'Missing User Permissions');
30
+ }
31
+ return false;
31
32
  }
32
33
  async function emit(event, reason) {
33
- event.client.emit('commandBlock', event, reason);
34
- return true;
34
+ event.client.emit('commandBlock', event, reason);
35
+ return true;
35
36
  }
36
37
  function toBigInt(permissions) {
37
- let bigIntPermissions = 0n;
38
- permissions.map((permission) => {
39
- permission =
40
- PermissionFlagsBits[
41
- permission
42
- .split(/ +/)
43
- .map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())
44
- .join('')
45
- ];
46
- if (typeof permission === 'bigint') bigIntPermissions += permission;
47
- });
48
- return bigIntPermissions;
38
+ let bigIntPermissions = 0n;
39
+ permissions.map((permission) => {
40
+ permission =
41
+ PermissionFlagsBits[
42
+ permission
43
+ .split(/ +/)
44
+ .map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())
45
+ .join('')
46
+ ];
47
+ if (typeof permission === 'bigint') bigIntPermissions += permission;
48
+ });
49
+ return bigIntPermissions;
49
50
  }
50
51
  //# sourceMappingURL=commandValidation.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"commandValidation.js","sourceRoot":"","sources":["../../src/validators/commandValidation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAqB,MAAM,YAAY,CAAC;AASjF,MAAM,CAAC,OAAO,CAAC,KAAK,UAAU,iBAAiB,CAC3C,KAAmI,EACnI,OAA4E;IAE5E,MAAM,MAAM,GAAG,KAAK,CAAC,MAAuB,CAAC;IAE7C,IAAI,OAAO,CAAC,MAAM,EAAE,KAAK,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QAAE,OAAO,KAAK,CAAC;IAE3F,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,EAAE;QACjE,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,OAAO,CAAC,IAAI,EAAE,EAAE;YAC3D,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE;YACjB,OAAO,EAAE,OAAO,CAAC,IAAI;YACrB,gBAAgB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,IAAI,CAAC,CAAC;SACjE,CAAC,CAAC;QAEH,UAAU,CAAC,GAAG,EAAE;YACZ,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QACtE,CAAC,EAAE,OAAO,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC;KAC7B;SAAM;QACH,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QAE5E,MAAM,IAAI,GAAG,CAAC,IAAI,EAAE,gBAAgB,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QAEhE,OAAO,IAAI,CAAC,KAAK,EAAE,wBAAwB,IAAI,EAAE,CAAC,CAAC;KACtD;IAED,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,EAAY,CAAC;QAAE,OAAO,IAAI,CAAC;IAEhI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,EAAY,CAAC;QAAE,OAAO,IAAI,CAAC;IAE1H,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAY,CAAC;QAAE,OAAO,IAAI,CAAC;IAEtH,IAAI,OAAO,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QAAE,OAAO,MAAM,IAAI,CAAC,KAAK,EAAE,gCAAgC,CAAC,CAAC;IAE1I,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,EAAY,CAAC;QAAE,OAAO,MAAM,IAAI,CAAC,KAAK,EAAE,uCAAuC,CAAC,CAAC;IAEvL,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,EAAY,CAAC;QAAE,OAAO,MAAM,IAAI,CAAC,KAAK,EAAE,qCAAqC,CAAC,CAAC;IAE/K,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QAAE,OAAO,MAAM,IAAI,CAAC,KAAK,EAAE,8BAA8B,CAAC,CAAC;IAE1J,IAAI,OAAO,CAAC,WAAW,EAAE,EAAE,IAAI,KAAK,IAAI,KAAK,CAAC,OAAO,EAAE,IAAI,KAAK,WAAW,CAAC,EAAE;QAAE,OAAO,MAAM,IAAI,CAAC,KAAK,EAAE,2BAA2B,CAAC,CAAC;IAEtI,IAAI,OAAO,CAAC,WAAW,EAAE,IAAI,EAAE;QAC3B,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,WAAuC,CAAA,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAAE,OAAO,MAAM,IAAI,CAAC,KAAK,EAAE,0BAA0B,CAAC,CAAC;KAC7J;IAED,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,KAAK,UAAU,IAAI,CAAC,KAAmI,EAAE,MAAc;IACnK,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IACjD,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,SAAS,QAAQ,CAAC,WAAmD;IACjE,IAAI,iBAAiB,GAAG,EAAE,CAAC;IAE3B,WAAW,CAAC,GAAG,CAAC,CAAC,UAA2B,EAAE,EAAE;QAC5C,UAAU;YACN,mBAAmB,CACd,UAAqB;iBACjB,KAAK,CAAC,IAAI,CAAC;iBACX,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;iBACzE,IAAI,CAAC,EAAE,CAAsB,CACrC,CAAC;QAEN,IAAI,OAAO,UAAU,KAAK,QAAQ;YAAE,iBAAiB,IAAI,UAAU,CAAC;IACxE,CAAC,CAAC,CAAC;IAEH,OAAO,iBAAiB,CAAC;AAC7B,CAAC","sourcesContent":["import { ChannelType, PermissionFlagsBits, PermissionsString } from 'discord.js';\n\nimport XernerxContextCommand from '../build/XernerxContextCommand.js';\nimport MessageCommandBuilder from '../build/XernerxMessageCommand.js';\nimport XernerxSlashCommand from '../build/XernerxSlashCommand.js';\nimport XernerxClient from '../client/XernerxClient.js';\nimport { XernerxMessage, XernerxSlashInteraction, XernerxUserContextInteraction } from '../types/extenders.js';\nimport { PermissionNames, XernerxInteraction } from '../types/types.js';\n\nexport default async function commandValidation(\n event: XernerxInteraction<XernerxSlashInteraction | XernerxUserContextInteraction | XernerxUserContextInteraction> | XernerxMessage,\n command: MessageCommandBuilder | XernerxSlashCommand | XernerxContextCommand\n) {\n const client = event.client as XernerxClient;\n\n if (command.ignore?.owner && client.settings.ownerId.includes(event.user.id)) return false;\n\n if (!client.cache.cooldowns.has(`${event.user.id}-${command.name}`)) {\n client.cache.cooldowns.set(`${event.user.id}-${command.name}`, {\n id: event.user.id,\n command: command.name,\n createdTimestamp: Number(Date.now()) + (command.cooldown || 0),\n });\n\n setTimeout(() => {\n client.cache.cooldowns.delete(`${event.user.id}-${command.name}`);\n }, command.cooldown || 0);\n } else {\n const user = client.cache.cooldowns.get(`${event.user.id}-${command.name}`);\n\n const time = (user?.createdTimestamp || 0) - Number(Date.now());\n\n return emit(event, `Command on cooldown, ${time}`);\n }\n\n if ((command.ignore?.channels?.length || 0) > 0 && command.ignore?.channels?.includes(event.channel?.id as string)) return true;\n\n if ((command.ignore?.guilds?.length || 0) > 0 && command.ignore?.guilds?.includes(event.guild?.id as string)) return true;\n\n if ((command.ignore?.users?.length || 0) > 0 && command.ignore?.users?.includes(event.user.id as string)) return true;\n\n if (command.strict?.owner && !client.settings.ownerId.includes(event.user.id)) return await emit(event, 'Command is a developer command');\n\n if ((command.strict?.channels?.length || 0) > 0 && !command.strict?.channels?.includes(event.channel?.id as string)) return await emit(event, 'Command cannot be ran in this channel');\n\n if ((command.strict?.guilds?.length || 0) > 0 && !command.strict?.guilds?.includes(event.guild?.id as string)) return await emit(event, 'Command cannot be ran in this guild');\n\n if ((command.strict?.users?.length || 0) > 0 && !command.strict?.users?.includes(event.user.id)) return await emit(event, 'Command cannot be ran by you');\n\n if (command.permissions?.dm == false && event.channel?.type === ChannelType.DM) return await emit(event, \"Can't use in a DM Channel\");\n\n if (command.permissions?.user) {\n if (!(event.member?.permissions as Record<'has', Function>).has(toBigInt(command.permissions.user))) return await emit(event, 'Missing User Permissions');\n }\n\n return false;\n}\n\nasync function emit(event: XernerxInteraction<XernerxSlashInteraction | XernerxUserContextInteraction | XernerxUserContextInteraction> | XernerxMessage, reason: string) {\n event.client.emit('commandBlock', event, reason);\n return true;\n}\n\nfunction toBigInt(permissions: Array<PermissionNames> | Array<string>) {\n let bigIntPermissions = 0n;\n\n permissions.map((permission: string | bigint) => {\n permission =\n PermissionFlagsBits[\n (permission as string)\n .split(/ +/)\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())\n .join('') as PermissionsString\n ];\n\n if (typeof permission === 'bigint') bigIntPermissions += permission;\n });\n\n return bigIntPermissions;\n}\n"]}
1
+ {"version":3,"file":"commandValidation.js","sourceRoot":"","sources":["../../src/validators/commandValidation.ts"],"names":[],"mappings":"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","sourcesContent":["/** @format */\n\nimport { ChannelType, PermissionFlagsBits, PermissionsString } from 'discord.js';\n\nimport XernerxContextCommand from '../build/XernerxContextCommand.js';\nimport MessageCommandBuilder from '../build/XernerxMessageCommand.js';\nimport XernerxSlashCommand from '../build/XernerxSlashCommand.js';\nimport XernerxClient from '../client/XernerxClient.js';\nimport { XernerxMessage, XernerxSlashInteraction, XernerxUserContextInteraction } from '../types/extenders.js';\nimport { PermissionNames, XernerxInteraction } from '../types/types.js';\n\nexport default async function commandValidation(\n\tevent: XernerxInteraction<XernerxSlashInteraction | XernerxUserContextInteraction | XernerxUserContextInteraction> | XernerxMessage,\n\tcommand: MessageCommandBuilder | XernerxSlashCommand | XernerxContextCommand\n) {\n\tconst client = event.client as XernerxClient;\n\n\tif (command.ignore?.owner && client.settings.ownerId.includes(event.user.id)) return false;\n\n\tif (!client.cache.cooldowns.has(`${event.user.id}-${command.name}`)) {\n\t\tclient.cache.cooldowns.set(`${event.user.id}-${command.name}`, {\n\t\t\tid: event.user.id,\n\t\t\tcommand: command.name,\n\t\t\tcreatedTimestamp: Number(Date.now()) + (command.cooldown || 0),\n\t\t});\n\n\t\tsetTimeout(() => {\n\t\t\tclient.cache.cooldowns.delete(`${event.user.id}-${command.name}`);\n\t\t}, command.cooldown || 0);\n\t} else {\n\t\tconst user = client.cache.cooldowns.get(`${event.user.id}-${command.name}`);\n\n\t\tconst time = (user?.createdTimestamp || 0) - Number(Date.now());\n\n\t\treturn emit(event, `Command on cooldown, ${time}`);\n\t}\n\n\tif ((command.ignore?.channels?.length || 0) > 0 && command.ignore?.channels?.includes(event.channel?.id as string)) return true;\n\n\tif ((command.ignore?.guilds?.length || 0) > 0 && command.ignore?.guilds?.includes(event.guild?.id as string)) return true;\n\n\tif ((command.ignore?.users?.length || 0) > 0 && command.ignore?.users?.includes(event.user.id as string)) return true;\n\n\tif (command.strict?.owner && !client.settings.ownerId.includes(event.user.id)) return await emit(event, 'Command is a developer command');\n\n\tif ((command.strict?.channels?.length || 0) > 0 && !command.strict?.channels?.includes(event.channel?.id as string)) return await emit(event, 'Command cannot be ran in this channel');\n\n\tif ((command.strict?.guilds?.length || 0) > 0 && !command.strict?.guilds?.includes(event.guild?.id as string)) return await emit(event, 'Command cannot be ran in this guild');\n\n\tif ((command.strict?.users?.length || 0) > 0 && !command.strict?.users?.includes(event.user.id)) return await emit(event, 'Command cannot be ran by you');\n\n\tif (command.permissions?.dm == false && event.channel?.type === ChannelType.DM) return await emit(event, \"Can't use in a DM Channel\");\n\n\tif (command.permissions?.user) {\n\t\tif (!(event.member?.permissions as Record<'has', Function>).has(toBigInt(command.permissions.user))) return await emit(event, 'Missing User Permissions');\n\t}\n\n\treturn false;\n}\n\nasync function emit(event: XernerxInteraction<XernerxSlashInteraction | XernerxUserContextInteraction | XernerxUserContextInteraction> | XernerxMessage, reason: string) {\n\tevent.client.emit('commandBlock', event, reason);\n\treturn true;\n}\n\nfunction toBigInt(permissions: Array<PermissionNames> | Array<string>) {\n\tlet bigIntPermissions = 0n;\n\n\tpermissions.map((permission: string | bigint) => {\n\t\tpermission =\n\t\t\tPermissionFlagsBits[\n\t\t\t\t(permission as string)\n\t\t\t\t\t.split(/ +/)\n\t\t\t\t\t.map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())\n\t\t\t\t\t.join('') as PermissionsString\n\t\t\t];\n\n\t\tif (typeof permission === 'bigint') bigIntPermissions += permission;\n\t});\n\n\treturn bigIntPermissions;\n}\n"]}