@magicyan/discord 1.0.31 → 1.0.32

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.
@@ -16,5 +16,28 @@ function findCommand(guildOrClient) {
16
16
  }
17
17
  };
18
18
  }
19
+ function createCommandOptions(options) {
20
+ return Object.entries(options).map(
21
+ ([name, data]) => Object.assign(data, { name })
22
+ );
23
+ }
24
+ function createSubCommands(subcommands) {
25
+ return Object.entries(subcommands).map(([name, data]) => {
26
+ if (data.options)
27
+ Object.assign(data, {
28
+ options: createCommandOptions(data.options)
29
+ });
30
+ return Object.assign(data, { name, type: discord_js.ApplicationCommandOptionType.Subcommand });
31
+ });
32
+ }
33
+ function createSubCommandsGroups(groups) {
34
+ return Object.entries(groups).map(([name, data]) => {
35
+ const options = createSubCommands(data.subcommands);
36
+ return Object.assign(data, { name, type: discord_js.ApplicationCommandOptionType.SubcommandGroup, options });
37
+ });
38
+ }
19
39
 
40
+ exports.createCommandOptions = createCommandOptions;
41
+ exports.createSubCommands = createSubCommands;
42
+ exports.createSubCommandsGroups = createSubCommandsGroups;
20
43
  exports.findCommand = findCommand;
@@ -1,4 +1,4 @@
1
- import { Client } from 'discord.js';
1
+ import { Client, ApplicationCommandOptionType } from 'discord.js';
2
2
 
3
3
  function findCommand(guildOrClient) {
4
4
  const commands = guildOrClient instanceof Client ? guildOrClient.application.commands.cache : guildOrClient.commands.cache;
@@ -14,5 +14,25 @@ function findCommand(guildOrClient) {
14
14
  }
15
15
  };
16
16
  }
17
+ function createCommandOptions(options) {
18
+ return Object.entries(options).map(
19
+ ([name, data]) => Object.assign(data, { name })
20
+ );
21
+ }
22
+ function createSubCommands(subcommands) {
23
+ return Object.entries(subcommands).map(([name, data]) => {
24
+ if (data.options)
25
+ Object.assign(data, {
26
+ options: createCommandOptions(data.options)
27
+ });
28
+ return Object.assign(data, { name, type: ApplicationCommandOptionType.Subcommand });
29
+ });
30
+ }
31
+ function createSubCommandsGroups(groups) {
32
+ return Object.entries(groups).map(([name, data]) => {
33
+ const options = createSubCommands(data.subcommands);
34
+ return Object.assign(data, { name, type: ApplicationCommandOptionType.SubcommandGroup, options });
35
+ });
36
+ }
17
37
 
