@magicyan/discord 1.0.21 → 1.0.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.mts CHANGED
@@ -1,5 +1,5 @@
1
1
  import * as discord_js from 'discord.js';
2
- import { GatewayIntentBits, Partials, ChannelType, Guild, CommandInteractionOption, Client, ApplicationCommand, AnyComponentBuilder, ActionRowBuilder, TextInputBuilder, ButtonBuilder, ActionRow, MessageActionRowComponent, TextInputComponentData, LinkButtonComponentData, ButtonComponent, StringSelectMenuComponent, UserSelectMenuComponent, ChannelSelectMenuComponent, RoleSelectMenuComponent, MentionableSelectMenuComponent, EmbedAuthorData, EmbedFooterData, EmbedAssetData, EmbedBuilder, User, ImageURLOptions, Attachment, AttachmentBuilder, EmbedData, APIEmbed, Embed, ColorResolvable, GuildEmoji, GuildBasedChannel, Role, GuildMember, GuildTextBasedChannel, Message } from 'discord.js';
2
+ import { GatewayIntentBits, Partials, ChannelType, Guild, CommandInteractionOption, Client, ApplicationCommand, AnyComponentBuilder, ActionRowBuilder, TextInputBuilder, ButtonBuilder, ActionRow, MessageActionRowComponent, TextInputComponentData, LinkButtonComponentData, ButtonComponent, StringSelectMenuComponent, UserSelectMenuComponent, ChannelSelectMenuComponent, RoleSelectMenuComponent, MentionableSelectMenuComponent, GuildEmoji, GuildBasedChannel, Role, User, GuildMember, GuildTextBasedChannel, Message, Attachment, AttachmentBuilder, EmbedAssetData, EmbedAuthorData, ImageURLOptions, EmbedBuilder, EmbedData, APIEmbed, Embed, ColorResolvable, EmbedFooterData } from 'discord.js';
3
3
  export * from '@magicyan/core';
4
4
 
