feat(types,bot): Add RATE_LIMITED & RESUMED handler & event (#4391)

Co-authored-by: Link <link20050703@gmail.com>
This commit is contained in:
Fleny
2025-08-24 23:14:14 +02:00
committed by GitHub
parent 33ea279714
commit 274b5972dd
6 changed files with 126 additions and 76 deletions

View File

@@ -1,4 +1,4 @@
import type { DiscordGatewayPayload, DiscordReady, DiscordVoiceChannelEffectAnimationType } from '@discordeno/types'
import type { DiscordGatewayPayload, DiscordRateLimited, DiscordReady, DiscordVoiceChannelEffectAnimationType } from '@discordeno/types'
import type { Collection } from '@discordeno/utils'
import type { DesiredPropertiesBehavior, SetupDesiredProps, TransformersDesiredProperties } from './desiredProperties.js'
import type {
@@ -62,6 +62,8 @@ export type EventHandlers<TProps extends TransformersDesiredProperties, TBehavio
},
rawPayload: DiscordReady,
) => unknown
resumed: (shardId: number) => unknown
rateLimited: (data: DiscordRateLimited, shardId: number) => unknown
interactionCreate: (interaction: SetupDesiredProps<Interaction, TProps, TBehavior>) => unknown
integrationCreate: (integration: Integration) => unknown
integrationDelete: (payload: { id: bigint; guildId: bigint; applicationId?: bigint }) => unknown

View File

