@magicyan/discord 1.0.15 → 1.0.17

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.
@@ -0,0 +1,52 @@
1
+ 'use strict';
2
+
3
+ const discord_js = require('discord.js');
4
+
5
+ const Messages = [
6
+ discord_js.IntentsBitField.Flags.MessageContent,
7
+ discord_js.IntentsBitField.Flags.GuildMessages,
8
+ discord_js.IntentsBitField.Flags.GuildMessageReactions,
9
+ discord_js.IntentsBitField.Flags.GuildMessageTyping,
10
+ discord_js.IntentsBitField.Flags.DirectMessages,
11
+ discord_js.IntentsBitField.Flags.DirectMessageReactions,
12
+ discord_js.IntentsBitField.Flags.DirectMessageTyping
13
+ ];
14
+ const Guild = [
15
+ discord_js.IntentsBitField.Flags.GuildEmojisAndStickers,
16
+ discord_js.IntentsBitField.Flags.GuildIntegrations,
17
+ discord_js.IntentsBitField.Flags.GuildInvites,
18
+ discord_js.IntentsBitField.Flags.GuildMembers,
19
+ discord_js.IntentsBitField.Flags.GuildMessageReactions,
20
+ discord_js.IntentsBitField.Flags.GuildMessageTyping,
21
+ discord_js.IntentsBitField.Flags.GuildMessages,
22
+ discord_js.IntentsBitField.Flags.GuildModeration,
23
+ discord_js.IntentsBitField.Flags.GuildPresences,
24
+ discord_js.IntentsBitField.Flags.GuildScheduledEvents,
25
+ discord_js.IntentsBitField.Flags.GuildVoiceStates,
26
+ discord_js.IntentsBitField.Flags.GuildWebhooks,
27
+ discord_js.IntentsBitField.Flags.Guilds
28
+ ];
29
+ const Other = [
30
+ discord_js.IntentsBitField.Flags.AutoModerationConfiguration,
31
+ discord_js.IntentsBitField.Flags.AutoModerationExecution
32
+ ];
33
+ const CustomItents = {
34
+ Messages,
35
+ Guild,
36
+ Other,
37
+ All: Object.values(discord_js.IntentsBitField.Flags)
38
+ };
39
+ const CustomPartials = {
40
+ All: [
41
+ discord_js.Partials.Channel,
42
+ discord_js.Partials.GuildMember,
43
+ discord_js.Partials.GuildScheduledEvent,
44
+ discord_js.Partials.Message,
45
+ discord_js.Partials.Reaction,
46
+ discord_js.Partials.ThreadMember,
47
+ discord_js.Partials.User
48
+ ]
49
+ };
50
+
51
+ exports.CustomItents = CustomItents;
52
+ exports.CustomPartials = CustomPartials;
@@ -0,0 +1,49 @@
1
+ import { IntentsBitField, Partials } from 'discord.js';
2
+
3
+ const Messages = [
4
+ IntentsBitField.Flags.MessageContent,
5
+ IntentsBitField.Flags.GuildMessages,
6
+ IntentsBitField.Flags.GuildMessageReactions,
7
+ IntentsBitField.Flags.GuildMessageTyping,
8
+ IntentsBitField.Flags.DirectMessages,
9
+ IntentsBitField.Flags.DirectMessageReactions,
10
+ IntentsBitField.Flags.DirectMessageTyping
11
+ ];
12
+ const Guild = [
13
+ IntentsBitField.Flags.GuildEmojisAndStickers,
14
+ IntentsBitField.Flags.GuildIntegrations,
15
+ IntentsBitField.Flags.GuildInvites,
16
+ IntentsBitField.Flags.GuildMembers,
17
+ IntentsBitField.Flags.GuildMessageReactions,
18
+ IntentsBitField.Flags.GuildMessageTyping,
19
+ IntentsBitField.Flags.GuildMessages,
20
+ IntentsBitField.Flags.GuildModeration,
21
+ IntentsBitField.Flags.GuildPresences,
22
+ IntentsBitField.Flags.GuildScheduledEvents,
23
+ IntentsBitField.Flags.GuildVoiceStates,
24
+ IntentsBitField.Flags.GuildWebhooks,
25
+ IntentsBitField.Flags.Guilds
26
+ ];
27
+ const Other = [
28
+ IntentsBitField.Flags.AutoModerationConfiguration,
29
+ IntentsBitField.Flags.AutoModerationExecution
30
+ ];
31
+ const CustomItents = {
32
+ Messages,
33
+ Guild,
34
+ Other,
35
+ All: Object.values(IntentsBitField.Flags)
36
+ };
37
+ const CustomPartials = {
38
+ All: [
39
+ Partials.Channel,
40
+ Partials.GuildMember,
41
+ Partials.GuildScheduledEvent,
42
+ Partials.Message,
43
+ Partials.Reaction,
44
+ Partials.ThreadMember,
45
+ Partials.User
46
+ ]
47
+ };
48
+
49
+ export { CustomItents, CustomPartials };
@@ -0,0 +1,50 @@
1
+ 'use strict';
2
+
3
+ const discord_js = require('discord.js');
4
+
5
+ function findChannel(guild, type) {
6
+ const channelType = type ?? discord_js.ChannelType.GuildText;
7
+ const cache = guild.channels.cache;
8
+ return {
9
+ byName(name) {
10
+ return cache.find(
11
+ (c) => c.name === name && c.type === channelType
12
+ );
13
+ },
14
+ byId(id) {
15
+ return cache.find(
16
+ (c) => c.id === id && c.type === channelType
17
+ );
18
+ },
19
+ inCategoryId(id) {
20
+ return {
21
+ byName(name) {
22
+ return cache.find(
23
+ (c) => c.name === name && c.type === channelType && c.parentId == id
24
+ );
25
+ },
26
+ byId(id2) {
27
+ return cache.find(
28
+ (c) => c.id === id2 && c.type === channelType && c.parentId == id2
29
+ );
30
+ }
31
+ };
32
+ },
33
+ inCategoryName(name) {
34
+ return {
35
+ byName(name2) {
36
+ return cache.find(
37
+ (c) => c.name === name2 && c.type === channelType && c.parent?.name == name2
38
+ );
39
+ },
40
+ byId(id) {
41
+ return cache.find(
42
+ (c) => c.id === id && c.type === channelType && c.parent?.name == name
43
+ );
44
+ }
45
+ };
46
+ }
47
+ };
48
+ }
49
+
50
+ exports.findChannel = findChannel;
@@ -0,0 +1,48 @@
1
+ import { ChannelType } from 'discord.js';
2
+
3
+ function findChannel(guild, type) {
4
+ const channelType = type ?? ChannelType.GuildText;
5
+ const cache = guild.channels.cache;
6
+ return {
7
+ byName(name) {
8
+ return cache.find(
9
+ (c) => c.name === name && c.type === channelType
10
+ );
11
+ },
12
+ byId(id) {
13
+ return cache.find(
14
+ (c) => c.id === id && c.type === channelType
15
+ );
16
+ },
17
+ inCategoryId(id) {
18
+ return {
19
+ byName(name) {
20
+ return cache.find(
21
+ (c) => c.name === name && c.type === channelType && c.parentId == id
22
+ );
23
+ },
24
+ byId(id2) {
25
+ return cache.find(
26
+ (c) => c.id === id2 && c.type === channelType && c.parentId == id2
27
+ );
28
+ }
29
+ };
30
+ },
31
+ inCategoryName(name) {
32
+ return {
33
+ byName(name2) {
34
+ return cache.find(
35
+ (c) => c.name === name2 && c.type === channelType && c.parent?.name == name2
36
+ );
37
+ },
38
+ byId(id) {
39
+ return cache.find(
40
+ (c) => c.id === id && c.type === channelType && c.parent?.name == name
41
+ );
42
+ }
43
+ };
44
+ }
45
+ };
46
+ }
47
+
48
+ export { findChannel };
@@ -0,0 +1,20 @@
1
+ 'use strict';
2
+
3
+ const discord_js = require('discord.js');
4
+
5
+ function findCommand(guildOrClient) {
6
+ const commands = guildOrClient instanceof discord_js.Client ? guildOrClient.application.commands.cache : guildOrClient.commands.cache;
7
+ return {
8
+ byName(name, and = () => true) {
9
+ return commands.find((command) => command.name === name && and(command));
10
+ },
11
+ byId(id) {
12
+ return commands.get(id);
13
+ },
14
+ byFilter(filter) {
15
+ return commands.find(filter);
16
+ }
17
+ };
18
+ }
19
+
20
+ exports.findCommand = findCommand;
@@ -0,0 +1,18 @@
1
+ import { Client } from 'discord.js';
2
+
3
+ function findCommand(guildOrClient) {
4
+ const commands = guildOrClient instanceof Client ? guildOrClient.application.commands.cache : guildOrClient.commands.cache;
5
+ return {
6
+ byName(name, and = () => true) {
7
+ return commands.find((command) => command.name === name && and(command));
8
+ },
9
+ byId(id) {
10
+ return commands.get(id);
11
+ },
12
+ byFilter(filter) {
13
+ return commands.find(filter);
14
+ }
15
+ };
16
+ }
17
+
18
+ export { findCommand };
@@ -0,0 +1,54 @@
1
+ 'use strict';
2
+
3
+ const discord_js = require('discord.js');
4
+
5
+ function createComponentsManager(components) {
6
+ const buttons = components.flatMap(
7
+ (row) => row.components.filter((c) => c.type === discord_js.ComponentType.Button)
8
+ );
9
+ const stringSelects = components.flatMap(
10
+ (row) => row.components.filter((c) => c.type === discord_js.ComponentType.StringSelect)
11
+ );
12
+ const userSelects = components.flatMap(
13
+ (row) => row.components.filter((c) => c.type === discord_js.ComponentType.UserSelect)
14
+ );
15
+ const channelSelects = components.flatMap(
16
+ (row) => row.components.filter((c) => c.type === discord_js.ComponentType.ChannelSelect)
17
+ );
18
+ const roleSelects = components.flatMap(
19
+ (row) => row.components.filter((c) => c.type === discord_js.ComponentType.RoleSelect)
20
+ );
21
+ const mentionableSelects = components.flatMap(
22
+ (row) => row.components.filter((c) => c.type === discord_js.ComponentType.Button)
23
+ );
24
+ return {
25
+ getButton(customId) {
26
+ return buttons.find((b) => b.customId === customId);
27
+ },
28
+ getStringSelect(customId) {
29
+ return stringSelects.find((b) => b.customId === customId);
30
+ },
31
+ getUserSelect(customId) {
32
+ return userSelects.find((b) => b.customId === customId);
33
+ },
34
+ getChannelSelect(customId) {
35
+ return channelSelects.find((b) => b.customId === customId);
36
+ },
37
+ getRoleSelect(customId) {
38
+ return roleSelects.find((b) => b.customId === customId);
39
+ },
40
+ getMentionableSelect(customId) {
41
+ return mentionableSelects.find((b) => b.customId === customId);
42
+ },
43
+ resolved: {
44
+ buttons,
45
+ stringSelects,
46
+ userSelects,
47
+ channelSelects,
48
+ roleSelects,
49
+ mentionableSelects
50
+ }
51
+ };
52
+ }
53
+
54
+ exports.createComponentsManager = createComponentsManager;
@@ -0,0 +1,52 @@
1
+ import { ComponentType } from 'discord.js';
2
+
3
+ function createComponentsManager(components) {
4
+ const buttons = components.flatMap(
5
+ (row) => row.components.filter((c) => c.type === ComponentType.Button)
6
+ );
7
+ const stringSelects = components.flatMap(
8
+ (row) => row.components.filter((c) => c.type === ComponentType.StringSelect)
9
+ );
10
+ const userSelects = components.flatMap(
11
+ (row) => row.components.filter((c) => c.type === ComponentType.UserSelect)
12
+ );
13
+ const channelSelects = components.flatMap(
14
+ (row) => row.components.filter((c) => c.type === ComponentType.ChannelSelect)
15
+ );
16
+ const roleSelects = components.flatMap(
17
+ (row) => row.components.filter((c) => c.type === ComponentType.RoleSelect)
18
+ );
19
+ const mentionableSelects = components.flatMap(
20
+ (row) => row.components.filter((c) => c.type === ComponentType.Button)
21
+ );
22
+ return {
23
+ getButton(customId) {
24
+ return buttons.find((b) => b.customId === customId);
25
+ },
26
+ getStringSelect(customId) {
27
+ return stringSelects.find((b) => b.customId === customId);
28
+ },
29
+ getUserSelect(customId) {
30
+ return userSelects.find((b) => b.customId === customId);
31
+ },
32
+ getChannelSelect(customId) {
33
+ return channelSelects.find((b) => b.customId === customId);
34
+ },
35
+ getRoleSelect(customId) {
36
+ return roleSelects.find((b) => b.customId === customId);
37
+ },
38
+ getMentionableSelect(customId) {
39
+ return mentionableSelects.find((b) => b.customId === customId);
40
+ },
41
+ resolved: {
42
+ buttons,
43
+ stringSelects,
44
+ userSelects,
45
+ channelSelects,
46
+ roleSelects,
47
+ mentionableSelects
48
+ }
49
+ };
50
+ }
51
+
52
+ export { createComponentsManager };
@@ -0,0 +1,52 @@
1
+ 'use strict';
2
+
3
+ const core = require('@magicyan/core');
4
+ const discord_js = require('discord.js');
5
+
6
+ function createEmbedAuthor(options) {
7
+ const {
8
+ user,
9
+ property = "displayName",
10
+ imageSize: size = 512,
11
+ iconURL,
12
+ url,
13
+ prefix = "",
14
+ suffix = ""
15
+ } = options;
16
+ return {
17
+ name: `${prefix}${user[property]}${suffix}`,
18
+ url,
19
+ iconURL: iconURL || user.displayAvatarURL({ size })
20
+ };
21
+ }
22
+ function createEmbedFooter(options) {
23
+ const { text, iconURL } = options;
24
+ return { text: text ?? "\u200B", iconURL: core.notFound(iconURL) };
25
+ }
26
+ function createEmbedAsset(source, options) {
27
+ if (source instanceof discord_js.Attachment || source instanceof discord_js.AttachmentBuilder) {
28
+ return { url: `attachment://${source.name}`, ...options };
29
+ }
30
+ return source ? { url: source, ...options } : void 0;
31
+ }
32
+ function createEmbed(options) {
33
+ const { extend: extendRaw = {}, ...embedRaw } = options;
34
+ const { color: embedColor, modify, ...embedData } = embedRaw;
35
+ const { color: extendColor, ...extendData } = extendRaw;
36
+ const data = { ...extendData, ...embedData };
37
+ const builder = new discord_js.EmbedBuilder(data);
38
+ if (extendColor)
39
+ builder.setColor(extendColor);
40
+ if (embedColor)
41
+ builder.setColor(embedColor);
42
+ if (modify?.fields && typeof modify.fields == "function") {
43
+ const fields = modify.fields(builder.data.fields || []);
44
+ builder.setFields(fields);
45
+ }
46
+ return builder;
47
+ }
48
+
49
+ exports.createEmbed = createEmbed;
50
+ exports.createEmbedAsset = createEmbedAsset;
51
+ exports.createEmbedAuthor = createEmbedAuthor;
52
+ exports.createEmbedFooter = createEmbedFooter;
@@ -0,0 +1,47 @@
1
+ import { notFound } from '@magicyan/core';
2
+ import { Attachment, AttachmentBuilder, EmbedBuilder } from 'discord.js';
3
+
4
+ function createEmbedAuthor(options) {
5
+ const {
6
+ user,
7
+ property = "displayName",
8
+ imageSize: size = 512,
9
+ iconURL,
10
+ url,
11
+ prefix = "",
12
+ suffix = ""
13
+ } = options;
14
+ return {
15
+ name: `${prefix}${user[property]}${suffix}`,
16
+ url,
17
+ iconURL: iconURL || user.displayAvatarURL({ size })
18
+ };
19
+ }
20
+ function createEmbedFooter(options) {
21
+ const { text, iconURL } = options;
22
+ return { text: text ?? "\u200B", iconURL: notFound(iconURL) };
23
+ }
24
+ function createEmbedAsset(source, options) {
25
+ if (source instanceof Attachment || source instanceof AttachmentBuilder) {
26
+ return { url: `attachment://${source.name}`, ...options };
27
+ }
28
+ return source ? { url: source, ...options } : void 0;
29
+ }
30
+ function createEmbed(options) {
31
+ const { extend: extendRaw = {}, ...embedRaw } = options;
32
+ const { color: embedColor, modify, ...embedData } = embedRaw;
33
+ const { color: extendColor, ...extendData } = extendRaw;
34
+ const data = { ...extendData, ...embedData };
35
+ const builder = new EmbedBuilder(data);
36
+ if (extendColor)
37
+ builder.setColor(extendColor);
38
+ if (embedColor)
39
+ builder.setColor(embedColor);
40
+ if (modify?.fields && typeof modify.fields == "function") {
41
+ const fields = modify.fields(builder.data.fields || []);
42
+ builder.setFields(fields);
43
+ }
44
+ return builder;
45
+ }
46
+
47
+ export { createEmbed, createEmbedAsset, createEmbedAuthor, createEmbedFooter };
@@ -0,0 +1,18 @@
1
+ 'use strict';
2
+
3
+ function findEmoji(guildOrClient) {
4
+ const emojis = guildOrClient.emojis.cache;
5
+ return {
6
+ byName(name, animated, and = () => true) {
7
+ return animated ? emojis.find((emoji) => emoji.name == name && emoji.animated == animated && and(emoji)) : emojis.find((emoji) => emoji.name == name && and(emoji));
8
+ },
9
+ byId(id, animated) {
10
+ return animated ? emojis.find((emoji) => emoji.id == id && emoji.animated == animated) : emojis.find((emoji) => emoji.id == id);
11
+ },
12
+ byFilter(filter) {
13
+ return guildOrClient.emojis.cache.find(filter);
14
+ }
15
+ };
16
+ }
17
+
18
+ exports.findEmoji = findEmoji;
@@ -0,0 +1,16 @@
1
+ function findEmoji(guildOrClient) {
2
+ const emojis = guildOrClient.emojis.cache;
3
+ return {
4
+ byName(name, animated, and = () => true) {
5
+ return animated ? emojis.find((emoji) => emoji.name == name && emoji.animated == animated && and(emoji)) : emojis.find((emoji) => emoji.name == name && and(emoji));
6
+ },
7
+ byId(id, animated) {
8
+ return animated ? emojis.find((emoji) => emoji.id == id && emoji.animated == animated) : emojis.find((emoji) => emoji.id == id);
9
+ },
10
+ byFilter(filter) {
11
+ return guildOrClient.emojis.cache.find(filter);
12
+ }
13
+ };
14
+ }
15
+
16
+ export { findEmoji };
@@ -0,0 +1,16 @@
1
+ 'use strict';
2
+
3
+ const discord_js = require('discord.js');
4
+
5
+ const formated = {
6
+ mention(type, ref, alt = "") {
7
+ const id = ref?.toString();
8
+ return {
9
+ channel: id ? discord_js.channelMention(id) : alt,
10
+ user: id ? discord_js.userMention(id) : alt,
11
+ role: id ? discord_js.roleMention(id) : alt
12
+ }[type];
13
+ }
14
+ };
15
+
16
+ exports.formated = formated;
@@ -0,0 +1,14 @@
1
+ import { channelMention, userMention, roleMention } from 'discord.js';
2
+
3
+ const formated = {
4
+ mention(type, ref, alt = "") {
5
+ const id = ref?.toString();
6
+ return {
7
+ channel: id ? channelMention(id) : alt,
8
+ user: id ? userMention(id) : alt,
9
+ role: id ? roleMention(id) : alt
10
+ }[type];
11
+ }
12
+ };
13
+
14
+ export { formated };
@@ -0,0 +1,26 @@
1
+ 'use strict';
2
+
3
+ function findMember(guild) {
4
+ return {
5
+ byGlobalName(globalName, and = () => true) {
6
+ return guild.members.cache.find((member) => member.user.globalName == globalName && and(member));
7
+ },
8
+ byNickname(nickname, and = () => true) {
9
+ return guild.members.cache.find((member) => member.nickname && member.nickname == nickname && and(member));
10
+ },
11
+ byUsername(username, and = () => true) {
12
+ return guild.members.cache.find((member) => member.user.username === username && and(member));
13
+ },
14
+ byDisplayName(displayName, and = () => true) {
15
+ return guild.members.cache.find((member) => member.displayName === displayName && and(member));
16
+ },
17
+ byId(id) {
18
+ return guild.members.cache.get(id);
19
+ },
20
+ byFilter(filter) {
21
+ return guild.members.cache.find(filter);
22
+ }
23
+ };
24
+ }
25
+
26
+ exports.findMember = findMember;
@@ -0,0 +1,24 @@
1
+ function findMember(guild) {
2
+ return {
3
+ byGlobalName(globalName, and = () => true) {
4
+ return guild.members.cache.find((member) => member.user.globalName == globalName && and(member));
5
+ },
6
+ byNickname(nickname, and = () => true) {
7
+ return guild.members.cache.find((member) => member.nickname && member.nickname == nickname && and(member));
8
+ },
9
+ byUsername(username, and = () => true) {
10
+ return guild.members.cache.find((member) => member.user.username === username && and(member));
11
+ },
12
+ byDisplayName(displayName, and = () => true) {
13
+ return guild.members.cache.find((member) => member.displayName === displayName && and(member));
14
+ },
15
+ byId(id) {
16
+ return guild.members.cache.get(id);
17
+ },
18
+ byFilter(filter) {
19
+ return guild.members.cache.find(filter);
20
+ }
21
+ };
22
+ }
23
+
24
+ export { findMember };
@@ -0,0 +1,23 @@
1
+ 'use strict';
2
+
3
+ function findRole(guild) {
4
+ return {
5
+ byColor(color, and = () => true) {
6
+ return guild.roles.cache.find((role) => role.color == color && and(role));
7
+ },
8
+ byHexColor(hexColor, and = () => true) {
9
+ return guild.roles.cache.find((role) => role.hexColor == hexColor && and(role));
10
+ },
11
+ byName(name, and = () => true) {
12
+ return guild.roles.cache.find((role) => role.name == name && and(role));
13
+ },
14
+ byId(id) {
15
+ return guild.roles.cache.get(id);
16
+ },
17
+ byFilter(filter) {
18
+ return guild.roles.cache.find(filter);
19
+ }
20
+ };
21
+ }
22
+
23
+ exports.findRole = findRole;
@@ -0,0 +1,21 @@
1
+ function findRole(guild) {
2
+ return {
3
+ byColor(color, and = () => true) {
4
+ return guild.roles.cache.find((role) => role.color == color && and(role));
5
+ },
6
+ byHexColor(hexColor, and = () => true) {
7
+ return guild.roles.cache.find((role) => role.hexColor == hexColor && and(role));
8
+ },
9
+ byName(name, and = () => true) {
10
+ return guild.roles.cache.find((role) => role.name == name && and(role));
11
+ },
12
+ byId(id) {
13
+ return guild.roles.cache.get(id);
14
+ },
15
+ byFilter(filter) {
16
+ return guild.roles.cache.find(filter);
17
+ }
18
+ };
19
+ }
20
+
21
+ export { findRole };
@@ -0,0 +1,19 @@
1
+ 'use strict';
2
+
3
+ const discord_js = require('discord.js');
4
+
5
+ function createRow(...components) {
6
+ return new discord_js.ActionRowBuilder({ components });
7
+ }
8
+ function createModalInput(data) {
9
+ return createRow(new discord_js.TextInputBuilder(data));
10
+ }
11
+ function createLinkButton(data) {
12
+ if (!data.label)
13
+ data.label = data.url;
14
+ return new discord_js.ButtonBuilder({ style: discord_js.ButtonStyle.Link, ...data });
15
+ }
16
+
17
+ exports.createLinkButton = createLinkButton;
18
+ exports.createModalInput = createModalInput;
19
+ exports.createRow = createRow;
@@ -0,0 +1,15 @@
1
+ import { ActionRowBuilder, TextInputBuilder, ButtonBuilder, ButtonStyle } from 'discord.js';
2
+
3
+ function createRow(...components) {
4
+ return new ActionRowBuilder({ components });
5
+ }
6
+ function createModalInput(data) {
7
+ return createRow(new TextInputBuilder(data));
8
+ }
9
+ function createLinkButton(data) {
10
+ if (!data.label)
11
+ data.label = data.url;
12
+ return new ButtonBuilder({ style: ButtonStyle.Link, ...data });
13
+ }
14
+
15
+ export { createLinkButton, createModalInput, createRow };
package/dist/index.cjs CHANGED
@@ -1,2 +1,35 @@
1
- "use strict";const discord_js=require("discord.js"),core=require("@magicyan/core"),a=[discord_js.IntentsBitField.Flags.MessageContent,discord_js.IntentsBitField.Flags.GuildMessages,discord_js.IntentsBitField.Flags.GuildMessageReactions,discord_js.IntentsBitField.Flags.GuildMessageTyping,discord_js.IntentsBitField.Flags.DirectMessages,discord_js.IntentsBitField.Flags.DirectMessageReactions,discord_js.IntentsBitField.Flags.DirectMessageTyping],l=[discord_js.IntentsBitField.Flags.GuildEmojisAndStickers,discord_js.IntentsBitField.Flags.GuildIntegrations,discord_js.IntentsBitField.Flags.GuildInvites,discord_js.IntentsBitField.Flags.GuildMembers,discord_js.IntentsBitField.Flags.GuildMessageReactions,discord_js.IntentsBitField.Flags.GuildMessageTyping,discord_js.IntentsBitField.Flags.GuildMessages,discord_js.IntentsBitField.Flags.GuildModeration,discord_js.IntentsBitField.Flags.GuildPresences,discord_js.IntentsBitField.Flags.GuildScheduledEvents,discord_js.IntentsBitField.Flags.GuildVoiceStates,discord_js.IntentsBitField.Flags.GuildWebhooks,discord_js.IntentsBitField.Flags.Guilds],t=[discord_js.IntentsBitField.Flags.AutoModerationConfiguration,discord_js.IntentsBitField.Flags.AutoModerationExecution],CustomItents={Messages:a,Guild:l,Other:t,All:Object.values(discord_js.IntentsBitField.Flags)},CustomPartials={All:[discord_js.Partials.Channel,discord_js.Partials.GuildMember,discord_js.Partials.GuildScheduledEvent,discord_js.Partials.Message,discord_js.Partials.Reaction,discord_js.Partials.ThreadMember,discord_js.Partials.User]};function findChannel(e,r){const i=r??discord_js.ChannelType.GuildText,n=e.channels.cache;return{byName(o){return n.find(s=>s.name===o&&s.type===i)},byId(o){return n.find(s=>s.id===o&&s.type===i)},inCategoryId(o){return{byName(s){return n.find(d=>d.name===s&&d.type===i&&d.parentId==o)},byId(s){return n.find(d=>d.id===s&&d.type===i&&d.parentId==s)}}},inCategoryName(o){return{byName(s){return n.find(d=>d.name===s&&d.type===i&&d.parent?.name==s)},byId(s){return n.find(d=>d.id===s&&d.type===i&&d.parent?.name==o)}}}}}function findCommand(e){const r=e instanceof discord_js.Client?e.application.commands.cache:e.commands.cache;return{byName(i,n=()=>!0){return r.find(o=>o.name===i&&n(o))},byId(i){return r.get(i)},byFilter(i){return r.find(i)}}}function createEmbedAuthor(e){const{user:r,property:i="displayName",imageSize:n=512,iconURL:o,url:s,prefix:d="",suffix:u=""}=e;return{name:`${d}${r[i]}${u}`,url:s,iconURL:o||r.displayAvatarURL({size:n})}}function createEmbedFooter(e){const{text:r,iconURL:i}=e;return{text:r??"\u200B",iconURL:core.notFound(i)}}function createEmbedAsset(e,r){return e instanceof discord_js.Attachment||e instanceof discord_js.AttachmentBuilder?{url:`attachment://${e.name}`,...r}:e?{url:e,...r}:void 0}function createEmbed(e){const{extend:r={},...i}=e,{color:n,modify:o,...s}=i,{color:d,...u}=r,m={...u,...s},c=new discord_js.EmbedBuilder(m);if(d&&c.setColor(d),n&&c.setColor(n),o?.fields&&typeof o.fields=="function"){const f=o.fields(c.data.fields||[]);c.setFields(f)}return c}function findEmoji(e){const r=e.emojis.cache;return{byName(i,n,o=()=>!0){return n?r.find(s=>s.name==i&&s.animated==n&&o(s)):r.find(s=>s.name==i&&o(s))},byId(i,n){return n?r.find(o=>o.id==i&&o.animated==n):r.find(o=>o.id==i)},byFilter(i){return e.emojis.cache.find(i)}}}const formated={mention(e,r,i=""){const n=r?.toString();return{channel:n?discord_js.channelMention(n):i,user:n?discord_js.userMention(n):i,role:n?discord_js.roleMention(n):i}[e]}};function findMember(e){return{byGlobalName(r,i=()=>!0){return e.members.cache.find(n=>n.user.globalName==r&&i(n))},byNickname(r,i=()=>!0){return e.members.cache.find(n=>n.nickname&&n.nickname==r&&i(n))},byUsername(r,i=()=>!0){return e.members.cache.find(n=>n.user.username===r&&i(n))},byDisplayName(r,i=()=>!0){return e.members.cache.find(n=>n.displayName===r&&i(n))},byId(r){return e.members.cache.get(r)},byFilter(r){return e.members.cache.find(r)}}}function findRole(e){return{byColor(r,i=()=>!0){return e.roles.cache.find(n=>n.color==r&&i(n))},byHexColor(r,i=()=>!0){return e.roles.cache.find(n=>n.hexColor==r&&i(n))},byName(r,i=()=>!0){return e.roles.cache.find(n=>n.name==r&&i(n))},byId(r){return e.roles.cache.get(r)},byFilter(r){return e.roles.cache.find(r)}}}function createRow(...e){return new discord_js.ActionRowBuilder({components:e})}function createModalInput(e){return createRow(new discord_js.TextInputBuilder(e))}function createLinkButton(e){return e.label||(e.label=e.url),new discord_js.ButtonBuilder({style:discord_js.ButtonStyle.Link,...e})}exports.CustomItents=CustomItents,exports.CustomPartials=CustomPartials,exports.createEmbed=createEmbed,exports.createEmbedAsset=createEmbedAsset,exports.createEmbedAuthor=createEmbedAuthor,exports.createEmbedFooter=createEmbedFooter,exports.createLinkButton=createLinkButton,exports.createModalInput=createModalInput,exports.createRow=createRow,exports.findChannel=findChannel,exports.findCommand=findCommand,exports.findEmoji=findEmoji,exports.findMember=findMember,exports.findRole=findRole,exports.formated=formated,Object.keys(core).forEach(function(e){e!=="default"&&!Object.prototype.hasOwnProperty.call(exports,e)&&(exports[e]=core[e])});
2
- //# sourceMappingURL=index.cjs.map
1
+ 'use strict';
2
+
3
+ const client = require('./constants/client.cjs');
4
+ const channels = require('./functions/channels.cjs');
5
+ const commands = require('./functions/commands.cjs');
6
+ const components = require('./functions/components.cjs');
7
+ const embeds = require('./functions/embeds.cjs');
8
+ const emojis = require('./functions/emojis.cjs');
9
+ const format = require('./functions/format.cjs');
10
+ const members = require('./functions/members.cjs');
11
+ const roles = require('./functions/roles.cjs');
12
+ const utils = require('./functions/utils.cjs');
13
+ const core = require('@magicyan/core');
14
+
15
+
16
+
17
+ exports.CustomItents = client.CustomItents;
18
+ exports.CustomPartials = client.CustomPartials;
19
+ exports.findChannel = channels.findChannel;
20
+ exports.findCommand = commands.findCommand;
21
+ exports.createComponentsManager = components.createComponentsManager;
22
+ exports.createEmbed = embeds.createEmbed;
23
+ exports.createEmbedAsset = embeds.createEmbedAsset;
24
+ exports.createEmbedAuthor = embeds.createEmbedAuthor;
25
+ exports.createEmbedFooter = embeds.createEmbedFooter;
26
+ exports.findEmoji = emojis.findEmoji;
27
+ exports.formated = format.formated;
28
+ exports.findMember = members.findMember;
29
+ exports.findRole = roles.findRole;
30
+ exports.createLinkButton = utils.createLinkButton;
31
+ exports.createModalInput = utils.createModalInput;
32
+ exports.createRow = utils.createRow;
33
+ Object.keys(core).forEach(function (k) {
34
+ if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) exports[k] = core[k];
35
+ });
package/dist/index.d.cts CHANGED
@@ -1,5 +1,5 @@
1
1
  import * as discord_js from 'discord.js';
