@magicyan/discord 1.0.14 → 1.0.16

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,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,33 @@
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,n){const r=n??discord_js.ChannelType.GuildText,i=e.channels.cache;return{byName(d){return i.find(s=>s.name===d&&s.type===r)},byId(d){return i.find(s=>s.id===d&&s.type===r)},inCategoryId(d){return{byName(s){return i.find(o=>o.name===s&&o.type===r&&o.parentId==d)},byId(s){return i.find(o=>o.id===s&&o.type===r&&o.parentId==s)}}},inCategoryName(d){return{byName(s){return i.find(o=>o.name===s&&o.type===r&&o.parent?.name==s)},byId(s){return i.find(o=>o.id===s&&o.type===r&&o.parent?.name==d)}}}}}function findCommand(e){const n=e instanceof discord_js.Client?e.application.commands.cache:e.commands.cache;return{byName(r,i=()=>!0){return n.find(d=>d.name===r&&i(d))},byId(r){return n.get(r)},byFilter(r){return n.find(r)}}}function createEmbedAuthor(e){const{user:n,property:r="displayName",imageSize:i=512,iconURL:d,url:s,prefix:o="",suffix:u=""}=e;return{name:`${o}${n[r]}${u}`,url:s,iconURL:d||n.displayAvatarURL({size:i})}}function createEmbedFooter(e){const{text:n,iconURL:r}=e;return{text:n??"\u200B",iconURL:core.notFound(r)}}function createEmbedAsset(e,n){return e instanceof discord_js.Attachment||e instanceof discord_js.AttachmentBuilder?{url:`attachment://${e.name}`,...n}:e?{url:e,...n}:void 0}function createEmbed(e){const{extend:n={},...r}=e,{color:i,modify:d,...s}=r,{color:o,...u}=n,m={...u,...s},c=new discord_js.EmbedBuilder(m);if(o&&c.setColor(o),i&&c.setColor(i),d?.fields&&typeof d.fields=="function"){const f=d.fields(c.data.fields||[]);c.setFields(f)}return c}function findEmoji(e){const n=e.emojis.cache;return{byName(r,i,d=()=>!0){return i?n.find(s=>s.name==r&&s.animated==i&&d(s)):n.find(s=>s.name==r&&d(s))},byId(r,i){return i?n.find(d=>d.id==r&&d.animated==i):n.find(d=>d.id==r)},byFilter(r){return e.emojis.cache.find(r)}}}function findMember(e){return{byGlobalName(n,r=()=>!0){return e.members.cache.find(i=>i.user.globalName==n&&r(i))},byNickname(n,r=()=>!0){return e.members.cache.find(i=>i.nickname&&i.nickname==n&&r(i))},byUsername(n,r=()=>!0){return e.members.cache.find(i=>i.user.username===n&&r(i))},byDisplayName(n,r=()=>!0){return e.members.cache.find(i=>i.displayName===n&&r(i))},byId(n){return e.members.cache.get(n)},byFilter(n){return e.members.cache.find(n)}}}function findRole(e){return{byColor(n,r=()=>!0){return e.roles.cache.find(i=>i.color==n&&r(i))},byHexColor(n,r=()=>!0){return e.roles.cache.find(i=>i.hexColor==n&&r(i))},byName(n,r=()=>!0){return e.roles.cache.find(i=>i.name==n&&r(i))},byId(n){return e.roles.cache.get(n)},byFilter(n){return e.roles.cache.find(n)}}}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,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 embeds = require('./functions/embeds.cjs');
7
+ const emojis = require('./functions/emojis.cjs');
8
+ const format = require('./functions/format.cjs');
9
+ const members = require('./functions/members.cjs');
10
+ const roles = require('./functions/roles.cjs');
11
+ const utils = require('./functions/utils.cjs');
12
+ const core = require('@magicyan/core');
13
+
14
+
15
+
16
+ exports.CustomItents = client.CustomItents;
17
+ exports.CustomPartials = client.CustomPartials;
18
+ exports.findChannel = channels.findChannel;
19
+ exports.findCommand = commands.findCommand;
20
+ exports.createEmbed = embeds.createEmbed;
21
+ exports.createEmbedAsset = embeds.createEmbedAsset;
22
+ exports.createEmbedAuthor = embeds.createEmbedAuthor;
23
+ exports.createEmbedFooter = embeds.createEmbedFooter;
24
+ exports.findEmoji = emojis.findEmoji;
25
+ exports.formated = format.formated;
26
+ exports.findMember = members.findMember;
27
+ exports.findRole = roles.findRole;
28
+ exports.createLinkButton = utils.createLinkButton;
29
+ exports.createModalInput = utils.createModalInput;
30
+ exports.createRow = utils.createRow;
31
+ Object.keys(core).forEach(function (k) {
32
+ if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) exports[k] = core[k];
33
+ });
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, GuildMember, Role, AnyComponentBuilder, ActionRowBuilder, TextInputBuilder, ButtonBuilder, TextInputComponentData, LinkButtonComponentData } 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';
3
3
  export * from '@magicyan/core';