@@ -4,82 +4,86 @@ import type { Bot, DesiredPropertiesBehavior, DiscordGatewayPayload, GatewayDisp
export function createBotGatewayHandlers<TProps extends TransformersDesiredProperties, TBehavior extends DesiredPropertiesBehavior>(
options: Partial<GatewayHandlers<TProps, TBehavior>>,
): GatewayHandlers<TProps, TBehavior> {
const _options = options as Partial<GatewayHandlers<TransformersDesiredProperties, DesiredPropertiesBehavior.RemoveKey>>
return {
APPLICATION_COMMAND_PERMISSIONS_UPDATE: options.APPLICATION_COMMAND_PERMISSIONS_UPDATE ?? handlers.handleApplicationCommandPermissionsUpdate,
AUTO_MODERATION_ACTION_EXECUTION: options.AUTO_MODERATION_ACTION_EXECUTION ?? handlers.handleAutoModerationActionExecution,
AUTO_MODERATION_RULE_CREATE: options.AUTO_MODERATION_RULE_CREATE ?? handlers.handleAutoModerationRuleCreate,
AUTO_MODERATION_RULE_DELETE: options.AUTO_MODERATION_RULE_DELETE ?? handlers.handleAutoModerationRuleDelete,
AUTO_MODERATION_RULE_UPDATE: options.AUTO_MODERATION_RULE_UPDATE ?? handlers.handleAutoModerationRuleUpdate,
CHANNEL_CREATE: options.CHANNEL_CREATE ?? handlers.handleChannelCreate,
CHANNEL_DELETE: options.CHANNEL_DELETE ?? handlers.handleChannelDelete,
CHANNEL_PINS_UPDATE: options.CHANNEL_PINS_UPDATE ?? handlers.handleChannelPinsUpdate,
CHANNEL_UPDATE: options.CHANNEL_UPDATE ?? handlers.handleChannelUpdate,
GUILD_AUDIT_LOG_ENTRY_CREATE: options.GUILD_AUDIT_LOG_ENTRY_CREATE ?? handlers.handleGuildAuditLogEntryCreate,
GUILD_BAN_ADD: options.GUILD_BAN_ADD ?? handlers.handleGuildBanAdd,
GUILD_BAN_REMOVE: options.GUILD_BAN_REMOVE ?? handlers.handleGuildBanRemove,
GUILD_CREATE: options.GUILD_CREATE ?? handlers.handleGuildCreate,
GUILD_DELETE: options.GUILD_DELETE ?? handlers.handleGuildDelete,
GUILD_EMOJIS_UPDATE: options.GUILD_EMOJIS_UPDATE ?? handlers.handleGuildEmojisUpdate,
GUILD_INTEGRATIONS_UPDATE: options.GUILD_INTEGRATIONS_UPDATE ?? handlers.handleGuildIntegrationsUpdate,
GUILD_MEMBER_ADD: options.GUILD_MEMBER_ADD ?? handlers.handleGuildMemberAdd,
GUILD_MEMBER_REMOVE: options.GUILD_MEMBER_REMOVE ?? handlers.handleGuildMemberRemove,
GUILD_MEMBER_UPDATE: options.GUILD_MEMBER_UPDATE ?? handlers.handleGuildMemberUpdate,
GUILD_MEMBERS_CHUNK: options.GUILD_MEMBERS_CHUNK ?? handlers.handleGuildMembersChunk,
GUILD_ROLE_CREATE: options.GUILD_ROLE_CREATE ?? handlers.handleGuildRoleCreate,
GUILD_ROLE_DELETE: options.GUILD_ROLE_DELETE ?? handlers.handleGuildRoleDelete,
GUILD_ROLE_UPDATE: options.GUILD_ROLE_UPDATE ?? handlers.handleGuildRoleUpdate,
GUILD_SCHEDULED_EVENT_CREATE: options.GUILD_SCHEDULED_EVENT_CREATE ?? handlers.handleGuildScheduledEventCreate,
GUILD_SCHEDULED_EVENT_DELETE: options.GUILD_SCHEDULED_EVENT_DELETE ?? handlers.handleGuildScheduledEventDelete,
GUILD_SCHEDULED_EVENT_UPDATE: options.GUILD_SCHEDULED_EVENT_UPDATE ?? handlers.handleGuildScheduledEventUpdate,
GUILD_SCHEDULED_EVENT_USER_ADD: options.GUILD_SCHEDULED_EVENT_USER_ADD ?? handlers.handleGuildScheduledEventUserAdd,
GUILD_SCHEDULED_EVENT_USER_REMOVE: options.GUILD_SCHEDULED_EVENT_USER_REMOVE ?? handlers.handleGuildScheduledEventUserRemove,
GUILD_STICKERS_UPDATE: options.GUILD_STICKERS_UPDATE ?? handlers.handleGuildStickersUpdate,
GUILD_UPDATE: options.GUILD_UPDATE ?? handlers.handleGuildUpdate,
INTERACTION_CREATE: options.INTERACTION_CREATE ?? handlers.handleInteractionCreate,
INTEGRATION_CREATE: options.INTEGRATION_CREATE ?? handlers.handleIntegrationCreate,
INTEGRATION_UPDATE: options.INTEGRATION_UPDATE ?? handlers.handleIntegrationUpdate,
INTEGRATION_DELETE: options.INTEGRATION_DELETE ?? handlers.handleIntegrationDelete,
INVITE_CREATE: options.INVITE_CREATE ?? handlers.handleInviteCreate,
INVITE_DELETE: options.INVITE_DELETE ?? handlers.handleInviteDelete,
MESSAGE_CREATE: options.MESSAGE_CREATE ?? handlers.handleMessageCreate,
MESSAGE_DELETE_BULK: options.MESSAGE_DELETE_BULK ?? handlers.handleMessageDeleteBulk,
MESSAGE_DELETE: options.MESSAGE_DELETE ?? handlers.handleMessageDelete,
MESSAGE_REACTION_ADD: options.MESSAGE_REACTION_ADD ?? handlers.handleMessageReactionAdd,
MESSAGE_REACTION_REMOVE_ALL: options.MESSAGE_REACTION_REMOVE_ALL ?? handlers.handleMessageReactionRemoveAll,
MESSAGE_REACTION_REMOVE_EMOJI: options.MESSAGE_REACTION_REMOVE_EMOJI ?? handlers.handleMessageReactionRemoveEmoji,
MESSAGE_REACTION_REMOVE: options.MESSAGE_REACTION_REMOVE ?? handlers.handleMessageReactionRemove,
MESSAGE_UPDATE: options.MESSAGE_UPDATE ?? handlers.handleMessageUpdate,
PRESENCE_UPDATE: options.PRESENCE_UPDATE ?? handlers.handlePresenceUpdate,
READY: options.READY ?? handlers.handleReady,
STAGE_INSTANCE_CREATE: options.STAGE_INSTANCE_CREATE ?? handlers.handleStageInstanceCreate,
STAGE_INSTANCE_DELETE: options.STAGE_INSTANCE_DELETE ?? handlers.handleStageInstanceDelete,
STAGE_INSTANCE_UPDATE: options.STAGE_INSTANCE_UPDATE ?? handlers.handleStageInstanceUpdate,
THREAD_CREATE: options.THREAD_CREATE ?? handlers.handleThreadCreate,
THREAD_DELETE: options.THREAD_DELETE ?? handlers.handleThreadDelete,
THREAD_UPDATE: options.THREAD_UPDATE ?? handlers.handleThreadUpdate,
THREAD_LIST_SYNC: options.THREAD_LIST_SYNC ?? handlers.handleThreadListSync,
THREAD_MEMBER_UPDATE: options.THREAD_MEMBERS_UPDATE ?? handlers.handleThreadMembersUpdate,
THREAD_MEMBERS_UPDATE: options.THREAD_MEMBERS_UPDATE ?? handlers.handleThreadMembersUpdate,
TYPING_START: options.TYPING_START ?? handlers.handleTypingStart,
USER_UPDATE: options.USER_UPDATE ?? handlers.handleUserUpdate,
VOICE_CHANNEL_EFFECT_SEND: options.VOICE_CHANNEL_EFFECT_SEND ?? handlers.handleVoiceChannelEffectSend,
VOICE_SERVER_UPDATE: options.VOICE_SERVER_UPDATE ?? handlers.handleVoiceServerUpdate,
VOICE_STATE_UPDATE: options.VOICE_STATE_UPDATE ?? handlers.handleVoiceStateUpdate,
WEBHOOKS_UPDATE: options.WEBHOOKS_UPDATE ?? handlers.handleWebhooksUpdate,
ENTITLEMENT_CREATE: options.ENTITLEMENT_CREATE ?? handlers.handleEntitlementCreate,
ENTITLEMENT_UPDATE: options.ENTITLEMENT_UPDATE ?? handlers.handleEntitlementUpdate,
ENTITLEMENT_DELETE: options.ENTITLEMENT_DELETE ?? handlers.handleEntitlementDelete,
MESSAGE_POLL_VOTE_ADD: options.MESSAGE_POLL_VOTE_ADD ?? handlers.handleMessagePollVoteAdd,
MESSAGE_POLL_VOTE_REMOVE: options.MESSAGE_POLL_VOTE_REMOVE ?? handlers.handleMessagePollVoteRemove,
SUBSCRIPTION_CREATE: options.SUBSCRIPTION_CREATE ?? handlers.handleSubscriptionCreate,
SUBSCRIPTION_UPDATE: options.SUBSCRIPTION_UPDATE ?? handlers.handleSubscriptionUpdate,
SUBSCRIPTION_DELETE: options.SUBSCRIPTION_DELETE ?? handlers.handleSubscriptionDelete,
GUILD_SOUNDBOARD_SOUND_CREATE: options.GUILD_SOUNDBOARD_SOUND_CREATE ?? handlers.handleGuildSoundboardSoundCreate,
GUILD_SOUNDBOARD_SOUND_DELETE: options.GUILD_SOUNDBOARD_SOUND_DELETE ?? handlers.handleGuildSoundboardSoundDelete,
GUILD_SOUNDBOARD_SOUND_UPDATE: options.GUILD_SOUNDBOARD_SOUND_UPDATE ?? handlers.handleGuildSoundboardSoundUpdate,
GUILD_SOUNDBOARD_SOUNDS_UPDATE: options.GUILD_SOUNDBOARD_SOUNDS_UPDATE ?? handlers.handleGuildSoundboardSoundsUpdate,
SOUNDBOARD_SOUNDS: options.SOUNDBOARD_SOUNDS ?? handlers.handleSoundboardSounds,
} as GatewayHandlers<TProps, TBehavior>
APPLICATION_COMMAND_PERMISSIONS_UPDATE: _options.APPLICATION_COMMAND_PERMISSIONS_UPDATE ?? handlers.handleApplicationCommandPermissionsUpdate,
AUTO_MODERATION_ACTION_EXECUTION: _options.AUTO_MODERATION_ACTION_EXECUTION ?? handlers.handleAutoModerationActionExecution,
AUTO_MODERATION_RULE_CREATE: _options.AUTO_MODERATION_RULE_CREATE ?? handlers.handleAutoModerationRuleCreate,
AUTO_MODERATION_RULE_DELETE: _options.AUTO_MODERATION_RULE_DELETE ?? handlers.handleAutoModerationRuleDelete,
AUTO_MODERATION_RULE_UPDATE: _options.AUTO_MODERATION_RULE_UPDATE ?? handlers.handleAutoModerationRuleUpdate,
CHANNEL_CREATE: _options.CHANNEL_CREATE ?? handlers.handleChannelCreate,
CHANNEL_DELETE: _options.CHANNEL_DELETE ?? handlers.handleChannelDelete,
CHANNEL_PINS_UPDATE: _options.CHANNEL_PINS_UPDATE ?? handlers.handleChannelPinsUpdate,
CHANNEL_UPDATE: _options.CHANNEL_UPDATE ?? handlers.handleChannelUpdate,
GUILD_AUDIT_LOG_ENTRY_CREATE: _options.GUILD_AUDIT_LOG_ENTRY_CREATE ?? handlers.handleGuildAuditLogEntryCreate,
GUILD_BAN_ADD: _options.GUILD_BAN_ADD ?? handlers.handleGuildBanAdd,
GUILD_BAN_REMOVE: _options.GUILD_BAN_REMOVE ?? handlers.handleGuildBanRemove,
GUILD_CREATE: _options.GUILD_CREATE ?? handlers.handleGuildCreate,
GUILD_DELETE: _options.GUILD_DELETE ?? handlers.handleGuildDelete,
GUILD_EMOJIS_UPDATE: _options.GUILD_EMOJIS_UPDATE ?? handlers.handleGuildEmojisUpdate,
GUILD_INTEGRATIONS_UPDATE: _options.GUILD_INTEGRATIONS_UPDATE ?? handlers.handleGuildIntegrationsUpdate,
GUILD_MEMBER_ADD: _options.GUILD_MEMBER_ADD ?? handlers.handleGuildMemberAdd,
GUILD_MEMBER_REMOVE: _options.GUILD_MEMBER_REMOVE ?? handlers.handleGuildMemberRemove,
GUILD_MEMBER_UPDATE: _options.GUILD_MEMBER_UPDATE ?? handlers.handleGuildMemberUpdate,
GUILD_MEMBERS_CHUNK: _options.GUILD_MEMBERS_CHUNK ?? handlers.handleGuildMembersChunk,
GUILD_ROLE_CREATE: _options.GUILD_ROLE_CREATE ?? handlers.handleGuildRoleCreate,
GUILD_ROLE_DELETE: _options.GUILD_ROLE_DELETE ?? handlers.handleGuildRoleDelete,
GUILD_ROLE_UPDATE: _options.GUILD_ROLE_UPDATE ?? handlers.handleGuildRoleUpdate,
GUILD_SCHEDULED_EVENT_CREATE: _options.GUILD_SCHEDULED_EVENT_CREATE ?? handlers.handleGuildScheduledEventCreate,
GUILD_SCHEDULED_EVENT_DELETE: _options.GUILD_SCHEDULED_EVENT_DELETE ?? handlers.handleGuildScheduledEventDelete,
GUILD_SCHEDULED_EVENT_UPDATE: _options.GUILD_SCHEDULED_EVENT_UPDATE ?? handlers.handleGuildScheduledEventUpdate,
GUILD_SCHEDULED_EVENT_USER_ADD: _options.GUILD_SCHEDULED_EVENT_USER_ADD ?? handlers.handleGuildScheduledEventUserAdd,
GUILD_SCHEDULED_EVENT_USER_REMOVE: _options.GUILD_SCHEDULED_EVENT_USER_REMOVE ?? handlers.handleGuildScheduledEventUserRemove,
GUILD_STICKERS_UPDATE: _options.GUILD_STICKERS_UPDATE ?? handlers.handleGuildStickersUpdate,
GUILD_UPDATE: _options.GUILD_UPDATE ?? handlers.handleGuildUpdate,
INTERACTION_CREATE: _options.INTERACTION_CREATE ?? handlers.handleInteractionCreate,
INTEGRATION_CREATE: _options.INTEGRATION_CREATE ?? handlers.handleIntegrationCreate,
INTEGRATION_UPDATE: _options.INTEGRATION_UPDATE ?? handlers.handleIntegrationUpdate,
INTEGRATION_DELETE: _options.INTEGRATION_DELETE ?? handlers.handleIntegrationDelete,
INVITE_CREATE: _options.INVITE_CREATE ?? handlers.handleInviteCreate,
INVITE_DELETE: _options.INVITE_DELETE ?? handlers.handleInviteDelete,
MESSAGE_CREATE: _options.MESSAGE_CREATE ?? handlers.handleMessageCreate,
MESSAGE_DELETE_BULK: _options.MESSAGE_DELETE_BULK ?? handlers.handleMessageDeleteBulk,
MESSAGE_DELETE: _options.MESSAGE_DELETE ?? handlers.handleMessageDelete,
MESSAGE_REACTION_ADD: _options.MESSAGE_REACTION_ADD ?? handlers.handleMessageReactionAdd,
MESSAGE_REACTION_REMOVE_ALL: _options.MESSAGE_REACTION_REMOVE_ALL ?? handlers.handleMessageReactionRemoveAll,
MESSAGE_REACTION_REMOVE_EMOJI: _options.MESSAGE_REACTION_REMOVE_EMOJI ?? handlers.handleMessageReactionRemoveEmoji,
MESSAGE_REACTION_REMOVE: _options.MESSAGE_REACTION_REMOVE ?? handlers.handleMessageReactionRemove,
MESSAGE_UPDATE: _options.MESSAGE_UPDATE ?? handlers.handleMessageUpdate,
PRESENCE_UPDATE: _options.PRESENCE_UPDATE ?? handlers.handlePresenceUpdate,
READY: _options.READY ?? handlers.handleReady,
RESUMED: _options.RESUMED ?? handlers.handleResumed,
RATE_LIMITED: _options.RATE_LIMITED ?? handlers.handleRateLimited,
STAGE_INSTANCE_CREATE: _options.STAGE_INSTANCE_CREATE ?? handlers.handleStageInstanceCreate,
STAGE_INSTANCE_DELETE: _options.STAGE_INSTANCE_DELETE ?? handlers.handleStageInstanceDelete,
STAGE_INSTANCE_UPDATE: _options.STAGE_INSTANCE_UPDATE ?? handlers.handleStageInstanceUpdate,
THREAD_CREATE: _options.THREAD_CREATE ?? handlers.handleThreadCreate,
THREAD_DELETE: _options.THREAD_DELETE ?? handlers.handleThreadDelete,
THREAD_UPDATE: _options.THREAD_UPDATE ?? handlers.handleThreadUpdate,
THREAD_LIST_SYNC: _options.THREAD_LIST_SYNC ?? handlers.handleThreadListSync,
THREAD_MEMBER_UPDATE: _options.THREAD_MEMBERS_UPDATE ?? handlers.handleThreadMembersUpdate,
THREAD_MEMBERS_UPDATE: _options.THREAD_MEMBERS_UPDATE ?? handlers.handleThreadMembersUpdate,
TYPING_START: _options.TYPING_START ?? handlers.handleTypingStart,
USER_UPDATE: _options.USER_UPDATE ?? handlers.handleUserUpdate,
VOICE_CHANNEL_EFFECT_SEND: _options.VOICE_CHANNEL_EFFECT_SEND ?? handlers.handleVoiceChannelEffectSend,
VOICE_SERVER_UPDATE: _options.VOICE_SERVER_UPDATE ?? handlers.handleVoiceServerUpdate,
VOICE_STATE_UPDATE: _options.VOICE_STATE_UPDATE ?? handlers.handleVoiceStateUpdate,
WEBHOOKS_UPDATE: _options.WEBHOOKS_UPDATE ?? handlers.handleWebhooksUpdate,
ENTITLEMENT_CREATE: _options.ENTITLEMENT_CREATE ?? handlers.handleEntitlementCreate,
ENTITLEMENT_UPDATE: _options.ENTITLEMENT_UPDATE ?? handlers.handleEntitlementUpdate,
ENTITLEMENT_DELETE: _options.ENTITLEMENT_DELETE ?? handlers.handleEntitlementDelete,
MESSAGE_POLL_VOTE_ADD: _options.MESSAGE_POLL_VOTE_ADD ?? handlers.handleMessagePollVoteAdd,
MESSAGE_POLL_VOTE_REMOVE: _options.MESSAGE_POLL_VOTE_REMOVE ?? handlers.handleMessagePollVoteRemove,
SUBSCRIPTION_CREATE: _options.SUBSCRIPTION_CREATE ?? handlers.handleSubscriptionCreate,
SUBSCRIPTION_UPDATE: _options.SUBSCRIPTION_UPDATE ?? handlers.handleSubscriptionUpdate,
SUBSCRIPTION_DELETE: _options.SUBSCRIPTION_DELETE ?? handlers.handleSubscriptionDelete,
GUILD_SOUNDBOARD_SOUND_CREATE: _options.GUILD_SOUNDBOARD_SOUND_CREATE ?? handlers.handleGuildSoundboardSoundCreate,
GUILD_SOUNDBOARD_SOUND_DELETE: _options.GUILD_SOUNDBOARD_SOUND_DELETE ?? handlers.handleGuildSoundboardSoundDelete,
GUILD_SOUNDBOARD_SOUND_UPDATE: _options.GUILD_SOUNDBOARD_SOUND_UPDATE ?? handlers.handleGuildSoundboardSoundUpdate,
GUILD_SOUNDBOARD_SOUNDS_UPDATE: _options.GUILD_SOUNDBOARD_SOUNDS_UPDATE ?? handlers.handleGuildSoundboardSoundsUpdate,
SOUNDBOARD_SOUNDS: _options.SOUNDBOARD_SOUNDS ?? handlers.handleSoundboardSounds,
} satisfies GatewayHandlers<TransformersDesiredProperties, DesiredPropertiesBehavior.RemoveKey> as unknown as GatewayHandlers<TProps, TBehavior>
}
export type GatewayHandlers<TProps extends TransformersDesiredProperties, TBehavior extends DesiredPropertiesBehavior> = Record<

