darkcord
Version:
A NodeJS Package to interact with Discord API
123 lines (122 loc) • 4.82 kB
JavaScript
;
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 = {}));