Skip to main content
Module

x/discord_api_types/v8/gateway/mod.ts

Up to date Discord API Typings, versioned by the API version
Go to Latest
File
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601
/** * Types extracted from https://discord.com/developers/docs/topics/gateway */
import type { Snowflake } from '../../common/mod.ts';import type { APIApplication, APIApplicationCommand, APIApplicationCommandInteraction, APIChannel, APIEmoji, APIGuild, APIGuildMember, APIMessage, APIRole, APIUnavailableGuild, APIUser, GatewayActivity, GatewayPresenceUpdate as RawGatewayPresenceUpdate, GatewayVoiceState, InviteTargetUserType, PresenceUpdateStatus,} from '../payloads/mod.ts';
export const GatewayVersion = '8';
/** * https://discord.com/developers/docs/topics/opcodes-and-status-codes#gateway-gateway-opcodes */export enum GatewayOPCodes { /** * An event was dispatched */ Dispatch, /** * A bidirectional opcode to maintain an active gateway connection. * Fired periodically by the client, or fired by the gateway to request an immediate heartbeat from the client. */ Heartbeat, /** * Starts a new session during the initial handshake */ Identify, /** * Update the client's presence */ PresenceUpdate, /** * Used to join/leave or move between voice channels */ VoiceStateUpdate, /** * Resume a previous session that was disconnected */ Resume = 6, /** * You should attempt to reconnect and resume immediately */ Reconnect, /** * Request information about offline guild members in a large guild */ RequestGuildMembers, /** * The session has been invalidated. You should reconnect and identify/resume accordingly */ InvalidSession, /** * Sent immediately after connecting, contains the `heartbeat_interval` to use */ Hello, /** * Sent in response to receiving a heartbeat to acknowledge that it has been received */ HeartbeatAck,}
/** * https://discord.com/developers/docs/topics/opcodes-and-status-codes#gateway-gateway-close-event-codes */export enum GatewayCloseCodes { /** * We're not sure what went wrong. Try reconnecting? */ UnknownError = 4000, /** * You sent an invalid Gateway opcode or an invalid payload for an opcode. Don't do that! * * See https://discord.com/developers/docs/topics/gateway#payloads-and-opcodes */ UnknownOpCode, /** * You sent an invalid payload to us. Don't do that! * * See https://discord.com/developers/docs/topics/gateway#sending-payloads */ DecodeError, /** * You sent us a payload prior to identifying * * See https://discord.com/developers/docs/topics/gateway#identify */ NotAuthenticated, /** * The account token sent with your identify payload is incorrect * * See https://discord.com/developers/docs/topics/gateway#identify */ AuthenticationFailed, /** * You sent more than one identify payload. Don't do that! */ AlreadyAuthenticated, /** * The sequence sent when resuming the session was invalid. Reconnect and start a new session * * See https://discord.com/developers/docs/topics/gateway#resume */ InvalidSeq = 4007, /** * Woah nelly! You're sending payloads to us too quickly. Slow it down! You will be disconnected on receiving this */ RateLimited, /** * Your session timed out. Reconnect and start a new one */ SessionTimedOut, /** * You sent us an invalid shard when identifying * * See https://discord.com/developers/docs/topics/gateway#sharding */ InvalidShard, /** * The session would have handled too many guilds - you are required to shard your connection in order to connect * * See https://discord.com/developers/docs/topics/gateway#sharding */ ShardingRequired, /** * You sent an invalid version for the gateway */ InvalidAPIVersion, /** * You sent an invalid intent for a Gateway Intent. You may have incorrectly calculated the bitwise value * * See https://discord.com/developers/docs/topics/gateway#gateway-intents */ InvalidIntents, /** * You sent a disallowed intent for a Gateway Intent. You may have tried to specify an intent that you have not * enabled or are not whitelisted for * * See https://discord.com/developers/docs/topics/gateway#gateway-intents * * See https://discord.com/developers/docs/topics/gateway#privileged-intents */ DisallowedIntents,}
/** * https://discord.com/developers/docs/topics/opcodes-and-status-codes#voice-voice-opcodes */export enum VoiceOPCodes { /** * Begin a voice websocket connection */ Identify, /** * Select the voice protocol */ SelectProtocol, /** * Complete the websocket handshake */ Ready, /** * Keep the websocket connection alive */ Heartbeat, /** * Describe the session */ SessionDescription, /** * Indicate which users are speaking */ Speaking, /** * Sent to acknowledge a received client heartbeat */ HeartbeatAck, /** * Resume a connection */ Resume, /** * Time to wait between sending heartbeats in milliseconds */ Hello, /** * Acknowledge a successful session resume */ Resumed, /** * A client has connected to the voice channel */ ClientConnect = 12, /** * A client has disconnected from the voice channel */ ClientDisconnect,}
/** * https://discord.com/developers/docs/topics/opcodes-and-status-codes#voice-voice-close-event-codes */export enum VoiceCloseCodes { /** * You sent an invalid opcode */ UnknownOpCode = 4001, /** * You sent a invalid payload in your identifying to the Gateway */ FailedToDecode, /** * You sent a payload before identifying with the Gateway */ NotAuthenticated, /** * The token you sent in your identify payload is incorrect */ AuthenticationFailed, /** * You sent more than one identify payload. Stahp */ AlreadyAuthenticated, /** * Your session is no longer valid */ SessionNoLongerValid, /** * Your session has timed out */ SessionTimeout = 4009, /** * We can't find the server you're trying to connect to */ ServerNotFound = 4011, /** * We didn't recognize the protocol you sent */ UnknownProtocol, /** * Either the channel was deleted or you were kicked. Should not reconnect */ Disconnected = 4014, /** * The server crashed. Our bad! Try resuming */ VoiceServerCrashed, /** * We didn't recognize your encryption */ UnknownEncryptionMode,}
/** * https://discord.com/developers/docs/topics/gateway#list-of-intents */export enum GatewayIntentBits { GUILDS = 1 << 0, GUILD_MEMBERS = 1 << 1, GUILD_BANS = 1 << 2, GUILD_EMOJIS = 1 << 3, GUILD_INTEGRATIONS = 1 << 4, GUILD_WEBHOOKS = 1 << 5, GUILD_INVITES = 1 << 6, GUILD_VOICE_STATES = 1 << 7, GUILD_PRESENCES = 1 << 8, GUILD_MESSAGES = 1 << 9, GUILD_MESSAGE_REACTIONS = 1 << 10, GUILD_MESSAGE_TYPING = 1 << 11, DIRECT_MESSAGES = 1 << 12, DIRECT_MESSAGE_REACTIONS = 1 << 13, DIRECT_MESSAGE_TYPING = 1 << 14,}
/** * https://discord.com/developers/docs/topics/gateway#commands-and-events-gateway-events */export enum GatewayDispatchEvents { ApplicationCommandCreate = 'APPLICATION_COMMAND_CREATE', ApplicationCommandUpdate = 'APPLICATION_COMMAND_UPDATE', ApplicationCommandDelete = 'APPLICATION_COMMAND_DELETE', ChannelCreate = 'CHANNEL_CREATE', ChannelDelete = 'CHANNEL_DELETE', ChannelPinsUpdate = 'CHANNEL_PINS_UPDATE', ChannelUpdate = 'CHANNEL_UPDATE', GuildBanAdd = 'GUILD_BAN_ADD', GuildBanRemove = 'GUILD_BAN_REMOVE', GuildCreate = 'GUILD_CREATE', GuildDelete = 'GUILD_DELETE', GuildEmojisUpdate = 'GUILD_EMOJIS_UPDATE', GuildIntegrationsUpdate = 'GUILD_INTEGRATIONS_UPDATE', GuildMemberAdd = 'GUILD_MEMBER_ADD', GuildMemberRemove = 'GUILD_MEMBER_REMOVE', GuildMembersChunk = 'GUILD_MEMBERS_CHUNK', GuildMemberUpdate = 'GUILD_MEMBER_UPDATE', GuildRoleCreate = 'GUILD_ROLE_CREATE', GuildRoleDelete = 'GUILD_ROLE_DELETE', GuildRoleUpdate = 'GUILD_ROLE_UPDATE', GuildUpdate = 'GUILD_UPDATE', InteractionCreate = 'INTERACTION_CREATE', InviteCreate = 'INVITE_CREATE', InviteDelete = 'INVITE_DELETE', MessageCreate = 'MESSAGE_CREATE', MessageDelete = 'MESSAGE_DELETE', MessageDeleteBulk = 'MESSAGE_DELETE_BULK', MessageReactionAdd = 'MESSAGE_REACTION_ADD', MessageReactionRemove = 'MESSAGE_REACTION_REMOVE', MessageReactionRemoveAll = 'MESSAGE_REACTION_REMOVE_ALL', MessageReactionRemoveEmoji = 'MESSAGE_REACTION_REMOVE_EMOJI', MessageUpdate = 'MESSAGE_UPDATE', PresenceUpdate = 'PRESENCE_UPDATE', Ready = 'READY', Resumed = 'RESUMED', TypingStart = 'TYPING_START', UserUpdate = 'USER_UPDATE', VoiceServerUpdate = 'VOICE_SERVER_UPDATE', VoiceStateUpdate = 'VOICE_STATE_UPDATE', WebhooksUpdate = 'WEBHOOKS_UPDATE',}
export type GatewaySendPayload = | GatewayHeartbeat | GatewayIdentify | GatewayUpdatePresence | GatewayVoiceStateUpdate | GatewayResume | GatewayRequestGuildMembers;
export type GatewayReceivePayload = | GatewayHello | GatewayHeartbeatRequest | GatewayHeartbeatAck | GatewayInvalidSession | GatewayReconnect | GatewayDispatchPayload;
export type GatewayDispatchPayload = | GatewayChannelModifyDispatch | GatewayChannelPinsUpdateDispatch | GatewayGuildBanModifyDispatch | GatewayGuildDeleteDispatch | GatewayGuildEmojisUpdateDispatch | GatewayGuildIntegrationsUpdateDispatch | GatewayGuildMemberAddDispatch | GatewayGuildMemberRemoveDispatch | GatewayGuildMembersChunkDispatch | GatewayGuildMemberUpdateDispatch | GatewayGuildModifyDispatch | GatewayGuildRoleDeleteDispatch | GatewayGuildRoleModifyDispatch | GatewayInteractionCreateDispatch | GatewayInviteCreateDispatch | GatewayInviteDeleteDispatch | GatewayMessageCreateDispatch | GatewayMessageDeleteBulkDispatch | GatewayMessageDeleteDispatch | GatewayMessageReactionAddDispatch | GatewayMessageReactionRemoveAllDispatch | GatewayMessageReactionRemoveDispatch | GatewayMessageReactionRemoveEmojiDispatch | GatewayMessageUpdateDispatch | GatewayPresenceUpdateDispatch | GatewayReadyDispatch | GatewayResumedDispatch | GatewayTypingStartDispatch | GatewayUserUpdateDispatch | GatewayVoiceServerUpdateDispatch | GatewayVoiceStateUpdateDispatch | GatewayWebhooksUpdateDispatch;
// #region Dispatch Payloads
/** * https://discord.com/developers/docs/topics/gateway#application-command-create * https://discord.com/developers/docs/topics/gateway#application-command-update * https://discord.com/developers/docs/topics/gateway#application-command-delete */export type GatewayApplicationCommandModifyDispatch = DataPayload< | GatewayDispatchEvents.ApplicationCommandCreate | GatewayDispatchEvents.ApplicationCommandUpdate | GatewayDispatchEvents.ApplicationCommandDelete, GatewayApplicationCommandModifyDispatchData>;
/** * https://discord.com/developers/docs/topics/gateway#application-command-create * https://discord.com/developers/docs/topics/gateway#application-command-update * https://discord.com/developers/docs/topics/gateway#application-command-delete */export interface GatewayApplicationCommandModifyDispatchData extends APIApplicationCommand { guild_id?: string;}
/** * https://discord.com/developers/docs/topics/gateway#application-command-create */export type GatewayApplicationCommandCreateDispatch = GatewayApplicationCommandModifyDispatch;
/** * https://discord.com/developers/docs/topics/gateway#application-command-create */export type GatewayApplicationCommandCreateDispatchData = GatewayApplicationCommandModifyDispatchData;
/** * https://discord.com/developers/docs/topics/gateway#application-command-update */export type GatewayApplicationCommandUpdateDispatch = GatewayApplicationCommandModifyDispatch;
/** * https://discord.com/developers/docs/topics/gateway#application-command-update */export type GatewayApplicationCommandUpdateDispatchData = GatewayApplicationCommandModifyDispatchData;
/** * https://discord.com/developers/docs/topics/gateway#application-command-delete */export type GatewayApplicationCommandDeleteDispatch = GatewayApplicationCommandModifyDispatch;
/** * https://discord.com/developers/docs/topics/gateway#application-command-delete */export type GatewayApplicationCommandDeleteDispatchData = GatewayApplicationCommandModifyDispatchData;
/** * https://discord.com/developers/docs/topics/gateway#hello */export interface GatewayHello extends NonDispatchPayload { op: GatewayOPCodes.Hello; d: GatewayHelloData;}
/** * https://discord.com/developers/docs/topics/gateway#hello */export interface GatewayHelloData { /** * The interval (in milliseconds) the client should heartbeat with */ heartbeat_interval: number;}
/** * https://discord.com/developers/docs/topics/gateway#heartbeating */export interface GatewayHeartbeatRequest extends NonDispatchPayload { op: GatewayOPCodes.Heartbeat; d: never;}
/** * https://discord.com/developers/docs/topics/gateway#heartbeating-example-gateway-heartbeat-ack */export interface GatewayHeartbeatAck extends NonDispatchPayload { op: GatewayOPCodes.HeartbeatAck; d: never;}
/** * https://discord.com/developers/docs/topics/gateway#invalid-session */export interface GatewayInvalidSession extends NonDispatchPayload { op: GatewayOPCodes.InvalidSession; d: GatewayInvalidSessionData;}
/** * https://discord.com/developers/docs/topics/gateway#invalid-session */export type GatewayInvalidSessionData = boolean;
/** * https://discord.com/developers/docs/topics/gateway#reconnect */export interface GatewayReconnect extends NonDispatchPayload { op: GatewayOPCodes.Reconnect; d: never;}
/** * https://discord.com/developers/docs/topics/gateway#ready */export type GatewayReadyDispatch = DataPayload<GatewayDispatchEvents.Ready, GatewayReadyDispatchData>;
/** * https://discord.com/developers/docs/topics/gateway#ready */export interface GatewayReadyDispatchData { /** * Gateway version * * See https://discord.com/developers/docs/topics/gateway#gateways-gateway-versions */ v: number; /** * Information about the user including email * * See https://discord.com/developers/docs/resources/user#user-object */ user: APIUser; /** * Empty array */ private_channels: []; /** * The guilds the user is in * * See https://discord.com/developers/docs/resources/guild#unavailable-guild-object */ guilds: APIUnavailableGuild[]; /** * Used for resuming connections */ session_id: string; /** * The shard information associated with this session, if sent when identifying * * See https://discord.com/developers/docs/topics/gateway#sharding */ shard?: [shard_id: number, shard_count: number]; /** * Contains `id` and `flags` * * See https://discord.com/developers/docs/topics/oauth2#application-object */ application: Pick<APIApplication, 'id' | 'flags'>;}
/** * https://discord.com/developers/docs/topics/gateway#resumed */export type GatewayResumedDispatch = DataPayload<GatewayDispatchEvents.Resumed, never>;
/** * https://discord.com/developers/docs/topics/gateway#channel-create * https://discord.com/developers/docs/topics/gateway#channel-update * https://discord.com/developers/docs/topics/gateway#channel-delete */export type GatewayChannelModifyDispatch = DataPayload< GatewayDispatchEvents.ChannelCreate | GatewayDispatchEvents.ChannelDelete | GatewayDispatchEvents.ChannelUpdate, GatewayChannelModifyDispatchData>;
/** * https://discord.com/developers/docs/topics/gateway#channel-create * https://discord.com/developers/docs/topics/gateway#channel-update * https://discord.com/developers/docs/topics/gateway#channel-delete */export type GatewayChannelModifyDispatchData = APIChannel;
/** * https://discord.com/developers/docs/topics/gateway#channel-create */export type GatewayChannelCreateDispatch = GatewayChannelModifyDispatch;
/** * https://discord.com/developers/docs/topics/gateway#channel-create */export type GatewayChannelCreateDispatchData = GatewayChannelModifyDispatchData;
/** * https://discord.com/developers/docs/topics/gateway#channel-update */export type GatewayChannelUpdateDispatch = GatewayChannelModifyDispatch;
/** * https://discord.com/developers/docs/topics/gateway#channel-update */export type GatewayChannelUpdateDispatchData = GatewayChannelModifyDispatchData;
/** * https://discord.com/developers/docs/topics/gateway#channel-delete */export type GatewayChannelDeleteDispatch = GatewayChannelModifyDispatch;
/** * https://discord.com/developers/docs/topics/gateway#channel-delete */export type GatewayChannelDeleteDispatchData = GatewayChannelModifyDispatchData;
/** * https://discord.com/developers/docs/topics/gateway#channel-pins-update */export type GatewayChannelPinsUpdateDispatch = DataPayload< GatewayDispatchEvents.ChannelPinsUpdate, GatewayChannelPinsUpdateDispatchData>;
/** * https://discord.com/developers/docs/topics/gateway#channel-pins-update */export interface GatewayChannelPinsUpdateDispatchData { /** * The id of the guild */ guild_id?: Snowflake; /** * The id of the channel */ channel_id: Snowflake; /** * The time at which the most recent pinned message was pinned */ last_pin_timestamp?: string | null;}
/** * https://discord.com/developers/docs/topics/gateway#guild-create * https://discord.com/developers/docs/topics/gateway#guild-update */export type GatewayGuildModifyDispatch = DataPayload< GatewayDispatchEvents.GuildCreate | GatewayDispatchEvents.GuildUpdate, GatewayGuildModifyDispatchData>;
/** * https://discord.com/developers/docs/topics/gateway#guild-create * https://discord.com/developers/docs/topics/gateway#guild-update */export type GatewayGuildModifyDispatchData = APIGuild;
/** * https://discord.com/developers/docs/topics/gateway#guild-create */export type GatewayGuildCreateDispatch = GatewayGuildModifyDispatch;
/** * https://discord.com/developers/docs/topics/gateway#guild-create */export type GatewayGuildCreateDispatchData = GatewayGuildModifyDispatchData;
/** * https://discord.com/developers/docs/topics/gateway#guild-update */export type GatewayGuildUpdateDispatch = GatewayGuildModifyDispatch;
/** * https://discord.com/developers/docs/topics/gateway#guild-update */export type GatewayGuildUpdateDispatchData = GatewayGuildModifyDispatchData;
/** * https://discord.com/developers/docs/topics/gateway#guild-delete */export type GatewayGuildDeleteDispatch = DataPayload<GatewayDispatchEvents.GuildDelete, GatewayGuildDeleteDispatchData>;
/** * https://discord.com/developers/docs/topics/gateway#guild-delete */export type GatewayGuildDeleteDispatchData = APIUnavailableGuild;
/** * https://discord.com/developers/docs/topics/gateway#guild-ban-add * https://discord.com/developers/docs/topics/gateway#guild-ban-remove */export type GatewayGuildBanModifyDispatch = DataPayload< GatewayDispatchEvents.GuildBanAdd | GatewayDispatchEvents.GuildBanRemove, GatewayGuildBanModifyDispatchData>;
/** * https://discord.com/developers/docs/topics/gateway#guild-ban-add * https://discord.com/developers/docs/topics/gateway#guild-ban-remove */export interface GatewayGuildBanModifyDispatchData { /** * ID of the guild */ guild_id: Snowflake; /** * The banned user * * See https://discord.com/developers/docs/resources/user#user-object */ user: APIUser;}
/** * https://discord.com/developers/docs/topics/gateway#guild-ban-add */export type GatewayGuildBanAddDispatch = GatewayGuildBanModifyDispatch;
/** * https://discord.com/developers/docs/topics/gateway#guild-ban-add */export type GatewayGuildBanAddDispatchData = GatewayGuildBanModifyDispatchData;
/** * https://discord.com/developers/docs/topics/gateway#guild-ban-remove */export type GatewayGuildBanRemoveDispatch = GatewayGuildBanModifyDispatch;
/** * https://discord.com/developers/docs/topics/gateway#guild-ban-remove */export type GatewayGuildBanRemoveDispatchData = GatewayGuildBanModifyDispatchData;
/** * https://discord.com/developers/docs/topics/gateway#guild-emojis-update */export type GatewayGuildEmojisUpdateDispatch = DataPayload< GatewayDispatchEvents.GuildEmojisUpdate, GatewayGuildEmojisUpdateDispatchData>;
/** * https://discord.com/developers/docs/topics/gateway#guild-emojis-update */export interface GatewayGuildEmojisUpdateDispatchData { /** * ID of the guild */ guild_id: Snowflake; /** * Array of emojis * * See https://discord.com/developers/docs/resources/emoji#emoji-object */ emojis: APIEmoji[];}
/** * https://discord.com/developers/docs/topics/gateway#guild-integrations-update */export type GatewayGuildIntegrationsUpdateDispatch = DataPayload< GatewayDispatchEvents.GuildIntegrationsUpdate, GatewayGuildIntegrationsUpdateDispatchData>;
/** * https://discord.com/developers/docs/topics/gateway#guild-integrations-update */export interface GatewayGuildIntegrationsUpdateDispatchData { /** * ID of the guild whose integrations were updated */ guild_id: Snowflake;}
/** * https://discord.com/developers/docs/topics/gateway#guild-member-add */export type GatewayGuildMemberAddDispatch = DataPayload< GatewayDispatchEvents.GuildMemberAdd, GatewayGuildMemberAddDispatchData>;
/** * https://discord.com/developers/docs/topics/gateway#guild-member-add */export interface GatewayGuildMemberAddDispatchData extends APIGuildMember { /** * The id of the guild */ guild_id: Snowflake;}
/** * https://discord.com/developers/docs/topics/gateway#guild-member-remove */export type GatewayGuildMemberRemoveDispatch = DataPayload< GatewayDispatchEvents.GuildMemberRemove, GatewayGuildMemberRemoveDispatchData>;
/** * https://discord.com/developers/docs/topics/gateway#guild-member-remove */export interface GatewayGuildMemberRemoveDispatchData { /** * The id of the guild */ guild_id: Snowflake; /** * The user who was removed * * See https://discord.com/developers/docs/resources/user#user-object */ user: APIUser;}
/** * https://discord.com/developers/docs/topics/gateway#guild-member-update */export type GatewayGuildMemberUpdateDispatch = DataPayload< GatewayDispatchEvents.GuildMemberUpdate, GatewayGuildMemberUpdateDispatchData>;
/** * https://discord.com/developers/docs/topics/gateway#guild-member-update */export type GatewayGuildMemberUpdateDispatchData = Omit<APIGuildMember, 'deaf' | 'mute'> & { /** * The id of the guild */ guild_id: Snowflake;};
/** * https://discord.com/developers/docs/topics/gateway#guild-members-chunk */export type GatewayGuildMembersChunkDispatch = DataPayload< GatewayDispatchEvents.GuildMembersChunk, GatewayGuildMembersChunkDispatchData>;
/** * https://discord.com/developers/docs/topics/gateway#guild-members-chunk */export interface GatewayGuildMembersChunkDispatchData { /** * The id of the guild */ guild_id: Snowflake; /** * Set of guild members * * See https://discord.com/developers/docs/resources/guild#guild-member-object */ members: APIGuildMember[]; /** * The chunk index in the expected chunks for this response (`0 <= chunk_index < chunk_count`) */ chunk_index?: number; /** * The total number of expected chunks for this response */ chunk_count?: number; /** * If passing an invalid id to `REQUEST_GUILD_MEMBERS`, it will be returned here */ not_found?: unknown[]; /** * If passing true to `REQUEST_GUILD_MEMBERS`, presences of the returned members will be here * * See https://discord.com/developers/docs/topics/gateway#presence */ presences?: RawGatewayPresenceUpdate[]; /** * The nonce used in the Guild Members Request * * See https://discord.com/developers/docs/topics/gateway#request-guild-members */ nonce?: string;}
/** * https://discord.com/developers/docs/topics/gateway#guild-role-create * https://discord.com/developers/docs/topics/gateway#guild-role-update */export type GatewayGuildRoleModifyDispatch = DataPayload< GatewayDispatchEvents.GuildRoleCreate | GatewayDispatchEvents.GuildRoleUpdate, GatewayGuildRoleModifyDispatchData>;
/** * https://discord.com/developers/docs/topics/gateway#guild-role-create * https://discord.com/developers/docs/topics/gateway#guild-role-update */export interface GatewayGuildRoleModifyDispatchData { /** * The id of the guild */ guild_id: Snowflake; /** * The role created or updated * * See https://discord.com/developers/docs/topics/permissions#role-object */ role: APIRole;}
/** * https://discord.com/developers/docs/topics/gateway#guild-role-create */export type GatewayGuildRoleCreateDispatch = GatewayGuildRoleModifyDispatch;
/** * https://discord.com/developers/docs/topics/gateway#guild-role-create */export type GatewayGuildRoleCreateDispatchData = GatewayGuildRoleModifyDispatchData;
/** * https://discord.com/developers/docs/topics/gateway#guild-role-update */export type GatewayGuildRoleUpdateDispatch = GatewayGuildRoleModifyDispatch;
/** * https://discord.com/developers/docs/topics/gateway#guild-role-update */export type GatewayGuildRoleUpdateDispatchData = GatewayGuildRoleModifyDispatchData;
/** * https://discord.com/developers/docs/topics/gateway#guild-role-delete */export type GatewayGuildRoleDeleteDispatch = DataPayload< GatewayDispatchEvents.GuildRoleDelete, GatewayGuildRoleDeleteDispatchData>;
/** * https://discord.com/developers/docs/topics/gateway#guild-role-delete */export interface GatewayGuildRoleDeleteDispatchData { /** * The id of the guild */ guild_id: Snowflake; /** * The id of the role */ role_id: Snowflake;}
/** * https://discord.com/developers/docs/topics/gateway#interaction-create */export type GatewayInteractionCreateDispatch = DataPayload< GatewayDispatchEvents.InteractionCreate, GatewayInteractionCreateDispatchData>;
/** * https://discord.com/developers/docs/topics/gateway#interaction-create */export type GatewayInteractionCreateDispatchData = APIApplicationCommandInteraction;
/** * https://discord.com/developers/docs/topics/gateway#invite-create */export type GatewayInviteCreateDispatch = DataPayload< GatewayDispatchEvents.InviteCreate, GatewayInviteCreateDispatchData>;
/** * https://discord.com/developers/docs/topics/gateway#invite-create */export interface GatewayInviteCreateDispatchData { /** * The channel the invite is for */ channel_id: Snowflake; /** * The unique invite code * * See https://discord.com/developers/docs/resources/invite#invite-object */ code: string; /** * The time at which the invite was created */ created_at: number; /** * The guild of the invite */ guild_id?: Snowflake; /** * The user that created the invite * * See https://discord.com/developers/docs/resources/user#user-object */ inviter?: APIUser; /** * How long the invite is valid for (in seconds) */ max_age: number; /** * The maximum number of times the invite can be used */ max_uses: number; /** * The target user for this invite * * See https://discord.com/developers/docs/resources/user#user-object */ target_user?: APIUser; /** * The type of user target for this invite * * See https://discord.com/developers/docs/resources/invite#invite-object-target-user-types */ target_user_type?: InviteTargetUserType; /** * Whether or not the invite is temporary (invited users will be kicked on disconnect unless they're assigned a role) */ temporary: boolean; /** * How many times the invite has been used (always will be `0`) */ uses: 0;}
/** * https://discord.com/developers/docs/topics/gateway#invite-delete */export type GatewayInviteDeleteDispatch = DataPayload< GatewayDispatchEvents.InviteDelete, GatewayInviteDeleteDispatchData>;
/** * https://discord.com/developers/docs/topics/gateway#invite-delete */export interface GatewayInviteDeleteDispatchData { /** * The channel of the invite */ channel_id: Snowflake; /** * The guild of the invite */ guild_id?: Snowflake; /** * The unique invite code * * See https://discord.com/developers/docs/resources/invite#invite-object */ code: string;}
/** * https://discord.com/developers/docs/topics/gateway#message-create */export type GatewayMessageCreateDispatch = DataPayload< GatewayDispatchEvents.MessageCreate, GatewayMessageCreateDispatchData>;
/** * https://discord.com/developers/docs/topics/gateway#message-create */export type GatewayMessageCreateDispatchData = APIMessage;
/** * https://discord.com/developers/docs/topics/gateway#message-update */export type GatewayMessageUpdateDispatch = DataPayload< GatewayDispatchEvents.MessageUpdate, GatewayMessageUpdateDispatchData>;
/** * https://discord.com/developers/docs/topics/gateway#message-update */export type GatewayMessageUpdateDispatchData = { id: Snowflake; channel_id: Snowflake;} & Partial<APIMessage>;
/** * https://discord.com/developers/docs/topics/gateway#message-delete */export type GatewayMessageDeleteDispatch = DataPayload< GatewayDispatchEvents.MessageDelete, GatewayMessageDeleteDispatchData>;
/** * https://discord.com/developers/docs/topics/gateway#message-delete */export interface GatewayMessageDeleteDispatchData { /** * The id of the message */ id: Snowflake; /** * The id of the channel */ channel_id: Snowflake; /** * The id of the guild */ guild_id?: Snowflake;}
/** * https://discord.com/developers/docs/topics/gateway#message-delete-bulk */export type GatewayMessageDeleteBulkDispatch = DataPayload< GatewayDispatchEvents.MessageDeleteBulk, GatewayMessageDeleteBulkDispatchData>;
/** * https://discord.com/developers/docs/topics/gateway#message-delete-bulk */export interface GatewayMessageDeleteBulkDispatchData { /** * The ids of the messages */ ids: Snowflake[]; /** * The id of the channel */ channel_id: Snowflake; /** * The id of the guild */ guild_id?: Snowflake;}
/** * https://discord.com/developers/docs/topics/gateway#message-reaction-add */export type GatewayMessageReactionAddDispatch = ReactionData<GatewayDispatchEvents.MessageReactionAdd>;
/** * https://discord.com/developers/docs/topics/gateway#message-reaction-add */export type GatewayMessageReactionAddDispatchData = GatewayMessageReactionAddDispatch['d'];
/** * https://discord.com/developers/docs/topics/gateway#message-reaction-remove */export type GatewayMessageReactionRemoveDispatch = ReactionData<GatewayDispatchEvents.MessageReactionRemove, 'member'>;
/** * https://discord.com/developers/docs/topics/gateway#message-reaction-remove */export type GatewayMessageReactionRemoveDispatchData = GatewayMessageReactionRemoveDispatch['d'];
/** * https://discord.com/developers/docs/topics/gateway#message-reaction-remove-all */export type GatewayMessageReactionRemoveAllDispatch = DataPayload< GatewayDispatchEvents.MessageReactionRemoveAll, GatewayMessageReactionRemoveAllDispatchData>;
/** * https://discord.com/developers/docs/topics/gateway#message-reaction-remove-all */export type GatewayMessageReactionRemoveAllDispatchData = MessageReactionRemoveData;
/** * https://discord.com/developers/docs/topics/gateway#message-reaction-remove-emoji */export type GatewayMessageReactionRemoveEmojiDispatch = DataPayload< GatewayDispatchEvents.MessageReactionRemoveEmoji, GatewayMessageReactionRemoveEmojiDispatchData>;
/** * https://discord.com/developers/docs/topics/gateway#message-reaction-remove-emoji */export interface GatewayMessageReactionRemoveEmojiDispatchData extends MessageReactionRemoveData { /** * The emoji that was removed */ emoji: APIEmoji;}
/** * https://discord.com/developers/docs/topics/gateway#presence-update */export type GatewayPresenceUpdateDispatch = DataPayload< GatewayDispatchEvents.PresenceUpdate, GatewayPresenceUpdateDispatchData>;
/** * https://discord.com/developers/docs/topics/gateway#presence-update */export type GatewayPresenceUpdateDispatchData = RawGatewayPresenceUpdate;
/** * https://discord.com/developers/docs/topics/gateway#typing-start */export type GatewayTypingStartDispatch = DataPayload<GatewayDispatchEvents.TypingStart, GatewayTypingStartDispatchData>;
/** * https://discord.com/developers/docs/topics/gateway#typing-start */export interface GatewayTypingStartDispatchData { /** * The id of the channel */ channel_id: Snowflake; /** * The id of the guild */ guild_id?: Snowflake; /** * The id of the user */ user_id: Snowflake; /** * Unix time (in seconds) of when the user started typing */ timestamp: number; /** * The member who started typing if this happened in a guild * * See https://discord.com/developers/docs/resources/guild#guild-member-object */ member?: APIGuildMember;}
/** * https://discord.com/developers/docs/topics/gateway#user-update */export type GatewayUserUpdateDispatch = DataPayload<GatewayDispatchEvents.UserUpdate, GatewayUserUpdateDispatchData>;
/** * https://discord.com/developers/docs/topics/gateway#user-update */export type GatewayUserUpdateDispatchData = APIUser;
/** * https://discord.com/developers/docs/topics/gateway#voice-state-update */export type GatewayVoiceStateUpdateDispatch = DataPayload< GatewayDispatchEvents.VoiceStateUpdate, GatewayVoiceStateUpdateDispatchData>;
/** * https://discord.com/developers/docs/topics/gateway#voice-state-update */export type GatewayVoiceStateUpdateDispatchData = GatewayVoiceState;
/** * https://discord.com/developers/docs/topics/gateway#voice-server-update */export type GatewayVoiceServerUpdateDispatch = DataPayload< GatewayDispatchEvents.VoiceServerUpdate, GatewayVoiceServerUpdateDispatchData>;
/** * https://discord.com/developers/docs/topics/gateway#voice-server-update */export interface GatewayVoiceServerUpdateDispatchData { /** * Voice connection token */ token: string; /** * The guild this voice server update is for */ guild_id: Snowflake; /** * The voice server host */ endpoint: string;}
/** * https://discord.com/developers/docs/topics/gateway#webhooks-update */export type GatewayWebhooksUpdateDispatch = DataPayload< GatewayDispatchEvents.WebhooksUpdate, GatewayWebhooksUpdateDispatchData>;
/** * https://discord.com/developers/docs/topics/gateway#webhooks-update */export interface GatewayWebhooksUpdateDispatchData { /** * The id of the guild */ guild_id: Snowflake; /** * The id of the channel */ channel_id: Snowflake;}
// #endregion Dispatch Payloads
// #region Sendable Payloads
/** * https://discord.com/developers/docs/topics/gateway#heartbeating */export interface GatewayHeartbeat { op: GatewayOPCodes.Heartbeat; d: GatewayHeartbeatData;}
/** * https://discord.com/developers/docs/topics/gateway#heartbeating */export type GatewayHeartbeatData = number | null;
/** * https://discord.com/developers/docs/topics/gateway#identify */export interface GatewayIdentify { op: GatewayOPCodes.Identify; d: GatewayIdentifyData;}
/** * https://discord.com/developers/docs/topics/gateway#identify */export interface GatewayIdentifyData { /** * Authentication token */ token: string; /** * Connection properties * * See https://discord.com/developers/docs/topics/gateway#identify-identify-connection-properties */ properties: GatewayIdentifyProperties; /** * Whether this connection supports compression of packets * * @default false */ compress?: boolean; /** * Value between 50 and 250, total number of members where the gateway will stop sending * offline members in the guild member list * * @default 50 */ large_threshold?: number; /** * Used for Guild Sharding * * See https://discord.com/developers/docs/topics/gateway#sharding */ shard?: [shard_id: number, shard_count: number]; /** * Presence structure for initial presence information * * See https://discord.com/developers/docs/topics/gateway#update-status */ presence?: GatewayPresenceUpdateData; /** * Enables dispatching of guild subscription events (presence and typing events) * * @default true * @deprecated Use `intents` instead */ guild_subscriptions?: boolean; /** * The Gateway Intents you wish to receive * * See https://discord.com/developers/docs/topics/gateway#gateway-intents */ intents: number;}
/** * https://discord.com/developers/docs/topics/gateway#identify-identify-connection-properties */export interface GatewayIdentifyProperties { /** * Your operating system */ $os: string; /** * Your library name */ $browser: string; /** * Your library name */ $device: string;}
/** * https://discord.com/developers/docs/topics/gateway#resume */export interface GatewayResume { op: GatewayOPCodes.Resume; d: GatewayResumeData;}
/** * https://discord.com/developers/docs/topics/gateway#resume */export interface GatewayResumeData { /** * Session token */ token: string; /** * Session id */ session_id: string; /** * Last sequence number received */ seq: number;}
/** * https://discord.com/developers/docs/topics/gateway#request-guild-members */export interface GatewayRequestGuildMembers { op: GatewayOPCodes.RequestGuildMembers; d: GatewayRequestGuildMembersData;}
/** * https://discord.com/developers/docs/topics/gateway#request-guild-members */export interface GatewayRequestGuildMembersData { /** * ID of the guild to get members for */ guild_id: Snowflake; /** * String that username starts with, or an empty string to return all members */ query?: string; /** * Maximum number of members to send matching the `query`; * a limit of `0` can be used with an empty string `query` to return all members */ limit: number; /** * Used to specify if we want the presences of the matched members */ presences?: boolean; /** * Used to specify which users you wish to fetch */ user_ids?: Snowflake | Snowflake[]; /** * Nonce to identify the Guild Members Chunk response * * See https://discord.com/developers/docs/topics/gateway#guild-members-chunk */ nonce?: string;}
/** * https://discord.com/developers/docs/topics/gateway#update-voice-state */export interface GatewayVoiceStateUpdate { op: GatewayOPCodes.VoiceStateUpdate; d: GatewayVoiceStateUpdateData;}
/** * https://discord.com/developers/docs/topics/gateway#update-voice-state */export interface GatewayVoiceStateUpdateData { /** * ID of the guild */ guild_id: Snowflake; /** * ID of the voice channel client wants to join (`null` if disconnecting) */ channel_id: Snowflake | null; /** * Is the client muted */ self_mute: boolean; /** * Is the client deafened */ self_deaf: boolean;}
/** * https://discord.com/developers/docs/topics/gateway#update-status */export interface GatewayUpdatePresence { op: GatewayOPCodes.PresenceUpdate; d: GatewayPresenceUpdateData;}
/** * https://discord.com/developers/docs/topics/gateway#update-status-gateway-status-update-structure */export interface GatewayPresenceUpdateData { /** * Unix time (in milliseconds) of when the client went idle, or `null` if the client is not idle */ since: number | null; /** * `null`, or the user's activities * * See https://discord.com/developers/docs/topics/gateway#activity-object */ activities: GatewayActivityUpdateData[] | null; /** * The user's new status * * See https://discord.com/developers/docs/topics/gateway#update-status-status-types */ status: PresenceUpdateStatus; /** * Whether or not the client is afk */ afk: boolean;}
/** * https://discord.com/developers/docs/topics/gateway#activity-object-activity-structure */export type GatewayActivityUpdateData = Pick<GatewayActivity, 'name' | 'type' | 'url'>;
// #endregion Sendable Payloads
// #region Sharedinterface BasePayload { /** * Opcode for the payload */ op: GatewayOPCodes; /** * Event data */ d?: unknown; /** * Sequence number, used for resuming sessions and heartbeats */ s: number; /** * The event name for this payload */ t?: string;}
type NonDispatchPayload = Omit<BasePayload, 't'>;
interface DataPayload<Event extends GatewayDispatchEvents, D = unknown> extends BasePayload { op: GatewayOPCodes.Dispatch; t: Event; d: D;}
type ReactionData<E extends GatewayDispatchEvents, O extends string = never> = DataPayload< E, Omit< { /** * The id of the user */ user_id: Snowflake; /** * The id of the channel */ channel_id: Snowflake; /** * The id of the message */ message_id: Snowflake; /** * The id of the guild */ guild_id?: Snowflake; /** * The member who reacted if this happened in a guild * * See https://discord.com/developers/docs/resources/guild#guild-member-object */ member?: APIGuildMember; /** * The emoji used to react * * See https://discord.com/developers/docs/resources/emoji#emoji-object */ emoji: APIEmoji; }, O >>;
interface MessageReactionRemoveData { /** * The id of the channel */ channel_id: Snowflake; /** * The id of the message */ message_id: Snowflake; /** * The id of the guild */ guild_id?: Snowflake;}// #endregion Shared