diff --git a/developers/events/gateway-events.mdx b/developers/events/gateway-events.mdx index 1e69cd1ca4..182a315cda 100644 --- a/developers/events/gateway-events.mdx +++ b/developers/events/gateway-events.mdx @@ -428,6 +428,9 @@ Receive events are Gateway events encapsulated in an [event payload](/developers | [Webhooks Update](/developers/events/gateway-events#webhooks-update) | Guild channel webhook was created, update, or deleted | | [Message Poll Vote Add](/developers/events/gateway-events#message-poll-vote-add) | User voted on a poll | | [Message Poll Vote Remove](/developers/events/gateway-events#message-poll-vote-remove) | User removed a vote on a poll | +| [Guild Scheduled Event Exception Create](/developers/events/gateway-events#guild-scheduled-event-exception-create) | Guild scheduled event exception was created | +| [Guild Scheduled Event Exception Update](/developers/events/gateway-events#guild-scheduled-event-exception-update) | Guild scheduled event exception was updated | +| [Guild Scheduled Event Exception Delete](/developers/events/gateway-events#guild-scheduled-event-exception-delete) | Guild scheduled event exception was deleted | #### Hello @@ -969,11 +972,12 @@ Sent when a user has subscribed to a guild scheduled event. ###### Guild Scheduled Event User Add Event Fields -| Field | Type | Description | -|--------------------------|-----------|---------------------------------| -| guild_scheduled_event_id | snowflake | ID of the guild scheduled event | -| user_id | snowflake | ID of the user | -| guild_id | snowflake | ID of the guild | +| Field | Type | Description | +|-------------------------------------|-----------|----------------------------------------------------------| +| guild_scheduled_event_id | snowflake | ID of the guild scheduled event | +| user_id | snowflake | ID of the user | +| guild_id | snowflake | ID of the guild | +| guild_scheduled_event_exception_id? | snowflake | ID of the guild scheduled event exception, if applicable | #### Guild Scheduled Event User Remove @@ -982,11 +986,24 @@ Sent when a user has unsubscribed from a guild scheduled event. ###### Guild Scheduled Event User Remove Event Fields -| Field | Type | Description | -|--------------------------|-----------|---------------------------------| -| guild_scheduled_event_id | snowflake | ID of the guild scheduled event | -| user_id | snowflake | ID of the user | -| guild_id | snowflake | ID of the guild | +| Field | Type | Description | +|-------------------------------------|-----------|----------------------------------------------------------| +| guild_scheduled_event_id | snowflake | ID of the guild scheduled event | +| user_id | snowflake | ID of the user | +| guild_id | snowflake | ID of the guild | +| guild_scheduled_event_exception_id? | snowflake | ID of the guild scheduled event exception, if applicable | + +#### Guild Scheduled Event Exception Create + +Sent when a guild scheduled event exception is created. The inner payload is a [guild scheduled event exception](/developers/resources/guild-scheduled-event#guild-scheduled-event-exception-object) object with an additional `guild_id` key. + +#### Guild Scheduled Event Exception Update + +Sent when a guild scheduled event exception is updated. The inner payload is a [guild scheduled event exception](/developers/resources/guild-scheduled-event#guild-scheduled-event-exception-object) object with an additional `guild_id` key. + +#### Guild Scheduled Event Exception Delete + +Sent when a guild scheduled event exception is deleted. The inner payload is a [guild scheduled event exception](/developers/resources/guild-scheduled-event#guild-scheduled-event-exception-object) object with an additional `guild_id` key. #### Guild Soundboard Sound Create diff --git a/developers/events/gateway.mdx b/developers/events/gateway.mdx index bd64d32720..1d70bbe2b3 100644 --- a/developers/events/gateway.mdx +++ b/developers/events/gateway.mdx @@ -408,6 +408,9 @@ GUILD_SCHEDULED_EVENTS (1 << 16) - GUILD_SCHEDULED_EVENT_DELETE - GUILD_SCHEDULED_EVENT_USER_ADD - GUILD_SCHEDULED_EVENT_USER_REMOVE + - GUILD_SCHEDULED_EVENT_EXCEPTION_CREATE + - GUILD_SCHEDULED_EVENT_EXCEPTION_UPDATE + - GUILD_SCHEDULED_EVENT_EXCEPTION_DELETE AUTO_MODERATION_CONFIGURATION (1 << 20) - AUTO_MODERATION_RULE_CREATE diff --git a/developers/resources/audit-log.mdx b/developers/resources/audit-log.mdx index 3f858926da..875eeb46de 100644 --- a/developers/resources/audit-log.mdx +++ b/developers/resources/audit-log.mdx @@ -155,6 +155,9 @@ You should assume that your app may run into any field for the changed object, t | HOME_SETTINGS_UPDATE | 191 | Guild Server Guide was updated | | | VOICE_CHANNEL_STATUS_UPDATE | 192 | A voice channel status was updated by a user | | | VOICE_CHANNEL_STATUS_DELETE | 193 | A voice channel status was deleted by a user | | +| GUILD_SCHEDULED_EVENT_EXCEPTION_CREATE | 200 | Guild Scheduled Event Exception was created | [Guild Scheduled Event Exception](/developers/resources/guild-scheduled-event#guild-scheduled-event-exception-object) | +| GUILD_SCHEDULED_EVENT_EXCEPTION_UPDATE | 201 | Guild Scheduled Event Exception was updated | [Guild Scheduled Event Exception](/developers/resources/guild-scheduled-event#guild-scheduled-event-exception-object) | +| GUILD_SCHEDULED_EVENT_EXCEPTION_DELETE | 202 | Guild Scheduled Event Exception was deleted | [Guild Scheduled Event Exception](/developers/resources/guild-scheduled-event#guild-scheduled-event-exception-object) | \* Object has exception(s) to available keys. See the [exceptions](/developers/resources/audit-log#audit-log-change-object-audit-log-change-exceptions) section below for details. diff --git a/developers/resources/guild-scheduled-event.mdx b/developers/resources/guild-scheduled-event.mdx index e1eb39aa2c..dba3bba142 100644 --- a/developers/resources/guild-scheduled-event.mdx +++ b/developers/resources/guild-scheduled-event.mdx @@ -14,25 +14,26 @@ A representation of a scheduled event in a [guild](/developers/resources/guild). ###### Guild Scheduled Event Structure -| Field | Type | Description | -|-----------------------|--------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| id | snowflake | the id of the scheduled event | -| guild_id | snowflake | the guild id which the scheduled event belongs to | -| channel_id ** | ?snowflake | the channel id in which the scheduled event will be hosted, or `null` if [scheduled entity type](/developers/resources/guild-scheduled-event#guild-scheduled-event-object-guild-scheduled-event-entity-types) is `EXTERNAL` | -| creator_id? * | ?snowflake | the id of the user that created the scheduled event * | -| name | string | the name of the scheduled event (1-100 characters) | -| description? | ?string | the description of the scheduled event (1-1000 characters) | -| scheduled_start_time | ISO8601 timestamp | the time the scheduled event will start | -| scheduled_end_time ** | ?ISO8601 timestamp | the time the scheduled event will end, required if entity_type is `EXTERNAL` | -| privacy_level | [privacy level](/developers/resources/guild-scheduled-event#guild-scheduled-event-object-guild-scheduled-event-privacy-level) | the privacy level of the scheduled event | -| status | [event status](/developers/resources/guild-scheduled-event#guild-scheduled-event-object-guild-scheduled-event-status) | the status of the scheduled event | -| entity_type | [scheduled entity type](/developers/resources/guild-scheduled-event#guild-scheduled-event-object-guild-scheduled-event-entity-types) | the type of the scheduled event | -| entity_id | ?snowflake | the id of an entity associated with a guild scheduled event | -| entity_metadata ** | ?[entity metadata](/developers/resources/guild-scheduled-event#guild-scheduled-event-object-guild-scheduled-event-entity-metadata) | additional metadata for the guild scheduled event | -| creator? | [user](/developers/resources/user#user-object) object | the user that created the scheduled event | -| user_count? | integer | the number of users subscribed to the scheduled event | -| image? | ?string | the [cover image hash](/developers/reference#image-formatting) of the scheduled event | -| recurrence_rule | ?[recurrence rule](/developers/resources/guild-scheduled-event#guild-scheduled-event-recurrence-rule-object) | the definition for how often this event should recur | +| Field | Type | Description | +|----------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| id | snowflake | the id of the scheduled event | +| guild_id | snowflake | the guild id which the scheduled event belongs to | +| channel_id ** | ?snowflake | the channel id in which the scheduled event will be hosted, or `null` if [scheduled entity type](/developers/resources/guild-scheduled-event#guild-scheduled-event-object-guild-scheduled-event-entity-types) is `EXTERNAL` | +| creator_id? * | ?snowflake | the id of the user that created the scheduled event * | +| name | string | the name of the scheduled event (1-100 characters) | +| description? | ?string | the description of the scheduled event (1-1000 characters) | +| scheduled_start_time | ISO8601 timestamp | the time the scheduled event will start | +| scheduled_end_time ** | ?ISO8601 timestamp | the time the scheduled event will end, required if entity_type is `EXTERNAL` | +| privacy_level | [privacy level](/developers/resources/guild-scheduled-event#guild-scheduled-event-object-guild-scheduled-event-privacy-level) | the privacy level of the scheduled event | +| status | [event status](/developers/resources/guild-scheduled-event#guild-scheduled-event-object-guild-scheduled-event-status) | the status of the scheduled event | +| entity_type | [scheduled entity type](/developers/resources/guild-scheduled-event#guild-scheduled-event-object-guild-scheduled-event-entity-types) | the type of the scheduled event | +| entity_id | ?snowflake | the id of an entity associated with a guild scheduled event | +| entity_metadata ** | ?[entity metadata](/developers/resources/guild-scheduled-event#guild-scheduled-event-object-guild-scheduled-event-entity-metadata) | additional metadata for the guild scheduled event | +| creator? | [user](/developers/resources/user#user-object) object | the user that created the scheduled event | +| user_count? | integer | the number of users subscribed to the scheduled event | +| image? | ?string | the [cover image hash](/developers/reference#image-formatting) of the scheduled event | +| recurrence_rule | ?[recurrence rule](/developers/resources/guild-scheduled-event#guild-scheduled-event-recurrence-rule-object) | the definition for how often this event should recur | +| guild_scheduled_event_exceptions | array of [guild scheduled event exception](/developers/resources/guild-scheduled-event#guild-scheduled-event-exception-object) objects | the exceptions to the recurrence rule of the guild scheduled event | \* `creator_id` will be null and `creator` will not be included for events created before October 25th, 2021, when the concept of `creator_id` was introduced and tracked. @@ -110,11 +111,12 @@ SCHEDULED --> CANCELED ###### Guild Scheduled Event User Structure -| Field | Type | Description | -|--------------------------|-----------------------------------------------------------------|-----------------------------------------------------------------------------------| -| guild_scheduled_event_id | snowflake | the scheduled event id which the user subscribed to | -| user | [user](/developers/resources/user#user-object) | user which subscribed to an event | -| member? | [guild member](/developers/resources/guild#guild-member-object) | guild member data for this user for the guild which this event belongs to, if any | +| Field | Type | Description | +|-------------------------------------|-----------------------------------------------------------------|-----------------------------------------------------------------------------------------| +| guild_scheduled_event_id | snowflake | the scheduled event id which the user subscribed to | +| user | [user](/developers/resources/user#user-object) | user which subscribed to an event | +| member? | [guild member](/developers/resources/guild#guild-member-object) | guild member data for this user for the guild which this event belongs to, if any | +| guild_scheduled_event_exception_id? | snowflake | the id of the specific scheduled event exception that the user is subscribed to, if any | ### Guild Scheduled Event Recurrence Rule Object Discord's recurrence rule is a subset of the behaviors [defined in the iCalendar RFC](https://datatracker.ietf.org/doc/html/rfc5545) and implemented by [python's dateutil rrule](https://dateutil.readthedocs.io/en/stable/rrule.html) @@ -263,7 +265,7 @@ by_month_day = [24] | Field | Type | Description | |-------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------| -| n | int | The week to reoccur on. 1 - 5 | +| n | integer | The week to reoccur on. 1 - 5 | | day | [recurrence rule - weekday](/developers/resources/guild-scheduled-event#guild-scheduled-event-recurrence-rule-object-guild-scheduled-event-recurrence-rule-weekday) | The day within the week to reoccur on | @@ -284,6 +286,22 @@ by_month_day = [24] | NOVEMBER | 11 | | DECEMBER | 12 | +### Guild Scheduled Event Exception Object +A guild scheduled event exception represents a skipped or rescheduled recurrence for the scheduled event's [recurrence rule](/developers/resources/guild-scheduled-event#guild-scheduled-event-recurrence-rule-object). In the client, scheduled event exceptions are commonly highlighted as events that have had specific recurrences canceled. + + +###### Guild Scheduled Event Exception Structure + +| Field | Type | Description | +|----------------------|-----------------------------------------------------------------|--------------------------------------------------------------------------------------------| +| event_id | snowflake | the id of the scheduled event the exception belongs to | +| event_exception_id * | snowflake | a snowflake containing the original scheduled start time of the scheduled event recurrence | +| scheduled_start_time | ?[ISO8601 timestamp](/developers/reference#iso8601-date%2Ftime) | the new time at when the scheduled event recurrence will start, if applicable | +| scheduled_end_time | ?[ISO8601 timestamp](/developers/reference#iso8601-date%2Ftime) | the new time at when the scheduled event recurrence will end, if applicable | +| is_canceled | boolean | whether or not the scheduled event will be skipped on the recurrence | + +\* The snowflake in this field is not guranteed to be globally unique. + ## List Scheduled Events for Guild /guilds/[\{guild.id\}](/developers/resources/guild#guild-object)/scheduled-events @@ -345,7 +363,7 @@ Get a guild scheduled event. Returns a [guild scheduled event](/developers/resou ## Modify Guild Scheduled Event /guilds/[\{guild.id\}](/developers/resources/guild#guild-object)/scheduled-events/[\{guild_scheduled_event.id\}](/developers/resources/guild-scheduled-event#guild-scheduled-event-object) -Modify a guild scheduled event. Returns the modified [guild scheduled event](/developers/resources/guild-scheduled-event#guild-scheduled-event-object) object on success. Fires a [Guild Scheduled Event Update](/developers/events/gateway-events#guild-scheduled-event-update) Gateway event. +Modify a guild scheduled event. Returns the modified [guild scheduled event](/developers/resources/guild-scheduled-event#guild-scheduled-event-object) object on success. Fires a [Guild Scheduled Event Update](/developers/events/gateway-events#guild-scheduled-event-update) Gateway event, and optionally multiple [Guild Scheduled Event Exception Delete](/developers/events/gateway-events#guild-scheduled-event-exception-delete) Gateway events. To start or end an event, use this endpoint to modify the event's [status](/developers/resources/guild-scheduled-event#guild-scheduled-event-object-guild-scheduled-event-status) field. @@ -359,6 +377,10 @@ This endpoint supports the `X-Audit-Log-Reason` header. This endpoint silently discards `entity_metadata` for non-`EXTERNAL` events. + +Modifying the `recurrence_rule` may cause all exceptions for an event to be removed. + + All parameters to this endpoint are optional. @@ -392,6 +414,10 @@ All parameters to this endpoint are optional. Delete a guild scheduled event. Returns a `204` on success. Fires a [Guild Scheduled Event Delete](/developers/events/gateway-events#guild-scheduled-event-delete) Gateway event. + +This endpoint supports the `X-Audit-Log-Reason` header. + + ## Get Guild Scheduled Event Users /guilds/[\{guild.id\}](/developers/resources/guild#guild-object)/scheduled-events/[\{guild_scheduled_event.id\}](/developers/resources/guild-scheduled-event#guild-scheduled-event-object)/users @@ -409,6 +435,104 @@ Get a list of guild scheduled event users subscribed to a guild scheduled event. \* Provide a user id to `before` and `after` for pagination. Users will always be returned in ascending order by `user_id`. If both `before` and `after` are provided, only `before` is respected. Fetching users in-between `before` and `after` is not supported. +## Create Guild Scheduled Event Exception +/guilds/[\{guild.id\}](/developers/resources/guild#guild-object)/scheduled-events/[\{guild_scheduled_event.id\}](/developers/resources/guild-scheduled-event#guild-scheduled-event-object)/exceptions + +Create an exception for the guild scheduled event's recurrence rule. Returns the created [guild scheduled event exception object](/developers/resources/guild-scheduled-event#guild-scheduled-event-exception-object) on success. Fires a [Guild Scheduled Event Exception Create](/developers/events/gateway-events#guild-scheduled-event-exception-create) Gateway event. + + +This endpoint supports the `X-Audit-Log-Reason` header. + + + +At minimum, you must provide a value for one of `is_canceled`, `scheduled_start_time`, or `scheduled_end_time`. Otherwise, the request will fail with an [180005 JSON error code](/developers/topics/opcodes-and-status-codes#json). + + +###### JSON Params + +| Field | Type | Description | +|-------------------------------|-----------------------------------------------------------------|---------------------------------------------------------------------------| +| scheduled_start_time? | ?[ISO8601 timestamp](/developers/reference#iso8601-date%2Ftime) | the new scheduled start time for the scheduled event's recurrence | +| scheduled_end_time? | ?[ISO8601 timestamp](/developers/reference#iso8601-date%2Ftime) | the new scheduled end time for the scheduled event's recurrence | +| is_canceled? | boolean | whether the scheduled event should be skipped on this recurrence | + +## Modify Guild Scheduled Event Exception +/guilds/[\{guild.id\}](/developers/resources/guild#guild-object)/scheduled-events/[\{guild_scheduled_event.id\}](/developers/resources/guild-scheduled-event#guild-scheduled-event-object)/exceptions/[\{exception.id\}](/developers/resources/guild-scheduled-event#guild-scheduled-event-exception-object) + +Modify an exception for the guild scheduled event's recurrence rule. Returns the updated [guild scheduled event exception object](/developers/resources/guild-scheduled-event#guild-scheduled-event-exception-object) on success. Fires a [Guild Scheduled Event Exception Update](/developers/events/gateway-events#guild-scheduled-event-exception-update) Gateway event. + + +This endpoint supports the `X-Audit-Log-Reason` header. + + + +All parameters to this endpoint are optional. + + +###### JSON Params + +| Field | Type | Description | +|----------------------|-----------------------------------------------------------------|-------------------------------------------------------------------| +| scheduled_start_time | ?[ISO8601 timestamp](/developers/reference#iso8601-date%2Ftime) | the new scheduled start time for the scheduled event's recurrence | +| scheduled_end_time | ?[ISO8601 timestamp](/developers/reference#iso8601-date%2Ftime) | the new scheduled end time for the scheduled event's recurrence | +| is_canceled | boolean | whether the scheduled event should be skipped on this recurrence | + +## Delete Guild Scheduled Event Exception +/guilds/[\{guild.id\}](/developers/resources/guild#guild-object)/scheduled-events/[\{guild_scheduled_event.id\}](/developers/resources/guild-scheduled-event#guild-scheduled-event-object)/exceptions/[\{exception.id\}](/developers/resources/guild-scheduled-event#guild-scheduled-event-exception-object) + +Delete an exception for the guild scheduled event's recurrence rule. Returns a `204` empty response on success. Fires a [Guild Scheduled Event Exception Delete](/developers/events/gateway-events#guild-scheduled-event-exception-delete) Gateway event. + + +This endpoint supports the `X-Audit-Log-Reason` header. + + +## Get Guild Scheduled Event Exception Users +/guilds/[\{guild.id\}](/developers/resources/guild#guild-object)/scheduled-events/[\{guild_scheduled_event.id\}](/developers/resources/guild-scheduled-event#guild-scheduled-event-object)/exceptions/[\{exception.id\}](/developers/resources/guild-scheduled-event#guild-scheduled-event-exception-object)/users + +Get a list of guild scheduled event users subscribed to a specific guild scheduled event exception. Returns a list of [guild scheduled event user](/developers/resources/guild-scheduled-event#guild-scheduled-event-user-object) objects on success. Guild member data, if it exists, is included if the `with_member` query parameter is set. + + +###### Query String Params + +| Field | Type | Description | Default | +|--------------|--------------------------------------------------------|-----------------------------------------------|---------| +| limit? | number | number of users to return (up to maximum 100) | 100 | +| with_member? | [boolean](/developers/reference#boolean-query-strings) | include guild member data if it exists | false | +| before? * | snowflake | consider only users before given user id | null | +| after? * | snowflake | consider only users after given user id | null | + +\* Provide a user id to `before` and `after` for pagination. Users will always be returned in ascending order by `user_id`. If both `before` and `after` are provided, only `before` is respected. Fetching users in-between `before` and `after` is not supported. + +## Get Guild Scheduled Event User count +/guilds/[\{guild.id\}](/developers/resources/guild#guild-object)/scheduled-events/[\{guild_scheduled_event.id\}](/developers/resources/guild-scheduled-event#guild-scheduled-event-object)/users/counts + +Get the amount of users that are currently subscribed to a guild scheduled event, and optionally the scheduled event's exceptions. + + +###### Query String Params + +| Field | Type | Description | +|--------------------------------------|---------------------|-------------------------------------------------------------------------------------------| +| guild_scheduled_event_exception_ids? | array of snowflakes | the ids of the guild scheduled event exceptions to return user counts for (maximum of 10) | + +###### Response Body + +| Field | Type | Description | +|----------------------------------------|---------|-------------------------------------------------------------------------------------------------------------------| +| guild_scheduled_event_count | integer | the amount of users that are subscribed to the guild scheduled event | +| guild_scheduled_event_exception_counts | object | an object mapping guild scheduled event exception ids to the number of users that are subscribed to the exception | + +###### Example Response Body + +```json +{ + "guild_scheduled_event_count": 122, + "guild_scheduled_event_exception_counts": { + "1446863752396800000": 6, + "1449400467456000000": 7 + } +} +``` ## Guild Scheduled Event Status Update Automation