feat: add guild scheduled event (#186)

Co-authored-by: Vlad Frangu <kingdgrizzle@gmail.com>
This commit is contained in:
Shubham Parihar
2021-11-25 18:45:05 +05:30
committed by GitHub
parent f2d62e3cdf
commit d333962715
42 changed files with 1550 additions and 16 deletions

View File

@@ -9,6 +9,7 @@ import type {
APIChannel,
APIEmoji,
APIGuild,
APIGuildScheduledEvent,
APIGuildIntegration,
APIGuildMember,
APIMessage,
@@ -183,6 +184,7 @@ export enum GatewayIntentBits {
DirectMessages = 1 << 12,
DirectMessageReactions = 1 << 13,
DirectMessageTyping = 1 << 14,
GuildScheduledEvents = 1 << 16,
}
/**
@@ -233,6 +235,11 @@ export enum GatewayDispatchEvents {
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 =
@@ -265,6 +272,11 @@ export type GatewayDispatchPayload =
| GatewayGuildModifyDispatch
| GatewayGuildRoleDeleteDispatch
| GatewayGuildRoleModifyDispatch
| GatewayGuildScheduledEventCreateDispatch
| GatewayGuildScheduledEventUpdateDispatch
| GatewayGuildScheduledEventDeleteDispatch
| GatewayGuildScheduledEventUserAddDispatch
| GatewayGuildScheduledEventUserRemoveDispatch
| GatewayGuildStickersUpdateDispatch
| GatewayIntegrationCreateDispatch
| GatewayIntegrationDeleteDispatch
@@ -808,6 +820,49 @@ export interface GatewayGuildRoleDeleteDispatchData {
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
*/

View File

@@ -9,6 +9,7 @@ import type {
APIChannel,
APIEmoji,
APIGuild,
APIGuildScheduledEvent,
APIGuildIntegration,
APIGuildMember,
APIMessage,
@@ -186,6 +187,7 @@ export enum GatewayIntentBits {
DirectMessages = 1 << 12,
DirectMessageReactions = 1 << 13,
DirectMessageTyping = 1 << 14,
GuildScheduledEvents = 1 << 16,
}
/**
@@ -242,6 +244,11 @@ export enum GatewayDispatchEvents {
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 =
@@ -274,6 +281,11 @@ export type GatewayDispatchPayload =
| GatewayGuildModifyDispatch
| GatewayGuildRoleDeleteDispatch
| GatewayGuildRoleModifyDispatch
| GatewayGuildScheduledEventCreateDispatch
| GatewayGuildScheduledEventUpdateDispatch
| GatewayGuildScheduledEventDeleteDispatch
| GatewayGuildScheduledEventUserAddDispatch
| GatewayGuildScheduledEventUserRemoveDispatch
| GatewayGuildStickersUpdateDispatch
| GatewayIntegrationCreateDispatch
| GatewayIntegrationDeleteDispatch
@@ -818,6 +830,49 @@ export interface GatewayGuildRoleDeleteDispatchData {
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
*/

View File

@@ -17,6 +17,7 @@ import type { StickerFormatType } from './sticker.ts';
import type { APIUser } from './user.ts';
import type { APIWebhook } from './webhook.ts';
import type { StageInstancePrivacyLevel } from './stageInstance.ts';
import type { GuildScheduledEventEntityType, GuildScheduledEventStatus } from './guildScheduledEvent.ts';
/**
* https://discord.com/developers/docs/resources/audit-log#audit-log-object-audit-log-structure
@@ -144,6 +145,10 @@ export enum AuditLogEvent {
StickerCreate = 90,
StickerUpdate,
StickerDelete,
GuildScheduledEventCreate = 100,
GuildScheduledEventUpdate,
GuildScheduledEventDelete,
}
/**
@@ -302,7 +307,10 @@ export type APIAuditLogChange =
| APIAuditLogChangeKeyFormatType
| APIAuditLogChangeKeyAsset
| APIAuditLogChangeKeyAvailable
| APIAuditLogChangeKeyGuildId;
| APIAuditLogChangeKeyGuildId
| APIAuditLogChangeKeyEntityType
| APIAuditLogChangeKeyStatus
| APIAuditLogChangeKeyLocation;
/**
* Returned when an entity's name is changed
@@ -310,7 +318,7 @@ export type APIAuditLogChange =
export type APIAuditLogChangeKeyName = AuditLogChangeData<'name', string>;
/**
* Returned when a guild's or sticker's description is changed
* Returned when a guild's or sticker's or guild scheduled event's description is changed
*/
export type APIAuditLogChangeKeyDescription = AuditLogChangeData<'description', string>;
@@ -502,7 +510,7 @@ export type APIAuditLogChangeKeyDeny = AuditLogChangeData<'deny', string>;
export type APIAuditLogChangeKeyCode = AuditLogChangeData<'code', string>;
/**
* Returned when an invite's channel_id is changed
* Returned when an invite's or guild scheduled event's channel_id is changed
*/
export type APIAuditLogChangeKeyChannelId = AuditLogChangeData<'channel_id', Snowflake>;
@@ -582,7 +590,7 @@ export type APIAuditLogChangeKeyExpireGracePeriod = AuditLogChangeData<'expire_g
export type APIAuditLogChangeKeyUserLimit = AuditLogChangeData<'user_limit', number>;
/**
* Returned when privacy level of a stage instance is changed
* Returned when privacy level of a stage instance or guild scheduled event is changed
*/
export type APIAuditLogChangeKeyPrivacyLevel = AuditLogChangeData<'privacy_level', StageInstancePrivacyLevel>;
@@ -611,6 +619,21 @@ export type APIAuditLogChangeKeyAvailable = AuditLogChangeData<'available', bool
*/
export type APIAuditLogChangeKeyGuildId = AuditLogChangeData<'guild_id', Snowflake>;
/**
* Returned when entity type of a guild scheduled event is changed
*/
export type APIAuditLogChangeKeyEntityType = AuditLogChangeData<'entity_type', GuildScheduledEventEntityType>;
/**
* Returned when status of a guild scheduled event is changed
*/
export type APIAuditLogChangeKeyStatus = AuditLogChangeData<'status', GuildScheduledEventStatus>;
/**
* Returned when location of a guild scheduled event is changed
*/
export type APIAuditLogChangeKeyLocation = AuditLogChangeData<'location', string>;
interface AuditLogChangeData<K extends string, D extends unknown> {
key: K;
/**

View File

@@ -11,6 +11,7 @@ import type { APIStageInstance } from './stageInstance.ts';
import type { APISticker } from './sticker.ts';
import type { APIUser } from './user.ts';
import type { GatewayVoiceState } from './voice.ts';
import type { APIGuildScheduledEvent } from './guildScheduledEvent.ts';
/**
* https://discord.com/developers/docs/resources/guild#unavailable-guild-object
@@ -325,6 +326,14 @@ export interface APIGuild extends APIPartialGuild {
* See https://discord.com/developers/docs/resources/sticker#sticker-object
*/
stickers: APISticker[];
/**
* 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[];
}
/**

View File

@@ -0,0 +1,104 @@
import type { APIUser } from './user.ts';
import type { Snowflake } from '../../globals.ts';
export interface APIGuildScheduledEvent {
/**
* The id of the guild event
*/
id: Snowflake;
/**
* The guild id which the scheduled event belongs to
*/
guild_id: Snowflake;
/**
* The channel id in which the scheduled event will be hosted, or `null` if entity type is `EXTERNAL`
*/
channel_id: Snowflake | null;
/**
* The id of the user that created the scheduled event
*/
creator_id: Snowflake | null;
/**
* The name of the scheduled event
*/
name: string;
/**
* The description of the scheduled event
*/
description?: string;
/**
* The time the scheduled event will start
*/
scheduled_start_time: string;
/**
* The time at which the guild event will end, or `null` if the event does not have a scheduled time to end
*/
scheduled_end_time: string | null;
/**
* The privacy level of the scheduled event
*/
privacy_level: GuildScheduledEventPrivacyLevel;
/**
* The status of the scheduled event
*/
status: GuildScheduledEventStatus;
/**
* The type of hosting entity associated with the scheduled event
*/
entity_type: GuildScheduledEventEntityType;
/**
* The id of the hosting entity associated with the scheduled event
*/
entity_id: Snowflake | null;
/**
* The entity metadata for the scheduled event
*/
entity_metadata: APIGuildScheduledEventEntityMetadata;
/**
* The user that created the scheduled event
*/
creator?: APIUser;
/**
* The number of users subscribed to the scheduled event
*/
user_count?: number;
}
/**
* https://discord.com/developers/docs/resources/guild-scheduled-event#guild-scheduled-event-object-guild-scheduled-event-entity-metadata
*/
export interface APIGuildScheduledEventEntityMetadata {
/**
* The location of the scheduled event
*/
location?: string;
}
/**
* https://discord.com/developers/docs/resources/guild-scheduled-event#guild-scheduled-event-object-guild-scheduled-event-entity-types
*/
export enum GuildScheduledEventEntityType {
StageInstance = 1,
Voice,
External,
}
/**
* https://discord.com/developers/docs/resources/guild-scheduled-event#guild-scheduled-event-object-guild-scheduled-event-status
*/
export enum GuildScheduledEventStatus {
Scheduled = 1,
Active,
Completed,
Canceled,
}
/**
* https://discord.com/developers/docs/resources/guild-scheduled-event#guild-scheduled-event-object-guild-scheduled-event-privacy-level
*/
export enum GuildScheduledEventPrivacyLevel {
/**
* The scheduled event is only accessible to guild members
*/
GuildOnly = 2,
}

View File

@@ -7,6 +7,7 @@ import type { APIPartialGuild } from './guild.ts';
import type { APIApplication } from './application.ts';
import type { APIInviteStageInstance } from './stageInstance.ts';
import type { APIUser } from './user.ts';
import type { APIGuildScheduledEvent } from './guildScheduledEvent.ts';
/**
* https://discord.com/developers/docs/resources/invite#invite-object
@@ -68,6 +69,10 @@ export interface APIInvite {
* The stage instance data if there is a public stage instance in the stage channel this invite is for
*/
stage_instance?: APIInviteStageInstance;
/**
* The guild scheduled event data, returned from the `GET /invites/<code>` endpoint when `guild_scheduled_event_id` is a valid guild scheduled event id
*/
guild_scheduled_event?: APIGuildScheduledEvent;
}
/**

View File

@@ -4,6 +4,7 @@ export * from './channel.ts';
export * from './emoji.ts';
export * from './gateway.ts';
export * from './guild.ts';
export * from './guildScheduledEvent.ts';
export * from './interactions.ts';
export * from './invite.ts';
export * from './oauth2.ts';

View File

@@ -45,6 +45,7 @@ export const PermissionFlagsBits = {
ManageEmojisAndStickers: 1n << 30n,
UseApplicationCommands: 1n << 31n,
RequestToSpeak: 1n << 32n,
ManageEvents: 1n << 33n,
UseExternalStickers: 1n << 37n,
StartEmbeddedActivities: 1n << 39n,
} as const;

View File

@@ -17,6 +17,7 @@ import type { StickerFormatType } from './sticker.ts';
import type { APIUser } from './user.ts';
import type { APIWebhook } from './webhook.ts';
import type { StageInstancePrivacyLevel } from './stageInstance.ts';
import type { GuildScheduledEventEntityType, GuildScheduledEventStatus } from './guildScheduledEvent.ts';
/**
* https://discord.com/developers/docs/resources/audit-log#audit-log-object-audit-log-structure
@@ -153,6 +154,10 @@ export enum AuditLogEvent {
StickerUpdate,
StickerDelete,
GuildScheduledEventCreate = 100,
GuildScheduledEventUpdate,
GuildScheduledEventDelete,
ThreadCreate = 110,
ThreadUpdate,
ThreadDelete,
@@ -318,7 +323,10 @@ export type APIAuditLogChange =
| APIAuditLogChangeKeyArchived
| APIAuditLogChangeKeyLocked
| APIAuditLogChangeKeyAutoArchiveDuration
| APIAuditLogChangeKeyDefaultAutoArchiveDuration;
| APIAuditLogChangeKeyDefaultAutoArchiveDuration
| APIAuditLogChangeKeyEntityType
| APIAuditLogChangeKeyStatus
| APIAuditLogChangeKeyLocation;
/**
* Returned when an entity's name is changed
@@ -326,7 +334,7 @@ export type APIAuditLogChange =
export type APIAuditLogChangeKeyName = AuditLogChangeData<'name', string>;
/**
* Returned when a guild's or sticker's description is changed
* Returned when a guild's or sticker's or guild scheduled event's description is changed
*/
export type APIAuditLogChangeKeyDescription = AuditLogChangeData<'description', string>;
@@ -518,7 +526,7 @@ export type APIAuditLogChangeKeyDeny = AuditLogChangeData<'deny', string>;
export type APIAuditLogChangeKeyCode = AuditLogChangeData<'code', string>;
/**
* Returned when an invite's channel_id is changed
* Returned when an invite's or guild scheduled event's channel_id is changed
*/
export type APIAuditLogChangeKeyChannelId = AuditLogChangeData<'channel_id', Snowflake>;
@@ -598,7 +606,7 @@ export type APIAuditLogChangeKeyExpireGracePeriod = AuditLogChangeData<'expire_g
export type APIAuditLogChangeKeyUserLimit = AuditLogChangeData<'user_limit', number>;
/**
* Returned when privacy level of a stage instance is changed
* Returned when privacy level of a stage instance or guild scheduled event is changed
*/
export type APIAuditLogChangeKeyPrivacyLevel = AuditLogChangeData<'privacy_level', StageInstancePrivacyLevel>;
@@ -650,6 +658,21 @@ export type APIAuditLogChangeKeyDefaultAutoArchiveDuration = AuditLogChangeData<
number
>;
/**
* Returned when entity type of a guild scheduled event is changed
*/
export type APIAuditLogChangeKeyEntityType = AuditLogChangeData<'entity_type', GuildScheduledEventEntityType>;
/**
* Returned when status of a guild scheduled event is changed
*/
export type APIAuditLogChangeKeyStatus = AuditLogChangeData<'status', GuildScheduledEventStatus>;
/**
* Returned when location of a guild scheduled event is changed
*/
export type APIAuditLogChangeKeyLocation = AuditLogChangeData<'location', string>;
interface AuditLogChangeData<K extends string, D extends unknown> {
key: K;
/**

View File

@@ -11,6 +11,7 @@ import type { APIStageInstance } from './stageInstance.ts';
import type { APISticker } from './sticker.ts';
import type { APIUser } from './user.ts';
import type { GatewayVoiceState } from './voice.ts';
import type { APIGuildScheduledEvent } from './guildScheduledEvent.ts';
/**
* https://discord.com/developers/docs/resources/guild#unavailable-guild-object
@@ -333,6 +334,14 @@ export interface APIGuild extends APIPartialGuild {
* See https://discord.com/developers/docs/resources/sticker#sticker-object
*/
stickers: APISticker[];
/**
* 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[];
}
/**

View File

@@ -0,0 +1,104 @@
import type { APIUser } from './user.ts';
import type { Snowflake } from '../../globals.ts';
export interface APIGuildScheduledEvent {
/**
* The id of the guild event
*/
id: Snowflake;
/**
* The guild id which the scheduled event belongs to
*/
guild_id: Snowflake;
/**
* The channel id in which the scheduled event will be hosted, or `null` if entity type is `EXTERNAL`
*/
channel_id: Snowflake | null;
/**
* The id of the user that created the scheduled event
*/
creator_id: Snowflake | null;
/**
* The name of the scheduled event
*/
name: string;
/**
* The description of the scheduled event
*/
description?: string;
/**
* The time the scheduled event will start
*/
scheduled_start_time: string;
/**
* The time at which the guild event will end, or `null` if the event does not have a scheduled time to end
*/
scheduled_end_time: string | null;
/**
* The privacy level of the scheduled event
*/
privacy_level: GuildScheduledEventPrivacyLevel;
/**
* The status of the scheduled event
*/
status: GuildScheduledEventStatus;
/**
* The type of hosting entity associated with the scheduled event
*/
entity_type: GuildScheduledEventEntityType;
/**
* The id of the hosting entity associated with the scheduled event
*/
entity_id: Snowflake | null;
/**
* The entity metadata for the scheduled event
*/
entity_metadata: APIGuildScheduledEventEntityMetadata;
/**
* The user that created the scheduled event
*/
creator?: APIUser;
/**
* The number of users subscribed to the scheduled event
*/
user_count?: number;
}
/**
* https://discord.com/developers/docs/resources/guild-scheduled-event#guild-scheduled-event-object-guild-scheduled-event-entity-metadata
*/
export interface APIGuildScheduledEventEntityMetadata {
/**
* The location of the scheduled event
*/
location?: string;
}
/**
* https://discord.com/developers/docs/resources/guild-scheduled-event#guild-scheduled-event-object-guild-scheduled-event-entity-types
*/
export enum GuildScheduledEventEntityType {
StageInstance = 1,
Voice,
External,
}
/**
* https://discord.com/developers/docs/resources/guild-scheduled-event#guild-scheduled-event-object-guild-scheduled-event-status
*/
export enum GuildScheduledEventStatus {
Scheduled = 1,
Active,
Completed,
Canceled,
}
/**
* https://discord.com/developers/docs/resources/guild-scheduled-event#guild-scheduled-event-object-guild-scheduled-event-privacy-level
*/
export enum GuildScheduledEventPrivacyLevel {
/**
* The scheduled event is only accessible to guild members
*/
GuildOnly = 2,
}

View File

@@ -7,6 +7,7 @@ import type { APIPartialGuild } from './guild.ts';
import type { APIApplication } from './application.ts';
import type { APIInviteStageInstance } from './stageInstance.ts';
import type { APIUser } from './user.ts';
import type { APIGuildScheduledEvent } from './guildScheduledEvent.ts';
/**
* https://discord.com/developers/docs/resources/invite#invite-object
@@ -68,6 +69,10 @@ export interface APIInvite {
* The stage instance data if there is a public stage instance in the stage channel this invite is for
*/
stage_instance?: APIInviteStageInstance;
/**
* The guild scheduled event data, returned from the `GET /invites/<code>` endpoint when `guild_scheduled_event_id` is a valid guild scheduled event id
*/
guild_scheduled_event?: APIGuildScheduledEvent;
}
/**

View File

@@ -4,6 +4,7 @@ export * from './channel.ts';
export * from './emoji.ts';
export * from './gateway.ts';
export * from './guild.ts';
export * from './guildScheduledEvent.ts';
export * from './interactions.ts';
export * from './invite.ts';
export * from './oauth2.ts';

View File

@@ -45,6 +45,7 @@ export const PermissionFlagsBits = {
ManageEmojisAndStickers: 1n << 30n,
UseApplicationCommands: 1n << 31n,
RequestToSpeak: 1n << 32n,
ManageEvents: 1n << 33n,
ManageThreads: 1n << 34n,
CreatePublicThreads: 1n << 35n,
CreatePrivateThreads: 1n << 36n,

View File

@@ -101,6 +101,7 @@ export enum RESTJSONErrorCodes {
MaximumNumberOfNonGuildMemberBansHasBeenExceeded = 30035,
MaximumNumberOfBanFetchesHasBeenReached = 30037,
MaximumNumberOfUncompletedGuildScheduledEventsReached,
MaximumNumberOfStickersReached = 30039,
MaximumNumberOfPruneRequestsHasBeenReached,
@@ -198,4 +199,8 @@ export enum RESTJSONErrorCodes {
LottieAnimationMaximumDimensionsExceeded,
StickerFramerateIsTooSmallOrTooLarge,
StickerAnimationDurationExceedsMaximumOf5Seconds,
CannotUpdateAFinishedEvent = 180000,
FailedToCreateStageNeededForStageEvent = 180002,
}

View File

@@ -0,0 +1,150 @@
import type { Snowflake } from '../../globals.ts';
import type {
APIGuildScheduledEvent,
GuildScheduledEventEntityType,
GuildScheduledEventPrivacyLevel,
APIGuildScheduledEventEntityMetadata,
GuildScheduledEventStatus,
APIGuildMember,
APIUser,
} from '../../payloads/v8.ts';
/**
* https://discord.com/developers/docs/resources/guild-scheduled-event#list-scheduled-events-for-guild
*/
export interface RESTGetAPIGuildScheduledEventsQuery {
/**
* Whether to include number of users subscribed to each event
*/
with_user_count?: boolean;
}
/**
* https://discord.com/developers/docs/resources/guild-scheduled-event#list-scheduled-events-for-guild
*/
export type RESTGetAPIGuildScheduledEventsResult = APIGuildScheduledEvent[];
/**
* https://discord.com/developers/docs/resources/guild-scheduled-event#create-guild-scheduled-event
*/
export interface RESTPostAPIGuildScheduledEventJSONBody {
/**
* The stage channel id of the guild event
*/
channel_id?: Snowflake;
/**
* The name of the guild event
*/
name: string;
/**
* The privacy level of the guild event
*/
privacy_level: GuildScheduledEventPrivacyLevel;
/**
* The time to schedule the guild event at
*/
scheduled_start_time: string;
/**
* The time when the scheduled event is scheduled to end
*/
scheduled_end_time?: string;
/**
* The description of the guild event
*/
description?: string;
/**
* The scheduled entity type of the guild event
*/
entity_type?: GuildScheduledEventEntityType;
/**
* The entity metadata of the scheduled event
*/
entity_metadata?: APIGuildScheduledEventEntityMetadata;
}
/**
* https://discord.com/developers/docs/resources/guild-scheduled-event#create-guild-scheduled-event
*/
export type RESTPostAPIGuildScheduledEventResult = APIGuildScheduledEvent;
/**
* https://discord.com/developers/docs/resources/guild-scheduled-event#get-guild-scheduled-event
*/
export interface RESTGetAPIGuildScheduledEventQuery {
/**
* Whether to include number of users subscribed to this event
*/
with_user_count?: boolean;
}
/**
* https://discord.com/developers/docs/resources/guild-scheduled-event#get-guild-scheduled-event
*/
export type RESTGetAPIGuildScheduledEventResult = APIGuildScheduledEvent;
/**
* https://discord.com/developers/docs/resources/guild-scheduled-event#modify-guild-scheduled-event
*/
export interface RESTPatchAPIGuildScheduledEventJSONBody extends Partial<RESTPostAPIGuildScheduledEventJSONBody> {
/**
* The status of the scheduled event
*/
status?: GuildScheduledEventStatus;
}
/**
* https://discord.com/developers/docs/resources/guild-scheduled-event#modify-guild-scheduled-event
*/
export type RESTPatchAPIGuildScheduledEventResult = APIGuildScheduledEvent;
/**
* https://discord.com/developers/docs/resources/guild-scheduled-event#delete-guild-scheduled-event
*/
export type RESTDeleteAPIGuildScheduledEventResult = never;
/**
* https://discord.com/developers/docs/resources/guild-scheduled-event#get-guild-scheduled-event-users
*/
export interface RESTGetAPIGuildScheduledEventUsersQuery {
/**
* Number of users to receive from the event
*
* @default 100
*/
limit?: number;
/**
* Whether to include guild member data if it exists
*/
with_member?: boolean;
/**
* Consider only users before given user id
*/
before?: Snowflake;
/**
* Consider only users after given user id
*/
after?: Snowflake;
}
/**
* https://discord.com/developers/docs/resources/guild-scheduled-event#get-guild-scheduled-event-users
*/
export type RESTGetAPIGuildScheduledEventUsersResult = APIGuildScheduledEventUser[];
/**
* https://discord.com/developers/docs/resources/guild-scheduled-event#guild-scheduled-event-user-object-guild-scheduled-event-user-structure
*/
export interface APIGuildScheduledEventUser {
/**
* The scheduled event id which the user subscribed to
*/
guild_scheduled_event_id: Snowflake;
/**
* The user which subscribed to the event
*/
user: APIUser;
/**
* The guild member data for this user for the guild which this event belongs to, if any
*/
member?: APIGuildMember;
}

View File

@@ -1,3 +1,4 @@
import type { Snowflake } from '../../globals.ts';
import type { APIInvite } from '../../payloads/v8/mod.ts';
/**
@@ -12,6 +13,10 @@ export interface RESTGetAPIInviteQuery {
* Whether the invite should contain the expiration date
*/
with_expiration?: boolean;
/**
* The guild scheduled event to include with the invite
*/
guild_scheduled_event_id?: Snowflake;
}
export type RESTGetAPIInviteResult = APIInvite;