5
5
  declare const chars: {
@@ -16,25 +16,33 @@ declare const CustomPartials: {
16
16
  All: Partials[];
17
17
  };
18
18
 
19
- type FindChannelFilter<T extends ChannelType> = (channel: GetChannelType<T>) => boolean;
20
- type GetChannelType<Type extends ChannelType> = Extract<NonNullable<CommandInteractionOption<"cached">["channel"]>, {
19
+ declare function setMobileStatus(): void;
20
+
21
+ type GuildChannelType = Exclude<ChannelType, ChannelType.DM>;
22
+ type FindChannelFilter<T extends GuildChannelType> = (channel: GetChannelType<T>) => boolean;
23
+ type GetChannelType<Type extends GuildChannelType> = Extract<NonNullable<CommandInteractionOption<"cached">["channel"]>, {
21
24
  type: Type extends ChannelType.PublicThread | ChannelType.AnnouncementThread ? ChannelType.PublicThread | ChannelType.AnnouncementThread : Type;
22
25
  }>;
23
- declare function findChannel<Type extends Exclude<ChannelType, ChannelType.DM> = ChannelType.GuildText>(guild: Guild, type?: Type): {
26
+ declare function findChannel<Type extends GuildChannelType = ChannelType.GuildText>(guild: Guild, type?: Type): {
24
27
  byName(name: string, filter?: FindChannelFilter<Type>): GetChannelType<Type> | undefined;
25
28
  byId(id: string): GetChannelType<Type> | undefined;
26
- byFilter(filter: FindChannelFilter<Type>): discord_js.GuildBasedChannel | undefined;
29
+ byFilter(filter: FindChannelFilter<Type>): GetChannelType<Type> | undefined;
27
30
  inCategoryId(id: string): {
28
31
  byName(name: string, filter?: FindChannelFilter<Type>): GetChannelType<Type> | undefined;
29
32
  byId(id: string, filter?: FindChannelFilter<Type>): GetChannelType<Type> | undefined;
30
- byFilter(filter: FindChannelFilter<Type>): discord_js.GuildBasedChannel | undefined;
33
+ byFilter(filter: FindChannelFilter<Type>): GetChannelType<Type> | undefined;
31
34
  };
32
35
  inCategoryName(name: string): {
33
36
  byName(name: string, filter?: FindChannelFilter<Type>): GetChannelType<Type> | undefined;
34
37
  byId(id: string, filter?: FindChannelFilter<Type>): GetChannelType<Type> | undefined;
35
- byFilter(filter: FindChannelFilter<Type>): discord_js.GuildBasedChannel | undefined;
38
+ byFilter(filter: FindChannelFilter<Type>): GetChannelType<Type> | undefined;
36
39
  };
37
40
  };
41
+ interface ChannelUrlInfo {
42
+ channelId?: string;
43
+ guildId?: string;
44
+ }
45
+ declare function getChannelUrlInfo(url: string): ChannelUrlInfo;
38
46
 
39
47
  type FindCommandFilter = (command: ApplicationCommand) => boolean;
40
48
  declare function findCommand(guildOrClient: Guild | Client<true>): {
@@ -80,72 +88,6 @@ interface MessageComponentsManager {
80
88
  }
81
89
  declare function createComponentsManager(components: ActionRow<MessageActionRowComponent>[]): MessageComponentsManager;
82
90
 
83
- interface CreateEmbedAuthorOptions {
84
- user: User;
85
- property?: "username" | "displayName" | "id" | "globalName";
86
- imageSize?: ImageURLOptions["size"];
87
- iconURL?: string;
88
- url?: string;
89
- prefix?: string;
90
- suffix?: string;
91
- }
92
- declare function createEmbedAuthor(options: CreateEmbedAuthorOptions): EmbedAuthorData;
93
- interface CreateEmbedFooterOptions {
94
- text?: string | null;
95
- iconURL?: string | null;
96
- }
97
- declare function createEmbedFooter(options: CreateEmbedFooterOptions): EmbedFooterData | undefined;
98
- type EmbedAssetOptions = Omit<EmbedAssetData, "url">;
99
- type AssetSource = string | Attachment | AttachmentBuilder | EmbedAssetData | undefined | null;
100
- declare function createEmbedAsset(source: AssetSource, options?: EmbedAssetOptions): EmbedAssetData | undefined;
101
- type EmbedBuilderPlusAssetData = AssetSource;
102
- type EmbedBuilderPlusColorData = string & {} | ColorResolvable | null;
103
- type EmbedBuilderPlusFieldData = {
104
- name: string;
105
- value: string;
106
- inline?: boolean;
107
- };
108
- type EmbedBuilderPlusFooterData = {
109
- text?: string | null;
110
- iconURL?: string | null;
111
- };
112
- type EmbedBuilderPlusAuthorData = {
113
- name: string;
114
- url?: string;
115
- iconURL?: string;
116
- };
117
- interface EmbedBuilderPlusOptions {
118
- extend?: Omit<EmbedBuilderPlusData, keyof EmbedBuilderPlusOptions> | EmbedData | APIEmbed | Embed;
119
- mergeFields?: boolean;
120
- }
121
- interface EmbedBuilderPlusData extends EmbedBuilderPlusOptions {
122
- title?: string | null;
123
- color?: EmbedBuilderPlusColorData | null;
124
- description?: string | null;
125
- url?: string | null;
126
- thumbnail?: EmbedBuilderPlusAssetData | null;
127
- image?: EmbedBuilderPlusAssetData | null;
128
- fields?: Partial<EmbedBuilderPlusFieldData>[] | null;
129
- timestamp?: string | number | Date | null;
130
- footer?: EmbedBuilderPlusFooterData;
131
- author?: EmbedBuilderPlusAuthorData;
132
- }
133
- declare class EmbedBuilderPlus extends EmbedBuilder {
134
- constructor(data: EmbedBuilderPlusData);
135
- has(property: keyof Omit<EmbedBuilderPlusData, keyof EmbedBuilderPlusOptions>): boolean;
136
- toArray(): this[];
137
- toString(space?: number): string;
138
- updateField(index: number, field: Partial<EmbedBuilderPlusFieldData>): this;
139
- deleteField(index: number): this;
140
- popField(): discord_js.APIEmbedField | undefined;
141
- setAsset(asset: "thumbnail" | "image", source: EmbedBuilderPlusAssetData): this;
142
- get fieldsLength(): number;
143
- get fields(): discord_js.APIEmbedField[];
144
- createFromThis(data?: EmbedBuilderPlusData): EmbedBuilderPlus;
145
- }
146
- type EmbedPropery<T extends keyof EmbedBuilderPlusData> = EmbedBuilderPlusData[T];
147
- declare function createEmbed(data: EmbedBuilderPlusData): EmbedBuilderPlus;
148
-
149
91
  type FindEmojiFilter = (emoji: GuildEmoji) => boolean;
150
92
  declare function findEmoji(guildOrClient: Guild | Client): {
151
93
  byName(name: string, animated?: boolean, and?: FindEmojiFilter): GuildEmoji | undefined;
@@ -175,6 +117,12 @@ declare function findMessage(channel: GuildTextBasedChannel): {
175
117
  };
176
118
  byFilter(filter: FindMessageFilter): Message<true> | undefined;
177
119
  };
120
+ interface MessageUrlInfo {
121
+ messageId?: string;
122
+ channelId?: string;
123
+ guildId?: string;
124
+ }
125
+ declare function getMessageUrlInfo(url: string): MessageUrlInfo;
178
126
 
179
127
  type FindRoleFilter = (role: Role) => boolean;
180
128
  declare function findRole(guild: Guild): {
@@ -185,4 +133,99 @@ declare function findRole(guild: Guild): {
185
133
  byFilter(filter: FindRoleFilter): Role | undefined;
186
134
  };
187
135
 
188
- export { CustomItents, CustomPartials, EmbedBuilderPlus, type EmbedPropery, chars, createComponentsManager, createEmbed, createEmbedAsset, createEmbedAuthor, createEmbedFooter, createLinkButton, createModalInput, createRow, findChannel, findCommand, findEmoji, findMember, findMessage, findRole, formatedMention };
136
+ /**
137
+ *
138
+ * @param mention Discord mentionable string
139
+ * @returns mentionable id or null
140
+ *
141
+ * ```ts
142
+ * const user = "<@264620632644255745>";
143
+ * const channel = "<#1068689068256403457>";
144
+ * const role = "<@&929925182796226632>";
145
+ *
146
+ * extractMentionId(user) // 264620632644255745
147
+ * extractMentionId(channel) // 1068689068256403457
148
+ * extractMentionId(role) // 929925182796226632
149
+ * ```
150
+ */
151
+ declare function extractMentionId(mention: string): string | null;
152
+
153
+ type EmbedAssetOptions = Omit<EmbedAssetData, "url">;
154
+ type AssetSource = string | Attachment | AttachmentBuilder | EmbedAssetData | undefined | null;
155
+ declare function createEmbedAsset(source: AssetSource, options?: EmbedAssetOptions): EmbedAssetData | undefined;
156
+
157
+ interface UserAuthorOption {
158
+ user: User;
159
+ property?: "username" | "displayName" | "id" | "globalName";
160
+ }
161
+ interface MemberAuthorOption {
162
+ member: GuildMember;
163
+ property?: "username" | "displayName" | "id" | "globalName" | "nickname";
164
+ }
165
+ type AuthorOption = UserAuthorOption | MemberAuthorOption;
166
+ type CreateEmbedAuthorOptions = AuthorOption & ImageURLOptions & {
167
+ iconURL?: string;
168
+ url?: string;
169
+ prefix?: string;
170
+ suffix?: string;
171
+ };
172
+ declare function createEmbedAuthor(options: CreateEmbedAuthorOptions): EmbedAuthorData;
173
+
174
+ type EmbedPlusAssetData = AssetSource;
175
+ type EmbedPlusColorData = string & {} | ColorResolvable | null;
176
+ type EmbedPlusFieldData = {
177
+ name: string;
178
+ value: string;
179
+ inline?: boolean;
180
+ };
181
+ type EmbedPlusFooterData = {
182
+ text?: string | null;
183
+ iconURL?: string | null;
184
+ };
185
+ type EmbedPlusAuthorData = {
186
+ name: string;
187
+ url?: string;
188
+ iconURL?: string;
189
+ };
190
+ interface EmbedPlusData {
191
+ title?: string | null;
192
+ color?: EmbedPlusColorData | null;
193
+ description?: string | null;
194
+ url?: string | null;
195
+ thumbnail?: EmbedPlusAssetData | null;
196
+ image?: EmbedPlusAssetData | null;
197
+ fields?: Partial<EmbedPlusFieldData>[] | null;
198
+ timestamp?: string | number | Date | null;
199
+ footer?: EmbedPlusFooterData;
200
+ author?: EmbedPlusAuthorData;
201
+ }
202
+ interface EmbedPlusOptions extends EmbedPlusData {
203
+ extends?: Omit<EmbedPlusData, keyof EmbedPlusOptions> | EmbedData | APIEmbed | Embed;
204
+ mergeFields?: boolean;
205
+ }
206
+ declare class EmbedPlusBuilder extends EmbedBuilder {
207
+ constructor(data: EmbedPlusOptions);
208
+ has(property: keyof Omit<EmbedPlusData, keyof EmbedPlusOptions>): boolean;
209
+ toArray(): this[];
210
+ toString(space?: number): string;
211
+ updateField(index: number, field: Partial<EmbedPlusFieldData>): this;
212
+ deleteField(index: number): this;
213
+ popField(): discord_js.APIEmbedField | undefined;
214
+ setAsset(asset: "thumbnail" | "image", source: EmbedPlusAssetData): this;
215
+ get fieldsLength(): number;
216
+ get fields(): discord_js.APIEmbedField[];
217
+ }
218
+ type EmbedPlusPropery<P extends keyof EmbedPlusData> = EmbedPlusData[P];
219
+ interface CreateEmbedOptions<B extends boolean> extends EmbedPlusOptions {
220
+ array?: B;
221
+ }
222
+ type CreateEmbedReturn<B> = undefined extends B ? EmbedPlusBuilder : false extends B ? EmbedPlusBuilder : EmbedPlusBuilder[];
223
+ declare function createEmbed<B extends boolean>(options: CreateEmbedOptions<B>): CreateEmbedReturn<B>;
224
+
225
+ interface CreateEmbedFooterOptions {
226
+ text?: string | null;
227
+ iconURL?: string | null;
228
+ }
229
+ declare function createEmbedFooter(options: CreateEmbedFooterOptions): EmbedFooterData | undefined;
230
+
231
+ export { type AssetSource, CustomItents, CustomPartials, EmbedPlusBuilder, type EmbedPlusPropery, chars, createComponentsManager, createEmbed, createEmbedAsset, createEmbedAuthor, createEmbedFooter, createLinkButton, createModalInput, createRow, extractMentionId, findChannel, findCommand, findEmoji, findMember, findMessage, findRole, formatedMention, getChannelUrlInfo, getMessageUrlInfo, setMobileStatus };
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import * as discord_js from 'discord.js';
2
- import { GatewayIntentBits, Partials, ChannelType, Guild, CommandInteractionOption, Client, ApplicationCommand, AnyComponentBuilder, ActionRowBuilder, TextInputBuilder, ButtonBuilder, ActionRow, MessageActionRowComponent, TextInputComponentData, LinkButtonComponentData, ButtonComponent, StringSelectMenuComponent, UserSelectMenuComponent, ChannelSelectMenuComponent, RoleSelectMenuComponent, MentionableSelectMenuComponent, EmbedAuthorData, EmbedFooterData, EmbedAssetData, EmbedBuilder, User, ImageURLOptions, Attachment, AttachmentBuilder, EmbedData, APIEmbed, Embed, ColorResolvable, GuildEmoji, GuildBasedChannel, Role, GuildMember, GuildTextBasedChannel, Message } from 'discord.js';
2
+ import { GatewayIntentBits, Partials, ChannelType, Guild, CommandInteractionOption, Client, ApplicationCommand, AnyComponentBuilder, ActionRowBuilder, TextInputBuilder, ButtonBuilder, ActionRow, MessageActionRowComponent, TextInputComponentData, LinkButtonComponentData, ButtonComponent, StringSelectMenuComponent, UserSelectMenuComponent, ChannelSelectMenuComponent, RoleSelectMenuComponent, MentionableSelectMenuComponent, GuildEmoji, GuildBasedChannel, Role, User, GuildMember, GuildTextBasedChannel, Message, Attachment, AttachmentBuilder, EmbedAssetData, EmbedAuthorData, ImageURLOptions, EmbedBuilder, EmbedData, APIEmbed, Embed, ColorResolvable, EmbedFooterData } from 'discord.js';
3
3
  export * from '@magicyan/core';
4
4
 
5
5
  declare const chars: {
@@ -16,25 +16,33 @@ declare const CustomPartials: {
16
16
  All: Partials[];
17
17
  };
18
18
 
19
- type FindChannelFilter<T extends ChannelType> = (channel: GetChannelType<T>) => boolean;
20
- type GetChannelType<Type extends ChannelType> = Extract<NonNullable<CommandInteractionOption<"cached">["channel"]>, {
19
+ declare function setMobileStatus(): void;
20
+
21
+ type GuildChannelType = Exclude<ChannelType, ChannelType.DM>;
22
+ type FindChannelFilter<T extends GuildChannelType> = (channel: GetChannelType<T>) => boolean;
23
+ type GetChannelType<Type extends GuildChannelType> = Extract<NonNullable<CommandInteractionOption<"cached">["channel"]>, {
21
24
  type: Type extends ChannelType.PublicThread | ChannelType.AnnouncementThread ? ChannelType.PublicThread | ChannelType.AnnouncementThread : Type;
22
25
  }>;
23
- declare function findChannel<Type extends Exclude<ChannelType, ChannelType.DM> = ChannelType.GuildText>(guild: Guild, type?: Type): {
26
+ declare function findChannel<Type extends GuildChannelType = ChannelType.GuildText>(guild: Guild, type?: Type): {
24
27
  byName(name: string, filter?: FindChannelFilter<Type>): GetChannelType<Type> | undefined;
25
28
  byId(id: string): GetChannelType<Type> | undefined;
26
- byFilter(filter: FindChannelFilter<Type>): discord_js.GuildBasedChannel | undefined;
29
+ byFilter(filter: FindChannelFilter<Type>): GetChannelType<Type> | undefined;
27
30
  inCategoryId(id: string): {
28
31
  byName(name: string, filter?: FindChannelFilter<Type>): GetChannelType<Type> | undefined;
29
32
  byId(id: string, filter?: FindChannelFilter<Type>): GetChannelType<Type> | undefined;
30
- byFilter(filter: FindChannelFilter<Type>): discord_js.GuildBasedChannel | undefined;
33
+ byFilter(filter: FindChannelFilter<Type>): GetChannelType<Type> | undefined;
31
34
  };
32
35
  inCategoryName(name: string): {
33
36
  byName(name: string, filter?: FindChannelFilter<Type>): GetChannelType<Type> | undefined;
34
37
  byId(id: string, filter?: FindChannelFilter<Type>): GetChannelType<Type> | undefined;
35
- byFilter(filter: FindChannelFilter<Type>): discord_js.GuildBasedChannel | undefined;
38
+ byFilter(filter: FindChannelFilter<Type>): GetChannelType<Type> | undefined;
36
39
  };
37
40
  };
41
+ interface ChannelUrlInfo {
42
+ channelId?: string;
43
+ guildId?: string;
44
+ }
45
+ declare function getChannelUrlInfo(url: string): ChannelUrlInfo;
38
46
 
39
47
  type FindCommandFilter = (command: ApplicationCommand) => boolean;
40
48
  declare function findCommand(guildOrClient: Guild | Client<true>): {
@@ -80,72 +88,6 @@ interface MessageComponentsManager {
80
88
  }
81
89
  declare function createComponentsManager(components: ActionRow<MessageActionRowComponent>[]): MessageComponentsManager;
82
90
 
83
- interface CreateEmbedAuthorOptions {
84
- user: User;
85
- property?: "username" | "displayName" | "id" | "globalName";
86
- imageSize?: ImageURLOptions["size"];
87
- iconURL?: string;
88
- url?: string;
89
- prefix?: string;
90
- suffix?: string;
91
- }
92
- declare function createEmbedAuthor(options: CreateEmbedAuthorOptions): EmbedAuthorData;
93
- interface CreateEmbedFooterOptions {
94
- text?: string | null;
95
- iconURL?: string | null;
96
- }
97
- declare function createEmbedFooter(options: CreateEmbedFooterOptions): EmbedFooterData | undefined;
98
- type EmbedAssetOptions = Omit<EmbedAssetData, "url">;
99
- type AssetSource = string | Attachment | AttachmentBuilder | EmbedAssetData | undefined | null;
100
- declare function createEmbedAsset(source: AssetSource, options?: EmbedAssetOptions): EmbedAssetData | undefined;
101
- type EmbedBuilderPlusAssetData = AssetSource;
102
- type EmbedBuilderPlusColorData = string & {} | ColorResolvable | null;
103
- type EmbedBuilderPlusFieldData = {
104
- name: string;
105
- value: string;
106
- inline?: boolean;
107
- };
108
- type EmbedBuilderPlusFooterData = {
109
- text?: string | null;
110
- iconURL?: string | null;
111
- };
112
- type EmbedBuilderPlusAuthorData = {
113
- name: string;
114
- url?: string;
115
- iconURL?: string;
116
- };
117
- interface EmbedBuilderPlusOptions {
118
- extend?: Omit<EmbedBuilderPlusData, keyof EmbedBuilderPlusOptions> | EmbedData | APIEmbed | Embed;
119
- mergeFields?: boolean;
120
- }
121
- interface EmbedBuilderPlusData extends EmbedBuilderPlusOptions {
122
- title?: string | null;
123
- color?: EmbedBuilderPlusColorData | null;
124
- description?: string | null;
125
- url?: string | null;
126
- thumbnail?: EmbedBuilderPlusAssetData | null;
127
- image?: EmbedBuilderPlusAssetData | null;
128
- fields?: Partial<EmbedBuilderPlusFieldData>[] | null;
129
- timestamp?: string | number | Date | null;
130
- footer?: EmbedBuilderPlusFooterData;
131
- author?: EmbedBuilderPlusAuthorData;
132
- }
133
- declare class EmbedBuilderPlus extends EmbedBuilder {
134
- constructor(data: EmbedBuilderPlusData);
135
- has(property: keyof Omit<EmbedBuilderPlusData, keyof EmbedBuilderPlusOptions>): boolean;
136
- toArray(): this[];
137
- toString(space?: number): string;
138
- updateField(index: number, field: Partial<EmbedBuilderPlusFieldData>): this;
139
- deleteField(index: number): this;
140
- popField(): discord_js.APIEmbedField | undefined;
141
- setAsset(asset: "thumbnail" | "image", source: EmbedBuilderPlusAssetData): this;
142
- get fieldsLength(): number;
143
- get fields(): discord_js.APIEmbedField[];
144
- createFromThis(data?: EmbedBuilderPlusData): EmbedBuilderPlus;
145
- }
146
- type EmbedPropery<T extends keyof EmbedBuilderPlusData> = EmbedBuilderPlusData[T];
147
- declare function createEmbed(data: EmbedBuilderPlusData): EmbedBuilderPlus;
148
-
149
91
  type FindEmojiFilter = (emoji: GuildEmoji) => boolean;
150
92
  declare function findEmoji(guildOrClient: Guild | Client): {
151
93
  byName(name: string, animated?: boolean, and?: FindEmojiFilter): GuildEmoji | undefined;
@@ -175,6 +117,12 @@ declare function findMessage(channel: GuildTextBasedChannel): {
175
117
  };
176
118
  byFilter(filter: FindMessageFilter): Message<true> | undefined;
177
119
  };
120
+ interface MessageUrlInfo {
121
+ messageId?: string;
122
+ channelId?: string;
123
+ guildId?: string;
124
+ }
125
+ declare function getMessageUrlInfo(url: string): MessageUrlInfo;
178
126
 
179
127
  type FindRoleFilter = (role: Role) => boolean;
180
128
  declare function findRole(guild: Guild): {
@@ -185,4 +133,99 @@ declare function findRole(guild: Guild): {
185
133
  byFilter(filter: FindRoleFilter): Role | undefined;
186
134
  };
187
135
 
188
- export { CustomItents, CustomPartials, EmbedBuilderPlus, type EmbedPropery, chars, createComponentsManager, createEmbed, createEmbedAsset, createEmbedAuthor, createEmbedFooter, createLinkButton, createModalInput, createRow, findChannel, findCommand, findEmoji, findMember, findMessage, findRole, formatedMention };
136
+ /**
137
+ *
138
+ * @param mention Discord mentionable string
139
+ * @returns mentionable id or null
140
+ *
141
+ * ```ts
142
+ * const user = "<@264620632644255745>";
143
+ * const channel = "<#1068689068256403457>";
144
+ * const role = "<@&929925182796226632>";
145
+ *
146
+ * extractMentionId(user) // 264620632644255745
147
+ * extractMentionId(channel) // 1068689068256403457
148
+ * extractMentionId(role) // 929925182796226632
149
+ * ```
150
+ */
151
+ declare function extractMentionId(mention: string): string | null;
152
+
153
+ type EmbedAssetOptions = Omit<EmbedAssetData, "url">;
154
+ type AssetSource = string | Attachment | AttachmentBuilder | EmbedAssetData | undefined | null;
155
+ declare function createEmbedAsset(source: AssetSource, options?: EmbedAssetOptions): EmbedAssetData | undefined;
156
+
157
+ interface UserAuthorOption {
158
+ user: User;
159
+ property?: "username" | "displayName" | "id" | "globalName";
160
+ }
161
+ interface MemberAuthorOption {
162
+ member: GuildMember;
163
+ property?: "username" | "displayName" | "id" | "globalName" | "nickname";
164
+ }
165
+ type AuthorOption = UserAuthorOption | MemberAuthorOption;
166
+ type CreateEmbedAuthorOptions = AuthorOption & ImageURLOptions & {
167
+ iconURL?: string;
168
+ url?: string;
169
+ prefix?: string;
170
+ suffix?: string;
171
+ };
172
+ declare function createEmbedAuthor(options: CreateEmbedAuthorOptions): EmbedAuthorData;
173
+
174
+ type EmbedPlusAssetData = AssetSource;
175
+ type EmbedPlusColorData = string & {} | ColorResolvable | null;
176
+ type EmbedPlusFieldData = {
177
+ name: string;
178
+ value: string;
179
+ inline?: boolean;
180
+ };
181
+ type EmbedPlusFooterData = {
182
+ text?: string | null;
183
+ iconURL?: string | null;
184
+ };
185
+ type EmbedPlusAuthorData = {
186
+ name: string;
187
+ url?: string;
188
+ iconURL?: string;
189
+ };
190
+ interface EmbedPlusData {
191
+ title?: string | null;
192
+ color?: EmbedPlusColorData | null;
193
+ description?: string | null;
194
+ url?: string | null;
195
+ thumbnail?: EmbedPlusAssetData | null;
196
+ image?: EmbedPlusAssetData | null;
197
+ fields?: Partial<EmbedPlusFieldData>[] | null;
198
+ timestamp?: string | number | Date | null;
199
+ footer?: EmbedPlusFooterData;
200
+ author?: EmbedPlusAuthorData;
201
+ }
202
+ interface EmbedPlusOptions extends EmbedPlusData {
203
+ extends?: Omit<EmbedPlusData, keyof EmbedPlusOptions> | EmbedData | APIEmbed | Embed;
204
+ mergeFields?: boolean;
205
+ }
206
+ declare class EmbedPlusBuilder extends EmbedBuilder {
207
+ constructor(data: EmbedPlusOptions);
208
+ has(property: keyof Omit<EmbedPlusData, keyof EmbedPlusOptions>): boolean;
209
+ toArray(): this[];
210
+ toString(space?: number): string;
211
+ updateField(index: number, field: Partial<EmbedPlusFieldData>): this;
212
+ deleteField(index: number): this;
213
+ popField(): discord_js.APIEmbedField | undefined;
214
+ setAsset(asset: "thumbnail" | "image", source: EmbedPlusAssetData): this;
215
+ get fieldsLength(): number;
216
+ get fields(): discord_js.APIEmbedField[];
217
+ }
218
+ type EmbedPlusPropery<P extends keyof EmbedPlusData> = EmbedPlusData[P];
219
+ interface CreateEmbedOptions<B extends boolean> extends EmbedPlusOptions {
220
+ array?: B;
221
+ }
222
+ type CreateEmbedReturn<B> = undefined extends B ? EmbedPlusBuilder : false extends B ? EmbedPlusBuilder : EmbedPlusBuilder[];
223
+ declare function createEmbed<B extends boolean>(options: CreateEmbedOptions<B>): CreateEmbedReturn<B>;
224
+
225
+ interface CreateEmbedFooterOptions {
226
+ text?: string | null;
227
+ iconURL?: string | null;
228
+ }
229
+ declare function createEmbedFooter(options: CreateEmbedFooterOptions): EmbedFooterData | undefined;
230
+
231
+ export { type AssetSource, CustomItents, CustomPartials, EmbedPlusBuilder, type EmbedPlusPropery, chars, createComponentsManager, createEmbed, createEmbedAsset, createEmbedAuthor, createEmbedFooter, createLinkButton, createModalInput, createRow, extractMentionId, findChannel, findCommand, findEmoji, findMember, findMessage, findRole, formatedMention, getChannelUrlInfo, getMessageUrlInfo, setMobileStatus };
package/dist/index.mjs CHANGED
@@ -1,12 +1,17 @@
1
1
  export { chars } from './constants/chars.mjs';
2
2
  export { CustomItents, CustomPartials } from './constants/client.mjs';
3
- export { findChannel } from './functions/channels.mjs';
3
+ export { setMobileStatus } from './functions/misc.mjs';
4
+ export { findChannel, getChannelUrlInfo } from './functions/channels.mjs';
4
5
  export { findCommand } from './functions/commands.mjs';
5
6
  export { createComponentsManager, createLinkButton, createModalInput, createRow } from './functions/components.mjs';
6
- export { EmbedBuilderPlus, createEmbed, createEmbedAsset, createEmbedAuthor, createEmbedFooter } from './functions/embeds.mjs';
7
7
  export { findEmoji } from './functions/emojis.mjs';
8
8
  export { formatedMention } from './functions/format.mjs';
9
9
  export { findMember } from './functions/members.mjs';
10
- export { findMessage } from './functions/message.mjs';
10
+ export { findMessage, getMessageUrlInfo } from './functions/message.mjs';
11
11
  export { findRole } from './functions/roles.mjs';
12
+ export { extractMentionId } from './functions/regex.mjs';
13
+ export { createEmbedAsset } from './functions/embeds/assets.mjs';
14
+ export { createEmbedAuthor } from './functions/embeds/author.mjs';
15
+ export { EmbedPlusBuilder, createEmbed } from './functions/embeds/embedplus.mjs';
16
+ export { createEmbedFooter } from './functions/embeds/footer.mjs';
12
17
  export * from '@magicyan/core';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@magicyan/discord",
3
- "version": "1.0.21",
3
+ "version": "1.0.23",
4
4
  "description": "Simple functions to facilitate discord bot development",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -32,7 +32,7 @@
32
32
  ],
33
33
  "scripts": {
34
34
  "build": "unbuild",
35
- "dev": "tsx playground/index.ts"
35
+ "dev": "tsx --env-file .env playground/index.ts"
36
36
  },
37
37
  "devDependencies": {
38
38
  "tsx": "^4.7.0",
@@ -1,136 +0,0 @@
1
- 'use strict';
2
-
3
- const discord_js = require('discord.js');
4
- const chars = require('../constants/chars.cjs');
5
- const core = require('@magicyan/core');
6
-
7
- function createEmbedAuthor(options) {
8
- const {
9
- user,
10
- property = "displayName",
11
- imageSize: size = 512,
12
- iconURL,
13
- url,
14
- prefix = "",
15
- suffix = ""
16
- } = options;
17
- return {
18
- name: prefix + user[property] + suffix,
19
- url,
20
- iconURL: iconURL || user.displayAvatarURL({ size })
21
- };
22
- }
23
- function createEmbedFooter(options) {
24
- const { text, iconURL } = options;
25
- return !text && !iconURL ? void 0 : { text: text ?? "\u200B", iconURL: core.notFound(iconURL) };
26
- }
27
- function createEmbedAsset(source, options) {
28
- if (source instanceof discord_js.Attachment || source instanceof discord_js.AttachmentBuilder) {
29
- return { url: `attachment://${source.name}`, ...options };
30
- }
31
- if (source && typeof source === "object" && "url" in source) {
32
- return source;
33
- }
34
- return source ? { url: source, ...options } : void 0;
35
- }
36
- class EmbedBuilderPlus extends discord_js.EmbedBuilder {
37
- constructor(data) {
38
- const fields = (data.mergeFields ? [data.extend?.fields ?? [], data.fields ?? []].flat() : data.fields ?? data.extend?.fields ?? []).map(({ name = chars.chars.invisible, value = chars.chars.invisible, inline }) => ({
39
- name,
40
- value,
41
- inline
42
- }));
43
- const extend = data.extend ? new EmbedBuilderPlus(
44
- data.extend instanceof discord_js.Embed ? data.extend.data : data.extend instanceof discord_js.EmbedBuilder ? data.extend.data : data.extend
45
- ).data : {};
46
- const { fields: _, ...exetendData } = extend;
47
- const embed = new discord_js.EmbedBuilder({
48
- ...exetendData,
49
- ...data.title ? { title: data.title } : {},
50
- ...data.description ? { description: data.description } : {},
51
- ...data.url ? { url: data.url } : {},
52
- ...data.footer ? { footer: createEmbedFooter(data.footer) } : {},
53
- ...data.author ? { author: data.author } : {},
54
- ...data.image ? { image: createEmbedAsset(data.image) } : {},
55
- ...data.thumbnail ? { thumbnail: createEmbedAsset(data.thumbnail) } : {},
56
- ...fields.length > 0 ? { fields } : {}
57
- });
58
- if (data.timestamp)
59
- embed.setTimestamp(
60
- typeof data.timestamp === "string" ? new Date(data.timestamp) : data.timestamp
61
- );
62
- if (data.color)
63
- embed.setColor(data.color);
64
- super(embed.data);
65
- }
66
- has(property) {
67
- return Boolean(this.data[property]);
68
- }
69
- toArray() {
70
- return [this];
71
- }
72
- toString(space = 2) {
73
- return JSON.stringify(this, null, space);
74
- }
75
- updateField(index, field) {
76
- if (this.fields.at(index)) {
77
- const fields = Array.from(this.fields);
78
- if (field.name)
79
- fields[index].name = field.name;
80
- if (field.value)
81
- fields[index].value = field.value;
82
- if (field.inline)
83
- fields[index].inline = field.inline;
84
- this.setFields(fields);
85
- }
86
- return this;
87
- }
88
- deleteField(index) {
89
- if (this.fields.at(index)) {
90
- this.setFields(this.fields.toSpliced(index, 1));
91
- }
92
- return this;
93
- }
94
- popField() {
95
- const fields = Array.from(this.fields);
96
- const field = fields.pop();
97
- this.setFields(fields);
98
- return field;
99
- }
100
- setAsset(asset, source) {
101
- let url = void 0;
102
- if (source instanceof discord_js.Attachment || source instanceof discord_js.AttachmentBuilder) {
103
- url = `attachment://${source.name}`;
104
- }
105
- if (source && typeof source === "object" && "url" in source) {
106
- url = source.url;
107
- }
108
- if (!url)
109
- return this;
110
- if (asset === "thumbnail") {
111
- this.setImage(url);
112
- } else {
113
- this.setThumbnail(url);
114
- }
115
- return this;
116
- }
117
- get fieldsLength() {
118
- return this.data.fields?.length ?? 0;
119
- }
120
- get fields() {
121
- return this.data.fields ?? [];
122
- }
123
- createFromThis(data = {}) {
124
- data.extend = this;
125
- return new EmbedBuilderPlus(data);
126
- }
127
- }
128
- function createEmbed(data) {
129
- return new EmbedBuilderPlus(data);
130
- }
131
-
132
- exports.EmbedBuilderPlus = EmbedBuilderPlus;
133
- exports.createEmbed = createEmbed;
134
- exports.createEmbedAsset = createEmbedAsset;
135
- exports.createEmbedAuthor = createEmbedAuthor;
136
- exports.createEmbedFooter = createEmbedFooter;