2
- import { GatewayIntentBits, Partials, ChannelType, Guild, CommandInteractionOption, Client, ApplicationCommand, EmbedAuthorData, EmbedFooterData, EmbedAssetData, EmbedBuilder, User, ImageURLOptions, Attachment, AttachmentBuilder, ColorResolvable, GuildEmoji, GuildBasedChannel, Role, GuildMember, AnyComponentBuilder, ActionRowBuilder, TextInputBuilder, ButtonBuilder, TextInputComponentData, LinkButtonComponentData } from 'discord.js';
2
+ import { GatewayIntentBits, Partials, ChannelType, Guild, CommandInteractionOption, Client, ApplicationCommand, ActionRow, MessageActionRowComponent, ButtonComponent, StringSelectMenuComponent, UserSelectMenuComponent, ChannelSelectMenuComponent, RoleSelectMenuComponent, MentionableSelectMenuComponent, EmbedAuthorData, EmbedFooterData, EmbedAssetData, EmbedBuilder, User, ImageURLOptions, Attachment, AttachmentBuilder, ColorResolvable, GuildEmoji, GuildBasedChannel, Role, GuildMember, AnyComponentBuilder, ActionRowBuilder, TextInputBuilder, ButtonBuilder, TextInputComponentData, LinkButtonComponentData } from 'discord.js';
3
3
  export * from '@magicyan/core';