View File

@@ -7,6 +7,7 @@ export * from './channel.ts';
export * from './emoji.ts';
export * from './gateway.ts';
export * from './guild.ts';
export * from './guildScheduledEvent.ts';
export * from './interactions.ts';
export * from './invite.ts';
export * from './oauth2.ts';
@@ -738,6 +739,33 @@ export const Routes = {
guildSticker(guildId: Snowflake, stickerId: Snowflake) {
return `/guilds/${guildId}/stickers/${stickerId}` as const;
},
/**
* Route for:
* - GET `/guilds/{guild.id}/scheduled-events`
* - POST `/guilds/{guild.id}/scheduled-events`
*/
guildScheduledEvents(guildId: Snowflake) {
return `/guilds/${guildId}/scheduled-events`;
},
/**
* Route for:
* - GET `/guilds/{guild.id}/scheduled-events/{guildScheduledEvent.id}`
* - PATCH `/guilds/{guild.id}/scheduled-events/{guildScheduledEvent.id}`
* - DELETE `/guilds/{guild.id}/scheduled-events/{guildScheduledEvent.id}`
*/
guildScheduledEvent(guildId: Snowflake, guildScheduledEventId: Snowflake) {
return `/guilds/${guildId}/scheduled-events/${guildScheduledEventId}`;
},
/**
* Route for:
* - GET `/guilds/{guild.id}/scheduled-events/{guildScheduledEvent.id}/users`
*/
guildScheduledEventUsers(guildId: Snowflake, guildScheduledEventId: Snowflake) {
return `/guilds/${guildId}/scheduled-events/${guildScheduledEventId}/users`;
},
};
export const RouteBases = {

View File

@@ -0,0 +1,150 @@
import type { Snowflake } from '../../globals.ts';
import type {
APIGuildScheduledEvent,
GuildScheduledEventEntityType,
GuildScheduledEventPrivacyLevel,
APIGuildScheduledEventEntityMetadata,
GuildScheduledEventStatus,
APIGuildMember,
APIUser,
} from '../../payloads/v9.ts';
/**
* https://discord.com/developers/docs/resources/guild-scheduled-event#list-scheduled-events-for-guild
*/
export interface RESTGetAPIGuildScheduledEventsQuery {
/**
* Whether to include number of users subscribed to each event
*/
with_user_count?: boolean;
}
/**
* https://discord.com/developers/docs/resources/guild-scheduled-event#list-scheduled-events-for-guild
*/
export type RESTGetAPIGuildScheduledEventsResult = APIGuildScheduledEvent[];
/**
* https://discord.com/developers/docs/resources/guild-scheduled-event#create-guild-scheduled-event
*/
export interface RESTPostAPIGuildScheduledEventJSONBody {
/**
* The stage channel id of the guild event
*/
channel_id?: Snowflake;
/**
* The name of the guild event
*/
name: string;
/**
* The privacy level of the guild event
*/
privacy_level: GuildScheduledEventPrivacyLevel;
/**
* The time to schedule the guild event at
*/
scheduled_start_time: string;
/**
* The time when the scheduled event is scheduled to end
*/
scheduled_end_time?: string;
/**
* The description of the guild event
*/
description?: string;
/**
* The scheduled entity type of the guild event
*/
entity_type?: GuildScheduledEventEntityType;
/**
* The entity metadata of the scheduled event
*/
entity_metadata?: APIGuildScheduledEventEntityMetadata;
}
/**
* https://discord.com/developers/docs/resources/guild-scheduled-event#create-guild-scheduled-event
*/
export type RESTPostAPIGuildScheduledEventResult = APIGuildScheduledEvent;
/**
* https://discord.com/developers/docs/resources/guild-scheduled-event#get-guild-scheduled-event
*/
export interface RESTGetAPIGuildScheduledEventQuery {
/**
* Whether to include number of users subscribed to this event
*/
with_user_count?: boolean;
}
/**
* https://discord.com/developers/docs/resources/guild-scheduled-event#get-guild-scheduled-event
*/
export type RESTGetAPIGuildScheduledEventResult = APIGuildScheduledEvent;
/**
* https://discord.com/developers/docs/resources/guild-scheduled-event#modify-guild-scheduled-event
*/
export interface RESTPatchAPIGuildScheduledEventJSONBody extends Partial<RESTPostAPIGuildScheduledEventJSONBody> {
/**
* The status of the scheduled event
*/
status?: GuildScheduledEventStatus;
}
/**
* https://discord.com/developers/docs/resources/guild-scheduled-event#modify-guild-scheduled-event
*/
export type RESTPatchAPIGuildScheduledEventResult = APIGuildScheduledEvent;
/**
* https://discord.com/developers/docs/resources/guild-scheduled-event#delete-guild-scheduled-event
*/
export type RESTDeleteAPIGuildScheduledEventResult = never;
/**
* https://discord.com/developers/docs/resources/guild-scheduled-event#get-guild-scheduled-event-users
*/
export interface RESTGetAPIGuildScheduledEventUsersQuery {
/**
* Number of users to receive from the event
*
* @default 100
*/
limit?: number;
/**
* Whether to include guild member data if it exists
*/
with_member?: boolean;
/**
* Consider only users before given user id
*/
before?: Snowflake;
/**
* Consider only users after given user id
*/
after?: Snowflake;
}
/**
* https://discord.com/developers/docs/resources/guild-scheduled-event#get-guild-scheduled-event-users
*/
export type RESTGetAPIGuildScheduledEventUsersResult = APIGuildScheduledEventUser[];
/**
* https://discord.com/developers/docs/resources/guild-scheduled-event#guild-scheduled-event-user-object-guild-scheduled-event-user-structure
*/
export interface APIGuildScheduledEventUser {
/**
* The scheduled event id which the user subscribed to
*/
guild_scheduled_event_id: Snowflake;
/**
* The user which subscribed to the event
*/
user: APIUser;
/**
* The guild member data for this user for the guild which this event belongs to, if any
*/
member?: APIGuildMember;
}

View File

@@ -1,3 +1,4 @@
import type { Snowflake } from '../../globals.ts';
import type { APIInvite } from '../../payloads/v9/mod.ts';
/**
@@ -12,6 +13,10 @@ export interface RESTGetAPIInviteQuery {
* Whether the invite should contain the expiration date
*/
with_expiration?: boolean;
/**
* The guild scheduled event to include with the invite
*/
guild_scheduled_event_id?: Snowflake;
}
export type RESTGetAPIInviteResult = APIInvite;

