xernerx 4.4.3 → 4.4.4

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 (71) hide show
  1. package/dist/build/ContextCommandBuilder.d.ts +48 -0
  2. package/dist/build/ContextCommandBuilder.js +67 -0
  3. package/dist/build/EventBuilder.d.ts +22 -0
  4. package/dist/build/EventBuilder.js +29 -0
  5. package/dist/build/InhibitorBuilder.d.ts +17 -0
  6. package/dist/build/InhibitorBuilder.js +22 -0
  7. package/dist/build/MessageCommandBuilder.d.ts +45 -0
  8. package/dist/build/MessageCommandBuilder.js +60 -0
  9. package/dist/build/SlashCommandBuilder.d.ts +52 -0
  10. package/dist/build/SlashCommandBuilder.js +113 -0
  11. package/dist/client/XernerxClient.d.ts +55 -0
  12. package/dist/client/XernerxClient.js +82 -0
  13. package/dist/client/XernerxShardClient.d.ts +16 -0
  14. package/dist/client/XernerxShardClient.js +32 -0
  15. package/dist/functions/delay.d.ts +1 -0
  16. package/dist/functions/delay.js +3 -0
  17. package/dist/functions/deploy.d.ts +2 -0
  18. package/dist/functions/deploy.js +33 -0
  19. package/dist/functions/isOwner.d.ts +3 -0
  20. package/dist/functions/isOwner.js +3 -0
  21. package/dist/functions/isVoter.d.ts +3 -0
  22. package/dist/functions/isVoter.js +5 -0
  23. package/dist/functions/load.d.ts +3 -0
  24. package/dist/functions/load.js +32 -0
  25. package/dist/functions/reload.d.ts +2 -0
  26. package/dist/functions/reload.js +39 -0
  27. package/dist/functions/sendWebhook.d.ts +2 -0
  28. package/dist/functions/sendWebhook.js +12 -0
  29. package/dist/functions/setPresence.d.ts +3 -0
  30. package/dist/functions/setPresence.js +19 -0
  31. package/dist/functions/xernerxUser.d.ts +3 -0
  32. package/dist/functions/xernerxUser.js +8 -0
  33. package/dist/handlers/CommandHandler.d.ts +13 -0
  34. package/dist/handlers/CommandHandler.js +251 -0
  35. package/dist/handlers/EventHandler.d.ts +7 -0
  36. package/dist/handlers/EventHandler.js +24 -0
  37. package/dist/handlers/ExtensionHandler.d.ts +7 -0
  38. package/dist/handlers/ExtensionHandler.js +21 -0
  39. package/dist/handlers/Handler.d.ts +14 -0
  40. package/dist/handlers/Handler.js +36 -0
  41. package/dist/handlers/InhibitorHandler.d.ts +7 -0
  42. package/dist/handlers/InhibitorHandler.js +24 -0
  43. package/dist/handlers/WebhookHandler.d.ts +7 -0
  44. package/dist/handlers/WebhookHandler.js +50 -0
  45. package/dist/main.d.ts +42 -0
  46. package/dist/main.js +43 -0
  47. package/dist/models/Arguments.d.ts +15 -0
  48. package/dist/models/Arguments.js +129 -0
  49. package/dist/tools/XernerxError.d.ts +6 -0
  50. package/dist/tools/XernerxError.js +10 -0
  51. package/dist/tools/XernerxLog.d.ts +14 -0
  52. package/dist/tools/XernerxLog.js +48 -0
  53. package/dist/types/extenders.d.ts +28 -0
  54. package/dist/types/extenders.js +1 -0
  55. package/dist/types/interfaces.d.ts +236 -0
  56. package/dist/types/interfaces.js +1 -0
  57. package/dist/types/types.d.ts +181 -0
  58. package/dist/types/types.js +1 -0
  59. package/dist/utils/ClientUtil.d.ts +10 -0
  60. package/dist/utils/ClientUtil.js +30 -0
  61. package/dist/utils/InteractionUtil.d.ts +10 -0
  62. package/dist/utils/InteractionUtil.js +15 -0
  63. package/dist/utils/MessageUtil.d.ts +15 -0
  64. package/dist/utils/MessageUtil.js +46 -0
  65. package/dist/utils/Util.d.ts +5 -0
  66. package/dist/utils/Util.js +6 -0
  67. package/dist/validators/commandValidation.d.ts +6 -0
  68. package/dist/validators/commandValidation.js +49 -0
  69. package/dist/validators/inhibitorValidations.d.ts +18 -0
  70. package/dist/validators/inhibitorValidations.js +34 -0
  71. package/package.json +1 -1
