Skip to main content
Module

x/discord_api_types/gateway/v9.ts

Up to date Discord API Typings, versioned by the API version
Go to Latest
File
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842
/** * Types extracted from https://discord.com/developers/docs/topics/gateway */
import type { Snowflake } from '../globals.ts';import type { GatewayPresenceUpdate } from '../payloads/v9/gateway.ts';import type { APIApplication, APIChannel, APIEmoji, APIGuild, APIGuildIntegration, APIGuildMember, APIGuildScheduledEvent, APIInteraction, APIMessage, APIRole, APIStageInstance, APISticker, APIThreadChannel, APIThreadMember, APIUnavailableGuild, APIUser, GatewayActivity, GatewayPresenceUpdate as RawGatewayPresenceUpdate, GatewayThreadListSync as RawGatewayThreadListSync, GatewayThreadMembersUpdate as RawGatewayThreadMembersUpdate, GatewayVoiceState, InviteTargetType, PresenceUpdateStatus,} from '../payloads/v9/mod.ts';import type { Nullable } from '../utils/internals.ts';
export * from './common.ts';
export const GatewayVersion = '9';
/** * 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/gateway#list-of-intents */export enum GatewayIntentBits { Guilds = 1 << 0, GuildMembers = 1 << 1, GuildBans = 1 << 2, GuildEmojisAndStickers = 1 << 3, 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, GuildScheduledEvents = 1 << 16,}
/** * https://discord.com/developers/docs/topics/gateway#commands-and-events-gateway-events */export enum GatewayDispatchEvents { ApplicationCommandPermissionsUpdate = 'APPLICATION_COMMAND_PERMISSIONS_UPDATE', 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', GuildStickersUpdate = 'GUILD_STICKERS_UPDATE', GuildUpdate = 'GUILD_UPDATE', IntegrationCreate = 'INTEGRATION_CREATE', IntegrationDelete = 'INTEGRATION_DELETE', IntegrationUpdate = 'INTEGRATION_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', StageInstanceCreate = 'STAGE_INSTANCE_CREATE', StageInstanceDelete = 'STAGE_INSTANCE_DELETE', StageInstanceUpdate = 'STAGE_INSTANCE_UPDATE', Ready = 'READY', Resumed = 'RESUMED', ThreadCreate = 'THREAD_CREATE', ThreadDelete = 'THREAD_DELETE', ThreadListSync = 'THREAD_LIST_SYNC', ThreadMembersUpdate = 'THREAD_MEMBERS_UPDATE', ThreadMemberUpdate = 'THREAD_MEMBER_UPDATE', ThreadUpdate = 'THREAD_UPDATE', TypingStart = 'TYPING_START', UserUpdate = 'USER_UPDATE', VoiceServerUpdate = 'VOICE_SERVER_UPDATE', VoiceStateUpdate = 'VOICE_STATE_UPDATE', WebhooksUpdate = 'WEBHOOKS_UPDATE', GuildScheduledEventCreate = 'GUILD_SCHEDULED_EVENT_CREATE', GuildScheduledEventUpdate = 'GUILD_SCHEDULED_EVENT_UPDATE', GuildScheduledEventDelete = 'GUILD_SCHEDULED_EVENT_DELETE', GuildScheduledEventUserAdd = 'GUILD_SCHEDULED_EVENT_USER_ADD', GuildScheduledEventUserRemove = 'GUILD_SCHEDULED_EVENT_USER_REMOVE',}
export type GatewaySendPayload = | GatewayHeartbeat | GatewayIdentify | GatewayUpdatePresence | GatewayVoiceStateUpdate | GatewayResume | GatewayRequestGuildMembers;
export type GatewayReceivePayload = | GatewayHello | GatewayHeartbeatRequest | GatewayHeartbeatAck | GatewayInvalidSession | GatewayReconnect | GatewayDispatchPayload;
export type GatewayDispatchPayload = | GatewayChannelModifyDispatch | GatewayChannelPinsUpdateDispatch | GatewayGuildBanModifyDispatch | GatewayGuildCreateDispatch | GatewayGuildDeleteDispatch | GatewayGuildEmojisUpdateDispatch | GatewayGuildIntegrationsUpdateDispatch | GatewayGuildMemberAddDispatch | GatewayGuildMemberRemoveDispatch | GatewayGuildMembersChunkDispatch | GatewayGuildMemberUpdateDispatch | GatewayGuildModifyDispatch | GatewayGuildRoleDeleteDispatch | GatewayGuildRoleModifyDispatch | GatewayGuildScheduledEventCreateDispatch | GatewayGuildScheduledEventUpdateDispatch | GatewayGuildScheduledEventDeleteDispatch | GatewayGuildScheduledEventUserAddDispatch | GatewayGuildScheduledEventUserRemoveDispatch | GatewayGuildStickersUpdateDispatch | GatewayIntegrationCreateDispatch | GatewayIntegrationDeleteDispatch | GatewayIntegrationUpdateDispatch | GatewayInteractionCreateDispatch | GatewayInviteCreateDispatch | GatewayInviteDeleteDispatch | GatewayMessageCreateDispatch | GatewayMessageDeleteBulkDispatch | GatewayMessageDeleteDispatch | GatewayMessageReactionAddDispatch | GatewayMessageReactionRemoveAllDispatch | GatewayMessageReactionRemoveDispatch | GatewayMessageReactionRemoveEmojiDispatch | GatewayMessageUpdateDispatch | GatewayPresenceUpdateDispatch | GatewayStageInstanceCreateDispatch | GatewayStageInstanceDeleteDispatch | GatewayStageInstanceUpdateDispatch | GatewayReadyDispatch | GatewayResumedDispatch | GatewayThreadListSyncDispatch | GatewayThreadMembersUpdateDispatch | GatewayThreadMemberUpdateDispatch | GatewayThreadModifyDispatch | GatewayTypingStartDispatch | GatewayUserUpdateDispatch | GatewayVoiceServerUpdateDispatch | GatewayVoiceStateUpdateDispatch | GatewayWebhooksUpdateDispatch;
// #region Dispatch Payloads
/** * 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; /** * 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/resources/application#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-update */export type GatewayGuildModifyDispatch = DataPayload<GatewayDispatchEvents.GuildUpdate, GatewayGuildModifyDispatchData>;
/** * 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 = DataPayload<GatewayDispatchEvents.GuildCreate, GatewayGuildCreateDispatchData>;
/** * https://discord.com/developers/docs/topics/gateway#guild-create * https://discord.com/developers/docs/topics/gateway#guild-create-guild-create-extra-fields */export interface GatewayGuildCreateDispatchData extends APIGuild { /** * When this guild was joined at * * **This field is only sent within the [GUILD_CREATE](https://discord.com/developers/docs/topics/gateway#guild-create) event** */ joined_at: string; /** * `true` if this is considered a large guild * * **This field is only sent within the [GUILD_CREATE](https://discord.com/developers/docs/topics/gateway#guild-create) event** */ large: boolean; /** * `true` if this guild is unavailable due to an outage */ unavailable?: boolean; /** * Total number of members in this guild * * **This field is only sent within the [GUILD_CREATE](https://discord.com/developers/docs/topics/gateway#guild-create) event** */ member_count: number; /** * States of members currently in voice channels; lacks the `guild_id` key * * **This field is only sent within the [GUILD_CREATE](https://discord.com/developers/docs/topics/gateway#guild-create) event** * * See https://discord.com/developers/docs/resources/voice#voice-state-object */ voice_states: Omit<GatewayVoiceState, 'guild_id'>[]; /** * Users in the guild * * **This field is only sent within the [GUILD_CREATE](https://discord.com/developers/docs/topics/gateway#guild-create) event** * * See https://discord.com/developers/docs/resources/guild#guild-member-object */ members: APIGuildMember[]; /** * Channels in the guild * * **This field is only sent within the [GUILD_CREATE](https://discord.com/developers/docs/topics/gateway#guild-create) event** * * See https://discord.com/developers/docs/resources/channel#channel-object */ channels: APIChannel[]; /** * Threads in the guild * * **This field is only sent within the [GUILD_CREATE](https://discord.com/developers/docs/topics/gateway#guild-create) event** * * See https://discord.com/developers/docs/resources/channel#channel-object */ threads: APIChannel[]; /** * Presences of the members in the guild, will only include non-offline members if the size is greater than `large_threshold` * * **This field is only sent within the [GUILD_CREATE](https://discord.com/developers/docs/topics/gateway#guild-create) event** * * See https://discord.com/developers/docs/topics/gateway#presence-update */ presences: GatewayPresenceUpdate[]; /** * The stage instances in the guild * * **This field is only sent within the [GUILD_CREATE](https://discord.com/developers/docs/topics/gateway#guild-create) event** * * See https://discord.com/developers/docs/resources/stage-instance#stage-instance-object-stage-instance-structure */ stage_instances: APIStageInstance[]; /** * The scheduled events in the guild * * **This field is only sent within the [GUILD_CREATE](https://discord.com/developers/docs/topics/gateway#guild-create) event** * * https://discord.com/developers/docs/resources/guild-scheduled-event#guild-scheduled-event-object */ guild_scheduled_events: APIGuildScheduledEvent[];}
/** * 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-stickers-update */export type GatewayGuildStickersUpdateDispatch = DataPayload< GatewayDispatchEvents.GuildStickersUpdate, GatewayGuildStickersUpdateDispatchData>;
/** * https://discord.com/developers/docs/topics/gateway#guild-stickers-update */export interface GatewayGuildStickersUpdateDispatchData { /** * ID of the guild */ guild_id: Snowflake; /** * Array of stickers * * See https://discord.com/developers/docs/resources/sticker#sticker-object */ stickers: APISticker[];}
/** * 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' | 'user' | 'joined_at'> & Partial<Pick<APIGuildMember, 'deaf' | 'mute'>> & Required<Pick<APIGuildMember, 'user'>> & Nullable<Pick<APIGuildMember, 'joined_at'>> & { /** * 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;}
export type GatewayGuildScheduledEventCreateDispatch = DataPayload< GatewayDispatchEvents.GuildScheduledEventCreate, GatewayGuildScheduledEventCreateDispatchData>;
export type GatewayGuildScheduledEventCreateDispatchData = APIGuildScheduledEvent;
export type GatewayGuildScheduledEventUpdateDispatch = DataPayload< GatewayDispatchEvents.GuildScheduledEventUpdate, GatewayGuildScheduledEventUpdateDispatchData>;
export type GatewayGuildScheduledEventUpdateDispatchData = APIGuildScheduledEvent;
export type GatewayGuildScheduledEventDeleteDispatch = DataPayload< GatewayDispatchEvents.GuildScheduledEventDelete, GatewayGuildScheduledEventDeleteDispatchData>;
export type GatewayGuildScheduledEventDeleteDispatchData = APIGuildScheduledEvent;
export type GatewayGuildScheduledEventUserAddDispatch = DataPayload< GatewayDispatchEvents.GuildScheduledEventUserAdd, GatewayGuildScheduledEventUserAddDispatchData>;
export interface GatewayGuildScheduledEventUserAddDispatchData { guild_scheduled_event_id: Snowflake; user_id: Snowflake; guild_id: Snowflake;}
export type GatewayGuildScheduledEventUserRemoveDispatch = DataPayload< GatewayDispatchEvents.GuildScheduledEventUserRemove, GatewayGuildScheduledEventUserAddDispatchData>;
export interface GatewayGuildScheduledEventUserRemoveDispatchData { guild_scheduled_event_id: Snowflake; user_id: Snowflake; guild_id: Snowflake;}
/** * https://discord.com/developers/docs/topics/gateway#integration-create */export type GatewayIntegrationCreateDispatch = DataPayload< GatewayDispatchEvents.IntegrationCreate, GatewayIntegrationCreateDispatchData>;
/** * https://discord.com/developers/docs/topics/gateway#integration-create */export type GatewayIntegrationCreateDispatchData = APIGuildIntegration & { guild_id: Snowflake };
/** * https://discord.com/developers/docs/topics/gateway#integration-update */export type GatewayIntegrationUpdateDispatch = DataPayload< GatewayDispatchEvents.IntegrationUpdate, GatewayIntegrationUpdateDispatchData>;
/** * https://discord.com/developers/docs/topics/gateway#integration-update */export type GatewayIntegrationUpdateDispatchData = APIGuildIntegration & { guild_id: Snowflake };
/** * https://discord.com/developers/docs/topics/gateway#integration-update */export type GatewayIntegrationDeleteDispatch = DataPayload< GatewayDispatchEvents.IntegrationDelete, GatewayIntegrationDeleteDispatchData>;
/** * https://discord.com/developers/docs/topics/gateway#integration-delete */export interface GatewayIntegrationDeleteDispatchData { /** * Integration id */ id: Snowflake; /** * ID of the guild */ guild_id: Snowflake; /** * ID of the bot/OAuth2 application for this Discord integration */ application_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 = APIInteraction;
/** * 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 type of target for this voice channel invite * * See https://discord.com/developers/docs/resources/invite#invite-object-invite-target-types */ target_type?: InviteTargetType; /** * The user whose stream to display for this voice channel stream invite * * See https://discord.com/developers/docs/resources/user#user-object */ target_user?: APIUser; /** * The embedded application to open for this voice channel embedded application invite */ target_application?: Partial<APIApplication>; /** * 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 = Omit<APIMessage, 'mentions'> & GatewayMessageEventExtraFields;
/** * 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 = Omit<Partial<APIMessage>, 'mentions'> & GatewayMessageEventExtraFields & { /** * ID of the message */ id: Snowflake; /** * ID of the channel the message was sent in */ channel_id: Snowflake; };
export interface GatewayMessageEventExtraFields { /** * ID of the guild the message was sent in */ guild_id?: Snowflake; /** * Member properties for this message's author * * The member object exists in `MESSAGE_CREATE` and `MESSAGE_UPDATE` events * from text-based guild channels * * See https://discord.com/developers/docs/resources/guild#guild-member-object */ member?: APIGuildMember; /** * Users specifically mentioned in the message * * The `member` field is only present in `MESSAGE_CREATE` and `MESSAGE_UPDATE` events * from text-based guild channels * * See https://discord.com/developers/docs/resources/user#user-object * See https://discord.com/developers/docs/resources/guild#guild-member-object */ mentions: (APIUser & { member?: Omit<APIGuildMember, 'user'> })[];}
/** * 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#stage-instance-create */export type GatewayStageInstanceCreateDispatch = DataPayload< GatewayDispatchEvents.StageInstanceCreate, GatewayStageInstanceCreateDispatchData>;
/** * https://discord.com/developers/docs/topics/gateway#stage-instance-create */export type GatewayStageInstanceCreateDispatchData = APIStageInstance;
/** * https://discord.com/developers/docs/topics/gateway#stage-instance-delete */export type GatewayStageInstanceDeleteDispatch = DataPayload< GatewayDispatchEvents.StageInstanceDelete, GatewayStageInstanceDeleteDispatchData>;
/** * https://discord.com/developers/docs/topics/gateway#stage-instance-delete */export type GatewayStageInstanceDeleteDispatchData = APIStageInstance;
/** * https://discord.com/developers/docs/topics/gateway#stage-instance-update */export type GatewayStageInstanceUpdateDispatch = DataPayload< GatewayDispatchEvents.StageInstanceUpdate, GatewayStageInstanceUpdateDispatchData>;
/** * https://discord.com/developers/docs/topics/gateway#stage-instance-update */export type GatewayStageInstanceUpdateDispatchData = APIStageInstance;
/** * https://discord.com/developers/docs/topics/gateway#thread-list-sync */export type GatewayThreadListSyncDispatch = DataPayload< GatewayDispatchEvents.ThreadListSync, GatewayThreadListSyncDispatchData>;
/** * https://discord.com/developers/docs/topics/gateway#thread-list-sync */export type GatewayThreadListSyncDispatchData = RawGatewayThreadListSync;
/** * https://discord.com/developers/docs/topics/gateway#thread-members-update */export type GatewayThreadMembersUpdateDispatch = DataPayload< GatewayDispatchEvents.ThreadMembersUpdate, GatewayThreadMembersUpdateDispatchData>;
/** * https://discord.com/developers/docs/topics/gateway#thread-members-update */export type GatewayThreadMembersUpdateDispatchData = RawGatewayThreadMembersUpdate;
/** * https://discord.com/developers/docs/topics/gateway#thread-member-update */export type GatewayThreadMemberUpdateDispatch = DataPayload< GatewayDispatchEvents.ThreadMemberUpdate, GatewayThreadMemberUpdateDispatchData>;
/** * https://discord.com/developers/docs/topics/gateway#thread-member-update */export type GatewayThreadMemberUpdateDispatchData = APIThreadMember & { guild_id: Snowflake };
/** * https://discord.com/developers/docs/topics/gateway#thread-create * https://discord.com/developers/docs/topics/gateway#thread-update * https://discord.com/developers/docs/topics/gateway#thread-delete */export type GatewayThreadModifyDispatch = DataPayload< GatewayDispatchEvents.ThreadCreate | GatewayDispatchEvents.ThreadDelete | GatewayDispatchEvents.ThreadUpdate, GatewayChannelModifyDispatchData>;
/** * https://discord.com/developers/docs/topics/gateway#thread-create */export type GatewayThreadCreateDispatch = GatewayChannelModifyDispatch;
/** * https://discord.com/developers/docs/topics/gateway#thread-create */export interface GatewayThreadCreateDispatchData extends APIThreadChannel { /** * Whether the thread is newly created or not. */ newly_created?: true;}
/** * https://discord.com/developers/docs/topics/gateway#thread-update */export type GatewayThreadUpdateDispatch = GatewayChannelModifyDispatch;
/** * https://discord.com/developers/docs/topics/gateway#thread-update */export type GatewayThreadUpdateDispatchData = GatewayChannelModifyDispatchData;
/** * https://discord.com/developers/docs/topics/gateway#thread-delete */export type GatewayThreadDeleteDispatch = GatewayChannelModifyDispatch;
/** * https://discord.com/developers/docs/topics/gateway#thread-delete */export type GatewayThreadDeleteDispatchData = GatewayChannelModifyDispatchData;
/** * 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 * * A `null` endpoint means that the voice server allocated has gone away and is trying to be reallocated. * You should attempt to disconnect from the currently connected voice server, and not attempt to reconnect * until a new voice server is allocated */ endpoint: string | null;}
/** * 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-presence */ presence?: GatewayPresenceUpdateData; /** * 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 * * Nonce can only be up to 32 bytes. If you send an invalid nonce it will be ignored and the reply member_chunk(s) will not have a `nonce` set. * * 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-presence-gateway-presence-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; /** * The user's activities * * See https://discord.com/developers/docs/topics/gateway#activity-object */ activities: GatewayActivityUpdateData[]; /** * The user's new status * * See https://discord.com/developers/docs/topics/gateway#update-presence-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' | 's'> & { t: null; s: null;};
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