@magicyan/discord 1.4.10 → 1.4.11
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/functions/components/buttons.cjs +10 -1
- package/dist/functions/components/buttons.mjs +10 -1
- package/dist/functions/components/components.cjs +1 -4
- package/dist/functions/components/components.mjs +1 -4
- package/dist/functions/components/container.cjs +0 -5
- package/dist/functions/components/container.mjs +0 -5
- package/dist/functions/components/gallery.cjs +4 -7
- package/dist/functions/components/gallery.mjs +4 -7
- package/dist/functions/message.cjs +16 -6
- package/dist/functions/message.mjs +15 -6
- package/dist/functions/modals.cjs +8 -0
- package/dist/functions/modals.mjs +9 -2
- package/dist/index.cjs +3 -1
- package/dist/index.d.cts +23 -10
- package/dist/index.d.mts +23 -10
- package/dist/index.d.ts +23 -10
- package/dist/index.mjs +2 -2
- package/package.json +1 -1
|
@@ -3,7 +3,16 @@
|
|
|
3
3
|
const discord_js = require('discord.js');
|
|
4
4
|
const row = require('./row.cjs');
|
|
5
5
|
|
|
6
|
-
function createLinkButton(data) {
|
|
6
|
+
function createLinkButton(data, label, emoji) {
|
|
7
|
+
if (typeof data === "string") {
|
|
8
|
+
label ?? (label = data);
|
|
9
|
+
return new discord_js.ButtonBuilder({
|
|
10
|
+
style: discord_js.ButtonStyle.Link,
|
|
11
|
+
label,
|
|
12
|
+
url: data,
|
|
13
|
+
emoji
|
|
14
|
+
});
|
|
15
|
+
}
|
|
7
16
|
data.label ?? (data.label = data.url);
|
|
8
17
|
return new discord_js.ButtonBuilder({ style: discord_js.ButtonStyle.Link, ...data });
|
|
9
18
|
}
|
|
@@ -1,7 +1,16 @@
|
|
|
1
1
|
import { ButtonBuilder, ButtonStyle } from 'discord.js';
|
|
2
2
|
import { createRow } from './row.mjs';
|
|
3
3
|
|
|
4
|
-
function createLinkButton(data) {
|
|
4
|
+
function createLinkButton(data, label, emoji) {
|
|
5
|
+
if (typeof data === "string") {
|
|
6
|
+
label ?? (label = data);
|
|
7
|
+
return new ButtonBuilder({
|
|
8
|
+
style: ButtonStyle.Link,
|
|
9
|
+
label,
|
|
10
|
+
url: data,
|
|
11
|
+
emoji
|
|
12
|
+
});
|
|
13
|
+
}
|
|
5
14
|
data.label ?? (data.label = data.url);
|
|
6
15
|
return new ButtonBuilder({ style: ButtonStyle.Link, ...data });
|
|
7
16
|
}
|
|
@@ -1,21 +1,18 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
+
const core = require('@magicyan/core');
|
|
3
4
|
const attachment = require('../../guards/attachment.cjs');
|
|
4
5
|
const button = require('../../guards/button.cjs');
|
|
5
6
|
const selectmenu = require('../../guards/selectmenu.cjs');
|
|
6
7
|
const gallery = require('./gallery.cjs');
|
|
7
8
|
const row = require('./row.cjs');
|
|
8
9
|
const text = require('./text.cjs');
|
|
9
|
-
const core = require('@magicyan/core');
|
|
10
10
|
|
|
11
11
|
function createComponents(...data) {
|
|
12
12
|
return data.flat().filter((value) => core.isDefined(value)).filter((value) => typeof value !== "boolean").map((component) => {
|
|
13
13
|
if (typeof component === "string") {
|
|
14
14
|
return text.createTextDisplay(component);
|
|
15
15
|
}
|
|
16
|
-
if (Array.isArray(component)) {
|
|
17
|
-
return row.createRow(...component);
|
|
18
|
-
}
|
|
19
16
|
if (selectmenu.isAnySelectMenuBuilder(component)) {
|
|
20
17
|
return row.createRow(component);
|
|
21
18
|
}
|
|
@@ -1,19 +1,16 @@
|
|
|
1
|
+
import { isDefined } from '@magicyan/core';
|
|
1
2
|
import { isAttachment } from '../../guards/attachment.mjs';
|
|
2
3
|
import { isButtonBuilder } from '../../guards/button.mjs';
|
|
3
4
|
import { isAnySelectMenuBuilder } from '../../guards/selectmenu.mjs';
|
|
4
5
|
import { createMediaGallery } from './gallery.mjs';
|
|
5
6
|
import { createRow } from './row.mjs';
|
|
6
7
|
import { createTextDisplay } from './text.mjs';
|
|
7
|
-
import { isDefined } from '@magicyan/core';
|
|
8
8
|
|
|
9
9
|
function createComponents(...data) {
|
|
10
10
|
return data.flat().filter((value) => isDefined(value)).filter((value) => typeof value !== "boolean").map((component) => {
|
|
11
11
|
if (typeof component === "string") {
|
|
12
12
|
return createTextDisplay(component);
|
|
13
13
|
}
|
|
14
|
-
if (Array.isArray(component)) {
|
|
15
|
-
return createRow(...component);
|
|
16
|
-
}
|
|
17
14
|
if (isAnySelectMenuBuilder(component)) {
|
|
18
15
|
return createRow(component);
|
|
19
16
|
}
|
|
@@ -25,11 +25,6 @@ function createContainer(data, ...items) {
|
|
|
25
25
|
if (component instanceof discord_js.ActionRowBuilder) {
|
|
26
26
|
container.addActionRowComponents(component);
|
|
27
27
|
}
|
|
28
|
-
if (Array.isArray(component)) {
|
|
29
|
-
container.addActionRowComponents(
|
|
30
|
-
row.createRow(...component)
|
|
31
|
-
);
|
|
32
|
-
}
|
|
33
28
|
if (selectmenu.isAnySelectMenuBuilder(component) || component instanceof discord_js.ButtonBuilder) {
|
|
34
29
|
container.addActionRowComponents(
|
|
35
30
|
row.createRow(component)
|
|
@@ -23,11 +23,6 @@ function createContainer(data, ...items) {
|
|
|
23
23
|
if (component instanceof ActionRowBuilder) {
|
|
24
24
|
container.addActionRowComponents(component);
|
|
25
25
|
}
|
|
26
|
-
if (Array.isArray(component)) {
|
|
27
|
-
container.addActionRowComponents(
|
|
28
|
-
createRow(...component)
|
|
29
|
-
);
|
|
30
|
-
}
|
|
31
26
|
if (isAnySelectMenuBuilder(component) || component instanceof ButtonBuilder) {
|
|
32
27
|
container.addActionRowComponents(
|
|
33
28
|
createRow(component)
|
|
@@ -2,20 +2,17 @@
|
|
|
2
2
|
|
|
3
3
|
const discord_js = require('discord.js');
|
|
4
4
|
const attachment = require('../../guards/attachment.cjs');
|
|
5
|
+
const core = require('@magicyan/core');
|
|
5
6
|
|
|
6
7
|
function createMediaGallery(...items) {
|
|
7
8
|
const gallery = new discord_js.MediaGalleryBuilder();
|
|
8
|
-
for (const item of items) {
|
|
9
|
+
for (const item of items.flat().filter(core.isDefined)) {
|
|
9
10
|
if (typeof item === "string") {
|
|
10
|
-
gallery.addItems({
|
|
11
|
-
media: { url: item }
|
|
12
|
-
});
|
|
11
|
+
gallery.addItems({ media: { url: item } });
|
|
13
12
|
continue;
|
|
14
13
|
}
|
|
15
14
|
if (attachment.isAttachment(item)) {
|
|
16
|
-
gallery.addItems({
|
|
17
|
-
media: { url: `attachment://${item.name}` }
|
|
18
|
-
});
|
|
15
|
+
gallery.addItems({ media: { url: `attachment://${item.name}` } });
|
|
19
16
|
continue;
|
|
20
17
|
}
|
|
21
18
|
gallery.addItems(item);
|
|
@@ -1,19 +1,16 @@
|
|
|
1
1
|
import { MediaGalleryBuilder } from 'discord.js';
|
|
2
2
|
import { isAttachment } from '../../guards/attachment.mjs';
|
|
3
|
+
import { isDefined } from '@magicyan/core';
|
|
3
4
|
|
|
4
5
|
function createMediaGallery(...items) {
|
|
5
6
|
const gallery = new MediaGalleryBuilder();
|
|
6
|
-
for (const item of items) {
|
|
7
|
+
for (const item of items.flat().filter(isDefined)) {
|
|
7
8
|
if (typeof item === "string") {
|
|
8
|
-
gallery.addItems({
|
|
9
|
-
media: { url: item }
|
|
10
|
-
});
|
|
9
|
+
gallery.addItems({ media: { url: item } });
|
|
11
10
|
continue;
|
|
12
11
|
}
|
|
13
12
|
if (isAttachment(item)) {
|
|
14
|
-
gallery.addItems({
|
|
15
|
-
media: { url: `attachment://${item.name}` }
|
|
16
|
-
});
|
|
13
|
+
gallery.addItems({ media: { url: `attachment://${item.name}` } });
|
|
17
14
|
continue;
|
|
18
15
|
}
|
|
19
16
|
gallery.addItems(item);
|
|
@@ -40,13 +40,23 @@ function findMessage(channel) {
|
|
|
40
40
|
}
|
|
41
41
|
};
|
|
42
42
|
}
|
|
43
|
-
function
|
|
44
|
-
const
|
|
45
|
-
if (!
|
|
43
|
+
function getMessageURLInfo(url) {
|
|
44
|
+
const match = url.match(/^https:\/\/discord\.com\/channels\/(\d+)\/(\d+)\/(\d+)$/);
|
|
45
|
+
if (!match)
|
|
46
46
|
return {};
|
|
47
|
-
const [
|
|
48
|
-
return {
|
|
47
|
+
const [_, guildId, channelId, messageId] = match;
|
|
48
|
+
return { guildId, channelId, messageId };
|
|
49
|
+
}
|
|
50
|
+
async function fetchMessageFromURL(gc, url) {
|
|
51
|
+
const { messageId, channelId } = getMessageURLInfo(url);
|
|
52
|
+
if (!messageId)
|
|
53
|
+
return null;
|
|
54
|
+
const channel = await gc.channels.fetch(channelId).catch(() => null);
|
|
55
|
+
if (!channel || !("messages" in channel))
|
|
56
|
+
return null;
|
|
57
|
+
return channel.messages.fetch(messageId).catch(() => null);
|
|
49
58
|
}
|
|
50
59
|
|
|
60
|
+
exports.fetchMessageFromURL = fetchMessageFromURL;
|
|
51
61
|
exports.findMessage = findMessage;
|
|
52
|
-
exports.
|
|
62
|
+
exports.getMessageURLInfo = getMessageURLInfo;
|
|
@@ -38,12 +38,21 @@ function findMessage(channel) {
|
|
|
38
38
|
}
|
|
39
39
|
};
|
|
40
40
|
}
|
|
41
|
-
function
|
|
42
|
-
const
|
|
43
|
-
if (!
|
|
41
|
+
function getMessageURLInfo(url) {
|
|
42
|
+
const match = url.match(/^https:\/\/discord\.com\/channels\/(\d+)\/(\d+)\/(\d+)$/);
|
|
43
|
+
if (!match)
|
|
44
44
|
return {};
|
|
45
|
-
const [
|
|
46
|
-
return {
|
|
45
|
+
const [_, guildId, channelId, messageId] = match;
|
|
46
|
+
return { guildId, channelId, messageId };
|
|
47
|
+
}
|
|
48
|
+
async function fetchMessageFromURL(gc, url) {
|
|
49
|
+
const { messageId, channelId } = getMessageURLInfo(url);
|
|
50
|
+
if (!messageId)
|
|
51
|
+
return null;
|
|
52
|
+
const channel = await gc.channels.fetch(channelId).catch(() => null);
|
|
53
|
+
if (!channel || !("messages" in channel))
|
|
54
|
+
return null;
|
|
55
|
+
return channel.messages.fetch(messageId).catch(() => null);
|
|
47
56
|
}
|
|
48
57
|
|
|
49
|
-
export { findMessage,
|
|
58
|
+
export { fetchMessageFromURL, findMessage, getMessageURLInfo };
|
|
@@ -17,7 +17,15 @@ function modalFieldsToRecord(fields) {
|
|
|
17
17
|
const modalFields = fields instanceof discord_js.ModalSubmitInteraction ? fields.fields.fields : "fields" in fields ? fields.fields : fields;
|
|
18
18
|
return modalFields.reduce(reduceFunction, {});
|
|
19
19
|
}
|
|
20
|
+
function createModal(data) {
|
|
21
|
+
return new discord_js.ModalBuilder({
|
|
22
|
+
title: data.title ?? data.customId,
|
|
23
|
+
customId: data.customId,
|
|
24
|
+
components: createModalFields(data.components)
|
|
25
|
+
});
|
|
26
|
+
}
|
|
20
27
|
|
|
28
|
+
exports.createModal = createModal;
|
|
21
29
|
exports.createModalFields = createModalFields;
|
|
22
30
|
exports.createModalInput = createModalInput;
|
|
23
31
|
exports.modalFieldsToRecord = modalFieldsToRecord;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { TextInputStyle, TextInputBuilder, ModalSubmitInteraction } from 'discord.js';
|
|
1
|
+
import { TextInputStyle, TextInputBuilder, ModalSubmitInteraction, ModalBuilder } from 'discord.js';
|
|
2
2
|
import { createRow } from './components/row.mjs';
|
|
3
3
|
|
|
4
4
|
function createModalInput(data) {
|
|
@@ -15,5 +15,12 @@ function modalFieldsToRecord(fields) {
|
|
|
15
15
|
const modalFields = fields instanceof ModalSubmitInteraction ? fields.fields.fields : "fields" in fields ? fields.fields : fields;
|
|
16
16
|
return modalFields.reduce(reduceFunction, {});
|
|
17
17
|
}
|
|
18
|
+
function createModal(data) {
|
|
19
|
+
return new ModalBuilder({
|
|
20
|
+
title: data.title ?? data.customId,
|
|
21
|
+
customId: data.customId,
|
|
22
|
+
components: createModalFields(data.components)
|
|
23
|
+
});
|
|
24
|
+
}
|
|
18
25
|
|
|
19
|
-
export { createModalFields, createModalInput, modalFieldsToRecord };
|
|
26
|
+
export { createModal, createModalFields, createModalInput, modalFieldsToRecord };
|
package/dist/index.cjs
CHANGED
|
@@ -65,13 +65,15 @@ exports.findChannel = channels.findChannel;
|
|
|
65
65
|
exports.getChannelUrlInfo = channels.getChannelUrlInfo;
|
|
66
66
|
exports.commandMention = commands.commandMention;
|
|
67
67
|
exports.findCommand = commands.findCommand;
|
|
68
|
+
exports.createModal = modals.createModal;
|
|
68
69
|
exports.createModalFields = modals.createModalFields;
|
|
69
70
|
exports.createModalInput = modals.createModalInput;
|
|
70
71
|
exports.modalFieldsToRecord = modals.modalFieldsToRecord;
|
|
71
72
|
exports.findEmoji = emojis.findEmoji;
|
|
72
73
|
exports.findMember = members.findMember;
|
|
74
|
+
exports.fetchMessageFromURL = message.fetchMessageFromURL;
|
|
73
75
|
exports.findMessage = message.findMessage;
|
|
74
|
-
exports.
|
|
76
|
+
exports.getMessageURLInfo = message.getMessageURLInfo;
|
|
75
77
|
exports.findRole = roles.findRole;
|
|
76
78
|
exports.extractMentionId = regex.extractMentionId;
|
|
77
79
|
exports.createWebhookClient = webhooks.createWebhookClient;
|
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, ButtonBuilder, ActionRowBuilder, LinkButtonComponentData, AnyComponentBuilder, FileBuilder, APIUnfurledMediaItem,
|
|
2
|
+
import { GatewayIntentBits, Partials, Attachment, AttachmentBuilder, EmbedAssetData, Guild, GuildMember, User, ClientUser, ImageURLOptions, EmbedFooterData, ColorResolvable, APIEmbed, Embed, EmbedData, EmbedBuilder, AttachmentData, ComponentEmojiResolvable, ButtonBuilder, ActionRowBuilder, LinkButtonComponentData, AnyComponentBuilder, FileBuilder, APIUnfurledMediaItem, MediaGalleryItemData, MediaGalleryBuilder, SeparatorBuilder, ThumbnailComponentData, ThumbnailBuilder, ButtonComponentData, SectionBuilder, TextDisplayBuilder, MessageActionRowComponentBuilder, ContainerBuilder, ContainerComponentData, ChannelType, CommandInteractionOption, Client, ApplicationCommand, TextInputBuilder, ModalSubmitInteraction, ModalSubmitFields, Collection, TextInputComponent, ModalBuilder, TextInputStyle, TextInputComponentData, GuildEmoji, GuildTextBasedChannel, Message, Role, WebhookClientOptions, WebhookClient, WebhookClientData, StringSelectMenuBuilder, UserSelectMenuBuilder, RoleSelectMenuBuilder, ChannelSelectMenuBuilder, MentionableSelectMenuBuilder } from 'discord.js';
|
|
3
3
|
export * from '@magicyan/core';
|
|
4
4
|
|
|
5
5
|
declare const chars: {
|
|
@@ -207,6 +207,7 @@ declare function createEmbedFiles(embed: EmbedBuilder, options?: CreateEmbedFile
|
|
|
207
207
|
|
|
208
208
|
interface CreateLinkButtonData extends Omit<LinkButtonComponentData, "style" | "type"> {
|
|
209
209
|
}
|
|
210
|
+
declare function createLinkButton(link: string, label?: string, emoji?: ComponentEmojiResolvable): ButtonBuilder;
|
|
210
211
|
declare function createLinkButton(data: CreateLinkButtonData): ButtonBuilder;
|
|
211
212
|
/**
|
|
212
213
|
* Wraps buttons into multiple {@link ActionRowBuilder} instances with a maximum number of buttons per row.
|
|
@@ -301,7 +302,7 @@ interface CreateFileOptions extends Omit<APIUnfurledMediaItem, "url"> {
|
|
|
301
302
|
*/
|
|
302
303
|
declare function createFile(source: FileSource, options?: CreateFileOptions): FileBuilder;
|
|
303
304
|
|
|
304
|
-
type MediaGallerySource = MediaGalleryItemData | string | Attachment | AttachmentBuilder;
|
|
305
|
+
type MediaGallerySource = MediaGalleryItemData | string | Attachment | AttachmentBuilder | null | undefined;
|
|
305
306
|
/**
|
|
306
307
|
* Creates a {@link MediaGalleryBuilder} instance with a collection of media items, which can be images, attachments, or URLs.
|
|
307
308
|
*
|
|
@@ -342,7 +343,7 @@ type MediaGallerySource = MediaGalleryItemData | string | Attachment | Attachmen
|
|
|
342
343
|
* );
|
|
343
344
|
*
|
|
344
345
|
*/
|
|
345
|
-
declare function createMediaGallery(...items: MediaGallerySource[]): MediaGalleryBuilder;
|
|
346
|
+
declare function createMediaGallery(...items: (MediaGallerySource | MediaGallerySource[])[]): MediaGalleryBuilder;
|
|
346
347
|
|
|
347
348
|
interface SeparatorData {
|
|
348
349
|
divider?: boolean;
|
|
@@ -546,7 +547,7 @@ type ThumbAreaData = {
|
|
|
546
547
|
declare function createThumbArea(content: string, thumbnail?: ThumbAreaThumbnail): SectionBuilder | TextDisplayBuilder;
|
|
547
548
|
declare function createThumbArea(data: ThumbAreaData): SectionBuilder | TextDisplayBuilder;
|
|
548
549
|
|
|
549
|
-
type ComponentData = TextDisplayBuilder | SeparatorBuilder | FileBuilder | SectionBuilder | MediaGalleryBuilder | ActionRowBuilder<MessageActionRowComponentBuilder> | MessageActionRowComponentBuilder
|
|
550
|
+
type ComponentData = TextDisplayBuilder | SeparatorBuilder | FileBuilder | SectionBuilder | MediaGalleryBuilder | ActionRowBuilder<MessageActionRowComponentBuilder> | MessageActionRowComponentBuilder | Attachment | AttachmentBuilder | string | null | undefined | boolean;
|
|
550
551
|
type CreateComponentData = ComponentData | ContainerBuilder;
|
|
551
552
|
declare function createComponents(...data: (CreateComponentData | CreateComponentData[])[]): (SeparatorBuilder | TextDisplayBuilder | FileBuilder | SectionBuilder | MediaGalleryBuilder | ActionRowBuilder<MessageActionRowComponentBuilder> | ContainerBuilder)[];
|
|
552
553
|
|
|
@@ -654,6 +655,12 @@ type ModalFieldsData = Record<string, Omit<ModalFieldData, "customId">>;
|
|
|
654
655
|
declare function createModalFields(data: ModalFieldsData): ActionRowBuilder<TextInputBuilder>[];
|
|
655
656
|
type ModalFieldsRecord<K extends string> = Record<K, string>;
|
|
656
657
|
declare function modalFieldsToRecord<K extends string = string>(fields: ModalSubmitInteraction | ModalSubmitFields | Collection<string, TextInputComponent>): ModalFieldsRecord<K>;
|
|
658
|
+
interface CreateModalData {
|
|
659
|
+
title?: string;
|
|
660
|
+
customId: string;
|
|
661
|
+
components: ModalFieldsData;
|
|
662
|
+
}
|
|
663
|
+
declare function createModal(data: CreateModalData): ModalBuilder;
|
|
657
664
|
|
|
658
665
|
type FindEmojiFilter = (emoji: GuildEmoji) => boolean;
|
|
659
666
|
declare function findEmoji(guildOrClient: Guild | Client): {
|
|
@@ -682,12 +689,18 @@ declare function findMessage(channel: GuildTextBasedChannel): {
|
|
|
682
689
|
};
|
|
683
690
|
byFilter(filter: FindMessageFilter): Message<true> | undefined;
|
|
684
691
|
};
|
|
685
|
-
|
|
686
|
-
|
|
692
|
+
type MessageURLInfo = {
|
|
693
|
+
channelId: string;
|
|
694
|
+
guildId: string;
|
|
695
|
+
messageId: string;
|
|
696
|
+
} | {
|
|
697
|
+
messageId?: undefined;
|
|
687
698
|
channelId?: string;
|
|
688
699
|
guildId?: string;
|
|
689
|
-
}
|
|
690
|
-
declare function
|
|
700
|
+
};
|
|
701
|
+
declare function getMessageURLInfo(url: string): MessageURLInfo;
|
|
702
|
+
declare function fetchMessageFromURL(guild: Guild, url: string): Promise<Message<true> | null>;
|
|
703
|
+
declare function fetchMessageFromURL(client: Client | Client, url: string): Promise<Message | null>;
|
|
691
704
|
|
|
692
705
|
type FindRoleFilter = (role: Role) => boolean;
|
|
693
706
|
/**
|
|
@@ -735,5 +748,5 @@ declare function isAnySelectMenuBuilder(value: unknown): value is AnySelectMenuB
|
|
|
735
748
|
|
|
736
749
|
declare function isButtonBuilder(value: unknown): value is ButtonBuilder;
|
|
737
750
|
|
|
738
|
-
export { CustomItents, CustomPartials, EmbedLimit, EmbedPlusBuilder, Separator, chars, commandMention, createComponents, createContainer, createEmbed, createEmbedAsset, createEmbedAuthor, createEmbedFiles, createEmbedFooter, createFile, createLinkButton, createMediaGallery, createModalFields, createModalInput, createRow, createSection, createSeparator, createTextDisplay, createThumbArea, createThumbnail, createWebhookClient, extractMentionId, findChannel, findCommand, findEmoji, findMember, findMessage, findRole, getChannelUrlInfo,
|
|
739
|
-
export type { AnyEmbedData, AnySelectMenuBuilder, ComponentData, ContainerColor, ContainerData, EmbedPlusAssetData, EmbedPlusAuthorData, EmbedPlusColorData, EmbedPlusData, EmbedPlusFooterData, EmbedPlusProperty, SectionAccessory, SectionAccessoryData, SectionButtonAccessory, SectionData, SectionThumbnailAccessory, SeparatorData, ThumbAreaData, ThumbAreaThumbnail, ThumbnailData };
|
|
751
|
+
export { CustomItents, CustomPartials, EmbedLimit, EmbedPlusBuilder, Separator, chars, commandMention, createComponents, createContainer, createEmbed, createEmbedAsset, createEmbedAuthor, createEmbedFiles, createEmbedFooter, createFile, createLinkButton, createMediaGallery, createModal, createModalFields, createModalInput, createRow, createSection, createSeparator, createTextDisplay, createThumbArea, createThumbnail, createWebhookClient, extractMentionId, fetchMessageFromURL, findChannel, findCommand, findEmoji, findMember, findMessage, findRole, getChannelUrlInfo, getMessageURLInfo, isAnySelectMenuBuilder, isAttachment, isButtonBuilder, modalFieldsToRecord, setMobileStatus, wrapButtons };
|
|
752
|
+
export type { AnyEmbedData, AnySelectMenuBuilder, ComponentData, ContainerColor, ContainerData, CreateComponentData, CreateModalData, EmbedPlusAssetData, EmbedPlusAuthorData, EmbedPlusColorData, EmbedPlusData, EmbedPlusFooterData, EmbedPlusProperty, MediaGallerySource, ModalFieldsData, ModalFieldsRecord, SectionAccessory, SectionAccessoryData, SectionButtonAccessory, SectionData, SectionThumbnailAccessory, SeparatorData, ThumbAreaData, ThumbAreaThumbnail, ThumbnailData };
|
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, ButtonBuilder, ActionRowBuilder, LinkButtonComponentData, AnyComponentBuilder, FileBuilder, APIUnfurledMediaItem,
|
|
2
|
+
import { GatewayIntentBits, Partials, Attachment, AttachmentBuilder, EmbedAssetData, Guild, GuildMember, User, ClientUser, ImageURLOptions, EmbedFooterData, ColorResolvable, APIEmbed, Embed, EmbedData, EmbedBuilder, AttachmentData, ComponentEmojiResolvable, ButtonBuilder, ActionRowBuilder, LinkButtonComponentData, AnyComponentBuilder, FileBuilder, APIUnfurledMediaItem, MediaGalleryItemData, MediaGalleryBuilder, SeparatorBuilder, ThumbnailComponentData, ThumbnailBuilder, ButtonComponentData, SectionBuilder, TextDisplayBuilder, MessageActionRowComponentBuilder, ContainerBuilder, ContainerComponentData, ChannelType, CommandInteractionOption, Client, ApplicationCommand, TextInputBuilder, ModalSubmitInteraction, ModalSubmitFields, Collection, TextInputComponent, ModalBuilder, TextInputStyle, TextInputComponentData, GuildEmoji, GuildTextBasedChannel, Message, Role, WebhookClientOptions, WebhookClient, WebhookClientData, StringSelectMenuBuilder, UserSelectMenuBuilder, RoleSelectMenuBuilder, ChannelSelectMenuBuilder, MentionableSelectMenuBuilder } from 'discord.js';
|
|
3
3
|
export * from '@magicyan/core';
|
|
4
4
|
|
|
5
5
|
declare const chars: {
|
|
@@ -207,6 +207,7 @@ declare function createEmbedFiles(embed: EmbedBuilder, options?: CreateEmbedFile
|
|
|
207
207
|
|
|
208
208
|
interface CreateLinkButtonData extends Omit<LinkButtonComponentData, "style" | "type"> {
|
|
209
209
|
}
|
|
210
|
+
declare function createLinkButton(link: string, label?: string, emoji?: ComponentEmojiResolvable): ButtonBuilder;
|
|
210
211
|
declare function createLinkButton(data: CreateLinkButtonData): ButtonBuilder;
|
|
211
212
|
/**
|
|
212
213
|
* Wraps buttons into multiple {@link ActionRowBuilder} instances with a maximum number of buttons per row.
|
|
@@ -301,7 +302,7 @@ interface CreateFileOptions extends Omit<APIUnfurledMediaItem, "url"> {
|
|
|
301
302
|
*/
|
|
302
303
|
declare function createFile(source: FileSource, options?: CreateFileOptions): FileBuilder;
|
|
303
304
|
|
|
304
|
-
type MediaGallerySource = MediaGalleryItemData | string | Attachment | AttachmentBuilder;
|
|
305
|
+
type MediaGallerySource = MediaGalleryItemData | string | Attachment | AttachmentBuilder | null | undefined;
|
|
305
306
|
/**
|
|
306
307
|
* Creates a {@link MediaGalleryBuilder} instance with a collection of media items, which can be images, attachments, or URLs.
|
|
307
308
|
*
|
|
@@ -342,7 +343,7 @@ type MediaGallerySource = MediaGalleryItemData | string | Attachment | Attachmen
|
|
|
342
343
|
* );
|
|
343
344
|
*
|
|
344
345
|
*/
|
|
345
|
-
declare function createMediaGallery(...items: MediaGallerySource[]): MediaGalleryBuilder;
|
|
346
|
+
declare function createMediaGallery(...items: (MediaGallerySource | MediaGallerySource[])[]): MediaGalleryBuilder;
|
|
346
347
|
|
|
347
348
|
interface SeparatorData {
|
|
348
349
|
divider?: boolean;
|
|
@@ -546,7 +547,7 @@ type ThumbAreaData = {
|
|
|
546
547
|
declare function createThumbArea(content: string, thumbnail?: ThumbAreaThumbnail): SectionBuilder | TextDisplayBuilder;
|
|
547
548
|
declare function createThumbArea(data: ThumbAreaData): SectionBuilder | TextDisplayBuilder;
|
|
548
549
|
|
|
549
|
-
type ComponentData = TextDisplayBuilder | SeparatorBuilder | FileBuilder | SectionBuilder | MediaGalleryBuilder | ActionRowBuilder<MessageActionRowComponentBuilder> | MessageActionRowComponentBuilder
|
|
550
|
+
type ComponentData = TextDisplayBuilder | SeparatorBuilder | FileBuilder | SectionBuilder | MediaGalleryBuilder | ActionRowBuilder<MessageActionRowComponentBuilder> | MessageActionRowComponentBuilder | Attachment | AttachmentBuilder | string | null | undefined | boolean;
|
|
550
551
|
type CreateComponentData = ComponentData | ContainerBuilder;
|
|
551
552
|
declare function createComponents(...data: (CreateComponentData | CreateComponentData[])[]): (SeparatorBuilder | TextDisplayBuilder | FileBuilder | SectionBuilder | MediaGalleryBuilder | ActionRowBuilder<MessageActionRowComponentBuilder> | ContainerBuilder)[];
|
|
552
553
|
|
|
@@ -654,6 +655,12 @@ type ModalFieldsData = Record<string, Omit<ModalFieldData, "customId">>;
|
|
|
654
655
|
declare function createModalFields(data: ModalFieldsData): ActionRowBuilder<TextInputBuilder>[];
|
|
655
656
|
type ModalFieldsRecord<K extends string> = Record<K, string>;
|
|
656
657
|
declare function modalFieldsToRecord<K extends string = string>(fields: ModalSubmitInteraction | ModalSubmitFields | Collection<string, TextInputComponent>): ModalFieldsRecord<K>;
|
|
658
|
+
interface CreateModalData {
|
|
659
|
+
title?: string;
|
|
660
|
+
customId: string;
|
|
661
|
+
components: ModalFieldsData;
|
|
662
|
+
}
|
|
663
|
+
declare function createModal(data: CreateModalData): ModalBuilder;
|
|
657
664
|
|
|
658
665
|
type FindEmojiFilter = (emoji: GuildEmoji) => boolean;
|
|
659
666
|
declare function findEmoji(guildOrClient: Guild | Client): {
|
|
@@ -682,12 +689,18 @@ declare function findMessage(channel: GuildTextBasedChannel): {
|
|
|
682
689
|
};
|
|
683
690
|
byFilter(filter: FindMessageFilter): Message<true> | undefined;
|
|
684
691
|
};
|
|
685
|
-
|
|
686
|
-
|
|
692
|
+
type MessageURLInfo = {
|
|
693
|
+
channelId: string;
|
|
694
|
+
guildId: string;
|
|
695
|
+
messageId: string;
|
|
696
|
+
} | {
|
|
697
|
+
messageId?: undefined;
|
|
687
698
|
channelId?: string;
|
|
688
699
|
guildId?: string;
|
|
689
|
-
}
|
|
690
|
-
declare function
|
|
700
|
+
};
|
|
701
|
+
declare function getMessageURLInfo(url: string): MessageURLInfo;
|
|
702
|
+
declare function fetchMessageFromURL(guild: Guild, url: string): Promise<Message<true> | null>;
|
|
703
|
+
declare function fetchMessageFromURL(client: Client | Client, url: string): Promise<Message | null>;
|
|
691
704
|
|
|
692
705
|
type FindRoleFilter = (role: Role) => boolean;
|
|
693
706
|
/**
|
|
@@ -735,5 +748,5 @@ declare function isAnySelectMenuBuilder(value: unknown): value is AnySelectMenuB
|
|
|
735
748
|
|
|
736
749
|
declare function isButtonBuilder(value: unknown): value is ButtonBuilder;
|
|
737
750
|
|
|
738
|
-
export { CustomItents, CustomPartials, EmbedLimit, EmbedPlusBuilder, Separator, chars, commandMention, createComponents, createContainer, createEmbed, createEmbedAsset, createEmbedAuthor, createEmbedFiles, createEmbedFooter, createFile, createLinkButton, createMediaGallery, createModalFields, createModalInput, createRow, createSection, createSeparator, createTextDisplay, createThumbArea, createThumbnail, createWebhookClient, extractMentionId, findChannel, findCommand, findEmoji, findMember, findMessage, findRole, getChannelUrlInfo,
|
|
739
|
-
export type { AnyEmbedData, AnySelectMenuBuilder, ComponentData, ContainerColor, ContainerData, EmbedPlusAssetData, EmbedPlusAuthorData, EmbedPlusColorData, EmbedPlusData, EmbedPlusFooterData, EmbedPlusProperty, SectionAccessory, SectionAccessoryData, SectionButtonAccessory, SectionData, SectionThumbnailAccessory, SeparatorData, ThumbAreaData, ThumbAreaThumbnail, ThumbnailData };
|
|
751
|
+
export { CustomItents, CustomPartials, EmbedLimit, EmbedPlusBuilder, Separator, chars, commandMention, createComponents, createContainer, createEmbed, createEmbedAsset, createEmbedAuthor, createEmbedFiles, createEmbedFooter, createFile, createLinkButton, createMediaGallery, createModal, createModalFields, createModalInput, createRow, createSection, createSeparator, createTextDisplay, createThumbArea, createThumbnail, createWebhookClient, extractMentionId, fetchMessageFromURL, findChannel, findCommand, findEmoji, findMember, findMessage, findRole, getChannelUrlInfo, getMessageURLInfo, isAnySelectMenuBuilder, isAttachment, isButtonBuilder, modalFieldsToRecord, setMobileStatus, wrapButtons };
|
|
752
|
+
export type { AnyEmbedData, AnySelectMenuBuilder, ComponentData, ContainerColor, ContainerData, CreateComponentData, CreateModalData, EmbedPlusAssetData, EmbedPlusAuthorData, EmbedPlusColorData, EmbedPlusData, EmbedPlusFooterData, EmbedPlusProperty, MediaGallerySource, ModalFieldsData, ModalFieldsRecord, SectionAccessory, SectionAccessoryData, SectionButtonAccessory, SectionData, SectionThumbnailAccessory, SeparatorData, ThumbAreaData, ThumbAreaThumbnail, ThumbnailData };
|
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, ButtonBuilder, ActionRowBuilder, LinkButtonComponentData, AnyComponentBuilder, FileBuilder, APIUnfurledMediaItem,
|
|
2
|
+
import { GatewayIntentBits, Partials, Attachment, AttachmentBuilder, EmbedAssetData, Guild, GuildMember, User, ClientUser, ImageURLOptions, EmbedFooterData, ColorResolvable, APIEmbed, Embed, EmbedData, EmbedBuilder, AttachmentData, ComponentEmojiResolvable, ButtonBuilder, ActionRowBuilder, LinkButtonComponentData, AnyComponentBuilder, FileBuilder, APIUnfurledMediaItem, MediaGalleryItemData, MediaGalleryBuilder, SeparatorBuilder, ThumbnailComponentData, ThumbnailBuilder, ButtonComponentData, SectionBuilder, TextDisplayBuilder, MessageActionRowComponentBuilder, ContainerBuilder, ContainerComponentData, ChannelType, CommandInteractionOption, Client, ApplicationCommand, TextInputBuilder, ModalSubmitInteraction, ModalSubmitFields, Collection, TextInputComponent, ModalBuilder, TextInputStyle, TextInputComponentData, GuildEmoji, GuildTextBasedChannel, Message, Role, WebhookClientOptions, WebhookClient, WebhookClientData, StringSelectMenuBuilder, UserSelectMenuBuilder, RoleSelectMenuBuilder, ChannelSelectMenuBuilder, MentionableSelectMenuBuilder } from 'discord.js';
|
|
3
3
|
export * from '@magicyan/core';
|
|
4
4
|
|
|
5
5
|
declare const chars: {
|
|
@@ -207,6 +207,7 @@ declare function createEmbedFiles(embed: EmbedBuilder, options?: CreateEmbedFile
|
|
|
207
207
|
|
|
208
208
|
interface CreateLinkButtonData extends Omit<LinkButtonComponentData, "style" | "type"> {
|
|
209
209
|
}
|
|
210
|
+
declare function createLinkButton(link: string, label?: string, emoji?: ComponentEmojiResolvable): ButtonBuilder;
|
|
210
211
|
declare function createLinkButton(data: CreateLinkButtonData): ButtonBuilder;
|
|
211
212
|
/**
|
|
212
213
|
* Wraps buttons into multiple {@link ActionRowBuilder} instances with a maximum number of buttons per row.
|
|
@@ -301,7 +302,7 @@ interface CreateFileOptions extends Omit<APIUnfurledMediaItem, "url"> {
|
|
|
301
302
|
*/
|
|
302
303
|
declare function createFile(source: FileSource, options?: CreateFileOptions): FileBuilder;
|
|
303
304
|
|
|
304
|
-
type MediaGallerySource = MediaGalleryItemData | string | Attachment | AttachmentBuilder;
|
|
305
|
+
type MediaGallerySource = MediaGalleryItemData | string | Attachment | AttachmentBuilder | null | undefined;
|
|
305
306
|
/**
|
|
306
307
|
* Creates a {@link MediaGalleryBuilder} instance with a collection of media items, which can be images, attachments, or URLs.
|
|
307
308
|
*
|
|
@@ -342,7 +343,7 @@ type MediaGallerySource = MediaGalleryItemData | string | Attachment | Attachmen
|
|
|
342
343
|
* );
|
|
343
344
|
*
|
|
344
345
|
*/
|
|
345
|
-
declare function createMediaGallery(...items: MediaGallerySource[]): MediaGalleryBuilder;
|
|
346
|
+
declare function createMediaGallery(...items: (MediaGallerySource | MediaGallerySource[])[]): MediaGalleryBuilder;
|
|
346
347
|
|
|
347
348
|
interface SeparatorData {
|
|
348
349
|
divider?: boolean;
|
|
@@ -546,7 +547,7 @@ type ThumbAreaData = {
|
|
|
546
547
|
declare function createThumbArea(content: string, thumbnail?: ThumbAreaThumbnail): SectionBuilder | TextDisplayBuilder;
|
|
547
548
|
declare function createThumbArea(data: ThumbAreaData): SectionBuilder | TextDisplayBuilder;
|
|
548
549
|
|
|
549
|
-
type ComponentData = TextDisplayBuilder | SeparatorBuilder | FileBuilder | SectionBuilder | MediaGalleryBuilder | ActionRowBuilder<MessageActionRowComponentBuilder> | MessageActionRowComponentBuilder
|
|
550
|
+
type ComponentData = TextDisplayBuilder | SeparatorBuilder | FileBuilder | SectionBuilder | MediaGalleryBuilder | ActionRowBuilder<MessageActionRowComponentBuilder> | MessageActionRowComponentBuilder | Attachment | AttachmentBuilder | string | null | undefined | boolean;
|
|
550
551
|
type CreateComponentData = ComponentData | ContainerBuilder;
|
|
551
552
|
declare function createComponents(...data: (CreateComponentData | CreateComponentData[])[]): (SeparatorBuilder | TextDisplayBuilder | FileBuilder | SectionBuilder | MediaGalleryBuilder | ActionRowBuilder<MessageActionRowComponentBuilder> | ContainerBuilder)[];
|
|
552
553
|
|
|
@@ -654,6 +655,12 @@ type ModalFieldsData = Record<string, Omit<ModalFieldData, "customId">>;
|
|
|
654
655
|
declare function createModalFields(data: ModalFieldsData): ActionRowBuilder<TextInputBuilder>[];
|
|
655
656
|
type ModalFieldsRecord<K extends string> = Record<K, string>;
|
|
656
657
|
declare function modalFieldsToRecord<K extends string = string>(fields: ModalSubmitInteraction | ModalSubmitFields | Collection<string, TextInputComponent>): ModalFieldsRecord<K>;
|
|
658
|
+
interface CreateModalData {
|
|
659
|
+
title?: string;
|
|
660
|
+
customId: string;
|
|
661
|
+
components: ModalFieldsData;
|
|
662
|
+
}
|
|
663
|
+
declare function createModal(data: CreateModalData): ModalBuilder;
|
|
657
664
|
|
|
658
665
|
type FindEmojiFilter = (emoji: GuildEmoji) => boolean;
|
|
659
666
|
declare function findEmoji(guildOrClient: Guild | Client): {
|
|
@@ -682,12 +689,18 @@ declare function findMessage(channel: GuildTextBasedChannel): {
|
|
|
682
689
|
};
|
|
683
690
|
byFilter(filter: FindMessageFilter): Message<true> | undefined;
|
|
684
691
|
};
|
|
685
|
-
|
|
686
|
-
|
|
692
|
+
type MessageURLInfo = {
|
|
693
|
+
channelId: string;
|
|
694
|
+
guildId: string;
|
|
695
|
+
messageId: string;
|
|
696
|
+
} | {
|
|
697
|
+
messageId?: undefined;
|
|
687
698
|
channelId?: string;
|
|
688
699
|
guildId?: string;
|
|
689
|
-
}
|
|
690
|
-
declare function
|
|
700
|
+
};
|
|
701
|
+
declare function getMessageURLInfo(url: string): MessageURLInfo;
|
|
702
|
+
declare function fetchMessageFromURL(guild: Guild, url: string): Promise<Message<true> | null>;
|
|
703
|
+
declare function fetchMessageFromURL(client: Client | Client, url: string): Promise<Message | null>;
|
|
691
704
|
|
|
692
705
|
type FindRoleFilter = (role: Role) => boolean;
|
|
693
706
|
/**
|
|
@@ -735,5 +748,5 @@ declare function isAnySelectMenuBuilder(value: unknown): value is AnySelectMenuB
|
|
|
735
748
|
|
|
736
749
|
declare function isButtonBuilder(value: unknown): value is ButtonBuilder;
|
|
737
750
|
|
|
738
|
-
export { CustomItents, CustomPartials, EmbedLimit, EmbedPlusBuilder, Separator, chars, commandMention, createComponents, createContainer, createEmbed, createEmbedAsset, createEmbedAuthor, createEmbedFiles, createEmbedFooter, createFile, createLinkButton, createMediaGallery, createModalFields, createModalInput, createRow, createSection, createSeparator, createTextDisplay, createThumbArea, createThumbnail, createWebhookClient, extractMentionId, findChannel, findCommand, findEmoji, findMember, findMessage, findRole, getChannelUrlInfo,
|
|
739
|
-
export type { AnyEmbedData, AnySelectMenuBuilder, ComponentData, ContainerColor, ContainerData, EmbedPlusAssetData, EmbedPlusAuthorData, EmbedPlusColorData, EmbedPlusData, EmbedPlusFooterData, EmbedPlusProperty, SectionAccessory, SectionAccessoryData, SectionButtonAccessory, SectionData, SectionThumbnailAccessory, SeparatorData, ThumbAreaData, ThumbAreaThumbnail, ThumbnailData };
|
|
751
|
+
export { CustomItents, CustomPartials, EmbedLimit, EmbedPlusBuilder, Separator, chars, commandMention, createComponents, createContainer, createEmbed, createEmbedAsset, createEmbedAuthor, createEmbedFiles, createEmbedFooter, createFile, createLinkButton, createMediaGallery, createModal, createModalFields, createModalInput, createRow, createSection, createSeparator, createTextDisplay, createThumbArea, createThumbnail, createWebhookClient, extractMentionId, fetchMessageFromURL, findChannel, findCommand, findEmoji, findMember, findMessage, findRole, getChannelUrlInfo, getMessageURLInfo, isAnySelectMenuBuilder, isAttachment, isButtonBuilder, modalFieldsToRecord, setMobileStatus, wrapButtons };
|
|
752
|
+
export type { AnyEmbedData, AnySelectMenuBuilder, ComponentData, ContainerColor, ContainerData, CreateComponentData, CreateModalData, EmbedPlusAssetData, EmbedPlusAuthorData, EmbedPlusColorData, EmbedPlusData, EmbedPlusFooterData, EmbedPlusProperty, MediaGallerySource, ModalFieldsData, ModalFieldsRecord, SectionAccessory, SectionAccessoryData, SectionButtonAccessory, SectionData, SectionThumbnailAccessory, SeparatorData, ThumbAreaData, ThumbAreaThumbnail, ThumbnailData };
|
package/dist/index.mjs
CHANGED
|
@@ -21,10 +21,10 @@ export { createComponents } from './functions/components/components.mjs';
|
|
|
21
21
|
export { createContainer } from './functions/components/container.mjs';
|
|
22
22
|
export { findChannel, getChannelUrlInfo } from './functions/channels.mjs';
|
|
23
23
|
export { commandMention, findCommand } from './functions/commands.mjs';
|
|
24
|
-
export { createModalFields, createModalInput, modalFieldsToRecord } from './functions/modals.mjs';
|
|
24
|
+
export { createModal, createModalFields, createModalInput, modalFieldsToRecord } from './functions/modals.mjs';
|
|
25
25
|
export { findEmoji } from './functions/emojis.mjs';
|
|
26
26
|
export { findMember } from './functions/members.mjs';
|
|
27
|
-
export { findMessage,
|
|
27
|
+
export { fetchMessageFromURL, findMessage, getMessageURLInfo } from './functions/message.mjs';
|
|
28
28
|
export { findRole } from './functions/roles.mjs';
|
|
29
29
|
export { extractMentionId } from './functions/regex.mjs';
|
|
30
30
|
export { createWebhookClient } from './functions/webhooks.mjs';
|