4
4
 
5
5
  declare const CustomItents: {
@@ -41,6 +41,30 @@ declare function findCommand(guildOrClient: Guild | Client<true>): {
41
41
  }> | undefined;
42
42
  };
43
43
 
44
+ interface MessageComponentsManager {
45
+ getButton(customId: string): ButtonComponent | undefined;
46
+ getButton(customId: string, required: true): ButtonComponent;
47
+ getStringSelect(customId: string): StringSelectMenuComponent | undefined;
48
+ getStringSelect(customId: string, required: true): StringSelectMenuComponent;
49
+ getUserSelect(customId: string): UserSelectMenuComponent | undefined;
50
+ getUserSelect(customId: string, required: true): UserSelectMenuComponent;
51
+ getChannelSelect(customId: string): ChannelSelectMenuComponent | undefined;
52
+ getChannelSelect(customId: string, required: true): ChannelSelectMenuComponent;
53
+ getRoleSelect(customId: string): RoleSelectMenuComponent | undefined;
54
+ getRoleSelect(customId: string, required: true): RoleSelectMenuComponent;
55
+ getMentionableSelect(customId: string): MentionableSelectMenuComponent | undefined;
56
+ getMentionableSelect(customId: string, required: true): MentionableSelectMenuComponent;
57
+ resolved: {
58
+ buttons: ButtonComponent[];
59
+ stringSelects: StringSelectMenuComponent[];
60
+ userSelects: UserSelectMenuComponent[];
61
+ channelSelects: ChannelSelectMenuComponent[];
62
+ roleSelects: RoleSelectMenuComponent[];
63
+ mentionableSelects: MentionableSelectMenuComponent[];
64
+ };
65
+ }
66
+ declare function createComponentsManager(components: ActionRow<MessageActionRowComponent>[]): MessageComponentsManager;
67
+
44
68
  interface CreateEmbedAuthorOptions {
45
69
  user: User;
46
70
  property?: "username" | "displayName" | "id" | "globalName";
@@ -118,7 +142,7 @@ declare function findRole(guild: Guild): {
118
142
  byHexColor(hexColor: string, and?: FindRoleFilter): Role | undefined;
119
143
  byName(name: string, and?: FindRoleFilter): Role | undefined;
120
144
  byId(id: string): Role | undefined;
121
- byFilter(filter: (role: Role) => boolean): Role | undefined;
145
+ byFilter(filter: FindRoleFilter): Role | undefined;
122
146
  };
123
147
 
124
148
  declare function createRow<Component extends AnyComponentBuilder>(...components: Component[]): ActionRowBuilder<Component>;
@@ -127,4 +151,4 @@ declare function createModalInput(data: CreateModalInputData): ActionRowBuilder<
127
151
  type CreateLinkButtonData = Omit<LinkButtonComponentData, "style" | "type">;
128
152
  declare function createLinkButton(data: CreateLinkButtonData): ButtonBuilder;
129
153
 
130
- export { CustomItents, CustomPartials, createEmbed, createEmbedAsset, createEmbedAuthor, createEmbedFooter, createLinkButton, createModalInput, createRow, findChannel, findCommand, findEmoji, findMember, findRole, formated };
154
+ export { CustomItents, CustomPartials, createComponentsManager, createEmbed, createEmbedAsset, createEmbedAuthor, createEmbedFooter, createLinkButton, createModalInput, createRow, findChannel, findCommand, findEmoji, findMember, findRole, formated };
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, EmbedAuthorData, EmbedFooterData, EmbedAssetData, EmbedBuilder, User, ImageURLOptions, Attachment, AttachmentBuilder, ColorResolvable, GuildEmoji, GuildBasedChannel, Role, GuildMember, AnyComponentBuilder, ActionRowBuilder, TextInputBuilder, ButtonBuilder, TextInputComponentData, LinkButtonComponentData } from 'discord.js';
2
+ import { GatewayIntentBits, Partials, ChannelType, Guild, CommandInteractionOption, Client, ApplicationCommand, ActionRow, MessageActionRowComponent, ButtonComponent, StringSelectMenuComponent, UserSelectMenuComponent, ChannelSelectMenuComponent, RoleSelectMenuComponent, MentionableSelectMenuComponent, EmbedAuthorData, EmbedFooterData, EmbedAssetData, EmbedBuilder, User, ImageURLOptions, Attachment, AttachmentBuilder, ColorResolvable, GuildEmoji, GuildBasedChannel, Role, GuildMember, AnyComponentBuilder, ActionRowBuilder, TextInputBuilder, ButtonBuilder, TextInputComponentData, LinkButtonComponentData } from 'discord.js';
3
3
  export * from '@magicyan/core';
