feat: add support for GuildScheduledEvent (#6493)

Co-authored-by: Rodry <38259440+ImRodry@users.noreply.github.com>
Co-authored-by: Sugden <28943913+NotSugden@users.noreply.github.com>
Co-authored-by: Jiralite <33201955+Jiralite@users.noreply.github.com>
Co-authored-by: GoldenAngel <50855202+GoldenAngel2@users.noreply.github.com>
Co-authored-by: Vlad Frangu <kingdgrizzle@gmail.com>
Co-authored-by: Antonio Román <kyradiscord@gmail.com>
Co-authored-by: SpaceEEC <spaceeec@yahoo.com>
This commit is contained in:
Shubham Parihar
2021-12-23 18:09:09 +05:30
committed by GitHub
parent aa7c1b2081
commit 1316fd4c6a
29 changed files with 1261 additions and 13 deletions

View File

@@ -78,7 +78,8 @@ exports.Endpoints = {
makeImageUrl(`${root}/role-icons/${roleId}/${hash}`, { size, format }),
};
},
invite: (root, code) => `${root}/${code}`,
invite: (root, code, eventId) => (eventId ? `${root}/${code}?event=${eventId}` : `${root}/${code}`),
scheduledEvent: (root, guildId, eventId) => `${root}/${guildId}/${eventId}`,
botGateway: '/gateway/bot',
};
@@ -202,6 +203,11 @@ exports.Events = {
GUILD_STICKER_CREATE: 'stickerCreate',
GUILD_STICKER_DELETE: 'stickerDelete',
GUILD_STICKER_UPDATE: 'stickerUpdate',
GUILD_SCHEDULED_EVENT_CREATE: 'guildScheduledEventCreate',
GUILD_SCHEDULED_EVENT_UPDATE: 'guildScheduledEventUpdate',
GUILD_SCHEDULED_EVENT_DELETE: 'guildScheduledEventDelete',
GUILD_SCHEDULED_EVENT_USER_ADD: 'guildScheduledEventUserAdd',
GUILD_SCHEDULED_EVENT_USER_REMOVE: 'guildScheduledEventUserRemove',
};
exports.ShardEvents = {
@@ -220,11 +226,12 @@ exports.ShardEvents = {
* * GUILD_MEMBER
* * MESSAGE
* * REACTION
* * GUILD_SCHEDULED_EVENT
* <warn>Partials require you to put checks in place when handling data. See the "Partial Structures" topic on the
* [guide](https://discordjs.guide/popular-topics/partials.html) for more information.</warn>
* @typedef {string} PartialType
*/
exports.PartialTypes = keyMirror(['USER', 'CHANNEL', 'GUILD_MEMBER', 'MESSAGE', 'REACTION']);
exports.PartialTypes = keyMirror(['USER', 'CHANNEL', 'GUILD_MEMBER', 'MESSAGE', 'REACTION', 'GUILD_SCHEDULED_EVENT']);
/**
* The type of a WebSocket message event, e.g. `MESSAGE_CREATE`. Here are the available events:
@@ -278,6 +285,11 @@ exports.PartialTypes = keyMirror(['USER', 'CHANNEL', 'GUILD_MEMBER', 'MESSAGE',
* * STAGE_INSTANCE_UPDATE
* * STAGE_INSTANCE_DELETE
* * GUILD_STICKERS_UPDATE
* * GUILD_SCHEDULED_EVENT_CREATE
* * GUILD_SCHEDULED_EVENT_UPDATE
* * GUILD_SCHEDULED_EVENT_DELETE
* * GUILD_SCHEDULED_EVENT_USER_ADD
* * GUILD_SCHEDULED_EVENT_USER_REMOVE
* @typedef {string} WSEventType
* @see {@link https://discord.com/developers/docs/topics/gateway#commands-and-events-gateway-events}
*/
@@ -332,6 +344,11 @@ exports.WSEvents = keyMirror([
'STAGE_INSTANCE_UPDATE',
'STAGE_INSTANCE_DELETE',
'GUILD_STICKERS_UPDATE',
'GUILD_SCHEDULED_EVENT_CREATE',
'GUILD_SCHEDULED_EVENT_UPDATE',
'GUILD_SCHEDULED_EVENT_DELETE',
'GUILD_SCHEDULED_EVENT_USER_ADD',
'GUILD_SCHEDULED_EVENT_USER_REMOVE',
]);
/**
@@ -705,6 +722,7 @@ exports.VerificationLevels = createEnum(['NONE', 'LOW', 'MEDIUM', 'HIGH', 'VERY_
* * MAXIMUM_THREAD_PARTICIPANTS
* * MAXIMUM_NON_GUILD_MEMBERS_BANS
* * MAXIMUM_BAN_FETCHES
* * MAXIMUM_NUMBER_OF_UNCOMPLETED_GUILD_SCHEDULED_EVENTS_REACHED
* * MAXIMUM_NUMBER_OF_STICKERS_REACHED
* * MAXIMUM_PRUNE_REQUESTS
* * MAXIMUM_GUILD_WIDGET_SETTINGS_UPDATE
@@ -776,6 +794,8 @@ exports.VerificationLevels = createEnum(['NONE', 'LOW', 'MEDIUM', 'HIGH', 'VERY_
* * LOTTIE_ANIMATION_MAXIMUM_DIMENSIONS_EXCEEDED
* * STICKER_FRAME_RATE_IS_TOO_SMALL_OR_TOO_LARGE
* * STICKER_ANIMATION_DURATION_EXCEEDS_MAXIMUM_OF_5_SECONDS
* * CANNOT_UPDATE_A_FINISHED_EVENT
* * FAILED_TO_CREATE_STAGE_NEEDED_FOR_STAGE_EVENT
* @typedef {string} APIError
* @see {@link https://discord.com/developers/docs/topics/opcodes-and-status-codes#json-json-error-codes}
*/
@@ -849,6 +869,7 @@ exports.APIErrors = {
MAXIMUM_THREAD_PARTICIPANTS: 30033,
MAXIMUM_NON_GUILD_MEMBERS_BANS: 30035,
MAXIMUM_BAN_FETCHES: 30037,
MAXIMUM_NUMBER_OF_UNCOMPLETED_GUILD_SCHEDULED_EVENTS_REACHED: 30038,
MAXIMUM_NUMBER_OF_STICKERS_REACHED: 30039,
MAXIMUM_PRUNE_REQUESTS: 30040,
MAXIMUM_GUILD_WIDGET_SETTINGS_UPDATE: 30042,
@@ -920,6 +941,8 @@ exports.APIErrors = {
LOTTIE_ANIMATION_MAXIMUM_DIMENSIONS_EXCEEDED: 170005,
STICKER_FRAME_RATE_IS_TOO_SMALL_OR_TOO_LARGE: 170006,
STICKER_ANIMATION_DURATION_EXCEEDS_MAXIMUM_OF_5_SECONDS: 170007,
CANNOT_UPDATE_A_FINISHED_EVENT: 180000,
FAILED_TO_CREATE_STAGE_NEEDED_FOR_STAGE_EVENT: 180002,
};
/**
@@ -1066,7 +1089,6 @@ exports.InteractionResponseTypes = createEnum([
'UPDATE_MESSAGE',
'APPLICATION_COMMAND_AUTOCOMPLETE_RESULT',
]);
/* eslint-enable max-len */
/**
* The type of a message component
@@ -1119,6 +1141,14 @@ exports.NSFWLevels = createEnum(['DEFAULT', 'EXPLICIT', 'SAFE', 'AGE_RESTRICTED'
*/
exports.PrivacyLevels = createEnum([null, 'PUBLIC', 'GUILD_ONLY']);
/**
* Privacy level of a {@link GuildScheduledEvent} object:
* * GUILD_ONLY
* @typedef {string} GuildScheduledEventPrivacyLevel
* @see {@link https://discord.com/developers/docs/resources/guild-scheduled-event#guild-scheduled-event-object-guild-scheduled-event-privacy-level}
*/
exports.GuildScheduledEventPrivacyLevels = createEnum([null, null, 'GUILD_ONLY']);
/**
* The premium tier (Server Boost level) of a guild:
* * NONE
@@ -1130,6 +1160,29 @@ exports.PrivacyLevels = createEnum([null, 'PUBLIC', 'GUILD_ONLY']);
*/
exports.PremiumTiers = createEnum(['NONE', 'TIER_1', 'TIER_2', 'TIER_3']);
/**
* The status of a {@link GuildScheduledEvent}:
* * SCHEDULED
* * ACTIVE
* * COMPLETED
* * CANCELED
* @typedef {string} GuildScheduledEventStatus
* @see {@link https://discord.com/developers/docs/resources/guild-scheduled-event#guild-scheduled-event-object-guild-scheduled-event-status}
*/
exports.GuildScheduledEventStatuses = createEnum([null, 'SCHEDULED', 'ACTIVE', 'COMPLETED', 'CANCELED']);
/**
* The entity type of a {@link GuildScheduledEvent}:
* * NONE
* * STAGE_INSTANCE
* * VOICE
* * EXTERNAL
* @typedef {string} GuildScheduledEventEntityType
* @see {@link https://discord.com/developers/docs/resources/guild-scheduled-event#guild-scheduled-event-object-guild-scheduled-event-entity-types}
*/
exports.GuildScheduledEventEntityTypes = createEnum([null, 'STAGE_INSTANCE', 'VOICE', 'EXTERNAL']);
/* eslint-enable max-len */
exports._cleanupSymbol = Symbol('djsCleanup');
function keyMirror(arr) {
@@ -1161,6 +1214,11 @@ function createEnum(keys) {
* The value set for a guild's default message notifications.
* @property {ExplicitContentFilterLevel} ExplicitContentFilterLevels
* The value set for the explicit content filter levels for a guild.
* @property {GuildScheduledEventStatus} GuildScheduledEventStatuses The status of a {@link GuildScheduledEvent} object.
* @property {GuildScheduledEventEntityType} GuildScheduledEventEntityTypes The entity type of a
* {@link GuildScheduledEvent} object.
* @property {GuildScheduledEventPrivacyLevel} GuildScheduledEventPrivacyLevels Privacy level of a
* {@link GuildScheduledEvent} object.
* @property {InteractionResponseType} InteractionResponseTypes The type of an interaction response.
* @property {InteractionType} InteractionTypes The type of an {@link Interaction} object.
* @property {MembershipState} MembershipStates The value set for a team member's membership state.

View File

@@ -40,6 +40,7 @@ class Intents extends BitField {}
* * `DIRECT_MESSAGES`
* * `DIRECT_MESSAGE_REACTIONS`
* * `DIRECT_MESSAGE_TYPING`
* * `GUILD_SCHEDULED_EVENTS`
* @type {Object}
* @see {@link https://discord.com/developers/docs/topics/gateway#list-of-intents}
*/
@@ -59,6 +60,7 @@ Intents.FLAGS = {
DIRECT_MESSAGES: 1 << 12,
DIRECT_MESSAGE_REACTIONS: 1 << 13,
DIRECT_MESSAGE_TYPING: 1 << 14,
GUILD_SCHEDULED_EVENTS: 1 << 16,
};
module.exports = Intents;

View File

@@ -115,6 +115,7 @@
* @property {string} [invite='https://discord.gg'] Base URL of invites
* @property {string} [template='https://discord.new'] Base URL of templates
* @property {Object} [headers] Additional headers to send for all API requests
* @property {string} [scheduledEvent='https://discord.com/events'] Base URL of guild scheduled events
*/
/**
@@ -160,6 +161,7 @@ class Options extends null {
cdn: 'https://cdn.discordapp.com',
invite: 'https://discord.gg',
template: 'https://discord.new',
scheduledEvent: 'https://discord.com/events',
},
};
}

View File

@@ -90,6 +90,7 @@ class Permissions extends BitField {
* * `MANAGE_EMOJIS_AND_STICKERS`
* * `USE_APPLICATION_COMMANDS`
* * `REQUEST_TO_SPEAK`
* * `MANAGE_EVENTS`
* * `MANAGE_THREADS`
* * `USE_PUBLIC_THREADS` (deprecated)
* * `CREATE_PUBLIC_THREADS`
@@ -136,6 +137,7 @@ Permissions.FLAGS = {
MANAGE_EMOJIS_AND_STICKERS: 1n << 30n,
USE_APPLICATION_COMMANDS: 1n << 31n,
REQUEST_TO_SPEAK: 1n << 32n,
MANAGE_EVENTS: 1n << 33n,
MANAGE_THREADS: 1n << 34n,
// TODO: Remove deprecated USE_*_THREADS flags in v14
USE_PUBLIC_THREADS: 1n << 35n,