seyfert
Version:
The most advanced framework for discord bots
1,192 lines • 61.7 kB
TypeScript
import type { OmitInsert } from '../common';
import type { ChannelType, GatewayDispatchEvents, GatewayOpcodes, Snowflake } from './index';
import type { GatewayPresenceUpdate } from './payloads/gateway';
import type { APIApplication, APIApplicationCommandPermission, APIAuditLogEntry, APIAutoModerationAction, APIAutoModerationRule, APIChannel, APIEmoji, APIEntitlement, APIGuild, APIGuildIntegration, APIGuildMember, APIGuildScheduledEvent, APIInteraction, APIMessage, APIPartialEmoji, APIRole, APIStageInstance, APISticker, APISubscription, APIThreadChannel, APIThreadMember, APIUnavailableGuild, APIUser, APIVoiceState, AutoModerationRuleTriggerType, GatewayActivity, InviteTargetType, PresenceUpdateStatus, GatewayPresenceUpdate as RawGatewayPresenceUpdate, GatewayThreadListSync as RawGatewayThreadListSync, GatewayThreadMembersUpdate as RawGatewayThreadMembersUpdate } from './payloads/index';
import type { APISoundBoard } from './payloads/soundboard';
import type { ReactionType } from './rest/index';
import type { AnimationTypes, Nullable } from './utils';
/**
* https://discord.com/developers/docs/topics/gateway#connecting-gateway-url-query-string-params
*/
export interface GatewayURLQuery {
v: string;
encoding: 'etf' | 'json';
compress?: 'zlib-stream';
}
/**
* Types extracted from https://discord.com/developers/docs/topics/gateway
*/
export type GatewaySendPayload = GatewayHeartbeat | GatewayIdentify | GatewayRequestGuildMembers | GatewayResume | GatewayUpdatePresence | GatewayVoiceStateUpdate | GatewayRequestSoundboardSounds;
export type GatewayReceivePayload = GatewayDispatchPayload | GatewayHeartbeatAck | GatewayHeartbeatRequest | GatewayHello | GatewayInvalidSession | GatewayReconnect;
export type GatewayDispatchPayload = GatewayApplicationCommandPermissionsUpdateDispatch | GatewayAutoModerationActionExecutionDispatch | GatewayAutoModerationRuleCreateDispatch | GatewayAutoModerationRuleDeleteDispatch | GatewayAutoModerationRuleModifyDispatch | GatewayChannelModifyDispatch | GatewayChannelPinsUpdateDispatch | GatewayEntitlementModifyDispatch | GatewayGuildAuditLogEntryCreateDispatch | GatewayGuildBanModifyDispatch | GatewayGuildCreateDispatch | GatewayRawGuildCreateDispatch | GatewayGuildDeleteDispatch | GatewayRawGuildDeleteDispatch | GatewayGuildsReadyDispatch | GatewayGuildEmojisUpdateDispatch | GatewayGuildIntegrationsUpdateDispatch | GatewayGuildMemberAddDispatch | GatewayGuildMemberRemoveDispatch | GatewayGuildMembersChunkDispatch | GatewayGuildMemberUpdateDispatch | GatewayGuildModifyDispatch | GatewayGuildRoleDeleteDispatch | GatewayGuildRoleModifyDispatch | GatewayGuildScheduledEventCreateDispatch | GatewayGuildScheduledEventDeleteDispatch | GatewayGuildScheduledEventUpdateDispatch | GatewayGuildScheduledEventUserAddDispatch | GatewayGuildScheduledEventUserRemoveDispatch | GatewayGuildStickersUpdateDispatch | GatewayIntegrationCreateDispatch | GatewayIntegrationDeleteDispatch | GatewayIntegrationUpdateDispatch | GatewayInteractionCreateDispatch | GatewayInviteCreateDispatch | GatewayInviteDeleteDispatch | GatewayMessageCreateDispatch | GatewayMessageDeleteBulkDispatch | GatewayMessageDeleteDispatch | GatewayMessagePollVoteAddDispatch | GatewayMessagePollVoteRemoveDispatch | GatewayMessageReactionAddDispatch | GatewayMessageReactionRemoveAllDispatch | GatewayMessageReactionRemoveDispatch | GatewayMessageReactionRemoveEmojiDispatch | GatewayMessageUpdateDispatch | GatewayPresenceUpdateDispatch | GatewayReadyDispatch | GatewayResumedDispatch | GatewayStageInstanceCreateDispatch | GatewayStageInstanceDeleteDispatch | GatewayStageInstanceUpdateDispatch | GatewayThreadCreateDispatch | GatewayThreadDeleteDispatch | GatewayThreadListSyncDispatch | GatewayThreadMembersUpdateDispatch | GatewayThreadMemberUpdateDispatch | GatewayThreadUpdateDispatch | GatewayTypingStartDispatch | GatewayUserUpdateDispatch | GatewayVoiceServerUpdateDispatch | GatewayVoiceStateUpdateDispatch | GatewayWebhooksUpdateDispatch | GatewayGuildSoundboardSoundCreateDispatch | GatewayGuildSoundboardSoundDeleteDispatch | GatewayGuildSoundboardSoundUpdateDispatch | GatewayGuildSoundboardSoundsUpdateDispatch | GatewaySoundboardSoundsDispatch;
/**
* https://discord.com/developers/docs/topics/gateway-events#hello
*/
export interface GatewayHello extends NonDispatchPayload {
op: GatewayOpcodes.Hello;
d: GatewayHelloData;
}
/**
* https://discord.com/developers/docs/topics/gateway-events#hello
*/
export interface GatewayHelloData {
/**
* The interval (in milliseconds) the client should heartbeat with
*/
heartbeat_interval: number;
}
/**
* https://discord.com/developers/docs/topics/gateway#sending-heartbeats
*/
export interface GatewayHeartbeatRequest extends NonDispatchPayload {
op: GatewayOpcodes.Heartbeat;
d: never;
}
/**
* https://discord.com/developers/docs/topics/gateway-events#heartbeat
*/
export interface GatewayHeartbeatAck extends NonDispatchPayload {
op: GatewayOpcodes.HeartbeatAck;
d: never;
}
/**
* https://discord.com/developers/docs/topics/gateway-events#invalid-session
*/
export interface GatewayInvalidSession extends NonDispatchPayload {
op: GatewayOpcodes.InvalidSession;
d: GatewayInvalidSessionData;
}
/**
* https://discord.com/developers/docs/topics/gateway-events#invalid-session
*/
export type GatewayInvalidSessionData = boolean;
/**
* https://discord.com/developers/docs/topics/gateway-events#reconnect
*/
export interface GatewayReconnect extends NonDispatchPayload {
op: GatewayOpcodes.Reconnect;
d: never;
}
/**
* https://discord.com/developers/docs/topics/gateway-events#ready
*/
export type GatewayReadyDispatch = DataPayload<GatewayDispatchEvents.Ready, GatewayReadyDispatchData>;
/**
* https://discord.com/developers/docs/topics/gateway-events#ready
*/
export interface GatewayReadyDispatchData {
/**
* Gateway version
*
* See https://discord.com/developers/docs/reference#api-versioning
*/
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;
/**
* Gateway url for resuming connections
*/
resume_gateway_url: 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, 'flags' | 'id'>;
}
/**
* https://discord.com/developers/docs/topics/gateway-events#resumed
*/
export type GatewayResumedDispatch = DataPayload<GatewayDispatchEvents.Resumed, never>;
/**
* https://discord.com/developers/docs/topics/gateway-events#auto-moderation-rule-create
* https://discord.com/developers/docs/topics/gateway-events#auto-moderation-rule-update
* https://discord.com/developers/docs/topics/gateway-events#auto-moderation-rule-delete
*/
export type GatewayAutoModerationRuleModifyDispatch = DataPayload<GatewayDispatchEvents.AutoModerationRuleCreate | GatewayDispatchEvents.AutoModerationRuleDelete | GatewayDispatchEvents.AutoModerationRuleUpdate, GatewayAutoModerationRuleModifyDispatchData>;
/**
* https://discord.com/developers/docs/topics/gateway-events#auto-moderation-rule-create
* https://discord.com/developers/docs/topics/gateway-events#auto-moderation-rule-update
* https://discord.com/developers/docs/topics/gateway-events#auto-moderation-rule-delete
*/
export type GatewayAutoModerationRuleModifyDispatchData = APIAutoModerationRule;
/**
* https://discord.com/developers/docs/topics/gateway-events#auto-moderation-rule-create
*/
export type GatewayAutoModerationRuleCreateDispatch = GatewayAutoModerationRuleModifyDispatch;
/**
* https://discord.com/developers/docs/topics/gateway-events#auto-moderation-rule-create
*/
export type GatewayAutoModerationRuleCreateDispatchData = GatewayAutoModerationRuleModifyDispatchData;
/**
* https://discord.com/developers/docs/topics/gateway-events#auto-moderation-rule-update
*/
export type GatewayAutoModerationRuleUpdateDispatch = GatewayAutoModerationRuleModifyDispatch;
/**
* https://discord.com/developers/docs/topics/gateway-events#auto-moderation-rule-update
*/
export type GatewayAutoModerationRuleUpdateDispatchData = GatewayAutoModerationRuleModifyDispatchData;
/**
* https://discord.com/developers/docs/topics/gateway-events#auto-moderation-rule-delete
*/
export type GatewayAutoModerationRuleDeleteDispatch = GatewayAutoModerationRuleModifyDispatch;
/**
* https://discord.com/developers/docs/topics/gateway-events#auto-moderation-rule-delete
*/
export type GatewayAutoModerationRuleDeleteDispatchData = GatewayAutoModerationRuleModifyDispatchData;
/**
* https://discord.com/developers/docs/topics/gateway-events#auto-moderation-action-execution
*/
export type GatewayAutoModerationActionExecutionDispatch = DataPayload<GatewayDispatchEvents.AutoModerationActionExecution, GatewayAutoModerationActionExecutionDispatchData>;
/**
* https://discord.com/developers/docs/topics/gateway-events#auto-moderation-action-execution
*/
export interface GatewayAutoModerationActionExecutionDispatchData {
/**
* The id of the guild in which action was executed
*/
guild_id: Snowflake;
/**
* The action which was executed
*/
action: APIAutoModerationAction;
/**
* The id of the rule which action belongs to
*/
rule_id: Snowflake;
/**
* The trigger type of rule which was triggered
*/
rule_trigger_type: AutoModerationRuleTriggerType;
/**
* The id of the user which generated the content which triggered the rule
*/
user_id: Snowflake;
/**
* The id of the channel in which user content was posted
*/
channel_id?: Snowflake;
/**
* The id of any user message which content belongs to
*
* This field will not be present if message was blocked by AutoMod or content was not part of any message
*/
message_id?: Snowflake;
/**
* The id of any system auto moderation messages posted as a result of this action
*
* This field will not be present if this event does not correspond to an action with type {@link AutoModerationActionType.SendAlertMessage}
*/
alert_system_message_id?: Snowflake;
/**
* The user generated text content
*
* `MESSAGE_CONTENT` (`1 << 15`) gateway intent is required to receive non-empty values from this field
*/
content: string;
/**
* The word or phrase configured in the rule that triggered the rule
*/
matched_keyword: string | null;
/**
* The substring in content that triggered the rule
*
* `MESSAGE_CONTENT` (`1 << 15`) gateway intent is required to receive non-empty values from this field
*/
matched_content: string | null;
}
/**
* https://discord.com/developers/docs/topics/gateway-events#application-command-permissions-update
*/
export type GatewayApplicationCommandPermissionsUpdateDispatch = DataPayload<GatewayDispatchEvents.ApplicationCommandPermissionsUpdate, GatewayApplicationCommandPermissionsUpdateDispatchData>;
/**
* https://discord.com/developers/docs/topics/gateway-events#application-command-permissions-update
*/
export interface GatewayApplicationCommandPermissionsUpdateDispatchData {
/**
* ID of the command or the application ID
*/
id: Snowflake;
/**
* ID of the application the command belongs to
*/
application_id: Snowflake;
/**
* ID of the guild
*/
guild_id: Snowflake;
/**
* Permissions for the command in the guild, max of 100
*/
permissions: APIApplicationCommandPermission[];
}
/**
* https://discord.com/developers/docs/topics/gateway-events#channel-create
* https://discord.com/developers/docs/topics/gateway-events#channel-update
* https://discord.com/developers/docs/topics/gateway-events#channel-delete
*/
export type GatewayChannelModifyDispatch = DataPayload<GatewayDispatchEvents.ChannelCreate | GatewayDispatchEvents.ChannelDelete | GatewayDispatchEvents.ChannelUpdate, GatewayChannelModifyDispatchData>;
/**
* https://discord.com/developers/docs/topics/gateway-events#channel-create
* https://discord.com/developers/docs/topics/gateway-events#channel-update
* https://discord.com/developers/docs/topics/gateway-events#channel-delete
*/
export type GatewayChannelModifyDispatchData = APIChannel;
/**
* https://discord.com/developers/docs/topics/gateway-events#channel-create
*/
export type GatewayChannelCreateDispatch = GatewayChannelModifyDispatch;
/**
* https://discord.com/developers/docs/topics/gateway-events#channel-create
*/
export type GatewayChannelCreateDispatchData = GatewayChannelModifyDispatchData;
/**
* https://discord.com/developers/docs/topics/gateway-events#channel-update
*/
export type GatewayChannelUpdateDispatch = GatewayChannelModifyDispatch;
/**
* https://discord.com/developers/docs/topics/gateway-events#channel-update
*/
export type GatewayChannelUpdateDispatchData = GatewayChannelModifyDispatchData;
/**
* https://discord.com/developers/docs/topics/gateway-events#channel-delete
*/
export type GatewayChannelDeleteDispatch = GatewayChannelModifyDispatch;
/**
* https://discord.com/developers/docs/topics/gateway-events#channel-delete
*/
export type GatewayChannelDeleteDispatchData = GatewayChannelModifyDispatchData;
/**
* https://discord.com/developers/docs/topics/gateway-events#channel-pins-update
*/
export type GatewayChannelPinsUpdateDispatch = DataPayload<GatewayDispatchEvents.ChannelPinsUpdate, GatewayChannelPinsUpdateDispatchData>;
/**
* https://discord.com/developers/docs/topics/gateway-events#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-events#entitlement-create
* https://discord.com/developers/docs/topics/gateway-events#entitlement-update
* https://discord.com/developers/docs/topics/gateway-events#entitlement-delete
*/
export type GatewayEntitlementModifyDispatchData = APIEntitlement;
/**
* https://discord.com/developers/docs/topics/gateway-events#entitlement-create
* https://discord.com/developers/docs/topics/gateway-events#entitlement-update
* https://discord.com/developers/docs/topics/gateway-events#entitlement-delete
*/
export type GatewayEntitlementModifyDispatch = DataPayload<GatewayDispatchEvents.EntitlementCreate | GatewayDispatchEvents.EntitlementDelete | GatewayDispatchEvents.EntitlementUpdate, GatewayEntitlementModifyDispatchData>;
/**
* https://discord.com/developers/docs/topics/gateway-events#entitlement-create
*/
export type GatewayEntitlementCreateDispatchData = Omit<GatewayEntitlementModifyDispatchData, 'ends_at'> & {
ends_at: null;
};
/**
* https://discord.com/developers/docs/topics/gateway-events#entitlement-create
*/
export type GatewayEntitlementCreateDispatch = GatewayEntitlementModifyDispatch;
/**
* https://discord.com/developers/docs/topics/gateway-events#entitlement-update
*/
export type GatewayEntitlementUpdateDispatchData = GatewayEntitlementModifyDispatchData;
/**
* https://discord.com/developers/docs/topics/gateway-events#entitlement-update
*/
export type GatewayEntitlementUpdateDispatch = GatewayEntitlementModifyDispatch;
/**
* https://discord.com/developers/docs/topics/gateway-events#entitlement-delete
*/
export type GatewayEntitlementDeleteDispatchData = GatewayEntitlementModifyDispatchData;
/**
* https://discord.com/developers/docs/topics/gateway-events#entitlement-delete
*/
export type GatewayEntitlementDeleteDispatch = GatewayEntitlementModifyDispatch;
/**
* https://discord.com/developers/docs/topics/gateway-events#guild-create
*/
export type GatewayGuildModifyDispatch = DataPayload<GatewayDispatchEvents.GuildUpdate, GatewayGuildModifyDispatchData>;
/**
* https://discord.com/developers/docs/topics/gateway-events#guild-update
*/
export type GatewayGuildModifyDispatchData = APIGuild;
/**
* https://discord.com/developers/docs/topics/gateway-events#guild-create
*/
export type GatewayGuildCreateDispatch = DataPayload<GatewayDispatchEvents.GuildCreate, GatewayGuildCreateDispatchData>;
export type GatewayRawGuildCreateDispatch = OmitInsert<GatewayGuildCreateDispatch, 't', {
t: GatewayDispatchEvents.RawGuildCreate;
}>;
/**
* https://discord.com/developers/docs/topics/gateway-events#guild-create
* https://discord.com/developers/docs/topics/gateway-events#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-events#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-events#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-events#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-events#guild-create) event**
*
* See https://discord.com/developers/docs/resources/voice#voice-state-object
*/
voice_states: Omit<APIVoiceState, 'guild_id'>[];
/**
* Users in the guild
*
* **This field is only sent within the [GUILD_CREATE](https://discord.com/developers/docs/topics/gateway-events#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-events#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-events#guild-create) event**
*
* See https://discord.com/developers/docs/resources/channel#channel-object
*/
threads: APIThreadChannel[];
/**
* 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-events#guild-create) event**
*
* See https://discord.com/developers/docs/topics/gateway-events#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-events#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-events#guild-create) event**
*
* https://discord.com/developers/docs/resources/guild-scheduled-event#guild-scheduled-event-object
*/
guild_scheduled_events: APIGuildScheduledEvent[];
/**
* Soundboard sounds in the guild
*
* **This field is only sent within the [GUILD_CREATE](https://discord.com/developers/docs/topics/gateway-events#guild-create) event**
*
* https://discord.com/developers/docs/resources/soundboard
*/
soundboard_sounds: APISoundBoard[];
}
/**
* https://discord.com/developers/docs/topics/gateway-events#guild-update
*/
export type GatewayGuildUpdateDispatch = GatewayGuildModifyDispatch;
/**
* https://discord.com/developers/docs/topics/gateway-events#guild-update
*/
export type GatewayGuildUpdateDispatchData = GatewayGuildModifyDispatchData;
/**
* https://discord.com/developers/docs/topics/gateway-events#guild-delete
*/
export type GatewayGuildDeleteDispatch = DataPayload<GatewayDispatchEvents.GuildDelete, GatewayGuildDeleteDispatchData>;
export type GatewayRawGuildDeleteDispatch = OmitInsert<GatewayGuildDeleteDispatch, 't', {
t: GatewayDispatchEvents.RawGuildDelete;
}>;
export type GatewayGuildsReadyDispatch = OmitInsert<GatewayReadyDispatch, 't' | 'd', {
t: GatewayDispatchEvents.GuildsReady;
d?: never;
}>;
/**
* https://discord.com/developers/docs/topics/gateway-events#guild-delete
*/
export type GatewayGuildDeleteDispatchData = APIUnavailableGuild;
/**
* https://discord.com/developers/docs/topics/gateway-events#guild-ban-add
* https://discord.com/developers/docs/topics/gateway-events#guild-ban-remove
*/
export type GatewayGuildBanModifyDispatch = DataPayload<GatewayDispatchEvents.GuildBanAdd | GatewayDispatchEvents.GuildBanRemove, GatewayGuildBanModifyDispatchData>;
/**
* https://discord.com/developers/docs/topics/gateway-events#guild-ban-add
* https://discord.com/developers/docs/topics/gateway-events#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-events#guild-ban-add
*/
export type GatewayGuildBanAddDispatch = GatewayGuildBanModifyDispatch;
/**
* https://discord.com/developers/docs/topics/gateway-events#guild-ban-add
*/
export type GatewayGuildBanAddDispatchData = GatewayGuildBanModifyDispatchData;
/**
* https://discord.com/developers/docs/topics/gateway-events#guild-ban-remove
*/
export type GatewayGuildBanRemoveDispatch = GatewayGuildBanModifyDispatch;
/**
* https://discord.com/developers/docs/topics/gateway-events#guild-ban-remove
*/
export type GatewayGuildBanRemoveDispatchData = GatewayGuildBanModifyDispatchData;
/**
* https://discord.com/developers/docs/topics/gateway-events#guild-emojis-update
*/
export type GatewayGuildEmojisUpdateDispatch = DataPayload<GatewayDispatchEvents.GuildEmojisUpdate, GatewayGuildEmojisUpdateDispatchData>;
/**
* https://discord.com/developers/docs/topics/gateway-events#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-events#guild-stickers-update
*/
export type GatewayGuildStickersUpdateDispatch = DataPayload<GatewayDispatchEvents.GuildStickersUpdate, GatewayGuildStickersUpdateDispatchData>;
/**
* https://discord.com/developers/docs/topics/gateway-events#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-events#guild-integrations-update
*/
export type GatewayGuildIntegrationsUpdateDispatch = DataPayload<GatewayDispatchEvents.GuildIntegrationsUpdate, GatewayGuildIntegrationsUpdateDispatchData>;
/**
* https://discord.com/developers/docs/topics/gateway-events#guild-integrations-update
*/
export interface GatewayGuildIntegrationsUpdateDispatchData {
/**
* ID of the guild whose integrations were updated
*/
guild_id: Snowflake;
}
/**
* https://discord.com/developers/docs/topics/gateway-events#guild-member-add
*/
export type GatewayGuildMemberAddDispatch = DataPayload<GatewayDispatchEvents.GuildMemberAdd, GatewayGuildMemberAddDispatchData>;
/**
* https://discord.com/developers/docs/topics/gateway-events#guild-member-add
*/
export interface GatewayGuildMemberAddDispatchData extends APIGuildMember {
/**
* The id of the guild
*/
guild_id: Snowflake;
}
/**
* https://discord.com/developers/docs/topics/gateway-events#guild-member-remove
*/
export type GatewayGuildMemberRemoveDispatch = DataPayload<GatewayDispatchEvents.GuildMemberRemove, GatewayGuildMemberRemoveDispatchData>;
/**
* https://discord.com/developers/docs/topics/gateway-events#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-events#guild-member-update
*/
export type GatewayGuildMemberUpdateDispatch = DataPayload<GatewayDispatchEvents.GuildMemberUpdate, GatewayGuildMemberUpdateDispatchData>;
/**
* https://discord.com/developers/docs/topics/gateway-events#guild-member-update
*/
export type GatewayGuildMemberUpdateDispatchData = Nullable<Pick<APIGuildMember, 'joined_at'>> & Omit<APIGuildMember, 'deaf' | 'joined_at' | 'mute' | 'user'> & Partial<Pick<APIGuildMember, 'deaf' | 'mute'>> & Required<Pick<APIGuildMember, 'user'>> & {
/**
* The id of the guild
*/
guild_id: Snowflake;
};
/**
* https://discord.com/developers/docs/topics/gateway-events#guild-members-chunk
*/
export type GatewayGuildMembersChunkDispatch = DataPayload<GatewayDispatchEvents.GuildMembersChunk, GatewayGuildMembersChunkDispatchData>;
/**
* https://discord.com/developers/docs/topics/gateway-events#update-presence
*/
export type GatewayGuildMembersChunkPresence = Omit<RawGatewayPresenceUpdate, 'guild_id'>;
/**
* https://discord.com/developers/docs/topics/gateway-events#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-events#update-presence
*/
presences?: GatewayGuildMembersChunkPresence[];
/**
* The nonce used in the Guild Members Request
*
* See https://discord.com/developers/docs/topics/gateway-events#request-guild-members
*/
nonce?: string;
}
/**
* https://discord.com/developers/docs/topics/gateway-events#guild-role-create
* https://discord.com/developers/docs/topics/gateway-events#guild-role-update
*/
export type GatewayGuildRoleModifyDispatch = DataPayload<GatewayDispatchEvents.GuildRoleCreate | GatewayDispatchEvents.GuildRoleUpdate, GatewayGuildRoleModifyDispatchData>;
/**
* https://discord.com/developers/docs/topics/gateway-events#guild-role-create
* https://discord.com/developers/docs/topics/gateway-events#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-events#guild-role-create
*/
export type GatewayGuildRoleCreateDispatch = GatewayGuildRoleModifyDispatch;
/**
* https://discord.com/developers/docs/topics/gateway-events#guild-role-create
*/
export type GatewayGuildRoleCreateDispatchData = GatewayGuildRoleModifyDispatchData;
/**
* https://discord.com/developers/docs/topics/gateway-events#guild-role-update
*/
export type GatewayGuildRoleUpdateDispatch = GatewayGuildRoleModifyDispatch;
/**
* https://discord.com/developers/docs/topics/gateway-events#guild-role-update
*/
export type GatewayGuildRoleUpdateDispatchData = GatewayGuildRoleModifyDispatchData;
/**
* https://discord.com/developers/docs/topics/gateway-events#guild-role-delete
*/
export type GatewayGuildRoleDeleteDispatch = DataPayload<GatewayDispatchEvents.GuildRoleDelete, GatewayGuildRoleDeleteDispatchData>;
/**
* https://discord.com/developers/docs/topics/gateway-events#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;
}
export type GatewayGuildSoundboardSoundCreateDispatchData = APISoundBoard;
export type GatewayGuildSoundboardSoundCreateDispatch = DataPayload<GatewayDispatchEvents.GuildSoundboardSoundCreate, GatewayGuildSoundboardSoundCreateDispatchData>;
export type GatewayGuildSoundboardSoundUpdateDispatchData = APISoundBoard;
export type GatewayGuildSoundboardSoundUpdateDispatch = DataPayload<GatewayDispatchEvents.GuildSoundboardSoundUpdate, GatewayGuildSoundboardSoundUpdateDispatchData>;
export interface GatewayGuildSoundboardSoundDeleteDispatchData {
/** ID of the sound that was deleted */
sound_id: string;
/** ID of the guild the sound was in */
guild_id: string;
}
export type GatewayGuildSoundboardSoundDeleteDispatch = DataPayload<GatewayDispatchEvents.GuildSoundboardSoundDelete, GatewayGuildSoundboardSoundDeleteDispatchData>;
export interface GatewayGuildSoundboardSoundsUpdateDispatchData {
/** The guild's soundboard sound */
soundboard_sounds: APISoundBoard[];
/** ID of the guild */
guild_id: string;
}
export type GatewayGuildSoundboardSoundsUpdateDispatch = DataPayload<GatewayDispatchEvents.GuildSoundboardSoundsUpdate, GatewayGuildSoundboardSoundsUpdateDispatchData>;
export interface GatewaySoundboardSoundsDispatchData {
/** The guild's soundboard sounds */
soundboard_sounds: APISoundBoard[];
/** ID of the guild */
guild_id: string;
}
export type GatewaySoundboardSoundsDispatch = DataPayload<GatewayDispatchEvents.SoundboardSounds, GatewaySoundboardSoundsDispatchData>;
/**
* https://discord.com/developers/docs/topics/gateway-events#integration-create
*/
export type GatewayIntegrationCreateDispatch = DataPayload<GatewayDispatchEvents.IntegrationCreate, GatewayIntegrationCreateDispatchData>;
/**
* https://discord.com/developers/docs/topics/gateway-events#integration-create
*/
export type GatewayIntegrationCreateDispatchData = APIGuildIntegration & {
guild_id: Snowflake;
};
/**
* https://discord.com/developers/docs/topics/gateway-events#integration-update
*/
export type GatewayIntegrationUpdateDispatch = DataPayload<GatewayDispatchEvents.IntegrationUpdate, GatewayIntegrationUpdateDispatchData>;
/**
* https://discord.com/developers/docs/topics/gateway-events#integration-update
*/
export type GatewayIntegrationUpdateDispatchData = APIGuildIntegration & {
guild_id: Snowflake;
};
/**
* https://discord.com/developers/docs/topics/gateway-events#integration-update
*/
export type GatewayIntegrationDeleteDispatch = DataPayload<GatewayDispatchEvents.IntegrationDelete, GatewayIntegrationDeleteDispatchData>;
/**
* https://discord.com/developers/docs/topics/gateway-events#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-events#interaction-create
*/
export type GatewayInteractionCreateDispatch = DataPayload<GatewayDispatchEvents.InteractionCreate, GatewayInteractionCreateDispatchData>;
/**
* https://discord.com/developers/docs/topics/gateway-events#interaction-create
*/
export type GatewayInteractionCreateDispatchData = APIInteraction;
/**
* https://discord.com/developers/docs/topics/gateway-events#invite-create
*/
export type GatewayInviteCreateDispatch = DataPayload<GatewayDispatchEvents.InviteCreate, GatewayInviteCreateDispatchData>;
/**
* https://discord.com/developers/docs/topics/gateway-events#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-events#invite-delete
*/
export type GatewayInviteDeleteDispatch = DataPayload<GatewayDispatchEvents.InviteDelete, GatewayInviteDeleteDispatchData>;
/**
* https://discord.com/developers/docs/topics/gateway-events#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-events#message-create
*/
export type GatewayMessageCreateDispatch = DataPayload<GatewayDispatchEvents.MessageCreate, GatewayMessageCreateDispatchData>;
/**
* https://discord.com/developers/docs/topics/gateway-events#message-create
*/
export type GatewayMessageCreateDispatchData = GatewayMessageEventExtraFields & Omit<APIMessage, 'mentions'>;
/**
* https://discord.com/developers/docs/topics/gateway-events#message-update
*/
export type GatewayMessageUpdateDispatch = DataPayload<GatewayDispatchEvents.MessageUpdate, GatewayMessageUpdateDispatchData>;
/**
* https://discord.com/developers/docs/topics/gateway-events#message-update
*/
export type GatewayMessageUpdateDispatchData = Omit<GatewayMessageCreateDispatchData, 'tts'> & {
tts: false;
};
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?: Omit<APIGuildMember, 'user'>;
/**
* 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-events#message-delete
*/
export type GatewayMessageDeleteDispatch = DataPayload<GatewayDispatchEvents.MessageDelete, GatewayMessageDeleteDispatchData>;
/**
* https://discord.com/developers/docs/topics/gateway-events#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-events#message-delete-bulk
*/
export type GatewayMessageDeleteBulkDispatch = DataPayload<GatewayDispatchEvents.MessageDeleteBulk, GatewayMessageDeleteBulkDispatchData>;
/**
* https://discord.com/developers/docs/topics/gateway-events#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-events#message-reaction-add
*/
export type GatewayMessageReactionAddDispatch = ReactionData<GatewayDispatchEvents.MessageReactionAdd>;
/**
* https://discord.com/developers/docs/topics/gateway-events#message-reaction-add
*/
export type GatewayMessageReactionAddDispatchData = GatewayMessageReactionAddDispatch['d'];
/**
* https://discord.com/developers/docs/topics/gateway-events#message-reaction-remove
*/
export type GatewayMessageReactionRemoveDispatch = ReactionData<GatewayDispatchEvents.MessageReactionRemove, 'burst_colors' | 'member' | 'message_author_id'>;
/**
* https://discord.com/developers/docs/topics/gateway-events#message-reaction-remove
*/
export type GatewayMessageReactionRemoveDispatchData = GatewayMessageReactionRemoveDispatch['d'];
/**
* https://discord.com/developers/docs/topics/gateway-events#message-reaction-remove-all
*/
export type GatewayMessageReactionRemoveAllDispatch = DataPayload<GatewayDispatchEvents.MessageReactionRemoveAll, GatewayMessageReactionRemoveAllDispatchData>;
/**
* https://discord.com/developers/docs/topics/gateway-events#message-reaction-remove-all
*/
export type GatewayMessageReactionRemoveAllDispatchData = MessageReactionRemoveData;
/**
* https://discord.com/developers/docs/topics/gateway-events#message-reaction-remove-emoji
*/
export type GatewayMessageReactionRemoveEmojiDispatch = DataPayload<GatewayDispatchEvents.MessageReactionRemoveEmoji, GatewayMessageReactionRemoveEmojiDispatchData>;
/**
* https://discord.com/developers/docs/topics/gateway-events#message-reaction-remove-emoji
*/
export interface GatewayMessageReactionRemoveEmojiDispatchData extends MessageReactionRemoveData {
/**
* The emoji that was removed
*/
emoji: APIEmoji;
}
/**
* https://discord.com/developers/docs/topics/gateway-events#presence-update
*/
export type GatewayPresenceUpdateDispatch = DataPayload<GatewayDispatchEvents.PresenceUpdate, GatewayPresenceUpdateDispatchData>;
/**
* https://discord.com/developers/docs/topics/gateway-events#presence-update
*/
export type GatewayPresenceUpdateDispatchData = RawGatewayPresenceUpdate;
/**
* https://discord.com/developers/docs/topics/gateway-events#stage-instance-create
*/
export type GatewayStageInstanceCreateDispatch = DataPayload<GatewayDispatchEvents.StageInstanceCreate, GatewayStageInstanceCreateDispatchData>;
/**
* https://discord.com/developers/docs/topics/gateway-events#stage-instance-create
*/
export type GatewayStageInstanceCreateDispatchData = APIStageInstance;
/**
* https://discord.com/developers/docs/topics/gateway-events#stage-instance-delete
*/
export type GatewayStageInstanceDeleteDispatch = DataPayload<GatewayDispatchEvents.StageInstanceDelete, GatewayStageInstanceDeleteDispatchData>;
/**
* https://discord.com/developers/docs/topics/gateway-events#stage-instance-delete
*/
export type GatewayStageInstanceDeleteDispatchData = APIStageInstance;
/**
* https://discord.com/developers/docs/topics/gateway-events#stage-instance-update
*/
export type GatewayStageInstanceUpdateDispatch = DataPayload<GatewayDispatchEvents.StageInstanceUpdate, GatewayStageInstanceUpdateDispatchData>;
/**
* https://discord.com/developers/docs/topics/gateway-events#stage-instance-update
*/
export type GatewayStageInstanceUpdateDispatchData = APIStageInstance;
/**
* https://canary.discord.com/developers/docs/topics/gateway-events#subscription-create
*/
export type GatewaySubscriptionCreateDispatch = DataPayload<GatewayDispatchEvents.SubscriptionCreate, GatewaySubscriptionCreateDispatchData>;
export type GatewaySubscriptionCreateDispatchData = APISubscription;
/**
* https://canary.discord.com/developers/docs/topics/gateway-events#subscription-update
*/
export type GatewaySubscriptionUpdateDispatch = DataPayload<GatewayDispatchEvents.SubscriptionUpdate, GatewaySubscriptionUpdateDispatchData>;
export type GatewaySubscriptionUpdateDispatchData = APISubscription;
/**
* https://canary.discord.com/developers/docs/topics/gateway-events#subscription-delete
*/
export type GatewaySubscriptionDeleteDispatch = DataPayload<GatewayDispatchEvents.SubscriptionDelete, GatewaySubscriptionDeleteDispatchData>;
export type GatewaySubscriptionDeleteDispatchData = APISubscription;
/**
* https://discord.com/developers/docs/topics/gateway-events#thread-list-sync
*/
export type GatewayThreadListSyncDispatch = DataPayload<GatewayDispatchEvents.ThreadListSync, GatewayThreadListSyncDispatchData>;
/**
* https://discord.com/developers/docs/topics/gateway-events#thread-list-sync
*/
export type GatewayThreadListSyncDispatchData = RawGatewayThreadListSync;
/**
* https://discord.com/developers/docs/topics/gateway-events#thread-members-update
*/
export type GatewayThreadMembersUpdateDispatch = DataPayload<GatewayDispatchEvents.ThreadMembersUpdate, GatewayThreadMembersUpdateDispatchData>;
/**
* https://discord.com/developers/docs/topics/gateway-events#thread-members-update
*/
export type GatewayThreadMembersUpdateDispatchData = RawGatewayThreadMembersUpdate;
/**
* https://discord.com/developers/docs/topics/gateway-events#thread-member-update
*/
export type GatewayThreadMemberUpdateDispatch = DataPayload<GatewayDispatchEvents.ThreadMemberUpdate, GatewayThreadMemberUpdateDispatchData>;
/**
* https://discord.com/developers/docs/topics/gateway-events#thread-member-update
*/
export type GatewayThreadMemberUpdateDispatchData = APIThreadMember & {
guild_id: Snowflake;
};
/**
* https://discord.com/developers/docs/topics/gateway-events#thread-create
*/
export type GatewayThreadCreateDispatch = DataPayload<GatewayDispatchEvents.ThreadCreate, GatewayThreadCreateDispatchData>;
/**
* https://discord.com/developers/docs/topics/gateway-events#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-events#thread-update
*/
export type GatewayThreadUpdateDispatch = DataPayload<GatewayDispatchEvents.ThreadUpdate, GatewayThreadUpdateDispatchData>;
/**
* https://discord.com/developers/docs/topics/gateway-events#thread-update
*/
export type GatewayThreadUpdateDispatchData = APIThreadChannel;
/**
* https://discord.com/developers/docs/topics/gateway-events#thread-delete
*/
export type GatewayThreadDeleteDispatch = DataPayload<GatewayDispatchEvents.ThreadDelete, GatewayThreadDeleteDispatchData>;
/**
* https://discord.com/developers/docs/topics/gateway-events#thread-delete
*/
export interface GatewayThreadDeleteDispatchData {
/**
* The id of the channel
*/
id: Snowflake;
/**
* The id of the guild
*/
guild_id: Snowflake;
/**
* The id of the parent channel of the thread
*/
parent_id: Snowflake;
/**
* The type of the channel
*
* See https://discord.com/developers/docs/resources/channel#channel-object-channel-types
*/
type: ChannelType;
}
/**
* https://discord.com/developers/docs/topics/gateway-events#typing-start
*/
export type GatewayTypingStartDispatch = DataPayload<GatewayDispatchEvents.TypingStart, GatewayTypingStartDispatchData>;
/**
* https://discord.com/developers/docs/topics/gateway-events#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-events#user-update
*/
export type GatewayUserUpdateDispatch = DataPayload<GatewayDispatchEvents.UserUpdate, GatewayUserUpdateDispatchData>;
/**
* https://discord.com/developers/docs/topics/gateway-events#user-update
*/
export type GatewayUserUpdateDispatchData = APIUser;
/**
* https://discord.com/developers/docs/topics/gateway-events#voice-channel-effect-send
*/
export type GatewayVoiceChannelEffectSendDispach = DataPayload<GatewayDispatchEvents.VoiceChannelEffectSend, GatewayVoiceChannelEffectSendDispachData>;
/**
* https://discord.com/developers/docs/topics/gateway-events#voice-channel-effect-send-voice-channel-effect-send-event-fields
*/
export type GatewayVoiceChannelEffectSendDispachData = GatewayVoiceChannelEffectSendSoundboard | GatewayVoiceChannelEffectSendReaction;
export type _GatewayVoiceChannelEffectSendDispachData = {
/** ID of the channel the effect was sent in */
channel_id: string;
/** ID of the guild the effect was sent in */
guild_id: string;
/** ID of the user who sent the effect */
user_id: string;
/** The emoji sent, for emoji reaction and soundboard effects */
emoji?: APIPartialEmoji | null;
/** The type of emoji animation, for emoji reaction and soundboard effects */
animation_type?: AnimationTypes | null;
/** The ID of the emoji animation, for emoji reaction and soundboard effects */
animation_id?: number;
/** The ID of the soundboard sound, for soundboard effects */
sound_id: string | number;
/** The volume of the soundboard sound, from 0 to 1, for soundboard effects */
sound_volume?: number;
};
export type GatewayVoiceChannelEffectSendReaction = Omit<_GatewayVoiceChannelEffectSendDispachData, 'sound_