@@ -0,0 +1,50 @@
1
+ import XernerxLog from '../tools/XernerxLog.js';
2
+ import Handler from './Handler.js';
3
+ export default class WebhookHandler extends Handler {
4
+ constructor(client) {
5
+ super(client);
6
+ }
7
+ async loadWebhooks(options) {
8
+ this.client.once('ready', async (client) => {
9
+ this.post(options.token);
10
+ setInterval(() => {
11
+ this.post(client.token);
12
+ }, 60000 * 30);
13
+ this.client.util.hasVoted = async (userId) => {
14
+ return !!(
15
+ await (
16
+ await fetch(`https://top.gg/api/bots/${this.client.user?.id}/check?userId=${userId}`, {
17
+ headers: { Authorization: options.token, 'Content-Type': 'application/json' },
18
+ })
19
+ ).json()
20
+ ).voted;
21
+ };
22
+ });
23
+ }
24
+ async post(token) {
25
+ const guilds = await this.client.guilds.fetch();
26
+ this.client.stats.guildCount = this.client.guilds.cache.size;
27
+ this.client.stats.userCount = (await Promise.all(guilds.map(async (guild) => (await this.client.guilds.fetch(guild.id)).memberCount))).reduce((a, b) => (a += b));
28
+ this.client.stats.shardId = this.client.options.shards?.at(0) || 0;
29
+ this.client.stats.shardCount = this.client.options.shardCount || this.client.options.shards?.length || 1;
30
+ try {
31
+ new XernerxLog(this.client).info(`Posted Stats to Top.gg!`);
32
+ this.client.emit('webhookCreate', this.client, this.client.stats);
33
+ return await fetch(`https://top.gg/api/bots/stats`, {
34
+ method: 'POST',
35
+ headers: {
36
+ Authorization: token,
37
+ 'Content-Type': 'application/json',
38
+ },
39
+ body: JSON.stringify({
40
+ server_count: this.client.stats.guildCount,
41
+ shard_id: this.client.stats.shardId,
42
+ shard_count: this.client.stats.shardCount,
43
+ }),
44
+ });
45
+ } catch (error) {
46
+ new XernerxLog(this.client).error(`An error occurred while posting stats to Top.gg`, error);
47
+ return this.client.emit('webhookError', this.client, this.client.stats);
48
+ }
49
+ }
50
+ }
package/dist/main.d.ts ADDED
@@ -0,0 +1,42 @@
1
+ import XernerxClient from './client/XernerxClient.js';
2
+ import XernerxShardClient from './client/XernerxShardClient.js';
3
+ import MessageCommandBuilder from './build/MessageCommandBuilder.js';
4
+ import SlashCommandBuilder from './build/SlashCommandBuilder.js';
5
+ import ContextCommandBuilder from './build/ContextCommandBuilder.js';
6
+ import EventBuilder from './build/EventBuilder.js';
7
+ import InhibitorBuilder from './build/InhibitorBuilder.js';
8
+ import XernerxLog from './tools/XernerxLog.js';
9
+ export * from 'discord.js';
10
+ export * from 'dumfunctions';
11
+ import ExtensionBuilder from 'xernerx-extension-builder';
12
+ import Discord from 'discord.js';
13
+ declare const version: any;
14
+ export default XernerxClient;
15
+ export {
16
+ /**
17
+ ** Clients
18
+ */
19
+ XernerxClient,
20
+ XernerxShardClient,
21
+ /**
22
+ ** Builders
23
+ */
24
+ MessageCommandBuilder,
25
+ SlashCommandBuilder,
26
+ ContextCommandBuilder,
27
+ EventBuilder,
28
+ InhibitorBuilder,
29
+ ExtensionBuilder,
30
+ /**
31
+ ** Imported exports
32
+ */
33
+ Discord,
34
+ /**
35
+ ** Properties
36
+ */
37
+ version,
38
+ /**
39
+ ** Tools
40
+ */
41
+ XernerxLog,
42
+ };
package/dist/main.js ADDED
@@ -0,0 +1,43 @@
1
+ import * as fs from 'fs';
2
+ import XernerxClient from './client/XernerxClient.js';
3
+ import XernerxShardClient from './client/XernerxShardClient.js';
4
+ import MessageCommandBuilder from './build/MessageCommandBuilder.js';
5
+ import SlashCommandBuilder from './build/SlashCommandBuilder.js';
6
+ import ContextCommandBuilder from './build/ContextCommandBuilder.js';
7
+ import EventBuilder from './build/EventBuilder.js';
8
+ import InhibitorBuilder from './build/InhibitorBuilder.js';
9
+ import XernerxLog from './tools/XernerxLog.js';
10
+ export * from 'discord.js';
11
+ export * from 'dumfunctions';
12
+ import ExtensionBuilder from 'xernerx-extension-builder';
13
+ import Discord from 'discord.js';
14
+ const version = JSON.parse(fs.readFileSync('node_modules/xernerx/package.json', 'utf-8')).version;
15
+ export default XernerxClient;
16
+ export {
17
+ /**
18
+ ** Clients
19
+ */
20
+ XernerxClient,
21
+ XernerxShardClient,
22
+ /**
23
+ ** Builders
24
+ */
25
+ MessageCommandBuilder,
26
+ SlashCommandBuilder,
27
+ ContextCommandBuilder,
28
+ EventBuilder,
29
+ InhibitorBuilder,
30
+ ExtensionBuilder,
31
+ /**
32
+ ** Imported exports
33
+ */
34
+ Discord,
35
+ /**
36
+ ** Properties
37
+ */
38
+ version,
39
+ /**
40
+ ** Tools
41
+ */
42
+ XernerxLog,
43
+ };
@@ -0,0 +1,15 @@
1
+ import SlashCommandBuilder from '../build/SlashCommandBuilder.js';
2
+ import ContextCommandBuilder from '../build/ContextCommandBuilder.js';
3
+ import MessageCommandBuilder from '../build/MessageCommandBuilder.js';
4
+ import { XernerxMessage } from '../types/extenders.js';
5
+ import { MessageCommandArguments } from '../types/interfaces.js';
6
+ import { XernerxInteraction } from '../types/types.js';
7
+ export declare function messageArguments(message: XernerxMessage, command: MessageCommandBuilder): Promise<MessageCommandArguments>;
8
+ export declare function interactionArguments(
9
+ interaction: XernerxInteraction | any,
10
+ command: ContextCommandBuilder | SlashCommandBuilder
11
+ ): Promise<{
12
+ args: any;
13
+ group: any;
14
+ subcommand: any;
15
+ }>;
@@ -0,0 +1,129 @@
1
+ export async function messageArguments(message, command) {
2
+ const separator = command.separator || ' ',
3
+ content = message.content.split(separator).slice(1);
4
+ let args = {},
5
+ flags = {};
6
+ if (command.flags)
7
+ command.flags.map((flag) => {
8
+ if (!flags) flags = {};
9
+ if (content.includes(flag.match)) flags[flag.name] = true;
10
+ else flags[flag.name] = false;
11
+ const index = content.indexOf(flag.match);
12
+ if (index > 0) content.splice(index, 1);
13
+ });
14
+ if (command.args)
15
+ for (const argument of command.args) {
16
+ const element = content.at(0) || null;
17
+ if (!element) {
18
+ if (typeof argument.default === 'function') args[argument.name] = argument.default(message);
19
+ args[argument.name] = argument.default || null;
20
+ continue;
21
+ }
22
+ if (argument.type === 'option') argument.match?.includes(element) ? (args[argument.name] = element) : (args[argument.name] = null);
23
+ if (argument.type === 'number') args[argument.name] = parseInt(element);
24
+ if (argument.type === 'integer') args[argument.name] = parseInt(element);
25
+ if (argument.type === 'boolean') args[argument.name] = element === 'true' ? true : false;
26
+ if (argument.type === 'confirm') args[argument.name] = element === 'yes' ? 'yes' : 'no';
27
+ if (argument.type === 'string') args[argument.name] = element;
28
+ if (argument.type === 'channel') {
29
+ try {
30
+ const channel = await message.client.channels.fetch(element);
31
+ args[argument.name] = channel;
32
+ } catch (e) {
33
+ args[argument.name] = null;
34
+ }
35
+ }
36
+ if (argument.type === 'guild') {
37
+ try {
38
+ const guild = await message.client.guilds.fetch(element);
39
+ args[argument.name] = guild;
40
+ } catch (e) {
41
+ args[argument.name] = null;
42
+ }
43
+ }
44
+ if (argument.type === 'mentionable') {
45
+ (
46
+ await Promise.all(
47
+ [message.guild?.roles, message.client.users, message.client.guilds, message.client.channels, message.guild?.members, message.channel.messages].map((req) =>
48
+ req
49
+ ? req
50
+ .fetch(element)
51
+ .then((r) => r)
52
+ .catch(() => null)
53
+ : null
54
+ )
55
+ )
56
+ ).map((mentionable) => {
57
+ if (!args) args = {};
58
+ if (mentionable) return (args[argument.name] = mentionable);
59
+ else args[argument.name] = null;
60
+ });
61
+ }
62
+ if (argument.type === 'role') {
63
+ try {
64
+ const role = await message.guild?.roles.fetch(element);
65
+ args[argument.name] = role;
66
+ } catch (e) {
67
+ args[argument.name] = null;
68
+ }
69
+ }
70
+ if (argument.type === 'user') {
71
+ try {
72
+ const user = await message.client.users.fetch(element);
73
+ args[argument.name] = user;
74
+ } catch (e) {
75
+ args[argument.name] = null;
76
+ }
77
+ }
78
+ if (argument.type === 'member') {
79
+ try {
80
+ const member = await message.guild?.members.fetch(element);
81
+ args[argument.name] = member;
82
+ } catch (e) {
83
+ args[argument.name] = null;
84
+ }
85
+ }
86
+ if (argument.type === 'message') {
87
+ try {
88
+ const msg = await message.channel?.messages.fetch(element);
89
+ args[argument.name] = msg;
90
+ } catch (e) {
91
+ args[argument.name] = null;
92
+ }
93
+ }
94
+ if (argument.type === 'list') {
95
+ let separator = String(argument.separator) || ',';
96
+ if (separator.startsWith('/') && separator.endsWith('/')) separator = separator.replace(/^\/|\/$/gim, '');
97
+ const items = content.join(' ').split(new RegExp(' *' + separator + ' *', 'gi'));
98
+ if (!argument.content) args[argument.name] = items;
99
+ else {
100
+ const contents = argument.content.map((content) => content.toLowerCase()),
101
+ itemList = [];
102
+ items.map((item) => (contents.includes(item.toLowerCase()) ? itemList.push(argument.content?.at(contents.indexOf(item.toLowerCase()))) : null));
103
+ args[argument.name] = itemList;
104
+ break;
105
+ }
106
+ }
107
+ if (argument.type === 'rest') {
108
+ args[argument.name] = content.join(separator);
109
+ break;
110
+ }
111
+ content.splice(0, 1);
112
+ }
113
+ if (!command.flags) flags = null;
114
+ if (!command.args) args = null;
115
+ return { args, flags };
116
+ }
117
+ export async function interactionArguments(interaction, command) {
118
+ const options = {};
119
+ let args = interaction?.options?._hoistedOptions,
120
+ group = interaction?.options?._group,
121
+ subcommand = interaction?.options?._subcommand;
122
+ if (interaction.options._hoistedOptions) {
123
+ for (const option of interaction.options._hoistedOptions) {
124
+ options[option.name] = option.member || option.channel || option.user || option.role || option.value;
125
+ }
126
+ args = options;
127
+ }
128
+ return { args, group, subcommand };
129
+ }
@@ -0,0 +1,6 @@
1
+ export default class XernerxError {
2
+ name: string;
3
+ message: string | null;
4
+ stack: {} | undefined;
5
+ constructor(message?: string, error?: Error | unknown);
6
+ }
@@ -0,0 +1,10 @@
1
+ export default class XernerxError {
2
+ name;
3
+ message;
4
+ stack;
5
+ constructor(message, error) {
6
+ this.name = 'XernerxError';
7
+ this.message = message || null;
8
+ this.stack = error || new Error().stack;
9
+ }
10
+ }
@@ -0,0 +1,14 @@
1
+ import XernerxError from './XernerxError.js';
2
+ import XernerxClient from '../client/XernerxClient.js';
3
+ export default class XernerxLog {
4
+ private readonly client;
5
+ private readonly errorLog;
6
+ private readonly infoLog;
7
+ private readonly readyLog;
8
+ private readonly tableLog;
9
+ constructor(client: XernerxClient);
10
+ info(message: string, force?: boolean): void | null;
11
+ warn(message: string): void | null;
12
+ error(message: string, error?: XernerxError | unknown): void | null;
13
+ ready(): void;
14
+ }
@@ -0,0 +1,48 @@
1
+ import { Style } from 'dumfunctions';
2
+ export default class XernerxLog {
3
+ constructor(client) {
4
+ this.client = client;
5
+ this.errorLog = client.settings.log?.error;
6
+ this.infoLog = client.settings.log?.info;
7
+ this.readyLog = client.settings.log?.ready;
8
+ this.tableLog = client.settings.log?.table;
9
+ }
10
+ info(message, force = false) {
11
+ return this.infoLog || force ? console.info(`${Style.log('✔️ | Xernerx', { color: Style.TextColor.Purple })} | ${message}`) : null;
12
+ }
13
+ warn(message) {
14
+ return this.infoLog ? console.warn(`${Style.log('⚠️ | Xernerx', { color: Style.TextColor.Yellow })} | ${message}`) : null;
15
+ }
16
+ error(message, error) {
17
+ return this.errorLog ? console.error(`${Style.log('❗ | Xernerx', { color: Style.TextColor.Red })} | ${message}${error ? ` | ${error.stack}` : ''}`) : null;
18
+ }
19
+ ready() {
20
+ this.client.prependOnceListener('ready', async (synced) => {
21
+ this.info(
22
+ `${synced.user.tag} is now online, watching ${this.client.guilds.cache.size} guilds, using ${
23
+ this.client.settings.local ? await this.client.guilds.fetch(this.client.settings.local) : 'none'
24
+ } as local guild.`,
25
+ this.readyLog
26
+ );
27
+ const files = [];
28
+ for (const [id, data] of this.client.commands.message) {
29
+ files.push(data);
30
+ }
31
+ for (const [id, data] of this.client.commands.slash) {
32
+ files.push(data);
33
+ }
34
+ for (const [id, data] of this.client.commands.context) {
35
+ files.push(data);
36
+ }
37
+ for (const [id, data] of this.client.events) {
38
+ files.push(data);
39
+ }
40
+ for (const [id, data] of this.client.inhibitors) {
41
+ files.push(data);
42
+ }
43
+ if (this.tableLog) {
44
+ console.table(files, this.tableLog);
45
+ }
46
+ });
47
+ }
48
+ }
@@ -0,0 +1,28 @@
1
+ import { ChatInputCommandInteraction, DMChannel, Guild, GuildChannel, GuildMember, Message, MessageContextMenuCommandInteraction, User, UserContextMenuCommandInteraction } from 'discord.js';
2
+ import InteractionUtil from '../utils/InteractionUtil.js';
3
+ import MessageUtil from '../utils/MessageUtil.js';
4
+ export interface XernerxUser extends User {
5
+ owner: boolean;
6
+ voted: boolean | null;
7
+ }
8
+ export interface XernerxMember extends GuildMember {
9
+ username: string;
10
+ }
11
+ export interface XernerxGuild extends Guild {}
12
+ export interface XernerxGuildChannel extends GuildChannel {}
13
+ export interface XernerxDMChannel extends DMChannel {}
14
+ interface XernerxCommand {}
15
+ export interface XernerxMessage extends Message, XernerxCommand {
16
+ user: XernerxUser;
17
+ util: MessageUtil;
18
+ }
19
+ export interface XernerxSlashInteraction extends ChatInputCommandInteraction, XernerxCommand {
20
+ util: InteractionUtil;
21
+ }
22
+ export interface XernerxUserContextInteraction extends UserContextMenuCommandInteraction, XernerxCommand {
23
+ util: InteractionUtil;
24
+ }
25
+ export interface XernerxMessageContextInteraction extends MessageContextMenuCommandInteraction, XernerxCommand {
26
+ util: InteractionUtil;
27
+ }
28
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,236 @@
1
+ import { ActivityType, ChannelType, Collection, PresenceStatusData } from 'discord.js';
2
+ import CommandHandler from '../handlers/CommandHandler.js';
3
+ import EventHandler from '../handlers/EventHandler.js';
4
+ import InhibitorHandler from '../handlers/InhibitorHandler.js';
5
+ import WebhookHandler from '../handlers/WebhookHandler.js';
6
+ import ContextCommandBuilder from '../build/ContextCommandBuilder.js';
7
+ import MessageCommandBuilder from '../build/MessageCommandBuilder.js';
8
+ import SlashCommandBuilder from '../build/SlashCommandBuilder.js';
9
+ import { Locales, MessageCommandArgumentType, PermissionNames, SlashCommandArgumentType, EventType, InhibitorType } from './types.js';
10
+ import ExtensionHandler from '../handlers/ExtensionHandler.js';
11
+ export interface XernerxOptions {
12
+ local?: string;
13
+ global?: boolean;
14
+ ownerId?: string | Array<string>;
15
+ permissions?: {
16
+ client?: Array<string>;
17
+ user?: Array<string>;
18
+ dm?: boolean;
19
+ };
20
+ ignore?: {
21
+ owner?: boolean;
22
+ users?: Array<string>;
23
+ channels?: Array<string>;
24
+ guilds?: Array<string>;
25
+ };
26
+ log?: {
27
+ ready?: boolean;
28
+ info?: boolean;
29
+ error?: boolean;
30
+ table?: Array<'name' | 'aliases' | 'description' | 'fileType' | 'category'>;
31
+ };
32
+ cooldown?: {
33
+ command?: number;
34
+ cache?: number;
35
+ };
36
+ }
37
+ export interface ModuleOptions {
38
+ options: {
39
+ message?: MessageHandlerOptions;
40
+ slash?: SlashHandlerOptions;
41
+ context?: ContextHandlerOptions;
42
+ events?: EventHandlerOptions;
43
+ inhibitors?: InhibitorHandlerOptions;
44
+ };
45
+ commandHandler: CommandHandler;
46
+ eventHandler: EventHandler;
47
+ inhibitorHandler: InhibitorHandler;
48
+ webhookHandler: WebhookHandler;
49
+ extensionHandler: ExtensionHandler;
50
+ }
51
+ export interface XernerxCommands {
52
+ message: Collection<string, MessageCommandBuilder>;
53
+ slash: Collection<string, SlashCommandBuilder>;
54
+ context: Collection<string, ContextCommandBuilder>;
55
+ }
56
+ export interface DBLOptions {
57
+ topgg: {
58
+ token: string;
59
+ };
60
+ dbl: {
61
+ token: string;
62
+ };
63
+ config: {
64
+ emits: boolean;
65
+ logs: boolean;
66
+ };
67
+ }
68
+ export interface XernerxCache {
69
+ messages: Collection<string, string>;
70
+ cooldowns: Collection<
71
+ string,
72
+ {
73
+ id: string;
74
+ command: string;
75
+ createdTimestamp: number;
76
+ }
77
+ >;
78
+ }
79
+ interface CommandHandlerOptions {
80
+ directory: string;
81
+ cooldown?: number;
82
+ permissions?: {
83
+ user?: Array<string>;
84
+ client?: Array<string>;
85
+ dm?: boolean;
86
+ };
87
+ logging?: boolean;
88
+ }
89
+ export interface MessageHandlerOptions extends CommandHandlerOptions {
90
+ prefix: string | Array<string>;
91
+ allowMention?: boolean;
92
+ handleEdits?: boolean;
93
+ handleDeletes?: boolean;
94
+ handleTyping?: boolean;
95
+ }
96
+ export interface SlashHandlerOptions extends CommandHandlerOptions {
97
+ defer?: {
98
+ reply?: boolean;
99
+ ephemeral?: boolean;
100
+ fetchReply?: boolean;
101
+ };
102
+ }
103
+ export interface ContextHandlerOptions extends CommandHandlerOptions {
104
+ defer?: {
105
+ reply?: boolean;
106
+ ephemeral?: boolean;
107
+ fetchReply?: boolean;
108
+ };
109
+ }
110
+ export interface EventHandlerOptions {
111
+ directory: string;
112
+ }
113
+ export interface InhibitorHandlerOptions {
114
+ directory: string;
115
+ }
116
+ interface CommandOptions {
117
+ name: string;
118
+ description?: string | null;
119
+ usage?: string | null;
120
+ info?: string | null;
121
+ category?: string | null;
122
+ cooldown?: number | null;
123
+ ignore?: {
124
+ owner?: boolean;
125
+ users?: Array<string>;
126
+ channels?: Array<string>;
127
+ guilds?: Array<string>;
128
+ };
129
+ strict?: {
130
+ owner?: boolean;
131
+ users?: Array<string>;
132
+ channels?: Array<string>;
133
+ guilds?: Array<string>;
134
+ };
135
+ permissions?: {
136
+ user?: Array<PermissionNames> | Array<string>;
137
+ client?: Array<PermissionNames> | Array<string>;
138
+ dm?: boolean;
139
+ };
140
+ }
141
+ export interface MessageCommandOptions extends CommandOptions {
142
+ aliases?: Array<string>;
143
+ separator?: string;
144
+ prefix?: Array<string> | string;
145
+ regex?: RegExp;
146
+ channelType?: Array<ChannelType>;
147
+ args?: Array<MessageCommandArgumentOptions>;
148
+ flags?: Array<MessageCommandFlagOptions>;
149
+ }
150
+ export interface MessageCommandArgumentOptions {
151
+ type: MessageCommandArgumentType;
152
+ name: string;
153
+ content?: Array<string>;
154
+ match?: string | Array<string>;
155
+ description?: string;
156
+ default?: string | Function;
157
+ separator?: string | RegExp;
158
+ prompt?: {
159
+ reply?: string;
160
+ send?: string;
161
+ };
162
+ }
163
+ export interface MessageCommandFlagOptions {
164
+ name: string;
165
+ match: string;
166
+ }
167
+ export interface MessageCommandArguments {
168
+ args: Record<string, unknown> | null;
169
+ flags: Record<string, boolean> | null;
170
+ }
171
+ export interface SlashCommandOptions extends CommandOptions {
172
+ description: string;
173
+ nameLocalizations?: Record<Locales, string | null> | null;
174
+ descriptionLocalizations?: Record<Locales, string | null> | null;
175
+ defer?: {
176
+ reply?: boolean;
177
+ ephemeral?: boolean;
178
+ fetchReply?: boolean;
179
+ };
180
+ args?: Array<SlashCommandArgumentOptions>;
181
+ subcommands?: Array<SlashCommandSubcommandOptions>;
182
+ groups?: Array<SlashCommandGroupOptions>;
183
+ }
184
+ export interface ContextCommandOptions extends CommandOptions {
185
+ type: 'user' | 'message';
186
+ nameLocalizations?: Record<Locales, string | null> | null;
187
+ defer?: {
188
+ reply?: boolean;
189
+ ephemeral?: boolean;
190
+ fetchReply?: boolean;
191
+ };
192
+ }
193
+ export interface SlashCommandArgumentOptions {
194
+ type: SlashCommandArgumentType;
195
+ name: string;
196
+ description: string;
197
+ required?: boolean;
198
+ autocomplete?: boolean;
199
+ choices?: Array<{
200
+ name: string;
201
+ value: string;
202
+ }>;
203
+ }
204
+ export interface SlashCommandSubcommandOptions {
205
+ name: string;
206
+ description: string;
207
+ args?: Array<SlashCommandArgumentOptions>;
208
+ }
209
+ export interface SlashCommandGroupOptions {
210
+ name: string;
211
+ description: string;
212
+ subcommands: Array<SlashCommandSubcommandOptions>;
213
+ }
214
+ export interface SlashCommandArguments {
215
+ args: Record<string, string>;
216
+ subcommand: Record<string, string>;
217
+ group: Record<string, string>;
218
+ }
219
+ export interface EventBuilderOptions {
220
+ name: EventType;
221
+ emitter: 'client' | 'process';
222
+ type: 'discord';
223
+ once: boolean;
224
+ }
225
+ export interface InhibitorBuilderOptions {
226
+ name: string;
227
+ type: InhibitorType;
228
+ }
229
+ export interface PresenceOptions {
230
+ text: string;
231
+ type?: ActivityType.Playing | ActivityType.Streaming | ActivityType.Listening | ActivityType.Watching | ActivityType.Competing;
232
+ url: string;
233
+ status?: PresenceStatusData;
234
+ interval?: number;
235
+ }
236
+ export {};
@@ -0,0 +1 @@
1
+ export {};