View File

@@ -0,0 +1,9 @@
import type { DiscordGatewayPayload, DiscordRateLimited } from '@discordeno/types'
import type { Bot } from '../../index.js'
export async function handleRateLimited(bot: Bot, data: DiscordGatewayPayload, shardId: number): Promise<void> {
if (!bot.events.rateLimited) return
const payload = data.d as DiscordRateLimited
bot.events.rateLimited(payload, shardId)
}

View File

@@ -0,0 +1,8 @@
import type { DiscordGatewayPayload } from '@discordeno/types'
import type { Bot } from '../../index.js'
export async function handleResumed(bot: Bot, _data: DiscordGatewayPayload, shardId: number): Promise<void> {
if (!bot.events.resumed) return
bot.events.resumed(shardId)
}

View File

@@ -1,4 +1,6 @@
export * from './PRESENCE_UPDATE.js'
export * from './RATE_LIMITED.js'
export * from './READY.js'
export * from './RESUMED.js'
export * from './TYPING_START.js'
export * from './USER_UPDATE.js'

View File

@@ -12,6 +12,7 @@ import type { DiscordIntegration, DiscordMember, DiscordMemberWithUser, DiscordU
import type { DiscordScheduledEvent } from './guildScheduledEvent.js'
import type { TargetTypes } from './invite.js'
import type { DiscordReactionType } from './message.js'
import type { GatewayOpcodes } from './opcodes.js'
import type { DiscordRole } from './permissions.js'
import type { DiscordSoundboardSound } from './soundboard.js'
import type { DiscordStageInstance } from './stageInstance.js'
@@ -199,6 +200,7 @@ export interface DiscordSessionStartLimit {
export type GatewayDispatchEventNames =
| 'READY'
| 'RESUMED'
| 'RATE_LIMITED'
| 'APPLICATION_COMMAND_PERMISSIONS_UPDATE'
| 'AUTO_MODERATION_RULE_CREATE'
| 'AUTO_MODERATION_RULE_UPDATE'
@@ -1061,3 +1063,26 @@ export interface DiscordPollVoteRemove {
/** ID of the answer. */
answer_id: number
}
/** https://discord.com/developers/docs/events/gateway-events#rate-limited-rate-limited-fields */
export interface DiscordRateLimited {
/** Gateway opcode of the event that was rate limited */
opcode: GatewayOpcodes
/** The number of seconds to wait before submitting another request */
retry_after: number
/**
* Metadata for the event that was rate limited
*
* @remarks
* This is dependent on the {@link opcode} field in this object
*/
meta: DiscordRequestGuildMemberRateLimitMetadata
}
/** https://discord.com/developers/docs/events/gateway-events#rate-limited-request-guild-member-rate-limit-metadata-structure */
export interface DiscordRequestGuildMemberRateLimitMetadata {
/** ID of the guild to get members for */
guild_id: string
/** nonce to identify the Guild Members Chunk response */
nonce?: string
}