@magicyan/discord 1.0.27 → 1.0.29

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, ButtonBuilder, ActionRow, MessageActionRowComponent, LinkButtonComponentData, ButtonComponent, StringSelectMenuComponent, UserSelectMenuComponent, ChannelSelectMenuComponent, RoleSelectMenuComponent, MentionableSelectMenuComponent, TextInputBuilder, ModalSubmitFields, Collection, TextInputComponent, TextInputComponentData, GuildEmoji, GuildBasedChannel, Role, User, GuildMember, GuildTextBasedChannel, Message, Attachment, AttachmentBuilder, EmbedAssetData, EmbedAuthorData, ImageURLOptions, EmbedFooterData, APIEmbed, Embed, EmbedBuilder, EmbedData, ColorResolvable } from 'discord.js';
2
+ import { GatewayIntentBits, Partials, Attachment, AttachmentBuilder, EmbedAssetData, Guild, GuildMember, User, ImageURLOptions, EmbedFooterData, APIEmbed, Embed, EmbedData, EmbedBuilder, AttachmentData, ColorResolvable, AnyComponentBuilder, ActionRowBuilder, ButtonBuilder, LinkButtonComponentData, ChannelType, CommandInteractionOption, Client, ApplicationCommand, 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: {
@@ -18,6 +18,141 @@ declare const CustomPartials: {
18
18
 
19
19
  declare function setMobileStatus(): void;
20
20
 
21
+ type EmbedPlusAssetData = string | Attachment | AttachmentBuilder | EmbedAssetData | undefined | null;
22
+ type EmbedAssetOptions = Omit<EmbedAssetData, "url">;
23
+ declare function createEmbedAsset(source: EmbedPlusAssetData, options?: EmbedAssetOptions): EmbedAssetData | undefined;
24
+
25
+ interface MemberAuthor {
26
+ property?: "username" | "displayName" | "id" | "globalName" | "nickname";
27
+ }
28
+ interface UserAuthor {
29
+ property?: "username" | "displayName" | "id" | "globalName";
30
+ }
31
+ interface GuildAuthor {
32
+ property?: "name" | "id";
33
+ }
34
+ type AuthorType = Guild | GuildMember | User;
35
+ type CreateEmbedAuthorOptions<T extends AuthorType> = {
36
+ iconURL?: string;
37
+ url?: string | null;
38
+ prefix?: string;
39
+ suffix?: string;
40
+ } & ImageURLOptions & (T extends User ? UserAuthor : T extends GuildMember ? MemberAuthor : T extends Guild ? GuildAuthor : never);
41
+ declare function createEmbedAuthor<T extends AuthorType>(type: T, options?: CreateEmbedAuthorOptions<T>): {
42
+ name: string;
43
+ url: string | undefined;
44
+ iconURL: string | undefined;
45
+ };
46
+
47
+ type EmbedPlusFieldData = {
48
+ name: string;
49
+ value: string;
50
+ inline?: boolean;
51
+ };
52
+ type FieldPredicate = (field: EmbedPlusFieldData, index: number, obj: EmbedPlusFieldData[]) => boolean;
53
+ declare class EmbedPlusFields {
54
+ private embed;
55
+ private set fields(value);
56
+ private get fields();
57
+ constructor(embed: EmbedPlusBuilder);
58
+ [Symbol.iterator](): {
59
+ next(): IteratorResult<EmbedPlusFieldData>;
60
+ };
61
+ get length(): number;
62
+ get record(): Record<string, string | undefined>;
63
+ /**
64
+ * Get a filed by index
65
+ * @param name Field name
66
+ */
67
+ get(name: string): EmbedPlusFieldData | undefined;
68
+ /**
69
+ * Get a field by name
70
+ * @param index Field index
71
+ */
72
+ get(index: number): EmbedPlusFieldData | undefined;
73
+ find(predicate: FieldPredicate): EmbedPlusFieldData | undefined;
74
+ push(...fields: EmbedPlusFieldData[]): void;
75
+ set(...fields: EmbedPlusFieldData[]): void;
76
+ map<U>(callback: (value: EmbedPlusFieldData, index: number, array: EmbedPlusFieldData[]) => U): U[];
77
+ update(predicate: string | number | FieldPredicate, field: Partial<EmbedPlusFieldData>): boolean;
78
+ delete(predicate: string | number | FieldPredicate): boolean;
79
+ /**
80
+ * Remove all fields
81
+ */
82
+ clear(): this;
83
+ toArray(): EmbedPlusFieldData[];
84
+ private getPredicateIndex;
85
+ }
86
+
87
+ type EmbedPlusFooterData = {
88
+ text?: string | null;
89
+ iconURL?: string | null;
90
+ };
91
+ declare function createEmbedFooter(options: EmbedPlusFooterData): EmbedFooterData | undefined;
92
+
93
+ type EmbedPlusColorData = string & {} | ColorResolvable | null;
94
+ type EmbedPlusAuthorData = {
95
+ name: string;
96
+ url?: string;
97
+ iconURL?: string;
98
+ };
99
+ interface EmbedPlusData {
100
+ title?: string | null;
101
+ color?: EmbedPlusColorData | null;
102
+ description?: string | null;
103
+ url?: string | null;
104
+ thumbnail?: EmbedPlusAssetData;
105
+ image?: EmbedPlusAssetData;
106
+ fields?: Partial<EmbedPlusFieldData>[] | null;
107
+ timestamp?: string | number | Date | null;
108
+ footer?: EmbedPlusFooterData;
109
+ author?: EmbedPlusAuthorData;
110
+ }
111
+ type AnyEmbedData = APIEmbed | Embed | EmbedData;
112
+ interface MessageWithEmbeds {
113
+ embeds: Array<Embed>;
114
+ }
115
+ interface InteractionWithEmbeds {
116
+ message: MessageWithEmbeds;
117
+ }
118
+ interface EmbedPlusOptions extends EmbedPlusData {
119
+ extends?: EmbedPlusData | AnyEmbedData | EmbedBuilder;
120
+ mergeFields?: boolean;
121
+ }
122
+ declare class EmbedPlusBuilder extends EmbedBuilder {
123
+ fields: EmbedPlusFields;
124
+ constructor(data: EmbedPlusOptions);
125
+ update(data: EmbedPlusData): this;
126
+ has(property: keyof EmbedPlusData): boolean;
127
+ toArray(): EmbedPlusBuilder[];
128
+ /**
129
+ *
130
+ * @param data
131
+ * @param space Adds indentation, white space, and line break characters to the return-value JSON text to make it easier to read.
132
+ * @returns AttachmentBuilder
133
+ *
134
+ * Create a json attachment file from this embed
135
+ */
136
+ toAttachment(data?: AttachmentData, space?: number): AttachmentBuilder;
137
+ toString(space?: number): string;
138
+ setBorderColor(color: EmbedPlusColorData | null): this;
139
+ setAsset(asset: "thumbnail" | "image", source: EmbedPlusAssetData): this;
140
+ static fromInteraction(interaction: InteractionWithEmbeds, index?: number, data?: EmbedPlusData): EmbedPlusBuilder;
141
+ static fromMessage(message: MessageWithEmbeds, index?: number, data?: EmbedPlusData): EmbedPlusBuilder;
142
+ }
143
+ type EmbedPlusProperty<P extends keyof EmbedPlusData> = EmbedPlusData[P];
144
+ interface CreateEmbedOptions<B extends boolean> extends EmbedPlusOptions {
145
+ array?: B;
146
+ interaction?: InteractionWithEmbeds;
147
+ }
148
+ type CreateEmbedReturn<B> = undefined extends B ? EmbedPlusBuilder : false extends B ? EmbedPlusBuilder : EmbedPlusBuilder[];
149
+ declare function createEmbed<B extends boolean>(options: CreateEmbedOptions<B>): CreateEmbedReturn<B>;
150
+
151
+ declare function createRow<Component extends AnyComponentBuilder>(...components: Component[]): ActionRowBuilder<Component>;
152
+ interface CreateLinkButtonData extends Omit<LinkButtonComponentData, "style" | "type"> {
153
+ }
154
+ declare function createLinkButton(data: CreateLinkButtonData): ButtonBuilder;
155
+
21
156
  type GuildChannelType = Exclude<ChannelType, ChannelType.DM>;
22
157
  type FindChannelFilter<T extends GuildChannelType> = (channel: GetChannelType<T>) => boolean;
23
158
  type GetChannelType<Type extends GuildChannelType> = Extract<NonNullable<CommandInteractionOption<"cached">["channel"]>, {
@@ -57,41 +192,13 @@ declare function findCommand(guildOrClient: Guild | Client<true>): {
57
192
  }> | undefined;
58
193
  };
59
194
 
60
- declare function createRow<Component extends AnyComponentBuilder>(...components: Component[]): ActionRowBuilder<Component>;
61
- interface CreateLinkButtonData extends Omit<LinkButtonComponentData, "style" | "type"> {
62
- }
63
- declare function createLinkButton(data: CreateLinkButtonData): ButtonBuilder;
64
- interface MessageComponentsManager {
65
- getButton(customId: string): ButtonComponent | undefined;
66
- getButton(customId: string, required: true): ButtonComponent;
67
- getStringSelect(customId: string): StringSelectMenuComponent | undefined;
68
- getStringSelect(customId: string, required: true): StringSelectMenuComponent;
69
- getUserSelect(customId: string): UserSelectMenuComponent | undefined;
70
- getUserSelect(customId: string, required: true): UserSelectMenuComponent;
71
- getChannelSelect(customId: string): ChannelSelectMenuComponent | undefined;
72
- getChannelSelect(customId: string, required: true): ChannelSelectMenuComponent;
73
- getRoleSelect(customId: string): RoleSelectMenuComponent | undefined;
74
- getRoleSelect(customId: string, required: true): RoleSelectMenuComponent;
75
- getMentionableSelect(customId: string): MentionableSelectMenuComponent | undefined;
76
- getMentionableSelect(customId: string, required: true): MentionableSelectMenuComponent;
77
- resolved: {
78
- buttons: ButtonComponent[];
79
- stringSelects: StringSelectMenuComponent[];
80
- userSelects: UserSelectMenuComponent[];
81
- channelSelects: ChannelSelectMenuComponent[];
82
- roleSelects: RoleSelectMenuComponent[];
83
- mentionableSelects: MentionableSelectMenuComponent[];
84
- };
85
- }
86
- declare function createComponentsManager(components: ActionRow<MessageActionRowComponent>[]): MessageComponentsManager;
87
-
88
195
  type TextInputData = Omit<TextInputComponentData, "type">;
89
196
  type CreateModalInputData = TextInputData;
90
197
  declare function createModalInput(data: CreateModalInputData): ActionRowBuilder<TextInputBuilder>;
91
198
  type ModalFieldsData = Record<string, Omit<TextInputData, "customId">>;
92
199
  declare function createModalFields(data: ModalFieldsData): ActionRowBuilder<TextInputBuilder>[];
93
- type ModalFieldsRecord = Record<string, string>;
94
- declare function modalFieldsToRecord(fields: ModalSubmitFields | Collection<string, TextInputComponent>): ModalFieldsRecord;
200
+ type ModalFieldsRecord<K extends string> = Record<K, string>;
201
+ declare function modalFieldsToRecord<K extends string = string>(fields: ModalSubmitFields | Collection<string, TextInputComponent>): ModalFieldsRecord<K>;
95
202
 
96
203
  type FindEmojiFilter = (emoji: GuildEmoji) => boolean;
97
204
  declare function findEmoji(guildOrClient: Guild | Client): {
@@ -100,8 +207,6 @@ declare function findEmoji(guildOrClient: Guild | Client): {
100
207
  byFilter(filter: FindEmojiFilter): GuildEmoji | undefined;
101
208
  };
102
209
 
103
- declare function formatedMention(ref: GuildBasedChannel | Role | User | undefined | null, alt?: string): string;
104
-
105
210
  type FindMemberFilter = (member: GuildMember) => boolean;
106
211
  declare function findMember(guild: Guild): {
107
212
  byGlobalName(globalName: string, and?: FindMemberFilter): GuildMember | undefined;
@@ -165,115 +270,4 @@ declare function findRole(guild: Guild): {
165
270
  */
166
271
  declare function extractMentionId(mention: string): string | null;
167
272
 
168
- type EmbedPlusAssetData = string | Attachment | AttachmentBuilder | EmbedAssetData | undefined | null;
169
- type EmbedAssetOptions = Omit<EmbedAssetData, "url">;
170
- declare function createEmbedAsset(source: EmbedPlusAssetData, options?: EmbedAssetOptions): EmbedAssetData | undefined;
171
-
172
- interface UserAuthorOption {
173
- user: User;
174
- property?: "username" | "displayName" | "id" | "globalName";
175
- }
176
- interface MemberAuthorOption {
177
- member: GuildMember;
178
- property?: "username" | "displayName" | "id" | "globalName" | "nickname";
179
- }
180
- type AuthorOption = UserAuthorOption | MemberAuthorOption;
181
- type CreateEmbedAuthorOptions = AuthorOption & ImageURLOptions & {
182
- iconURL?: string;
183
- url?: string;
184
- prefix?: string;
185
- suffix?: string;
186
- };
187
- declare function createEmbedAuthor(options: CreateEmbedAuthorOptions): EmbedAuthorData;
188
-
189
- type EmbedPlusFooterData = {
190
- text?: string | null;
191
- iconURL?: string | null;
192
- };
193
- declare function createEmbedFooter(options: EmbedPlusFooterData): EmbedFooterData | undefined;
194
-
195
- type EmbedPlusFieldData = {
196
- name: string;
197
- value: string;
198
- inline?: boolean;
199
- };
200
- type FieldPredicate = (field: EmbedPlusFieldData, index: number, obj: EmbedPlusFieldData[]) => boolean;
201
- declare class EmbedPlusFields {
202
- private embed;
203
- private set fields(value);
204
- private get fields();
205
- constructor(embed: EmbedPlusBuilder);
206
- [Symbol.iterator](): {
207
- next(): IteratorResult<EmbedPlusFieldData>;
208
- };
209
- get length(): number;
210
- get record(): Record<string, string | undefined>;
211
- /**
212
- * Get a filed by index
213
- * @param name Field name
214
- */
215
- get(name: string): EmbedPlusFieldData | undefined;
216
- /**
217
- * Get a field by name
218
- * @param index Field index
219
- */
220
- get(index: number): EmbedPlusFieldData | undefined;
221
- find(predicate: FieldPredicate): EmbedPlusFieldData | undefined;
222
- push(...fields: EmbedPlusFieldData[]): void;
223
- set(...fields: EmbedPlusFieldData[]): void;
224
- update(predicate: string | number | FieldPredicate, field: Partial<EmbedPlusFieldData>): boolean;
225
- delete(predicate: string | number | FieldPredicate): boolean;
226
- toArray(): EmbedPlusFieldData[];
227
- private getPredicateIndex;
228
- }
229
-
230
- type EmbedPlusColorData = string & {} | ColorResolvable | null;
231
- type EmbedPlusAuthorData = {
232
- name: string;
233
- url?: string;
234
- iconURL?: string;
235
- };
236
- interface EmbedPlusData {
237
- title?: string | null;
238
- color?: EmbedPlusColorData | null;
239
- description?: string | null;
240
- url?: string | null;
241
- thumbnail?: EmbedPlusAssetData;
242
- image?: EmbedPlusAssetData;
243
- fields?: Partial<EmbedPlusFieldData>[] | null;
244
- timestamp?: string | number | Date | null;
245
- footer?: EmbedPlusFooterData;
246
- author?: EmbedPlusAuthorData;
247
- }
248
- type AnyEmbed = APIEmbed | Embed | EmbedBuilder | EmbedData;
249
- interface MessageWithEmbeds {
250
- embeds: Array<Embed>;
251
- }
252
- interface InteractionWithEmbeds {
253
- message: MessageWithEmbeds;
254
- }
255
- interface EmbedPlusOptions extends EmbedPlusData {
256
- extends?: Omit<EmbedPlusData, keyof EmbedPlusOptions> | AnyEmbed;
257
- mergeFields?: boolean;
258
- }
259
- declare class EmbedPlusBuilder extends EmbedBuilder {
260
- fields: EmbedPlusFields;
261
- constructor(data: EmbedPlusOptions);
262
- update(data: EmbedPlusData): this;
263
- has(property: keyof Omit<EmbedPlusData, keyof EmbedPlusOptions>): boolean;
264
- toArray(): EmbedPlusBuilder[];
265
- toString(space?: number): string;
266
- setBorderColor(color: EmbedPlusColorData | null): this;
267
- setAsset(asset: "thumbnail" | "image", source: EmbedPlusAssetData): this;
268
- static fromInteraction(interaction: InteractionWithEmbeds, index?: number, data?: EmbedPlusData): EmbedPlusBuilder;
269
- static fromMessage(message: MessageWithEmbeds, index?: number, data?: EmbedPlusData): EmbedPlusBuilder;
270
- }
271
- type EmbedPlusProperty<P extends keyof EmbedPlusData> = EmbedPlusData[P];
272
- interface CreateEmbedOptions<B extends boolean> extends EmbedPlusOptions {
273
- array?: B;
274
- interaction?: InteractionWithEmbeds;
275
- }
276
- type CreateEmbedReturn<B> = undefined extends B ? EmbedPlusBuilder : false extends B ? EmbedPlusBuilder : EmbedPlusBuilder[];
277
- declare function createEmbed<B extends boolean>(options: CreateEmbedOptions<B>): CreateEmbedReturn<B>;
278
-
279
- export { type AnyEmbed, CustomItents, CustomPartials, type EmbedPlusAssetData, EmbedPlusBuilder, type EmbedPlusData, type EmbedPlusFooterData, type EmbedPlusProperty, chars, createComponentsManager, createEmbed, createEmbedAsset, createEmbedAuthor, createEmbedFooter, createLinkButton, createModalFields, createModalInput, createRow, extractMentionId, findChannel, findCommand, findEmoji, findMember, findMessage, findRole, formatedMention, getChannelUrlInfo, getMessageUrlInfo, modalFieldsToRecord, setMobileStatus };
273
+ export { type AnyEmbedData, CustomItents, CustomPartials, type EmbedPlusAssetData, EmbedPlusBuilder, type EmbedPlusData, type EmbedPlusFooterData, type EmbedPlusProperty, chars, createEmbed, createEmbedAsset, createEmbedAuthor, createEmbedFooter, createLinkButton, createModalFields, createModalInput, createRow, 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, ChannelType, Guild, CommandInteractionOption, Client, ApplicationCommand, AnyComponentBuilder, ActionRowBuilder, ButtonBuilder, ActionRow, MessageActionRowComponent, LinkButtonComponentData, ButtonComponent, StringSelectMenuComponent, UserSelectMenuComponent, ChannelSelectMenuComponent, RoleSelectMenuComponent, MentionableSelectMenuComponent, TextInputBuilder, ModalSubmitFields, Collection, TextInputComponent, TextInputComponentData, GuildEmoji, GuildBasedChannel, Role, User, GuildMember, GuildTextBasedChannel, Message, Attachment, AttachmentBuilder, EmbedAssetData, EmbedAuthorData, ImageURLOptions, EmbedFooterData, APIEmbed, Embed, EmbedBuilder, EmbedData, ColorResolvable } from 'discord.js';
2
+ import { GatewayIntentBits, Partials, Attachment, AttachmentBuilder, EmbedAssetData, Guild, GuildMember, User, ImageURLOptions, EmbedFooterData, APIEmbed, Embed, EmbedData, EmbedBuilder, AttachmentData, ColorResolvable, AnyComponentBuilder, ActionRowBuilder, ButtonBuilder, LinkButtonComponentData, ChannelType, CommandInteractionOption, Client, ApplicationCommand, 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: {
@@ -18,6 +18,141 @@ declare const CustomPartials: {
18
18
 
19
19
  declare function setMobileStatus(): void;
20
20
 
21
+ type EmbedPlusAssetData = string | Attachment | AttachmentBuilder | EmbedAssetData | undefined | null;
22
+ type EmbedAssetOptions = Omit<EmbedAssetData, "url">;
23
+ declare function createEmbedAsset(source: EmbedPlusAssetData, options?: EmbedAssetOptions): EmbedAssetData | undefined;
24
+
25
+ interface MemberAuthor {
26
+ property?: "username" | "displayName" | "id" | "globalName" | "nickname";
27
+ }
28
+ interface UserAuthor {
29
+ property?: "username" | "displayName" | "id" | "globalName";
30
+ }
31
+ interface GuildAuthor {
32
+ property?: "name" | "id";
33
+ }
34
+ type AuthorType = Guild | GuildMember | User;
35
+ type CreateEmbedAuthorOptions<T extends AuthorType> = {
36
+ iconURL?: string;
37
+ url?: string | null;
38
+ prefix?: string;
39
+ suffix?: string;
40
+ } & ImageURLOptions & (T extends User ? UserAuthor : T extends GuildMember ? MemberAuthor : T extends Guild ? GuildAuthor : never);
41
+ declare function createEmbedAuthor<T extends AuthorType>(type: T, options?: CreateEmbedAuthorOptions<T>): {
42
+ name: string;
43
+ url: string | undefined;
44
+ iconURL: string | undefined;
45
+ };
46
+
47
+ type EmbedPlusFieldData = {
48
+ name: string;
49
+ value: string;
50
+ inline?: boolean;
51
+ };
52
+ type FieldPredicate = (field: EmbedPlusFieldData, index: number, obj: EmbedPlusFieldData[]) => boolean;
53
+ declare class EmbedPlusFields {
54
+ private embed;
55
+ private set fields(value);
56
+ private get fields();
57
+ constructor(embed: EmbedPlusBuilder);
58
+ [Symbol.iterator](): {
59
+ next(): IteratorResult<EmbedPlusFieldData>;
60
+ };
61
+ get length(): number;
62
+ get record(): Record<string, string | undefined>;
63
+ /**
64
+ * Get a filed by index
65
+ * @param name Field name
66
+ */
67
+ get(name: string): EmbedPlusFieldData | undefined;
68
+ /**
69
+ * Get a field by name
70
+ * @param index Field index
71
+ */
72
+ get(index: number): EmbedPlusFieldData | undefined;
73
+ find(predicate: FieldPredicate): EmbedPlusFieldData | undefined;
74
+ push(...fields: EmbedPlusFieldData[]): void;
75
+ set(...fields: EmbedPlusFieldData[]): void;
76
+ map<U>(callback: (value: EmbedPlusFieldData, index: number, array: EmbedPlusFieldData[]) => U): U[];
77
+ update(predicate: string | number | FieldPredicate, field: Partial<EmbedPlusFieldData>): boolean;
78
+ delete(predicate: string | number | FieldPredicate): boolean;
79
+ /**
80
+ * Remove all fields
81
+ */
82
+ clear(): this;
83
+ toArray(): EmbedPlusFieldData[];
84
+ private getPredicateIndex;
85
+ }
86
+
87
+ type EmbedPlusFooterData = {
88
+ text?: string | null;
89
+ iconURL?: string | null;
90
+ };
91
+ declare function createEmbedFooter(options: EmbedPlusFooterData): EmbedFooterData | undefined;
92
+
93
+ type EmbedPlusColorData = string & {} | ColorResolvable | null;
94
+ type EmbedPlusAuthorData = {
95
+ name: string;
96
+ url?: string;
97
+ iconURL?: string;
98
+ };
99
+ interface EmbedPlusData {
100
+ title?: string | null;
101
+ color?: EmbedPlusColorData | null;
102
+ description?: string | null;
103
+ url?: string | null;
104
+ thumbnail?: EmbedPlusAssetData;
105
+ image?: EmbedPlusAssetData;
106
+ fields?: Partial<EmbedPlusFieldData>[] | null;
107
+ timestamp?: string | number | Date | null;
108
+ footer?: EmbedPlusFooterData;
109
+ author?: EmbedPlusAuthorData;
110
+ }
111
+ type AnyEmbedData = APIEmbed | Embed | EmbedData;
112
+ interface MessageWithEmbeds {
113
+ embeds: Array<Embed>;
114
+ }
115
+ interface InteractionWithEmbeds {
116
+ message: MessageWithEmbeds;
117
+ }
118
+ interface EmbedPlusOptions extends EmbedPlusData {
119
+ extends?: EmbedPlusData | AnyEmbedData | EmbedBuilder;
120
+ mergeFields?: boolean;
121
+ }
122
+ declare class EmbedPlusBuilder extends EmbedBuilder {
123
+ fields: EmbedPlusFields;
124
+ constructor(data: EmbedPlusOptions);
125
+ update(data: EmbedPlusData): this;
126
+ has(property: keyof EmbedPlusData): boolean;
127
+ toArray(): EmbedPlusBuilder[];
128
+ /**
129
+ *
130
+ * @param data
131
+ * @param space Adds indentation, white space, and line break characters to the return-value JSON text to make it easier to read.
132
+ * @returns AttachmentBuilder
133
+ *
134
+ * Create a json attachment file from this embed
135
+ */
136
+ toAttachment(data?: AttachmentData, space?: number): AttachmentBuilder;
137
+ toString(space?: number): string;
138
+ setBorderColor(color: EmbedPlusColorData | null): this;
139
+ setAsset(asset: "thumbnail" | "image", source: EmbedPlusAssetData): this;
140
+ static fromInteraction(interaction: InteractionWithEmbeds, index?: number, data?: EmbedPlusData): EmbedPlusBuilder;
141
+ static fromMessage(message: MessageWithEmbeds, index?: number, data?: EmbedPlusData): EmbedPlusBuilder;
142
+ }
143
+ type EmbedPlusProperty<P extends keyof EmbedPlusData> = EmbedPlusData[P];
144
+ interface CreateEmbedOptions<B extends boolean> extends EmbedPlusOptions {
145
+ array?: B;
146
+ interaction?: InteractionWithEmbeds;
147
+ }
148
+ type CreateEmbedReturn<B> = undefined extends B ? EmbedPlusBuilder : false extends B ? EmbedPlusBuilder : EmbedPlusBuilder[];
149
+ declare function createEmbed<B extends boolean>(options: CreateEmbedOptions<B>): CreateEmbedReturn<B>;
150
+
151
+ declare function createRow<Component extends AnyComponentBuilder>(...components: Component[]): ActionRowBuilder<Component>;
152
+ interface CreateLinkButtonData extends Omit<LinkButtonComponentData, "style" | "type"> {
153
+ }
154
+ declare function createLinkButton(data: CreateLinkButtonData): ButtonBuilder;
155
+
21
156
  type GuildChannelType = Exclude<ChannelType, ChannelType.DM>;
22
157
  type FindChannelFilter<T extends GuildChannelType> = (channel: GetChannelType<T>) => boolean;
23
158
  type GetChannelType<Type extends GuildChannelType> = Extract<NonNullable<CommandInteractionOption<"cached">["channel"]>, {
@@ -57,41 +192,13 @@ declare function findCommand(guildOrClient: Guild | Client<true>): {
57
192
  }> | undefined;
58
193
  };
59
194
 
60
- declare function createRow<Component extends AnyComponentBuilder>(...components: Component[]): ActionRowBuilder<Component>;
61
- interface CreateLinkButtonData extends Omit<LinkButtonComponentData, "style" | "type"> {
62
- }
63
- declare function createLinkButton(data: CreateLinkButtonData): ButtonBuilder;
64
- interface MessageComponentsManager {
65
- getButton(customId: string): ButtonComponent | undefined;
66
- getButton(customId: string, required: true): ButtonComponent;
67
- getStringSelect(customId: string): StringSelectMenuComponent | undefined;
68
- getStringSelect(customId: string, required: true): StringSelectMenuComponent;
69
- getUserSelect(customId: string): UserSelectMenuComponent | undefined;
70
- getUserSelect(customId: string, required: true): UserSelectMenuComponent;
71
- getChannelSelect(customId: string): ChannelSelectMenuComponent | undefined;
72
- getChannelSelect(customId: string, required: true): ChannelSelectMenuComponent;
73
- getRoleSelect(customId: string): RoleSelectMenuComponent | undefined;
74
- getRoleSelect(customId: string, required: true): RoleSelectMenuComponent;
75
- getMentionableSelect(customId: string): MentionableSelectMenuComponent | undefined;
76
- getMentionableSelect(customId: string, required: true): MentionableSelectMenuComponent;
77
- resolved: {
78
- buttons: ButtonComponent[];
79
- stringSelects: StringSelectMenuComponent[];
80
- userSelects: UserSelectMenuComponent[];
81
- channelSelects: ChannelSelectMenuComponent[];
82
- roleSelects: RoleSelectMenuComponent[];
83
- mentionableSelects: MentionableSelectMenuComponent[];
84
- };
85
- }
86
- declare function createComponentsManager(components: ActionRow<MessageActionRowComponent>[]): MessageComponentsManager;
87
-
88
195
  type TextInputData = Omit<TextInputComponentData, "type">;
89
196
  type CreateModalInputData = TextInputData;
90
197
  declare function createModalInput(data: CreateModalInputData): ActionRowBuilder<TextInputBuilder>;
91
198
  type ModalFieldsData = Record<string, Omit<TextInputData, "customId">>;
92
199
  declare function createModalFields(data: ModalFieldsData): ActionRowBuilder<TextInputBuilder>[];
93
- type ModalFieldsRecord = Record<string, string>;
94
- declare function modalFieldsToRecord(fields: ModalSubmitFields | Collection<string, TextInputComponent>): ModalFieldsRecord;
200
+ type ModalFieldsRecord<K extends string> = Record<K, string>;
201
+ declare function modalFieldsToRecord<K extends string = string>(fields: ModalSubmitFields | Collection<string, TextInputComponent>): ModalFieldsRecord<K>;
95
202
 
96
203
  type FindEmojiFilter = (emoji: GuildEmoji) => boolean;
97
204
  declare function findEmoji(guildOrClient: Guild | Client): {
@@ -100,8 +207,6 @@ declare function findEmoji(guildOrClient: Guild | Client): {
100
207
  byFilter(filter: FindEmojiFilter): GuildEmoji | undefined;
101
208
  };
102
209
 
103
- declare function formatedMention(ref: GuildBasedChannel | Role | User | undefined | null, alt?: string): string;
104
-
105
210
  type FindMemberFilter = (member: GuildMember) => boolean;
106
211
  declare function findMember(guild: Guild): {
107
212
  byGlobalName(globalName: string, and?: FindMemberFilter): GuildMember | undefined;
@@ -165,115 +270,4 @@ declare function findRole(guild: Guild): {
165
270
  */
166
271
  declare function extractMentionId(mention: string): string | null;
167
272
 
168
- type EmbedPlusAssetData = string | Attachment | AttachmentBuilder | EmbedAssetData | undefined | null;
169
- type EmbedAssetOptions = Omit<EmbedAssetData, "url">;
170
- declare function createEmbedAsset(source: EmbedPlusAssetData, options?: EmbedAssetOptions): EmbedAssetData | undefined;
171
-
172
- interface UserAuthorOption {
173
- user: User;
174
- property?: "username" | "displayName" | "id" | "globalName";
175
- }
176
- interface MemberAuthorOption {
177
- member: GuildMember;
178
- property?: "username" | "displayName" | "id" | "globalName" | "nickname";
179
- }
180
- type AuthorOption = UserAuthorOption | MemberAuthorOption;
181
- type CreateEmbedAuthorOptions = AuthorOption & ImageURLOptions & {
182
- iconURL?: string;
183
- url?: string;
184
- prefix?: string;
185
- suffix?: string;
186
- };
187
- declare function createEmbedAuthor(options: CreateEmbedAuthorOptions): EmbedAuthorData;
188
-
189
- type EmbedPlusFooterData = {
190
- text?: string | null;
191
- iconURL?: string | null;
192
- };
193
- declare function createEmbedFooter(options: EmbedPlusFooterData): EmbedFooterData | undefined;
194
-
195
- type EmbedPlusFieldData = {
196
- name: string;
197
- value: string;
198
- inline?: boolean;
199
- };
200
- type FieldPredicate = (field: EmbedPlusFieldData, index: number, obj: EmbedPlusFieldData[]) => boolean;
201
- declare class EmbedPlusFields {
202
- private embed;
203
- private set fields(value);
204
- private get fields();
205
- constructor(embed: EmbedPlusBuilder);
206
- [Symbol.iterator](): {
207
- next(): IteratorResult<EmbedPlusFieldData>;
208
- };
209
- get length(): number;
210
- get record(): Record<string, string | undefined>;
211
- /**
212
- * Get a filed by index
213
- * @param name Field name
214
- */
215
- get(name: string): EmbedPlusFieldData | undefined;
216
- /**
217
- * Get a field by name
218
- * @param index Field index
219
- */
220
- get(index: number): EmbedPlusFieldData | undefined;
221
- find(predicate: FieldPredicate): EmbedPlusFieldData | undefined;
222
- push(...fields: EmbedPlusFieldData[]): void;
223
- set(...fields: EmbedPlusFieldData[]): void;
224
- update(predicate: string | number | FieldPredicate, field: Partial<EmbedPlusFieldData>): boolean;
225
- delete(predicate: string | number | FieldPredicate): boolean;
226
- toArray(): EmbedPlusFieldData[];
227
- private getPredicateIndex;
228
- }
229
-
230
- type EmbedPlusColorData = string & {} | ColorResolvable | null;
231
- type EmbedPlusAuthorData = {
232
- name: string;
233
- url?: string;
234
- iconURL?: string;
235
- };
236
- interface EmbedPlusData {
237
- title?: string | null;
238
- color?: EmbedPlusColorData | null;
239
- description?: string | null;
240
- url?: string | null;
241
- thumbnail?: EmbedPlusAssetData;
242
- image?: EmbedPlusAssetData;
243
- fields?: Partial<EmbedPlusFieldData>[] | null;
244
- timestamp?: string | number | Date | null;
245
- footer?: EmbedPlusFooterData;
246
- author?: EmbedPlusAuthorData;
247
- }
248
- type AnyEmbed = APIEmbed | Embed | EmbedBuilder | EmbedData;
249
- interface MessageWithEmbeds {
250
- embeds: Array<Embed>;
251
- }
252
- interface InteractionWithEmbeds {
253
- message: MessageWithEmbeds;
254
- }
255
- interface EmbedPlusOptions extends EmbedPlusData {
256
- extends?: Omit<EmbedPlusData, keyof EmbedPlusOptions> | AnyEmbed;
257
- mergeFields?: boolean;
258
- }
259
- declare class EmbedPlusBuilder extends EmbedBuilder {
260
- fields: EmbedPlusFields;
261
- constructor(data: EmbedPlusOptions);
262
- update(data: EmbedPlusData): this;
263
- has(property: keyof Omit<EmbedPlusData, keyof EmbedPlusOptions>): boolean;
264
- toArray(): EmbedPlusBuilder[];
265
- toString(space?: number): string;
266
- setBorderColor(color: EmbedPlusColorData | null): this;
267
- setAsset(asset: "thumbnail" | "image", source: EmbedPlusAssetData): this;
268
- static fromInteraction(interaction: InteractionWithEmbeds, index?: number, data?: EmbedPlusData): EmbedPlusBuilder;
269
- static fromMessage(message: MessageWithEmbeds, index?: number, data?: EmbedPlusData): EmbedPlusBuilder;
270
- }
271
- type EmbedPlusProperty<P extends keyof EmbedPlusData> = EmbedPlusData[P];
272
- interface CreateEmbedOptions<B extends boolean> extends EmbedPlusOptions {
273
- array?: B;
274
- interaction?: InteractionWithEmbeds;
275
- }
276
- type CreateEmbedReturn<B> = undefined extends B ? EmbedPlusBuilder : false extends B ? EmbedPlusBuilder : EmbedPlusBuilder[];
277
- declare function createEmbed<B extends boolean>(options: CreateEmbedOptions<B>): CreateEmbedReturn<B>;
278
-
279
- export { type AnyEmbed, CustomItents, CustomPartials, type EmbedPlusAssetData, EmbedPlusBuilder, type EmbedPlusData, type EmbedPlusFooterData, type EmbedPlusProperty, chars, createComponentsManager, createEmbed, createEmbedAsset, createEmbedAuthor, createEmbedFooter, createLinkButton, createModalFields, createModalInput, createRow, extractMentionId, findChannel, findCommand, findEmoji, findMember, findMessage, findRole, formatedMention, getChannelUrlInfo, getMessageUrlInfo, modalFieldsToRecord, setMobileStatus };
273
+ export { type AnyEmbedData, CustomItents, CustomPartials, type EmbedPlusAssetData, EmbedPlusBuilder, type EmbedPlusData, type EmbedPlusFooterData, type EmbedPlusProperty, chars, createEmbed, createEmbedAsset, createEmbedAuthor, createEmbedFooter, createLinkButton, createModalFields, createModalInput, createRow, extractMentionId, findChannel, findCommand, findEmoji, findMember, findMessage, findRole, getChannelUrlInfo, getMessageUrlInfo, modalFieldsToRecord, setMobileStatus };
package/dist/index.mjs CHANGED
@@ -1,18 +1,17 @@
1
1
  export { chars } from './constants/chars.mjs';
2
2
  export { CustomItents, CustomPartials } from './constants/client.mjs';
3
3
  export { setMobileStatus } from './functions/misc.mjs';
4
+ export { createEmbedAsset } from './functions/embeds/assets.mjs';
5
+ export { createEmbedAuthor } from './functions/embeds/author.mjs';
6
+ export { EmbedPlusBuilder, createEmbed } from './functions/embeds/embedplus.mjs';
7
+ export { createEmbedFooter } from './functions/embeds/footer.mjs';
8
+ export { createLinkButton, createRow } from './functions/components.mjs';
4
9
  export { findChannel, getChannelUrlInfo } from './functions/channels.mjs';
5
10
  export { findCommand } from './functions/commands.mjs';
6
- export { createComponentsManager, createLinkButton, createRow } from './functions/components.mjs';
7
11
  export { createModalFields, createModalInput, modalFieldsToRecord } from './functions/modals.mjs';
8
12
  export { findEmoji } from './functions/emojis.mjs';
9
- export { formatedMention } from './functions/format.mjs';
10
13
  export { findMember } from './functions/members.mjs';
11
14
  export { findMessage, getMessageUrlInfo } from './functions/message.mjs';
12
15
  export { findRole } from './functions/roles.mjs';
13
16
  export { extractMentionId } from './functions/regex.mjs';
14
- export { createEmbedAsset } from './functions/embeds/assets.mjs';
15
- export { createEmbedAuthor } from './functions/embeds/author.mjs';
16
- export { EmbedPlusBuilder, createEmbed } from './functions/embeds/embedplus.mjs';
17
- export { createEmbedFooter } from './functions/embeds/footer.mjs';
18
17
  export * from '@magicyan/core';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@magicyan/discord",
3
- "version": "1.0.27",
3
+ "version": "1.0.29",
4
4
  "description": "Simple functions to facilitate discord bot development",
5
5
  "license": "MIT",
6
6
  "type": "module",