View File

@@ -7,6 +7,7 @@ export * from './channel.ts';
export * from './emoji.ts';
export * from './gateway.ts';
export * from './guild.ts';
export * from './guildScheduledEvent.ts';
export * from './interactions.ts';
export * from './invite.ts';
export * from './oauth2.ts';
@@ -807,6 +808,33 @@ export const Routes = {
guildSticker(guildId: Snowflake, stickerId: Snowflake) {
return `/guilds/${guildId}/stickers/${stickerId}` as const;
},
/**
* Route for:
* - GET `/guilds/{guild.id}/scheduled-events`
* - POST `/guilds/{guild.id}/scheduled-events`
*/
guildScheduledEvents(guildId: Snowflake) {
return `/guilds/${guildId}/scheduled-events`;
},
/**
* Route for:
* - GET `/guilds/{guild.id}/scheduled-events/{guildScheduledEvent.id}`
* - PATCH `/guilds/{guild.id}/scheduled-events/{guildScheduledEvent.id}`
* - DELETE `/guilds/{guild.id}/scheduled-events/{guildScheduledEvent.id}`
*/
guildScheduledEvent(guildId: Snowflake, guildScheduledEventId: Snowflake) {
return `/guilds/${guildId}/scheduled-events/${guildScheduledEventId}`;
},
/**
* Route for:
* - GET `/guilds/{guild.id}/scheduled-events/{guildScheduledEvent.id}/users`
*/
guildScheduledEventUsers(guildId: Snowflake, guildScheduledEventId: Snowflake) {
return `/guilds/${guildId}/scheduled-events/${guildScheduledEventId}/users`;
},
};
export const RouteBases = {

View File

@@ -9,6 +9,7 @@ import type {
APIChannel,
APIEmoji,
APIGuild,
APIGuildScheduledEvent,
APIGuildIntegration,
APIGuildMember,
APIMessage,
@@ -183,6 +184,7 @@ export const enum GatewayIntentBits {
DirectMessages = 1 << 12,
DirectMessageReactions = 1 << 13,
DirectMessageTyping = 1 << 14,
GuildScheduledEvents = 1 << 16,
}
/**
@@ -233,6 +235,11 @@ export const enum GatewayDispatchEvents {
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 =
@@ -265,6 +272,11 @@ export type GatewayDispatchPayload =
| GatewayGuildModifyDispatch
| GatewayGuildRoleDeleteDispatch
| GatewayGuildRoleModifyDispatch
| GatewayGuildScheduledEventCreateDispatch
| GatewayGuildScheduledEventUpdateDispatch
| GatewayGuildScheduledEventDeleteDispatch
| GatewayGuildScheduledEventUserAddDispatch
| GatewayGuildScheduledEventUserRemoveDispatch
| GatewayGuildStickersUpdateDispatch
| GatewayIntegrationCreateDispatch
| GatewayIntegrationDeleteDispatch
@@ -808,6 +820,49 @@ export interface GatewayGuildRoleDeleteDispatchData {
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
*/

View File

@@ -9,6 +9,7 @@ import type {
APIChannel,
APIEmoji,
APIGuild,
APIGuildScheduledEvent,
APIGuildIntegration,
APIGuildMember,
APIMessage,
@@ -186,6 +187,7 @@ export const enum GatewayIntentBits {
DirectMessages = 1 << 12,
DirectMessageReactions = 1 << 13,
DirectMessageTyping = 1 << 14,
GuildScheduledEvents = 1 << 16,
}
/**
@@ -242,6 +244,11 @@ export const enum GatewayDispatchEvents {
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 =
@@ -274,6 +281,11 @@ export type GatewayDispatchPayload =
| GatewayGuildModifyDispatch
| GatewayGuildRoleDeleteDispatch
| GatewayGuildRoleModifyDispatch
| GatewayGuildScheduledEventCreateDispatch
| GatewayGuildScheduledEventUpdateDispatch
| GatewayGuildScheduledEventDeleteDispatch
| GatewayGuildScheduledEventUserAddDispatch
| GatewayGuildScheduledEventUserRemoveDispatch
| GatewayGuildStickersUpdateDispatch
| GatewayIntegrationCreateDispatch
| GatewayIntegrationDeleteDispatch
@@ -818,6 +830,49 @@ export interface GatewayGuildRoleDeleteDispatchData {
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
*/

View File

@@ -17,6 +17,7 @@ import type { StickerFormatType } from './sticker';
import type { APIUser } from './user';
import type { APIWebhook } from './webhook';
import type { StageInstancePrivacyLevel } from './stageInstance';
import type { GuildScheduledEventEntityType, GuildScheduledEventStatus } from './guildScheduledEvent';
/**
* https://discord.com/developers/docs/resources/audit-log#audit-log-object-audit-log-structure
@@ -144,6 +145,10 @@ export const enum AuditLogEvent {
StickerCreate = 90,
StickerUpdate,
StickerDelete,
GuildScheduledEventCreate = 100,
GuildScheduledEventUpdate,
GuildScheduledEventDelete,
}
/**
@@ -302,7 +307,10 @@ export type APIAuditLogChange =
| APIAuditLogChangeKeyFormatType
| APIAuditLogChangeKeyAsset
| APIAuditLogChangeKeyAvailable
| APIAuditLogChangeKeyGuildId;
| APIAuditLogChangeKeyGuildId
| APIAuditLogChangeKeyEntityType
| APIAuditLogChangeKeyStatus
| APIAuditLogChangeKeyLocation;
/**
* Returned when an entity's name is changed
@@ -310,7 +318,7 @@ export type APIAuditLogChange =
export type APIAuditLogChangeKeyName = AuditLogChangeData<'name', string>;
/**
* Returned when a guild's or sticker's description is changed
* Returned when a guild's or sticker's or guild scheduled event's description is changed
*/
export type APIAuditLogChangeKeyDescription = AuditLogChangeData<'description', string>;
@@ -502,7 +510,7 @@ export type APIAuditLogChangeKeyDeny = AuditLogChangeData<'deny', string>;
export type APIAuditLogChangeKeyCode = AuditLogChangeData<'code', string>;
/**
* Returned when an invite's channel_id is changed
* Returned when an invite's or guild scheduled event's channel_id is changed
*/
export type APIAuditLogChangeKeyChannelId = AuditLogChangeData<'channel_id', Snowflake>;
@@ -582,7 +590,7 @@ export type APIAuditLogChangeKeyExpireGracePeriod = AuditLogChangeData<'expire_g
export type APIAuditLogChangeKeyUserLimit = AuditLogChangeData<'user_limit', number>;
/**
* Returned when privacy level of a stage instance is changed
* Returned when privacy level of a stage instance or guild scheduled event is changed
*/
export type APIAuditLogChangeKeyPrivacyLevel = AuditLogChangeData<'privacy_level', StageInstancePrivacyLevel>;
@@ -611,6 +619,21 @@ export type APIAuditLogChangeKeyAvailable = AuditLogChangeData<'available', bool
*/
export type APIAuditLogChangeKeyGuildId = AuditLogChangeData<'guild_id', Snowflake>;
/**
* Returned when entity type of a guild scheduled event is changed
*/
export type APIAuditLogChangeKeyEntityType = AuditLogChangeData<'entity_type', GuildScheduledEventEntityType>;
/**
* Returned when status of a guild scheduled event is changed
*/
export type APIAuditLogChangeKeyStatus = AuditLogChangeData<'status', GuildScheduledEventStatus>;
/**
* Returned when location of a guild scheduled event is changed
*/
export type APIAuditLogChangeKeyLocation = AuditLogChangeData<'location', string>;
interface AuditLogChangeData<K extends string, D extends unknown> {
key: K;
/**

View File

@@ -11,6 +11,7 @@ import type { APIStageInstance } from './stageInstance';
import type { APISticker } from './sticker';
import type { APIUser } from './user';
import type { GatewayVoiceState } from './voice';
import type { APIGuildScheduledEvent } from './guildScheduledEvent';
/**
* https://discord.com/developers/docs/resources/guild#unavailable-guild-object
@@ -325,6 +326,14 @@ export interface APIGuild extends APIPartialGuild {
* See https://discord.com/developers/docs/resources/sticker#sticker-object
*/
stickers: APISticker[];
/**
* 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[];
}
/**

View File

@@ -0,0 +1,104 @@
import type { APIUser } from './user';
import type { Snowflake } from '../../globals';
export interface APIGuildScheduledEvent {
/**
* The id of the guild event
*/
id: Snowflake;
/**
* The guild id which the scheduled event belongs to
*/
guild_id: Snowflake;
/**
* The channel id in which the scheduled event will be hosted, or `null` if entity type is `EXTERNAL`
*/
channel_id: Snowflake | null;
/**
* The id of the user that created the scheduled event
*/
creator_id: Snowflake | null;
/**
* The name of the scheduled event
*/
name: string;
/**
* The description of the scheduled event
*/
description?: string;
/**
* The time the scheduled event will start
*/
scheduled_start_time: string;
/**
* The time at which the guild event will end, or `null` if the event does not have a scheduled time to end
*/
scheduled_end_time: string | null;
/**
* The privacy level of the scheduled event
*/
privacy_level: GuildScheduledEventPrivacyLevel;
/**
* The status of the scheduled event
*/
status: GuildScheduledEventStatus;
/**
* The type of hosting entity associated with the scheduled event
*/
entity_type: GuildScheduledEventEntityType;
/**
* The id of the hosting entity associated with the scheduled event
*/
entity_id: Snowflake | null;
/**
* The entity metadata for the scheduled event
*/
entity_metadata: APIGuildScheduledEventEntityMetadata;
/**
* The user that created the scheduled event
*/
creator?: APIUser;
/**
* The number of users subscribed to the scheduled event
*/
user_count?: number;
}
/**
* https://discord.com/developers/docs/resources/guild-scheduled-event#guild-scheduled-event-object-guild-scheduled-event-entity-metadata
*/
export interface APIGuildScheduledEventEntityMetadata {
/**
* The location of the scheduled event
*/
location?: string;
}
/**
* https://discord.com/developers/docs/resources/guild-scheduled-event#guild-scheduled-event-object-guild-scheduled-event-entity-types
*/
export const enum GuildScheduledEventEntityType {
StageInstance = 1,
Voice,
External,
}
/**
* https://discord.com/developers/docs/resources/guild-scheduled-event#guild-scheduled-event-object-guild-scheduled-event-status
*/
export const enum GuildScheduledEventStatus {
Scheduled = 1,
Active,
Completed,
Canceled,
}
/**
* https://discord.com/developers/docs/resources/guild-scheduled-event#guild-scheduled-event-object-guild-scheduled-event-privacy-level
*/
export const enum GuildScheduledEventPrivacyLevel {
/**
* The scheduled event is only accessible to guild members
*/
GuildOnly = 2,
}

View File

@@ -4,6 +4,7 @@ export * from './channel';
export * from './emoji';
export * from './gateway';
export * from './guild';
export * from './guildScheduledEvent';
export * from './interactions';
export * from './invite';
export * from './oauth2';

View File

@@ -7,6 +7,7 @@ import type { APIPartialGuild } from './guild';
import type { APIApplication } from './application';
import type { APIInviteStageInstance } from './stageInstance';
import type { APIUser } from './user';
import type { APIGuildScheduledEvent } from './guildScheduledEvent';
/**
* https://discord.com/developers/docs/resources/invite#invite-object
@@ -68,6 +69,10 @@ export interface APIInvite {
* The stage instance data if there is a public stage instance in the stage channel this invite is for
*/
stage_instance?: APIInviteStageInstance;
/**
* The guild scheduled event data, returned from the `GET /invites/<code>` endpoint when `guild_scheduled_event_id` is a valid guild scheduled event id
*/
guild_scheduled_event?: APIGuildScheduledEvent;
}
/**

View File

@@ -45,6 +45,7 @@ export const PermissionFlagsBits = {
ManageEmojisAndStickers: 1n << 30n,
UseApplicationCommands: 1n << 31n,
RequestToSpeak: 1n << 32n,
ManageEvents: 1n << 33n,
UseExternalStickers: 1n << 37n,
StartEmbeddedActivities: 1n << 39n,
} as const;

View File

@@ -17,6 +17,7 @@ import type { StickerFormatType } from './sticker';
import type { APIUser } from './user';
import type { APIWebhook } from './webhook';
import type { StageInstancePrivacyLevel } from './stageInstance';
import type { GuildScheduledEventEntityType, GuildScheduledEventStatus } from './guildScheduledEvent';
/**
* https://discord.com/developers/docs/resources/audit-log#audit-log-object-audit-log-structure
@@ -153,6 +154,10 @@ export const enum AuditLogEvent {
StickerUpdate,
StickerDelete,
GuildScheduledEventCreate = 100,
GuildScheduledEventUpdate,
GuildScheduledEventDelete,
ThreadCreate = 110,
ThreadUpdate,
ThreadDelete,
@@ -318,7 +323,10 @@ export type APIAuditLogChange =
| APIAuditLogChangeKeyArchived
| APIAuditLogChangeKeyLocked
| APIAuditLogChangeKeyAutoArchiveDuration
| APIAuditLogChangeKeyDefaultAutoArchiveDuration;
| APIAuditLogChangeKeyDefaultAutoArchiveDuration
| APIAuditLogChangeKeyEntityType
| APIAuditLogChangeKeyStatus
| APIAuditLogChangeKeyLocation;
/**
* Returned when an entity's name is changed
@@ -326,7 +334,7 @@ export type APIAuditLogChange =
export type APIAuditLogChangeKeyName = AuditLogChangeData<'name', string>;
/**
* Returned when a guild's or sticker's description is changed
* Returned when a guild's or sticker's or guild scheduled event's description is changed
*/
export type APIAuditLogChangeKeyDescription = AuditLogChangeData<'description', string>;
@@ -518,7 +526,7 @@ export type APIAuditLogChangeKeyDeny = AuditLogChangeData<'deny', string>;
export type APIAuditLogChangeKeyCode = AuditLogChangeData<'code', string>;
/**
* Returned when an invite's channel_id is changed
* Returned when an invite's or guild scheduled event's channel_id is changed
*/
export type APIAuditLogChangeKeyChannelId = AuditLogChangeData<'channel_id', Snowflake>;
@@ -598,7 +606,7 @@ export type APIAuditLogChangeKeyExpireGracePeriod = AuditLogChangeData<'expire_g
export type APIAuditLogChangeKeyUserLimit = AuditLogChangeData<'user_limit', number>;
/**
* Returned when privacy level of a stage instance is changed
* Returned when privacy level of a stage instance or guild scheduled event is changed
*/
export type APIAuditLogChangeKeyPrivacyLevel = AuditLogChangeData<'privacy_level', StageInstancePrivacyLevel>;
@@ -650,6 +658,21 @@ export type APIAuditLogChangeKeyDefaultAutoArchiveDuration = AuditLogChangeData<
number
>;
/**
* Returned when entity type of a guild scheduled event is changed
*/
export type APIAuditLogChangeKeyEntityType = AuditLogChangeData<'entity_type', GuildScheduledEventEntityType>;
/**
* Returned when status of a guild scheduled event is changed
*/
export type APIAuditLogChangeKeyStatus = AuditLogChangeData<'status', GuildScheduledEventStatus>;
/**
* Returned when location of a guild scheduled event is changed
*/
export type APIAuditLogChangeKeyLocation = AuditLogChangeData<'location', string>;
interface AuditLogChangeData<K extends string, D extends unknown> {
key: K;
/**

View File

@@ -11,6 +11,7 @@ import type { APIStageInstance } from './stageInstance';
import type { APISticker } from './sticker';
import type { APIUser } from './user';
import type { GatewayVoiceState } from './voice';
import type { APIGuildScheduledEvent } from './guildScheduledEvent';
/**
* https://discord.com/developers/docs/resources/guild#unavailable-guild-object
@@ -333,6 +334,14 @@ export interface APIGuild extends APIPartialGuild {
* See https://discord.com/developers/docs/resources/sticker#sticker-object
*/
stickers: APISticker[];
/**
* 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[];
}
/**

View File

@@ -0,0 +1,104 @@
import type { APIUser } from './user';
import type { Snowflake } from '../../globals';
export interface APIGuildScheduledEvent {
/**
* The id of the guild event
*/
id: Snowflake;
/**
* The guild id which the scheduled event belongs to
*/
guild_id: Snowflake;
/**
* The channel id in which the scheduled event will be hosted, or `null` if entity type is `EXTERNAL`
*/
channel_id: Snowflake | null;
/**
* The id of the user that created the scheduled event
*/
creator_id: Snowflake | null;
/**
* The name of the scheduled event
*/
name: string;
/**
* The description of the scheduled event
*/
description?: string;
/**
* The time the scheduled event will start
*/
scheduled_start_time: string;
/**
* The time at which the guild event will end, or `null` if the event does not have a scheduled time to end
*/
scheduled_end_time: string | null;
/**
* The privacy level of the scheduled event
*/
privacy_level: GuildScheduledEventPrivacyLevel;
/**
* The status of the scheduled event
*/
status: GuildScheduledEventStatus;
/**
* The type of hosting entity associated with the scheduled event
*/
entity_type: GuildScheduledEventEntityType;
/**
* The id of the hosting entity associated with the scheduled event
*/
entity_id: Snowflake | null;
/**
* The entity metadata for the scheduled event
*/
entity_metadata: APIGuildScheduledEventEntityMetadata;
/**
* The user that created the scheduled event
*/
creator?: APIUser;
/**
* The number of users subscribed to the scheduled event
*/
user_count?: number;
}
/**
* https://discord.com/developers/docs/resources/guild-scheduled-event#guild-scheduled-event-object-guild-scheduled-event-entity-metadata
*/
export interface APIGuildScheduledEventEntityMetadata {
/**
* The location of the scheduled event
*/
location?: string;
}
/**
* https://discord.com/developers/docs/resources/guild-scheduled-event#guild-scheduled-event-object-guild-scheduled-event-entity-types
*/
export const enum GuildScheduledEventEntityType {
StageInstance = 1,
Voice,
External,
}
/**
* https://discord.com/developers/docs/resources/guild-scheduled-event#guild-scheduled-event-object-guild-scheduled-event-status
*/
export const enum GuildScheduledEventStatus {
Scheduled = 1,
Active,
Completed,
Canceled,
}
/**
* https://discord.com/developers/docs/resources/guild-scheduled-event#guild-scheduled-event-object-guild-scheduled-event-privacy-level
*/
export const enum GuildScheduledEventPrivacyLevel {
/**
* The scheduled event is only accessible to guild members
*/
GuildOnly = 2,
}

View File

@@ -4,6 +4,7 @@ export * from './channel';
export * from './emoji';
export * from './gateway';
export * from './guild';
export * from './guildScheduledEvent';
export * from './interactions';
export * from './invite';
export * from './oauth2';

View File

@@ -7,6 +7,7 @@ import type { APIPartialGuild } from './guild';
import type { APIApplication } from './application';
import type { APIInviteStageInstance } from './stageInstance';
import type { APIUser } from './user';
import type { APIGuildScheduledEvent } from './guildScheduledEvent';
/**
* https://discord.com/developers/docs/resources/invite#invite-object
@@ -68,6 +69,10 @@ export interface APIInvite {
* The stage instance data if there is a public stage instance in the stage channel this invite is for
*/
stage_instance?: APIInviteStageInstance;
/**
* The guild scheduled event data, returned from the `GET /invites/<code>` endpoint when `guild_scheduled_event_id` is a valid guild scheduled event id
*/
guild_scheduled_event?: APIGuildScheduledEvent;
}
/**

View File

@@ -45,6 +45,7 @@ export const PermissionFlagsBits = {
ManageEmojisAndStickers: 1n << 30n,
UseApplicationCommands: 1n << 31n,
RequestToSpeak: 1n << 32n,
ManageEvents: 1n << 33n,
ManageThreads: 1n << 34n,
CreatePublicThreads: 1n << 35n,
CreatePrivateThreads: 1n << 36n,

View File

@@ -101,6 +101,7 @@ export const enum RESTJSONErrorCodes {
MaximumNumberOfNonGuildMemberBansHasBeenExceeded = 30035,
MaximumNumberOfBanFetchesHasBeenReached = 30037,
MaximumNumberOfUncompletedGuildScheduledEventsReached,
MaximumNumberOfStickersReached = 30039,
MaximumNumberOfPruneRequestsHasBeenReached,
@@ -198,4 +199,8 @@ export const enum RESTJSONErrorCodes {
LottieAnimationMaximumDimensionsExceeded,
StickerFramerateIsTooSmallOrTooLarge,
StickerAnimationDurationExceedsMaximumOf5Seconds,
CannotUpdateAFinishedEvent = 180000,
FailedToCreateStageNeededForStageEvent = 180002,
}

View File

@@ -0,0 +1,150 @@
import type { Snowflake } from '../../globals';
import type {
APIGuildScheduledEvent,
GuildScheduledEventEntityType,
GuildScheduledEventPrivacyLevel,
APIGuildScheduledEventEntityMetadata,
GuildScheduledEventStatus,
APIGuildMember,
APIUser,
} from '../../payloads/v8';
/**
* https://discord.com/developers/docs/resources/guild-scheduled-event#list-scheduled-events-for-guild
*/
export interface RESTGetAPIGuildScheduledEventsQuery {
/**
* Whether to include number of users subscribed to each event
*/
with_user_count?: boolean;
}
/**
* https://discord.com/developers/docs/resources/guild-scheduled-event#list-scheduled-events-for-guild
*/
export type RESTGetAPIGuildScheduledEventsResult = APIGuildScheduledEvent[];
/**
* https://discord.com/developers/docs/resources/guild-scheduled-event#create-guild-scheduled-event
*/
export interface RESTPostAPIGuildScheduledEventJSONBody {
/**
* The stage channel id of the guild event
*/
channel_id?: Snowflake;
/**
* The name of the guild event
*/
name: string;
/**
* The privacy level of the guild event
*/
privacy_level: GuildScheduledEventPrivacyLevel;
/**
* The time to schedule the guild event at
*/
scheduled_start_time: string;
/**
* The time when the scheduled event is scheduled to end
*/
scheduled_end_time?: string;
/**
* The description of the guild event
*/
description?: string;
/**
* The scheduled entity type of the guild event
*/
entity_type?: GuildScheduledEventEntityType;
/**
* The entity metadata of the scheduled event
*/
entity_metadata?: APIGuildScheduledEventEntityMetadata;
}
/**
* https://discord.com/developers/docs/resources/guild-scheduled-event#create-guild-scheduled-event
*/
export type RESTPostAPIGuildScheduledEventResult = APIGuildScheduledEvent;
/**
* https://discord.com/developers/docs/resources/guild-scheduled-event#get-guild-scheduled-event
*/
export interface RESTGetAPIGuildScheduledEventQuery {
/**
* Whether to include number of users subscribed to this event
*/
with_user_count?: boolean;
}
/**
* https://discord.com/developers/docs/resources/guild-scheduled-event#get-guild-scheduled-event
*/
export type RESTGetAPIGuildScheduledEventResult = APIGuildScheduledEvent;
/**
* https://discord.com/developers/docs/resources/guild-scheduled-event#modify-guild-scheduled-event
*/
export interface RESTPatchAPIGuildScheduledEventJSONBody extends Partial<RESTPostAPIGuildScheduledEventJSONBody> {
/**
* The status of the scheduled event
*/
status?: GuildScheduledEventStatus;
}
/**
* https://discord.com/developers/docs/resources/guild-scheduled-event#modify-guild-scheduled-event
*/
export type RESTPatchAPIGuildScheduledEventResult = APIGuildScheduledEvent;
/**
* https://discord.com/developers/docs/resources/guild-scheduled-event#delete-guild-scheduled-event
*/
export type RESTDeleteAPIGuildScheduledEventResult = never;
/**
* https://discord.com/developers/docs/resources/guild-scheduled-event#get-guild-scheduled-event-users
*/
export interface RESTGetAPIGuildScheduledEventUsersQuery {
/**
* Number of users to receive from the event
*
* @default 100
*/
limit?: number;
/**
* Whether to include guild member data if it exists
*/
with_member?: boolean;
/**
* Consider only users before given user id
*/
before?: Snowflake;
/**
* Consider only users after given user id
*/
after?: Snowflake;
}
/**
* https://discord.com/developers/docs/resources/guild-scheduled-event#get-guild-scheduled-event-users
*/
export type RESTGetAPIGuildScheduledEventUsersResult = APIGuildScheduledEventUser[];
/**
* https://discord.com/developers/docs/resources/guild-scheduled-event#guild-scheduled-event-user-object-guild-scheduled-event-user-structure
*/
export interface APIGuildScheduledEventUser {
/**
* The scheduled event id which the user subscribed to
*/
guild_scheduled_event_id: Snowflake;
/**
* The user which subscribed to the event
*/
user: APIUser;
/**
* The guild member data for this user for the guild which this event belongs to, if any
*/
member?: APIGuildMember;
}

View File

@@ -7,6 +7,7 @@ export * from './channel';
export * from './emoji';
export * from './gateway';
export * from './guild';
export * from './guildScheduledEvent';
export * from './interactions';
export * from './invite';
export * from './oauth2';
@@ -738,6 +739,33 @@ export const Routes = {
guildSticker(guildId: Snowflake, stickerId: Snowflake) {
return `/guilds/${guildId}/stickers/${stickerId}` as const;
},
/**
* Route for:
* - GET `/guilds/{guild.id}/scheduled-events`
* - POST `/guilds/{guild.id}/scheduled-events`
*/
guildScheduledEvents(guildId: Snowflake) {
return `/guilds/${guildId}/scheduled-events`;
},
/**
* Route for:
* - GET `/guilds/{guild.id}/scheduled-events/{guildScheduledEvent.id}`
* - PATCH `/guilds/{guild.id}/scheduled-events/{guildScheduledEvent.id}`
* - DELETE `/guilds/{guild.id}/scheduled-events/{guildScheduledEvent.id}`
*/
guildScheduledEvent(guildId: Snowflake, guildScheduledEventId: Snowflake) {
return `/guilds/${guildId}/scheduled-events/${guildScheduledEventId}`;
},
/**
* Route for:
* - GET `/guilds/{guild.id}/scheduled-events/{guildScheduledEvent.id}/users`
*/
guildScheduledEventUsers(guildId: Snowflake, guildScheduledEventId: Snowflake) {
return `/guilds/${guildId}/scheduled-events/${guildScheduledEventId}/users`;
},
};
export const RouteBases = {

View File

@@ -1,3 +1,4 @@
import type { Snowflake } from '../../globals';
import type { APIInvite } from '../../payloads/v8/index';
/**
@@ -12,6 +13,10 @@ export interface RESTGetAPIInviteQuery {
* Whether the invite should contain the expiration date
*/
with_expiration?: boolean;
/**
* The guild scheduled event to include with the invite
*/
guild_scheduled_event_id?: Snowflake;
}
export type RESTGetAPIInviteResult = APIInvite;

View File

@@ -0,0 +1,150 @@
import type { Snowflake } from '../../globals';
import type {
APIGuildScheduledEvent,
GuildScheduledEventEntityType,
GuildScheduledEventPrivacyLevel,
APIGuildScheduledEventEntityMetadata,
GuildScheduledEventStatus,
APIGuildMember,
APIUser,
} from '../../payloads/v9';
/**
* https://discord.com/developers/docs/resources/guild-scheduled-event#list-scheduled-events-for-guild
*/
export interface RESTGetAPIGuildScheduledEventsQuery {
/**
* Whether to include number of users subscribed to each event
*/
with_user_count?: boolean;
}
/**
* https://discord.com/developers/docs/resources/guild-scheduled-event#list-scheduled-events-for-guild
*/
export type RESTGetAPIGuildScheduledEventsResult = APIGuildScheduledEvent[];
/**
* https://discord.com/developers/docs/resources/guild-scheduled-event#create-guild-scheduled-event
*/
export interface RESTPostAPIGuildScheduledEventJSONBody {
/**
* The stage channel id of the guild event
*/
channel_id?: Snowflake;
/**
* The name of the guild event
*/
name: string;
/**
* The privacy level of the guild event
*/
privacy_level: GuildScheduledEventPrivacyLevel;
/**
* The time to schedule the guild event at
*/
scheduled_start_time: string;
/**
* The time when the scheduled event is scheduled to end
*/
scheduled_end_time?: string;
/**
* The description of the guild event
*/
description?: string;
/**
* The scheduled entity type of the guild event
*/
entity_type?: GuildScheduledEventEntityType;
/**
* The entity metadata of the scheduled event
*/
entity_metadata?: APIGuildScheduledEventEntityMetadata;
}
/**
* https://discord.com/developers/docs/resources/guild-scheduled-event#create-guild-scheduled-event
*/
export type RESTPostAPIGuildScheduledEventResult = APIGuildScheduledEvent;
/**
* https://discord.com/developers/docs/resources/guild-scheduled-event#get-guild-scheduled-event
*/
export interface RESTGetAPIGuildScheduledEventQuery {
/**
* Whether to include number of users subscribed to this event
*/
with_user_count?: boolean;
}
/**
* https://discord.com/developers/docs/resources/guild-scheduled-event#get-guild-scheduled-event
*/
export type RESTGetAPIGuildScheduledEventResult = APIGuildScheduledEvent;
/**
* https://discord.com/developers/docs/resources/guild-scheduled-event#modify-guild-scheduled-event
*/
export interface RESTPatchAPIGuildScheduledEventJSONBody extends Partial<RESTPostAPIGuildScheduledEventJSONBody> {
/**
* The status of the scheduled event
*/
status?: GuildScheduledEventStatus;
}
/**
* https://discord.com/developers/docs/resources/guild-scheduled-event#modify-guild-scheduled-event
*/
export type RESTPatchAPIGuildScheduledEventResult = APIGuildScheduledEvent;
/**
* https://discord.com/developers/docs/resources/guild-scheduled-event#delete-guild-scheduled-event
*/
export type RESTDeleteAPIGuildScheduledEventResult = never;
/**
* https://discord.com/developers/docs/resources/guild-scheduled-event#get-guild-scheduled-event-users
*/
export interface RESTGetAPIGuildScheduledEventUsersQuery {
/**
* Number of users to receive from the event
*
* @default 100
*/
limit?: number;
/**
* Whether to include guild member data if it exists
*/
with_member?: boolean;
/**
* Consider only users before given user id
*/
before?: Snowflake;
/**
* Consider only users after given user id
*/
after?: Snowflake;
}
/**
* https://discord.com/developers/docs/resources/guild-scheduled-event#get-guild-scheduled-event-users
*/
export type RESTGetAPIGuildScheduledEventUsersResult = APIGuildScheduledEventUser[];
/**
* https://discord.com/developers/docs/resources/guild-scheduled-event#guild-scheduled-event-user-object-guild-scheduled-event-user-structure
*/
export interface APIGuildScheduledEventUser {
/**
* The scheduled event id which the user subscribed to
*/
guild_scheduled_event_id: Snowflake;
/**
* The user which subscribed to the event
*/
user: APIUser;
/**
* The guild member data for this user for the guild which this event belongs to, if any
*/
member?: APIGuildMember;
}

View File

@@ -7,6 +7,7 @@ export * from './channel';
export * from './emoji';
export * from './gateway';
export * from './guild';
export * from './guildScheduledEvent';
export * from './interactions';
export * from './invite';
export * from './oauth2';
@@ -807,6 +808,33 @@ export const Routes = {
guildSticker(guildId: Snowflake, stickerId: Snowflake) {
return `/guilds/${guildId}/stickers/${stickerId}` as const;
},
/**
* Route for:
* - GET `/guilds/{guild.id}/scheduled-events`
* - POST `/guilds/{guild.id}/scheduled-events`
*/
guildScheduledEvents(guildId: Snowflake) {
return `/guilds/${guildId}/scheduled-events`;
},
/**
* Route for:
* - GET `/guilds/{guild.id}/scheduled-events/{guildScheduledEvent.id}`
* - PATCH `/guilds/{guild.id}/scheduled-events/{guildScheduledEvent.id}`
* - DELETE `/guilds/{guild.id}/scheduled-events/{guildScheduledEvent.id}`
*/
guildScheduledEvent(guildId: Snowflake, guildScheduledEventId: Snowflake) {
return `/guilds/${guildId}/scheduled-events/${guildScheduledEventId}`;
},
/**
* Route for:
* - GET `/guilds/{guild.id}/scheduled-events/{guildScheduledEvent.id}/users`
*/
guildScheduledEventUsers(guildId: Snowflake, guildScheduledEventId: Snowflake) {
return `/guilds/${guildId}/scheduled-events/${guildScheduledEventId}/users`;
},
};
export const RouteBases = {

View File

@@ -1,3 +1,4 @@
import type { Snowflake } from '../../globals';
import type { APIInvite } from '../../payloads/v9/index';
/**
@@ -12,6 +13,10 @@ export interface RESTGetAPIInviteQuery {
* Whether the invite should contain the expiration date
*/
with_expiration?: boolean;
/**
* The guild scheduled event to include with the invite
*/
guild_scheduled_event_id?: Snowflake;
}
export type RESTGetAPIInviteResult = APIInvite;