@confis/discordapiwrapper
Version:
A fast and lightweight discord api wrapper.
637 lines (620 loc) • 27.3 kB
JavaScript
require('axios');
require('ws');
require('assert');
require('console');
/******************************************************************************
Copyright (c) Microsoft Corporation.
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.
***************************************************************************** */
/* global Reflect, Promise, SuppressedError, Symbol, Iterator */
function __classPrivateFieldGet(receiver, state, kind, f) {
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
}
function __classPrivateFieldSet(receiver, state, value, kind, f) {
if (kind === "m") throw new TypeError("Private method is not writable");
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
}
typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
var e = new Error(message);
return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
};
var _Manager_cache;
/**
* Manages a cache of objects that extend the Base class.
*/
class Manager {
constructor() {
_Manager_cache.set(this, []);
}
get length() {
return __classPrivateFieldGet(this, _Manager_cache, "f").length;
}
get array() {
return __classPrivateFieldGet(this, _Manager_cache, "f");
}
/**
* Gets the element at the specified index.
* @param index The index of the element to get.
* @returns The element at the specified index, or null if the index is out of bounds.
*/
getByIndex(index) {
return __classPrivateFieldGet(this, _Manager_cache, "f")[index];
}
/**
* Returns the elements of an array that meet the condition specified in a callback function.
*
* @param predicate A function that accepts up to three arguments. The filter method calls the predicate function one time for each element in the cache.
*/
filter(predicate) {
return __classPrivateFieldGet(this, _Manager_cache, "f").filter(predicate);
}
/**
* Adds a new element to the cache or multiple elements if an array is provided.
* @param data The element(s) to add to the cache.
* @returns The added element.
*/
cache(data) {
if (!Array.isArray(data)) {
__classPrivateFieldGet(this, _Manager_cache, "f").push(data);
return __classPrivateFieldGet(this, _Manager_cache, "f").find((a) => a.id === data.id);
}
else {
__classPrivateFieldGet(this, _Manager_cache, "f").push(...data);
}
}
/**
* Removes the element with the specified ID from the cache.
* @param id The ID of the element to remove.
*/
delete(id) {
const index = __classPrivateFieldGet(this, _Manager_cache, "f").findIndex((a) => a.id === id);
if (index > -1)
__classPrivateFieldGet(this, _Manager_cache, "f").splice(index, 1);
}
/**
* Gets the element with the specified ID from the cache.
* @param id The ID of the element to get.
* @returns The element with the specified ID, or undefined if the element is not found.
*/
get(id) {
return __classPrivateFieldGet(this, _Manager_cache, "f").find((a) => a.id === id);
}
/**
* Updates the element with the specified ID in the cache.
* @param id The ID of the element to update.
* @param data The data to update the element with.
*/
update(id, data) {
const index = __classPrivateFieldGet(this, _Manager_cache, "f").findIndex((a) => a.id === id);
if (index > -1) {
__classPrivateFieldGet(this, _Manager_cache, "f")[index]._patch(data);
}
}
}
_Manager_cache = new WeakMap();
/**
* Base class for all API objects.
*/
class Base {
constructor(client) {
Object.defineProperty(this, "_client", {
value: client,
configurable: false,
enumerable: false,
});
}
/**
* Returns the client
*/
get client() {
return this._client;
}
_clone() {
return Object.assign(Object.create(this), this);
}
/**
* Returns a JSON representation of the object.
*/
toJson() {
const dict = {};
for (const [k, v] of Object.entries(this)) {
if (k !== "client")
Reflect.set(dict, k, v?.id ?? v?.toJSON?.() ?? v);
}
return dict;
}
_patch(data) { }
}
var _a, _Routes_baseURL;
class Routes {
static Message(channelID, messageID) {
return `${__classPrivateFieldGet(this, _a, "f", _Routes_baseURL)}/channels/${channelID}/messages/${messageID}`;
}
static ChannelTyping(channelID) {
return `${__classPrivateFieldGet(this, _a, "f", _Routes_baseURL)}/channels/${channelID}/typing`;
}
static SendChannelMessage(channelID) {
return `${__classPrivateFieldGet(this, _a, "f", _Routes_baseURL)}/channels/${channelID}/messages`;
}
static EditChannelMessage(channelID, messageID) {
return `${__classPrivateFieldGet(this, _a, "f", _Routes_baseURL)}/channels/${channelID}/messages/${messageID}`;
}
static InteractionCallback(id, token) {
return `${__classPrivateFieldGet(this, _a, "f", _Routes_baseURL)}/interactions/${id}/${token}/callback`;
}
static OriginalMessage(botID, token) {
return `${__classPrivateFieldGet(this, _a, "f", _Routes_baseURL)}/webhooks/${botID}/${token}/messages/`;
}
static InteractionFollowUp(botID, token) {
return `${__classPrivateFieldGet(this, _a, "f", _Routes_baseURL)}/webhooks/${botID}/${token}`;
}
static DMChannel() {
return `${__classPrivateFieldGet(this, _a, "f", _Routes_baseURL)}/users//channels`;
}
static GuildRoute(guildID) {
return `${__classPrivateFieldGet(this, _a, "f", _Routes_baseURL)}/users//guilds/${guildID}`;
}
static GuildBan(guildID, memberID) {
return `${__classPrivateFieldGet(this, _a, "f", _Routes_baseURL)}/guilds/${guildID}/bans/${memberID}`;
}
static GuildKick(guildID, memberID) {
return `${__classPrivateFieldGet(this, _a, "f", _Routes_baseURL)}/guilds/${guildID}/members/${memberID}`;
}
static GuildMember(guildID, memberID) {
return `${__classPrivateFieldGet(this, _a, "f", _Routes_baseURL)}/guilds/${guildID}/members/${memberID}`;
}
static ChannelWebhooks(channelID) {
return `${__classPrivateFieldGet(this, _a, "f", _Routes_baseURL)}/channels/${channelID}/webhooks`;
}
static ChannelWebhookSendMessage(webhookID, webhookToken) {
return `${__classPrivateFieldGet(this, _a, "f", _Routes_baseURL)}webhooks/${webhookID}/${webhookToken}?wait=true`;
}
static Reaction(channelID, messageID, emoji) {
return `${__classPrivateFieldGet(this, _a, "f", _Routes_baseURL)}channels/${channelID}/messages/${messageID}/reactions/${encodeURIComponent(emoji)}/`;
}
static GetReaction(channelID, messageID, emoji) {
return `${__classPrivateFieldGet(this, _a, "f", _Routes_baseURL)}channels/${channelID}/messages/${messageID}/reactions/${encodeURIComponent(emoji)}`;
}
static UserReaction(channelID, messageID, emoji, userID) {
return `${__classPrivateFieldGet(this, _a, "f", _Routes_baseURL)}channels/${channelID}/messages/${messageID}/reactions/${encodeURIComponent(emoji)}/${userID}`;
}
}
_a = Routes;
_Routes_baseURL = { value: "https://discord.com/api/v10/" };
/**
* A bitfield of all available permissions.
*/
const PermissionsBitField = {
CREATE_INSTANT_INVITE: 0x1,
KICK_MEMBERS: 0x2,
BAN_MEMBERS: 0x4,
ADMINISTRATOR: 0x8,
MANAGE_CHANNELS: 0x10,
MANAGE_GUILD: 0x20,
ADD_REACTIONS: 0x40,
VIEW_AUDIT_LOG: 0x80,
PRIORITY_SPEAKER: 0x100,
STREAM: 0x200,
VIEW_CHANNEL: 0x400,
SEND_MESSAGES: 0x800,
SEND_TTS_MESSAGES: 0x1000,
MANAGE_MESSAGES: 0x2000,
EMBED_LINKS: 0x4000,
ATTACH_FILES: 0x8000,
READ_MESSAGE_HISTORY: 0x10000,
MENTION_EVERYONE: 0x20000,
USE_EXTERNAL_EMOJIS: 0x40000,
VIEW_GUILD_INSIGHTS: 0x80000,
CONNECT: 0x100000,
SPEAK: 0x200000,
MUTE_MEMBERS: 0x400000,
DEAFEN_MEMBERS: 0x800000,
MOVE_MEMBERS: 0x1000000,
USE_VAD: 0x2000000,
CHANGE_NICKNAME: 0x4000000,
MANAGE_NICKNAMES: 0x8000000,
MANAGE_ROLES: 0x10000000,
MANAGE_WEBHOOKS: 0x20000000,
MANAGE_EMOJIS_AND_STICKERS: 0x40000000,
USE_APPLICATION_COMMANDS: 0x800000000,
REQUEST_TO_SPEAK: 0x100000000,
MANAGE_EVENTS: 0x200000000,
MANAGE_THREADS: 0x400000000,
CREATE_PUBLIC_THREADS: 0x800000000,
CREATE_PRIVATE_THREADS: 0x1000000000,
USE_EXTERNAL_STICKERS: 0x2000000000,
SEND_MESSAGES_IN_THREADS: 0x4000000000,
START_EMBEDDED_ACTIVITIES: 0x8000000000,
MODERATE_MEMBERS: 0x10000000000,
};
var _Member_guildID, _Member_rolesIDs;
/** Member object */
class Member extends Base {
constructor(data, client) {
super(client);
_Member_guildID.set(this, void 0);
_Member_rolesIDs.set(this, []);
this.joined_at = new Date(data.joined_at).getTime();
this.id = data.user.id;
this.nick = data.nick;
__classPrivateFieldSet(this, _Member_guildID, data.guild_id, "f");
__classPrivateFieldSet(this, _Member_rolesIDs, data.roles, "f");
}
toString() {
return this.user.toString();
}
/**
* Get the guild of the member
*
* @returns A guild object
*/
get guild() {
return this.client.guilds.get(__classPrivateFieldGet(this, _Member_guildID, "f"));
}
/**
* Get the display name of the member
*
* @returns The display name of the member
*/
get displayName() {
return this.nick || this.user.displayName;
}
/**
* Get the roles of the member
*
* @returns An array of roles
*/
get roles() {
const roles = [];
for (let i = 0; i < __classPrivateFieldGet(this, _Member_rolesIDs, "f").length; i++) {
const role = __classPrivateFieldGet(this, _Member_rolesIDs, "f")[i];
const roleObject = this.client.roles.get(role);
if (roleObject) {
roles.push(roleObject);
}
}
return roles;
}
/**
* Get the user object for the member
*
* @returns A user object
*/
get user() {
return this.client.users.get(this.id);
}
/**
* Get the permissions of the member
*
* @returns An array of permissions
*/
get permissions() {
let perms = [];
if (this.id === this.guild.ownerId) {
for (const key in PermissionsBitField) {
perms.push(key);
}
}
else {
for (let i = 0; i < this.roles.length; i++) {
const permissions = this.roles[i].getPermissions();
for (let i = 0; i < permissions.length; i++) {
const permission = permissions[i];
if (!perms.find((a) => a === permission)) {
perms.push(permission);
}
}
}
}
return perms;
}
/**
* Update the member
*
* @param data New member data
*/
_patch(data) {
Object.defineProperty(this, "roleIDs", {
writable: true,
configurable: true,
});
__classPrivateFieldSet(this, _Member_rolesIDs, [], "f");
for (let i = 0; i < data.roles.length; i++) {
const role = data.roles[i];
__classPrivateFieldGet(this, _Member_rolesIDs, "f").push(role.id);
}
}
/**
* Bans the member from the guild.
*
* @param [delete_message_seconds=0] Number of seconds to delete messages for.
*/
async ban(delete_message_seconds = 0) {
await this.client.rest.put(Routes.GuildBan(__classPrivateFieldGet(this, _Member_guildID, "f"), this.id), {
delete_message_seconds,
});
}
/**
* Kicks the member from the guild.
*
* @param [delete_message_seconds=0] Number of seconds to delete messages for.
*/
async kick() {
await this.client.rest.delete(Routes.GuildBan(__classPrivateFieldGet(this, _Member_guildID, "f"), this.id));
}
/**
* Sets the nickname of the member.
*
* @param nickname The new nickname for the member.
*/
async setNick(nickname) {
await this.client.rest.patch(Routes.GuildMember(__classPrivateFieldGet(this, _Member_guildID, "f"), this.id === this.client.user.id ? "@me" : this.id), {
nick: nickname,
});
}
/**
* Timeout the member.
*
* @param communicationDisabledUntil The date until which the member's communication is re-enabled.
*/
async setCommunicationDisabled(communicationDisabledUntil) {
await this.client.rest.patch(Routes.GuildMember(__classPrivateFieldGet(this, _Member_guildID, "f"), this.id === this.client.user.id ? "@me" : this.id), {
communication_disabled_until: communicationDisabledUntil.toISOString(),
});
}
}
_Member_guildID = new WeakMap(), _Member_rolesIDs = new WeakMap();
/** Enum for types of webhook */
var WebhookTypes;
(function (WebhookTypes) {
WebhookTypes[WebhookTypes["INCOMING"] = 1] = "INCOMING";
WebhookTypes[WebhookTypes["CHANNEL_FOLLOWER"] = 2] = "CHANNEL_FOLLOWER";
WebhookTypes[WebhookTypes["APPLICATION"] = 3] = "APPLICATION";
})(WebhookTypes || (WebhookTypes = {}));
/** Enum for types of interaction contexts */
var InteractionContextTypes;
(function (InteractionContextTypes) {
InteractionContextTypes[InteractionContextTypes["GUILD"] = 0] = "GUILD";
InteractionContextTypes[InteractionContextTypes["BOT_DM"] = 1] = "BOT_DM";
InteractionContextTypes[InteractionContextTypes["PRIVATE_CHANNEL"] = 2] = "PRIVATE_CHANNEL";
})(InteractionContextTypes || (InteractionContextTypes = {}));
/** Enum for types of interaction integration */
var InteractionIntegrationTypes;
(function (InteractionIntegrationTypes) {
InteractionIntegrationTypes[InteractionIntegrationTypes["GUILD_INSTALL"] = 0] = "GUILD_INSTALL";
InteractionIntegrationTypes[InteractionIntegrationTypes["USER_INSTALL"] = 1] = "USER_INSTALL";
})(InteractionIntegrationTypes || (InteractionIntegrationTypes = {}));
/** Enum for types of message */
var APIMessageTypes;
(function (APIMessageTypes) {
APIMessageTypes[APIMessageTypes["DEFAULT"] = 0] = "DEFAULT";
APIMessageTypes[APIMessageTypes["RECIPIENT_ADD"] = 1] = "RECIPIENT_ADD";
APIMessageTypes[APIMessageTypes["RECIPIENT_REMOVE"] = 2] = "RECIPIENT_REMOVE";
APIMessageTypes[APIMessageTypes["CALL"] = 3] = "CALL";
APIMessageTypes[APIMessageTypes["CHANNEL_NAME_CHANGE"] = 4] = "CHANNEL_NAME_CHANGE";
APIMessageTypes[APIMessageTypes["CHANNEL_ICON_CHANGE"] = 5] = "CHANNEL_ICON_CHANGE";
APIMessageTypes[APIMessageTypes["CHANNEL_PINNED_MESSAGE"] = 6] = "CHANNEL_PINNED_MESSAGE";
APIMessageTypes[APIMessageTypes["USER_JOIN"] = 7] = "USER_JOIN";
APIMessageTypes[APIMessageTypes["GUILD_BOOST"] = 8] = "GUILD_BOOST";
APIMessageTypes[APIMessageTypes["GUILD_BOOST_TIER_1"] = 9] = "GUILD_BOOST_TIER_1";
APIMessageTypes[APIMessageTypes["GUILD_BOOST_TIER_2"] = 10] = "GUILD_BOOST_TIER_2";
APIMessageTypes[APIMessageTypes["GUILD_BOOST_TIER_3"] = 11] = "GUILD_BOOST_TIER_3";
APIMessageTypes[APIMessageTypes["CHANNEL_FOLLOW_ADD"] = 12] = "CHANNEL_FOLLOW_ADD";
APIMessageTypes[APIMessageTypes["GUILD_DISCOVERY_DISQUALIFIED"] = 14] = "GUILD_DISCOVERY_DISQUALIFIED";
APIMessageTypes[APIMessageTypes["GUILD_DISCOVERY_REQUALIFIED"] = 15] = "GUILD_DISCOVERY_REQUALIFIED";
APIMessageTypes[APIMessageTypes["GUILD_DISCOVERY_GRACE_PERIOD_INITIAL_WARNING"] = 16] = "GUILD_DISCOVERY_GRACE_PERIOD_INITIAL_WARNING";
APIMessageTypes[APIMessageTypes["GUILD_DISCOVERY_GRACE_PERIOD_FINAL_WARNING"] = 17] = "GUILD_DISCOVERY_GRACE_PERIOD_FINAL_WARNING";
APIMessageTypes[APIMessageTypes["THREAD_CREATED"] = 18] = "THREAD_CREATED";
APIMessageTypes[APIMessageTypes["REPLY"] = 19] = "REPLY";
APIMessageTypes[APIMessageTypes["CHAT_INPUT_COMMAND"] = 20] = "CHAT_INPUT_COMMAND";
APIMessageTypes[APIMessageTypes["THREAD_STARTER_MESSAGE"] = 21] = "THREAD_STARTER_MESSAGE";
APIMessageTypes[APIMessageTypes["GUILD_INVITE_REMINDER"] = 22] = "GUILD_INVITE_REMINDER";
APIMessageTypes[APIMessageTypes["CONTEXT_MENU_COMMAND"] = 23] = "CONTEXT_MENU_COMMAND";
APIMessageTypes[APIMessageTypes["AUTO_MODERATION_ACTION"] = 24] = "AUTO_MODERATION_ACTION";
APIMessageTypes[APIMessageTypes["ROLE_SUBSCRIPTION_PURCHASE"] = 25] = "ROLE_SUBSCRIPTION_PURCHASE";
APIMessageTypes[APIMessageTypes["INTERACTION_PREMIUM_UPSELL"] = 26] = "INTERACTION_PREMIUM_UPSELL";
APIMessageTypes[APIMessageTypes["STAGE_START"] = 27] = "STAGE_START";
APIMessageTypes[APIMessageTypes["STAGE_END"] = 28] = "STAGE_END";
APIMessageTypes[APIMessageTypes["STAGE_SPEAKER"] = 29] = "STAGE_SPEAKER";
APIMessageTypes[APIMessageTypes["STAGE_TOPIC"] = 31] = "STAGE_TOPIC";
APIMessageTypes[APIMessageTypes["GUILD_APPLICATION_PREMIUM_SUBSCRIPTION"] = 32] = "GUILD_APPLICATION_PREMIUM_SUBSCRIPTION";
APIMessageTypes[APIMessageTypes["GUILD_INCIDENT_ALERT_MODE_ENABLED"] = 36] = "GUILD_INCIDENT_ALERT_MODE_ENABLED";
APIMessageTypes[APIMessageTypes["GUILD_INCIDENT_ALERT_MODE_DISABLED"] = 37] = "GUILD_INCIDENT_ALERT_MODE_DISABLED";
APIMessageTypes[APIMessageTypes["GUILD_INCIDENT_REPORT_RAID"] = 38] = "GUILD_INCIDENT_REPORT_RAID";
APIMessageTypes[APIMessageTypes["GUILD_INCIDENT_REPORT_FALSE_ALARM"] = 39] = "GUILD_INCIDENT_REPORT_FALSE_ALARM";
APIMessageTypes[APIMessageTypes["PURCHASE_NOTIFICATION"] = 44] = "PURCHASE_NOTIFICATION";
APIMessageTypes[APIMessageTypes["POLL_RESULT"] = 46] = "POLL_RESULT";
})(APIMessageTypes || (APIMessageTypes = {}));
/**
* Enum for types of application commands
*/
var ApplicationCommandTypes;
(function (ApplicationCommandTypes) {
ApplicationCommandTypes[ApplicationCommandTypes["CHAT_INPUT"] = 1] = "CHAT_INPUT";
ApplicationCommandTypes[ApplicationCommandTypes["USER"] = 2] = "USER";
ApplicationCommandTypes[ApplicationCommandTypes["MESSAGE"] = 3] = "MESSAGE";
})(ApplicationCommandTypes || (ApplicationCommandTypes = {}));
/**
* Enum for types of interactions
*/
var InteractionTypes;
(function (InteractionTypes) {
InteractionTypes[InteractionTypes["PING"] = 1] = "PING";
InteractionTypes[InteractionTypes["APPLICATION_COMMAND"] = 2] = "APPLICATION_COMMAND";
InteractionTypes[InteractionTypes["MESSAGE_COMPONENT"] = 3] = "MESSAGE_COMPONENT";
InteractionTypes[InteractionTypes["APPLICATION_COMMAND_AUTOCOMPLETE"] = 4] = "APPLICATION_COMMAND_AUTOCOMPLETE";
InteractionTypes[InteractionTypes["MODAL_SUBMIT"] = 5] = "MODAL_SUBMIT";
})(InteractionTypes || (InteractionTypes = {}));
/**
* Enum for types of components
*/
var ComponentTypes;
(function (ComponentTypes) {
ComponentTypes[ComponentTypes["ACTION_ROW"] = 1] = "ACTION_ROW";
ComponentTypes[ComponentTypes["BUTTON"] = 2] = "BUTTON";
ComponentTypes[ComponentTypes["STRING_SELECT"] = 3] = "STRING_SELECT";
ComponentTypes[ComponentTypes["TEXT_INPUT"] = 4] = "TEXT_INPUT";
})(ComponentTypes || (ComponentTypes = {}));
/**
* Enum for types of button styles
*/
var ButtonStyles;
(function (ButtonStyles) {
ButtonStyles[ButtonStyles["PRIMARY"] = 1] = "PRIMARY";
ButtonStyles[ButtonStyles["SECONDARY"] = 2] = "SECONDARY";
ButtonStyles[ButtonStyles["SUCCESS"] = 3] = "SUCCESS";
ButtonStyles[ButtonStyles["DANGER"] = 4] = "DANGER";
ButtonStyles[ButtonStyles["LINK"] = 5] = "LINK";
})(ButtonStyles || (ButtonStyles = {}));
/**
* Enum for types of activity
*/
var ActivityTypes;
(function (ActivityTypes) {
ActivityTypes[ActivityTypes["GAME"] = 0] = "GAME";
ActivityTypes[ActivityTypes["STREAMING"] = 1] = "STREAMING";
ActivityTypes[ActivityTypes["LISTENING"] = 2] = "LISTENING";
ActivityTypes[ActivityTypes["WATCHING"] = 3] = "WATCHING";
ActivityTypes[ActivityTypes["CUSTOM"] = 4] = "CUSTOM";
ActivityTypes[ActivityTypes["COMPETING"] = 5] = "COMPETING";
})(ActivityTypes || (ActivityTypes = {}));
/**
* Enum for types of application command options
*/
var ApplicationCommandOptionTypes;
(function (ApplicationCommandOptionTypes) {
ApplicationCommandOptionTypes[ApplicationCommandOptionTypes["SUB_COMMAND"] = 1] = "SUB_COMMAND";
ApplicationCommandOptionTypes[ApplicationCommandOptionTypes["SUB_COMMAND_GROUP"] = 2] = "SUB_COMMAND_GROUP";
ApplicationCommandOptionTypes[ApplicationCommandOptionTypes["STRING"] = 3] = "STRING";
ApplicationCommandOptionTypes[ApplicationCommandOptionTypes["INTEGER"] = 4] = "INTEGER";
ApplicationCommandOptionTypes[ApplicationCommandOptionTypes["BOOLEAN"] = 5] = "BOOLEAN";
ApplicationCommandOptionTypes[ApplicationCommandOptionTypes["USER"] = 6] = "USER";
ApplicationCommandOptionTypes[ApplicationCommandOptionTypes["CHANNEL"] = 7] = "CHANNEL";
ApplicationCommandOptionTypes[ApplicationCommandOptionTypes["ROLE"] = 8] = "ROLE";
ApplicationCommandOptionTypes[ApplicationCommandOptionTypes["MENTIONABLE"] = 9] = "MENTIONABLE";
ApplicationCommandOptionTypes[ApplicationCommandOptionTypes["NUMBER"] = 10] = "NUMBER";
ApplicationCommandOptionTypes[ApplicationCommandOptionTypes["ATTACHMENT"] = 11] = "ATTACHMENT";
})(ApplicationCommandOptionTypes || (ApplicationCommandOptionTypes = {}));
/**
* Enum for types of channels
*/
var ChannelTypes;
(function (ChannelTypes) {
ChannelTypes[ChannelTypes["TEXT"] = 0] = "TEXT";
ChannelTypes[ChannelTypes["DM"] = 1] = "DM";
ChannelTypes[ChannelTypes["CATEGORY"] = 4] = "CATEGORY";
})(ChannelTypes || (ChannelTypes = {}));
var OverwriteObjectTypes;
(function (OverwriteObjectTypes) {
OverwriteObjectTypes[OverwriteObjectTypes["ROLE"] = 0] = "ROLE";
OverwriteObjectTypes[OverwriteObjectTypes["MEMBER"] = 1] = "MEMBER";
})(OverwriteObjectTypes || (OverwriteObjectTypes = {}));
/** Enum of types of messages */
var MessageTypes;
(function (MessageTypes) {
MessageTypes[MessageTypes["DEFAULT"] = 0] = "DEFAULT";
MessageTypes[MessageTypes["USER_JOIN"] = 7] = "USER_JOIN";
MessageTypes[MessageTypes["REPLY"] = 19] = "REPLY";
})(MessageTypes || (MessageTypes = {}));
/** Bot Intents */
var Intents;
(function (Intents) {
Intents[Intents["GUILDS"] = 1] = "GUILDS";
Intents[Intents["GUILD_MEMBERS"] = 2] = "GUILD_MEMBERS";
Intents[Intents["GUILD_BANS"] = 4] = "GUILD_BANS";
Intents[Intents["GUILD_EMOJIS_AND_STICKERS"] = 8] = "GUILD_EMOJIS_AND_STICKERS";
Intents[Intents["GUILD_INTEGRATIONS"] = 16] = "GUILD_INTEGRATIONS";
Intents[Intents["GUILD_WEBHOOKS"] = 32] = "GUILD_WEBHOOKS";
Intents[Intents["GUILD_INVITES"] = 64] = "GUILD_INVITES";
Intents[Intents["GUILD_VOICE_STATES"] = 128] = "GUILD_VOICE_STATES";
Intents[Intents["GUILD_PRESENCES"] = 256] = "GUILD_PRESENCES";
Intents[Intents["GUILD_MESSAGES"] = 512] = "GUILD_MESSAGES";
Intents[Intents["GUILD_MESSAGE_REACTIONS"] = 1024] = "GUILD_MESSAGE_REACTIONS";
Intents[Intents["GUILD_MESSAGE_TYPING"] = 2048] = "GUILD_MESSAGE_TYPING";
Intents[Intents["DIRECT_MESSAGES"] = 4096] = "DIRECT_MESSAGES";
Intents[Intents["DIRECT_MESSAGE_REACTIONS"] = 8192] = "DIRECT_MESSAGE_REACTIONS";
Intents[Intents["DIRECT_MESSAGE_TYPING"] = 16384] = "DIRECT_MESSAGE_TYPING";
Intents[Intents["MESSAGE_CONTENT"] = 32768] = "MESSAGE_CONTENT";
Intents[Intents["GUILD_SCHEDULED_EVENTS"] = 65536] = "GUILD_SCHEDULED_EVENTS";
Intents[Intents["ALL"] = 131071] = "ALL";
})(Intents || (Intents = {}));
/** Text input styles enum */
var TextInputStyles;
(function (TextInputStyles) {
TextInputStyles[TextInputStyles["SHORT"] = 1] = "SHORT";
TextInputStyles[TextInputStyles["PARAGRAPH"] = 2] = "PARAGRAPH";
})(TextInputStyles || (TextInputStyles = {}));
var _Guild_icon, _Guild_channelIDs;
/** Guild object */
class Guild extends Base {
constructor(data, client) {
super(client);
_Guild_icon.set(this, void 0);
_Guild_channelIDs.set(this, []);
this.members = new Manager();
this.id = data.id;
this.name = data.name;
this.ownerId = data.owner_id;
this.memberCount = data.member_count;
this.joinedAt = new Date(data.joined_at);
__classPrivateFieldSet(this, _Guild_icon, data.icon, "f");
for (let i = 0; i < data.members.length; i++) {
let member = data.members[i];
member.guild_id = this.id;
this.members.cache(new Member(member, client));
}
for (let i = 0; i < data.channels.length; i++) {
const channel = data.channels[i];
__classPrivateFieldGet(this, _Guild_channelIDs, "f").push(channel.id);
}
}
get iconURL() {
return `https://cdn.discordapp.com/icons/${this.id}/${__classPrivateFieldGet(this, _Guild_icon, "f")}.png`;
}
/**
* Get the current user's member object in this guild
* @returns The member object
*/
get me() {
return this.members.get(this.client.user.id);
}
/**
* Get the roles in the guild
* @returns An array of roles
*/
get roles() {
return this.client.roles.array.filter((a) => a.guild_id === this.id);
}
/**
* Get the channels in the guild
* @returns An array of channels
*/
get channels() {
const channels = [];
for (let i = 0; i < __classPrivateFieldGet(this, _Guild_channelIDs, "f").length; i++) {
const channelID = __classPrivateFieldGet(this, _Guild_channelIDs, "f")[i];
channels.push(this.client.channels.get(channelID));
}
return channels;
}
/**
* Leave the guild
*/
async leave() {
await this.client.rest.delete(Routes.GuildRoute(this.id));
}
}
_Guild_icon = new WeakMap(), _Guild_channelIDs = new WeakMap();
exports.Guild = Guild;