4
4
 
5
5
  declare const CustomItents: {
@@ -41,6 +41,30 @@ declare function findCommand(guildOrClient: Guild | Client<true>): {
41
41
  }> | undefined;
42
42
  };
43
43
 
44
+ interface MessageComponentsManager {
45
+ getButton(customId: string): ButtonComponent | undefined;
46
+ getButton(customId: string, required: true): ButtonComponent;
47
+ getStringSelect(customId: string): StringSelectMenuComponent | undefined;
48
+ getStringSelect(customId: string, required: true): StringSelectMenuComponent;
49
+ getUserSelect(customId: string): UserSelectMenuComponent | undefined;
50
+ getUserSelect(customId: string, required: true): UserSelectMenuComponent;
51
+ getChannelSelect(customId: string): ChannelSelectMenuComponent | undefined;
52
+ getChannelSelect(customId: string, required: true): ChannelSelectMenuComponent;
53
+ getRoleSelect(customId: string): RoleSelectMenuComponent | undefined;
54
+ getRoleSelect(customId: string, required: true): RoleSelectMenuComponent;
55
+ getMentionableSelect(customId: string): MentionableSelectMenuComponent | undefined;
56
+ getMentionableSelect(customId: string, required: true): MentionableSelectMenuComponent;
57
+ resolved: {
58
+ buttons: ButtonComponent[];
59
+ stringSelects: StringSelectMenuComponent[];
60
+ userSelects: UserSelectMenuComponent[];
61
+ channelSelects: ChannelSelectMenuComponent[];
62
+ roleSelects: RoleSelectMenuComponent[];
63
+ mentionableSelects: MentionableSelectMenuComponent[];
64
+ };
65
+ }
66
+ declare function createComponentsManager(components: ActionRow<MessageActionRowComponent>[]): MessageComponentsManager;
67
+
44
68
  interface CreateEmbedAuthorOptions {
45
69
  user: User;
46
70
  property?: "username" | "displayName" | "id" | "globalName";
@@ -118,7 +142,7 @@ declare function findRole(guild: Guild): {
118
142
  byHexColor(hexColor: string, and?: FindRoleFilter): Role | undefined;
119
143
  byName(name: string, and?: FindRoleFilter): Role | undefined;
120
144
  byId(id: string): Role | undefined;
121
- byFilter(filter: (role: Role) => boolean): Role | undefined;
145
+ byFilter(filter: FindRoleFilter): Role | undefined;
122
146
  };
123
147
 
124
148
  declare function createRow<Component extends AnyComponentBuilder>(...components: Component[]): ActionRowBuilder<Component>;
@@ -127,4 +151,4 @@ declare function createModalInput(data: CreateModalInputData): ActionRowBuilder<
127
151
  type CreateLinkButtonData = Omit<LinkButtonComponentData, "style" | "type">;
128
152
  declare function createLinkButton(data: CreateLinkButtonData): ButtonBuilder;
129
153
 
130
- export { CustomItents, CustomPartials, createEmbed, createEmbedAsset, createEmbedAuthor, createEmbedFooter, createLinkButton, createModalInput, createRow, findChannel, findCommand, findEmoji, findMember, findRole, formated };
154
+ export { CustomItents, CustomPartials, createComponentsManager, createEmbed, createEmbedAsset, createEmbedAuthor, createEmbedFooter, createLinkButton, createModalInput, createRow, findChannel, findCommand, findEmoji, findMember, findRole, formated };
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, EmbedAuthorData, EmbedFooterData, EmbedAssetData, EmbedBuilder, User, ImageURLOptions, Attachment, AttachmentBuilder, ColorResolvable, GuildEmoji, GuildBasedChannel, Role, GuildMember, AnyComponentBuilder, ActionRowBuilder, TextInputBuilder, ButtonBuilder, TextInputComponentData, LinkButtonComponentData } from 'discord.js';
2
+ import { GatewayIntentBits, Partials, ChannelType, Guild, CommandInteractionOption, Client, ApplicationCommand, ActionRow, MessageActionRowComponent, ButtonComponent, StringSelectMenuComponent, UserSelectMenuComponent, ChannelSelectMenuComponent, RoleSelectMenuComponent, MentionableSelectMenuComponent, EmbedAuthorData, EmbedFooterData, EmbedAssetData, EmbedBuilder, User, ImageURLOptions, Attachment, AttachmentBuilder, ColorResolvable, GuildEmoji, GuildBasedChannel, Role, GuildMember, AnyComponentBuilder, ActionRowBuilder, TextInputBuilder, ButtonBuilder, TextInputComponentData, LinkButtonComponentData } from 'discord.js';
3
3
  export * from '@magicyan/core';
4
4
 
5
5
  declare const CustomItents: {
@@ -41,6 +41,30 @@ declare function findCommand(guildOrClient: Guild | Client<true>): {
41
41
  }> | undefined;
42
42
  };
43
43
 