18
- export { findCommand };
38
+ export { createCommandOptions, createSubCommands, createSubCommandsGroups, findCommand };
@@ -9,10 +9,6 @@ var __publicField = (obj, key, value) => {
9
9
  class EmbedPlusFields {
10
10
  constructor(embed) {
11
11
  __publicField(this, "embed");
12
- Object.defineProperty(this, "embed", {
13
- enumerable: false,
14
- value: embed
15
- });
16
12
  this.embed = embed;
17
13
  }
18
14
  set fields(fields) {
@@ -7,10 +7,6 @@ var __publicField = (obj, key, value) => {
7
7
  class EmbedPlusFields {
8
8
  constructor(embed) {
9
9
  __publicField(this, "embed");
10
- Object.defineProperty(this, "embed", {
11
- enumerable: false,
12
- value: embed
13
- });
14
10
  this.embed = embed;
15
11
  }
16
12
  set fields(fields) {
package/dist/index.cjs CHANGED
@@ -35,6 +35,9 @@ exports.createLinkButton = components.createLinkButton;
35
35
  exports.createRow = components.createRow;
36
36
  exports.findChannel = channels.findChannel;
37
37
  exports.getChannelUrlInfo = channels.getChannelUrlInfo;
38
+ exports.createCommandOptions = commands.createCommandOptions;
39
+ exports.createSubCommands = commands.createSubCommands;
40
+ exports.createSubCommandsGroups = commands.createSubCommandsGroups;
38
41
  exports.findCommand = commands.findCommand;
39
42
  exports.createModalFields = modals.createModalFields;
40
43
  exports.createModalInput = modals.createModalInput;
package/dist/index.d.cts CHANGED
@@ -1,5 +1,5 @@
1
1
  import * as discord_js from 'discord.js';
2
- import { GatewayIntentBits, Partials, Attachment, AttachmentBuilder, EmbedAssetData, Guild, GuildMember, User, ClientUser, ImageURLOptions, EmbedFooterData, ColorResolvable, APIEmbed, Embed, EmbedData, EmbedBuilder, AttachmentData, AnyComponentBuilder, ActionRowBuilder, ButtonBuilder, LinkButtonComponentData, ChannelType, CommandInteractionOption, Client, ApplicationCommand, TextInputBuilder, ModalSubmitFields, Collection, TextInputComponent, TextInputComponentData, GuildEmoji, GuildTextBasedChannel, Message, Role } from 'discord.js';
2
+ import { GatewayIntentBits, Partials, Attachment, AttachmentBuilder, EmbedAssetData, Guild, GuildMember, User, ClientUser, ImageURLOptions, EmbedFooterData, ColorResolvable, APIEmbed, Embed, EmbedData, EmbedBuilder, AttachmentData, AnyComponentBuilder, ActionRowBuilder, ButtonBuilder, LinkButtonComponentData, ChannelType, CommandInteractionOption, Client, ApplicationCommand, ApplicationCommandOptionData, ApplicationCommandSubCommandData, ApplicationCommandSubGroupData, TextInputBuilder, ModalSubmitFields, Collection, TextInputComponent, TextInputComponentData, GuildEmoji, GuildTextBasedChannel, Message, Role } from 'discord.js';
3
3
  export * from '@magicyan/core';
4
4
 
5
5
  declare const chars: {
@@ -202,6 +202,35 @@ declare function findCommand(guildOrClient: Guild | Client<true>): {
202
202
  guild: discord_js.GuildResolvable;
203
203
  }> | undefined;
204
204
  };
205
+ type OmitCommandDataProps = "name" | "options" | "autocomplete" | "type";
206
+ type CommandOption = Exclude<Omit<ApplicationCommandOptionData, "name">, ApplicationCommandSubGroupData | ApplicationCommandSubCommandData>;
207
+ type CommandOptions = Record<string, CommandOption>;
208
+ /**
209
+ * Creates an array of command options, quickly define command options with a record where the key is the option name and the value is the definitions
210
+ * @param groups
211
+ * @returns
212
+ */
213
+ declare function createCommandOptions(options: CommandOptions): ApplicationCommandOptionData[];
214
+ type SubCommand = Omit<ApplicationCommandSubCommandData, OmitCommandDataProps> & {
215
+ options?: Record<string, CommandOption>;
216
+ };
217
+ type SubCommands = Record<string, SubCommand>;
218
+ /**
219
+ * Create an array of command options, quickly define subcommands with a record where the key is the subcommand name and the value is the definitions
220
+ * @param groups
221
+ * @returns
222
+ */
223
+ declare function createSubCommands(subcommands: SubCommands): ApplicationCommandSubCommandData[];
224
+ type SubCommandGroup = Omit<ApplicationCommandSubGroupData, OmitCommandDataProps> & {
225
+ subcommands: SubCommands;
226
+ };
227
+ type SubCommandGroups = Record<string, SubCommandGroup>;
228
+ /**
229
+ * Create an array of command options, quickly define groups of subcommands with a record where the key is the group name and the value is the definitions
230
+ * @param groups
231
+ * @returns
232
+ */
233
+ declare function createSubCommandsGroups(groups: SubCommandGroups): ApplicationCommandSubGroupData[];
205
234
 
206
235
  type TextInputData = Omit<TextInputComponentData, "type">;
207
236
  type CreateModalInputData = TextInputData;
@@ -281,4 +310,4 @@ declare function findRole(guild: Guild): {
281
310
  */
282
311
  declare function extractMentionId(mention: string): string | null;
283
312
 
284
- export { type AnyEmbedData, CustomItents, CustomPartials, type EmbedPlusAssetData, type EmbedPlusAuthorData, EmbedPlusBuilder, type EmbedPlusColorData, type EmbedPlusData, type EmbedPlusFooterData, type EmbedPlusProperty, chars, createEmbed, createEmbedAsset, createEmbedAuthor, createEmbedFiles, createEmbedFooter, createLinkButton, createModalFields, createModalInput, createRow, extractMentionId, findChannel, findCommand, findEmoji, findMember, findMessage, findRole, getChannelUrlInfo, getMessageUrlInfo, modalFieldsToRecord, setMobileStatus };
313
+ export { type AnyEmbedData, CustomItents, CustomPartials, type EmbedPlusAssetData, type EmbedPlusAuthorData, EmbedPlusBuilder, type EmbedPlusColorData, type EmbedPlusData, type EmbedPlusFooterData, type EmbedPlusProperty, chars, createCommandOptions, createEmbed, createEmbedAsset, createEmbedAuthor, createEmbedFiles, createEmbedFooter, createLinkButton, createModalFields, createModalInput, createRow, createSubCommands, createSubCommandsGroups, extractMentionId, findChannel, findCommand, findEmoji, findMember, findMessage, findRole, getChannelUrlInfo, getMessageUrlInfo, modalFieldsToRecord, setMobileStatus };
package/dist/index.d.mts CHANGED
@@ -1,5 +1,5 @@
1
1
  import * as discord_js from 'discord.js';
2
- import { GatewayIntentBits, Partials, Attachment, AttachmentBuilder, EmbedAssetData, Guild, GuildMember, User, ClientUser, ImageURLOptions, EmbedFooterData, ColorResolvable, APIEmbed, Embed, EmbedData, EmbedBuilder, AttachmentData, AnyComponentBuilder, ActionRowBuilder, ButtonBuilder, LinkButtonComponentData, ChannelType, CommandInteractionOption, Client, ApplicationCommand, TextInputBuilder, ModalSubmitFields, Collection, TextInputComponent, TextInputComponentData, GuildEmoji, GuildTextBasedChannel, Message, Role } from 'discord.js';
2
+ import { GatewayIntentBits, Partials, Attachment, AttachmentBuilder, EmbedAssetData, Guild, GuildMember, User, ClientUser, ImageURLOptions, EmbedFooterData, ColorResolvable, APIEmbed, Embed, EmbedData, EmbedBuilder, AttachmentData, AnyComponentBuilder, ActionRowBuilder, ButtonBuilder, LinkButtonComponentData, ChannelType, CommandInteractionOption, Client, ApplicationCommand, ApplicationCommandOptionData, ApplicationCommandSubCommandData, ApplicationCommandSubGroupData, TextInputBuilder, ModalSubmitFields, Collection, TextInputComponent, TextInputComponentData, GuildEmoji, GuildTextBasedChannel, Message, Role } from 'discord.js';
3
3
  export * from '@magicyan/core';
4
4
 
5
5
  declare const chars: {
@@ -202,6 +202,35 @@ declare function findCommand(guildOrClient: Guild | Client<true>): {
202
202
  guild: discord_js.GuildResolvable;
203
203
  }> | undefined;
204
204
  };
205
+ type OmitCommandDataProps = "name" | "options" | "autocomplete" | "type";
206
+ type CommandOption = Exclude<Omit<ApplicationCommandOptionData, "name">, ApplicationCommandSubGroupData | ApplicationCommandSubCommandData>;
207
+ type CommandOptions = Record<string, CommandOption>;
208
+ /**
209
+ * Creates an array of command options, quickly define command options with a record where the key is the option name and the value is the definitions
210
+ * @param groups
211
+ * @returns
212
+ */
213
+ declare function createCommandOptions(options: CommandOptions): ApplicationCommandOptionData[];
214
+ type SubCommand = Omit<ApplicationCommandSubCommandData, OmitCommandDataProps> & {
215
+ options?: Record<string, CommandOption>;
216
+ };
217
+ type SubCommands = Record<string, SubCommand>;
218
+ /**
219
+ * Create an array of command options, quickly define subcommands with a record where the key is the subcommand name and the value is the definitions
220
+ * @param groups
221
+ * @returns
222
+ */
223
+ declare function createSubCommands(subcommands: SubCommands): ApplicationCommandSubCommandData[];
224
+ type SubCommandGroup = Omit<ApplicationCommandSubGroupData, OmitCommandDataProps> & {
225
+ subcommands: SubCommands;
226
+ };
227
+ type SubCommandGroups = Record<string, SubCommandGroup>;
228
+ /**
229
+ * Create an array of command options, quickly define groups of subcommands with a record where the key is the group name and the value is the definitions
230
+ * @param groups
231
+ * @returns
232
+ */
233
+ declare function createSubCommandsGroups(groups: SubCommandGroups): ApplicationCommandSubGroupData[];
205
234
 
206
235
  type TextInputData = Omit<TextInputComponentData, "type">;
207
236
  type CreateModalInputData = TextInputData;
@@ -281,4 +310,4 @@ declare function findRole(guild: Guild): {
281
310
  */
282
311
  declare function extractMentionId(mention: string): string | null;
283
312
 
284
- export { type AnyEmbedData, CustomItents, CustomPartials, type EmbedPlusAssetData, type EmbedPlusAuthorData, EmbedPlusBuilder, type EmbedPlusColorData, type EmbedPlusData, type EmbedPlusFooterData, type EmbedPlusProperty, chars, createEmbed, createEmbedAsset, createEmbedAuthor, createEmbedFiles, createEmbedFooter, createLinkButton, createModalFields, createModalInput, createRow, extractMentionId, findChannel, findCommand, findEmoji, findMember, findMessage, findRole, getChannelUrlInfo, getMessageUrlInfo, modalFieldsToRecord, setMobileStatus };
313
+ export { type AnyEmbedData, CustomItents, CustomPartials, type EmbedPlusAssetData, type EmbedPlusAuthorData, EmbedPlusBuilder, type EmbedPlusColorData, type EmbedPlusData, type EmbedPlusFooterData, type EmbedPlusProperty, chars, createCommandOptions, createEmbed, createEmbedAsset, createEmbedAuthor, createEmbedFiles, createEmbedFooter, createLinkButton, createModalFields, createModalInput, createRow, createSubCommands, createSubCommandsGroups, extractMentionId, findChannel, findCommand, findEmoji, findMember, findMessage, findRole, getChannelUrlInfo, getMessageUrlInfo, modalFieldsToRecord, setMobileStatus };
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import * as discord_js from 'discord.js';
2
- import { GatewayIntentBits, Partials, Attachment, AttachmentBuilder, EmbedAssetData, Guild, GuildMember, User, ClientUser, ImageURLOptions, EmbedFooterData, ColorResolvable, APIEmbed, Embed, EmbedData, EmbedBuilder, AttachmentData, AnyComponentBuilder, ActionRowBuilder, ButtonBuilder, LinkButtonComponentData, ChannelType, CommandInteractionOption, Client, ApplicationCommand, TextInputBuilder, ModalSubmitFields, Collection, TextInputComponent, TextInputComponentData, GuildEmoji, GuildTextBasedChannel, Message, Role } from 'discord.js';
2
+ import { GatewayIntentBits, Partials, Attachment, AttachmentBuilder, EmbedAssetData, Guild, GuildMember, User, ClientUser, ImageURLOptions, EmbedFooterData, ColorResolvable, APIEmbed, Embed, EmbedData, EmbedBuilder, AttachmentData, AnyComponentBuilder, ActionRowBuilder, ButtonBuilder, LinkButtonComponentData, ChannelType, CommandInteractionOption, Client, ApplicationCommand, ApplicationCommandOptionData, ApplicationCommandSubCommandData, ApplicationCommandSubGroupData, TextInputBuilder, ModalSubmitFields, Collection, TextInputComponent, TextInputComponentData, GuildEmoji, GuildTextBasedChannel, Message, Role } from 'discord.js';
3
3
  export * from '@magicyan/core';
4
4
 
5
5
  declare const chars: {
@@ -202,6 +202,35 @@ declare function findCommand(guildOrClient: Guild | Client<true>): {
202
202
  guild: discord_js.GuildResolvable;
203
203
  }> | undefined;
204
204
  };
205
+ type OmitCommandDataProps = "name" | "options" | "autocomplete" | "type";
206
+ type CommandOption = Exclude<Omit<ApplicationCommandOptionData, "name">, ApplicationCommandSubGroupData | ApplicationCommandSubCommandData>;
207
+ type CommandOptions = Record<string, CommandOption>;
208
+ /**
209
+ * Creates an array of command options, quickly define command options with a record where the key is the option name and the value is the definitions
210
+ * @param groups
211
+ * @returns
212
+ */
213
+ declare function createCommandOptions(options: CommandOptions): ApplicationCommandOptionData[];
214
+ type SubCommand = Omit<ApplicationCommandSubCommandData, OmitCommandDataProps> & {
215
+ options?: Record<string, CommandOption>;
216
+ };
217
+ type SubCommands = Record<string, SubCommand>;
218
+ /**
219
+ * Create an array of command options, quickly define subcommands with a record where the key is the subcommand name and the value is the definitions
220
+ * @param groups
221
+ * @returns
222
+ */
223
+ declare function createSubCommands(subcommands: SubCommands): ApplicationCommandSubCommandData[];
224
+ type SubCommandGroup = Omit<ApplicationCommandSubGroupData, OmitCommandDataProps> & {
225
+ subcommands: SubCommands;
226
+ };
227
+ type SubCommandGroups = Record<string, SubCommandGroup>;
228
+ /**
229
+ * Create an array of command options, quickly define groups of subcommands with a record where the key is the group name and the value is the definitions
230
+ * @param groups
231
+ * @returns
232
+ */
233
+ declare function createSubCommandsGroups(groups: SubCommandGroups): ApplicationCommandSubGroupData[];
205
234
 
206
235
  type TextInputData = Omit<TextInputComponentData, "type">;
207
236
  type CreateModalInputData = TextInputData;
@@ -281,4 +310,4 @@ declare function findRole(guild: Guild): {
281
310
  */
282
311
  declare function extractMentionId(mention: string): string | null;
283
312
 
284
- export { type AnyEmbedData, CustomItents, CustomPartials, type EmbedPlusAssetData, type EmbedPlusAuthorData, EmbedPlusBuilder, type EmbedPlusColorData, type EmbedPlusData, type EmbedPlusFooterData, type EmbedPlusProperty, chars, createEmbed, createEmbedAsset, createEmbedAuthor, createEmbedFiles, createEmbedFooter, createLinkButton, createModalFields, createModalInput, createRow, extractMentionId, findChannel, findCommand, findEmoji, findMember, findMessage, findRole, getChannelUrlInfo, getMessageUrlInfo, modalFieldsToRecord, setMobileStatus };
313
+ export { type AnyEmbedData, CustomItents, CustomPartials, type EmbedPlusAssetData, type EmbedPlusAuthorData, EmbedPlusBuilder, type EmbedPlusColorData, type EmbedPlusData, type EmbedPlusFooterData, type EmbedPlusProperty, chars, createCommandOptions, createEmbed, createEmbedAsset, createEmbedAuthor, createEmbedFiles, createEmbedFooter, createLinkButton, createModalFields, createModalInput, createRow, createSubCommands, createSubCommandsGroups, extractMentionId, findChannel, findCommand, findEmoji, findMember, findMessage, findRole, getChannelUrlInfo, getMessageUrlInfo, modalFieldsToRecord, setMobileStatus };
package/dist/index.mjs CHANGED
@@ -8,7 +8,7 @@ export { createEmbedFooter } from './functions/embeds/footer.mjs';
8
8
  export { createEmbedFiles } from './functions/embeds/files.mjs';
9
9
  export { createLinkButton, createRow } from './functions/components.mjs';
10
10
  export { findChannel, getChannelUrlInfo } from './functions/channels.mjs';
11
- export { findCommand } from './functions/commands.mjs';
11
+ export { createCommandOptions, createSubCommands, createSubCommandsGroups, findCommand } from './functions/commands.mjs';
12
12
  export { createModalFields, createModalInput, modalFieldsToRecord } from './functions/modals.mjs';
13
13
  export { findEmoji } from './functions/emojis.mjs';
14
14
  export { findMember } from './functions/members.mjs';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@magicyan/discord",
3
- "version": "1.0.31",
3
+ "version": "1.0.32",
4
4
  "description": "Simple functions to facilitate discord bot development",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -35,13 +35,13 @@
35
35
  "dev": "tsx --env-file .env playground/index.ts"
36
36
  },
37
37
  "devDependencies": {
38
- "tsx": "^4.7.0",
38
+ "tsx": "^4.10.0",
39
39
  "unbuild": "^2.0.0"
40
40
  },
41
41
  "dependencies": {
42
- "@magicyan/core": "^1.0.18"
42
+ "@magicyan/core": "^1.0.19"
43
43
  },
44
44
  "peerDependencies": {
45
- "discord.js": "^14.14.1"
45
+ "discord.js": "^14.15.2"
46
46
  }
47
- }
47
+ }