xernerx 0.1.120-beta.2 → 0.1.120-beta.21

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 (68) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +52 -0
  3. package/dist/main.cjs +1269 -266
  4. package/dist/main.cjs.map +1 -1
  5. package/dist/main.d.cts +651 -116
  6. package/dist/main.d.ts +651 -116
  7. package/dist/main.js +1257 -247
  8. package/dist/main.js.map +1 -1
  9. package/package.json +31 -18
  10. package/src/build/XernerxBaseBuilder.ts +21 -0
  11. package/src/build/XernerxEventBuilder.ts +39 -0
  12. package/src/build/XernerxMessageCommandBuilder.ts +60 -0
  13. package/src/build/XernerxSlashCommandBuilder.ts +290 -0
  14. package/src/client/XernerxClient.ts +173 -151
  15. package/src/client/XernerxShardClient.ts +89 -0
  16. package/src/events/clientReady.ts +96 -0
  17. package/src/events/entitlementCreate.ts +15 -0
  18. package/src/events/interactionCreate.ts +36 -0
  19. package/src/events/messageCreate.ts +60 -0
  20. package/src/events/messageDelete.ts +41 -0
  21. package/src/events/messageUpdate.ts +60 -0
  22. package/src/events/slashCommandInteraction.ts +55 -0
  23. package/src/handler/CommandHandler.ts +132 -0
  24. package/src/handler/EventHandler.ts +45 -0
  25. package/src/handler/Handler.ts +98 -0
  26. package/src/interfaces/XernerxClientOptions.ts +13 -0
  27. package/src/interfaces/XernerxClientStats.ts +15 -0
  28. package/src/interfaces/XernerxEventBuilderOptions.ts +9 -0
  29. package/src/interfaces/XernerxMessageCommandBuilderOptions.ts +8 -0
  30. package/src/interfaces/XernerxMessageCommandHandlerOptions.ts +15 -0
  31. package/src/interfaces/XernerxShardClientOptions.ts +5 -0
  32. package/src/interfaces/XernerxSlashCommand.ts +19 -0
  33. package/src/interfaces/XernerxSlashCommandBuilderOptions.ts +70 -0
  34. package/src/interfaces/XernerxSlashCommandHandlerOptions.ts +5 -0
  35. package/src/main.ts +21 -7
  36. package/src/model/XernerxGuild.ts +13 -0
  37. package/src/model/XernerxInteractionArguments.ts +92 -0
  38. package/src/model/XernerxMonitisation.ts +73 -0
  39. package/src/model/XernerxUser.ts +82 -0
  40. package/src/tools/XernerxBase.ts +16 -0
  41. package/src/tools/XernerxError.ts +16 -0
  42. package/src/tools/XernerxInfo.ts +13 -0
  43. package/src/tools/XernerxInitial.ts +28 -0
  44. package/src/tools/XernerxSuccess.ts +13 -0
  45. package/src/tools/XernerxWarn.ts +13 -0
  46. package/src/types/Events.d.ts +21 -0
  47. package/src/types/Interaction.d.ts +90 -0
  48. package/src/types/Message.d.ts +16 -0
  49. package/src/util/XernerxInteractionUtil.ts +82 -0
  50. package/src/util/XernerxMessageUtil.ts +105 -0
  51. package/src/util/XernerxUtil.ts +47 -0
  52. package/src/validators/XernerxBaseValidator.ts +82 -0
  53. package/src/validators/XernerxSlashCommandValidator.ts +11 -0
  54. package/dist/main.global.js +0 -88544
  55. package/dist/main.global.js.map +0 -1
  56. package/src/base/XernerxContextCommand.ts +0 -24
  57. package/src/base/XernerxEvent.ts +0 -21
  58. package/src/base/XernerxInhibitor.ts +0 -21
  59. package/src/base/XernerxMessageCommand.ts +0 -24
  60. package/src/base/XernerxSlashCommand.ts +0 -26
  61. package/src/handlers/CommandHandler.ts +0 -31
  62. package/src/handlers/Handler.ts +0 -57
  63. package/src/tools/XernerxLog.ts +0 -58
  64. package/src/types/interfaces.ts +0 -25
  65. package/src/types/types.ts +0 -29
  66. package/src/util/ClientUtil.ts +0 -29
  67. package/src/util/Util.ts +0 -11
  68. package/src/util/prompts.ts +0 -120