44
+ interface MessageComponentsManager {
45
+ getButton(customId: string): ButtonComponent | undefined;
46
+ getButton(customId: string, required: true): ButtonComponent;
47
+ getStringSelect(customId: string): StringSelectMenuComponent | undefined;
48
+ getStringSelect(customId: string, required: true): StringSelectMenuComponent;
49
+ getUserSelect(customId: string): UserSelectMenuComponent | undefined;
50
+ getUserSelect(customId: string, required: true): UserSelectMenuComponent;
51
+ getChannelSelect(customId: string): ChannelSelectMenuComponent | undefined;
52
+ getChannelSelect(customId: string, required: true): ChannelSelectMenuComponent;
53
+ getRoleSelect(customId: string): RoleSelectMenuComponent | undefined;
54
+ getRoleSelect(customId: string, required: true): RoleSelectMenuComponent;
55
+ getMentionableSelect(customId: string): MentionableSelectMenuComponent | undefined;
56
+ getMentionableSelect(customId: string, required: true): MentionableSelectMenuComponent;
57
+ resolved: {
58
+ buttons: ButtonComponent[];
59
+ stringSelects: StringSelectMenuComponent[];
60
+ userSelects: UserSelectMenuComponent[];
61
+ channelSelects: ChannelSelectMenuComponent[];
62
+ roleSelects: RoleSelectMenuComponent[];
63
+ mentionableSelects: MentionableSelectMenuComponent[];
64
+ };
65
+ }
66
+ declare function createComponentsManager(components: ActionRow<MessageActionRowComponent>[]): MessageComponentsManager;
67
+
44
68
  interface CreateEmbedAuthorOptions {
45
69
  user: User;
46
70
  property?: "username" | "displayName" | "id" | "globalName";
@@ -118,7 +142,7 @@ declare function findRole(guild: Guild): {
118
142
  byHexColor(hexColor: string, and?: FindRoleFilter): Role | undefined;
119
143
  byName(name: string, and?: FindRoleFilter): Role | undefined;
120
144
  byId(id: string): Role | undefined;
121
- byFilter(filter: (role: Role) => boolean): Role | undefined;
145
+ byFilter(filter: FindRoleFilter): Role | undefined;
122
146
  };
123
147
 
124
148
  declare function createRow<Component extends AnyComponentBuilder>(...components: Component[]): ActionRowBuilder<Component>;
@@ -127,4 +151,4 @@ declare function createModalInput(data: CreateModalInputData): ActionRowBuilder<
127
151
  type CreateLinkButtonData = Omit<LinkButtonComponentData, "style" | "type">;
128
152
  declare function createLinkButton(data: CreateLinkButtonData): ButtonBuilder;
129
153
 
130
- export { CustomItents, CustomPartials, createEmbed, createEmbedAsset, createEmbedAuthor, createEmbedFooter, createLinkButton, createModalInput, createRow, findChannel, findCommand, findEmoji, findMember, findRole, formated };
154
+ export { CustomItents, CustomPartials, createComponentsManager, createEmbed, createEmbedAsset, createEmbedAuthor, createEmbedFooter, createLinkButton, createModalInput, createRow, findChannel, findCommand, findEmoji, findMember, findRole, formated };
package/dist/index.mjs CHANGED
@@ -1,2 +1,11 @@
1
- import{IntentsBitField as s,Partials as l,ChannelType as g,Client as b,Attachment as y,AttachmentBuilder as h,EmbedBuilder as p,channelMention as F,userMention as M,roleMention as G,ActionRowBuilder as C,TextInputBuilder as I,ButtonBuilder as N,ButtonStyle as x}from"discord.js";import{notFound as R}from"@magicyan/core";export*from"@magicyan/core";const A=[s.Flags.MessageContent,s.Flags.GuildMessages,s.Flags.GuildMessageReactions,s.Flags.GuildMessageTyping,s.Flags.DirectMessages,s.Flags.DirectMessageReactions,s.Flags.DirectMessageTyping],B=[s.Flags.GuildEmojisAndStickers,s.Flags.GuildIntegrations,s.Flags.GuildInvites,s.Flags.GuildMembers,s.Flags.GuildMessageReactions,s.Flags.GuildMessageTyping,s.Flags.GuildMessages,s.Flags.GuildModeration,s.Flags.GuildPresences,s.Flags.GuildScheduledEvents,s.Flags.GuildVoiceStates,s.Flags.GuildWebhooks,s.Flags.Guilds],E=[s.Flags.AutoModerationConfiguration,s.Flags.AutoModerationExecution],k={Messages:A,Guild:B,Other:E,All:Object.values(s.Flags)},L={All:[l.Channel,l.GuildMember,l.GuildScheduledEvent,l.Message,l.Reaction,l.ThreadMember,l.User]};function S(n,t){const r=t??g.GuildText,e=n.channels.cache;return{byName(i){return e.find(a=>a.name===i&&a.type===r)},byId(i){return e.find(a=>a.id===i&&a.type===r)},inCategoryId(i){return{byName(a){return e.find(o=>o.name===a&&o.type===r&&o.parentId==i)},byId(a){return e.find(o=>o.id===a&&o.type===r&&o.parentId==a)}}},inCategoryName(i){return{byName(a){return e.find(o=>o.name===a&&o.type===r&&o.parent?.name==a)},byId(a){return e.find(o=>o.id===a&&o.type===r&&o.parent?.name==i)}}}}}function T(n){const t=n instanceof b?n.application.commands.cache:n.commands.cache;return{byName(r,e=()=>!0){return t.find(i=>i.name===r&&e(i))},byId(r){return t.get(r)},byFilter(r){return t.find(r)}}}function U(n){const{user:t,property:r="displayName",imageSize:e=512,iconURL:i,url:a,prefix:o="",suffix:d=""}=n;return{name:`${o}${t[r]}${d}`,url:a,iconURL:i||t.displayAvatarURL({size:e})}}function v(n){const{text:t,iconURL:r}=n;return{text:t??"\u200B",iconURL:R(r)}}function w(n,t){return n instanceof y||n instanceof h?{url:`attachment://${n.name}`,...t}:n?{url:n,...t}:void 0}function j(n){const{extend:t={},...r}=n,{color:e,modify:i,...a}=r,{color:o,...d}=t,m={...d,...a},u=new p(m);if(o&&u.setColor(o),e&&u.setColor(e),i?.fields&&typeof i.fields=="function"){const f=i.fields(u.data.fields||[]);u.setFields(f)}return u}function D(n){const t=n.emojis.cache;return{byName(r,e,i=()=>!0){return e?t.find(a=>a.name==r&&a.animated==e&&i(a)):t.find(a=>a.name==r&&i(a))},byId(r,e){return e?t.find(i=>i.id==r&&i.animated==e):t.find(i=>i.id==r)},byFilter(r){return n.emojis.cache.find(r)}}}const $={mention(n,t,r=""){const e=t?.toString();return{channel:e?F(e):r,user:e?M(e):r,role:e?G(e):r}[n]}};function P(n){return{byGlobalName(t,r=()=>!0){return n.members.cache.find(e=>e.user.globalName==t&&r(e))},byNickname(t,r=()=>!0){return n.members.cache.find(e=>e.nickname&&e.nickname==t&&r(e))},byUsername(t,r=()=>!0){return n.members.cache.find(e=>e.user.username===t&&r(e))},byDisplayName(t,r=()=>!0){return n.members.cache.find(e=>e.displayName===t&&r(e))},byId(t){return n.members.cache.get(t)},byFilter(t){return n.members.cache.find(t)}}}function z(n){return{byColor(t,r=()=>!0){return n.roles.cache.find(e=>e.color==t&&r(e))},byHexColor(t,r=()=>!0){return n.roles.cache.find(e=>e.hexColor==t&&r(e))},byName(t,r=()=>!0){return n.roles.cache.find(e=>e.name==t&&r(e))},byId(t){return n.roles.cache.get(t)},byFilter(t){return n.roles.cache.find(t)}}}function c(...n){return new C({components:n})}function O(n){return c(new I(n))}function H(n){return n.label||(n.label=n.url),new N({style:x.Link,...n})}export{k as CustomItents,L as CustomPartials,j as createEmbed,w as createEmbedAsset,U as createEmbedAuthor,v as createEmbedFooter,H as createLinkButton,O as createModalInput,c as createRow,S as findChannel,T as findCommand,D as findEmoji,P as findMember,z as findRole,$ as formated};
2
- //# sourceMappingURL=index.mjs.map
1
+ export { CustomItents, CustomPartials } from './constants/client.mjs';
2
+ export { findChannel } from './functions/channels.mjs';
3
+ export { findCommand } from './functions/commands.mjs';
4
+ export { createComponentsManager } from './functions/components.mjs';
5
+ export { createEmbed, createEmbedAsset, createEmbedAuthor, createEmbedFooter } from './functions/embeds.mjs';
6
+ export { findEmoji } from './functions/emojis.mjs';
7
+ export { formated } from './functions/format.mjs';
8
+ export { findMember } from './functions/members.mjs';
9
+ export { findRole } from './functions/roles.mjs';
10
+ export { createLinkButton, createModalInput, createRow } from './functions/utils.mjs';
11
+ export * from '@magicyan/core';
package/package.json CHANGED
@@ -1,47 +1,47 @@
1
- {
2
- "name": "@magicyan/discord",
3
- "version": "1.0.15",
4
- "description": "Simple functions to facilitate discord bot development",
5
- "license": "MIT",
6
- "type": "module",
7
- "publishConfig": {
8
- "access": "public"
9
- },
10
- "repository": {
11
- "type": "git",
12
- "url": "https://github.com/rinckodev/magicyan",
13
- "directory": "packages/core"
14
- },
15
- "author": "Rincko Dev (https://github.com/rinckodev)",
16
- "bugs": {
17
- "url": "https://github.com/rinckodev/magicyan/issues"
18
- },
19
- "homepage": "https://github.com/rinckodev/magicyan/tree/main/packages/discord#readme",
20
- "exports": {
21
- ".": {
22
- "types": "./dist/index.d.ts",
23
- "import": "./dist/index.mjs",
24
- "require": "./dist/index.cjs"
25
- }
26
- },
27
- "main": "./dist/index.cjs",
28
- "module": "./dist/index.mjs",
29
- "types": "./dist/index.d.ts",
30
- "files": [
31
- "dist"
32
- ],
33
- "scripts": {
34
- "build": "unbuild",
35
- "dev": "tsx playground/index.ts"
36
- },
37
- "devDependencies": {
38
- "tsx": "^4.7.0",
39
- "unbuild": "^2.0.0"
40
- },
41
- "dependencies": {
42
- "@magicyan/core": "^1.0.14"
43
- },
44
- "peerDependencies": {
45
- "discord.js": "^14.14.1"
46
- }
47
- }
1
+ {
2
+ "name": "@magicyan/discord",
3
+ "version": "1.0.17",
4
+ "description": "Simple functions to facilitate discord bot development",
5
+ "license": "MIT",
6
+ "type": "module",
7
+ "publishConfig": {
8
+ "access": "public"
9
+ },
10
+ "repository": {
11
+ "type": "git",
12
+ "url": "https://github.com/rinckodev/magicyan",
13
+ "directory": "packages/core"
14
+ },
15
+ "author": "Rincko Dev (https://github.com/rinckodev)",
16
+ "bugs": {
17
+ "url": "https://github.com/rinckodev/magicyan/issues"
18
+ },
19
+ "homepage": "https://github.com/rinckodev/magicyan/tree/main/packages/discord#readme",
20
+ "exports": {
21
+ ".": {
22
+ "types": "./dist/index.d.ts",
23
+ "import": "./dist/index.mjs",
24
+ "require": "./dist/index.cjs"
25
+ }
26
+ },
27
+ "main": "./dist/index.cjs",
28
+ "module": "./dist/index.mjs",
29
+ "types": "./dist/index.d.ts",
30
+ "files": [
31
+ "dist"
32
+ ],
33
+ "scripts": {
34
+ "build": "unbuild",
35
+ "dev": "tsx playground/index.ts"
36
+ },
37
+ "devDependencies": {
38
+ "tsx": "^4.7.0",
39
+ "unbuild": "^2.0.0"
40
+ },
41
+ "dependencies": {
42
+ "@magicyan/core": "^1.0.15"
43
+ },
44
+ "peerDependencies": {
45
+ "discord.js": "^14.14.1"
46
+ }
47
+ }
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.cjs","sources":["../src/constants/client.ts","../src/functions/channels.ts","../src/functions/commands.ts","../src/functions/embeds.ts","../src/functions/emojis.ts","../src/functions/format.ts","../src/functions/members.ts","../src/functions/roles.ts","../src/functions/utils.ts"],"sourcesContent":["import { GatewayIntentBits, IntentsBitField, Partials } from \"discord.js\";\r\n\r\nconst Messages = [\r\n IntentsBitField.Flags.MessageContent,\r\n IntentsBitField.Flags.GuildMessages,\r\n IntentsBitField.Flags.GuildMessageReactions,\r\n IntentsBitField.Flags.GuildMessageTyping,\r\n IntentsBitField.Flags.DirectMessages,\r\n IntentsBitField.Flags.DirectMessageReactions,\r\n IntentsBitField.Flags.DirectMessageTyping,\r\n];\r\nconst Guild = [\r\n IntentsBitField.Flags.GuildEmojisAndStickers,\r\n IntentsBitField.Flags.GuildIntegrations,\r\n IntentsBitField.Flags.GuildInvites,\r\n IntentsBitField.Flags.GuildMembers,\r\n IntentsBitField.Flags.GuildMessageReactions,\r\n IntentsBitField.Flags.GuildMessageTyping,\r\n IntentsBitField.Flags.GuildMessages,\r\n IntentsBitField.Flags.GuildModeration,\r\n IntentsBitField.Flags.GuildPresences,\r\n IntentsBitField.Flags.GuildScheduledEvents,\r\n IntentsBitField.Flags.GuildVoiceStates,\r\n IntentsBitField.Flags.GuildWebhooks,\r\n IntentsBitField.Flags.Guilds,\r\n];\r\n\r\nconst Other = [\r\n IntentsBitField.Flags.AutoModerationConfiguration,\r\n IntentsBitField.Flags.AutoModerationExecution,\r\n];\r\n\r\n\r\nexport const CustomItents = {\r\n Messages,\r\n Guild,\r\n Other,\r\n All: Object.values(IntentsBitField.Flags) as GatewayIntentBits[]\r\n};\r\n\r\nexport const CustomPartials = {\r\n All: [\r\n Partials.Channel,\r\n Partials.GuildMember,\r\n Partials.GuildScheduledEvent,\r\n Partials.Message,\r\n Partials.Reaction,\r\n Partials.ThreadMember,\r\n Partials.User,\r\n ]\r\n};","import type { CommandInteractionOption, Guild } from \"discord.js\";\r\nimport { ChannelType } from \"discord.js\";\r\n\r\ntype GetChannelType<Type extends ChannelType> = Extract<NonNullable<CommandInteractionOption<\"cached\">[\"channel\"]>, {\r\n type: Type extends ChannelType.PublicThread | ChannelType.AnnouncementThread\r\n ? ChannelType.PublicThread | ChannelType.AnnouncementThread\r\n : Type;\r\n}>\r\nexport function findChannel<Type extends Exclude<ChannelType, ChannelType.DM> = ChannelType.GuildText>(guild: Guild, type?: Type){\r\n const channelType = type ?? ChannelType.GuildText;\r\n const cache = guild.channels.cache;\r\n return {\r\n byName(name: string): GetChannelType<Type> | undefined {\r\n return cache.find(c => \r\n c.name === name && \r\n c.type === channelType\r\n ) as GetChannelType<Type>;\r\n },\r\n byId(id: string): GetChannelType<Type> | undefined {\r\n return cache.find(c => \r\n c.id === id && \r\n c.type === channelType\r\n ) as GetChannelType<Type>;\r\n },\r\n inCategoryId(id: string){\r\n return {\r\n byName(name: string): GetChannelType<Type> | undefined {\r\n return cache.find(c => \r\n c.name === name && \r\n c.type === channelType && \r\n c.parentId == id\r\n ) as GetChannelType<Type>;\r\n },\r\n byId(id: string): GetChannelType<Type> | undefined {\r\n return cache.find(c => \r\n c.id === id && \r\n c.type === channelType && \r\n c.parentId == id\r\n ) as GetChannelType<Type>;\r\n },\r\n };\r\n },\r\n inCategoryName(name: string){\r\n return {\r\n byName(name: string): GetChannelType<Type> | undefined {\r\n return cache.find(c => \r\n c.name === name && \r\n c.type === channelType && \r\n c.parent?.name == name\r\n ) as GetChannelType<Type>;\r\n },\r\n byId(id: string): GetChannelType<Type> | undefined {\r\n return cache.find(c => \r\n c.id === id && \r\n c.type === channelType && \r\n c.parent?.name == name\r\n ) as GetChannelType<Type>;\r\n },\r\n };\r\n }\r\n }\r\n}","import { ApplicationCommand, Client, Guild } from \"discord.js\";\r\n\r\ntype FindCommandFilter = (command: ApplicationCommand) => boolean\r\n\r\nexport function findCommand(guildOrClient: Guild | Client<true>){\r\n const commands = guildOrClient instanceof Client\r\n ? guildOrClient.application.commands.cache\r\n : guildOrClient.commands.cache;\r\n\r\n return {\r\n byName(name: string, and: FindCommandFilter = () => true){\r\n return commands.find(command => command.name === name && and(command))\r\n },\r\n byId(id: string){\r\n return commands.get(id)\r\n },\r\n byFilter(filter: FindCommandFilter){\r\n return commands.find(filter);\r\n }\r\n }\r\n}","import { notFound } from \"@magicyan/core\";\r\nimport { Attachment, AttachmentBuilder, ColorResolvable, EmbedAssetData, EmbedAuthorData, EmbedBuilder, EmbedFooterData, Guild, GuildMember, ImageURLOptions, User } from \"discord.js\";\r\n\r\ninterface CreateEmbedAuthorOptions {\r\n user: User,\r\n property?: \"username\" | \"displayName\" | \"id\" | \"globalName\"\r\n imageSize?: ImageURLOptions[\"size\"],\r\n iconURL?: string, url?: string, prefix?: string, suffix?: string,\r\n}\r\nexport function createEmbedAuthor(options: CreateEmbedAuthorOptions): EmbedAuthorData {\r\n const { user, property=\"displayName\", imageSize: size=512, \r\n iconURL, url, prefix=\"\", suffix=\"\"\r\n } = options;\r\n return {\r\n name: `${prefix}${user[property]}${suffix}`, url, \r\n iconURL: iconURL || user.displayAvatarURL({ size }) \r\n };\r\n}\r\n\r\ninterface CreateEmbedFooterOptions {\r\n text?: string | null;\r\n iconURL?: string | null;\r\n}\r\nexport function createEmbedFooter(options: CreateEmbedFooterOptions): EmbedFooterData {\r\n const { text, iconURL } = options;\r\n return { text: text ?? \"\\u200b\", iconURL: notFound(iconURL) };\r\n}\r\n\r\ntype EmbedAssetOptions = Omit<EmbedAssetData, \"url\">\r\ntype AssetSource = string | null | Attachment | AttachmentBuilder;\r\n\r\nexport function createEmbedAsset(source?: AssetSource, options?: EmbedAssetOptions): EmbedAssetData | undefined {\r\n if (source instanceof Attachment || source instanceof AttachmentBuilder){\r\n return { url: `attachment://${source.name}`, ...options }\r\n }\r\n return source ? { url: source, ...options } : undefined;\r\n}\r\n\r\ntype EmbedColor = ColorResolvable | (string & {});\r\ntype BaseEmbedField = {\r\n name: string;\r\n value: string;\r\n inline?: boolean\r\n}\r\ntype BaseEmbedData = { \r\n title?: string;\r\n color?: EmbedColor;\r\n description?: string;\r\n url?: string;\r\n timestamp?: string | number | Date;\r\n footer?: EmbedFooterData;\r\n image?: EmbedAssetData;\r\n thumbnail?: EmbedAssetData;\r\n author?: EmbedAuthorData;\r\n fields?: BaseEmbedField[];\r\n}\r\ntype CreateEmbedOptions = BaseEmbedData & {\r\n extend?: BaseEmbedData;\r\n modify?: {\r\n fields?(fields: BaseEmbedField[]): BaseEmbedField[];\r\n }\r\n}\r\nexport function createEmbed(options: CreateEmbedOptions){\r\n const { extend: extendRaw = {}, ...embedRaw } = options;\r\n\r\n const { color: embedColor, modify, ...embedData } = embedRaw;\r\n const { color: extendColor, ...extendData } = extendRaw;\r\n\r\n const data = { ...extendData, ...embedData };\r\n const builder = new EmbedBuilder(data);\r\n \r\n if (extendColor) builder.setColor(extendColor as ColorResolvable);\r\n if (embedColor) builder.setColor(embedColor as ColorResolvable);\r\n\r\n if (modify?.fields && typeof modify.fields == \"function\"){\r\n const fields = modify.fields(builder.data.fields || []);\r\n builder.setFields(fields);\r\n }\r\n return builder;\r\n}","import type { Client, Guild, GuildEmoji } from \"discord.js\";\r\n\r\ntype FindEmojiFilter = (emoji: GuildEmoji) => boolean\r\n\r\nexport function findEmoji(guildOrClient: Guild | Client){\r\n const emojis = guildOrClient.emojis.cache;\r\n return {\r\n byName(name: string, animated?: boolean, and: FindEmojiFilter = () => true){\r\n return animated \r\n ? emojis.find(emoji => emoji.name == name && emoji.animated == animated && and(emoji))\r\n : emojis.find(emoji => emoji.name == name && and(emoji))\r\n },\r\n byId(id: string, animated?: boolean){\r\n return animated\r\n ? emojis.find(emoji => emoji.id == id && emoji.animated == animated)\r\n : emojis.find(emoji => emoji.id == id)\r\n },\r\n byFilter(filter: FindEmojiFilter){\r\n return guildOrClient.emojis.cache.find(filter);\r\n }\r\n }\r\n}","import { GuildBasedChannel, Role, User, channelMention, roleMention, userMention } from \"discord.js\";\r\n\r\ntype MentionType = \"channel\" | \"role\" | \"user\";\r\ntype GetMentionType<T extends MentionType> = string | null | undefined |\r\n(\r\n T extends \"channel\" ? GuildBasedChannel : \r\n T extends \"role\" ? Role : \r\n T extends \"user\" ? User : \r\n never \r\n)\r\nexport const formated = {\r\n mention<T extends MentionType>(type: T, ref: GetMentionType<T>, alt:string=\"\") {\r\n const id = ref?.toString();\r\n return {\r\n channel: id ? channelMention(id) : alt,\r\n user: id ? userMention(id) : alt,\r\n role: id ? roleMention(id) : alt,\r\n }[type]\r\n },\r\n}","import type { Guild, GuildMember } from \"discord.js\";\r\n\r\ntype FindMemberFilter = (member: GuildMember) => boolean;\r\n\r\nexport function findMember(guild: Guild){\r\n return {\r\n byGlobalName(globalName: string, and: FindMemberFilter = () => true){\r\n return guild.members.cache.find(member => member.user.globalName == globalName && and(member));\r\n },\r\n byNickname(nickname: string, and: FindMemberFilter = () => true){\r\n return guild.members.cache.find(member => member.nickname && member.nickname == nickname && and(member));\r\n },\r\n byUsername(username: string, and: FindMemberFilter = () => true){\r\n return guild.members.cache.find(member => member.user.username === username && and(member));\r\n },\r\n byDisplayName(displayName: string, and: FindMemberFilter = () => true){\r\n return guild.members.cache.find(member => member.displayName === displayName && and(member));\r\n },\r\n byId(id: string){\r\n return guild.members.cache.get(id); \r\n },\r\n byFilter(filter: FindMemberFilter){\r\n return guild.members.cache.find(filter);\r\n }\r\n }\r\n}","import type { Guild, Role } from \"discord.js\";\r\n\r\ntype FindRoleFilter = (role: Role) => boolean;\r\n\r\nexport function findRole(guild: Guild){\r\n return {\r\n byColor(color: number, and: FindRoleFilter = () => true){\r\n return guild.roles.cache.find(role => role.color == color && and(role));\r\n },\r\n byHexColor(hexColor: string, and: FindRoleFilter = () => true){\r\n return guild.roles.cache.find(role => role.hexColor == hexColor && and(role));\r\n },\r\n byName(name: string, and: FindRoleFilter = () => true){\r\n return guild.roles.cache.find(role => role.name == name && and(role));\r\n },\r\n byId(id: string){\r\n return guild.roles.cache.get(id); \r\n },\r\n byFilter(filter: (role: Role) => boolean){\r\n return guild.roles.cache.find(filter);\r\n }\r\n }\r\n}","import type { AnyComponentBuilder, LinkButtonComponentData, TextInputComponentData } from \"discord.js\";\r\nimport { ActionRowBuilder, ButtonBuilder, ButtonStyle, TextInputBuilder, } from \"discord.js\";\r\n\r\nexport function createRow<Component extends AnyComponentBuilder>(...components: Component[]){\r\n return new ActionRowBuilder<Component>({components});\r\n}\r\ntype CreateModalInputData = Omit<TextInputComponentData, \"type\">;\r\n\r\nexport function createModalInput(data: CreateModalInputData){\r\n return createRow(new TextInputBuilder(data));\r\n}\r\n\r\ntype CreateLinkButtonData = Omit<LinkButtonComponentData, \"style\" | \"type\">\r\n\r\nexport function createLinkButton(data: CreateLinkButtonData){\r\n if (!data.label) data.label = data.url;\r\n return new ButtonBuilder({style: ButtonStyle.Link, ...data});\r\n}"],"names":["Messages","IntentsBitField","Guild","Other","Partials","guild","type","channelType","ChannelType","cache","name","c","id","guildOrClient","commands","Client","and","command","filter","options","user","property","size","iconURL","url","prefix","suffix","text","notFound","source","Attachment","AttachmentBuilder","extendRaw","embedRaw","embedColor","modify","embedData","extendColor","extendData","data","builder","EmbedBuilder","fields","emojis","animated","emoji","ref","alt","channelMention","userMention","roleMention","globalName","member","nickname","username","displayName","color","role","hexColor","components","ActionRowBuilder","TextInputBuilder","ButtonBuilder","ButtonStyle"],"mappings":"mFAEMA,EAAW,CACbC,WAAAA,gBAAgB,MAAM,eACtBA,WAAAA,gBAAgB,MAAM,cACtBA,WAAAA,gBAAgB,MAAM,sBACtBA,WAAAA,gBAAgB,MAAM,mBACtBA,2BAAgB,MAAM,eACtBA,WAAgB,gBAAA,MAAM,uBACtBA,WAAAA,gBAAgB,MAAM,mBAC1B,EACMC,EAAQ,CACVD,WAAAA,gBAAgB,MAAM,uBACtBA,WAAAA,gBAAgB,MAAM,kBACtBA,WAAgB,gBAAA,MAAM,aACtBA,WAAAA,gBAAgB,MAAM,aACtBA,WAAAA,gBAAgB,MAAM,sBACtBA,2BAAgB,MAAM,mBACtBA,WAAAA,gBAAgB,MAAM,cACtBA,WAAAA,gBAAgB,MAAM,gBACtBA,WAAAA,gBAAgB,MAAM,eACtBA,WAAAA,gBAAgB,MAAM,qBACtBA,WAAgB,gBAAA,MAAM,iBACtBA,2BAAgB,MAAM,cACtBA,2BAAgB,MAAM,MAC1B,EAEME,EAAQ,CACVF,2BAAgB,MAAM,4BACtBA,WAAgB,gBAAA,MAAM,uBAC1B,EAGa,aAAe,CACxB,SAAAD,EACA,MAAAE,EACA,MAAAC,EACA,IAAK,OAAO,OAAOF,WAAAA,gBAAgB,KAAK,CAC5C,EAEa,eAAiB,CAC1B,IAAK,CACDG,WAAAA,SAAS,QACTA,WAAAA,SAAS,YACTA,oBAAS,oBACTA,WAAAA,SAAS,QACTA,WAAS,SAAA,SACTA,WAAS,SAAA,aACTA,WAAAA,SAAS,IACb,CACJ,EC1CO,SAAS,YAAuFC,EAAcC,EAAY,CAC7H,MAAMC,EAAcD,GAAQE,uBAAY,UAClCC,EAAQJ,EAAM,SAAS,MAC7B,MAAO,CACH,OAAOK,EAAgD,CACnD,OAAOD,EAAM,KAAKE,GACdA,EAAE,OAASD,GACXC,EAAE,OAASJ,CACf,CACJ,EACA,KAAKK,EAA8C,CAC/C,OAAOH,EAAM,KAAKE,GACdA,EAAE,KAAOC,GACTD,EAAE,OAASJ,CACf,CACJ,EACA,aAAaK,EAAW,CACpB,MAAO,CACH,OAAOF,EAAgD,CACnD,OAAOD,EAAM,KAAKE,GACdA,EAAE,OAASD,GACXC,EAAE,OAASJ,GACXI,EAAE,UAAYC,CAClB,CACJ,EACA,KAAKA,EAA8C,CAC/C,OAAOH,EAAM,KAAKE,GACdA,EAAE,KAAOC,GACTD,EAAE,OAASJ,GACXI,EAAE,UAAYC,CAClB,CACJ,CACJ,CACJ,EACA,eAAeF,EAAa,CACxB,MAAO,CACH,OAAOA,EAAgD,CACnD,OAAOD,EAAM,KAAKE,GACdA,EAAE,OAASD,GACXC,EAAE,OAASJ,GACXI,EAAE,QAAQ,MAAQD,CACtB,CACJ,EACA,KAAKE,EAA8C,CAC/C,OAAOH,EAAM,KAAKE,GACdA,EAAE,KAAOC,GACTD,EAAE,OAASJ,GACXI,EAAE,QAAQ,MAAQD,CACtB,CACJ,CACJ,CACJ,CACJ,CACJ,CCzDgB,SAAA,YAAYG,EAAoC,CAC5D,MAAMC,EAAWD,aAAyBE,WAAAA,OACxCF,EAAc,YAAY,SAAS,MACnCA,EAAc,SAAS,MAEzB,MAAO,CACH,OAAOH,EAAcM,EAAyB,IAAM,GAAK,CACrD,OAAOF,EAAS,KAAKG,GAAWA,EAAQ,OAASP,GAAQM,EAAIC,CAAO,CAAC,CACzE,EACA,KAAKL,EAAW,CACZ,OAAOE,EAAS,IAAIF,CAAE,CAC1B,EACA,SAASM,EAA0B,CAC/B,OAAOJ,EAAS,KAAKI,CAAM,CAC/B,CACJ,CACJ,CCXgB,SAAA,kBAAkBC,EAAoD,CAClF,KAAM,CAAE,KAAAC,EAAM,SAAAC,EAAS,cAAe,UAAWC,EAAK,IAClD,QAAAC,EAAS,IAAAC,EAAK,OAAAC,EAAO,GAAI,OAAAC,EAAO,EACpC,EAAIP,EACJ,MAAO,CACH,KAAM,GAAGM,CAAM,GAAGL,EAAKC,CAAQ,CAAC,GAAGK,CAAM,GAAI,IAAAF,EAC7C,QAASD,GAAWH,EAAK,iBAAiB,CAAE,KAAAE,CAAK,CAAC,CACtD,CACJ,CAMgB,SAAA,kBAAkBH,EAAoD,CAClF,KAAM,CAAE,KAAAQ,EAAM,QAAAJ,CAAQ,EAAIJ,EAC1B,MAAO,CAAE,KAAMQ,GAAQ,SAAU,QAASC,KAAAA,SAASL,CAAO,CAAE,CAChE,UAKgB,iBAAiBM,EAAsBV,EAAyD,CAC5G,OAAIU,aAAkBC,WAAcD,YAAAA,aAAkBE,6BAC3C,CAAE,IAAK,gBAAgBF,EAAO,IAAI,GAAI,GAAGV,CAAQ,EAErDU,EAAS,CAAE,IAAKA,EAAQ,GAAGV,CAAQ,EAAI,MAClD,CA0BgB,SAAA,YAAYA,EAA4B,CACpD,KAAM,CAAE,OAAQa,EAAY,CAAI,EAAA,GAAGC,CAAS,EAAId,EAE1C,CAAE,MAAOe,EAAY,OAAAC,EAAQ,GAAGC,CAAU,EAAIH,EAC9C,CAAE,MAAOI,EAAa,GAAGC,CAAW,EAAIN,EAExCO,EAAO,CAAE,GAAGD,EAAY,GAAGF,CAAU,EACrCI,EAAU,IAAIC,WAAaF,aAAAA,CAAI,EAKrC,GAHIF,GAAaG,EAAQ,SAASH,CAA8B,EAC5DH,GAAYM,EAAQ,SAASN,CAA6B,EAE1DC,GAAQ,QAAU,OAAOA,EAAO,QAAU,WAAW,CACrD,MAAMO,EAASP,EAAO,OAAOK,EAAQ,KAAK,QAAU,EAAE,EACtDA,EAAQ,UAAUE,CAAM,CAC5B,CACA,OAAOF,CACX,CC3EO,SAAS,UAAU3B,EAA8B,CACpD,MAAM8B,EAAS9B,EAAc,OAAO,MACpC,MAAO,CACH,OAAOH,EAAckC,EAAoB5B,EAAuB,IAAM,GAAK,CACvE,OAAO4B,EACLD,EAAO,KAAKE,GAASA,EAAM,MAAQnC,GAAQmC,EAAM,UAAYD,GAAa5B,EAAI6B,CAAK,CAAC,EACpFF,EAAO,KAAKE,GAASA,EAAM,MAAQnC,GAAQM,EAAI6B,CAAK,CAAC,CAC3D,EACA,KAAKjC,EAAYgC,EAAmB,CAChC,OAAOA,EACLD,EAAO,KAAKE,GAASA,EAAM,IAAMjC,GAAMiC,EAAM,UAAYD,CAAQ,EACjED,EAAO,KAAKE,GAASA,EAAM,IAAMjC,CAAE,CACzC,EACA,SAASM,EAAwB,CAC7B,OAAOL,EAAc,OAAO,MAAM,KAAKK,CAAM,CACjD,CACJ,CACJ,OCXa,SAAW,CACpB,QAA+BZ,EAASwC,EAAwBC,EAAW,GAAI,CAC3E,MAAMnC,EAAKkC,GAAK,SAChB,EAAA,MAAO,CACH,QAASlC,EAAKoC,0BAAepC,CAAE,EAAImC,EACnC,KAAMnC,EAAKqC,WAAAA,YAAYrC,CAAE,EAAImC,EAC7B,KAAMnC,EAAKsC,uBAAYtC,CAAE,EAAImC,CACjC,EAAEzC,CAAI,CACV,CACJ,ECfgB,SAAA,WAAWD,EAAa,CACpC,MAAO,CACH,aAAa8C,EAAoBnC,EAAwB,IAAM,GAAK,CAChE,OAAOX,EAAM,QAAQ,MAAM,KAAK+C,GAAUA,EAAO,KAAK,YAAcD,GAAcnC,EAAIoC,CAAM,CAAC,CACjG,EACA,WAAWC,EAAkBrC,EAAwB,IAAM,GAAK,CAC5D,OAAOX,EAAM,QAAQ,MAAM,KAAK+C,GAAUA,EAAO,UAAYA,EAAO,UAAYC,GAAYrC,EAAIoC,CAAM,CAAC,CAC3G,EACA,WAAWE,EAAkBtC,EAAwB,IAAM,GAAK,CAC5D,OAAOX,EAAM,QAAQ,MAAM,KAAK+C,GAAUA,EAAO,KAAK,WAAaE,GAAYtC,EAAIoC,CAAM,CAAC,CAC9F,EACA,cAAcG,EAAqBvC,EAAwB,IAAM,GAAK,CAClE,OAAOX,EAAM,QAAQ,MAAM,KAAK+C,GAAUA,EAAO,cAAgBG,GAAevC,EAAIoC,CAAM,CAAC,CAC/F,EACA,KAAKxC,EAAW,CACZ,OAAOP,EAAM,QAAQ,MAAM,IAAIO,CAAE,CACrC,EACA,SAASM,EAAyB,CAC9B,OAAOb,EAAM,QAAQ,MAAM,KAAKa,CAAM,CAC1C,CACJ,CACJ,CCrBO,SAAS,SAASb,EAAa,CAClC,MAAO,CACH,QAAQmD,EAAexC,EAAsB,IAAM,GAAK,CACpD,OAAOX,EAAM,MAAM,MAAM,KAAKoD,GAAQA,EAAK,OAASD,GAASxC,EAAIyC,CAAI,CAAC,CAC1E,EACA,WAAWC,EAAkB1C,EAAsB,IAAM,GAAK,CAC1D,OAAOX,EAAM,MAAM,MAAM,KAAKoD,GAAQA,EAAK,UAAYC,GAAY1C,EAAIyC,CAAI,CAAC,CAChF,EACA,OAAO/C,EAAcM,EAAsB,IAAM,GAAK,CAClD,OAAOX,EAAM,MAAM,MAAM,KAAKoD,GAAQA,EAAK,MAAQ/C,GAAQM,EAAIyC,CAAI,CAAC,CACxE,EACA,KAAK7C,EAAW,CACZ,OAAOP,EAAM,MAAM,MAAM,IAAIO,CAAE,CACnC,EACA,SAASM,EAAgC,CACrC,OAAOb,EAAM,MAAM,MAAM,KAAKa,CAAM,CACxC,CACJ,CACJ,CCnBO,SAAS,aAAoDyC,EAAwB,CACxF,OAAO,IAAIC,WAA4B,iBAAA,CAAC,WAAAD,CAAU,CAAC,CACvD,CAGO,SAAS,iBAAiBpB,EAA2B,CACxD,OAAO,UAAU,IAAIsB,WAAAA,iBAAiBtB,CAAI,CAAC,CAC/C,UAIgB,iBAAiBA,EAA2B,CACxD,OAAKA,EAAK,QAAOA,EAAK,MAAQA,EAAK,KAC5B,IAAIuB,WAAc,cAAA,CAAC,MAAOC,WAAAA,YAAY,KAAM,GAAGxB,CAAI,CAAC,CAC/D"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.mjs","sources":["../src/constants/client.ts","../src/functions/channels.ts","../src/functions/commands.ts","../src/functions/embeds.ts","../src/functions/emojis.ts","../src/functions/format.ts","../src/functions/members.ts","../src/functions/roles.ts","../src/functions/utils.ts"],"sourcesContent":["import { GatewayIntentBits, IntentsBitField, Partials } from \"discord.js\";\r\n\r\nconst Messages = [\r\n IntentsBitField.Flags.MessageContent,\r\n IntentsBitField.Flags.GuildMessages,\r\n IntentsBitField.Flags.GuildMessageReactions,\r\n IntentsBitField.Flags.GuildMessageTyping,\r\n IntentsBitField.Flags.DirectMessages,\r\n IntentsBitField.Flags.DirectMessageReactions,\r\n IntentsBitField.Flags.DirectMessageTyping,\r\n];\r\nconst Guild = [\r\n IntentsBitField.Flags.GuildEmojisAndStickers,\r\n IntentsBitField.Flags.GuildIntegrations,\r\n IntentsBitField.Flags.GuildInvites,\r\n IntentsBitField.Flags.GuildMembers,\r\n IntentsBitField.Flags.GuildMessageReactions,\r\n IntentsBitField.Flags.GuildMessageTyping,\r\n IntentsBitField.Flags.GuildMessages,\r\n IntentsBitField.Flags.GuildModeration,\r\n IntentsBitField.Flags.GuildPresences,\r\n IntentsBitField.Flags.GuildScheduledEvents,\r\n IntentsBitField.Flags.GuildVoiceStates,\r\n IntentsBitField.Flags.GuildWebhooks,\r\n IntentsBitField.Flags.Guilds,\r\n];\r\n\r\nconst Other = [\r\n IntentsBitField.Flags.AutoModerationConfiguration,\r\n IntentsBitField.Flags.AutoModerationExecution,\r\n];\r\n\r\n\r\nexport const CustomItents = {\r\n Messages,\r\n Guild,\r\n Other,\r\n All: Object.values(IntentsBitField.Flags) as GatewayIntentBits[]\r\n};\r\n\r\nexport const CustomPartials = {\r\n All: [\r\n Partials.Channel,\r\n Partials.GuildMember,\r\n Partials.GuildScheduledEvent,\r\n Partials.Message,\r\n Partials.Reaction,\r\n Partials.ThreadMember,\r\n Partials.User,\r\n ]\r\n};","import type { CommandInteractionOption, Guild } from \"discord.js\";\r\nimport { ChannelType } from \"discord.js\";\r\n\r\ntype GetChannelType<Type extends ChannelType> = Extract<NonNullable<CommandInteractionOption<\"cached\">[\"channel\"]>, {\r\n type: Type extends ChannelType.PublicThread | ChannelType.AnnouncementThread\r\n ? ChannelType.PublicThread | ChannelType.AnnouncementThread\r\n : Type;\r\n}>\r\nexport function findChannel<Type extends Exclude<ChannelType, ChannelType.DM> = ChannelType.GuildText>(guild: Guild, type?: Type){\r\n const channelType = type ?? ChannelType.GuildText;\r\n const cache = guild.channels.cache;\r\n return {\r\n byName(name: string): GetChannelType<Type> | undefined {\r\n return cache.find(c => \r\n c.name === name && \r\n c.type === channelType\r\n ) as GetChannelType<Type>;\r\n },\r\n byId(id: string): GetChannelType<Type> | undefined {\r\n return cache.find(c => \r\n c.id === id && \r\n c.type === channelType\r\n ) as GetChannelType<Type>;\r\n },\r\n inCategoryId(id: string){\r\n return {\r\n byName(name: string): GetChannelType<Type> | undefined {\r\n return cache.find(c => \r\n c.name === name && \r\n c.type === channelType && \r\n c.parentId == id\r\n ) as GetChannelType<Type>;\r\n },\r\n byId(id: string): GetChannelType<Type> | undefined {\r\n return cache.find(c => \r\n c.id === id && \r\n c.type === channelType && \r\n c.parentId == id\r\n ) as GetChannelType<Type>;\r\n },\r\n };\r\n },\r\n inCategoryName(name: string){\r\n return {\r\n byName(name: string): GetChannelType<Type> | undefined {\r\n return cache.find(c => \r\n c.name === name && \r\n c.type === channelType && \r\n c.parent?.name == name\r\n ) as GetChannelType<Type>;\r\n },\r\n byId(id: string): GetChannelType<Type> | undefined {\r\n return cache.find(c => \r\n c.id === id && \r\n c.type === channelType && \r\n c.parent?.name == name\r\n ) as GetChannelType<Type>;\r\n },\r\n };\r\n }\r\n }\r\n}","import { ApplicationCommand, Client, Guild } from \"discord.js\";\r\n\r\ntype FindCommandFilter = (command: ApplicationCommand) => boolean\r\n\r\nexport function findCommand(guildOrClient: Guild | Client<true>){\r\n const commands = guildOrClient instanceof Client\r\n ? guildOrClient.application.commands.cache\r\n : guildOrClient.commands.cache;\r\n\r\n return {\r\n byName(name: string, and: FindCommandFilter = () => true){\r\n return commands.find(command => command.name === name && and(command))\r\n },\r\n byId(id: string){\r\n return commands.get(id)\r\n },\r\n byFilter(filter: FindCommandFilter){\r\n return commands.find(filter);\r\n }\r\n }\r\n}","import { notFound } from \"@magicyan/core\";\r\nimport { Attachment, AttachmentBuilder, ColorResolvable, EmbedAssetData, EmbedAuthorData, EmbedBuilder, EmbedFooterData, Guild, GuildMember, ImageURLOptions, User } from \"discord.js\";\r\n\r\ninterface CreateEmbedAuthorOptions {\r\n user: User,\r\n property?: \"username\" | \"displayName\" | \"id\" | \"globalName\"\r\n imageSize?: ImageURLOptions[\"size\"],\r\n iconURL?: string, url?: string, prefix?: string, suffix?: string,\r\n}\r\nexport function createEmbedAuthor(options: CreateEmbedAuthorOptions): EmbedAuthorData {\r\n const { user, property=\"displayName\", imageSize: size=512, \r\n iconURL, url, prefix=\"\", suffix=\"\"\r\n } = options;\r\n return {\r\n name: `${prefix}${user[property]}${suffix}`, url, \r\n iconURL: iconURL || user.displayAvatarURL({ size }) \r\n };\r\n}\r\n\r\ninterface CreateEmbedFooterOptions {\r\n text?: string | null;\r\n iconURL?: string | null;\r\n}\r\nexport function createEmbedFooter(options: CreateEmbedFooterOptions): EmbedFooterData {\r\n const { text, iconURL } = options;\r\n return { text: text ?? \"\\u200b\", iconURL: notFound(iconURL) };\r\n}\r\n\r\ntype EmbedAssetOptions = Omit<EmbedAssetData, \"url\">\r\ntype AssetSource = string | null | Attachment | AttachmentBuilder;\r\n\r\nexport function createEmbedAsset(source?: AssetSource, options?: EmbedAssetOptions): EmbedAssetData | undefined {\r\n if (source instanceof Attachment || source instanceof AttachmentBuilder){\r\n return { url: `attachment://${source.name}`, ...options }\r\n }\r\n return source ? { url: source, ...options } : undefined;\r\n}\r\n\r\ntype EmbedColor = ColorResolvable | (string & {});\r\ntype BaseEmbedField = {\r\n name: string;\r\n value: string;\r\n inline?: boolean\r\n}\r\ntype BaseEmbedData = { \r\n title?: string;\r\n color?: EmbedColor;\r\n description?: string;\r\n url?: string;\r\n timestamp?: string | number | Date;\r\n footer?: EmbedFooterData;\r\n image?: EmbedAssetData;\r\n thumbnail?: EmbedAssetData;\r\n author?: EmbedAuthorData;\r\n fields?: BaseEmbedField[];\r\n}\r\ntype CreateEmbedOptions = BaseEmbedData & {\r\n extend?: BaseEmbedData;\r\n modify?: {\r\n fields?(fields: BaseEmbedField[]): BaseEmbedField[];\r\n }\r\n}\r\nexport function createEmbed(options: CreateEmbedOptions){\r\n const { extend: extendRaw = {}, ...embedRaw } = options;\r\n\r\n const { color: embedColor, modify, ...embedData } = embedRaw;\r\n const { color: extendColor, ...extendData } = extendRaw;\r\n\r\n const data = { ...extendData, ...embedData };\r\n const builder = new EmbedBuilder(data);\r\n \r\n if (extendColor) builder.setColor(extendColor as ColorResolvable);\r\n if (embedColor) builder.setColor(embedColor as ColorResolvable);\r\n\r\n if (modify?.fields && typeof modify.fields == \"function\"){\r\n const fields = modify.fields(builder.data.fields || []);\r\n builder.setFields(fields);\r\n }\r\n return builder;\r\n}","import type { Client, Guild, GuildEmoji } from \"discord.js\";\r\n\r\ntype FindEmojiFilter = (emoji: GuildEmoji) => boolean\r\n\r\nexport function findEmoji(guildOrClient: Guild | Client){\r\n const emojis = guildOrClient.emojis.cache;\r\n return {\r\n byName(name: string, animated?: boolean, and: FindEmojiFilter = () => true){\r\n return animated \r\n ? emojis.find(emoji => emoji.name == name && emoji.animated == animated && and(emoji))\r\n : emojis.find(emoji => emoji.name == name && and(emoji))\r\n },\r\n byId(id: string, animated?: boolean){\r\n return animated\r\n ? emojis.find(emoji => emoji.id == id && emoji.animated == animated)\r\n : emojis.find(emoji => emoji.id == id)\r\n },\r\n byFilter(filter: FindEmojiFilter){\r\n return guildOrClient.emojis.cache.find(filter);\r\n }\r\n }\r\n}","import { GuildBasedChannel, Role, User, channelMention, roleMention, userMention } from \"discord.js\";\r\n\r\ntype MentionType = \"channel\" | \"role\" | \"user\";\r\ntype GetMentionType<T extends MentionType> = string | null | undefined |\r\n(\r\n T extends \"channel\" ? GuildBasedChannel : \r\n T extends \"role\" ? Role : \r\n T extends \"user\" ? User : \r\n never \r\n)\r\nexport const formated = {\r\n mention<T extends MentionType>(type: T, ref: GetMentionType<T>, alt:string=\"\") {\r\n const id = ref?.toString();\r\n return {\r\n channel: id ? channelMention(id) : alt,\r\n user: id ? userMention(id) : alt,\r\n role: id ? roleMention(id) : alt,\r\n }[type]\r\n },\r\n}","import type { Guild, GuildMember } from \"discord.js\";\r\n\r\ntype FindMemberFilter = (member: GuildMember) => boolean;\r\n\r\nexport function findMember(guild: Guild){\r\n return {\r\n byGlobalName(globalName: string, and: FindMemberFilter = () => true){\r\n return guild.members.cache.find(member => member.user.globalName == globalName && and(member));\r\n },\r\n byNickname(nickname: string, and: FindMemberFilter = () => true){\r\n return guild.members.cache.find(member => member.nickname && member.nickname == nickname && and(member));\r\n },\r\n byUsername(username: string, and: FindMemberFilter = () => true){\r\n return guild.members.cache.find(member => member.user.username === username && and(member));\r\n },\r\n byDisplayName(displayName: string, and: FindMemberFilter = () => true){\r\n return guild.members.cache.find(member => member.displayName === displayName && and(member));\r\n },\r\n byId(id: string){\r\n return guild.members.cache.get(id); \r\n },\r\n byFilter(filter: FindMemberFilter){\r\n return guild.members.cache.find(filter);\r\n }\r\n }\r\n}","import type { Guild, Role } from \"discord.js\";\r\n\r\ntype FindRoleFilter = (role: Role) => boolean;\r\n\r\nexport function findRole(guild: Guild){\r\n return {\r\n byColor(color: number, and: FindRoleFilter = () => true){\r\n return guild.roles.cache.find(role => role.color == color && and(role));\r\n },\r\n byHexColor(hexColor: string, and: FindRoleFilter = () => true){\r\n return guild.roles.cache.find(role => role.hexColor == hexColor && and(role));\r\n },\r\n byName(name: string, and: FindRoleFilter = () => true){\r\n return guild.roles.cache.find(role => role.name == name && and(role));\r\n },\r\n byId(id: string){\r\n return guild.roles.cache.get(id); \r\n },\r\n byFilter(filter: (role: Role) => boolean){\r\n return guild.roles.cache.find(filter);\r\n }\r\n }\r\n}","import type { AnyComponentBuilder, LinkButtonComponentData, TextInputComponentData } from \"discord.js\";\r\nimport { ActionRowBuilder, ButtonBuilder, ButtonStyle, TextInputBuilder, } from \"discord.js\";\r\n\r\nexport function createRow<Component extends AnyComponentBuilder>(...components: Component[]){\r\n return new ActionRowBuilder<Component>({components});\r\n}\r\ntype CreateModalInputData = Omit<TextInputComponentData, \"type\">;\r\n\r\nexport function createModalInput(data: CreateModalInputData){\r\n return createRow(new TextInputBuilder(data));\r\n}\r\n\r\ntype CreateLinkButtonData = Omit<LinkButtonComponentData, \"style\" | \"type\">\r\n\r\nexport function createLinkButton(data: CreateLinkButtonData){\r\n if (!data.label) data.label = data.url;\r\n return new ButtonBuilder({style: ButtonStyle.Link, ...data});\r\n}"],"names":["Messages","IntentsBitField","Guild","Other","CustomItents","CustomPartials","Partials","findChannel","guild","type","channelType","ChannelType","cache","name","c","id","findCommand","guildOrClient","commands","Client","and","command","filter","createEmbedAuthor","options","user","property","size","iconURL","url","prefix","suffix","createEmbedFooter","text","notFound","createEmbedAsset","source","Attachment","AttachmentBuilder","createEmbed","extendRaw","embedRaw","embedColor","modify","embedData","extendColor","extendData","data","builder","EmbedBuilder","fields","findEmoji","emojis","animated","emoji","formated","ref","alt","channelMention","userMention","roleMention","findMember","globalName","member","nickname","username","displayName","findRole","color","role","hexColor","createRow","components","ActionRowBuilder","createModalInput","TextInputBuilder","createLinkButton","ButtonBuilder","ButtonStyle"],"mappings":"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"}