UNPKG

darkcord

Version:

A NodeJS Package to interact with Discord API

123 lines (122 loc) 4.82 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Resolvable = void 0; const Channel_1 = require("../resources/Channel"); const Guild_1 = require("../resources/Guild"); const Member_1 = require("../resources/Member"); const Message_1 = require("../resources/Message"); var Resolvable; (function (Resolvable) { function resolveMessage(messageResolvable, client) { let resolved; if (!(messageResolvable instanceof Message_1.Message)) { let guild; if (messageResolvable.guild_id) { guild = Resolvable.resolveGuild(messageResolvable.guild_id, client); } resolved = new Message_1.Message({ ...messageResolvable, client }, guild); } else { resolved = messageResolvable; } const channel = Resolvable.resolveChannel(resolved.channelId, client, resolved.guild); resolved.channel = channel; resolved.isResolved = true; channel.messages?.add(resolved); return resolved; } Resolvable.resolveMessage = resolveMessage; function resolveGuild(guildResolvable, client) { let resolved; if (!(guildResolvable instanceof Guild_1.Guild)) { if (typeof guildResolvable === "string") { resolved = client.guilds.cache.get(guildResolvable); } else { resolved = new Guild_1.Guild({ ...guildResolvable, client }); } } else { resolved = guildResolvable; } if (Array.isArray(resolved.rawData.roles)) { for (const role of resolved.rawData.roles) { const r = resolved.roles.add(role); client.roles.cache._add(r); } } if (Array.isArray(resolved.rawData.emojis)) { for (const emoji of resolved.rawData.emojis) { resolved.emojis.add(emoji); client.cache.emojis.add(emoji); } } if (Array.isArray(resolved.rawData.stickers)) { for (const sticker of resolved.rawData.stickers) { resolved.stickers.add(sticker); } } return resolved; } Resolvable.resolveGuild = resolveGuild; function resolveChannel(channelResolvable, client, guildResolvable) { let resolved; let guild; if (guildResolvable) { guild = Resolvable.resolveGuild(guildResolvable, client); } if (!(channelResolvable instanceof Channel_1.Channel)) { if (typeof channelResolvable === "string") { const c = client.channels.cache.get(channelResolvable) ?? client.threads.get(channelResolvable) ?? client.channels.forge(channelResolvable); resolved = c; } else { resolved = Channel_1.Channel.from({ ...channelResolvable, client }, guild); } } else { resolved = channelResolvable; } if (resolved.isGuildChannel()) { resolved.guild.channels.add(resolved); } client.channels.add(resolved); return resolved; } Resolvable.resolveChannel = resolveChannel; async function resolvePartialHTTPInteractionValues(interaction, client) { if ((interaction.isCommand() || interaction.isComponent() || interaction.isModalSubmit()) && interaction.isHTTP) { let guild; if ("guildId" in interaction) { if (client.guilds.cache.has(interaction.guildId)) { guild = client.guilds.cache.get(interaction.guildId); } else if (interaction.guildId) { // Slower, but functional guild = await client.guilds.fetch(interaction.guildId, { fetchMembers: true, }); } interaction.guild = guild; } if (interaction.channel) { interaction.channel = resolveChannel(interaction.channel, client, guild); } if ("member" in interaction && interaction.member && !(interaction.member instanceof Member_1.Member) && guild) { interaction.member = guild.members.cache.get(interaction.member.user?.id) ?? guild.members.add(new Member_1.Member(interaction.rawData.member, guild)); } } return interaction; } Resolvable.resolvePartialHTTPInteractionValues = resolvePartialHTTPInteractionValues; })(Resolvable = exports.Resolvable || (exports.Resolvable = {}));