package/dist/main.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/tools/XernerxLog.ts","../src/util/prompts.ts","../src/handlers/Handler.ts","../src/handlers/CommandHandler.ts","../src/util/Util.ts","../src/util/ClientUtil.ts","../src/client/XernerxClient.ts","../src/base/XernerxSlashCommand.ts"],"names":["sharpyy","str","link","path","id","Discord2"],"mappings":"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","file":"main.js","sourcesContent":["/** @format */\r\n\r\nimport sharpyy, { link } from 'sharpyy';\r\n\r\nexport default new (class XernerxLog {\r\n\tpublic declare readonly baseText;\r\n\r\n\tconstructor() {\r\n\t\tthis.baseText = `${sharpyy('XERNERX', 'txRainbow', 'bold')} | ${new Date()\r\n\t\t\t.toLocaleTimeString()\r\n\t\t\t.split(/ /gim)\r\n\t\t\t.map((str) =>\r\n\t\t\t\tstr\r\n\t\t\t\t\t.split(':')\r\n\t\t\t\t\t.map((str) => (isNaN(Number(str)) ? str : sharpyy(str, 'txCyan')))\r\n\t\t\t\t\t.join(':')\r\n\t\t\t)\r\n\t\t\t.join(' ')} | ${sharpyy(String(Math.round(process.memoryUsage().rss / 10000) / 100), 'txCyan')}mb |`;\r\n\t}\r\n\r\n\tinfo(message: string) {\r\n\t\treturn console.info(`✔️ |`, this.baseText, message);\r\n\t}\r\n\r\n\tasync error(message: string, error?: Error) {\r\n\t\tconst { default: boxen } = await import('boxen');\r\n\r\n\t\tconst errorMessage = boxen(error?.stack as string, { padding: 1, margin: 1, borderStyle: 'round', borderColor: 'red' });\r\n\r\n\t\tif (error) return console.error(`❗ |`, this.baseText, message, errorMessage);\r\n\t\telse return console.error(`❗ |`, this.baseText, message);\r\n\t}\r\n\r\n\twarn(message: string, url?: URL) {\r\n\t\tconsole.warn(`⚠️ |`, this.baseText, message, url ? `Read more here ${link('here', url)}` : '');\r\n\t}\r\n\r\n\tdebug(message: string) {\r\n\t\treturn console.debug(`🐛 |`, this.baseText, message);\r\n\t}\r\n\r\n\tasync box(message: string, color?: string, title?: string) {\r\n\t\tconst { default: boxen } = await import('boxen');\r\n\r\n\t\tconst time = new Date()\r\n\t\t\t.toLocaleTimeString()\r\n\t\t\t.split(/ /gim)\r\n\t\t\t.map((str) =>\r\n\t\t\t\tstr\r\n\t\t\t\t\t.split(':')\r\n\t\t\t\t\t.map((str) => (isNaN(Number(str)) ? str : sharpyy(str, 'txCyan')))\r\n\t\t\t\t\t.join(':')\r\n\t\t\t)\r\n\t\t\t.join(' ');\r\n\r\n\t\treturn console.info(boxen(message, { padding: 1, margin: 1, borderStyle: 'round', borderColor: color, title: `${time} - ${sharpyy('XERNERX', 'txRainbow', 'bold')} - ${title || ''}` }));\r\n\t}\r\n})();\r\n","/** @format */\r\n\r\nimport sharpyy from 'sharpyy';\r\nimport { Color } from 'ora';\r\n\r\nimport { XernerxClient } from '../client/XernerxClient.js';\r\nimport XernerxLog from '../tools/XernerxLog.js';\r\n\r\nlet init = false;\r\n\r\nexport async function start(client: XernerxClient) {\r\n\tif (init) return;\r\n\r\n\tif (client.settings.debug) XernerxLog.info('Debug mode enabled, preventing console clear and logging all handlings...');\r\n\telse console.clear();\r\n\r\n\tconst { default: ora, spinners } = await import('ora');\r\n\tconst { default: boxen } = await import('boxen');\r\n\r\n\tconsole.info(\r\n\t\tboxen(sharpyy('XERNERX', 'txRainbow', 'bold', 'underlines'), {\r\n\t\t\tpadding: 1,\r\n\t\t\tmargin: 1,\r\n\t\t\tborderStyle: 'round',\r\n\t\t\theight: 3,\r\n\t\t\talign: 'center',\r\n\t\t\tborderColor: 'magenta',\r\n\t\t\tfullscreen: (width, height) => [width - 5, height],\r\n\t\t})\r\n\t);\r\n\r\n\tif (!client.options.intents.has('Guilds'))\r\n\t\tXernerxLog.warn('Your bot is signed in without the Guilds intent, this may cause issues with the bot.', new URL('https://discord.com/developers/docs/topics/gateway#gateway-intents'));\r\n\r\n\tconst spinner = ora();\r\n\r\n\tspinner.spinner = spinners.dots12;\r\n\r\n\tspinner.start();\r\n\r\n\tlet index = 0;\r\n\r\n\tsetInterval(async () => {\r\n\t\t// Update Discord stats\r\n\t\tcalculateStats(client);\r\n\r\n\t\t// Update commandline\r\n\r\n\t\tconst time = new Date()\r\n\t\t\t\t.toLocaleTimeString()\r\n\t\t\t\t.split(/ /gim)\r\n\t\t\t\t.map((str) =>\r\n\t\t\t\t\tstr\r\n\t\t\t\t\t\t.split(':')\r\n\t\t\t\t\t\t.map((str) => (isNaN(Number(str)) ? str : sharpyy(str, 'txCyan')))\r\n\t\t\t\t\t\t.join(':')\r\n\t\t\t\t)\r\n\t\t\t\t.join(' '),\r\n\t\t\tram = `${sharpyy(String(Math.round(process.memoryUsage().rss / 10000) / 100), 'txCyan')}mb`;\r\n\r\n\t\tconst colors = ['red', 'green', 'yellow', 'blue', 'magenta', 'cyan'];\r\n\r\n\t\tconst baseText = `${sharpyy('XERNERX', 'txRainbow', 'bold')} | ${time} | ${ram} | `;\r\n\r\n\t\tif (client.user) {\r\n\t\t\tspinner.color = colors[index] as Color;\r\n\r\n\t\t\tconst counts = {\r\n\t\t\t\tlocal: client.commands.stats.slash.local + client.commands.stats.message.local + client.commands.stats.context.local,\r\n\t\t\t\tglobal: client.commands.stats.slash.global + client.commands.stats.message.global + client.commands.stats.context.global,\r\n\t\t\t};\r\n\r\n\t\t\tspinner.text = boxen(\r\n\t\t\t\tObject.entries({\r\n\t\t\t\t\t'Name': sharpyy(client.user.tag, 'txBlue'),\r\n\t\t\t\t\t'Status': `${sharpyy('Online', 'txGreen')} | ${client.settings.global ? sharpyy('Global', 'txGreen') : sharpyy('Local', 'txRed')}`,\r\n\t\t\t\t\t'Uptime': client.util\r\n\t\t\t\t\t\t.uptime(client.uptime)\r\n\t\t\t\t\t\t.split('')\r\n\t\t\t\t\t\t.map((c) => (isNaN(Number(c)) ? c : sharpyy(c, 'txCyan')))\r\n\t\t\t\t\t\t.join(''),\r\n\t\t\t\t\t'Commands': client.settings.global ? `${counts.local ? `local: ${counts.local}` : ''}|${counts.global ? `global: ${counts.global}` : ''}` : counts.local + counts.global,\r\n\t\t\t\t\t'RAM Usage': ram,\r\n\t\t\t\t\t'Guilds': (await Promise.all(client.settings.guilds.map(async (id) => sharpyy((await client.guilds.fetch(id))?.name || id, 'txBlue')))).join(', '),\r\n\t\t\t\t\t'Owners': (await Promise.all(client.settings.owners.map(async (id) => sharpyy((await client.users.fetch(id))?.username || id, 'txBlue')))).join(', '),\r\n\t\t\t\t\t'GuildCount': sharpyy(String(client.stats.guilds), 'txCyan'),\r\n\t\t\t\t\t'UserCount': sharpyy(String(client.stats.users), 'txCyan'),\r\n\t\t\t\t\t'ShardCount': sharpyy(String(client.stats.shardCount), 'txCyan'),\r\n\t\t\t\t})\r\n\t\t\t\t\t.map(([key, value]) => `${key}: ${value}`)\r\n\t\t\t\t\t.join('\\n'),\r\n\t\t\t\t{\r\n\t\t\t\t\tpadding: 1,\r\n\t\t\t\t\tmargin: 1,\r\n\t\t\t\t\tborderStyle: 'round',\r\n\t\t\t\t\tborderColor: 'magenta',\r\n\t\t\t\t\ttitle: time + ' - ' + sharpyy('XERNERX', 'txRainbow', 'bold') + '\\x1B[35m',\r\n\t\t\t\t\theight: 15,\r\n\t\t\t\t\tfullscreen: (width, height) => [width - 5, height],\r\n\t\t\t\t}\r\n\t\t\t);\r\n\t\t} else {\r\n\t\t\tspinner.color = 'green';\r\n\r\n\t\t\tspinner.text = baseText + `Connecting to Discord${index == 0 ? '.' : index == 1 ? '..' : index == 2 ? '...' : ''}`;\r\n\t\t}\r\n\r\n\t\tindex++;\r\n\r\n\t\tif (index == colors.length - 1) index = 0;\r\n\t}, 250);\r\n\r\n\tinit = true;\r\n}\r\n\r\nfunction calculateStats(client: XernerxClient) {\r\n\tclient.stats.guilds = client.guilds.cache.size;\r\n\tclient.stats.users = client.users.cache.size;\r\n\tclient.stats.shardCount = client.options.shardCount || null;\r\n}\r\n","/** @format */\r\n// import * as inquirer from '@inquirer/prompts';\r\n// import { link } from 'sharpyy';\r\n\r\nimport { XernerxClient } from '../client/XernerxClient.js';\r\nimport * as fs from 'fs';\r\nimport * as path from 'path';\r\n\r\nimport { XernerxFile } from '../types/types.js';\r\nimport XernerxLog from '../tools/XernerxLog.js';\r\nimport { link } from 'sharpyy';\r\n\r\nexport class Handler {\r\n\tpublic declare readonly client: XernerxClient;\r\n\r\n\tconstructor(client: XernerxClient) {\r\n\t\tthis.client = client;\r\n\t}\r\n\r\n\tprotected async readdir(directory: string) {\r\n\t\tconst dirpath = path.resolve(directory);\r\n\r\n\t\tif (this.client.settings.debug) XernerxLog.debug(`Attempting to read directory ${link(directory, new URL(dirpath))}`);\r\n\r\n\t\ttry {\r\n\t\t\tconst files = fs.readdirSync(dirpath);\r\n\r\n\t\t\treturn files.filter((file) => file.endsWith('.js') || file.endsWith('.mjs') || file.endsWith('.cjs'));\r\n\t\t} catch (error) {\r\n\t\t\tXernerxLog.error(`Error reading directory ${link(directory, new URL(dirpath))}:`, error as Error);\r\n\t\t\treturn [];\r\n\t\t}\r\n\t}\r\n\r\n\tprotected async load(filepath: string) {\r\n\t\tif (this.client.settings.debug) XernerxLog.debug(`Attempting to load ${link(filepath, new URL(filepath))}`);\r\n\r\n\t\ttry {\r\n\t\t\tconst file = ((await import(`file://${filepath}`))?.default || (await import(`file://${filepath}`))) as XernerxFile;\r\n\r\n\t\t\tconst openFile = new (file as any)() as XernerxFile;\r\n\r\n\t\t\tconst [collection, group] = openFile.collection.split('.');\r\n\r\n\t\t\tgroup\r\n\t\t\t\t? this.client[group as 'commands'][collection as 'message' | 'slash' | 'context'].set(openFile._id, openFile as never)\r\n\t\t\t\t: this.client[collection as 'events' | 'inhibitors'].set(openFile._id, openFile as never);\r\n\r\n\t\t\tif (this.client.settings.debug) XernerxLog.debug(`Loaded ${link(openFile._id, new URL(filepath))}`);\r\n\r\n\t\t\treturn openFile as XernerxFile;\r\n\t\t} catch (error) {\r\n\t\t\tXernerxLog.error(`Error loading ${link(filepath, new URL(filepath))}:`, error as Error);\r\n\t\t\treturn null;\r\n\t\t}\r\n\t}\r\n}\r\n","/** @format */\r\n\r\nimport { XernerxClient } from '../client/XernerxClient.js';\r\nimport { XernerxContextCommandHandlerOptions, XernerxMessageCommandHandlerOptions, XernerxSlashCommandHandlerOptions } from '../types/interfaces.js';\r\nimport { Handler } from './Handler.js';\r\nimport path from 'path';\r\n\r\nexport class CommandHandler extends Handler {\r\n\tconstructor(client: XernerxClient) {\r\n\t\tsuper(client);\r\n\t}\r\n\r\n\tprotected async loadSlashCommands(options: XernerxSlashCommandHandlerOptions) {\r\n\t\tif (!this.client.modules.options.slash) this.client.modules.options.slash = {};\r\n\t\tthis.client.modules.options.slash.global = options.global ?? this.client.settings.global;\r\n\r\n\t\tfor (const file of await this.readdir(options.directory)) {\r\n\t\t\tconst command = await this.load(path.resolve(`${options.directory}/${file}`));\r\n\r\n\t\t\tif (!command) continue;\r\n\r\n\t\t\tif (command.filetype == 'XernerxMessageCommand' || command.filetype == 'XernerxSlashCommand' || command.filetype == 'XernerxContextCommand') {\r\n\t\t\t\tif (!this.client.modules.options.slash.global) this.client.commands.stats.slash.local++;\r\n\t\t\t\telse if (!command.global) this.client.commands.stats.slash.local++;\r\n\t\t\t\telse this.client.commands.stats.slash.global++;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tprotected async loadMessageCommands(options: XernerxMessageCommandHandlerOptions) {}\r\n\tprotected async loadContextCommands(options: XernerxContextCommandHandlerOptions) {}\r\n}\r\n","/** @format */\r\n\r\nimport { XernerxClient } from '../main.js';\r\n\r\nexport class Util {\r\n\tpublic declare readonly client: XernerxClient;\r\n\r\n\tconstructor(client: XernerxClient) {\r\n\t\tthis.client = client;\r\n\t}\r\n}\r\n","/** @format */\r\n\r\nimport { XernerxClient } from '../main.js';\r\nimport { Util } from './Util.js';\r\n\r\nexport class ClientUtil extends Util {\r\n\tconstructor(client: XernerxClient) {\r\n\t\tsuper(client);\r\n\t}\r\n\r\n\tpublic uptime(timestamp?: number | null) {\r\n\t\tif (!timestamp) timestamp = this.client.uptime || 0;\r\n\t\tlet totalSeconds = timestamp / 1000;\r\n\t\tlet years = Math.floor(totalSeconds / 31536000);\r\n\t\ttotalSeconds %= 31536000;\r\n\t\tlet days = Math.floor(totalSeconds / 86400);\r\n\t\ttotalSeconds %= 86400;\r\n\t\tlet hours = Math.floor(totalSeconds / 3600);\r\n\t\ttotalSeconds %= 3600;\r\n\t\tlet minutes = Math.floor(totalSeconds / 60);\r\n\t\tlet seconds = Math.floor(totalSeconds % 60);\r\n\r\n\t\tif (years >= 1) return `${years}y ${days}d ${hours}h ${minutes}m`;\r\n\t\telse if (days >= 1) return `${days}d ${hours}h ${minutes}m`;\r\n\t\telse if (hours >= 1) return `${hours}h ${minutes}m`;\r\n\t\telse if (minutes >= 1) return `${minutes}m ${seconds}s`;\r\n\t\telse return `${seconds}s`;\r\n\t}\r\n}\r\n","/** @format */\r\n\r\nimport * as Discord from 'discord.js';\r\nimport { z } from 'zod';\r\n\r\nimport { start } from '../util/prompts.js';\r\nimport { XernerxStats } from '../types/interfaces.js';\r\nimport { CommandHandler } from '../handlers/CommandHandler.js';\r\nimport { XernerxMessageCommand } from '../base/XernerxMessageCommand.js';\r\nimport { XernerxSlashCommand } from '../main.js';\r\nimport { XernerxContextCommand } from '../base/XernerxContextCommand.js';\r\nimport { XernerxEvent } from '../base/XernerxEvent.js';\r\nimport { XernerxInhibitor } from '../base/XernerxInhibitor.js';\r\nimport XernerxLog from '../tools/XernerxLog.js';\r\nimport sharpyy from 'sharpyy';\r\nimport { ClientUtil } from '../util/ClientUtil.js';\r\n\r\nexport class XernerxClient<T = {}> extends Discord.Client {\r\n\tpublic declare readonly settings;\r\n\tpublic declare readonly stats: XernerxStats;\r\n\tpublic declare readonly modules: {\r\n\t\tcommandHandler: CommandHandler;\r\n\t\toptions: {\r\n\t\t\tmessage?: { global?: boolean };\r\n\t\t\tslash?: { global?: boolean };\r\n\t\t\tcontext?: { global?: boolean };\r\n\t\t};\r\n\t};\r\n\tpublic declare readonly util: ClientUtil;\r\n\tpublic declare readonly commands;\r\n\tpublic declare readonly events;\r\n\tpublic declare readonly inhibitors;\r\n\r\n\tconstructor(DiscordOptions: any, XernerxOptions: any, config: T) {\r\n\t\tsuper(DiscordOptions);\r\n\r\n\t\tthis.settings = z\r\n\t\t\t.object({\r\n\t\t\t\t// required settings\r\n\t\t\t\ttoken: z.string(),\r\n\r\n\t\t\t\t// optional settings\r\n\t\t\t\tglobal: z.boolean().default(false),\r\n\t\t\t\towners: z.array(z.string()).default([]),\r\n\t\t\t\tguilds: z.array(z.string()).default([]),\r\n\r\n\t\t\t\t// dev settings\r\n\t\t\t\tdebug: z.boolean().default(false),\r\n\t\t\t})\r\n\t\t\t.parse({ ...XernerxOptions, ...config });\r\n\r\n\t\tthis.stats = {\r\n\t\t\tguilds: null,\r\n\t\t\tusers: null,\r\n\t\t\tshardId: null,\r\n\t\t\tshardCount: null,\r\n\t\t\tshards: null,\r\n\t\t\tvoteCount: null,\r\n\t\t\tvotes: null,\r\n\t\t};\r\n\r\n\t\tthis.util = new ClientUtil(this);\r\n\r\n\t\tstart(this);\r\n\r\n\t\tthis.modules = {\r\n\t\t\tcommandHandler: new CommandHandler(this),\r\n\r\n\t\t\toptions: {},\r\n\t\t};\r\n\r\n\t\tthis.commands = {\r\n\t\t\tmessage: new Discord.Collection() as Discord.Collection<string, XernerxMessageCommand>,\r\n\t\t\tslash: new Discord.Collection() as Discord.Collection<string, XernerxSlashCommand>,\r\n\t\t\tcontext: new Discord.Collection() as Discord.Collection<string, XernerxContextCommand>,\r\n\t\t\tstats: {\r\n\t\t\t\tslash: {\r\n\t\t\t\t\tlocal: 0,\r\n\t\t\t\t\tglobal: 0,\r\n\t\t\t\t},\r\n\t\t\t\tmessage: {\r\n\t\t\t\t\tlocal: 0,\r\n\t\t\t\t\tglobal: 0,\r\n\t\t\t\t},\r\n\t\t\t\tcontext: {\r\n\t\t\t\t\tlocal: 0,\r\n\t\t\t\t\tglobal: 0,\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t};\r\n\r\n\t\tthis.events = new Discord.Collection() as Discord.Collection<string, XernerxEvent>;\r\n\t\tthis.inhibitors = new Discord.Collection() as Discord.Collection<string, XernerxInhibitor>;\r\n\r\n\t\tthis.connect();\r\n\t}\r\n\r\n\tprivate async connect() {\r\n\t\t// slash cmds\r\n\t\tthis.deploy();\r\n\r\n\t\t// login\r\n\t\tthis.login(this.settings.token);\r\n\t}\r\n\r\n\tprivate async deploy() {\r\n\t\tthis.once('ready', async (client) => {\r\n\t\t\tconst commands: { local: Array<XernerxSlashCommand | XernerxContextCommand>; global: Array<XernerxSlashCommand | XernerxContextCommand> } = { local: [], global: [] };\r\n\r\n\t\t\tif (this.settings.global) {\r\n\t\t\t\tif (!this.modules.options.slash?.global) commands.global.push(...(this.commands.slash as any));\r\n\t\t\t\telse {\r\n\t\t\t\t\tcommands.global.push(...(this.commands.slash.filter((c) => c.global) as any));\r\n\r\n\t\t\t\t\tcommands.local.push(...(this.commands.slash.filter((c) => !c.global) as any));\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (!this.modules.options.context?.global) commands.global.push(...(this.commands.context as any));\r\n\t\t\t\telse {\r\n\t\t\t\t\tcommands.global.push(...(this.commands.context.filter((c) => c.global) as any));\r\n\r\n\t\t\t\t\tcommands.local.push(...(this.commands.context.filter((c) => !c.global) as any));\r\n\t\t\t\t}\r\n\t\t\t} else commands.local.push(...(this.commands.context as any), ...(this.commands.slash as any));\r\n\r\n\t\t\tfor (const id of this.settings.guilds) {\r\n\t\t\t\tconst guild = await this.guilds.fetch(id);\r\n\r\n\t\t\t\tif (!commands.local.length) break;\r\n\r\n\t\t\t\tif (this.settings.debug) XernerxLog.debug(`Attempting to deploy commands to guild: ${sharpyy(guild.name, 'txBlue')}`);\r\n\r\n\t\t\t\tthis.rest.put(Discord.Routes.applicationGuildCommands(client.user.id, id), { body: (commands.local as any).map(([id, command]: any) => command.toJSON()) });\r\n\r\n\t\t\t\tawait XernerxLog.box(\r\n\t\t\t\t\t(commands.local as any).map(([id]: [string]) => sharpyy(id, 'txYellow')).join(', '),\r\n\t\t\t\t\t'red',\r\n\t\t\t\t\t`Deployed ${sharpyy('local', 'txRed', 'bold')} commands in ${sharpyy(guild.name, 'txBlue')}`\r\n\t\t\t\t);\r\n\t\t\t}\r\n\r\n\t\t\tif (this.settings.global) {\r\n\t\t\t\tif (this.settings.debug) XernerxLog.debug(`Attempting to deploy commands globally`);\r\n\r\n\t\t\t\tthis.rest.put(Discord.Routes.applicationCommands(client.user.id), { body: [] });\r\n\r\n\t\t\t\tawait XernerxLog.box((commands.global as any).map(([id]: [string]) => sharpyy(id, 'txYellow')).join(', '), 'green', `Deployed ${sharpyy('global', 'txGreen', 'bold')} commands`);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n}\r\n","/** @format */\r\n\r\nimport * as Discord from 'discord.js';\r\n\r\nexport class XernerxSlashCommand extends Discord.SlashCommandBuilder {\r\n\tpublic declare readonly _id: string;\r\n\tpublic declare readonly global: boolean;\r\n\tpublic declare readonly filetype: 'XernerxSlashCommand';\r\n\tpublic declare readonly collection: 'slash.commands';\r\n\r\n\tconstructor(options: any) {\r\n\t\tsuper();\r\n\r\n\t\tthis._id = options.id;\r\n\r\n\t\tthis.setName(options.name);\r\n\r\n\t\tthis.setDescription(options.description);\r\n\r\n\t\tthis.global = options.global ?? true;\r\n\r\n\t\tthis.filetype = 'XernerxSlashCommand';\r\n\r\n\t\tthis.collection = 'slash.commands';\r\n\t}\r\n}\r\n"]}
1
+ {"version":3,"sources":["../src/tools/XernerxBase.ts","../src/tools/XernerxInfo.ts","../src/tools/XernerxError.ts","../src/tools/XernerxSuccess.ts","../src/tools/XernerxInitial.ts","../src/client/XernerxShardClient.ts","../src/model/XernerxMonitisation.ts","../src/handler/Handler.ts","../src/handler/EventHandler.ts","../src/build/XernerxBaseBuilder.ts","../src/tools/XernerxWarn.ts","../src/build/XernerxEventBuilder.ts","../src/model/XernerxUser.ts","../src/util/XernerxUtil.ts","../src/util/XernerxMessageUtil.ts","../src/events/messageCreate.ts","../src/events/messageUpdate.ts","../src/events/messageDelete.ts","../src/util/XernerxInteractionUtil.ts","../src/events/interactionCreate.ts","../src/events/clientReady.ts","../src/model/XernerxInteractionArguments.ts","../src/validators/XernerxBaseValidator.ts","../src/validators/XernerxSlashCommandValidator.ts","../src/events/slashCommandInteraction.ts","../src/events/entitlementCreate.ts","../src/handler/CommandHandler.ts","../src/client/XernerxClient.ts","../src/build/XernerxMessageCommandBuilder.ts","../src/build/XernerxSlashCommandBuilder.ts"],"names":["sharpyy","ora","fs","file","sku","msg","group","subcommand","Client","z","Collection"],"mappings":"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","file":"main.js","sourcesContent":["/** @format */\n\nimport sharpyy from 'sharpyy';\n\nexport class XernerxBase {\n\tdeclare public readonly base: () => string;\n\n\tconstructor() {\n\t\tthis.base = () =>\n\t\t\t`| ${sharpyy('XERNERX', 'txRainbow', 'bold')} | ${new Date()\n\t\t\t\t.toLocaleTimeString()\n\t\t\t\t.split('')\n\t\t\t\t.map((c) => (Number.isNaN(Number(c)) ? sharpyy(c, 'txWhite') : sharpyy(c, 'txCyan')))\n\t\t\t\t.join('')} | ${sharpyy(String(Math.round(process.memoryUsage().rss / 1000000)), 'txCyan')}mb | `;\n\t}\n}\n","/** @format */\n\nimport ora from 'ora';\n\nimport { XernerxBase } from './XernerxBase.js';\n\nexport class XernerxInfo extends XernerxBase {\n\tconstructor(message: string) {\n\t\tsuper();\n\n\t\tora().info(`${this.base()}${message}`);\n\t}\n}\n","/** @format */\n\nimport ora from 'ora';\nimport sharpyy from 'sharpyy';\n\nimport { XernerxBase } from './XernerxBase.js';\n\nexport class XernerxError extends XernerxBase {\n\tconstructor(message: string, exit: number = 0) {\n\t\tsuper();\n\n\t\tora().fail(`${this.base()}${sharpyy(message, 'txRed')}`);\n\n\t\texit ? process.exit(exit) : null;\n\t}\n}\n","/** @format */\n\nimport ora from 'ora';\n\nimport { XernerxBase } from './XernerxBase.js';\n\nexport class XernerxSuccess extends XernerxBase {\n\tconstructor(message: string) {\n\t\tsuper();\n\n\t\tora().succeed(`${this.base()}${message}`);\n\t}\n}\n","/** @format */\n\nimport ora from 'ora';\nimport boxen from 'boxen';\nimport sharpyy from 'sharpyy';\n\nimport { XernerxBase } from './XernerxBase.js';\n\nexport class XernerxInitial extends XernerxBase {\n\tconstructor(type: 'Client' | 'ShardClient') {\n\t\tsuper();\n\n\t\tconsole.clear();\n\n\t\tconsole.info(\n\t\t\tboxen(sharpyy('XERNERX', 'txRainbow', 'bold'), {\n\t\t\t\tborderStyle: 'round',\n\t\t\t\tborderColor: 'magenta',\n\t\t\t\ttextAlignment: 'center',\n\t\t\t\tfullscreen: (width, height) => [width, 4],\n\t\t\t})\n\t\t);\n\n\t\tconst spinner = ora().start(`${this.base()}${type == 'Client' ? 'Starting...' : 'Sharding...'}`);\n\n\t\tsetInterval(() => (spinner.text = `${this.base()}`), 500);\n\t}\n}\n","/** @format */\n\nimport { Cluster, ClusterManager, ClusterManagerOptions } from 'discord-hybrid-sharding';\nimport sharpyy from 'sharpyy';\nimport fs from 'fs';\n\nimport { XernerxInfo } from '../tools/XernerxInfo.js';\nimport { XernerxError } from '../tools/XernerxError.js';\nimport { XernerxSuccess } from '../tools/XernerxSuccess.js';\nimport { XernerxShardClientOptions } from '../interfaces/XernerxShardClientOptions.js';\nimport { XernerxInitial } from '../tools/XernerxInitial.js';\n\nexport class XernerxShardClient extends ClusterManager {\n\tdeclare public readonly onlineShards: Set<Cluster>;\n\tdeclare public readonly stats: {\n\t\tonlineSince: number | null;\n\t\tguildCount: number | null;\n\t\tuserCount: number | null;\n\t\tshardCount: number | null;\n\t\tvoteCount: number | null;\n\t\tshards: [] | null;\n\t};\n\tconstructor(options: ClusterManagerOptions & XernerxShardClientOptions) {\n\t\tnew XernerxInitial('ShardClient');\n\n\t\ttry {\n\t\t\tnew XernerxInfo(`Loading ShardClient from ${sharpyy(options.file, 'bgGray')}`);\n\t\t\t(fs.readFileSync(options.file), 'utf-8');\n\t\t\tnew XernerxSuccess(`ShardClient loaded successfully`);\n\t\t} catch {\n\t\t\tnew XernerxError(`File ${sharpyy(options.file, 'bgGray')} not found.`, 1);\n\t\t}\n\n\t\tsuper(options.file, options);\n\n\t\tthis.onlineShards = new Set();\n\n\t\tthis.stats = {\n\t\t\tonlineSince: Number(new Date()),\n\t\t\tguildCount: null,\n\t\t\tuserCount: null,\n\t\t\tshardCount: null,\n\t\t\tvoteCount: null,\n\t\t\tshards: [],\n\t\t};\n\n\t\tthis.on('clusterCreate', (cluster) => {\n\t\t\tnew XernerxInfo(`${sharpyy(`Shard ${cluster.id}`, 'txCyan')} | Creating...`);\n\n\t\t\tcluster.on('ready', () => {\n\t\t\t\tthis.onlineShards.add(cluster);\n\n\t\t\t\tif (this.onlineShards.size == (this.totalClusters || this.totalShards)) this.#update();\n\t\t\t});\n\n\t\t\tcluster.on('disconnect', () => {\n\t\t\t\tthis.onlineShards.delete(cluster);\n\t\t\t});\n\n\t\t\tcluster.on('death', (error) => {\n\t\t\t\tthis.onlineShards.delete(cluster);\n\t\t\t});\n\t\t});\n\n\t\tthis.spawn({ timeout: -1 });\n\t}\n\n\tasync #update() {\n\t\tawait new Promise((resolve) => setTimeout(resolve, 1000));\n\n\t\tsetInterval(async () => {\n\t\t\tconst stats = await this.fetchClientValues('stats');\n\n\t\t\tconst shards = await this.fetchClientValues('stats.shard');\n\n\t\t\tthis.stats.guildCount = stats[0].guildCount;\n\t\t\tthis.stats.userCount = stats[0].userCount;\n\t\t\tthis.stats.shardCount = stats[0].shardCount;\n\t\t\tthis.stats.voteCount = stats[0].voteCount;\n\t\t\tthis.stats.shards = shards;\n\t\t}, 1000);\n\n\t\tawait new Promise((resolve) => setTimeout(resolve, 4000));\n\n\t\tnew XernerxSuccess(\n\t\t\t`All Shards are online! Watching ${sharpyy(String(this.stats.guildCount?.toLocaleString()), 'txCyan')} guilds and users: ${sharpyy(String(this.stats.userCount?.toLocaleString()), 'txCyan')}, and ${sharpyy(String(this.stats.shardCount?.toLocaleString()), 'txCyan')} shards.`\n\t\t);\n\t}\n}\n","/** @format */\n\nimport { MonetizationAPI } from '@discordjs/core';\nimport { Client, RequestData, RESTGetAPIEntitlementsQuery } from 'discord.js';\n\nexport class XernerxMonitisation extends MonetizationAPI {\n\tdeclare private readonly client: Client<true>;\n\n\tconstructor(client: Client<true>) {\n\t\tsuper(client.rest);\n\n\t\tthis.client = client;\n\t}\n\n\t/**\n\t * Consumes an entitlement for the current user.\n\t *\n\t * @param id - The unique identifier of the entitlement to be consumed.\n\t * @param options - Optional request options specifying authentication or signaling method.\n\t * @returns A promise that resolves when the entitlement is successfully consumed.\n\t */\n\tconsume(id: string, options?: Pick<RequestData, 'auth' | 'signal'>) {\n\t\treturn this.consumeEntitlement(this.client.user.id, id, options);\n\t}\n\n\t/**\n\t * Retrieves entitlements for the current user.\n\t *\n\t * @param id - An optional query object to filter entitlements.\n\t * @param options - Optional request options specifying authentication or signaling method.\n\t * @returns A promise that resolves with the entitlements for the current user.\n\t */\n\tentitlements(id?: RESTGetAPIEntitlementsQuery, options?: Pick<RequestData, 'auth' | 'signal'>) {\n\t\treturn this.getEntitlements(this.client.user.id, id || {}, options);\n\t}\n\n\t/**\n\t * Retrieves the Stock Keeping Units (SKUs) for the current user.\n\t *\n\t * @param options - Optional request options specifying authentication or signaling method.\n\t * @returns A promise that resolves with the SKUs for the current user.\n\t */\n\tsku(options?: Pick<RequestData, 'auth' | 'signal'>) {\n\t\treturn this.getSKUs(this.client.user.id, options);\n\t}\n\n\t/**\n\t * Creates a test entitlement for a specified user and SKU.\n\t *\n\t * @param id - The unique identifier of the SKU for which the entitlement is to be created.\n\t * @param user - The unique identifier of the user who will own the entitlement.\n\t * @returns A promise that resolves with the created test entitlement, or undefined if the SKU is not found.\n\t */\n\tasync create(id: string, user: string) {\n\t\tconst skus = await this.sku();\n\n\t\tconst sku = skus.find((s) => s.id === id);\n\n\t\tif (!sku) return;\n\n\t\treturn await this.createTestEntitlement(this.client.user.id, { owner_id: user, owner_type: sku.type == 5 ? 2 : 1, sku_id: id });\n\t}\n\n\t/**\n\t * Deletes a test entitlement for the current user.\n\t *\n\t * @param id - The unique identifier of the test entitlement to be deleted.\n\t * @returns A promise that resolves when the test entitlement is successfully deleted.\n\t */\n\tdelete(id: string) {\n\t\treturn this.deleteTestEntitlement(this.client.user.id, id);\n\t}\n}\n","/** @format */\nimport fs from 'fs';\nimport path from 'path';\n\nimport { XernerxClient } from '../client/XernerxClient.js';\nimport { XernerxError } from '../tools/XernerxError.js';\nimport { XernerxEventBuilder } from '../build/XernerxEventBuilder.js';\nimport { XernerxMessageCommandBuilder } from '../build/XernerxMessageCommandBuilder.js';\nimport { XernerxSlashCommandBuilder } from '../build/XernerxSlashCommandBuilder.js';\n\nexport class Handler {\n\tdeclare public readonly client: XernerxClient;\n\t[index: string]: Record<string, any>;\n\n\tconstructor(client: XernerxClient) {\n\t\tthis.client = client;\n\t}\n\n\t/**\n\t * Loads JavaScript files from a specified directory.\n\t *\n\t * @param dir - The directory path from which to load the files.\n\t * @returns An array of file paths for JavaScript files in the specified directory.\n\t * Returns an empty array if an error occurs during the file reading process.\n\t */\n\tloadFiles(dir: string) {\n\t\ttry {\n\t\t\treturn fs\n\t\t\t\t.readdirSync(dir)\n\t\t\t\t.filter((file) => file.endsWith('.js'))\n\t\t\t\t.map((file) => path.join(dir, file));\n\t\t} catch (error) {\n\t\t\tnew XernerxError((error as Error).message, 0);\n\n\t\t\treturn [];\n\t\t}\n\t}\n\n\t/**\n\t * Asynchronously loads a JavaScript file and imports its default export.\n\t *\n\t * @param file - The path to the JavaScript file to be loaded.\n\t * @returns A promise that resolves when the file is successfully loaded and imported.\n\t * If the file does not have a default export, an error is thrown.\n\t */\n\tasync loadFile(file: string) {\n\t\tconst filepath = path.resolve(file);\n\t\tconst filename = path.basename(filepath);\n\n\t\ttry {\n\t\t\tconst file = await import(`file://${filepath}`);\n\n\t\t\tif (!file.default) return new XernerxError(`${filename} | ${file} does not have a default export.`, 0);\n\n\t\t\tconst builder = new file.default(this.client);\n\n\t\t\tbuilder.filepath = filepath;\n\t\t\tbuilder.filename = filename;\n\n\t\t\tthis.importFile(builder);\n\t\t} catch (error) {\n\t\t\tnew XernerxError(`${filename} | ${(error as Error).message}`, 0);\n\t\t}\n\t}\n\n\t/**\n\t * Imports a file by registering it with the client based on its type.\n\t *\n\t * @param builder - An instance of XernerxEventBuilder, XernerxMessageCommandBuilder, or XernerxSlashCommandBuilder.\n\t * This object contains the necessary information to register the file with the client.\n\t * @param filename - An optional string representing the name of the file being imported.\n\t * Used for error reporting if the builder ID is not unique.\n\t * @returns The builder object after it has been registered with the client.\n\t * If the builder is of type XernerxEvent, it is registered as an event listener.\n\t * If the builder is of type XernerxMessageCommand or XernerxSlashCommand, it is registered as a command.\n\t */\n\tasync importFile(builder: XernerxEventBuilder | XernerxMessageCommandBuilder | XernerxSlashCommandBuilder, filename?: string) {\n\t\tif (builder.filetype === 'XernerxEvent') {\n\t\t\tif (this.client.events.has(builder.id)) return new XernerxError(`${filename} | ID must be unique`);\n\n\t\t\tthis.client.events.set(builder.id, builder);\n\n\t\t\tbuilder.once\n\t\t\t\t? this[(builder as XernerxEventBuilder).emitter].once(builder.name, <T extends []>(...args: T) => builder.run(...(args as [])))\n\t\t\t\t: this[(builder as XernerxEventBuilder).emitter].on(builder.name, <T extends []>(...args: T) => builder.run(...(args as [])));\n\t\t}\n\n\t\tif (builder.filetype === 'XernerxMessageCommand') {\n\t\t\tthis.client.commands.message.set(builder.id, builder);\n\t\t}\n\n\t\tif (builder.filetype === 'XernerxSlashCommand') {\n\t\t\tthis.client.commands.slash.set(builder.id, builder);\n\t\t}\n\n\t\treturn builder;\n\t}\n}\n","/** @format */\n\nimport sharpyy from 'sharpyy';\n\nimport { XernerxClient } from '../client/XernerxClient.js';\nimport { Handler } from './Handler.js';\nimport { XernerxSuccess } from '../tools/XernerxSuccess.js';\n\nexport class EventHandler extends Handler {\n\tconstructor(client: XernerxClient) {\n\t\tsuper(client);\n\t}\n\n\t/**\n\t * Loads a single event file.\n\t *\n\t * @param file - The path to the event file to be loaded.\n\t * @returns A promise that resolves when the event file has been successfully loaded.\n\t */\n\tpublic async loadEvent(file: string) {\n\t\treturn this.loadFile(file);\n\t}\n\n\t/**\n\t * Loads all event files from the specified directory and initializes them.\n\t *\n\t * @param options - An object containing options for loading events.\n\t * @param options.directory - The directory path where event files are located.\n\t * @returns A promise that resolves when all events have been loaded.\n\t */\n\tpublic async loadEvents(options: { directory: string }) {\n\t\tconst files = this.loadFiles(options.directory);\n\n\t\tfor (const file of files) {\n\t\t\tawait this.loadEvent(file);\n\t\t}\n\n\t\tnew XernerxSuccess(\n\t\t\t`Loaded events: ${this.client.events\n\t\t\t\t.filter((event) => !event.id.startsWith('Xernerx'))\n\t\t\t\t.map((event) => sharpyy(event.id, 'txYellow'))\n\t\t\t\t.join(', ')}`\n\t\t);\n\t}\n}\n","/** @format */\n\nimport { XernerxClient } from '../client/XernerxClient.js';\nimport { XernerxEventBuilderOptions } from '../interfaces/XernerxEventBuilderOptions.js';\nimport { XernerxSlashCommandBuilderOptions } from '../interfaces/XernerxSlashCommandBuilderOptions.js';\n\nexport class XernerxBaseBuilder {\n\tdeclare public readonly id: string;\n\tdeclare public client: XernerxClient;\n\n\t/**\n\t * Constructs a new instance of the XernerxBaseBuilder class.\n\t *\n\t * @param id - A unique identifier for the builder instance.\n\t * @param options - Configuration options for the builder, which can be either\n\t * XernerxSlashCommandBuilderOptions or XernerxEventBuilderOptions.\n\t */\n\tconstructor(id: string, options: XernerxSlashCommandBuilderOptions | XernerxEventBuilderOptions) {\n\t\tthis.id = id;\n\t}\n}\n","/** @format */\n\nimport ora from 'ora';\n\nimport { XernerxBase } from './XernerxBase.js';\n\nexport class XernerxWarn extends XernerxBase {\n\tconstructor(message: string) {\n\t\tsuper();\n\n\t\tora().warn(`${this.base()}${message}`);\n\t}\n}\n","/** @format */\n\nimport { ClientEvents } from 'discord.js';\nimport sharpyy from 'sharpyy';\n\nimport { XernerxEventBuilderOptions } from '../interfaces/XernerxEventBuilderOptions.js';\nimport { XernerxBaseBuilder } from './XernerxBaseBuilder.js';\nimport { XernerxWarn } from '../tools/XernerxWarn.js';\n\nexport class XernerxEventBuilder extends XernerxBaseBuilder {\n\tdeclare public readonly filetype: 'XernerxEvent';\n\tdeclare public readonly name: ClientEvents | keyof ClientEvents | (string & {});\n\tdeclare public readonly emitter: string;\n\tdeclare public readonly once: boolean;\n\n\tconstructor(id: string, options: XernerxEventBuilderOptions) {\n\t\tsuper(id, options);\n\n\t\tthis.filetype = 'XernerxEvent';\n\n\t\tthis.name = options.name;\n\n\t\tthis.emitter = options.emitter ?? 'client';\n\n\t\tthis.once = options.once ?? false;\n\t}\n\n\t/**\n\t * Executes the event logic. This method should be overridden in subclasses to provide specific event handling.\n\t *\n\t * @param args - A variable number of arguments that are passed to the event handler.\n\t * These arguments are specific to the event being handled.\n\t * @returns A promise that resolves when the event handling is complete.\n\t * The resolved value can be any type, depending on the implementation in subclasses.\n\t */\n\tpublic async run(...args: any[]): Promise<any | void> {\n\t\tnew XernerxWarn(`Event ${sharpyy(`${this.id}`, 'txYellow')} does not have a run method, and will therefore not work.`);\n\t}\n}\n","/** @format */\n\nimport { Client, EntitlementType, SKUType, User } from 'discord.js';\n\nimport { XernerxMonitisation } from './XernerxMonitisation.js';\nimport { XernerxClient } from '../client/XernerxClient.js';\n\nexport class XernerxUser extends User {\n\treadonly #monitisation: XernerxMonitisation;\n\n\tconstructor(client: Client<true> | XernerxClient, user: User) {\n\t\tsuper(client as Client<true>, user as any);\n\n\t\tthis.#monitisation = new XernerxMonitisation(client as Client<true>);\n\t}\n\n\t/**\n\t * Checks if the user has any entitlements, indicating premium status.\n\t *\n\t * @param id - The ID of the user to check for premium entitlements.\n\t * @returns A promise that resolves to a boolean indicating whether the user has any entitlements (true) or not (false).\n\t */\n\tasync premium(id: string) {\n\t\tconst entitlements = await this.#monitisation.entitlements({ user_id: this.id });\n\n\t\tif (!entitlements.length) return false;\n\t\treturn true;\n\t}\n\n\t/**\n\t * Retrieves the entitlements for the user and maps them to their corresponding SKU.\n\t *\n\t * @returns A promise that resolves to an array of objects, each containing an entitlement and its associated SKU.\n\t */\n\tasync entitlements() {\n\t\tconst entitlements = await this.#monitisation.entitlements({ user_id: this.id });\n\n\t\tconst SKU = await this.#monitisation.sku();\n\n\t\treturn entitlements.map((entitlement) => ({ entitlement: entitlement, sku: SKU.find((sku) => sku.id === entitlement.sku_id) }));\n\t}\n\n\t/**\n\t * Synchronizes the user's entitlements with the current SKU data and performs necessary actions\n\t * such as consuming, deleting, or creating entitlements based on their type and the client's premium settings.\n\t *\n\t * @returns A promise that resolves to an array of error messages, if any occurred during the synchronization process.\n\t */\n\tasync synchronize() {\n\t\tconst errors: Array<string> = [];\n\t\tconst client = this.client as XernerxClient;\n\t\tconst skus = await this.#monitisation.sku();\n\t\tconst entitlements = await this.#monitisation.entitlements({ user_id: this.id });\n\n\t\tfor (const entitlement of entitlements) {\n\t\t\tif (!client.premium.synchronize) continue;\n\n\t\t\tconst sku = skus.find((sku) => sku.id === entitlement.sku_id);\n\n\t\t\tif (!sku) continue;\n\n\t\t\tif (sku.type == SKUType.Consumable && !entitlement.consumed && client.premium.consume) this.#monitisation.consume(entitlement.id).catch((e) => errors.push(e.message));\n\n\t\t\tif (sku.type == SKUType.Durable) {\n\t\t\t}\n\n\t\t\tif (sku.type == SKUType.Subscription && entitlement.type == EntitlementType.ApplicationSubscription) this.#monitisation.delete(entitlement.id).catch((e) => errors.push(e.message));\n\n\t\t\tif (sku.type == SKUType.SubscriptionGroup && entitlement.type == EntitlementType.ApplicationSubscription) this.#monitisation.delete(entitlement.id).catch((e) => errors.push(e.message));\n\t\t}\n\n\t\tfor (const sku of skus) {\n\t\t\tif (!client.premium.owners) continue;\n\n\t\t\tif (sku.type == 5) {\n\t\t\t\tawait this.#monitisation.create(sku.id, this.id).catch((e) => errors.push(e.message));\n\t\t\t}\n\t\t}\n\n\t\treturn errors;\n\t}\n}\n","/** @format */\n\nimport { Client, Interaction, Message, MessagePayload, Webhook, WebhookMessageCreateOptions } from 'discord.js';\n\nimport { XernerxClient } from '../client/XernerxClient.js';\n\nexport class XernerxBaseUtil {\n\tdeclare public readonly client: XernerxClient & Client<true>;\n\tdeclare public readonly parsed: {\n\t\tcommand: string | null;\n\t\talias: string | null;\n\t\tmention: boolean | null;\n\t\tprefix: string | null;\n\t};\n\tdeclare public interaction: Interaction | Message;\n\n\tconstructor(client: XernerxClient & Client<true>, interaction: Interaction | Message) {\n\t\tthis.client = client;\n\n\t\tthis.parsed = { command: null, alias: null, mention: null, prefix: null };\n\n\t\tthis.interaction = interaction;\n\t}\n\n\t/**\n\t * Sends a message using a webhook in the current interaction's channel.\n\t *\n\t * @param options - The message content or options to send via the webhook. This can be a string, MessagePayload, or WebhookMessageCreateOptions.\n\t * @returns A promise that resolves to the message sent by the webhook.\n\t */\n\tpublic async webhook(options: string | MessagePayload | WebhookMessageCreateOptions) {\n\t\tif (!this.interaction.channel) return;\n\n\t\t// @ts-expect-error\n\t\tconst webhooks = await this.interaction.channel.fetchWebhooks();\n\t\tlet webhook = (await webhooks.find((wh: Webhook) => wh.token)) as Webhook;\n\n\t\tif (!webhook)\n\t\t\t// @ts-expect-error\n\t\t\twebhook = this.interaction.channel.createWebhook({\n\t\t\t\tname: this.client.user.username,\n\t\t\t\tavatar: this.client.user.displayAvatarURL(),\n\t\t\t});\n\n\t\treturn await webhook.send(options);\n\t}\n}\n","/** @format */\n\nimport { Client, Collection, Message, MessageCreateOptions, MessageEditOptions, MessagePayload, MessageReplyOptions, TextChannel } from 'discord.js';\n\nimport { XernerxBaseUtil } from '../util/XernerxUtil.js';\nimport { XernerxClient } from '../client/XernerxClient.js';\n\nexport class XernerxMessageUtil extends XernerxBaseUtil {\n\tdeclare public readonly message: Message;\n\tdeclare public readonly cache: Collection<string, string>;\n\tdeclare public args: string[];\n\n\tconstructor(client: XernerxClient & Client<true>, message: Message) {\n\t\tsuper(client, message);\n\n\t\tthis.message = message;\n\n\t\tthis.cache = this.client.cache.messages;\n\n\t\tthis.args = [];\n\n\t\tthis.#parse();\n\t}\n\n\t/**\n\t * Parses the message content to extract command, alias, prefix, and arguments.\n\t * It also checks if the message mentions the bot.\n\t */\n\t#parse() {\n\t\tif (this.message.content.trim().startsWith(`<@${this.client.user.id}>`)) this.message.content = this.message.content.replace(`<@${this.client.user.id}>`, '').trimStart();\n\n\t\tconst [command, ...args] = this.message.content.split(this.client.handler.message.seperator || ' ');\n\n\t\tthis.client.commands.message.map(({ name, prefix, alias }) => {\n\t\t\tif (command.toLowerCase().endsWith(name.toLowerCase())) {\n\t\t\t\tthis.parsed.command = name;\n\n\t\t\t\tthis.parsed.alias = name;\n\t\t\t}\n\n\t\t\talias.map((a) => (command.toLowerCase().endsWith(a.toLowerCase()) ? (this.parsed.alias = a) : null));\n\n\t\t\tprefix.map((p) => (command.toLowerCase().startsWith(p.toLowerCase()) ? (this.parsed.prefix = p) : null));\n\t\t});\n\n\t\t(this.client.handler.message.prefix as string[])?.map((p) => (command.toLowerCase().startsWith(p.toLowerCase()) ? (this.parsed.prefix = p) : null));\n\n\t\tthis.parsed.mention = this.message.mentions.has(this.client.user.id);\n\n\t\tthis.args = args;\n\t}\n\n\t/**\n\t * Sends a message to the channel or edits an existing message if applicable.\n\t *\n\t * @param options - The content or options for the message to be sent or edited.\n\t * It can be a string, MessagePayload, MessageCreateOptions, or MessageEditOptions.\n\t * @returns The sent or edited message, or null if the message ID is not found in the cache.\n\t */\n\tasync send(options: string | MessagePayload | MessageCreateOptions | MessageEditOptions) {\n\t\tif (this.cache.has(this.message.id) && this.client.handler.message.handleEdits) {\n\t\t\tconst id = this.cache.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(options as string);\n\t\t\treturn msg;\n\t\t}\n\n\t\tconst msg = await (this.message.channel as TextChannel).send(options as string);\n\n\t\tthis.cache.set(this.message.id, msg.id);\n\n\t\treturn msg;\n\t}\n\n\t/**\n\t * Replies to the current message or edits an existing reply if applicable.\n\t *\n\t * @param options - The content or options for the reply message.\n\t * It can be a string, MessagePayload, or MessageReplyOptions.\n\t * @returns The sent or edited message, or null if the message ID is not found in the cache.\n\t */\n\tasync reply(options: string | MessagePayload | MessageReplyOptions) {\n\t\tif (this.cache.has(this.message.id) && this.client.handler.message.handleEdits) {\n\t\t\tconst id = this.cache.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(options as string);\n\n\t\t\treturn msg;\n\t\t}\n\n\t\tconst msg = await this.message.reply(options);\n\n\t\tthis.cache.set(this.message.id, msg.id);\n\n\t\treturn msg;\n\t}\n}\n","/** @format */\n\nimport { Message } from 'discord.js';\n\nimport { XernerxEventBuilder } from '../build/XernerxEventBuilder.js';\nimport { XernerxUser } from '../model/XernerxUser.js';\nimport { XernerxMessageUtil } from '../util/XernerxMessageUtil.js';\n\nexport class XernerxMessageCreateEvent extends XernerxEventBuilder {\n\tconstructor() {\n\t\tsuper('XernerxMessageCreateEvent', {\n\t\t\tname: 'messageCreate',\n\t\t\temitter: 'client',\n\t\t\tonce: false,\n\t\t});\n\t}\n\n\toverride async run(message: Message) {\n\t\tthis.client = message.client;\n\n\t\tmessage.user = new XernerxUser(message.client, message.author);\n\n\t\tmessage.util = new XernerxMessageUtil(this.client as Message['client'], message);\n\n\t\tif (!message.content) return;\n\t\tif (this.client.handler.message.ignore?.bots && message.author.bot) return;\n\t\tif (this.client.handler.message.ignore?.self && message.author.id === this.client.user?.id) return;\n\t\tif (this.client.handler.message.ignore?.system && message.system) return;\n\n\t\tif (!message.util.parsed.command) return;\n\n\t\tconst command = this.client.commands.message.get(message.util.parsed.command);\n\n\t\tif (!command) return;\n\n\t\tif (\n\t\t\tthis.client.handler.message.mention &&\n\t\t\t!message.util.parsed.mention &&\n\t\t\t!command?.prefix.includes(message.util.parsed.prefix as string) &&\n\t\t\t!this.client.handler.message.prefix?.includes(message.util.parsed.prefix as string)\n\t\t)\n\t\t\treturn;\n\n\t\t// validation\n\n\t\t// args\n\n\t\t// inhibitors\n\n\t\ttry {\n\t\t\tawait message.client.emit('commandStart', message, {}, command);\n\n\t\t\tawait command?.exec(message, message.util.args);\n\n\t\t\tawait message.client.emit('commandFinish', message, {}, command);\n\t\t} catch (error) {\n\t\t\tawait message.client.emit('commandError', message, {}, command, error as Error);\n\t\t}\n\t}\n}\n","/** @format */\n\nimport { Message } from 'discord.js';\n\nimport { XernerxEventBuilder } from '../build/XernerxEventBuilder.js';\nimport { XernerxUser } from '../model/XernerxUser.js';\nimport { XernerxMessageUtil } from '../util/XernerxMessageUtil.js';\n\nexport class XernerxMessageUpdateEvent extends XernerxEventBuilder {\n\tconstructor() {\n\t\tsuper('XernerxMessageUpdateEvent', {\n\t\t\tname: 'messageUpdate',\n\t\t\temitter: 'client',\n\t\t\tonce: false,\n\t\t});\n\t}\n\n\toverride async run(oldMessage: Message, message: Message) {\n\t\tthis.client = message.client;\n\n\t\tmessage.user = new XernerxUser(message.client, message.author);\n\n\t\tmessage.util = new XernerxMessageUtil(this.client as Message['client'], message);\n\n\t\tif (!message.content) return;\n\t\tif (this.client.handler.message.ignore?.bots && message.author.bot) return;\n\t\tif (this.client.handler.message.ignore?.self && message.author.id === this.client.user?.id) return;\n\t\tif (this.client.handler.message.ignore?.system && message.system) return;\n\n\t\tif (!message.util.parsed.command) return;\n\n\t\tconst command = this.client.commands.message.get(message.util.parsed.command);\n\n\t\tif (!command) return;\n\n\t\tif (\n\t\t\tthis.client.handler.message.mention &&\n\t\t\t!message.util.parsed.mention &&\n\t\t\t!command?.prefix.includes(message.util.parsed.prefix as string) &&\n\t\t\t!this.client.handler.message.prefix?.includes(message.util.parsed.prefix as string)\n\t\t)\n\t\t\treturn;\n\n\t\t// validation\n\n\t\t// args\n\n\t\t// inhibitors\n\n\t\ttry {\n\t\t\tawait message.client.emit('commandStart', message, {}, command);\n\n\t\t\tawait command?.exec(message, message.util.args);\n\n\t\t\tawait message.client.emit('commandFinish', message, {}, command);\n\t\t} catch (error) {\n\t\t\tawait message.client.emit('commandError', message, {}, command, error as Error);\n\t\t}\n\t}\n}\n","/** @format */\n\nimport { Message } from 'discord.js';\n\nimport { XernerxEventBuilder } from '../build/XernerxEventBuilder.js';\nimport { XernerxUser } from '../model/XernerxUser.js';\nimport { XernerxMessageUtil } from '../util/XernerxMessageUtil.js';\n\nexport class XernerxMessageDeleteEvent extends XernerxEventBuilder {\n\tconstructor() {\n\t\tsuper('XernerxMessageDeleteEvent', {\n\t\t\tname: 'messageDelete',\n\t\t\temitter: 'client',\n\t\t\tonce: false,\n\t\t});\n\t}\n\n\toverride async run(message: Message) {\n\t\tthis.client = message.client;\n\n\t\tmessage.user = new XernerxUser(message.client, message.author);\n\n\t\tmessage.util = new XernerxMessageUtil(this.client as Message['client'], message);\n\n\t\tif (!this.client.handler.message.handleDeletions) return;\n\n\t\tif (!this.client.cache.messages.has(message.id)) return;\n\n\t\tconst id = this.client.cache.messages.get(message.id);\n\n\t\tif (!id) return;\n\n\t\ttry {\n\t\t\tconst msg = await message.channel.messages.fetch(id);\n\n\t\t\tawait msg.delete();\n\t\t} catch (error) {\n\t\t\tawait this.client.emit('commandDelete', message, error as Error);\n\t\t}\n\t}\n}\n","/** @format */\n\nimport {\n\tClient,\n\tCollection,\n\tInteraction,\n\tInteractionEditReplyOptions,\n\tInteractionReplyOptions,\n\tMessageCreateOptions,\n\tMessageFlags,\n\tMessagePayload,\n\tRepliableInteraction,\n\tTextChannel,\n} from 'discord.js';\n\nimport { XernerxBaseUtil } from '../util/XernerxUtil.js';\nimport { XernerxClient } from '../client/XernerxClient.js';\nimport { XernerxError } from '../tools/XernerxError.js';\n\nexport class XernerxInteractionUtil extends XernerxBaseUtil {\n\tdeclare public readonly interaction: RepliableInteraction;\n\tdeclare public readonly cache: Collection<string, string>;\n\tdeclare public args: string[];\n\n\tconstructor(client: XernerxClient & Client<true>, interaction: Interaction) {\n\t\tsuper(client, interaction);\n\n\t\tthis.interaction = interaction as RepliableInteraction;\n\n\t\tthis.cache = this.client.cache.slash;\n\t}\n\n\t/**\n\t * Sends a message to the channel associated with the interaction.\n\t *\n\t * @param options - The content or options for the message to be sent. It can be a string, MessagePayload, or MessageCreateOptions.\n\t * @returns A promise that resolves to the sent message.\n\t * @throws {XernerxError} Throws an error if the options parameter is not provided.\n\t */\n\tpublic async send(options: string | MessagePayload | MessageCreateOptions) {\n\t\tif (!options) throw new XernerxError(`Can't send a message without content.`);\n\n\t\treturn await (this.interaction.channel as TextChannel).send(options);\n\t}\n\n\t/**\n\t * Replies to the interaction with the provided options.\n\t *\n\t * @param options - The content or options for the reply. It can be a string, MessagePayload, or InteractionEditReplyOptions.\n\t * @returns A promise that resolves to the sent message or the edited reply.\n\t * @throws {XernerxError} Throws an error if the options parameter is not provided.\n\t */\n\tpublic async reply(options: string | MessagePayload | InteractionEditReplyOptions) {\n\t\tif (!options) throw new XernerxError(`Can't send a message without options.`);\n\n\t\treturn await (this.interaction.replied || this.interaction.deferred ? this.interaction.editReply(options) : this.interaction.reply(options as InteractionReplyOptions));\n\t}\n\n\t/**\n\t * Sends a message to the channel associated with the interaction with componentsV2 flag.\n\t *\n\t * @param options - The options for the message to be sent, including content and other message properties.\n\t * @returns A promise that resolves to the sent message.\n\t */\n\tpublic async send2(options: MessageCreateOptions) {\n\t\toptions.flags = MessageFlags.IsComponentsV2;\n\n\t\treturn await this.send(options);\n\t}\n\n\t/**\n\t * Replies to the interaction with the provided options, using the componentsV2 flag.\n\t *\n\t * @param options - The options for the reply, including content and other message properties.\n\t * @returns A promise that resolves to the sent message or the edited reply.\n\t */\n\tpublic async reply2(options: InteractionEditReplyOptions) {\n\t\toptions.flags = MessageFlags.IsComponentsV2;\n\n\t\treturn await this.reply(options);\n\t}\n}\n","/** @format */\n\nimport { Interaction } from 'discord.js';\n\nimport { XernerxEventBuilder } from '../build/XernerxEventBuilder.js';\nimport { XernerxUser } from '../model/XernerxUser.js';\nimport { XernerxClient } from '../client/XernerxClient.js';\nimport { XernerxInteractionUtil } from '../util/XernerxInteractionUtil.js';\n\nexport class XernerxInteractionCreateEvent extends XernerxEventBuilder {\n\tconstructor() {\n\t\tsuper('XernerxInteractionCreateEvent', {\n\t\t\tname: 'interactionCreate',\n\t\t\temitter: 'client',\n\t\t\tonce: false,\n\t\t});\n\t}\n\n\toverride async run(interaction: Interaction) {\n\t\tthis.client = interaction.client as XernerxClient;\n\n\t\tinteraction.user = new XernerxUser(interaction.client, interaction.user);\n\n\t\tinteraction.util = new XernerxInteractionUtil(this.client as Interaction['client'], interaction);\n\n\t\tif (interaction.isChatInputCommand()) return await interaction.client.emit('slashCommandInteraction', interaction);\n\n\t\tif (interaction.isContextMenuCommand()) return await interaction.client.emit('contextCommandInteraction', interaction);\n\n\t\tif (interaction.isAnySelectMenu()) return await interaction.client.emit('selectMenuInteraction', interaction);\n\n\t\tif (interaction.isButton()) return await interaction.client.emit('buttonInteraction', interaction);\n\n\t\tif (interaction.isModalSubmit()) return await interaction.client.emit('modalInteraction', interaction);\n\t}\n}\n","/** @format */\n\nimport { Client, GatewayVersion, REST, Routes } from 'discord.js';\n\nimport { XernerxEventBuilder } from '../build/XernerxEventBuilder.js';\nimport { XernerxClient } from '../client/XernerxClient.js';\nimport { XernerxSlashCommandBuilder } from '../build/XernerxSlashCommandBuilder.js';\nimport { XernerxError } from '../tools/XernerxError.js';\nimport { XernerxSuccess } from '../tools/XernerxSuccess.js';\nimport { XernerxInfo } from '../tools/XernerxInfo.js';\nimport { XernerxUser } from '../model/XernerxUser.js';\n\nexport class XernerxClientReadyEvent extends XernerxEventBuilder {\n\tdeclare private readonly commands: {\n\t\tglobal: Array<XernerxSlashCommandBuilder>;\n\t\tlocal: Array<XernerxSlashCommandBuilder>;\n\t};\n\n\tconstructor() {\n\t\tsuper('XernerxClientReadyEvent', {\n\t\t\tname: 'clientReady',\n\t\t\temitter: 'client',\n\t\t\tonce: true,\n\t\t});\n\n\t\tthis.commands = {\n\t\t\tglobal: [],\n\t\t\tlocal: [],\n\t\t};\n\t}\n\n\toverride async run(client: XernerxClient) {\n\t\t// premium for owners\n\n\t\tif (client.settings.owners?.length) {\n\t\t\tconst owners = [];\n\n\t\t\tif (client.premium?.synchronize) new XernerxInfo(`Synchronizing entitlements for premium owners...`);\n\n\t\t\tfor (const owner of client.settings.owners) {\n\t\t\t\tconst user = await client.users.fetch(owner);\n\n\t\t\t\tnew XernerxUser(client as Client<true>, user).synchronize();\n\n\t\t\t\towners.push(user);\n\t\t\t}\n\n\t\t\tif (client.premium?.synchronize) new XernerxSuccess(`Successfully synchronized entitlements for ${owners.map((owner) => owner.username).join(',')}`);\n\t\t}\n\n\t\t// interaction commands\n\t\ttry {\n\t\t\tconst commands = [...client.commands.slash].map(([, command]) => command);\n\n\t\t\tif (!client.settings.global) {\n\t\t\t\tthis.commands.global = [];\n\t\t\t\tthis.commands.local = commands;\n\t\t\t} else {\n\t\t\t\tthis.commands.global = commands.filter((command) => command.deploy?.global);\n\t\t\t\tthis.commands.local = commands.filter((command) => !command.deploy?.global);\n\t\t\t}\n\n\t\t\tthis.put(client);\n\n\t\t\tnew XernerxSuccess(`Successfully deployed slash commands ${client.settings.global ? 'globally' : 'locally'}`);\n\t\t} catch (error) {\n\t\t\tnew XernerxError((error as Error).message);\n\t\t}\n\t}\n\n\tasync put(client: XernerxClient) {\n\t\tconst rest = new REST({ version: GatewayVersion }).setToken(client.token);\n\n\t\tif (this.commands.global.length) {\n\t\t\tif (!client.settings.global) return new XernerxInfo('Loading commands locally');\n\n\t\t\tawait rest.put(Routes.applicationCommands(client.user?.id as string), { body: this.commands.global.map((command) => command.data.toJSON()) });\n\t\t}\n\n\t\tif (this.commands.local.length) {\n\t\t\tconst guilds: { [index: string]: Array<XernerxSlashCommandBuilder> } = {};\n\n\t\t\tfor (const command of this.commands.local) {\n\t\t\t\t(command.deploy?.guilds as Array<string>)?.map((id) => (guilds[id] ? guilds[id].push(command) : (guilds[id] = [command])));\n\t\t\t}\n\n\t\t\tif (!client.settings.guildId?.length && !Object.keys(guilds).length) return new XernerxError('Cannot locally deploy slash commands without a guild ID');\n\n\t\t\t(client.settings.guildId as Array<string>).map((id: string) => (guilds[id] ? guilds[id] : (guilds[id] = this.commands.local)));\n\n\t\t\tfor (const [guildId, commands] of Object.entries(guilds)) {\n\t\t\t\tawait rest.put(Routes.applicationGuildCommands(client.user?.id as string, guildId), { body: commands.map((command) => command.data.toJSON()) });\n\t\t\t}\n\t\t}\n\t}\n}\n","/** @format */\n\nimport { ChatInputCommandInteraction } from 'discord.js';\nimport { XernerxSlashCommandBuilder } from '../build/XernerxSlashCommandBuilder.js';\n\nexport class XernerxInteractionArguments {\n\tdeclare private readonly interaction: ChatInputCommandInteraction;\n\tdeclare private readonly command: XernerxSlashCommandBuilder;\n\n\tconstructor(interaction: ChatInputCommandInteraction, command: XernerxSlashCommandBuilder) {\n\t\tthis.interaction = interaction;\n\n\t\tthis.command = command;\n\t}\n\n\t/**\n\t * Retrieves the options from the current interaction based on the command structure.\n\t *\n\t * This method processes the command's groups, subcommands, and options to extract\n\t * the relevant options from the interaction. It returns a record of option names\n\t * and their corresponding values from the interaction.\n\t *\n\t * @returns {Record<string, any> | null} A record of option names and values if available, otherwise null.\n\t */\n\toptions() {\n\t\tconst options: Record<string, any> = {};\n\n\t\tif (this.command.groups) {\n\t\t\tconst group = this.command.groups.find((group) => group.name === this.group());\n\n\t\t\tif (!group) return null;\n\n\t\t\tconst subcommand = group.subcommands.find((subcommand) => subcommand.name === this.subcommand());\n\n\t\t\tif (!subcommand) return null;\n\n\t\t\tfor (const option of subcommand.options || []) {\n\t\t\t\toptions[option.name] = this.interaction.options.get(option.name);\n\t\t\t}\n\t\t}\n\n\t\tif (this.command.subcommands) {\n\t\t\tconst subcommand = this.command.subcommands.find((subcommand) => subcommand.name === this.subcommand());\n\n\t\t\tif (!subcommand) return null;\n\n\t\t\tfor (const option of subcommand?.options || []) {\n\t\t\t\toptions[option.name] = this.interaction.options.get(option.name);\n\t\t\t}\n\t\t}\n\n\t\tif (this.command.options) {\n\t\t\tfor (const option of this.command.options) {\n\t\t\t\toptions[option.name] = this.interaction.options.get(option.name);\n\t\t\t}\n\t\t}\n\n\t\treturn options || null;\n\t}\n\n\t/**\n\t * Retrieves the name of the subcommand from the current interaction.\n\t *\n\t * This method attempts to extract the subcommand name from the interaction options.\n\t * If no subcommand is present or an error occurs, it returns null.\n\t *\n\t * @returns {string | null} The name of the subcommand if available, otherwise null.\n\t */\n\tsubcommand() {\n\t\ttry {\n\t\t\treturn this.interaction.options.getSubcommand();\n\t\t} catch {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\t/**\n\t * Retrieves the name of the subcommand group from the current interaction.\n\t *\n\t * This method attempts to extract the subcommand group name from the interaction options.\n\t * If no subcommand group is present or an error occurs, it returns null.\n\t *\n\t * @returns {string | null} The name of the subcommand group if available, otherwise null.\n\t */\n\tgroup() {\n\t\ttry {\n\t\t\treturn this.interaction.options.getSubcommandGroup();\n\t\t} catch {\n\t\t\treturn null;\n\t\t}\n\t}\n}\n","/** @format */\n\nimport { Interaction, Message } from 'discord.js';\n\nimport { XernerxClient } from '../client/XernerxClient.js';\nimport { XernerxMessageCommandBuilder } from '../build/XernerxMessageCommandBuilder.js';\nimport { XernerxSlashCommandBuilder } from '../build/XernerxSlashCommandBuilder.js';\n\nexport class XernerxBaseValidator {\n\tdeclare public readonly client: XernerxClient;\n\tdeclare public readonly interaction: Interaction | Message;\n\tdeclare public readonly command: XernerxSlashCommandBuilder | XernerxMessageCommandBuilder;\n\tdeclare public satisified: boolean;\n\n\tconstructor(interaction: Interaction | Message, command: XernerxSlashCommandBuilder | XernerxMessageCommandBuilder) {\n\t\tthis.client = interaction.client;\n\n\t\tthis.interaction = interaction;\n\n\t\tthis.command = command;\n\n\t\tthis.satisified = true;\n\t}\n\n\t/**\n\t * Checks if the command requires a premium subscription and validates the user's premium status.\n\t * If the user does not have a premium subscription, it emits an error and sets the validation status to false.\n\t *\n\t * @returns A promise that resolves when the premium check is complete.\n\t */\n\tpublic async premium() {\n\t\tif (!this.command.premium) return;\n\n\t\tconst premium = await this.interaction.user.premium('');\n\n\t\tif (!premium) {\n\t\t\tthis.emit({ type: 'premiumCommand', message: 'This command requires a premium subscription.', data: [] });\n\n\t\t\tthis.satisified = false;\n\t\t}\n\t}\n\n\t/**\n\t * Checks if the command is globally available or restricted to specific guilds.\n\t * If the command is not available in the current guild, it emits an error and sets the validation status to false.\n\t */\n\tpublic global() {\n\t\tif (!this.interaction.guild) return;\n\n\t\tif (!this.client.settings.global && !this.client.settings.guildId?.includes(this.interaction.guild?.id)) {\n\t\t\tthis.emit({ type: 'localCommand', message: 'This command is not available in this server.', data: this.client.settings.guildId as Array<string> });\n\n\t\t\tthis.satisified = false;\n\t\t}\n\t}\n\n\t/**\n\t * Emits an error event related to command execution.\n\t *\n\t * @param error - An object containing details about the error.\n\t * @param error.type - The type of error that occurred.\n\t * @param error.message - A descriptive message about the error.\n\t * @param error.data - Optional additional data related to the error.\n\t * @returns A promise that resolves when the error event has been emitted.\n\t */\n\tasync emit(error: { type: string; message: string; data?: Array<string> }) {\n\t\treturn await this.client.emit('commandBlock', this.interaction, this.command, error);\n\t}\n\n\t/**\n\t * Validates the command by checking its global availability and premium status.\n\t *\n\t * @returns A promise that resolves to a boolean indicating whether all validation checks are satisfied.\n\t */\n\tasync validate() {\n\t\tawait this.global();\n\n\t\tawait this.premium();\n\n\t\treturn this.satisified;\n\t}\n}\n","/** @format */\n\nimport { Interaction, Message } from 'discord.js';\nimport { XernerxBaseValidator } from './XernerxBaseValidator.js';\nimport { XernerxSlashCommandBuilder } from '../build/XernerxSlashCommandBuilder.js';\n\nexport class XernerxSlashCommandValidator extends XernerxBaseValidator {\n\tconstructor(interaction: Interaction | Message, command: XernerxSlashCommandBuilder) {\n\t\tsuper(interaction, command);\n\t}\n}\n","/** @format */\n\nimport { AutocompleteInteraction, ChatInputCommandInteraction } from 'discord.js';\n\nimport { XernerxEventBuilder } from '../build/XernerxEventBuilder.js';\nimport { XernerxInteractionArguments } from '../model/XernerxInteractionArguments.js';\nimport { XernerxSlashCommandValidator } from '../validators/XernerxSlashCommandValidator.js';\n\nexport class XernerxSlashCommandInteractionEvent extends XernerxEventBuilder {\n\tconstructor() {\n\t\tsuper('XernerxSlashCommandInteractionEvent', {\n\t\t\tname: 'slashCommandInteraction',\n\t\t\temitter: 'client',\n\t\t\tonce: false,\n\t\t});\n\t}\n\n\toverride async run(interaction: ChatInputCommandInteraction) {\n\t\tconst command = interaction.client.commands.slash.get(interaction.commandName);\n\n\t\tif (!command) return;\n\n\t\t// inhibitors\n\n\t\tnew Promise(async (resolve) => {\n\t\t\tif (interaction.isAutocomplete()) {\n\t\t\t\tconst focused = (interaction as AutocompleteInteraction).options.getFocused(true);\n\t\t\t\tconst options = (interaction as AutocompleteInteraction).options;\n\n\t\t\t\tawait command.autocomplete({ interaction, focused, options });\n\t\t\t} else resolve(true);\n\t\t}).then(async () => {\n\t\t\tconst args = new XernerxInteractionArguments(interaction, command);\n\t\t\tconst options = { options: args.options(), subcommand: args.subcommand(), group: args.subcommand() };\n\n\t\t\ttry {\n\t\t\t\tawait interaction.client.emit('commandStart', interaction, options, command);\n\n\t\t\t\tconst validation = new XernerxSlashCommandValidator(interaction, command);\n\n\t\t\t\tif (!(await validation.validate())) return;\n\n\t\t\t\tif (command.defer) await interaction.deferReply();\n\n\t\t\t\tif (await command.conditions({ interaction, ...options, command })) return;\n\n\t\t\t\tawait command.exec({ interaction, ...options, command });\n\n\t\t\t\tawait interaction.client.emit('commandFinish', interaction, options, command);\n\t\t\t} catch (error) {\n\t\t\t\tawait interaction.client.emit('commandError', interaction, options, command, error as Error);\n\t\t\t}\n\t\t});\n\t}\n}\n","/** @format */\n\nimport { XernerxEventBuilder } from '../build/XernerxEventBuilder.js';\n\nexport class XernerxEntitlementCreateEvent extends XernerxEventBuilder {\n\tconstructor() {\n\t\tsuper('XernerxEntitlementCreateEvent', {\n\t\t\tname: 'entitlementCreate',\n\t\t\temitter: 'client',\n\t\t\tonce: false,\n\t\t});\n\t}\n\n\toverride async run(a: any, b: any, c: any) {}\n}\n","/** @format */\n\nimport sharpyy from 'sharpyy';\nimport { z } from 'zod';\n\nimport { XernerxClient } from '../client/XernerxClient.js';\nimport { Handler } from './Handler.js';\nimport { XernerxMessageCreateEvent } from '../events/messageCreate.js';\nimport { XernerxMessageUpdateEvent } from '../events/messageUpdate.js';\nimport { XernerxMessageDeleteEvent } from '../events/messageDelete.js';\nimport { XernerxInteractionCreateEvent } from '../events/interactionCreate.js';\nimport { XernerxSuccess } from '../tools/XernerxSuccess.js';\nimport { XernerxWarn } from '../tools/XernerxWarn.js';\nimport { XernerxError } from '../tools/XernerxError.js';\nimport { XernerxMessageCommandHandlerOptions } from '../interfaces/XernerxMessageCommandHandlerOptions.js';\nimport { XernerxSlashCommandHandlerOptions } from '../interfaces/XernerxSlashCommandHandlerOptions.js';\nimport { XernerxEventBuilder } from '../build/XernerxEventBuilder.js';\nimport { XernerxClientReadyEvent } from '../events/clientReady.js';\nimport { XernerxSlashCommandInteractionEvent } from '../events/slashCommandInteraction.js';\nimport { XernerxEntitlementCreateEvent } from '../events/entitlementCreate.js';\n\nexport class CommandHandler extends Handler {\n\tconstructor(client: XernerxClient) {\n\t\tsuper(client);\n\n\t\tthis.loadEvents(XernerxEntitlementCreateEvent, XernerxClientReadyEvent);\n\t}\n\n\t/**\n\t * Loads a message command from a specified file.\n\t *\n\t * @param file - The path to the file containing the message command to be loaded.\n\t * @returns A promise that resolves when the file has been successfully loaded.\n\t */\n\tpublic async loadMessageCommand(file: string) {\n\t\treturn await this.loadFile(file);\n\t}\n\n\t/**\n\t * Loads message commands based on the provided options.\n\t *\n\t * @param options - Configuration options for loading message commands, including directory, prefix, mention, separator, handleEdits, handleDeletions, and ignore settings.\n\t * @returns A promise that resolves when all message commands have been successfully loaded.\n\t */\n\tpublic async loadMessageCommands(options: XernerxMessageCommandHandlerOptions) {\n\t\tconst config = z\n\t\t\t.object({\n\t\t\t\tdirectory: z.string(),\n\t\t\t\tprefix: z.union([z.string(), z.array(z.string())]).default([]),\n\t\t\t\tmention: z.boolean().default(false),\n\t\t\t\tseperator: z.string().default(' '),\n\t\t\t\thandleEdits: z.boolean().default(false),\n\t\t\t\thandleDeletions: z.boolean().default(false),\n\t\t\t\tignore: z\n\t\t\t\t\t.object({\n\t\t\t\t\t\tsystem: z.boolean().default(true),\n\t\t\t\t\t\tbots: z.boolean().default(true),\n\t\t\t\t\t\tself: z.boolean().default(true),\n\t\t\t\t\t})\n\t\t\t\t\t.default({ system: true, bots: true, self: true }),\n\t\t\t})\n\t\t\t.parse(options);\n\n\t\ttypeof config.prefix == 'string' ? (config.prefix = [config.prefix]) : config.prefix;\n\n\t\tthis.client.handler.message = config;\n\n\t\tconst files = this.loadFiles(config.directory);\n\n\t\tthis.loadEvents(XernerxMessageCreateEvent, XernerxMessageUpdateEvent, XernerxMessageDeleteEvent);\n\n\t\tif (!this.client.options.intents.has('GuildMessages')) new XernerxError(`Missing ${sharpyy('GuildMessages', 'txYellow')} intent, message commands will not work.`);\n\t\tif (!this.client.options.intents.has('MessageContent') && !config.mention)\n\t\t\tnew XernerxError(`Missing ${sharpyy('MessageContent', 'txYellow')} intent and bot mention is turned off, message commands will not work.`);\n\t\tif (!this.client.options.intents.has('MessageContent') && config.mention)\n\t\t\tnew XernerxWarn(`Missing ${sharpyy('MessageContent', 'txYellow')} intent, message commands can only be triggered by @mention.`);\n\n\t\tfor (const file of files) {\n\t\t\tawait this.loadMessageCommand(file);\n\t\t}\n\n\t\tnew XernerxSuccess(`Loaded message commands: ${this.client.commands.message.map((command) => sharpyy(command.id, 'txYellow')).join(', ')}`);\n\t}\n\n\t/**\n\t * Loads a slash command from a specified file.\n\t *\n\t * @param file - The path to the file containing the slash command to be loaded.\n\t * @returns A promise that resolves when the file has been successfully loaded.\n\t */\n\tpublic async loadSlashCommand(file: string) {\n\t\treturn await this.loadFile(file);\n\t}\n\n\t/**\n\t * Loads slash commands based on the provided options.\n\t *\n\t * @param options - Configuration options for loading slash commands, including the directory where the command files are located.\n\t * @returns A promise that resolves when all slash commands have been successfully loaded.\n\t */\n\tpublic async loadSlashCommands(options: XernerxSlashCommandHandlerOptions) {\n\t\tconst config = z\n\t\t\t.object({\n\t\t\t\tdirectory: z.string(),\n\t\t\t})\n\t\t\t.parse(options);\n\n\t\tthis.client.handler.slash = config;\n\n\t\tconst files = this.loadFiles(config.directory);\n\n\t\tfor (const file of files) {\n\t\t\tawait this.loadSlashCommand(file);\n\t\t}\n\n\t\tthis.loadEvents(XernerxInteractionCreateEvent, XernerxSlashCommandInteractionEvent);\n\n\t\tnew XernerxSuccess(`Loaded slash commands: ${this.client.commands.slash.map((command) => sharpyy(command.id, 'txYellow')).join(', ')}`);\n\t}\n\n\t/**\n\t * Loads and imports event files based on the provided event classes.\n\t *\n\t * @param args - An array of event classes extending XernerxEventBuilder. Each class represents an event to be loaded and imported.\n\t * @returns A promise that resolves when all specified events have been successfully imported.\n\t */\n\tprivate async loadEvents(...args: Array<typeof XernerxEventBuilder>) {\n\t\tfor (const event of args) {\n\t\t\tthis.importFile(new event('', { name: '' }));\n\t\t}\n\t}\n}\n","/** @format */\n\nimport { Client, ClientOptions, Collection, RESTGetAPISKUsResult } from 'discord.js';\nimport sharpyy from 'sharpyy';\nimport { ClusterClient, DjsDiscordClient, getInfo } from 'discord-hybrid-sharding';\nimport z from 'zod';\n\nimport { XernerxClientOptions } from '../interfaces/XernerxClientOptions.js';\nimport { XernerxInfo } from '../tools/XernerxInfo.js';\nimport { XernerxClientStats } from '../interfaces/XernerxClientStats.js';\nimport { XernerxInitial } from '../tools/XernerxInitial.js';\nimport { XernerxError } from '../tools/XernerxError.js';\nimport { XernerxSuccess } from '../tools/XernerxSuccess.js';\nimport { XernerxMonitisation } from '../model/XernerxMonitisation.js';\nimport { EventHandler } from '../handler/EventHandler.js';\nimport { XernerxEventBuilder } from '../build/XernerxEventBuilder.js';\nimport { CommandHandler } from '../handler/CommandHandler.js';\nimport { XernerxMessageCommandBuilder } from '../build/XernerxMessageCommandBuilder.js';\nimport { XernerxMessageCommandHandlerOptions } from '../interfaces/XernerxMessageCommandHandlerOptions.js';\nimport { XernerxSlashCommandHandlerOptions } from '../interfaces/XernerxSlashCommandHandlerOptions.js';\nimport { XernerxSlashCommandBuilder } from '../build/XernerxSlashCommandBuilder.js';\n\nexport class XernerxClient extends Client {\n\t// Config\n\tdeclare public readonly token: string;\n\tdeclare public readonly sharded: boolean;\n\tdeclare public readonly settings: XernerxClientOptions;\n\tdeclare public readonly premium: {\n\t\towners?: boolean;\n\t\tconsume?: boolean;\n\t\tsynchronize?: boolean;\n\t};\n\n\t// Setup\n\tdeclare public readonly monitisation: { skus: RESTGetAPISKUsResult };\n\tdeclare public readonly stats: XernerxClientStats;\n\tdeclare public readonly cluster: ClusterClient | null;\n\tdeclare public readonly cache: { messages: Collection<string, string>; slash: Collection<string, string> };\n\tdeclare public readonly handler: { message: XernerxMessageCommandHandlerOptions; slash: XernerxSlashCommandHandlerOptions };\n\n\t// Collections\n\tdeclare public readonly commands: {\n\t\tmessage: Collection<string, XernerxMessageCommandBuilder>;\n\t\tslash: Collection<string, XernerxSlashCommandBuilder>;\n\t};\n\tdeclare public readonly events: Collection<string, XernerxEventBuilder>;\n\n\t// Handlers\n\tdeclare public readonly modules: { eventHandler: EventHandler; commandHandler: CommandHandler };\n\n\tconstructor(options: ClientOptions & XernerxClientOptions) {\n\t\ttry {\n\t\t\toptions.shards = getInfo().SHARD_LIST;\n\t\t\toptions.shardCount = getInfo().TOTAL_SHARDS;\n\t\t} catch {\n\t\t\tnew XernerxInitial('Client');\n\t\t}\n\n\t\tsuper(options);\n\n\t\tthis.settings = z\n\t\t\t.object({\n\t\t\t\ttoken: z.string(),\n\t\t\t\tglobal: z.boolean().default(false),\n\t\t\t\tguildId: z.string().or(z.array(z.string()).max(5)).default([]),\n\t\t\t\towners: z.string().or(z.array(z.string()).max(5)).default([]),\n\t\t\t\tpremium: z\n\t\t\t\t\t.object({\n\t\t\t\t\t\towners: z.boolean().default(true),\n\t\t\t\t\t\tconsume: z.boolean().default(true),\n\t\t\t\t\t\tsynchronize: z.boolean().default(true),\n\t\t\t\t\t})\n\t\t\t\t\t.optional(),\n\t\t\t})\n\t\t\t.parse(options);\n\n\t\tthis.sharded = options.shardCount ? true : false;\n\t\tthis.token = options.token as string;\n\n\t\tthis.settings.guildId = typeof this.settings.guildId == 'string' ? [this.settings.guildId] : this.settings.guildId;\n\t\tthis.settings.owners = typeof this.settings.owners == 'string' ? [this.settings.owners] : this.settings.owners;\n\n\t\tthis.premium = this.settings.premium || {\n\t\t\towners: true,\n\t\t\tconsume: true,\n\t\t\tsynchronize: true,\n\t\t};\n\n\t\tdelete this.settings.premium;\n\n\t\tthis.monitisation = { skus: [] };\n\n\t\tthis.stats = {\n\t\t\tonlineSince: Number(new Date()),\n\t\t\tguildCount: null,\n\t\t\tuserCount: null,\n\t\t\tshardCount: null,\n\t\t\tvoteCount: null,\n\t\t\tshard: null,\n\t\t};\n\n\t\tthis.cache = { messages: new Collection(), slash: new Collection() };\n\n\t\tthis.handler = {\n\t\t\tmessage: { directory: null },\n\t\t\tslash: { directory: null },\n\t\t};\n\n\t\tthis.commands = { message: new Collection(), slash: new Collection() };\n\n\t\tthis.events = new Collection();\n\n\t\tif (this.sharded) this.cluster = new ClusterClient(this as unknown as DjsDiscordClient);\n\n\t\tthis.modules = { eventHandler: new EventHandler(this), commandHandler: new CommandHandler(this) };\n\t}\n\n\t/**\n\t * Connects the client to Discord and initializes various client statistics and handlers.\n\t *\n\t * @returns A promise that resolves when the client successfully logs in, or rejects with an error message if the login fails.\n\t */\n\tasync connect() {\n\t\tnew XernerxInfo(`${this.cluster ? `${sharpyy(`Shard ${this.cluster.id}`, 'txCyan')} | ` : ''}Connecting...`);\n\n\t\tthis.on('clientReady', async (client) => {\n\t\t\tthis.monitisation.skus = await new XernerxMonitisation(client).sku();\n\n\t\t\t/** When the client is sharded */\n\t\t\tif (this.sharded && this.cluster) {\n\t\t\t\tthis.stats.shard = {\n\t\t\t\t\tshardId: this.cluster.id,\n\t\t\t\t\tonlineSince: Number(new Date()),\n\t\t\t\t\tguildCount: null,\n\t\t\t\t\tuserCount: null,\n\t\t\t\t};\n\n\t\t\t\tsetInterval(async () => {\n\t\t\t\t\tif (!this.cluster || !this.stats.shard) return;\n\n\t\t\t\t\tthis.stats.guildCount = (await this.cluster.broadcastEval('this.guilds.cache.size')).reduce((a, b) => a + b, 0);\n\t\t\t\t\tthis.stats.userCount = (await this.cluster.broadcastEval('this.guilds.cache.map((a) => a.memberCount).reduce((a, b) => a + b, 0)')).reduce((a, b) => a + b, 0);\n\t\t\t\t\tthis.stats.shardCount = getInfo().TOTAL_SHARDS;\n\t\t\t\t\tthis.stats.shard.guildCount = client.guilds.cache.size;\n\t\t\t\t\tthis.stats.voteCount = 0;\n\t\t\t\t\tthis.stats.shard.userCount = client.guilds.cache.map((a) => a.memberCount).reduce((a, b) => a + b, 0);\n\t\t\t\t}, 1000);\n\n\t\t\t\tawait new Promise((resolve) => setTimeout(resolve, 2000));\n\n\t\t\t\tnew XernerxSuccess(\n\t\t\t\t\t`${sharpyy(`Shard ${this.cluster.id}`, 'txCyan')} | Signed in as ${sharpyy(client.user?.tag, 'txBlue')}, watching ${sharpyy(String(this.stats.shard?.guildCount?.toLocaleString()), 'txCyan')} guilds and users: ${sharpyy(String(this.stats.shard?.userCount?.toLocaleString()), 'txCyan')}`\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\t/** When the client is standalone */\n\t\t\t\tsetInterval(() => {\n\t\t\t\t\tthis.stats.guildCount = client.guilds.cache.size;\n\t\t\t\t\tthis.stats.userCount = client.guilds.cache.map((a) => a.memberCount).reduce((a, b) => a + b, 0);\n\t\t\t\t\tthis.stats.voteCount = 0;\n\t\t\t\t\tthis.stats.shardCount = 0;\n\t\t\t\t}, 1000);\n\n\t\t\t\tawait new Promise((resolve) => setTimeout(resolve, 2000));\n\n\t\t\t\tnew XernerxSuccess(\n\t\t\t\t\t`Signed in as ${sharpyy(client.user?.tag, 'txBlue')}, watching ${sharpyy(String(this.stats.guildCount?.toLocaleString()), 'txCyan')} guilds and users: ${sharpyy(String(this.stats.userCount?.toLocaleString()), 'txCyan')}`\n\t\t\t\t);\n\t\t\t}\n\t\t});\n\n\t\treturn await this.login(this.token).catch((error) => new XernerxError(error.message, 1));\n\t}\n}\n","/** @format */\n\nimport { z } from 'zod';\n\nimport { XernerxWarn } from '../tools/XernerxWarn.js';\nimport { XernerxMessageCommandBuilderOptions } from '../interfaces/XernerxMessageCommandBuilderOptions.js';\nimport { XernerxBaseBuilder } from './XernerxBaseBuilder.js';\n\nexport class XernerxMessageCommandBuilder extends XernerxBaseBuilder {\n\tdeclare public readonly filetype: 'XernerxMessageCommand';\n\tdeclare public readonly name: string;\n\tdeclare public readonly description: string;\n\tdeclare public readonly alias: string[];\n\tdeclare public readonly prefix: string[];\n\tdeclare public readonly premium: Array<string>;\n\n\t/**\n\t * Constructs an instance of XernerxMessageCommandBuilder.\n\t *\n\t * @param id - A unique identifier for the command.\n\t * @param options - An object containing configuration options for the command.\n\t * @param options.name - The name of the command.\n\t * @param options.alias - An alias or an array of aliases for the command.\n\t * @param options.prefix - A prefix or an array of prefixes for the command.\n\t * @param options.premium - An array indicating premium features or settings.\n\t */\n\tconstructor(id: string, options: XernerxMessageCommandBuilderOptions) {\n\t\tsuper(id, options);\n\n\t\toptions = z\n\t\t\t.object({\n\t\t\t\tname: z.string(),\n\t\t\t\talias: z.union([z.string(), z.array(z.string())]).default([]),\n\t\t\t\tprefix: z.union([z.string(), z.array(z.string())]).default([]),\n\t\t\t\tpremium: z.any(),\n\t\t\t})\n\t\t\t.parse(options);\n\n\t\tthis.name = options.name;\n\n\t\tthis.alias = typeof options.alias == 'string' ? [options.alias] : (options.alias as Array<string>);\n\n\t\tthis.prefix = typeof options.prefix == 'string' ? [options.prefix] : (options.prefix as Array<string>);\n\n\t\tthis.premium = options.premium;\n\n\t\tthis.filetype = 'XernerxMessageCommand';\n\t}\n\n\t/**\n\t * Executes the command logic. This function is intended to be overridden by subclasses.\n\t * If not overridden, it will log a warning indicating that the command will not respond.\n\t *\n\t * @param args - A variable number of arguments that can be passed to the command execution.\n\t * @returns A promise that resolves to any value, depending on the implementation.\n\t */\n\tpublic async exec(...args: any[]): Promise<any> {\n\t\tnew XernerxWarn(`${this.id} has no exec function, command will not respond.`);\n\t}\n}\n","/** @format */\n\nimport { z } from 'zod';\nimport {\n\tApplicationIntegrationType,\n\tChannelType,\n\tInteractionContextType,\n\tLocale,\n\tPermissionFlags,\n\tPermissionFlagsBits,\n\tPermissions,\n\tRestOrArray,\n\tSlashCommandBooleanOption,\n\tSlashCommandBuilder,\n\tSlashCommandChannelOption,\n\tSlashCommandIntegerOption,\n\tSlashCommandMentionableOption,\n\tSlashCommandNumberOption,\n\tSlashCommandRoleOption,\n\tSlashCommandStringOption,\n\tSlashCommandSubcommandBuilder,\n\tSlashCommandSubcommandGroupBuilder,\n\tSlashCommandUserOption,\n} from 'discord.js';\n\nimport { XernerxWarn } from '../tools/XernerxWarn.js';\nimport {\n\tXernerxSlashCommandBuilderGroup,\n\tXernerxSlashCommandBuilderOption,\n\tXernerxSlashCommandBuilderOptions,\n\tXernerxSlashCommandBuilderSubcommand,\n} from '../interfaces/XernerxSlashCommandBuilderOptions.js';\nimport { XernerxBaseBuilder } from './XernerxBaseBuilder.js';\nimport { XernerxSlashCommand, XernerxSlashCommandAutocomplete } from '../interfaces/XernerxSlashCommand.js';\n\nexport class XernerxSlashCommandBuilder extends XernerxBaseBuilder {\n\t// Discord\n\tdeclare public readonly name: string;\n\tdeclare public readonly description: string;\n\tdeclare public readonly integration: RestOrArray<InteractionContextType>;\n\tdeclare public readonly data: SlashCommandBuilder;\n\tdeclare public readonly options: Array<XernerxSlashCommandBuilderOption>;\n\tdeclare public readonly subcommands: Array<XernerxSlashCommandBuilderSubcommand>;\n\tdeclare public readonly groups: Array<XernerxSlashCommandBuilderGroup>;\n\n\t// Xernerx\n\tdeclare public readonly premium?: boolean;\n\tdeclare public readonly defer?: boolean;\n\tdeclare public readonly deploy?: { global?: boolean; guilds?: Array<string> | string };\n\tdeclare public readonly info?: string;\n\tdeclare public readonly usage?: string;\n\tdeclare public readonly category?: string;\n\tdeclare public readonly cooldown?: number;\n\tdeclare public readonly permissions: { client: Permissions | number | bigint | null; user: Permissions | number | bigint | null };\n\tdeclare public readonly strict?: { owner?: boolean; users?: Array<string>; channels?: Array<string>; guilds?: Array<string>; types?: ChannelType };\n\tdeclare public readonly ignore?: { owner?: boolean; users?: Array<string>; channels?: Array<string>; guilds?: Array<string>; types?: ChannelType };\n\n\t// Static\n\tdeclare public readonly filetype: 'XernerxSlashCommand';\n\n\tconstructor(id: string, options: XernerxSlashCommandBuilderOptions) {\n\t\tsuper(id, options);\n\n\t\toptions = z\n\t\t\t.object({\n\t\t\t\t// Discord\n\t\t\t\tname: z.string(),\n\t\t\t\tlocales: z.record(z.string(), z.object({ name: z.string(), description: z.string() })).optional(),\n\t\t\t\tdescription: z.string(),\n\t\t\t\tcontexts: z.array(z.custom<keyof typeof InteractionContextType>()).default(['Guild']),\n\t\t\t\tintegration: z.array(z.custom<keyof typeof ApplicationIntegrationType>()).default(['GuildInstall']),\n\t\t\t\tnsfw: z.boolean().default(false),\n\t\t\t\toptions: z.any(),\n\t\t\t\tsubcommands: z.any(),\n\t\t\t\tgroups: z.any(),\n\n\t\t\t\t// Xernerx\n\t\t\t\tpremium: z.boolean().default(false),\n\t\t\t\tdefer: z.boolean().default(false),\n\t\t\t\tdeploy: z.object({ global: z.boolean().default(true), guilds: z.string().or(z.array(z.string())).default([]) }).optional(),\n\t\t\t\tinfo: z.string().optional(),\n\t\t\t\tusage: z.string().optional(),\n\t\t\t\tcategory: z.string().optional(),\n\t\t\t\tcooldown: z.number().min(0).default(0),\n\t\t\t\tstrict: z\n\t\t\t\t\t.object({\n\t\t\t\t\t\towner: z.boolean().default(false),\n\t\t\t\t\t\tusers: z.array(z.string()).default([]),\n\t\t\t\t\t\tchannels: z.array(z.string()).default([]),\n\t\t\t\t\t\tguilds: z.array(z.string()).default([]),\n\t\t\t\t\t\ttypes: z.enum(ChannelType).optional(),\n\t\t\t\t\t})\n\t\t\t\t\t.optional(),\n\t\t\t\tignore: z\n\t\t\t\t\t.object({\n\t\t\t\t\t\towner: z.boolean().default(false),\n\t\t\t\t\t\tusers: z.array(z.string()).default([]),\n\t\t\t\t\t\tchannels: z.array(z.string()).default([]),\n\t\t\t\t\t\tguilds: z.array(z.string()).default([]),\n\t\t\t\t\t\ttypes: z.enum(ChannelType).optional(),\n\t\t\t\t\t})\n\t\t\t\t\t.optional(),\n\t\t\t\tpermissions: z\n\t\t\t\t\t.object({\n\t\t\t\t\t\tclient: z\n\t\t\t\t\t\t\t.union([z.array(z.custom<keyof PermissionFlags>()), z.number(), z.bigint()])\n\t\t\t\t\t\t\t.nullable()\n\t\t\t\t\t\t\t.default(null),\n\t\t\t\t\t\tuser: z\n\t\t\t\t\t\t\t.union([z.array(z.custom<keyof PermissionFlags>()), z.number(), z.bigint()])\n\t\t\t\t\t\t\t.nullable()\n\t\t\t\t\t\t\t.default(null),\n\t\t\t\t\t})\n\t\t\t\t\t.default({ client: null, user: null }),\n\t\t\t})\n\t\t\t.parse(options);\n\n\t\tthis.name = options.name;\n\n\t\tthis.description = options.description;\n\n\t\tthis.info = options.info;\n\n\t\tthis.usage = options.usage;\n\n\t\tthis.category = options.category;\n\n\t\tthis.cooldown = options.cooldown;\n\n\t\tthis.premium = options.premium || false;\n\n\t\tthis.defer = options.defer;\n\n\t\tthis.deploy = {\n\t\t\tglobal: options.deploy?.global ?? true,\n\t\t\tguilds: typeof options.deploy?.guilds == 'string' ? [options.deploy.guilds] : options.deploy?.guilds || [],\n\t\t};\n\n\t\tthis.filetype = 'XernerxSlashCommand';\n\n\t\tthis.permissions = options.permissions as typeof this.permissions;\n\n\t\tthis.strict = options.strict;\n\n\t\tthis.ignore = options.ignore;\n\n\t\tthis.data = new SlashCommandBuilder();\n\n\t\tthis.data.setName(this.name);\n\n\t\tthis.data.setDescription(this.description);\n\n\t\tthis.data.setContexts(...(options.contexts?.map((context) => InteractionContextType[context as keyof typeof InteractionContextType]) || [InteractionContextType.Guild]));\n\n\t\tthis.data.setIntegrationTypes(\n\t\t\t...(options.integration?.map((integration) => ApplicationIntegrationType[integration as keyof typeof ApplicationIntegrationType]) || [ApplicationIntegrationType.GuildInstall])\n\t\t);\n\n\t\tif (Array.isArray(options.permissions?.user))\n\t\t\tthis.data.setDefaultMemberPermissions(options.permissions?.user?.map((permission) => PermissionFlagsBits[permission as keyof PermissionFlags]).reduce((a, b) => (a += b)));\n\t\telse this.data.setDefaultMemberPermissions(options.permissions?.user || null);\n\n\t\tthis.data.setNSFW(options.nsfw || false);\n\n\t\tfor (const locale of Object.entries(options.locales || [])) {\n\t\t\tthis.data.setNameLocalization(locale[0] as Locale, locale[1].name);\n\t\t\tthis.data.setDescriptionLocalization(locale[0] as Locale, locale[1].description);\n\t\t}\n\n\t\tif (options.options && options?.options?.length > 0) {\n\t\t\tthis.addArguments(this.data, options.options);\n\n\t\t\tthis.options = options.options;\n\t\t}\n\n\t\tif (options.subcommands && options?.subcommands?.length > 0) {\n\t\t\tthis.addSubcommands(this.data, options.subcommands);\n\n\t\t\tthis.subcommands = options.subcommands;\n\t\t}\n\n\t\tif (options.groups && options?.groups?.length > 0) {\n\t\t\tthis.addSubcommandGroups(options.groups);\n\n\t\t\tthis.groups = options.groups;\n\t\t}\n\n\t\tthis.client = this.client;\n\t}\n\n\t/**\n\t * Handles the autocomplete functionality for a slash command.\n\t *\n\t * @param args - The arguments for the autocomplete function, which include the context and options for the command.\n\t * @returns A promise that resolves to either void or any value, depending on the implementation.\n\t */\n\tpublic async autocomplete(args: XernerxSlashCommandAutocomplete): Promise<void | any> {}\n\n\t/**\n\t * Evaluates conditions for executing a slash command.\n\t *\n\t * @param args - The arguments for the conditions function, which include the context and options for the command.\n\t * @returns A promise that resolves to either void or any value, depending on the implementation.\n\t */\n\tpublic async conditions(args: XernerxSlashCommand): Promise<void | any> {}\n\n\t/**\n\t * Executes the slash command.\n\t *\n\t * @param args - The arguments for the exec function, which include the context and options for the command.\n\t * @returns A promise that resolves to either void or any value, depending on the implementation.\n\t */\n\tpublic async exec(args: XernerxSlashCommand): Promise<void | any> {\n\t\tnew XernerxWarn(`${this.id} has no exec function, command will not respond.`);\n\t}\n\n\tprivate addArguments(command: SlashCommandBuilder | SlashCommandSubcommandBuilder, args: Array<XernerxSlashCommandBuilderOption>) {\n\t\tfor (const argument of args) {\n\t\t\tlet slashCommandArgumentType: string = `${argument.type.charAt(0).toUpperCase()}${argument.type.slice(1).toLowerCase()}`;\n\n\t\t\t(command[`add${slashCommandArgumentType as UpperCasedSlashCommandArgumentOptions}Option`] as Function)((option: SlashCommandOption) => {\n\t\t\t\toption\n\t\t\t\t\t.setName(argument.name)\n\t\t\t\t\t.setDescription(argument.description)\n\t\t\t\t\t.setRequired(argument.required || false);\n\n\t\t\t\tfor (const locale of Object.entries(argument.locales || [])) {\n\t\t\t\t\toption.setNameLocalization(locale[0] as Locale, locale[1].name);\n\t\t\t\t\toption.setDescriptionLocalization(locale[0] as Locale, locale[1].description);\n\t\t\t\t}\n\n\t\t\t\tif (slashCommandArgumentType === 'String') {\n\t\t\t\t\tif (argument.choices) {\n\t\t\t\t\t\tfor (const choice of argument.choices) {\n\t\t\t\t\t\t\tconst locales = choice?.locales;\n\n\t\t\t\t\t\t\t(option as SlashCommandStringOption).addChoices({ ...choice, name_localizations: locales });\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (argument.maxLength) (option as SlashCommandStringOption).setMaxLength(argument.maxLength);\n\t\t\t\t\tif (argument.minLength) (option as SlashCommandStringOption).setMinLength(argument.minLength);\n\n\t\t\t\t\t(option as SlashCommandStringOption).setAutocomplete(argument.autocomplete || false);\n\t\t\t\t}\n\n\t\t\t\treturn option;\n\t\t\t});\n\t\t}\n\t}\n\n\tprivate addSubcommands(method: SlashCommandBuilder | SlashCommandSubcommandGroupBuilder, subcommands: Array<XernerxSlashCommandBuilderSubcommand>) {\n\t\tfor (const subcommand of subcommands) {\n\t\t\tlet sub = new SlashCommandSubcommandBuilder().setName(subcommand.name).setDescription(subcommand.description);\n\n\t\t\tfor (const locale of Object.entries(subcommand.locales || [])) {\n\t\t\t\tsub.setNameLocalization(locale[0] as Locale, locale[1].name);\n\t\t\t\tsub.setDescriptionLocalization(locale[0] as Locale, locale[1].description);\n\t\t\t}\n\n\t\t\tif (subcommand.options && subcommand?.options?.length > 0) this.addArguments(sub, subcommand.options);\n\n\t\t\tmethod.addSubcommand(sub);\n\t\t}\n\t}\n\n\t/**\n\t * Adds subcommand groups to the slash command builder.\n\t *\n\t * @param groups - An array of subcommand groups to be added. Each group contains a name, description, locales, and subcommands.\n\t */\n\tprivate addSubcommandGroups(groups: Array<XernerxSlashCommandBuilderGroup>) {\n\t\tfor (const group of groups) {\n\t\t\tlet subcommandGroup = new SlashCommandSubcommandGroupBuilder().setName(group.name).setDescription(group.description);\n\n\t\t\tfor (const locale of Object.entries(group.locales || [])) {\n\t\t\t\tsubcommandGroup.setNameLocalization(locale[0] as Locale, locale[1].name);\n\t\t\t\tsubcommandGroup.setDescriptionLocalization(locale[0] as Locale, locale[1].description);\n\t\t\t}\n\n\t\t\tif (group.subcommands?.length > 0) this.addSubcommands(subcommandGroup, group.subcommands);\n\n\t\t\tthis.data.addSubcommandGroup(subcommandGroup);\n\t\t}\n\t}\n}\n\ntype UpperCasedSlashCommandArgumentOptions = 'Attachment' | 'Boolean' | 'Channel' | 'Integer' | 'Mentionable' | 'Number' | 'Role' | 'String' | 'User';\ntype SlashCommandOption = SlashCommandOptionChoices | SlashCommandBooleanOption | SlashCommandUserOption | SlashCommandChannelOption | SlashCommandRoleOption | SlashCommandMentionableOption;\ntype SlashCommandOptionChoices = SlashCommandStringOption | SlashCommandNumberOption | SlashCommandIntegerOption;\n"]}
package/package.json CHANGED
@@ -1,10 +1,15 @@
1
1
  {
2
2
  "name": "xernerx",
3
- "version": "0.1.120-beta.2",
3
+ "version": "0.1.120-beta.21",
4
4
  "type": "module",
5
5
  "main": "./dist/main.cjs",
6
6
  "module": "./dist/main.js",
7
7
  "types": "./dist/main.d.ts",
8
+ "publishConfig": {
9
+ "access": "public",
10
+ "registry": "https://registry.npmjs.org/"
11
+ },
12
+ "homepage": "docs.xernerx.com",
8
13
  "files": [
9
14
  "src",
10
15
  "dist"
@@ -20,28 +25,36 @@
20
25
  }
21
26
  },
22
27
  "scripts": {
23
- "check": "npx @arethetypeswrong/cli",
24
- "test": "nodemon test/main.test.js",
25
- "dev": "npx tsup --watch"
28
+ "dev": "npm link && npx tsup --watch",
29
+ "build": "npx tsup",
30
+ "pub": "npx publishyy"
26
31
  },
27
32
  "keywords": [],
28
- "author": "",
29
- "license": "ISC",
33
+ "author": "Dummi",
34
+ "license": "MIT",
30
35
  "description": "",
31
36
  "dependencies": {
37
+ "@discordjs/core": "2.2.1",
32
38
  "boxen": "^8.0.1",
33
- "discord.js": "^14.16.3",
34
- "dumfunctions": "^2.1.6",
35
- "figlet": "^1.7.0",
36
- "inquirer": "^10.1.10",
37
- "ora": "^8.1.0",
38
- "sharpyy": "^1.1.0",
39
- "zod": "^3.23.8"
39
+ "discord-hybrid-sharding": "^2.2.6",
40
+ "discord.js": "14.22.1",
41
+ "dumfunctions": "2.1.6",
42
+ "ora": "8.2.0",
43
+ "sharpyy": "1.1.0",
44
+ "zod": "4.1.1"
40
45
  },
41
46
  "devDependencies": {
42
- "@types/figlet": "^1.5.8",
43
- "prettier": "^3.3.3",
44
- "tsup": "^8.3.0",
45
- "typescript": "^5.6.2"
46
- }
47
+ "@arethetypeswrong/cli": "^0.18.2",
48
+ "@types/express": "^5.0.3",
49
+ "prettier": "^3.6.2",
50
+ "publishyy": "^0.1.3",
51
+ "tsup": "^8.5.0",
52
+ "typedoc": "^0.28.10",
53
+ "typedoc-github-theme": "^0.3.1",
54
+ "typescript": "^5.9.2"
55
+ },
56
+ "engines": {
57
+ "node": ">=22.00.00"
58
+ },
59
+ "packageManager": "npm@11.5.2"
47
60
  }
@@ -0,0 +1,21 @@
1
+ /** @format */
2
+
3
+ import { XernerxClient } from '../client/XernerxClient.js';
4
+ import { XernerxEventBuilderOptions } from '../interfaces/XernerxEventBuilderOptions.js';
5
+ import { XernerxSlashCommandBuilderOptions } from '../interfaces/XernerxSlashCommandBuilderOptions.js';
6
+
7
+ export class XernerxBaseBuilder {
8
+ declare public readonly id: string;
9
+ declare public client: XernerxClient;
10
+
11
+ /**
12
+ * Constructs a new instance of the XernerxBaseBuilder class.
13
+ *
14
+ * @param id - A unique identifier for the builder instance.
15
+ * @param options - Configuration options for the builder, which can be either
16
+ * XernerxSlashCommandBuilderOptions or XernerxEventBuilderOptions.
17
+ */
18
+ constructor(id: string, options: XernerxSlashCommandBuilderOptions | XernerxEventBuilderOptions) {
19
+ this.id = id;
20
+ }
21
+ }
@@ -0,0 +1,39 @@
1
+ /** @format */
2
+
3
+ import { ClientEvents } from 'discord.js';
4
+ import sharpyy from 'sharpyy';
5
+
6
+ import { XernerxEventBuilderOptions } from '../interfaces/XernerxEventBuilderOptions.js';
7
+ import { XernerxBaseBuilder } from './XernerxBaseBuilder.js';
8
+ import { XernerxWarn } from '../tools/XernerxWarn.js';
9
+
10
+ export class XernerxEventBuilder extends XernerxBaseBuilder {
11
+ declare public readonly filetype: 'XernerxEvent';
12
+ declare public readonly name: ClientEvents | keyof ClientEvents | (string & {});
13
+ declare public readonly emitter: string;
14
+ declare public readonly once: boolean;
15
+
16
+ constructor(id: string, options: XernerxEventBuilderOptions) {
17
+ super(id, options);
18
+
19
+ this.filetype = 'XernerxEvent';
20
+
21
+ this.name = options.name;
22
+
23
+ this.emitter = options.emitter ?? 'client';
24
+
25
+ this.once = options.once ?? false;
26
+ }
27
+
28
+ /**
29
+ * Executes the event logic. This method should be overridden in subclasses to provide specific event handling.
30
+ *
31
+ * @param args - A variable number of arguments that are passed to the event handler.
32
+ * These arguments are specific to the event being handled.
33
+ * @returns A promise that resolves when the event handling is complete.
34
+ * The resolved value can be any type, depending on the implementation in subclasses.
35
+ */
36
+ public async run(...args: any[]): Promise<any | void> {
37
+ new XernerxWarn(`Event ${sharpyy(`${this.id}`, 'txYellow')} does not have a run method, and will therefore not work.`);
38
+ }
39
+ }
@@ -0,0 +1,60 @@
1
+ /** @format */
2
+
3
+ import { z } from 'zod';
4
+
5
+ import { XernerxWarn } from '../tools/XernerxWarn.js';
6
+ import { XernerxMessageCommandBuilderOptions } from '../interfaces/XernerxMessageCommandBuilderOptions.js';
7
+ import { XernerxBaseBuilder } from './XernerxBaseBuilder.js';
8
+
9
+ export class XernerxMessageCommandBuilder extends XernerxBaseBuilder {
10
+ declare public readonly filetype: 'XernerxMessageCommand';
11
+ declare public readonly name: string;
12
+ declare public readonly description: string;
13
+ declare public readonly alias: string[];
14
+ declare public readonly prefix: string[];
15
+ declare public readonly premium: Array<string>;
16
+
17
+ /**
18
+ * Constructs an instance of XernerxMessageCommandBuilder.
19
+ *
20
+ * @param id - A unique identifier for the command.
21
+ * @param options - An object containing configuration options for the command.
22
+ * @param options.name - The name of the command.
23
+ * @param options.alias - An alias or an array of aliases for the command.
24
+ * @param options.prefix - A prefix or an array of prefixes for the command.
25
+ * @param options.premium - An array indicating premium features or settings.
26
+ */
27
+ constructor(id: string, options: XernerxMessageCommandBuilderOptions) {
28
+ super(id, options);
29
+
30
+ options = z
31
+ .object({
32
+ name: z.string(),
33
+ alias: z.union([z.string(), z.array(z.string())]).default([]),
34
+ prefix: z.union([z.string(), z.array(z.string())]).default([]),
35
+ premium: z.any(),
36
+ })
37
+ .parse(options);
38
+
39
+ this.name = options.name;
40
+
41
+ this.alias = typeof options.alias == 'string' ? [options.alias] : (options.alias as Array<string>);
42
+
43
+ this.prefix = typeof options.prefix == 'string' ? [options.prefix] : (options.prefix as Array<string>);
44
+
45
+ this.premium = options.premium;
46
+
47
+ this.filetype = 'XernerxMessageCommand';
48
+ }
49
+
50
+ /**
51
+ * Executes the command logic. This function is intended to be overridden by subclasses.
52
+ * If not overridden, it will log a warning indicating that the command will not respond.
53
+ *
54
+ * @param args - A variable number of arguments that can be passed to the command execution.
55
+ * @returns A promise that resolves to any value, depending on the implementation.
56
+ */
57
+ public async exec(...args: any[]): Promise<any> {
58
+ new XernerxWarn(`${this.id} has no exec function, command will not respond.`);
59
+ }
60
+ }