From 2d317cf7df2f1ec2fe6dfe8c3e1530848fd36a7b Mon Sep 17 00:00:00 2001 From: Donovan Daniels Date: Sun, 14 Nov 2021 13:42:45 -0600 Subject: [PATCH] Add, update, reorganize Constants (#1271) Co-authored-by: bsian03 --- index.d.ts | 828 ++++++++++++++++++++------------- lib/Constants.js | 651 ++++++++++++++++---------- lib/gateway/Shard.js | 16 +- lib/structures/Channel.js | 2 +- lib/structures/ThreadMember.js | 2 + lib/voice/VoiceConnection.js | 2 +- 6 files changed, 914 insertions(+), 587 deletions(-) diff --git a/index.d.ts b/index.d.ts index 670878892..5891c4e93 100644 --- a/index.d.ts +++ b/index.d.ts @@ -23,14 +23,21 @@ declare namespace Eris { type AnyGuildChannel = GuildTextableChannel | AnyVoiceChannel | CategoryChannel | StoreChannel; type AnyThreadChannel = NewsThreadChannel | PrivateThreadChannel | PublicThreadChannel | ThreadChannel; type AnyVoiceChannel = VoiceChannel | StageChannel; - type ChannelTypes = Constants["ChannelTypes"][keyof Constants["ChannelTypes"]]; type GuildTextableChannel = TextChannel | NewsChannel; type GuildTextableWithThread = GuildTextableChannel | AnyThreadChannel; type InviteChannel = InvitePartialChannel | Exclude; type PossiblyUncachedTextable = Textable | Uncached; type PossiblyUncachedTextableChannel = TextableChannel | Uncached; type TextableChannel = (GuildTextable & GuildTextableChannel) | (ThreadTextable & AnyThreadChannel) | (Textable & PrivateChannel); - type VideoQualityMode = 1 | 2; + type VideoQualityMode = Constants["VideoQualityModes"][keyof Constants["VideoQualityModes"]]; + type ChannelTypes = GuildChannelTypes | PrivateChannelTypes; + type GuildChannelTypes = Exclude; + type TextChannelTypes = GuildTextChannelTypes | PrivateChannelTypes; + type GuildTextChannelTypes = Constants["ChannelTypes"][keyof Pick]; + type GuildThreadChannelTypes = Constants["ChannelTypes"][keyof Pick]; + type GuildPublicThreadChannelTypes = Exclude; + type GuildVoiceChannelTypes = Constants["ChannelTypes"][keyof Pick]; + type PrivateChannelTypes = Constants["ChannelTypes"][keyof Pick]; // Command type CommandGenerator = CommandGeneratorFunction | MessageContent | MessageContent[] | CommandGeneratorFunction[]; @@ -47,23 +54,27 @@ declare namespace Eris { type RequestMethod = "GET" | "PATCH" | "DELETE" | "POST" | "PUT"; // Guild - type DefaultNotifications = 0 | 1; - type ExplicitContentFilter = 0 | 1 | 2; - type GuildFeatures = "ANIMATED_ICON" | "BANNER" | "COMMERCE" | "COMMUNITY" | "DISCOVERABLE" | "FEATURABLE" | "INVITE_SPLASH" | "MEMBER_VERIFICATION_GATE_ENABLED" | "NEWS" | "PARTNERED" | "PREVIEW_ENABLED" | "ROLE_ICONS" | "VANITY_URL" | "VERIFIED" | "VIP_REGIONS" | "WELCOME_SCREEN_ENABLED" | "TICKETED_EVENTS_ENABLED" | "MONETIZATION_ENABLED" | "MORE_STICKERS" | "THREE_DAY_THREAD_ARCHIVE" | "SEVEN_DAY_THREAD_ARCHIVE" | "PRIVATE_THREADS"; - type NSFWLevel = 0 | 1 | 2 | 3; + type DefaultNotifications = Constants["DefaultMessageNotificationLevels"][keyof Constants["DefaultMessageNotificationLevels"]]; + type ExplicitContentFilter = Constants["ExplicitContentFilterLevels"][keyof Constants["ExplicitContentFilterLevels"]]; + type GuildFeatures = Constants["GuildFeatures"][number]; + type NSFWLevel = Constants["GuildNSFWLevels"][keyof Constants["GuildNSFWLevels"]]; type PossiblyUncachedGuild = Guild | Uncached; - type PremiumTier = 0 | 1 | 2 | 3; - type VerificationLevel = 0 | 1 | 2 | 3 | 4; + type PremiumTier = Constants["PremiumTiers"][keyof Constants["PremiumTiers"]]; + type VerificationLevel = Constants["VerificationLevels"][keyof Constants["VerificationLevels"]]; + type SystemChannelFlags = Constants["SystemChannelFlags"][keyof Constants["SystemChannelFlags"]]; + type GuildIntegrationTypes = Constants["GuildIntegrationTypes"][number]; + type GuildIntegrationExpireBehavior = Constants["GuildIntegrationExpireBehavior"][keyof Constants["GuildIntegrationExpireBehavior"]]; // Message type ActionRowComponents = Button | SelectMenu; type Button = InteractionButton | URLButton; type Component = ActionRow | ActionRowComponents; - type ImageFormat = "jpg" | "jpeg" | "png" | "gif" | "webp"; + type ImageFormat = Constants["ImageFormats"][number]; type MessageContent = string | AdvancedMessageContent; + type MFALevel = Constants["MFALevels"][keyof Constants["MFALevels"]]; type MessageContentEdit = string | AdvancedMessageContentEdit; - type MFALevel = 0 | 1; type PossiblyUncachedMessage = Message | { channel: TextableChannel | { id: string; guild?: Uncached }; guildID?: string; id: string }; + type InteractionType = Constants["ApplicationCommandTypes"][keyof Constants["ApplicationCommandTypes"]]; // Interaction type InteractionDataOptions = InteractionDataOptionsSubCommand | InteractionDataOptionsSubCommandGroup | InteractionDataOptionsWithValue; @@ -207,11 +218,11 @@ declare namespace Eris { } // Permission - type PermissionType = 0 | 1; + type PermissionType = Constants["PermissionOverwriteTypes"][keyof Constants["PermissionOverwriteTypes"]]; // Presence/Relationship - type ActivityType = BotActivityType | 4; - type BotActivityType = 0 | 1 | 2 | 3 | 5; + type ActivityType = BotActivityType | Constants["ActivityTypes"]["CUSTOM"]; + type BotActivityType = Constants["ActivityTypes"][Exclude]; type FriendSuggestionReasons = { name: string; platform_type: string; type: number }[]; type Status = "online" | "idle" | "dnd" | "offline"; @@ -220,7 +231,7 @@ declare namespace Eris { // Voice type ConverterCommand = "./ffmpeg" | "./avconv" | "ffmpeg" | "avconv"; - type StageInstancePrivacyLevel = 1 | 2; + type StageInstancePrivacyLevel = Constants["StageInstancePrivacyLevel"][keyof Constants["StageInstancePrivacyLevel"]]; // Webhook type MessageWebhookContent = Pick; @@ -337,7 +348,7 @@ declare namespace Eris { // @ts-ignore ts(2430) - ThreadTextable can't properly extend Textable because of getMessageReaction deprecated overload interface ThreadTextable extends Textable { lastPinTimestamp?: number; - createMessage(content: MessageContent, file?: MessageFile | MessageFile[]): Promise>; + createMessage(content: MessageContent, file?: FileContent | FileContent[]): Promise>; editMessage(messageID: string, content: MessageContentEdit): Promise>; getMessage(messageID: string): Promise>; getMessageReaction(messageID: string, reaction: string, options?: GetMessageReactionOptions): Promise; @@ -556,6 +567,7 @@ declare namespace Eris { name: string; ownerID: string; icon: string; + type: Constants["ChannelTypes"]["GROUP_DM"]; } interface OldGuild { afkChannelID: string | null; @@ -584,7 +596,7 @@ declare namespace Eris { rulesChannelID: string | null; splash: string | null; stickers?: Sticker[]; - systemChannelFlags: number; + systemChannelFlags: SystemChannelFlags; systemChannelID: string | null; vanityURL: string | null; verificationLevel: VerificationLevel; @@ -599,18 +611,18 @@ declare namespace Eris { rateLimitPerUser?: number; rtcRegion?: string | null; topic?: string | null; - type: Exclude; + type: GuildChannelTypes; } interface OldGuildTextChannel extends OldGuildChannel { nsfw: boolean; rateLimitPerUser: number; topic: string | null; - type: 0 | 5; + type: GuildTextChannelTypes; } interface OldGuildVoiceChannel extends OldGuildChannel { bitrate: number; rtcRegion: string | null; - type: 2 | 13; + type: GuildVoiceChannelTypes; userLimit: number; videoQualityMode: VideoQualityMode; } @@ -1029,7 +1041,7 @@ declare namespace Eris { // Message interface ActionRow { components: ActionRowComponents[]; - type: 1; + type: Constants["ComponentTypes"]["ACTION_ROW"]; } interface ActiveMessages { args: string[]; @@ -1051,7 +1063,7 @@ declare namespace Eris { tts?: boolean; } interface AdvancedMessageContentEdit extends AdvancedMessageContent { - file?: MessageFile | MessageFile[]; + file?: FileContent | FileContent[]; } interface AllowedMentions { everyone?: boolean; @@ -1074,7 +1086,7 @@ declare namespace Eris { disabled?: boolean; emoji?: Partial; label?: string; - type: 2; + type: Constants["ComponentTypes"]["BUTTON"]; } interface CreateStickerOptions extends Required> { file: FileContent; @@ -1091,7 +1103,7 @@ declare namespace Eris { min_values?: number; options: SelectMenuOptions[]; placeholder?: string; - type: 3; + type: Constants["ComponentTypes"]["SELECT_MENU"]; } interface SelectMenuOptions { default?: boolean; @@ -1106,9 +1118,10 @@ declare namespace Eris { before?: string; limit?: number; } + interface InteractionButton extends ButtonBase { custom_id: string; - style: 1 | 2 | 3 | 4; + style: Constants["ButtonStyles"][Exclude]; } interface MessageActivity { party_id?: string; @@ -1171,7 +1184,7 @@ declare namespace Eris { banner_asset_id: string; } interface URLButton extends ButtonBase { - style: 5; + style: Constants["ButtonStyles"]["LINK"]; url: string; } @@ -1334,6 +1347,7 @@ declare namespace Eris { } // Webhook + type WebhookTypes = Constants["WebhookTypes"][keyof Constants["WebhookTypes"]]; interface Webhook { application_id: string | null; avatar: string | null; @@ -1344,7 +1358,7 @@ declare namespace Eris { source_channel?: { id: string; name: string }; source_guild: { icon: string | null; id: string; name: string }; token?: string; - type: 1 | 2 | 3; + type: WebhookTypes; url?: string; user?: PartialUser; } @@ -1401,231 +1415,401 @@ declare namespace Eris { user: PartialUser; } interface Constants { + GATEWAY_VERSION: 9; + REST_VERSION: 9; + ActivityTypes: { + GAME: 0; + STREAMING: 1; + LISTENING: 2; + WATCHING: 3; + CUSTOM: 4; + COMPETING: 5; + }; + ApplicationCommandOptionTypes: { + SUB_COMMAND: 1; + SUB_COMMAND_GROUP: 2; + STRING: 3; + INTEGER: 4; + BOOLEAN: 5; + USER: 6; + CHANNEL: 7; + ROLE: 8; + MENTIONABLE: 9; + NUMBER: 10; + }; + ApplicationCommandPermissionTypes: { + ROLE: 1; + USER: 2; + }; + ApplicationCommandTypes: { + CHAT_INPUT: 1; + USER: 2; + MESSAGE: 3; + }; AuditLogActions: { - GUILD_UPDATE: 1; + GUILD_UPDATE: 1; - CHANNEL_CREATE: 10; - CHANNEL_UPDATE: 11; - CHANNEL_DELETE: 12; + CHANNEL_CREATE: 10; + CHANNEL_UPDATE: 11; + CHANNEL_DELETE: 12; CHANNEL_OVERWRITE_CREATE: 13; CHANNEL_OVERWRITE_UPDATE: 14; CHANNEL_OVERWRITE_DELETE: 15; - MEMBER_KICK: 20; - MEMBER_PRUNE: 21; - MEMBER_BAN_ADD: 22; - MEMBER_BAN_REMOVE: 23; - MEMBER_UPDATE: 24; - MEMBER_ROLE_UPDATE: 25; - MEMBER_MOVE: 26; - MEMBER_DISCONNECT: 27; - BOT_ADD: 28; - - ROLE_CREATE: 30; - ROLE_UPDATE: 31; - ROLE_DELETE: 32; - - INVITE_CREATE: 40; - INVITE_UPDATE: 41; - INVITE_DELETE: 42; - - WEBHOOK_CREATE: 50; - WEBHOOK_UPDATE: 51; - WEBHOOK_DELETE: 52; - - EMOJI_CREATE: 60; - EMOJI_UPDATE: 61; - EMOJI_DELETE: 62; - - MESSAGE_DELETE: 72; - MESSAGE_BULK_DELETE: 73; - MESSAGE_PIN: 74; - MESSAGE_UNPIN: 75; - - INTEGRATION_CREATE: 80; - INTEGRATION_UPDATE: 81; - INTEGRATION_DELETE: 82; - STAGE_INSTANCE_CREATE: 83; - STAGE_INSTANCE_UPDATE: 84; - STAGE_INSTANCE_DELETE: 85; - - STICKER_CREATE: 90; - STICKER_UPDATE: 91; - STICKER_DELETE: 92; - - THREAD_CREATE: 110; - THREAD_UPDATE: 111; - THREAD_DELETE: 112; + MEMBER_KICK: 20; + MEMBER_PRUNE: 21; + MEMBER_BAN_ADD: 22; + MEMBER_BAN_REMOVE: 23; + MEMBER_UPDATE: 24; + MEMBER_ROLE_UPDATE: 25; + MEMBER_MOVE: 26; + MEMBER_DISCONNECT: 27; + BOT_ADD: 28; + + ROLE_CREATE: 30; + ROLE_UPDATE: 31; + ROLE_DELETE: 32; + + INVITE_CREATE: 40; + INVITE_UPDATE: 41; + INVITE_DELETE: 42; + + WEBHOOK_CREATE: 50; + WEBHOOK_UPDATE: 51; + WEBHOOK_DELETE: 52; + + EMOJI_CREATE: 60; + EMOJI_UPDATE: 61; + EMOJI_DELETE: 62; + + MESSAGE_DELETE: 72; + MESSAGE_BULK_DELETE: 73; + MESSAGE_PIN: 74; + MESSAGE_UNPIN: 75; + + INTEGRATION_CREATE: 80; + INTEGRATION_UPDATE: 81; + INTEGRATION_DELETE: 82; + STAGE_INSTANCE_CREATE: 83; + STAGE_INSTANCE_UPDATE: 84; + STAGE_INSTANCE_DELETE: 85; + + STICKER_CREATE: 90; + STICKER_UPDATE: 91; + STICKER_DELETE: 92; + + GUILD_SCHEDULED_EVENT_CREATE: 100; + GUILD_SCHEDULED_EVENT_UPDATE: 101; + GUILD_SCHEDULED_EVENT_DELETE: 102; + + THREAD_CREATE: 110; + THREAD_UPDATE: 111; + THREAD_DELETE: 112; + + APPLICATION_COMMAND_PERMISSION_UPDATE: 121; + }; + ButtonStyles: { + PRIMARY: 1; + SECONDARY: 2; + SUCCESS: 3; + DANGER: 4; + LINK: 5; }; ChannelTypes: { - GUILD_TEXT: 0; - DM: 1; - GUILD_VOICE: 2; - GROUP_DM: 3; - GUILD_CATEGORY: 4; - GUILD_NEWS: 5; - GUILD_STORE: 6; - GUILD_NEWS_THREAD: 10; - GUILD_PUBLIC_THREAD: 11; + GUILD_TEXT: 0; + DM: 1; + GUILD_VOICE: 2; + GROUP_DM: 3; + GUILD_CATEGORY: 4; + GUILD_NEWS: 5; + GUILD_STORE: 6; + + GUILD_NEWS_THREAD: 10; + GUILD_PUBLIC_THREAD: 11; GUILD_PRIVATE_THREAD: 12; - GUILD_STAGE: 13; + GUILD_STAGE_VOICE: 13; + /** @deprecated */ + GUILD_STAGE: 13; + }; + ComponentTypes: { + ACTION_ROW: 1; + BUTTON: 2; + SELECT_MENU: 3; + }; + ConnectionVisibilityTypes: { + NONE: 0; + EVERYONE: 1; + }; + DefaultMessageNotificationLevels: { + ALL_MESSAGES: 0; + ONLY_MENTIONS: 1; + }; + ExplicitContentFilterLevels: { + DISABLED: 0; + MEMBERS_WITHOUT_ROLES: 1; + ALL_MEMBERS: 2; }; - GATEWAY_VERSION: 9; GatewayOPCodes: { - EVENT: 0; - HEARTBEAT: 1; - IDENTIFY: 2; - STATUS_UPDATE: 3; - VOICE_STATE_UPDATE: 4; - VOICE_SERVER_PING: 5; - RESUME: 6; - RECONNECT: 7; - GET_GUILD_MEMBERS: 8; - INVALID_SESSION: 9; - HELLO: 10; - HEARTBEAT_ACK: 11; - SYNC_GUILD: 12; - SYNC_CALL: 13; + DISPATCH: 0; + /** @deprecated */ + EVENT: 0; + HEARTBEAT: 1; + IDENTIFY: 2; + PRESENCE_UPDATE: 3; + /** @deprecated */ + STATUS_UPDATE: 3; + VOICE_STATE_UPDATE: 4; + VOICE_SERVER_PING: 5; + RESUME: 6; + RECONNECT: 7; + REQUEST_GUILD_MEMBERS: 8; + /** @deprecated */ + GET_GUILD_MEMBERS: 8; + INVALID_SESSION: 9; + HELLO: 10; + HEARTBEAT_ACK: 11; + SYNC_GUILD: 12; + SYNC_CALL: 13; + }; + GuildFeatures: [ + "ANIMATED_ICON", + "BANNER", + "COMMERCE", + "COMMUNITY", + "DISCOVERABLE", + "FEATURABLE", + "INVITE_SPLASH", + "MEMBER_VERIFICATION_GATE_ENABLED", + "MONETIZATION_ENABLED", + "MORE_STICKERS", + "NEWS", + "PARTNERED", + "PREVIEW_ENABLED", + "PRIVATE_THREADS", + "ROLE_ICONS", + "ROLE_SUBSCRIPTIONS_ENABLED", + "SEVEN_DAY_THREAD_ARCHIVE", + "THREE_DAY_THREAD_ARCHIVE", + "TICKETED_EVENTS_ENABLED", + "VANITY_URL", + "VERIFIED", + "VIP_REGIONS", + "WELCOME_SCREEN_ENABLED" + ]; + GuildIntegrationExpireBehavior: { + REMOVE_ROLE: 0; + KICK: 1; }; - ImageFormats: ["jpg", "jpeg", "png", "webp", "gif"]; + GuildIntegrationTypes: [ + "twitch", + "youtube", + "discord" + ]; + GuildNSFWLevels: { + DEFAULT: 0; + EXPLICIT: 1; + SAFE: 2; + AGE_RESTRICTED: 3; + }; + ImageFormats: [ + "jpg", + "jpeg", + "png", + "webp", + "gif" + ]; ImageSizeBoundaries: { MAXIMUM: 4096; MINIMUM: 16; }; Intents: { - guilds: 1; - guildMembers: 2; - guildBans: 4; + guilds: 1; + guildMembers: 2; + guildBans: 4; guildEmojisAndStickers: 8; /** @deprecated */ - guildEmojis: 8; - guildIntegrations: 16; - guildWebhooks: 32; - guildInvites: 64; - guildVoiceStates: 128; - guildPresences: 256; - guildMessages: 512; - guildMessageReactions: 1024; - guildMessageTyping: 2048; - directMessages: 4096; + guildEmojis: 8; + guildIntegrations: 16; + guildWebhooks: 32; + guildInvites: 64; + guildVoiceStates: 128; + guildPresences: 256; + guildMessages: 512; + guildMessageReactions: 1024; + guildMessageTyping: 2048; + directMessages: 4096; directMessageReactions: 8192; - directMessageTyping: 16384; - allNonPrivileged: 32509; - allPrivileged: 258; - all: 32767; + directMessageTyping: 16384; + allNonPrivileged: 32509; + allPrivileged: 258; + all: 32767; + }; + InteractionResponseTypes: { + PONG: 1; + CHANNEL_MESSAGE_WITH_SOURCE: 4; + DEFERRED_CHANNEL_MESSAGE_WITH_SOURCE: 5; + DEFERRED_UPDATE_MESSAGE: 6; + UPDATE_MESSAGE: 7; + APPLICATION_COMMAND_AUTOCOMPLETE_RESULT: 8; + }; + InteractionTypes: { + PING: 1; + APPLICATION_COMMAND: 2; + MESSAGE_COMPONENT: 3; + APPLICATION_COMMAND_AUTOCOMPLETE: 4; + }; + InviteTargetTypes: { + STREAM: 1; + EMBEDDED_APPLICATION: 2; + }; + MFALevels: { + NONE: 0; + ELEVATED: 1; }; MessageActivityFlags: { - INSTANCE: 1; - JOIN: 2; - SPECTATE: 4; - JOIN_REQUEST: 8; - SYNC: 16; - PLAY: 32; - PARTY_PRIVACY_FRIENDS: 64; + INSTANCE: 1; + JOIN: 2; + SPECTATE: 4; + JOIN_REQUEST: 8; + SYNC: 16; + PLAY: 32; + PARTY_PRIVACY_FRIENDS: 64; PARTY_PRIVACY_VOICE_CHANNEL: 128; - EMBEDDED: 256; + EMBEDDED: 256; + }; + MessageActivityTypes: { + JOIN: 1; + SPECTATE: 2; + LISTEN: 3; + JOIN_REQUEST: 5; }; MessageFlags: { - CROSSPOSTED: 1; - IS_CROSSPOST: 2; - SUPPRESS_EMBEDS: 4; + CROSSPOSTED: 1; + IS_CROSSPOST: 2; + SUPPRESS_EMBEDS: 4; SOURCE_MESSAGE_DELETED: 8; - URGENT: 16; - HAS_THREAD: 32; - EPHEMERAL: 64; - LOADING: 128; + URGENT: 16; + HAS_THREAD: 32; + EPHEMERAL: 64; + LOADING: 128; }; MessageTypes: { - DEFAULT: 0; - RECIPIENT_ADD: 1; - RECIPIENT_REMOVE: 2; - CALL: 3; - CHANNEL_NAME_CHANGE: 4; - CHANNEL_ICON_CHANGE: 5; - CHANNEL_PINNED_MESSAGE: 6; - GUILD_MEMBER_JOIN: 7; - USER_PREMIUM_GUILD_SUBSCRIPTION: 8; - USER_PREMIUM_GUILD_SUBSCRIPTION_TIER_1: 9; - USER_PREMIUM_GUILD_SUBSCRIPTION_TIER_2: 10; - USER_PREMIUM_GUILD_SUBSCRIPTION_TIER_3: 11; - CHANNEL_FOLLOW_ADD: 12; - - GUILD_DISCOVERY_DISQUALIFIED: 14; - GUILD_DISCOVERY_REQUALIFIED: 15; + DEFAULT: 0; + RECIPIENT_ADD: 1; + RECIPIENT_REMOVE: 2; + CALL: 3; + CHANNEL_NAME_CHANGE: 4; + CHANNEL_ICON_CHANGE: 5; + CHANNEL_PINNED_MESSAGE: 6; + GUILD_MEMBER_JOIN: 7; + USER_PREMIUM_GUILD_SUBSCRIPTION: 8; + USER_PREMIUM_GUILD_SUBSCRIPTION_TIER_1: 9; + USER_PREMIUM_GUILD_SUBSCRIPTION_TIER_2: 10; + USER_PREMIUM_GUILD_SUBSCRIPTION_TIER_3: 11; + CHANNEL_FOLLOW_ADD: 12; + + GUILD_DISCOVERY_DISQUALIFIED: 14; + GUILD_DISCOVERY_REQUALIFIED: 15; GUILD_DISCOVERY_GRACE_PERIOD_INITIAL_WARNING: 16; - GUILD_DISCOVERY_GRACE_PERIOD_FINAL_WARNING: 17; - THREAD_CREATED: 18; - REPLY: 19; - CHAT_INPUT_COMMAND: 20; - THREAD_STARTER_MESSAGE: 21; - GUILD_INVITE_REMINDER: 22; - CONTEXT_MENU_COMMAND: 23; + GUILD_DISCOVERY_GRACE_PERIOD_FINAL_WARNING: 17; + THREAD_CREATED: 18; + REPLY: 19; + CHAT_INPUT_COMMAND: 20; + THREAD_STARTER_MESSAGE: 21; + GUILD_INVITE_REMINDER: 22; + CONTEXT_MENU_COMMAND: 23; + }; + PermissionOverwriteTypes: { + ROLE: 0; + USER: 1; }; Permissions: { - createInstantInvite: 1n; - kickMembers: 2n; - banMembers: 4n; - administrator: 8n; - manageChannels: 16n; - manageGuild: 32n; - addReactions: 64n; - viewAuditLog: 128n; + createInstantInvite: 1n; + kickMembers: 2n; + banMembers: 4n; + administrator: 8n; + manageChannels: 16n; + manageGuild: 32n; + addReactions: 64n; + viewAuditLog: 128n; /** @deprecated */ - viewAuditLogs: 128n; - voicePrioritySpeaker: 256n; - voiceStream: 512n; + viewAuditLogs: 128n; + voicePrioritySpeaker: 256n; + voiceStream: 512n; /** @deprecated */ - stream: 512n; - viewChannel: 1024n; + stream: 512n; + viewChannel: 1024n; /** @deprecated */ - readMessages: 1024n; - sendMessages: 2048n; - sendTTSMessages: 4096n; - manageMessages: 8192n; - embedLinks: 16384n; - attachFiles: 32768n; - readMessageHistory: 65536n; - mentionEveryone: 131072n; - useExternalEmojis: 262144n; + readMessages: 1024n; + sendMessages: 2048n; + sendTTSMessages: 4096n; + manageMessages: 8192n; + embedLinks: 16384n; + attachFiles: 32768n; + readMessageHistory: 65536n; + mentionEveryone: 131072n; + useExternalEmojis: 262144n; /** @deprecated */ - externalEmojis: 262144n; - viewGuildInsights: 524288n; - voiceConnect: 1048576n; - voiceSpeak: 2097152n; - voiceMuteMembers: 4194304n; - voiceDeafenMembers: 8388608n; - voiceMoveMembers: 16777216n; - voiceUseVAD: 33554432n; - changeNickname: 67108864n; - manageNicknames: 134217728n; - manageRoles: 268435456n; - manageWebhooks: 536870912n; + externalEmojis: 262144n; + viewGuildInsights: 524288n; + voiceConnect: 1048576n; + voiceSpeak: 2097152n; + voiceMuteMembers: 4194304n; + voiceDeafenMembers: 8388608n; + voiceMoveMembers: 16777216n; + voiceUseVAD: 33554432n; + changeNickname: 67108864n; + manageNicknames: 134217728n; + manageRoles: 268435456n; + manageWebhooks: 536870912n; manageEmojisAndStickers: 1073741824n; /** @deprecated */ - manageEmojis: 1073741824n; - useApplicationCommands: 2147483648n; + manageEmojis: 1073741824n; + useApplicationCommands: 2147483648n; /** @deprecated */ - useSlashCommands: 2147483648n; - voiceRequestToSpeak: 4294967296n; - manageThreads: 17179869184n; - createPublicThreads: 34359738368n; - createPrivateThreads: 68719476736n; - useExternalStickers: 137438953472n; - sendMessagesInThreads: 274877906944n; - allGuild: 2080899262n; - allText: 535529258065n; - allVoice: 4629464849n; - all: 541165879295n; + useSlashCommands: 2147483648n; + voiceRequestToSpeak: 4294967296n; + manageEvents: 8589934592n; + manageThreads: 17179869184n; + createPublicThreads: 34359738368n; + createPrivateThreads: 68719476736n; + useExternalStickers: 137438953472n; + sendMessagesInThreads: 274877906944n; + startEmbeddedActivities: 549755813888n; + allGuild: 2080899262n; + allText: 518349388881n; + allVoice: 554385278737n; + all: 1073741823999n; + }; + PremiumTiers: { + NONE: 0; + TIER_1: 1; + TIER_2: 2; + TIER_3: 3; + }; + PremiumTypes: { + NONE: 0; + NITRO_CLASSIC: 1; + NITRO: 2; + }; + StageInstancePrivacyLevel: { + PUBLIC: 1; + GUILD_ONLY: 2; }; - REST_VERSION: 9; StickerFormats: { - PNG: 1; - APNG: 2; + PNG: 1; + APNG: 2; LOTTIE: 3; }; StickerTypes: { STANDARD: 1; - GUILD: 2; + GUILD: 2; + }; + SystemChannelFlags: { + SUPPRESS_JOIN_NOTIFICATIONS: 1; + SUPPRESS_PREMIUM_SUBSCRIPTIONS: 2; + SUPPRESS_GUILD_REMINDER_NOTIFICATIONS: 4; + SUPPRESS_JOIN_NOTIFICATION_REPLIES: 8; }; SystemJoinMessages: [ "%user% joined the party.", @@ -1642,90 +1826,78 @@ declare namespace Eris { "Good to see you, %user%.", "Yay you made it, %user%!" ]; + ThreadMemberFlags: { + HAS_INTERACTED: 1; + ALL_MESSAGES: 2; + ONLY_MENTIONS: 4; + NO_MESSAGES: 8; + }; UserFlags: { - NONE: 0; - DISCORD_EMPLOYEE: 1; - PARTNERED_SERVER_OWNER: 2; + NONE: 0; + DISCORD_STAFF: 1; + DISCORD_EMPLOYEE: 1; + PARTNER: 2; + PARTNERED_SERVER_OWNER: 2; /** @deprecated */ - DISCORD_PARTNER: 2; - HYPESQUAD_EVENTS: 4; - BUG_HUNTER_LEVEL_1: 8; - HOUSE_BRAVERY: 64; - HOUSE_BRILLIANCE: 128; - HOUSE_BALANCE: 256; - EARLY_SUPPORTER: 512; - TEAM_USER: 1024; - SYSTEM: 4096; - BUG_HUNTER_LEVEL_2: 16384; - VERIFIED_BOT: 65536; + DISCORD_PARTNER: 2; + HYPESQUAD: 4; + HYPESQUAD_EVENTS: 4; + BUG_HUNTER_LEVEL_1: 8; + HYPESQUAD_ONLINE_HOUSE_1: 64; + HOUSE_BRAVERY: 64; + HYPESQUAD_ONLINE_HOUSE_2: 128; + HOUSE_BRILLIANCE: 128; + HYPESQUAD_ONLINE_HOUSE_3: 256; + HOUSE_BALANCE: 256; + PREMIUM_EARLY_SUPPORTER: 512; + EARLY_SUPPORTER: 512; + TEAM_PSEUDO_USER: 1024; + TEAM_USER: 1024; + SYSTEM: 4096; + BUG_HUNTER_LEVEL_2: 16384; + VERIFIED_BOT: 65536; + VERIFIED_DEVELOPER: 131072; + VERIFIED_BOT_DEVELOPER: 131072; EARLY_VERIFIED_BOT_DEVELOPER: 131072; - /** @deprecated */ - VERIFIED_BOT_DEVELOPER: 131072; - DISCORD_CERTIFIED_MODERATOR: 262144; - }; - VoiceOPCodes: { - IDENTIFY: 0; - SELECT_PROTOCOL: 1; - READY: 2; - HEARTBEAT: 3; - SESSION_DESCRIPTION: 4; - SPEAKING: 5; - HEARTBEAT_ACK: 6; - RESUME: 7; - HELLO: 8; - RESUMED: 9; - DISCONNECT: 13; - }; - InteractionTypes: { - PING: 1; - APPLICATION_COMMAND: 2; - MESSAGE_COMPONENT: 3; - APPLICATION_COMMAND_AUTOCOMPLETE: 4; - }; - InteractionResponseTypes: { - PONG: 1; - CHANNEL_MESSAGE_WITH_SOURCE: 4; - DEFERRED_CHANNEL_MESSAGE_WITH_SOURCE: 5; - DEFERRED_UPDATE_MESSAGE: 6; - UPDATE_MESSAGE: 7; - APPLICATION_COMMAND_AUTOCOMPLETE_RESULT: 8; - }; - ApplicationCommandOptionTypes: { - SUB_COMMAND: 1; - SUB_COMMAND_GROUP: 2; - STRING: 3; - INTEGER: 4; - BOOLEAN: 5; - USER: 6; - CHANNEL: 7; - ROLE: 8; - MENTIONABLE: 9; - NUMBER: 10; + CERTIFIED_MODERATOR: 262144; + DISCORD_CERTIFIED_MODERATOR: 262144; + BOT_HTTP_INTERACTIONS: 524288; }; - ApplicationCommandPermissionTypes: { - ROLE: 1; - USER: 2; + VerificationLevels: { + NONE: 0; + LOW: 1; + MEDIUM: 2; + HIGH: 3; + VERY_HIGH: 4; }; - ApplicationCommandTypes: { - CHAT_INPUT: 1; - USER: 2; - MESSAGE: 3; + VideoQualityModes: { + AUTO: 1; + FULL: 2; }; - ComponentTypes: { - ACTION_ROW: 1; - BUTTON: 2; - SELECT_MENU: 3; + VoiceOPCodes: { + IDENTIFY: 0; + SELECT_PROTOCOL: 1; + READY: 2; + HEARTBEAT: 3; + SESSION_DESCRIPTION: 4; + SPEAKING: 5; + HEARTBEAT_ACK: 6; + RESUME: 7; + HELLO: 8; + RESUMED: 9; + CLIENT_DISCONNECT: 13; + /** @deprecated */ + DISCONNECT: 13; }; - ButtonStyles: { - PRIMARY: 1; - SECONDARY: 2; - SUCCESS: 3; - DANGER: 4; - LINK: 5; + WebhookTypes: { + INCOMING: 1; + CHANNEL_FOLLOWER: 2; + APPLICATION: 3; }; } // Selfbot + type ConnectionVisibilityTypes = Constants["ConnectionVisibilityTypes"][keyof Constants["ConnectionVisibilityTypes"]]; interface Connection { friend_sync: boolean; id: string; @@ -1734,7 +1906,7 @@ declare namespace Eris { revoked: boolean; type: string; verified: boolean; - visibility: number; + visibility: ConnectionVisibilityTypes; } interface GuildSettings { channel_override: { @@ -1857,7 +2029,7 @@ declare namespace Eris { export class CategoryChannel extends GuildChannel { channels: Collection>; - type: 4; + type: Constants["ChannelTypes"]["GUILD_CATEGORY"]; edit(options: Omit, reason?: string): Promise; } @@ -1920,37 +2092,37 @@ declare namespace Eris { createChannel( guildID: string, name: string, - type: 0, + type: Constants["ChannelTypes"]["GUILD_TEXT"], options?: CreateChannelOptions ): Promise; createChannel( guildID: string, name: string, - type: 2, + type: Constants["ChannelTypes"]["GUILD_VOICE"], options?: CreateChannelOptions ): Promise; createChannel( guildID: string, name: string, - type: 4, + type: Constants["ChannelTypes"]["GUILD_CATEGORY"], options?: CreateChannelOptions ): Promise; createChannel( guildID: string, name: string, - type: 5, + type: Constants["ChannelTypes"]["GUILD_NEWS"], options?: CreateChannelOptions ): Promise; createChannel( guildID: string, name: string, - type: 6, + type: Constants["ChannelTypes"]["GUILD_STORE"], options?: CreateChannelOptions ): Promise; createChannel( guildID: string, name: string, - type: 13, + type: Constants["ChannelTypes"]["GUILD_STAGE"], options?: CreateChannelOptions ): Promise; createChannel( @@ -1963,7 +2135,7 @@ declare namespace Eris { createChannel( guildID: string, name: string, - type: 0, + type: Constants["ChannelTypes"]["GUILD_TEXT"], reason?: string, options?: CreateChannelOptions | string ): Promise; @@ -1971,7 +2143,7 @@ declare namespace Eris { createChannel( guildID: string, name: string, - type: 2, + type: Constants["ChannelTypes"]["GUILD_VOICE"], reason?: string, options?: CreateChannelOptions | string ): Promise; @@ -1979,7 +2151,7 @@ declare namespace Eris { createChannel( guildID: string, name: string, - type: 4, + type: Constants["ChannelTypes"]["GUILD_CATEGORY"], reason?: string, options?: CreateChannelOptions | string ): Promise; @@ -1987,7 +2159,7 @@ declare namespace Eris { createChannel( guildID: string, name: string, - type: 5, + type: Constants["ChannelTypes"]["GUILD_NEWS"], reason?: string, options?: CreateChannelOptions | string ): Promise; @@ -1995,7 +2167,7 @@ declare namespace Eris { createChannel( guildID: string, name: string, - type: 6, + type: Constants["ChannelTypes"]["GUILD_STORE"], reason?: string, options?: CreateChannelOptions | string ): Promise; @@ -2003,7 +2175,7 @@ declare namespace Eris { createChannel( guildID: string, name: string, - type: 13, + type: Constants["ChannelTypes"]["GUILD_STAGE"], reason?: string, options?: CreateChannelOptions | string ): Promise; @@ -2387,7 +2559,7 @@ declare namespace Eris { export class ExtendedUser extends User { email: string; mfaEnabled: boolean; - premiumType: 0 | 1 | 2; + premiumType: Constants["PremiumTypes"][keyof Constants["PremiumTypes"]]; verified: boolean; } @@ -2397,7 +2569,7 @@ declare namespace Eris { name: string; ownerID: string; recipients: Collection; - type: 3; + type: Constants["ChannelTypes"]["GROUP_DM"]; addRecipient(userID: string): Promise; dynamicIconURL(format?: ImageFormat, size?: number): string | null; edit(options: { icon?: string; name?: string; ownerID?: string }): Promise; @@ -2469,25 +2641,25 @@ declare namespace Eris { banMember(userID: string, deleteMessageDays?: number, reason?: string): Promise; bulkEditCommands(commands: ApplicationCommandStructure[]): Promise; createChannel(name: string): Promise; - createChannel(name: string, type: 0, options?: CreateChannelOptions): Promise; - createChannel(name: string, type: 2, options?: CreateChannelOptions): Promise; - createChannel(name: string, type: 4, options?: CreateChannelOptions): Promise; - createChannel(name: string, type: 5, options?: CreateChannelOptions | string): Promise; - createChannel(name: string, type: 6, options?: CreateChannelOptions | string): Promise; - createChannel(name: string, type: 13, options?: CreateChannelOptions | string): Promise; + createChannel(name: string, type: Constants["ChannelTypes"]["GUILD_TEXT"], options?: CreateChannelOptions): Promise; + createChannel(name: string, type: Constants["ChannelTypes"]["GUILD_VOICE"], options?: CreateChannelOptions): Promise; + createChannel(name: string, type: Constants["ChannelTypes"]["GUILD_CATEGORY"], options?: CreateChannelOptions): Promise; + createChannel(name: string, type: Constants["ChannelTypes"]["GUILD_NEWS"], options?: CreateChannelOptions | string): Promise; + createChannel(name: string, type: Constants["ChannelTypes"]["GUILD_STORE"], options?: CreateChannelOptions | string): Promise; + createChannel(name: string, type: Constants["ChannelTypes"]["GUILD_STAGE"], options?: CreateChannelOptions | string): Promise; createChannel(name: string, type?: number, options?: CreateChannelOptions): Promise; /** @deprecated */ - createChannel(name: string, type: 0, reason?: string, options?: CreateChannelOptions | string): Promise; + createChannel(name: string, type: Constants["ChannelTypes"]["GUILD_TEXT"], reason?: string, options?: CreateChannelOptions | string): Promise; /** @deprecated */ - createChannel(name: string, type: 2, reason?: string, options?: CreateChannelOptions | string): Promise; + createChannel(name: string, type: Constants["ChannelTypes"]["GUILD_VOICE"], reason?: string, options?: CreateChannelOptions | string): Promise; /** @deprecated */ - createChannel(name: string, type: 4, reason?: string, options?: CreateChannelOptions | string): Promise; + createChannel(name: string, type: Constants["ChannelTypes"]["GUILD_CATEGORY"], reason?: string, options?: CreateChannelOptions | string): Promise; /** @deprecated */ - createChannel(name: string, type: 5, reason?: string, options?: CreateChannelOptions | string): Promise; + createChannel(name: string, type: Constants["ChannelTypes"]["GUILD_NEWS"], reason?: string, options?: CreateChannelOptions | string): Promise; /** @deprecated */ - createChannel(name: string, type: 6, reason?: string, options?: CreateChannelOptions | string): Promise; + createChannel(name: string, type: Constants["ChannelTypes"]["GUILD_STORE"], reason?: string, options?: CreateChannelOptions | string): Promise; /** @deprecated */ - createChannel(name: string, type: 13, reason?: string, options?: CreateChannelOptions | string): Promise; + createChannel(name: string, type: Constants["ChannelTypes"]["GUILD_STAGE"], reason?: string, options?: CreateChannelOptions | string): Promise; /** @deprecated */ createChannel(name: string, type?: number, reason?: string, options?: CreateChannelOptions | string): Promise; createCommand(command: ApplicationCommandStructure): Promise; @@ -2596,7 +2768,7 @@ declare namespace Eris { parentID: string | null; permissionOverwrites: Collection; position: number; - type: Exclude; + type: GuildChannelTypes; constructor(data: BaseData, client: Client); delete(reason?: string): Promise; deletePermission(overwriteID: string, reason?: string): Promise; @@ -2613,13 +2785,14 @@ declare namespace Eris { permissionsOf(memberID: string | Member | MemberRoles): Permission; } + export class GuildIntegration extends Base { account: { id: string; name: string }; application?: IntegrationApplication; createdAt: number; enabled: boolean; enableEmoticons?: boolean; - expireBehavior?: number; + expireBehavior?: GuildIntegrationExpireBehavior; expireGracePeriod?: number; id: string; name: string; @@ -2628,7 +2801,7 @@ declare namespace Eris { subscriberCount?: number; syncedAt?: number; syncing?: boolean; - type: string; + type: GuildIntegrationTypes; user?: User; constructor(data: BaseData, guild: Guild); delete(): Promise; @@ -2916,9 +3089,9 @@ declare namespace Eris { // News channel rate limit is always 0 export class NewsChannel extends TextChannel { rateLimitPerUser: 0; - type: 5; + type: Constants["ChannelTypes"]["GUILD_NEWS"]; createInvite(options?: CreateInviteOptions, reason?: string): Promise>; - createMessage(content: MessageContent, file?: MessageFile | MessageFile[]): Promise>; + createMessage(content: MessageContent, file?: FileContent | FileContent[]): Promise>; createThreadWithMessage(messageID: string, options: CreateThreadOptions): Promise; crosspostMessage(messageID: string): Promise>; editMessage(messageID: string, content: MessageContentEdit): Promise>; @@ -2932,8 +3105,8 @@ declare namespace Eris { } export class NewsThreadChannel extends ThreadChannel { - type: 10; - createMessage(content: MessageContent, file?: MessageFile | MessageFile[]): Promise>; + type: Constants["ChannelTypes"]["GUILD_NEWS_THREAD"]; + createMessage(content: MessageContent, file?: FileContent | FileContent[]): Promise>; edit(options: Pick, reason?: string): Promise; editMessage(messageID: string, content: MessageContentEdit): Promise>; getMessage(messageID: string): Promise>; @@ -2977,7 +3150,7 @@ declare namespace Eris { lastMessageID: string; messages: Collection>; recipient: User; - type: 1 | 3; + type: PrivateChannelTypes; addMessageReaction(messageID: string, reaction: string): Promise; /** @deprecated */ addMessageReaction(messageID: string, reaction: string, userID: string): Promise; @@ -3006,8 +3179,8 @@ declare namespace Eris { export class PrivateThreadChannel extends ThreadChannel { threadMetadata: PrivateThreadMetadata; - type: 12; - createMessage(content: MessageContent, file?: MessageFile | MessageFile[]): Promise>; + type: Constants["ChannelTypes"]["GUILD_PRIVATE_THREAD"]; + createMessage(content: MessageContent, file?: FileContent | FileContent[]): Promise>; edit(options: Pick, reason?: string): Promise; editMessage(messageID: string, content: MessageContentEdit): Promise>; getMessage(messageID: string): Promise>; @@ -3016,8 +3189,8 @@ declare namespace Eris { } export class PublicThreadChannel extends ThreadChannel { - type: 10 | 11; - createMessage(content: MessageContent, file?: MessageFile | MessageFile[]): Promise>; + type: GuildPublicThreadChannelTypes; + createMessage(content: MessageContent, file?: FileContent | FileContent[]): Promise>; edit(options: Pick, reason?: string): Promise; editMessage(messageID: string, content: MessageContentEdit): Promise>; getMessage(messageID: string): Promise>; @@ -3194,7 +3367,7 @@ declare namespace Eris { export class StageChannel extends VoiceChannel { topic?: string; - type: 13; + type: Constants["ChannelTypes"]["GUILD_STAGE_VOICE"]; createInstance(options: StageInstanceOptions): Promise; deleteInstance(): Promise; editInstance(options: StageInstanceOptions): Promise; @@ -3215,7 +3388,7 @@ declare namespace Eris { } export class StoreChannel extends GuildChannel { - type: 6; + type: Constants["ChannelTypes"]["GUILD_STORE"]; edit(options: Omit, reason?: string): Promise; } @@ -3226,13 +3399,13 @@ declare namespace Eris { messages: Collection>; rateLimitPerUser: number; topic: string | null; - type: 0 | 5; + type: GuildTextChannelTypes; constructor(data: BaseData, client: Client, messageLimit: number); addMessageReaction(messageID: string, reaction: string): Promise; /** @deprecated */ addMessageReaction(messageID: string, reaction: string, userID: string): Promise; createInvite(options?: CreateInviteOptions, reason?: string): Promise>; - createMessage(content: MessageContent, file?: MessageFile | MessageFile[]): Promise>; + createMessage(content: MessageContent, file?: FileContent | FileContent[]): Promise>; createThreadWithMessage(messageID: string, options: CreateThreadOptions): Promise; createThreadWithoutMessage(options: CreateThreadWithoutMessageOptions): Promise; createWebhook(options: { name: string; avatar?: string | null }, reason?: string): Promise; @@ -3281,10 +3454,10 @@ declare namespace Eris { ownerID: string; rateLimitPerUser: number; threadMetadata: ThreadMetadata; - type: 10 | 11 | 12; + type: GuildThreadChannelTypes; constructor(data: BaseData, client: Client, messageLimit?: number); addMessageReaction(messageID: string, reaction: string): Promise; - createMessage(content: MessageContent, file?: MessageFile | MessageFile[]): Promise>; + createMessage(content: MessageContent, file?: FileContent | FileContent[]): Promise>; deleteMessage(messageID: string, reason?: string): Promise; deleteMessages(messageIDs: string[], reason?: string): Promise; edit(options: Pick, reason?: string): Promise; @@ -3307,6 +3480,7 @@ declare namespace Eris { } export class ThreadMember extends Base { + flags: number; guildMember?: Member; joinTimestamp: number; threadID: string; @@ -3354,7 +3528,7 @@ declare namespace Eris { export class VoiceChannel extends GuildChannel implements Invitable { bitrate: number; rtcRegion: string | null; - type: 2 | 13; + type: GuildVoiceChannelTypes; userLimit: number; videoQualityMode: VideoQualityMode; voiceMembers: Collection; diff --git a/lib/Constants.js b/lib/Constants.js index f244fc4ab..089e55a41 100644 --- a/lib/Constants.js +++ b/lib/Constants.js @@ -1,156 +1,40 @@ "use strict"; -module.exports.ImageFormats = [ - "jpg", - "jpeg", - "png", - "webp", - "gif" -]; - -module.exports.ImageSizeBoundaries = { - MINIMUM: 16, - MAXIMUM: 4096 -}; - -module.exports.GatewayOPCodes = { - EVENT: 0, - HEARTBEAT: 1, - IDENTIFY: 2, - STATUS_UPDATE: 3, - VOICE_STATE_UPDATE: 4, - VOICE_SERVER_PING: 5, - RESUME: 6, - RECONNECT: 7, - GET_GUILD_MEMBERS: 8, - INVALID_SESSION: 9, - HELLO: 10, - HEARTBEAT_ACK: 11, - SYNC_GUILD: 12, - SYNC_CALL: 13 -}; - module.exports.GATEWAY_VERSION = 9; module.exports.REST_VERSION = 9; -const Permissions = { - createInstantInvite: 1n, - kickMembers: 1n << 1n, - banMembers: 1n << 2n, - administrator: 1n << 3n, - manageChannels: 1n << 4n, - manageGuild: 1n << 5n, - addReactions: 1n << 6n, - viewAuditLog: 1n << 7n, viewAuditLogs: 1n << 7n, // [DEPRECATED] - voicePrioritySpeaker: 1n << 8n, - voiceStream: 1n << 9n, stream: 1n << 9n, // [DEPRECATED] - viewChannel: 1n << 10n, readMessages: 1n << 10n, // [DEPRECATED] - sendMessages: 1n << 11n, - sendTTSMessages: 1n << 12n, - manageMessages: 1n << 13n, - embedLinks: 1n << 14n, - attachFiles: 1n << 15n, - readMessageHistory: 1n << 16n, - mentionEveryone: 1n << 17n, - useExternalEmojis: 1n << 18n, externalEmojis: 1n << 18n, // [DEPRECATED] - viewGuildInsights: 1n << 19n, - voiceConnect: 1n << 20n, - voiceSpeak: 1n << 21n, - voiceMuteMembers: 1n << 22n, - voiceDeafenMembers: 1n << 23n, - voiceMoveMembers: 1n << 24n, - voiceUseVAD: 1n << 25n, - changeNickname: 1n << 26n, - manageNicknames: 1n << 27n, - manageRoles: 1n << 28n, - manageWebhooks: 1n << 29n, - manageEmojisAndStickers: 1n << 30n, manageEmojis: 1n << 30n, // [DEPRECATED] - useApplicationCommands: 1n << 31n, useSlashCommands: 1n << 31n, // [DEPRECATED] - voiceRequestToSpeak: 1n << 32n, +module.exports.ActivityTypes = { + GAME: 0, + STREAMING: 1, + LISTENING: 2, + WATCHING: 3, + CUSTOM: 4, + COMPETING: 5 +}; - manageThreads: 1n << 34n, - createPublicThreads: 1n << 35n, - createPrivateThreads: 1n << 36n, - useExternalStickers: 1n << 37n, - sendMessagesInThreads: 1n << 38n +module.exports.ApplicationCommandOptionTypes = { + SUB_COMMAND: 1, + SUB_COMMAND_GROUP: 2, + STRING: 3, + INTEGER: 4, + BOOLEAN: 5, + USER: 6, + CHANNEL: 7, + ROLE: 8, + MENTIONABLE: 9, + NUMBER: 10 }; -Permissions.allGuild = Permissions.kickMembers - | Permissions.banMembers - | Permissions.administrator - | Permissions.manageChannels - | Permissions.manageGuild - | Permissions.viewAuditLog - | Permissions.viewGuildInsights - | Permissions.changeNickname - | Permissions.manageNicknames - | Permissions.manageRoles - | Permissions.manageWebhooks - | Permissions.manageEmojisAndStickers; -Permissions.allText = Permissions.createInstantInvite - | Permissions.manageChannels - | Permissions.addReactions - | Permissions.viewChannel - | Permissions.sendMessages - | Permissions.sendTTSMessages - | Permissions.manageMessages - | Permissions.embedLinks - | Permissions.attachFiles - | Permissions.readMessageHistory - | Permissions.mentionEveryone - | Permissions.useExternalEmojis - | Permissions.manageRoles - | Permissions.manageWebhooks - | Permissions.useApplicationCommands - | Permissions.manageThreads - | Permissions.createPublicThreads - | Permissions.createPrivateThreads - | Permissions.useExternalStickers - | Permissions.sendMessagesInThreads; -Permissions.allVoice = Permissions.createInstantInvite - | Permissions.manageChannels - | Permissions.voicePrioritySpeaker - | Permissions.voiceStream - | Permissions.viewChannel - | Permissions.voiceConnect - | Permissions.voiceSpeak - | Permissions.voiceMuteMembers - | Permissions.voiceDeafenMembers - | Permissions.voiceMoveMembers - | Permissions.voiceUseVAD - | Permissions.manageRoles - | Permissions.voiceRequestToSpeak; -Permissions.all = Permissions.allGuild | Permissions.allText | Permissions.allVoice; -module.exports.Permissions = Permissions; -module.exports.VoiceOPCodes = { - IDENTIFY: 0, - SELECT_PROTOCOL: 1, - READY: 2, - HEARTBEAT: 3, - SESSION_DESCRIPTION: 4, - SPEAKING: 5, - HEARTBEAT_ACK: 6, - RESUME: 7, - HELLO: 8, - RESUMED: 9, - DISCONNECT: 13 +module.exports.ApplicationCommandPermissionTypes = { + ROLE: 1, + USER: 2 }; -module.exports.SystemJoinMessages = [ - "%user% joined the party.", - "%user% is here.", - "Welcome, %user%. We hope you brought pizza.", - "A wild %user% appeared.", - "%user% just landed.", - "%user% just slid into the server.", - "%user% just showed up!", - "Welcome %user%. Say hi!", - "%user% hopped into the server.", - "Everyone welcome %user%!", - "Glad you're here, %user%.", - "Good to see you, %user%.", - "Yay you made it, %user%!" -]; +module.exports.ApplicationCommandTypes = { + CHAT_INPUT: 1, + USER: 2, + MESSAGE: 3 +}; module.exports.AuditLogActions = { GUILD_UPDATE: 1, @@ -196,6 +80,7 @@ module.exports.AuditLogActions = { INTEGRATION_CREATE: 80, INTEGRATION_UPDATE: 81, INTEGRATION_DELETE: 82, + STAGE_INSTANCE_CREATE: 83, STAGE_INSTANCE_UPDATE: 84, STAGE_INSTANCE_DELETE: 85, @@ -204,9 +89,194 @@ module.exports.AuditLogActions = { STICKER_UPDATE: 91, STICKER_DELETE: 92, + GUILD_SCHEDULED_EVENT_CREATE: 100, + GUILD_SCHEDULED_EVENT_UPDATE: 101, + GUILD_SCHEDULED_EVENT_DELETE: 102, + THREAD_CREATE: 110, THREAD_UPDATE: 111, - THREAD_DELETE: 112 + THREAD_DELETE: 112, + + APPLICATION_COMMAND_PERMISSION_UPDATE: 121 +}; + +module.exports.ButtonStyles = { + PRIMARY: 1, + SECONDARY: 2, + SUCCESS: 3, + DANGER: 4, + LINK: 5 +}; + +module.exports.ChannelTypes = { + GUILD_TEXT: 0, + DM: 1, + GUILD_VOICE: 2, + GROUP_DM: 3, + GUILD_CATEGORY: 4, + GUILD_NEWS: 5, + GUILD_STORE: 6, + + GUILD_NEWS_THREAD: 10, + GUILD_PUBLIC_THREAD: 11, + GUILD_PRIVATE_THREAD: 12, + GUILD_STAGE_VOICE: 13, GUILD_STAGE: 13 // [DEPRECATED] +}; + +module.exports.ComponentTypes = { + ACTION_ROW: 1, + BUTTON: 2, + SELECT_MENU: 3 +}; + +module.exports.ConnectionVisibilityTypes = { + NONE: 0, + EVERYONE: 1 +}; + +module.exports.DefaultMessageNotificationLevels = { + ALL_MESSAGES: 0, + ONLY_MENTIONS: 1 +}; + +module.exports.ExplicitContentFilterLevels = { + DISABLED: 0, + MEMBERS_WITHOUT_ROLES: 1, + ALL_MEMBERS: 2 +}; + +module.exports.GatewayOPCodes = { + DISPATCH: 0, EVENT: 0, // [DEPRECATED] + HEARTBEAT: 1, + IDENTIFY: 2, + PRESENCE_UPDATE: 3, STATUS_UPDATE: 3, // [DEPRECATED] + VOICE_STATE_UPDATE: 4, + VOICE_SERVER_PING: 5, + RESUME: 6, + RECONNECT: 7, + REQUEST_GUILD_MEMBERS: 8, GET_GUILD_MEMBERS: 8, // [DEPRECATED] + INVALID_SESSION: 9, + HELLO: 10, + HEARTBEAT_ACK: 11, + SYNC_GUILD: 12, + SYNC_CALL: 13 +}; + +module.exports.GuildFeatures = [ + "ANIMATED_ICON", + "BANNER", + "COMMERCE", + "COMMUNITY", + "DISCOVERABLE", + "FEATURABLE", + "INVITE_SPLASH", + "MEMBER_VERIFICATION_GATE_ENABLED", + "MONETIZATION_ENABLED", + "MORE_STICKERS", + "NEWS", + "PARTNERED", + "PREVIEW_ENABLED", + "PRIVATE_THREADS", + "ROLE_ICONS", + "ROLE_SUBSCRIPTIONS_ENABLED", + "SEVEN_DAY_THREAD_ARCHIVE", + "THREE_DAY_THREAD_ARCHIVE", + "TICKETED_EVENTS_ENABLED", + "VANITY_URL", + "VERIFIED", + "VIP_REGIONS", + "WELCOME_SCREEN_ENABLED" +]; + +module.exports.GuildIntegrationExpireBehavior = { + REMOVE_ROLE: 0, + KICK: 1 +}; +module.exports.GuildIntegrationTypes = [ + "twitch", + "youtube", + "discord" +]; + +module.exports.GuildNSFWLevels = { + DEFAULT: 0, + EXPLICIT: 1, + SAFE: 2, + AGE_RESTRICTED: 3 +}; + +module.exports.ImageFormats = [ + "jpg", + "jpeg", + "png", + "webp", + "gif" +]; + +module.exports.ImageSizeBoundaries = { + MINIMUM: 16, + MAXIMUM: 4096 +}; + +const Intents = { + guilds: 1 << 0, + guildMembers: 1 << 1, + guildBans: 1 << 2, + guildEmojisAndStickers: 1 << 3, guildEmojis: 1 << 3, // [DEPRECATED] + guildIntegrations: 1 << 4, + guildWebhooks: 1 << 5, + guildInvites: 1 << 6, + guildVoiceStates: 1 << 7, + guildPresences: 1 << 8, + guildMessages: 1 << 9, + guildMessageReactions: 1 << 10, + guildMessageTyping: 1 << 11, + directMessages: 1 << 12, + directMessageReactions: 1 << 13, + directMessageTyping: 1 << 14 +}; +Intents.allNonPrivileged = Intents.guilds + | Intents.guildBans + | Intents.guildEmojisAndStickers + | Intents.guildIntegrations + | Intents.guildWebhooks + | Intents.guildInvites + | Intents.guildVoiceStates + | Intents.guildMessages + | Intents.guildMessageReactions + | Intents.guildMessageTyping + | Intents.directMessages + | Intents.directMessageReactions + | Intents.directMessageTyping; +Intents.allPrivileged = Intents.guildMembers + | Intents.guildPresences; +Intents.all = Intents.allNonPrivileged | Intents.allPrivileged; +module.exports.Intents = Intents; + +module.exports.InteractionResponseTypes = { + PONG: 1, + CHANNEL_MESSAGE_WITH_SOURCE: 4, + DEFERRED_CHANNEL_MESSAGE_WITH_SOURCE: 5, + DEFERRED_UPDATE_MESSAGE: 6, + UPDATE_MESSAGE: 7, + APPLICATION_COMMAND_AUTOCOMPLETE_RESULT: 8 +}; + +module.exports.InteractionTypes = { + PING: 1, + APPLICATION_COMMAND: 2, + MESSAGE_COMPONENT: 3, + APPLICATION_COMMAND_AUTOCOMPLETE: 4 +}; + +module.exports.InviteTargetTypes = { + STREAM: 1, + EMBEDDED_APPLICATION: 2 +}; + +module.exports.MFALevels = { + NONE: 0, + ELEVATED: 1 }; module.exports.MessageActivityFlags = { @@ -221,6 +291,13 @@ module.exports.MessageActivityFlags = { EMBEDDED: 1 << 8 }; +module.exports.MessageActivityTypes = { + JOIN: 1, + SPECTATE: 2, + LISTEN: 3, + JOIN_REQUEST: 5 +}; + module.exports.MessageFlags = { CROSSPOSTED: 1 << 0, IS_CROSSPOST: 1 << 1, @@ -259,134 +336,208 @@ module.exports.MessageTypes = { CONTEXT_MENU_COMMAND: 23 }; -module.exports.ChannelTypes = { - GUILD_TEXT: 0, - DM: 1, - GUILD_VOICE: 2, - GROUP_DM: 3, - GUILD_CATEGORY: 4, - GUILD_NEWS: 5, - GUILD_STORE: 6, - GUILD_NEWS_THREAD: 10, - GUILD_PUBLIC_THREAD: 11, - GUILD_PRIVATE_THREAD: 12, - GUILD_STAGE: 13 +module.exports.PermissionOverwriteTypes = { + ROLE: 0, + USER: 1 }; -module.exports.UserFlags = { - NONE: 0, - DISCORD_EMPLOYEE: 1 << 0, - PARTNERED_SERVER_OWNER: 1 << 1, DISCORD_PARTNER: 1 << 1, // [DEPRECATED] - HYPESQUAD_EVENTS: 1 << 2, - BUG_HUNTER_LEVEL_1: 1 << 3, - HOUSE_BRAVERY: 1 << 6, - HOUSE_BRILLIANCE: 1 << 7, - HOUSE_BALANCE: 1 << 8, - EARLY_SUPPORTER: 1 << 9, - TEAM_USER: 1 << 10, - SYSTEM: 1 << 12, - BUG_HUNTER_LEVEL_2: 1 << 14, - VERIFIED_BOT: 1 << 16, - EARLY_VERIFIED_BOT_DEVELOPER: 1 << 17, VERIFIED_BOT_DEVELOPER: 1 << 17, // [DEPRECATED] - DISCORD_CERTIFIED_MODERATOR: 1 << 18 +const Permissions = { + createInstantInvite: 1n, + kickMembers: 1n << 1n, + banMembers: 1n << 2n, + administrator: 1n << 3n, + manageChannels: 1n << 4n, + manageGuild: 1n << 5n, + addReactions: 1n << 6n, + viewAuditLog: 1n << 7n, viewAuditLogs: 1n << 7n, // [DEPRECATED] + voicePrioritySpeaker: 1n << 8n, + voiceStream: 1n << 9n, stream: 1n << 9n, // [DEPRECATED] + viewChannel: 1n << 10n, readMessages: 1n << 10n, // [DEPRECATED] + sendMessages: 1n << 11n, + sendTTSMessages: 1n << 12n, + manageMessages: 1n << 13n, + embedLinks: 1n << 14n, + attachFiles: 1n << 15n, + readMessageHistory: 1n << 16n, + mentionEveryone: 1n << 17n, + useExternalEmojis: 1n << 18n, externalEmojis: 1n << 18n, // [DEPRECATED] + viewGuildInsights: 1n << 19n, + voiceConnect: 1n << 20n, + voiceSpeak: 1n << 21n, + voiceMuteMembers: 1n << 22n, + voiceDeafenMembers: 1n << 23n, + voiceMoveMembers: 1n << 24n, + voiceUseVAD: 1n << 25n, + changeNickname: 1n << 26n, + manageNicknames: 1n << 27n, + manageRoles: 1n << 28n, + manageWebhooks: 1n << 29n, + manageEmojisAndStickers: 1n << 30n, manageEmojis: 1n << 30n, // [DEPRECATED] + useApplicationCommands: 1n << 31n, useSlashCommands: 1n << 31n, // [DEPRECATED] + voiceRequestToSpeak: 1n << 32n, + manageEvents: 1n << 33n, + manageThreads: 1n << 34n, + createPublicThreads: 1n << 35n, + createPrivateThreads: 1n << 36n, + useExternalStickers: 1n << 37n, + sendMessagesInThreads: 1n << 38n, + startEmbeddedActivities: 1n << 39n }; +Permissions.allGuild = Permissions.kickMembers + | Permissions.banMembers + | Permissions.administrator + | Permissions.manageChannels + | Permissions.manageGuild + | Permissions.viewAuditLog + | Permissions.viewGuildInsights + | Permissions.changeNickname + | Permissions.manageNicknames + | Permissions.manageRoles + | Permissions.manageWebhooks + | Permissions.manageEmojisAndStickers; +Permissions.allText = Permissions.createInstantInvite + | Permissions.manageChannels + | Permissions.addReactions + | Permissions.viewChannel + | Permissions.sendMessages + | Permissions.sendTTSMessages + | Permissions.manageMessages + | Permissions.embedLinks + | Permissions.attachFiles + | Permissions.readMessageHistory + | Permissions.mentionEveryone + | Permissions.useExternalEmojis + | Permissions.manageRoles + | Permissions.manageWebhooks + | Permissions.useApplicationCommands + | Permissions.createPublicThreads + | Permissions.createPrivateThreads + | Permissions.useExternalStickers + | Permissions.sendMessagesInThreads; +Permissions.allVoice = Permissions.createInstantInvite + | Permissions.manageChannels + | Permissions.voicePrioritySpeaker + | Permissions.voiceStream + | Permissions.viewChannel + | Permissions.voiceConnect + | Permissions.voiceSpeak + | Permissions.voiceMuteMembers + | Permissions.voiceDeafenMembers + | Permissions.voiceMoveMembers + | Permissions.voiceUseVAD + | Permissions.manageRoles + | Permissions.voiceRequestToSpeak + | Permissions.startEmbeddedActivities; +Permissions.all = Permissions.allGuild | Permissions.allText | Permissions.allVoice; +module.exports.Permissions = Permissions; -const Intents = { - guilds: 1 << 0, - guildMembers: 1 << 1, - guildBans: 1 << 2, - guildEmojisAndStickers: 1 << 3, guildEmojis: 1 << 3, // [DEPRECATED] - guildIntegrations: 1 << 4, - guildWebhooks: 1 << 5, - guildInvites: 1 << 6, - guildVoiceStates: 1 << 7, - guildPresences: 1 << 8, - guildMessages: 1 << 9, - guildMessageReactions: 1 << 10, - guildMessageTyping: 1 << 11, - directMessages: 1 << 12, - directMessageReactions: 1 << 13, - directMessageTyping: 1 << 14 +module.exports.PremiumTiers = { + NONE: 0, + TIER_1: 1, + TIER_2: 2, + TIER_3: 3 }; -Intents.allNonPrivileged = Intents.guilds - | Intents.guildBans - | Intents.guildEmojisAndStickers - | Intents.guildIntegrations - | Intents.guildWebhooks - | Intents.guildInvites - | Intents.guildVoiceStates - | Intents.guildMessages - | Intents.guildMessageReactions - | Intents.guildMessageTyping - | Intents.directMessages - | Intents.directMessageReactions - | Intents.directMessageTyping; -Intents.allPrivileged = Intents.guildMembers - | Intents.guildPresences; -Intents.all = Intents.allNonPrivileged | Intents.allPrivileged; -module.exports.Intents = Intents; -module.exports.StickerTypes = { - STANDARD: 1, - GUILD: 2 +module.exports.PremiumTypes = { + NONE: 0, + NITRO_CLASSIC: 1, + NITRO: 2 +}; + +module.exports.StageInstancePrivacyLevel = { + PUBLIC: 1, + GUILD_ONLY: 2 }; module.exports.StickerFormats = { - PNG: 1, - APNG: 2, + PNG: 1, + APNG: 2, LOTTIE: 3 }; -module.exports.InteractionTypes = { - PING: 1, - APPLICATION_COMMAND: 2, - MESSAGE_COMPONENT: 3, - APPLICATION_COMMAND_AUTOCOMPLETE: 4 +module.exports.StickerTypes = { + STANDARD: 1, + GUILD: 2 }; -module.exports.InteractionResponseTypes = { - PONG: 1, - CHANNEL_MESSAGE_WITH_SOURCE: 4, - DEFERRED_CHANNEL_MESSAGE_WITH_SOURCE: 5, - DEFERRED_UPDATE_MESSAGE: 6, - UPDATE_MESSAGE: 7, - APPLICATION_COMMAND_AUTOCOMPLETE_RESULT: 8 +module.exports.SystemChannelFlags = { + SUPPRESS_JOIN_NOTIFICATIONS: 1 << 0, + SUPPRESS_PREMIUM_SUBSCRIPTIONS: 1 << 1, + SUPPRESS_GUILD_REMINDER_NOTIFICATIONS: 1 << 2, + SUPPRESS_JOIN_NOTIFICATION_REPLIES : 1 << 3 }; -module.exports.ApplicationCommandOptionTypes = { - SUB_COMMAND: 1, - SUB_COMMAND_GROUP: 2, - STRING: 3, - INTEGER: 4, - BOOLEAN: 5, - USER: 6, - CHANNEL: 7, - ROLE: 8, - MENTIONABLE: 9, - NUMBER: 10 +module.exports.SystemJoinMessages = [ + "%user% joined the party.", + "%user% is here.", + "Welcome, %user%. We hope you brought pizza.", + "A wild %user% appeared.", + "%user% just landed.", + "%user% just slid into the server.", + "%user% just showed up!", + "Welcome %user%. Say hi!", + "%user% hopped into the server.", + "Everyone welcome %user%!", + "Glad you're here, %user%.", + "Good to see you, %user%.", + "Yay you made it, %user%!" +]; + +module.exports.ThreadMemberFlags = { + HAS_INTERACTED: 1 << 0, + ALL_MESSAGES: 1 << 1, + ONLY_MENTIONS: 1 << 2, + NO_MESSAGES: 1 << 3 }; -module.exports.ApplicationCommandPermissionTypes = { - ROLE: 1, - USER: 2 +module.exports.UserFlags = { + NONE: 0, + DISCORD_STAFF: 1 << 0, DISCORD_EMPLOYEE: 1 << 0, + PARTNER: 1 << 1, PARTNERED_SERVER_OWNER: 1 << 1, DISCORD_PARTNER: 1 << 1, // [DEPRECATED] + HYPESQUAD: 1 << 2, HYPESQUAD_EVENTS: 1 << 2, + BUG_HUNTER_LEVEL_1: 1 << 3, + HOUSE_BRAVERY: 1 << 6, HYPESQUAD_ONLINE_HOUSE_1: 1 << 6, + HOUSE_BRILLIANCE: 1 << 7, HYPESQUAD_ONLINE_HOUSE_2: 1 << 7, + HOUSE_BALANCE: 1 << 8, HYPESQUAD_ONLINE_HOUSE_3: 1 << 8, + PREMIUM_EARLY_SUPPORTER: 1 << 9, EARLY_SUPPORTER: 1 << 9, + TEAM_PSEUDO_USER: 1 << 10, TEAM_USER: 1 << 10, + SYSTEM: 1 << 12, + BUG_HUNTER_LEVEL_2: 1 << 14, + VERIFIED_BOT: 1 << 16, + VERIFIED_DEVELOPER: 1 << 17, EARLY_VERIFIED_BOT_DEVELOPER: 1 << 17, VERIFIED_BOT_DEVELOPER: 1 << 17, + CERTIFIED_MODERATOR: 1 << 18, DISCORD_CERTIFIED_MODERATOR: 1 << 18, + BOT_HTTP_INTERACTIONS: 1 << 19 }; -module.exports.ApplicationCommandTypes = { - CHAT_INPUT: 1, - USER: 2, - MESSAGE: 3 +module.exports.VerificationLevels = { + NONE: 0, + LOW: 1, + MEDIUM: 2, + HIGH: 3, + VERY_HIGH: 4 }; -module.exports.ComponentTypes = { - ACTION_ROW: 1, - BUTTON: 2, - SELECT_MENU: 3 +module.exports.VideoQualityModes = { + AUTO: 1, + FULL: 2 }; -module.exports.ButtonStyles = { - PRIMARY: 1, - SECONDARY: 2, - SUCCESS: 3, - DANGER: 4, - LINK: 5 +module.exports.VoiceOPCodes = { + IDENTIFY: 0, + SELECT_PROTOCOL: 1, + READY: 2, + HEARTBEAT: 3, + SESSION_DESCRIPTION: 4, + SPEAKING: 5, + HEARTBEAT_ACK: 6, + RESUME: 7, + HELLO: 8, + RESUMED: 9, + CLIENT_DISCONNECT: 13, DISCONNECT: 13 // [DEPRECATED] +}; + +module.exports.WebhookTypes = { + INCOMING: 1, + CHANNEL_FOLLOWER: 2, + APPLICATION: 3 }; diff --git a/lib/gateway/Shard.js b/lib/gateway/Shard.js index 607214a0e..d22a53e4f 100644 --- a/lib/gateway/Shard.js +++ b/lib/gateway/Shard.js @@ -397,7 +397,7 @@ class Shard extends EventEmitter { } switch(packet.op) { - case GatewayOPCodes.EVENT: { + case GatewayOPCodes.DISPATCH: { if(!this.client.options.disableEvents[packet.t]) { this.wsEvent(packet); } @@ -486,7 +486,7 @@ class Shard extends EventEmitter { if(opts.user_ids && opts.user_ids.length > 100) { throw new Error("Cannot request more than 100 users by their ID"); } - this.sendWS(GatewayOPCodes.GET_GUILD_MEMBERS, opts); + this.sendWS(GatewayOPCodes.REQUEST_GUILD_MEMBERS, opts); return new Promise((res) => this.requestMembersPromise[opts.nonce] = { res: res, received: 0, @@ -558,7 +558,7 @@ class Shard extends EventEmitter { } sendStatusUpdate() { - this.sendWS(GatewayOPCodes.STATUS_UPDATE, { + this.sendWS(GatewayOPCodes.PRESENCE_UPDATE, { activities: this.presence.activities, afk: !!this.presence.afk, // For push notifications since: this.presence.status === "idle" ? Date.now() : 0, @@ -580,7 +580,7 @@ class Shard extends EventEmitter { this.emit("debug", JSON.stringify({op: op, d: _data}), this.id); } }; - if(op === GatewayOPCodes.STATUS_UPDATE) { + if(op === GatewayOPCodes.PRESENCE_UPDATE) { ++waitFor; this.presenceUpdateBucket.queue(func, priority); } @@ -749,7 +749,7 @@ class Shard extends EventEmitter { packet.d.member.id = packet.d.user_id; member = guild.members.add(packet.d.member, guild); - const channel = guild.channels.find((channel) => (channel.type === ChannelTypes.GUILD_VOICE || channel.type === ChannelTypes.GUILD_STAGE) && channel.voiceMembers.get(packet.d.id)); + const channel = guild.channels.find((channel) => (channel.type === ChannelTypes.GUILD_VOICE || channel.type === ChannelTypes.GUILD_STAGE_VOICE) && channel.voiceMembers.get(packet.d.id)); if(channel) { channel.voiceMembers.remove(packet.d); this.emit("debug", "VOICE_STATE_UPDATE member null but in channel: " + packet.d.id, this.id); @@ -769,12 +769,12 @@ class Shard extends EventEmitter { let oldChannel, newChannel; if(oldChannelID) { oldChannel = guild.channels.get(oldChannelID); - if(oldChannel && oldChannel.type !== ChannelTypes.GUILD_VOICE && oldChannel.type !== ChannelTypes.GUILD_STAGE) { + if(oldChannel && oldChannel.type !== ChannelTypes.GUILD_VOICE && oldChannel.type !== ChannelTypes.GUILD_STAGE_VOICE) { this.emit("warn", "Old channel not a recognized voice channel: " + oldChannelID, this.id); oldChannel = null; } } - if(packet.d.channel_id && (newChannel = guild.channels.get(packet.d.channel_id)) && (newChannel.type === ChannelTypes.GUILD_VOICE || newChannel.type === ChannelTypes.GUILD_STAGE)) { // Welcome to Discord, where one can "join" text channels + if(packet.d.channel_id && (newChannel = guild.channels.get(packet.d.channel_id)) && (newChannel.type === ChannelTypes.GUILD_VOICE || newChannel.type === ChannelTypes.GUILD_STAGE_VOICE)) { // Welcome to Discord, where one can "join" text channels if(oldChannel) { /** * Fired when a guild member switches voice channels @@ -1611,7 +1611,7 @@ class Shard extends EventEmitter { if(!channel) { break; } - if(channel.type === ChannelTypes.GUILD_VOICE || channel.type === ChannelTypes.GUILD_STAGE) { + if(channel.type === ChannelTypes.GUILD_VOICE || channel.type === ChannelTypes.GUILD_STAGE_VOICE) { channel.voiceMembers.forEach((member) => { channel.voiceMembers.remove(member); this.emit("voiceChannelLeave", member, channel); diff --git a/lib/structures/Channel.js b/lib/structures/Channel.js index a2a8c062c..323d8c546 100644 --- a/lib/structures/Channel.js +++ b/lib/structures/Channel.js @@ -54,7 +54,7 @@ class Channel extends Base { case ChannelTypes.GUILD_PRIVATE_THREAD: { return new PrivateThreadChannel(data, client); } - case ChannelTypes.GUILD_STAGE: { + case ChannelTypes.GUILD_STAGE_VOICE: { return new StageChannel(data, client); } } diff --git a/lib/structures/ThreadMember.js b/lib/structures/ThreadMember.js index 7b69d425d..574f79440 100644 --- a/lib/structures/ThreadMember.js +++ b/lib/structures/ThreadMember.js @@ -4,6 +4,7 @@ const Base = require("./Base"); /** * Represents a thread member +* @prop {Number} flags The user-thread settings of this member * @prop {Member?} guildMember The guild member that this thread member belongs to. This will never be present when fetching over REST * @prop {String} id The ID of the thread member * @prop {Number} joinTimestamp Timestamp of when the member joined the thread @@ -13,6 +14,7 @@ class ThreadMember extends Base { constructor(data, client) { super(data.user_id); this._client = client; + this.flags = data.flags; this.threadID = data.thread_id || data.id; // Thanks Discord this.joinTimestamp = Date.parse(data.join_timestamp); diff --git a/lib/voice/VoiceConnection.js b/lib/voice/VoiceConnection.js index e0eb012e1..3578f14d9 100644 --- a/lib/voice/VoiceConnection.js +++ b/lib/voice/VoiceConnection.js @@ -317,7 +317,7 @@ class VoiceConnection extends EventEmitter { this.heartbeat(); break; } - case VoiceOPCodes.DISCONNECT: { + case VoiceOPCodes.CLIENT_DISCONNECT: { if(this.opus) { // opusscript requires manual cleanup if(this.opus[packet.d.user_id] && this.opus[packet.d.user_id].delete) {