4
4
 
5
5
  declare const CustomItents: {
@@ -92,6 +92,16 @@ declare function findEmoji(guildOrClient: Guild | Client): {
92
92
  byFilter(filter: FindEmojiFilter): GuildEmoji | undefined;
93
93
  };
94
94
 
95
+ type MentionType = "channel" | "role" | "user";
96
+ type GetMentionType<T extends MentionType> = string | null | undefined | (T extends "channel" ? GuildBasedChannel : T extends "role" ? Role : T extends "user" ? User : never);
97
+ declare const formated: {
98
+ mention<T extends MentionType>(type: T, ref: GetMentionType<T>, alt?: string): {
99
+ channel: string;
100
+ user: string;
101
+ role: string;
102
+ }[T];
103
+ };
104
+
95
105
  type FindMemberFilter = (member: GuildMember) => boolean;
96
106
  declare function findMember(guild: Guild): {
97
107
  byGlobalName(globalName: string, and?: FindMemberFilter): GuildMember | undefined;
@@ -117,4 +127,4 @@ declare function createModalInput(data: CreateModalInputData): ActionRowBuilder<
117
127
  type CreateLinkButtonData = Omit<LinkButtonComponentData, "style" | "type">;
118
128
  declare function createLinkButton(data: CreateLinkButtonData): ButtonBuilder;
119
129
 
120
- export { CustomItents, CustomPartials, createEmbed, createEmbedAsset, createEmbedAuthor, createEmbedFooter, createLinkButton, createModalInput, createRow, findChannel, findCommand, findEmoji, findMember, findRole };
130
+ export { CustomItents, CustomPartials, 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, GuildMember, Role, AnyComponentBuilder, ActionRowBuilder, TextInputBuilder, ButtonBuilder, TextInputComponentData, LinkButtonComponentData } 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';
3
3
  export * from '@magicyan/core';
4
4
 
5
5
  declare const CustomItents: {
@@ -92,6 +92,16 @@ declare function findEmoji(guildOrClient: Guild | Client): {
92
92
  byFilter(filter: FindEmojiFilter): GuildEmoji | undefined;
93
93
  };
94
94
 
95
+ type MentionType = "channel" | "role" | "user";
96
+ type GetMentionType<T extends MentionType> = string | null | undefined | (T extends "channel" ? GuildBasedChannel : T extends "role" ? Role : T extends "user" ? User : never);
97
+ declare const formated: {
98
+ mention<T extends MentionType>(type: T, ref: GetMentionType<T>, alt?: string): {
99
+ channel: string;
100
+ user: string;
101
+ role: string;
102
+ }[T];
103
+ };
104
+
95
105
  type FindMemberFilter = (member: GuildMember) => boolean;
96
106
  declare function findMember(guild: Guild): {
97
107
  byGlobalName(globalName: string, and?: FindMemberFilter): GuildMember | undefined;
@@ -117,4 +127,4 @@ declare function createModalInput(data: CreateModalInputData): ActionRowBuilder<
117
127
  type CreateLinkButtonData = Omit<LinkButtonComponentData, "style" | "type">;
118
128
  declare function createLinkButton(data: CreateLinkButtonData): ButtonBuilder;
119
129
 
120
- export { CustomItents, CustomPartials, createEmbed, createEmbedAsset, createEmbedAuthor, createEmbedFooter, createLinkButton, createModalInput, createRow, findChannel, findCommand, findEmoji, findMember, findRole };
130
+ export { CustomItents, CustomPartials, 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, GuildMember, Role, AnyComponentBuilder, ActionRowBuilder, TextInputBuilder, ButtonBuilder, TextInputComponentData, LinkButtonComponentData } 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';
3
3
  export * from '@magicyan/core';
4
4
 
5
5
  declare const CustomItents: {
@@ -92,6 +92,16 @@ declare function findEmoji(guildOrClient: Guild | Client): {
92
92
  byFilter(filter: FindEmojiFilter): GuildEmoji | undefined;
93
93
  };
94
94
 
95
+ type MentionType = "channel" | "role" | "user";
96
+ type GetMentionType<T extends MentionType> = string | null | undefined | (T extends "channel" ? GuildBasedChannel : T extends "role" ? Role : T extends "user" ? User : never);
97
+ declare const formated: {
98
+ mention<T extends MentionType>(type: T, ref: GetMentionType<T>, alt?: string): {
99
+ channel: string;
100
+ user: string;
101
+ role: string;
102
+ }[T];
103
+ };
104
+
95
105
  type FindMemberFilter = (member: GuildMember) => boolean;
96
106
  declare function findMember(guild: Guild): {
97
107
  byGlobalName(globalName: string, and?: FindMemberFilter): GuildMember | undefined;
@@ -117,4 +127,4 @@ declare function createModalInput(data: CreateModalInputData): ActionRowBuilder<
117
127
  type CreateLinkButtonData = Omit<LinkButtonComponentData, "style" | "type">;
118
128
  declare function createLinkButton(data: CreateLinkButtonData): ButtonBuilder;
119
129
 
120
- export { CustomItents, CustomPartials, createEmbed, createEmbedAsset, createEmbedAuthor, createEmbedFooter, createLinkButton, createModalInput, createRow, findChannel, findCommand, findEmoji, findMember, findRole };
130
+ export { CustomItents, CustomPartials, createEmbed, createEmbedAsset, createEmbedAuthor, createEmbedFooter, createLinkButton, createModalInput, createRow, findChannel, findCommand, findEmoji, findMember, findRole, formated };
package/dist/index.mjs CHANGED
@@ -1,2 +1,10 @@
1
- import{IntentsBitField as s,Partials as o,ChannelType as g,Client as b,Attachment as y,AttachmentBuilder as p,EmbedBuilder as F,ActionRowBuilder as h,TextInputBuilder as G,ButtonBuilder as M,ButtonStyle as C}from"discord.js";import{notFound as I}from"@magicyan/core";export*from"@magicyan/core";const N=[s.Flags.MessageContent,s.Flags.GuildMessages,s.Flags.GuildMessageReactions,s.Flags.GuildMessageTyping,s.Flags.DirectMessages,s.Flags.DirectMessageReactions,s.Flags.DirectMessageTyping],x=[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],R=[s.Flags.AutoModerationConfiguration,s.Flags.AutoModerationExecution],A={Messages:N,Guild:x,Other:R,All:Object.values(s.Flags)},B={All:[o.Channel,o.GuildMember,o.GuildScheduledEvent,o.Message,o.Reaction,o.ThreadMember,o.User]};function E(e,n){const r=n??g.GuildText,t=e.channels.cache;return{byName(i){return t.find(a=>a.name===i&&a.type===r)},byId(i){return t.find(a=>a.id===i&&a.type===r)},inCategoryId(i){return{byName(a){return t.find(l=>l.name===a&&l.type===r&&l.parentId==i)},byId(a){return t.find(l=>l.id===a&&l.type===r&&l.parentId==a)}}},inCategoryName(i){return{byName(a){return t.find(l=>l.name===a&&l.type===r&&l.parent?.name==a)},byId(a){return t.find(l=>l.id===a&&l.type===r&&l.parent?.name==i)}}}}}function k(e){const n=e instanceof b?e.application.commands.cache:e.commands.cache;return{byName(r,t=()=>!0){return n.find(i=>i.name===r&&t(i))},byId(r){return n.get(r)},byFilter(r){return n.find(r)}}}function L(e){const{user:n,property:r="displayName",imageSize:t=512,iconURL:i,url:a,prefix:l="",suffix:u=""}=e;return{name:`${l}${n[r]}${u}`,url:a,iconURL:i||n.displayAvatarURL({size:t})}}function T(e){const{text:n,iconURL:r}=e;return{text:n??"\u200B",iconURL:I(r)}}function U(e,n){return e instanceof y||e instanceof p?{url:`attachment://${e.name}`,...n}:e?{url:e,...n}:void 0}function v(e){const{extend:n={},...r}=e,{color:t,modify:i,...a}=r,{color:l,...u}=n,m={...u,...a},d=new F(m);if(l&&d.setColor(l),t&&d.setColor(t),i?.fields&&typeof i.fields=="function"){const f=i.fields(d.data.fields||[]);d.setFields(f)}return d}function w(e){const n=e.emojis.cache;return{byName(r,t,i=()=>!0){return t?n.find(a=>a.name==r&&a.animated==t&&i(a)):n.find(a=>a.name==r&&i(a))},byId(r,t){return t?n.find(i=>i.id==r&&i.animated==t):n.find(i=>i.id==r)},byFilter(r){return e.emojis.cache.find(r)}}}function S(e){return{byGlobalName(n,r=()=>!0){return e.members.cache.find(t=>t.user.globalName==n&&r(t))},byNickname(n,r=()=>!0){return e.members.cache.find(t=>t.nickname&&t.nickname==n&&r(t))},byUsername(n,r=()=>!0){return e.members.cache.find(t=>t.user.username===n&&r(t))},byDisplayName(n,r=()=>!0){return e.members.cache.find(t=>t.displayName===n&&r(t))},byId(n){return e.members.cache.get(n)},byFilter(n){return e.members.cache.find(n)}}}function j(e){return{byColor(n,r=()=>!0){return e.roles.cache.find(t=>t.color==n&&r(t))},byHexColor(n,r=()=>!0){return e.roles.cache.find(t=>t.hexColor==n&&r(t))},byName(n,r=()=>!0){return e.roles.cache.find(t=>t.name==n&&r(t))},byId(n){return e.roles.cache.get(n)},byFilter(n){return e.roles.cache.find(n)}}}function c(...e){return new h({components:e})}function D(e){return c(new G(e))}function $(e){return e.label||(e.label=e.url),new M({style:C.Link,...e})}export{A as CustomItents,B as CustomPartials,v as createEmbed,U as createEmbedAsset,L as createEmbedAuthor,T as createEmbedFooter,$ as createLinkButton,D as createModalInput,c as createRow,E as findChannel,k as findCommand,w as findEmoji,S as findMember,j as findRole};
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 { createEmbed, createEmbedAsset, createEmbedAuthor, createEmbedFooter } from './functions/embeds.mjs';
5
+ export { findEmoji } from './functions/emojis.mjs';
6
+ export { formated } from './functions/format.mjs';
7
+ export { findMember } from './functions/members.mjs';
8
+ export { findRole } from './functions/roles.mjs';
9
+ export { createLinkButton, createModalInput, createRow } from './functions/utils.mjs';
10
+ export * from '@magicyan/core';
package/package.json CHANGED
@@ -1,47 +1,47 @@
1
- {
2
- "name": "@magicyan/discord",
3
- "version": "1.0.14",
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.16",
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/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 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","globalName","member","nickname","username","displayName","color","role","hexColor","components","ActionRowBuilder","TextInputBuilder","ButtonBuilder","ButtonStyle"],"mappings":"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"}
@@ -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/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 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","findMember","globalName","member","nickname","username","displayName","findRole","color","role","hexColor","createRow","components","ActionRowBuilder","createModalInput","TextInputBuilder","createLinkButton","ButtonBuilder","ButtonStyle"],"mappings":"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"}