diff --git a/README.md b/README.md index f6afaa5b..7c655c21 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -![banner](https://cdn.discordapp.com/attachments/783319033730564098/783399012547035176/HarmonyBanner.png) +![banner](https://github.com/harmonyland/harmony/blob/main/assets/banner.png)

An easy to use Discord API Library for Deno.

diff --git a/core/src/rest/http_client.ts b/core/src/rest/http_client.ts index 9f073b81..32f0428a 100644 --- a/core/src/rest/http_client.ts +++ b/core/src/rest/http_client.ts @@ -176,13 +176,15 @@ export class HTTPClient implements HTTPClientOptions { } } + const query = new URLSearchParams(options?.query).toString(); + const abortController = new AbortController(); const timeoutID = setTimeout(() => { abortController.abort(); }, this.timeout); const res = await fetch( - `${this.baseURL}/v${this.version}${endpoint}`, + `${this.baseURL}/v${this.version}${endpoint}${query}`, { method, headers, diff --git a/framework/src/cache/manager.ts b/framework/src/cache/manager.ts new file mode 100644 index 00000000..5d05bf89 --- /dev/null +++ b/framework/src/cache/manager.ts @@ -0,0 +1,8 @@ +// deno-lint-ignore-file no-explicit-any +import { Collection } from "./collection.ts"; + +export class CacheManager extends Collection> { + constructor() { + super(); + } +} diff --git a/framework/src/managers/guildChannels.ts b/framework/src/managers/guildChannels.ts index 149e202d..80e93b23 100644 --- a/framework/src/managers/guildChannels.ts +++ b/framework/src/managers/guildChannels.ts @@ -17,7 +17,7 @@ export class GuildChannelsManager constructor(client: Client, parent: ChannelsManager, guildID: string) { super( client, - parent as unknown as BaseManager, + parent as BaseManager, ); this.guildID = guildID; } diff --git a/framework/src/managers/guildMembers.ts b/framework/src/managers/guildMembers.ts new file mode 100644 index 00000000..e69de29b diff --git a/framework/src/managers/messages.ts b/framework/src/managers/messages.ts new file mode 100644 index 00000000..99b78de0 --- /dev/null +++ b/framework/src/managers/messages.ts @@ -0,0 +1,87 @@ +import type { + GetChannelMessagesParams, + MessagePayload, +} from "../../../types/mod.ts"; +import type { Client } from "../client/mod.ts"; +import { Message } from "../structures/messages/mod.ts"; +import { BaseManager } from "./base.ts"; + +export class MessagesManager extends BaseManager { + constructor(client: Client) { + super(client); + } + + _fill(messages: MessagePayload[]) { + for (const message of messages) { + this.set(message.id!, message); + } + } + + async _fetch( + channelID: string, + id: string, + ): Promise { + try { + const resp: MessagePayload | undefined = await this.client.rest.get( + `/channels/${channelID}/messages/${id}`, + ); + if (!resp) return; + this.set(id, resp); + return resp; + } catch (_err) { + return; + } + } + async _fetchBulk( + channelID: string, + options: GetChannelMessagesParams, + ): Promise { + try { + const query: Record = { + ...options, + limit: "", + }; + if (options.limit) { + if (options.limit > 100 || options.limit < 1) { + throw new Error("Limit must be in range 1-100"); + } + query.limit = options.limit.toString(); + } else { + delete query.limit; + } + const resp: MessagePayload[] | undefined = await this.client.rest.get( + `/channels/${channelID}/messages`, + { + query, + }, + ); + if (!resp) return; + return resp.map((message) => { + this.set(message.id!, message); + return message; + }); + } catch (_err) { + return; + } + } + + get( + id: string, + ) { + const cached = this._get(id); + if (!cached) return; + return new Message(this.client, cached); + } + async fetch( + channelID: string, + id: string, + ) { + try { + const payload = await this._fetch(channelID, id); + if (!payload) return; + return new Message(this.client, payload); + } catch (_err) { + return; + } + } +} diff --git a/framework/src/structures/channels/channel.ts b/framework/src/structures/channels/channel.ts index bd4c7e6e..97227739 100644 --- a/framework/src/structures/channels/channel.ts +++ b/framework/src/structures/channels/channel.ts @@ -17,8 +17,4 @@ export class Channel { get type(): ChannelType { return this.payload.type; } - - get flags(): number { - return this.payload.flags; - } } diff --git a/framework/src/structures/channels/groupDMChannel.ts b/framework/src/structures/channels/groupDMChannel.ts index 792024f5..15d1c687 100644 --- a/framework/src/structures/channels/groupDMChannel.ts +++ b/framework/src/structures/channels/groupDMChannel.ts @@ -16,6 +16,9 @@ export class GroupDMChannel extends DMBasedChannel { get icon(): string | null { return this.payload.icon; } + get ownerID(): string { + return this.payload.owner_id; + } get owner(): User | undefined { return this.client.users.get(this.payload.owner_id); } diff --git a/framework/src/structures/channels/guildChannel.ts b/framework/src/structures/channels/guildChannel.ts index a8c8438c..2bac4f10 100644 --- a/framework/src/structures/channels/guildChannel.ts +++ b/framework/src/structures/channels/guildChannel.ts @@ -1,6 +1,7 @@ import { Channel } from "./channel.ts"; import type { GuildChannelPayload } from "../../../../types/mod.ts"; import type { Client } from "../../client/mod.ts"; +import { Guild } from "../guilds/guild.ts"; export class GuildChannel extends Channel { payload: GuildChannelPayload; @@ -12,6 +13,9 @@ export class GuildChannel extends Channel { get guildID(): string { return this.payload.guild_id; } + get guild(): Guild | undefined { + return this.client.guilds.get(this.payload.guild_id); + } get name(): string { return this.payload.name; } @@ -27,6 +31,9 @@ export class GuildChannel extends Channel { get parentID(): string | null { return this.payload.parent_id; } + get parent(): GuildChannel | undefined { + return this.client.channels.get(this.payload.parent_id!) as GuildChannel; + } get topic(): string | null { return this.payload.topic; } diff --git a/framework/src/structures/channels/guildForumChannel.ts b/framework/src/structures/channels/guildForumChannel.ts index 374b2179..81efe510 100644 --- a/framework/src/structures/channels/guildForumChannel.ts +++ b/framework/src/structures/channels/guildForumChannel.ts @@ -72,4 +72,7 @@ export class GuildForumChannel extends GuildForumChannelSuper { }; }); } + get flags(): number { + return this.payload.flags!; + } } diff --git a/framework/src/structures/channels/guildThreadChannel.ts b/framework/src/structures/channels/guildThreadChannel.ts new file mode 100644 index 00000000..e69de29b diff --git a/framework/src/structures/guilds/member.ts b/framework/src/structures/guilds/member.ts new file mode 100644 index 00000000..f92b5633 --- /dev/null +++ b/framework/src/structures/guilds/member.ts @@ -0,0 +1,62 @@ +import type { GuildMemberPayload } from "../../../../types/mod.ts"; +import type { Client } from "../../client/mod.ts"; + +export class Member { + client: Client; + payload: GuildMemberPayload; + + constructor(client: Client, payload: GuildMemberPayload) { + this.client = client; + this.payload = payload; + if (payload.user) { + this.client.users.set(payload.user.id, payload.user); + } + } + + get id() { + return this.payload.user?.id; + } + get user() { + return this.id ? this.client.users.get(this.id) : undefined; + } + get nick() { + return this.payload.nick ?? this.user?.name; + } + get avatar() { + // TODO: give default avatar + // (also) TODO: give the url instead of hash + return this.payload.avatar ?? this.user?.avatar; + } + get roles() { + return this.payload.roles.map((id) => this.client.roles.get(id)); + } + get joinedAt() { + return Date.parse(this.payload.joined_at); + } + get premiumSince() { + return this.payload.premium_since ?? null; + } + get deaf() { + return this.payload.deaf; + } + get mute() { + return this.payload.mute; + } + get flags() { + // TODO: make flags class + return this.payload.flags; + } + get pending() { + return this.payload.pending ?? false; + } + get permissions() { + // TODO: make permissions class + // also TODO: use roles to calculate permissions - permissions in payload is not available in all cases + return this.payload.permissions; + } + get timeOutEnd() { + return this.payload.communication_disabled_until + ? Date.parse(this.payload.communication_disabled_until) + : null; + } +} diff --git a/framework/test/client.test.ts b/framework/test/client.test.ts index e69de29b..117861ee 100644 --- a/framework/test/client.test.ts +++ b/framework/test/client.test.ts @@ -0,0 +1,33 @@ +import { GatewayIntent } from "../../mod.ts"; +import { Client } from "../mod.ts"; + +const token = Deno.env.get("BOT_TOKEN"); +if (!token) { + throw new Error("No token provided"); +} + +Deno.test("client", { + sanitizeOps: false, +}, async (t) => { + await t.step("ready event", async () => { + const client = new Client(token); + await client.connect(); + for await (const _ of client.on("ready")) { + await client.gateway.destroyAll(); + break; + } + }); + + await t.step("guild create event", async () => { + const client = new Client(token, { + intents: GatewayIntent.GUILDS, + }); + await client.connect(); + for await (const [guild] of client.on("guildCreate")) { + if (guild.id === "783319033205751809") { + await client.gateway.destroyAll(); + break; + } + } + }); +}); diff --git a/framework/test/client.ts b/framework/test/client.ts new file mode 100644 index 00000000..736c9b00 --- /dev/null +++ b/framework/test/client.ts @@ -0,0 +1,37 @@ +import { GatewayIntent } from "../../mod.ts"; +import { Client, GuildChannel } from "../mod.ts"; + +const TOKEN = Deno.env.get("BOT_TOKEN"); +if (!TOKEN) { + throw new Error("No token provided"); +} + +const client = new Client(TOKEN, { + intents: GatewayIntent.GUILDS | GatewayIntent.GUILD_MESSAGES, +}); + +client.on("guildCreate", (guild) => { + console.log(guild.name); +}); + +client.on("messageCreate", (msg) => { + if (msg.author.bot) return; + console.log(msg.guild!.id); + msg.channel?.send(`${msg.guild!.id}: ${msg.channel.id}`); +}); + +client.on("channelCreate", (channel) => { + if (channel instanceof GuildChannel) { + console.log(channel.name); + console.log(client.channels.cache.size); + } +}); + +client.on("channelDelete", (channel) => { + if (channel instanceof GuildChannel) { + console.log(channel.name); + console.log(client.channels.cache.size); + } +}); + +client.connect(); diff --git a/framework/test/deps.ts b/framework/test/deps.ts new file mode 100644 index 00000000..6f968999 --- /dev/null +++ b/framework/test/deps.ts @@ -0,0 +1 @@ +export * from "https://deno.land/std@0.201.0/assert/mod.ts"; diff --git a/types/src/applications/application.ts b/types/src/applications/application.ts index f36076b5..6bb54ac0 100644 --- a/types/src/applications/application.ts +++ b/types/src/applications/application.ts @@ -1,39 +1,39 @@ -import { UserPayload } from "../users/user.ts"; -import { TeamPayload } from "../teams/team.ts"; import { snowflake } from "../common.ts"; +import { TeamPayload } from "../teams/team.ts"; +import { UserPayload } from "../users/user.ts"; export interface ApplicationPayload { - id: snowflake; - name: string; - icon: string | null; - description: string; - rpc_origins?: string[]; + approximate_guild_count?: number; bot_public: boolean; bot_require_code_grant: boolean; - terms_of_service_url?: string; - privacy_policy_url?: string; - owner?: UserPayload; - /** @deprecated It will be removed in v11. */ - summary: string; - verify_key: string; - team: TeamPayload | null; - guild_id?: snowflake; - primary_sku_id?: snowflake; - slug?: string; cover_image?: string; + custom_install_url?: string; + description: string; /** Use it with ApplicationFlags. */ flags?: number; - approximate_guild_count?: number; - redirect_uris?: string[]; - interactions_endpoint_url?: string; - tags?: string[]; + guild_id?: snowflake; + icon: null | string; + id: snowflake; install_params?: ApplicationInstallParams; - custom_install_url?: string; - role_connections_verification_url?: string; integration_types_config?: Record< keyof ApplicationIntegrationType, ApplicationIntegrationTypeConfig >; + interactions_endpoint_url?: string; + name: string; + owner?: UserPayload; + primary_sku_id?: snowflake; + privacy_policy_url?: string; + redirect_uris?: string[]; + role_connections_verification_url?: string; + rpc_origins?: string[]; + slug?: string; + /** @deprecated It will be removed in v11. */ + summary: string; + tags?: string[]; + team: null | TeamPayload; + terms_of_service_url?: string; + verify_key: string; } export enum ApplicationIntegrationType { @@ -46,8 +46,8 @@ export interface ApplicationIntegrationTypeConfig { } export interface ApplicationInstallParams { - scopes: string[]; permissions: string; + scopes: string[]; } export enum ApplicationFlags { @@ -64,17 +64,17 @@ export enum ApplicationFlags { } export interface EditApplicationPayload { + cover_image?: null | string; custom_install_url?: string; description?: string; - role_connections_verification_url?: string; + flags?: number; + icon?: null | string; install_params?: ApplicationInstallParams; integration_types_config?: Record< keyof ApplicationIntegrationType, ApplicationIntegrationTypeConfig >; - flags?: number; - icon?: string | null; - cover_image?: string | null; interactions_endpoint_url?: string; + role_connections_verification_url?: string; tags?: string[]; } diff --git a/types/src/applications/roleConnectionMetadata.ts b/types/src/applications/roleConnectionMetadata.ts index 3cc4022d..b9c33991 100644 --- a/types/src/applications/roleConnectionMetadata.ts +++ b/types/src/applications/roleConnectionMetadata.ts @@ -1,12 +1,12 @@ import { Locales } from "../etc/locales.ts"; export interface ApplicationRoleConnectionMetadata { - type: ApplicationRoleConnectionMetadataType; + description: string; + description_localization?: Record; key: string; name: string; name_localization?: Record; - description: string; - description_localization?: Record; + type: ApplicationRoleConnectionMetadataType; } export enum ApplicationRoleConnectionMetadataType { diff --git a/types/src/auditLogs/log.ts b/types/src/auditLogs/log.ts index 9a231875..c0f04e0f 100644 --- a/types/src/auditLogs/log.ts +++ b/types/src/auditLogs/log.ts @@ -1,16 +1,21 @@ import { AutoModerationRulePayload } from "../autoMod/autoMod.ts"; +import { ChannelPayload } from "../channels/base.ts"; import { OverwritePayload } from "../channels/guild.ts"; import { GuildThreadChannelPayload, ThreadMetadataPayload, } from "../channels/thread.ts"; -import { IntegrationPayload } from "../guilds/integration.ts"; +import { snowflake } from "../common.ts"; +import { EmojiPayload } from "../emojis/emoij.ts"; import { GuildPayload } from "../guilds/guild.ts"; +import { IntegrationPayload } from "../guilds/integration.ts"; +import { GuildMemberPayload } from "../guilds/member.ts"; import { RolePayload } from "../guilds/role.ts"; import { ApplicationCommandPayload, ApplicationCommandPermissions, } from "../interactions/command.ts"; +import { InvitePayload } from "../invites/invite.ts"; import { ScheduledEventPayload, ScheduledEventPrivacyLevel, @@ -23,11 +28,6 @@ import { import { StickerFormatType, StickerPayload } from "../stickers/sticker.ts"; import { UserPayload } from "../users/user.ts"; import { WebhookPayload } from "../webhooks/webhook.ts"; -import { ChannelPayload } from "../channels/base.ts"; -import { GuildMemberPayload } from "../guilds/member.ts"; -import { InvitePayload } from "../invites/invite.ts"; -import { EmojiPayload } from "../emojis/emoij.ts"; -import { snowflake } from "../common.ts"; export interface AuditLogPayload { application_commands: ApplicationCommandPayload[]; @@ -41,13 +41,13 @@ export interface AuditLogPayload { } export interface AuditLogEntryPayload { - target_id: string | null; + action_type: AuditLogEvents; changes?: AuditLogChangePayload[]; - user_id: snowflake | null; id: snowflake; - action_type: AuditLogEvents; options?: AuditLogEntryInfoPayload; reason?: string; + target_id: null | string; + user_id: null | snowflake; } export enum AuditLogEvents { @@ -117,47 +117,47 @@ export interface AuditLogEntryInfoPayload { count?: string; delete_member_days?: string; id?: snowflake; + integration_type?: string; members_removed?: string; message_id?: snowflake; role_name?: string; type?: string; - integration_type?: string; } type AuditLogChangeValue = - | string - | number + | ApplicationCommandPermissions + | AutoModerationRulePayload | boolean - | StickerFormatType - | OverwritePayload - | StagePrivacyLevel - | ScheduledEventPrivacyLevel - | ScheduledEventStatus - | RolePayload - | GuildPayload | ChannelPayload - | GuildMemberPayload - | InvitePayload - | WebhookPayload | EmojiPayload + | GuildMemberPayload + | GuildPayload | IntegrationPayload + | InvitePayload + | number + | OverwritePayload + | RolePayload + | ScheduledEventPrivacyLevel + | ScheduledEventStatus | StageInstancePayload + | StagePrivacyLevel + | StickerFormatType | StickerPayload // | GuildScheduledEventPayload + | string | ThreadMetadataPayload - | ApplicationCommandPermissions - | AutoModerationRulePayload; + | WebhookPayload; export interface AuditLogChangePayload { + key: string; new_value?: AuditLogChangeValue; old_value?: AuditLogChangeValue; - key: string; } export interface GetAuditLogParams { - user_id?: snowflake; action_type?: AuditLogEvents; - before?: snowflake; after?: snowflake; + before?: snowflake; limit?: number; + user_id?: snowflake; } diff --git a/types/src/autoMod/autoMod.ts b/types/src/autoMod/autoMod.ts index f626c0a9..3c05e31c 100644 --- a/types/src/autoMod/autoMod.ts +++ b/types/src/autoMod/autoMod.ts @@ -1,17 +1,17 @@ import { snowflake } from "../common.ts"; export interface AutoModerationRulePayload { - id: snowflake; - guild_id: snowflake; - name: string; - creator_id: snowflake; - event_type: AutoModerationRuleEventType; - trigger_type: AutoModerationRuleTriggerType; - trigger_metadata: AutoModerationRuleTriggerMetadata; actions: AutoModerationRuleAction[]; + creator_id: snowflake; enabled: boolean; - exempt_roles: snowflake[]; + event_type: AutoModerationRuleEventType; exempt_channels: snowflake[]; + exempt_roles: snowflake[]; + guild_id: snowflake; + id: snowflake; + name: string; + trigger_metadata: AutoModerationRuleTriggerMetadata; + trigger_type: AutoModerationRuleTriggerType; } export enum AutoModerationRuleEventType { @@ -26,12 +26,12 @@ export enum AutoModerationRuleTriggerType { } export interface AutoModerationRuleTriggerMetadata { - keyword_filter: string[]; - regex_patterns: string[]; - presets: AutoModerationRuleKeywordPreset[]; allow_list: string[]; - mention_total_limit: number; + keyword_filter: string[]; mention_raid_protection_enabled: boolean; + mention_total_limit: number; + presets: AutoModerationRuleKeywordPreset[]; + regex_patterns: string[]; } export enum AutoModerationRuleKeywordPreset { @@ -41,8 +41,8 @@ export enum AutoModerationRuleKeywordPreset { } export interface AutoModerationRuleAction { - type: AutoModerationRuleActionType; metadata?: AutoModerationRuleActionMetadata; + type: AutoModerationRuleActionType; } export enum AutoModerationRuleActionType { @@ -53,27 +53,27 @@ export enum AutoModerationRuleActionType { export interface AutoModerationRuleActionMetadata { channel_id: snowflake; - duration_seconds: number; custom_message?: string; + duration_seconds: number; } export interface AutoModerationRuleCreatePayload { - name: string; - event_type: AutoModerationRuleEventType; - trigger_type: AutoModerationRuleTriggerType; - trigger_metadata?: AutoModerationRuleTriggerMetadata; actions: AutoModerationRuleAction[]; enabled?: boolean; - exempt_roles?: snowflake[]; + event_type: AutoModerationRuleEventType; exempt_channels?: snowflake[]; + exempt_roles?: snowflake[]; + name: string; + trigger_metadata?: AutoModerationRuleTriggerMetadata; + trigger_type: AutoModerationRuleTriggerType; } export interface AutoModerationRuleUpdatePayload { - name?: string; - event_type?: AutoModerationRuleEventType; - trigger_metadata?: AutoModerationRuleTriggerMetadata; actions?: AutoModerationRuleAction[]; enabled?: boolean; - exempt_roles?: snowflake[]; + event_type?: AutoModerationRuleEventType; exempt_channels?: snowflake[]; + exempt_roles?: snowflake[]; + name?: string; + trigger_metadata?: AutoModerationRuleTriggerMetadata; } diff --git a/types/src/channels/base.ts b/types/src/channels/base.ts index 3888077b..0e94c039 100644 --- a/types/src/channels/base.ts +++ b/types/src/channels/base.ts @@ -23,7 +23,6 @@ export enum ChannelType { export interface ChannelPayload { id: snowflake; type: ChannelType; - flags?: number; } export enum ChannelFlags { @@ -33,16 +32,16 @@ export enum ChannelFlags { } export interface TextChannelPayload extends ChannelPayload { - last_pin_timestamp: string | null; - last_message_id: snowflake | null; + last_message_id: null | snowflake; + last_pin_timestamp: null | string; } export interface CreateChannelInvitePayload extends Reasonable { max_age?: number; max_uses?: number; - temporary?: boolean; - unique?: boolean; + target_applicaton_id?: snowflake; target_type?: InviteTargetType; target_user_id?: snowflake; - target_applicaton_id?: snowflake; + temporary?: boolean; + unique?: boolean; } diff --git a/types/src/channels/dm.ts b/types/src/channels/dm.ts index 0ebb3a79..af9f4ce0 100644 --- a/types/src/channels/dm.ts +++ b/types/src/channels/dm.ts @@ -14,18 +14,18 @@ export interface DMChannelPayload extends DMBasedChannelPayload { /** @link https://discord.com/developers/docs/resources/channel#channel-object-example-group-dm-channel */ export interface GroupDMChannelPayload extends DMBasedChannelPayload { - type: ChannelType.GROUP_DM; - name: string; - icon: string | null; - owner_id: snowflake; application_id?: snowflake; + icon: null | string; managed: boolean; + name: string; + owner_id: snowflake; + type: ChannelType.GROUP_DM; } /** @link https://discord.com/developers/docs/resources/channel#modify-channel-json-params-group-dm */ export interface EditGroupDMChannelPayload extends Reasonable { - name?: string; icon?: string; + name?: string; } export interface GroupDMAddRecipientPayload { diff --git a/types/src/channels/embed.ts b/types/src/channels/embed.ts index bcf42e9d..7f857e1a 100644 --- a/types/src/channels/embed.ts +++ b/types/src/channels/embed.ts @@ -1,26 +1,26 @@ /** @link https://discord.com/developers/docs/resources/channel#embed-object-embed-types */ export enum EmbedType { - RICH = "rich", - IMAGE = "image", - VIDEO = "video", - GIFV = "gifv", ARTICLE = "article", + GIFV = "gifv", + IMAGE = "image", LINK = "link", + RICH = "rich", + VIDEO = "video", } /** @link https://discord.com/developers/docs/resources/channel#embed-object-embed-video-structure */ export interface EmbedVideoPayload { - url: string; - proxy_url?: string; height?: number; + proxy_url?: string; + url: string; width?: number; } /** @link https://discord.com/developers/docs/resources/channel#embed-object-embed-image-structure */ export interface EmbedImagePayload { - url: string; - proxy_url?: string; height?: number; + proxy_url?: string; + url: string; width?: number; } @@ -35,39 +35,39 @@ export interface EmbedProviderPayload { /** @link https://discord.com/developers/docs/resources/channel#embed-object-embed-author-structure */ export interface EmbedAuthorPayload { - name: string; - url?: string; icon_url?: string; + name: string; proxy_icon_url?: string; + url?: string; } /** @link https://discord.com/developers/docs/resources/channel#embed-object-embed-footer-structure */ export interface EmbedFooterPayload { - text: string; icon_url?: string; proxy_icon_url?: string; + text: string; } /** @link https://discord.com/developers/docs/resources/channel#embed-object-embed-field-structure */ export interface EmbedFieldPayload { + inline?: boolean; name: string; value: string; - inline?: boolean; } /** @link https://discord.com/developers/docs/resources/channel#embed-object-embed-structure */ export interface EmbedPayload { - title?: string; - type?: EmbedType; - description?: string; - url?: string; - timestamp?: string; + author?: EmbedAuthorPayload; color?: number; + description?: string; + fields?: EmbedFieldPayload[]; footer?: EmbedFooterPayload; image?: EmbedImagePayload; + provider?: EmbedProviderPayload; thumbnail?: EmbedThumbnailPayload; + timestamp?: string; + title?: string; + type?: EmbedType; + url?: string; video?: EmbedVideoPayload; - provider?: EmbedProviderPayload; - author?: EmbedAuthorPayload; - fields?: EmbedFieldPayload[]; } diff --git a/types/src/channels/etc.ts b/types/src/channels/etc.ts index cbb867db..a18927de 100644 --- a/types/src/channels/etc.ts +++ b/types/src/channels/etc.ts @@ -8,15 +8,15 @@ export interface FollowedChannelPayload { /** @link https://discord.com/developers/docs/resources/channel#allowed-mentions-object-allowed-mention-types */ export enum AllowedMentionType { + EVERYONE = "everyone", ROLES = "roles", USERS = "users", - EVERYONE = "everyone", } /** @link https://discord.com/developers/docs/resources/channel#allowed-mentions-object-allowed-mentions-structure */ export interface AllowedMentionsPayload { parse: AllowedMentionType[]; + replied_user: boolean; roles: snowflake[]; users: snowflake[]; - replied_user: boolean; } diff --git a/types/src/channels/guild.ts b/types/src/channels/guild.ts index bb009383..2353862f 100644 --- a/types/src/channels/guild.ts +++ b/types/src/channels/guild.ts @@ -11,24 +11,24 @@ export enum OverwriteType { /** @link https://discord.com/developers/docs/resources/channel#overwrite-object-overwrite-structure */ export interface OverwritePayload { - id: snowflake; - type: OverwriteType; allow: string; deny: string; + id: snowflake; + type: OverwriteType; } export interface GuildForumTagPayload { + emoji_id: null | snowflake; + emoji_name: null | string; id: snowflake; - name: string; moderated: boolean; - emoji_id: snowflake | null; - emoji_name: string | null; + name: string; } export interface GuildVoiceBasedChannelPayload extends GuildChannelPayload { bitrate: number; + rtc_region: null | string; user_limit: number; - rtc_region: string | null; } export interface GuildTextBasedChannelPayload @@ -45,20 +45,21 @@ export interface GuildThreadAvailableChannelPayload export interface GuildChannelPayload extends ChannelPayload { guild_id: snowflake; name: string; - position: number; - permission_overwrites: OverwritePayload[]; nsfw: boolean; - parent_id: snowflake | null; - topic: string | null; + parent_id: null | snowflake; + permission_overwrites: OverwritePayload[]; + position: number; + topic: null | string; } export interface GuildForumChannelPayload extends GuildThreadAvailableChannelPayload, GuildTextBasedChannelPayload { - type: ChannelType.GUILD_FORUM; + available_tags: GuildForumTagPayload[]; + default_forum_layout?: ForumLayout; default_reaction_emoji?: ForumDefaultReactionPayload | null; default_sort_order?: ForumSortOrder; - default_forum_layout?: ForumLayout; - available_tags: GuildForumTagPayload[]; + flags?: number; + type: ChannelType.GUILD_FORUM; } export enum ForumSortOrder { @@ -73,8 +74,8 @@ export enum ForumLayout { } export interface ForumDefaultReactionPayload { - emoji_id: snowflake | null; - emoji_name: string | null; + emoji_id: null | snowflake; + emoji_name: null | string; } /** @link https://discord.com/developers/docs/resources/channel#channel-object-example-guild-text-channel */ @@ -115,54 +116,54 @@ export interface GuildStageChannelPayload /** @link https://discord.com/developers/docs/resources/channel#modify-channel-json-params-guild-channel */ export interface EditGuildChannelPayload extends Reasonable { name?: string; - position?: number | null; - permission_overwrites?: OverwritePayload[] | null; + permission_overwrites?: null | OverwritePayload[]; + position?: null | number; } export type EditGuildCategoryPayload = EditGuildChannelPayload; export interface EditGuildAnnouncementChannelPayload extends EditGuildChannelPayload { - type?: ChannelType.GUILD_TEXT | ChannelType.GUILD_ANNOUNCEMENT; - topic?: string | null; - parent_id?: snowflake | null; - default_auto_archive_duration?: number | null; + default_auto_archive_duration?: null | number; nsfw?: boolean | null; + parent_id?: null | snowflake; + topic?: null | string; + type?: ChannelType.GUILD_ANNOUNCEMENT | ChannelType.GUILD_TEXT; } export interface EditGuildTextChannelPayload extends EditGuildChannelPayload { - type?: ChannelType.GUILD_TEXT | ChannelType.GUILD_ANNOUNCEMENT; - topic?: string | null; - parent_id?: snowflake | null; - rate_limit_per_user?: number | null; + default_auto_archive_duration?: null | number; default_thread_rate_limit_per_user?: number; - default_auto_archive_duration?: number | null; nsfw?: boolean | null; + parent_id?: null | snowflake; + rate_limit_per_user?: null | number; + topic?: null | string; + type?: ChannelType.GUILD_ANNOUNCEMENT | ChannelType.GUILD_TEXT; } export interface EditGuildVoiceChannelPayload extends EditGuildChannelPayload { - bitrate?: number | null; - user_limit?: number | null; - rtc_region?: string | null; - video_quality_mode?: VideoQualityModes | null; - parent_id?: snowflake | null; + bitrate?: null | number; nsfw?: boolean | null; + parent_id?: null | snowflake; + rtc_region?: null | string; + user_limit?: null | number; + video_quality_mode?: null | VideoQualityModes; } export type EditGuildStageChannelPayload = EditGuildVoiceChannelPayload; export interface EditGuildForumChannelPayload extends EditGuildChannelPayload { - flags?: number; available_tags?: GuildForumTagPayload[]; + default_auto_archive_duration?: null | number; + default_forum_layout?: ForumLayout; default_reaction_emoji?: ForumDefaultReactionPayload | null; - default_thread_rate_limit_per_user?: number; default_sort_order?: ForumSortOrder | null; - default_forum_layout?: ForumLayout; - parent_id?: snowflake | null; + default_thread_rate_limit_per_user?: number; + flags?: number; nsfw?: boolean | null; - topic?: string | null; - rate_limit_per_user?: number | null; - default_auto_archive_duration?: number | null; + parent_id?: null | snowflake; + rate_limit_per_user?: null | number; + topic?: null | string; } export interface EditChannelPermissionsPayload extends Reasonable { diff --git a/types/src/channels/message.ts b/types/src/channels/message.ts index 446672e7..160039f1 100644 --- a/types/src/channels/message.ts +++ b/types/src/channels/message.ts @@ -22,27 +22,27 @@ import { GuildThreadChannelPayload } from "./thread.ts"; /** @link https://discord.com/developers/docs/resources/channel#channel-mention-object-channel-mention-structure */ export interface ChannelMentionPayload { - id: snowflake; guild_id: snowflake; - type: ChannelType; + id: snowflake; name: string; + type: ChannelType; } /** @link https://discord.com/developers/docs/resources/channel#attachment-object-attachment-structure */ export interface AttachmentPayload { - id: snowflake; - filename: string; - description?: string; content_type?: string; + description?: string; + duration_secs?: number; + ephemeral?: boolean; + filename: string; + flags?: number; + height?: number; + id: snowflake; + proxy_url: string; size: number; url: string; - proxy_url: string; - height?: number; - width?: number; - ephemeral?: boolean; - duration_secs?: number; waveform?: string; - flags?: number; + width?: number; } export enum AttachmentFlags { @@ -51,12 +51,12 @@ export enum AttachmentFlags { /** @link https://discord.com/developers/docs/resources/channel#reaction-object-reaction-structure */ export interface ReactionPayload { + burst_colors: string[]; count: number; count_details: ReactionCountDetailsPayload; + emoji: EmojiPayload; me: boolean; me_burst: boolean; - emoji: EmojiPayload; - burst_colors: string[]; } export interface ReactionCountDetailsPayload { @@ -109,16 +109,16 @@ export enum MessageActivityType { /** @link https://discord.com/developers/docs/resources/channel#message-object-message-activity-structure */ export interface MessageActivityPayload { - type: MessageActivityType; party_id?: string; + type: MessageActivityType; } /** @link https://discord.com/developers/docs/resources/channel#message-reference-object */ export interface MessageReferencePayload { - message_id?: snowflake; channel_id?: snowflake; - guild_id?: snowflake; fail_if_not_exists?: boolean; + guild_id?: snowflake; + message_id?: snowflake; } /** @link https://discord.com/developers/docs/resources/channel#message-object-message-flags */ @@ -137,82 +137,82 @@ export enum MessageFlags { } export interface RoleSubscriptionDataPayload { + is_renewal: boolean; role_subscription_listing_id: snowflake; tier_name: string; total_months_subscribed: number; - is_renewal: boolean; } // https://discord.com/developers/docs/resources/channel#message-object-message-structure export interface MessagePayload { - id: snowflake; - channel_id: snowflake; - guild_id?: snowflake; - author: UserPayload; - member?: GuildMemberPayload; - content?: string; // Check second note on https://discord.com/developers/docs/resources/channel#message-object-message-structure - timestamp: string; - edited_timestamp: string | null; - tts: boolean; - mention_everyone: boolean; - mentions: UserPayload[]; - mention_roles: string[]; - mention_channels?: ChannelMentionPayload[]; - attachments?: AttachmentPayload[]; - embeds?: EmbedPayload[]; - reactions?: ReactionPayload[]; - nonce?: string | number; - pinned: boolean; - webhook_id?: snowflake; - type: MessageType; activity?: MessageActivityPayload; application?: ApplicationPayload; application_id?: snowflake; - message_reference?: MessageReferencePayload; + attachments?: AttachmentPayload[]; + author: UserPayload; + channel_id: snowflake; + components?: ComponentPayload[]; + content?: string; // Check second note on https://discord.com/developers/docs/resources/channel#message-object-message-structure + edited_timestamp: null | string; + embeds?: EmbedPayload[]; flags?: number; - referenced_message?: MessagePayload | null; + guild_id?: snowflake; + id: snowflake; interaction?: MessageInteractionPayload; interaction_metadata?: MessageInteractionMetadataPayload; - thread?: GuildThreadChannelPayload; - components?: ComponentPayload[]; - sticker_items?: StickerItemPayload[]; + member?: GuildMemberPayload; + mention_channels?: ChannelMentionPayload[]; + mention_everyone: boolean; + mention_roles: string[]; + mentions: UserPayload[]; + message_reference?: MessageReferencePayload; + nonce?: number | string; + pinned: boolean; + poll?: PollCreateRequestPayload; position?: number; - role_subscription_data?: RoleSubscriptionDataPayload; + reactions?: ReactionPayload[]; + referenced_message?: MessagePayload | null; resolved?: ResolvedDataPayload; - poll?: PollCreateRequestPayload; + role_subscription_data?: RoleSubscriptionDataPayload; + sticker_items?: StickerItemPayload[]; + thread?: GuildThreadChannelPayload; + timestamp: string; + tts: boolean; + type: MessageType; + webhook_id?: snowflake; } export interface MessageInteractionMetadataPayload { - id: snowflake; - type: InteractionType; - user: UserPayload; authorizing_integration_owners: Record; - original_response_message_id?: snowflake; + id: snowflake; interacted_message_id?: snowflake; + original_response_message_id?: snowflake; triggering_interaction_metadata?: MessageInteractionMetadataPayload; + type: InteractionType; + user: UserPayload; } export interface GetChannelMessagesParams { + after?: snowflake; around?: snowflake; before?: snowflake; - after?: snowflake; limit?: number; } export interface CreateMessagePayload { - content: string; - nonce?: number | string; - tts?: boolean; - embeds?: EmbedPayload[]; allowed_mentions?: AllowedMentionsPayload; - message_reference?: MessageReferencePayload; + attachments?: AttachmentPayload[]; components: ComponentPayload[]; - sticker_ids?: snowflake[]; + content: string; + embeds?: EmbedPayload[]; + enforce_nonce?: boolean; file?: AttachmentPayload; - attachments?: AttachmentPayload[]; flags?: number; - enforce_nonce?: boolean; + message_reference?: MessageReferencePayload; + nonce?: number | string; poll?: PollCreateRequestPayload; + sticker_ids?: snowflake[]; + tts?: boolean; } export interface GetMessageReactionParams { @@ -221,13 +221,13 @@ export interface GetMessageReactionParams { } export interface EditMessagePayload { - content?: string | null; - embeds?: EmbedPayload[] | null; - flags?: number | null; - file?: AttachmentPayload | null; allowed_mentions?: AllowedMentionsPayload | null; attachments?: AttachmentPayload[] | null; components?: ComponentPayload[] | null; + content?: null | string; + embeds?: EmbedPayload[] | null; + file?: AttachmentPayload | null; + flags?: null | number; } export interface BulkDeleteMessagesPayload extends Reasonable { diff --git a/types/src/channels/thread.ts b/types/src/channels/thread.ts index dccb5251..a476448f 100644 --- a/types/src/channels/thread.ts +++ b/types/src/channels/thread.ts @@ -10,83 +10,83 @@ import { AttachmentPayload } from "./message.ts"; /** @link https://discord.com/developers/docs/resources/channel#thread-metadata-object-thread-metadata-structure */ export interface ThreadMetadataPayload { + archive_timestamp: string; archived: boolean; auto_archive_duration: number; - archive_timestamp: string; - locked: boolean; + create_timestamp?: null | string; invitable?: boolean; - create_timestamp?: string | null; + locked: boolean; } /** @link https://discord.com/developers/docs/resources/channel#thread-member-object-thread-member-structure */ export interface ThreadMemberPayload { + flags: number; id?: snowflake; - user_id?: snowflake; join_timestamp: string; - flags: number; member?: GuildMemberPayload; + user_id?: snowflake; } /** @link https://discord.com/developers/docs/resources/channel#channel-object-example-thread-channel */ export interface GuildThreadChannelPayload extends GuildTextChannelPayload { - message_count: number; - member_count: number; - thread_metadata: ThreadMetadataPayload; + applied_tags?: snowflake[]; member: ThreadMemberPayload; + member_count: number; + message_count: number; permissions: string; - applied_tags?: snowflake[]; + thread_metadata: ThreadMetadataPayload; } // https://discord.com/developers/docs/resources/channel#modify-channel-json-params-thread export interface EditGuildThreadChannelPayload extends Reasonable { - name?: string; + applied_tags?: snowflake[]; archived?: boolean; /** Duration in minute */ auto_archive_duration?: number; - locked?: boolean; + flags?: number; invitable?: boolean; + locked?: boolean; + name?: string; /** Duration in second */ - rate_limit_per_user?: number | null; - flags?: number; - applied_tags?: snowflake[]; + rate_limit_per_user?: null | number; } export interface StartThreadWithMessagePayload extends Reasonable { - name: string; auto_archive_duration?: number; - rate_limit_per_user?: number | null; + name: string; + rate_limit_per_user?: null | number; } export interface StartThreadWithoutMessagePayload extends Reasonable { - name: string; auto_archive_duration?: number; - type?: ChannelType; invitable?: boolean; - rate_limit_per_user?: number | null; + name: string; + rate_limit_per_user?: null | number; + type?: ChannelType; } export interface ForumThreadMessageParams { - content?: string; - embeds?: EmbedPayload[]; allowed_mentions?: AllowedMentionsPayload; - components?: ComponentPayload[]; - sticker_ids?: snowflake[]; attachments?: AttachmentPayload[]; + components?: ComponentPayload[]; + content?: string; + embeds?: EmbedPayload[]; flags?: number; + sticker_ids?: snowflake[]; } export interface StartThreadInForumChannelPayload extends Reasonable { - name: string; + applied_tags?: snowflake[]; auto_archive_duration?: number; - rate_limit_per_user?: number | null; message: ForumThreadMessageParams; - applied_tags?: snowflake[]; + name: string; + rate_limit_per_user?: null | number; } export interface ListThreadsPayload { - threads: GuildThreadChannelPayload[]; - members: ThreadMemberPayload[]; has_more: boolean; + members: ThreadMemberPayload[]; + threads: GuildThreadChannelPayload[]; } export interface ListThreadsParams { @@ -99,9 +99,9 @@ export interface GetThreadMemberPayload { } export interface ListThreadMembersPayload { - with_member?: boolean; after?: snowflake; limit?: number; + with_member?: boolean; } export type ListPublicArchivedThreadsPayload = ListThreadsPayload; diff --git a/types/src/emojis/emoij.ts b/types/src/emojis/emoij.ts index db7ac0d3..8aa1e245 100644 --- a/types/src/emojis/emoij.ts +++ b/types/src/emojis/emoij.ts @@ -3,23 +3,23 @@ import { Reasonable } from "../etc/reasonable.ts"; import { UserPayload } from "../users/user.ts"; export interface EmojiPayload { - id: snowflake | null; - name: string | null; - roles?: string[]; - user?: UserPayload; - require_colons?: boolean; - managed?: boolean; animated?: boolean; available?: boolean; + id: null | snowflake; + managed?: boolean; + name: null | string; + require_colons?: boolean; + roles?: string[]; + user?: UserPayload; } export interface CreateGuildEmojiPayload extends Reasonable { - name: string; image: string; + name: string; roles: snowflake[]; } export interface EditGuildEmojiPayload extends Reasonable { name?: string; - roles?: snowflake[] | null; + roles?: null | snowflake[]; } diff --git a/types/src/entitlements/entitlements.ts b/types/src/entitlements/entitlements.ts index 71e8960b..2087056e 100644 --- a/types/src/entitlements/entitlements.ts +++ b/types/src/entitlements/entitlements.ts @@ -1,16 +1,16 @@ import { snowflake } from "../common.ts"; export interface EntitlementPayload { - id: snowflake; - sku_id: snowflake; application_id: snowflake; - user_id?: snowflake; - type: EntitlementType; + consumed?: boolean; deleted: boolean; - starts_at?: string; ends_at?: string; guild_id?: snowflake; - consumed?: boolean; + id: snowflake; + sku_id: snowflake; + starts_at?: string; + type: EntitlementType; + user_id?: snowflake; } export enum EntitlementType { @@ -25,19 +25,19 @@ export enum EntitlementType { } export interface ListEntitlementsParams { - user_id?: snowflake; - sku_id?: string; - before?: snowflake; after?: snowflake; - limit?: number; - guild_id?: snowflake; + before?: snowflake; exclude_ended?: boolean; + guild_id?: snowflake; + limit?: number; + sku_id?: string; + user_id?: snowflake; } export interface CreateTestEntitlementPayload { - sku_id: snowflake; owner_id: snowflake; owner_type: TestEntitlementOwnerType; + sku_id: snowflake; } export enum TestEntitlementOwnerType { diff --git a/types/src/etc/locales.ts b/types/src/etc/locales.ts index 062d0c11..9f8ea618 100644 --- a/types/src/etc/locales.ts +++ b/types/src/etc/locales.ts @@ -1,30 +1,30 @@ export type Locales = - | "en-US" - | "en-GB" | "bg" - | "zh-CN" - | "zh-TW" - | "hr" | "cs" | "da" - | "nl" - | "fi" - | "fr" | "de" | "el" + | "en-GB" + | "en-US" + | "es-ES" + | "fi" + | "fr" | "hi" + | "hr" | "hu" | "it" | "ja" | "ko" | "lt" + | "nl" | "no" | "pl" | "pt-BR" | "ro" | "ru" - | "es-ES" | "sv-SE" | "th" | "tr" - | "uk"; + | "uk" + | "zh-CN" + | "zh-TW"; diff --git a/types/src/etc/scopes.ts b/types/src/etc/scopes.ts index c2f3903f..83deda6a 100644 --- a/types/src/etc/scopes.ts +++ b/types/src/etc/scopes.ts @@ -4,9 +4,9 @@ export enum Scopes { APPLICATIONS_BUILDS_READ = "applications.builds.read", APPLICATIONS_BUILDS_UPLOAD = "applications.builds.upload", APPLICATIONS_COMMANDS = "applications.commands", - APPLICATIONS_COMMANDS_UPDATE = "applications.commands.update", APPLICATIONS_COMMANDS_PERMISSIONS_UPDATE = "applications.commands.permissions.update", + APPLICATIONS_COMMANDS_UPDATE = "applications.commands.update", APPLICATIONS_ENTITLEMENTS = "applications.entitlements", APPLICATIONS_STORE_UPDATE = "applications.store.update", BOT = "bot", diff --git a/types/src/gateways/activity.ts b/types/src/gateways/activity.ts index caf9a4a2..99883923 100644 --- a/types/src/gateways/activity.ts +++ b/types/src/gateways/activity.ts @@ -1,21 +1,21 @@ import { snowflake } from "../common.ts"; export interface ActivityPayload { - name: string; - type: ActivityType; - url?: string | null; - created_at: number; - timestamps?: ActivityTimestamps; application_id?: snowflake; - details?: string | null; - state?: string | null; + assets?: ActivityAsset; + buttons?: ActivityButton[]; + created_at: number; + details?: null | string; emoji?: ActivityEmoji | null; + flags?: number; + instance?: boolean; + name: string; party?: ActivityParty; - assets?: ActivityAsset; secrets?: ActivitySecret; - instance?: boolean; - flags?: number; - buttons?: ActivityButton[]; + state?: null | string; + timestamps?: ActivityTimestamps; + type: ActivityType; + url?: null | string; } export enum ActivityType { @@ -28,14 +28,14 @@ export enum ActivityType { } export interface ActivityTimestamps { - start?: number; end?: number; + start?: number; } export interface ActivityEmoji { - name: string; - id?: snowflake; animated?: boolean; + id?: snowflake; + name: string; } export interface ActivityParty { @@ -52,12 +52,11 @@ export interface ActivityAsset { export interface ActivitySecret { join?: string; - spectate?: string; match?: string; + spectate?: string; } export enum ActivityFlag { - INSTANCE = 1, JOIN = 1 << 1, SPECTATE = 1 << 2, JOIN_REQUEST = 1 << 3, @@ -66,6 +65,7 @@ export enum ActivityFlag { PARTY_PRIVACY_FRIENDS = 1 << 6, PARTY_PRIVACY_VOICE_CHANNEL = 1 << 7, EMBEDDED = 1 << 8, + INSTANCE = 1, } export interface ActivityButton { diff --git a/types/src/gateways/gateway.ts b/types/src/gateways/gateway.ts index 60dadf63..1925d579 100644 --- a/types/src/gateways/gateway.ts +++ b/types/src/gateways/gateway.ts @@ -55,129 +55,129 @@ import { } from "./thread.ts"; export interface GatewayPayload { - op: GatewayOpcode; d: GatewayDataType | null; - s: number | null; + op: GatewayOpcode; + s: null | number; t: GatewayEventNames | null; } export type GatewayEventNames = - | "READY" - | "RESUMED" | "CHANNEL_CREATE" - | "CHANNEL_UPDATE" | "CHANNEL_DELETE" | "CHANNEL_PINS_UPDATE" - | "THREAD_CREATE" - | "THREAD_UPDATE" - | "THREAD_DELETE" - | "THREAD_LIST_SYNC" - | "THREAD_MEMBER_UPDATE" - | "THREAD_MEMBERS_UPDATE" - | "GUILD_CREATE" - | "GUILD_UPDATE" - | "GUILD_DELETE" + | "CHANNEL_UPDATE" | "GUILD_BAN_ADD" | "GUILD_BAN_REMOVE" + | "GUILD_CREATE" + | "GUILD_DELETE" | "GUILD_EMOJIS_UPDATE" - | "GUILD_STICKERS_UPDATE" | "GUILD_INTEGRATIONS_UPDATE" | "GUILD_MEMBER_ADD" | "GUILD_MEMBER_REMOVE" | "GUILD_MEMBER_UPDATE" | "GUILD_MEMBERS_CHUNK" | "GUILD_ROLE_CREATE" - | "GUILD_ROLE_UPDATE" | "GUILD_ROLE_DELETE" + | "GUILD_ROLE_UPDATE" | "GUILD_SCHEDULED_EVENT_CREATE" - | "GUILD_SCHEDULED_EVENT_UPDATE" | "GUILD_SCHEDULED_EVENT_DELETE" + | "GUILD_SCHEDULED_EVENT_UPDATE" | "GUILD_SCHEDULED_EVENT_USER_ADD" | "GUILD_SCHEDULED_EVENT_USER_REMOVE" + | "GUILD_STICKERS_UPDATE" + | "GUILD_UPDATE" | "INTEGRATION_CREATE" - | "INTEGRATION_UPDATE" | "INTEGRATION_DELETE" + | "INTEGRATION_UPDATE" | "INTERACTION_CREATE" | "INVITE_CREATE" | "INVITE_DELETE" | "MESSAGE_CREATE" - | "MESSAGE_UPDATE" | "MESSAGE_DELETE" | "MESSAGE_DELETE_BULK" + | "MESSAGE_POLL_VOTE_ADD" + | "MESSAGE_POLL_VOTE_REMOVE" | "MESSAGE_REACTION_ADD" | "MESSAGE_REACTION_REMOVE" | "MESSAGE_REACTION_REMOVE_ALL" | "MESSAGE_REACTION_REMOVE_EMOJI" + | "MESSAGE_UPDATE" | "PRESENCE_UPDATE" + | "READY" + | "RESUMED" | "STAGE_INSTANCE_CREATE" | "STAGE_INSTANCE_DELETE" | "STAGE_INSTANCE_UPDATE" + | "THREAD_CREATE" + | "THREAD_DELETE" + | "THREAD_LIST_SYNC" + | "THREAD_MEMBER_UPDATE" + | "THREAD_MEMBERS_UPDATE" + | "THREAD_UPDATE" | "TYPING_START" | "USER_UPDATE" - | "VOICE_STATE_UPDATE" | "VOICE_SERVER_UPDATE" - | "WEBHOOKS_UPDATE" - | "MESSAGE_POLL_VOTE_ADD" - | "MESSAGE_POLL_VOTE_REMOVE"; + | "VOICE_STATE_UPDATE" + | "WEBHOOKS_UPDATE"; export type GatewayDataType = - | GatewayHelloPayload - | GatewayIdentifyPayload - | GatewayResumePayload - | HeartbeatPayload - | GetGatewayGuildMembersPayload - | EditGatewayPresencePayload - | GatewayReadyPayload - | Reasumable | ChannelPayload - | GatewayThreadListSyncPayload - | GatewayThreadMemberUpdatePayload - | GatewayThreadMembersUpdatePayload + | EditGatewayPresencePayload + | GatewayAutoModerationActionExecutionEventPayload | GatewayChannelPinsUpdatePayload - | GuildPayload | GatewayGuildBanAddPayload | GatewayGuildBanRemovePayload | GatewayGuildEmojisUpdatePayload - | GatewayGuildStickersUpdatePayload | GatewayGuildIntegrationsUpdatePayload | GatewayGuildMemberAddPayload + | GatewayGuildMemberChunkPayload | GatewayGuildMemberRemovePayload | GatewayGuildMemberUpdatePayload - | GatewayGuildMemberChunkPayload | GatewayGuildRoleCreatePayload - | GatewayGuildRoleUpdatePayload | GatewayGuildRoleDeletePayload - | ScheduledEventPayload - | GatewayScheduledEventUserAddPayload - | GatewayScheduledEventUserRemovePayload + | GatewayGuildRoleUpdatePayload + | GatewayGuildStickersUpdatePayload + | GatewayHelloPayload + | GatewayIdentifyPayload | GatewayIntegrationCreatePayload - | GatewayIntegrationUpdatePayload | GatewayIntegrationDeletePayload - | InteractionPayload + | GatewayIntegrationUpdatePayload | GatewayInviteCreatePayload | GatewayInviteDeletePayload - | MessagePayload - | GatewayMessageDeletePayload | GatewayMessageDeleteBulkPayload + | GatewayMessageDeletePayload | GatewayMessageReactionAddPayload - | GatewayMessageReactionRemovePayload | GatewayMessageReactionRemoveAllPayload | GatewayMessageReactionRemoveEmojiPayload - | GatewayWebhookUpdatePayload - | StageInstancePayload - | UserPayload - | VoiceStatePayload + | GatewayMessageReactionRemovePayload | GatewayPresenceUpdatePayload + | GatewayReadyPayload + | GatewayResumePayload + | GatewayScheduledEventUserAddPayload + | GatewayScheduledEventUserRemovePayload + | GatewayThreadListSyncPayload + | GatewayThreadMembersUpdatePayload + | GatewayThreadMemberUpdatePayload | GatewayTypingStartPayload | GatewayVoiceServerUpdatePayload - | GatewayAutoModerationActionExecutionEventPayload + | GatewayWebhookUpdatePayload + | GetGatewayGuildMembersPayload + | GuildPayload + | HeartbeatPayload + | InteractionPayload + | MessagePayload | MessagePollVoteAddPayload - | MessagePollVoteRemovePayload; + | MessagePollVoteRemovePayload + | Reasumable + | ScheduledEventPayload + | StageInstancePayload + | UserPayload + | VoiceStatePayload; export interface ConnectGatewayParams { - v: number; - encoding: "json" | "etf"; compress?: "zlib-stream"; + encoding: "etf" | "json"; + v: number; } export interface GatewayHelloPayload { @@ -185,81 +185,81 @@ export interface GatewayHelloPayload { } export interface GatewayIdentifyPayload { - token: string; + compress?: boolean; intents: number; + large_threshold?: number; + presence?: EditGatewayPresencePayload; properties: { - os: string; browser: string; device: string; + os: string; }; - compress?: boolean; - large_threshold?: number; shard?: [number, number]; - presence?: EditGatewayPresencePayload; + token: string; } export interface GatewayResumePayload { - token: string; - session_id: snowflake; seq: number; + session_id: snowflake; + token: string; } -export type HeartbeatPayload = number | null; +export type HeartbeatPayload = null | number; export type Reasumable = boolean; export interface GetGatewayGuildMembersPayload { guild_id: snowflake; - query?: string; limit: number; + nonce?: string; presence?: boolean; + query?: string; user_ids?: snowflake | snowflake[]; - nonce?: string; } export interface EditGatewayPresencePayload { - since: number | null; activities: ActivityPayload[]; - status: StatusType; afk: boolean; + since: null | number; + status: StatusType; } -export type StatusType = "online" | "dnd" | "idle" | "invisible" | "offline"; +export type StatusType = "dnd" | "idle" | "invisible" | "offline" | "online"; export interface GatewayReadyPayload { - v: number; - user: UserPayload; + application: ApplicationPayload; guilds: GuildPayload[]; + resume_gateway_url: string; session_id: string; shard?: [number, number]; - application: ApplicationPayload; - resume_gateway_url: string; + user: UserPayload; + v: number; } export interface GatewayChannelPinsUpdatePayload { - guild_id?: snowflake; channel_id: snowflake; - last_pin_timestamp?: string | null; + guild_id?: snowflake; + last_pin_timestamp?: null | string; } export interface GatewayWebhookUpdatePayload { - guild_id: snowflake; channel_id: snowflake; + guild_id: snowflake; } export interface GetGatewayBotPayload { - url: string; - shards: number; session_start_limit: SessionStartLimitPayload; + shards: number; + url: string; } export interface SessionStartLimitPayload { - total: number; + max_concurrency: number; remaning: number; reset_after: number; - max_concurrency: number; + total: number; } -export type ClientStatusType = "online" | "idle" | "dnd"; +export type ClientStatusType = "dnd" | "idle" | "online"; export interface ClientStatusPayload { desktop?: ClientStatusType; @@ -268,47 +268,47 @@ export interface ClientStatusPayload { } export interface GatewayPresenceUpdatePayload { - user: UserPayload; - guild_id: snowflake; - status: StatusType; activities: ActivityPayload[]; client_status: ClientStatusPayload; + guild_id: snowflake; + status: StatusType; + user: UserPayload; } export interface GatewayTypingStartPayload { channel_id: snowflake; guild_id?: snowflake; - user_id: snowflake; - timestamp: number; member?: GuildMemberPayload; + timestamp: number; + user_id: snowflake; } export interface GatewayVoiceServerUpdatePayload { - token: string; + endpoint: null | string; guild_id: snowflake; - endpoint: string | null; + token: string; } export interface GatewayAutoModerationActionExecutionEventPayload { - guild_id: snowflake; action: AutoModerationRuleAction; + alert_system_message_id?: snowflake; + channel_id?: snowflake; + content?: string; + guild_id: snowflake; + matched_content?: null | string; + matched_keyword: null | string; + message_id?: snowflake; rule_id: string; rule_trigger_type: AutoModerationRuleTriggerType; user_id: snowflake; - channel_id?: snowflake; - message_id?: snowflake; - alert_system_message_id?: snowflake; - content?: string; - matched_keyword: string | null; - matched_content?: string | null; } export interface MessagePollVoteAddPayload { - user_id: snowflake; + answer_id: number; channel_id: snowflake; - message_id: snowflake; guild_id?: snowflake; - answer_id: number; + message_id: snowflake; + user_id: snowflake; } export type MessagePollVoteRemovePayload = MessagePollVoteAddPayload; diff --git a/types/src/gateways/guild.ts b/types/src/gateways/guild.ts index d9968ea3..f389c00a 100644 --- a/types/src/gateways/guild.ts +++ b/types/src/gateways/guild.ts @@ -14,8 +14,8 @@ export interface GatewayGuildBanAddPayload { export type GatewayGuildBanRemovePayload = GatewayGuildBanAddPayload; export interface GatewayGuildEmojisUpdatePayload { - guild_id: snowflake; emojis: EmojiPayload[]; + guild_id: snowflake; } export interface GatewayGuildStickersUpdatePayload { @@ -37,27 +37,27 @@ export interface GatewayGuildMemberRemovePayload { } export interface GatewayGuildMemberUpdatePayload { - guild_id: snowflake; - roles: snowflake[]; - user: UserPayload; - nick?: string | null; - avatar: string | null; - joined_at: string | null; - premium_since?: string | null; + avatar: null | string; + communication_disabled_until?: null | string; deaf?: boolean; + guild_id: snowflake; + joined_at: null | string; mute?: boolean; + nick?: null | string; pending?: boolean; - communication_disabled_until?: string | null; + premium_since?: null | string; + roles: snowflake[]; + user: UserPayload; } export interface GatewayGuildMemberChunkPayload { + chunk_count: number; + chunk_index: number; guild_id: snowflake; members: GuildMemberPayload[]; - chunk_index: number; - chunk_count: number; + nonce?: string; not_found?: string[]; presences?: EditGatewayPresencePayload; - nonce?: string; } export interface GatewayGuildRoleCreatePayload { diff --git a/types/src/gateways/integration.ts b/types/src/gateways/integration.ts index f4d7a104..7e8b153d 100644 --- a/types/src/gateways/integration.ts +++ b/types/src/gateways/integration.ts @@ -8,7 +8,7 @@ export interface GatewayIntegrationCreatePayload extends IntegrationPayload { export type GatewayIntegrationUpdatePayload = GatewayIntegrationCreatePayload; export interface GatewayIntegrationDeletePayload { - id: string; - guild_id: snowflake; application_id?: snowflake; + guild_id: snowflake; + id: string; } diff --git a/types/src/gateways/invite.ts b/types/src/gateways/invite.ts index c4c0d737..080cde50 100644 --- a/types/src/gateways/invite.ts +++ b/types/src/gateways/invite.ts @@ -11,15 +11,15 @@ export interface GatewayInviteCreatePayload { inviter?: UserPayload; max_age: number; max_uses: number; + target_application?: ApplicationPayload; target_type?: InviteTargetType; target_user?: UserPayload; - target_application?: ApplicationPayload; temporary: boolean; uses: number; } export interface GatewayInviteDeletePayload { channel_id: snowflake; - guild_id?: snowflake; code: string; + guild_id?: snowflake; } diff --git a/types/src/gateways/message.ts b/types/src/gateways/message.ts index 1550e0a7..ebecf736 100644 --- a/types/src/gateways/message.ts +++ b/types/src/gateways/message.ts @@ -3,25 +3,25 @@ import { EmojiPayload } from "../emojis/emoij.ts"; import { GuildMemberPayload } from "../guilds/member.ts"; export interface GatewayMessageDeletePayload { - id: snowflake; channel_id: snowflake; guild_id?: snowflake; + id: snowflake; } export interface GatewayMessageDeleteBulkPayload { - ids: snowflake; channel_id: snowflake; guild_id?: snowflake; + ids: snowflake; } export interface GatewayMessageReactionAddPayload { - user_id: snowflake; channel_id: snowflake; - message_id: snowflake; + emoji: EmojiPayload; guild_id?: snowflake; member?: GuildMemberPayload; - emoji: EmojiPayload; message_author_id?: snowflake; + message_id: snowflake; + user_id: snowflake; } export type GatewayMessageReactionRemovePayload = Omit< GatewayMessageReactionAddPayload, @@ -30,8 +30,8 @@ export type GatewayMessageReactionRemovePayload = Omit< export interface GatewayMessageReactionRemoveAllPayload { channel_id: snowflake; - message_id: snowflake; guild_id?: snowflake; + message_id: snowflake; } export interface GatewayMessageReactionRemoveEmojiPayload diff --git a/types/src/gateways/thread.ts b/types/src/gateways/thread.ts index e8d11939..2b406783 100644 --- a/types/src/gateways/thread.ts +++ b/types/src/gateways/thread.ts @@ -5,10 +5,10 @@ import { import { snowflake } from "../common.ts"; export interface GatewayThreadListSyncPayload { - guild_id: snowflake; channel_ids?: snowflake[]; - threads: GuildThreadChannelPayload[]; + guild_id: snowflake; members: ThreadMemberPayload[]; + threads: GuildThreadChannelPayload[]; } export interface GatewayThreadMemberUpdatePayload extends ThreadMemberPayload { @@ -16,17 +16,17 @@ export interface GatewayThreadMemberUpdatePayload extends ThreadMemberPayload { } export interface GatewayThreadMembersUpdatePayload { - id: snowflake; + added_members?: ThreadMemberPayload[]; guild_id: snowflake; + id: snowflake; member_count: number; - added_members?: ThreadMemberPayload[]; removed_member_ids?: snowflake[]; } export interface GatewayScheduledEventUserAddPayload { + guild_id: snowflake; guild_scheduled_event_id: snowflake; user_id: snowflake; - guild_id: snowflake; } export type GatewayScheduledEventUserRemovePayload = diff --git a/types/src/guildTemplates/template.ts b/types/src/guildTemplates/template.ts index 473f7fa1..e92899ad 100644 --- a/types/src/guildTemplates/template.ts +++ b/types/src/guildTemplates/template.ts @@ -4,29 +4,29 @@ import { UserPayload } from "../users/user.ts"; export interface GuildTemplatePayload { code: string; - name: string; - description: string | null; - usage_count: number; - creator_id: snowflake; - creator: UserPayload; created_at: string; - updated_at: string; - source_guild_id: snowflake; - serialized_source_guild: GuildPayload; + creator: UserPayload; + creator_id: snowflake; + description: null | string; is_dirty: boolean | null; + name: string; + serialized_source_guild: GuildPayload; + source_guild_id: snowflake; + updated_at: string; + usage_count: number; } export interface CreateGuildFromGuildTemplatePayload { - name: string; icon?: string; + name: string; } export interface CreateGuildTemplatePayload { + description?: null | string; name: string; - description?: string | null; } export interface EditGuildTemplatePayload { + description?: null | string; name?: string; - description?: string | null; } diff --git a/types/src/guilds/ban.ts b/types/src/guilds/ban.ts index 33ed74c8..b2c4afd1 100644 --- a/types/src/guilds/ban.ts +++ b/types/src/guilds/ban.ts @@ -3,8 +3,8 @@ import { Reasonable } from "../etc/reasonable.ts"; import { UserPayload } from "../users/user.ts"; export interface GuildBanPayload { + reason: null | string; user: UserPayload; - reason: string | null; } export interface CreateGuildBanPayload extends Reasonable { @@ -12,14 +12,14 @@ export interface CreateGuildBanPayload extends Reasonable { } export interface GetGuildBansParams { - limit?: number; - before?: snowflake; after?: snowflake; + before?: snowflake; + limit?: number; } export interface CreateBulkGuildBanPayload extends Reasonable { - user_ids: snowflake[]; delete_message_seconds?: number; + user_ids: snowflake[]; } export interface BulkGuildBanResponsePayload { diff --git a/types/src/guilds/etc.ts b/types/src/guilds/etc.ts index a7759880..31bd4512 100644 --- a/types/src/guilds/etc.ts +++ b/types/src/guilds/etc.ts @@ -10,48 +10,48 @@ import { UserPayload } from "../users/user.ts"; import { GuildFeature, MFALevel, PartialGuildChannelPayload } from "./guild.ts"; export interface GuildPreviewPayload { - id: snowflake; - name: string; - icon: string | null; - splash: string | null; - discovery_splash: string | null; - emojis: EmojiPayload[]; - features: GuildFeature[]; approximate_member_count: number; approximate_presence_count: number; - description: string | null; + description: null | string; + discovery_splash: null | string; + emojis: EmojiPayload[]; + features: GuildFeature[]; + icon: null | string; + id: snowflake; + name: string; + splash: null | string; stickers: StickerPayload[]; } export interface GuildWidgetSettingsPayload { + channel_id: null | snowflake; enabled: boolean; - channel_id: snowflake | null; } export interface GuildWidgetPayload { - id: snowflake; - name: string; - instant_invite: string | null; channels: PartialGuildChannelPayload[]; + id: snowflake; + instant_invite: null | string; members: UserPayload[]; + name: string; presence_count: number; } export interface WelcomeScreenChannelPayload { channel_id: snowflake; description: string; - emoji_id: snowflake | null; - emoji_name: string | null; + emoji_id: null | snowflake; + emoji_name: null | string; } export interface WelcomeScreenPayload { - description: string | null; + description: null | string; welcome_channels: WelcomeScreenChannelPayload[]; } export interface ActiveThreadsPayload { - threads: GuildThreadChannelPayload[]; members: ThreadMemberPayload[]; + threads: GuildThreadChannelPayload[]; } export interface GetGuildPruneCountParams { @@ -60,32 +60,32 @@ export interface GetGuildPruneCountParams { } export interface BeginGuildPrunePayload extends Reasonable { - days?: number; compute_prune_count?: boolean; + days?: number; include_roles?: snowflake[]; } type GuildWidgetImageStyle = - | "shield" | "banner1" | "banner2" | "banner3" - | "banner4"; + | "banner4" + | "shield"; export interface GetGuildWidgetImageParams { style?: GuildWidgetImageStyle; } export interface EditWelcomeScreenPayload extends Reasonable { + description?: null | string; enabled?: boolean | null; - welcome_channels?: WelcomeScreenChannelPayload[] | null; - description?: string | null; + welcome_channels?: null | WelcomeScreenChannelPayload[]; } export interface EditCurrentUserVoiceStatePayload { channel_id?: snowflake; + request_to_speak_timestamp?: null | string; suppress?: boolean; - request_to_speak_timestamp?: string | null; } export interface EditUserVoiceStatePayload { diff --git a/types/src/guilds/guild.ts b/types/src/guilds/guild.ts index f860729a..b049ea25 100644 --- a/types/src/guilds/guild.ts +++ b/types/src/guilds/guild.ts @@ -23,60 +23,60 @@ import { GuildMemberPayload } from "./member.ts"; import { RolePayload } from "./role.ts"; export interface GuildPayload { - id: snowflake; - name: string; - icon: string | null; - icon_hash?: string | null; - splash: string | null; - discovery_splash: string | null; - owner?: boolean; - owner_id: snowflake; - permissions?: string; - region?: string | null; - afk_channel_id: snowflake | null; + afk_channel_id: null | snowflake; afk_timeout: number; - widget_enabled: boolean; - widget_channel_id?: snowflake | null; - verification_level: VerificationLevel; + application_id: null | snowflake; + approximate_member_count?: number; + approximate_presence_count?: number; + banner: null | string; + channels?: GuildChannelPayload[]; default_message_notifications: DefaultMessageNotificationLevel; - explicit_content_filter: ExplicitContentFilterLevel; - roles: RolePayload[]; + description: null | string; + discovery_splash: null | string; emojis: EmojiPayload[]; + explicit_content_filter: ExplicitContentFilterLevel; features: GuildFeature[]; - mfa_level: MFALevel; - application_id: snowflake | null; - system_channel_id: snowflake | null; - system_channel_flags: number; - rules_channel_id: snowflake | null; + guild_scheduled_events?: ScheduledEventPayload[]; + icon: null | string; + icon_hash?: null | string; + id: snowflake; joined_at?: string; large?: boolean; - unavailable?: boolean; - member_count?: number; - voice_states?: VoiceStatePayload[]; - members?: GuildMemberPayload[]; - channels?: GuildChannelPayload[]; - threads?: GuildThreadChannelPayload[]; - presences?: GatewayPresenceUpdatePayload[]; - max_presences?: number | null; max_members?: number; - vanity_url_code: string | null; - description: string | null; - banner: string | null; - premium_tier: PremiumTier; - premium_subscription_count?: number; - preferred_locale: Locales; - public_updates_channel_id: snowflake | null; - max_video_channel_users?: number; + max_presences?: null | number; max_stage_video_channel_users?: number; - approximate_member_count?: number; - approximate_presence_count?: number; - welcome_screen?: WelcomeScreenPayload; + max_video_channel_users?: number; + member_count?: number; + members?: GuildMemberPayload[]; + mfa_level: MFALevel; + name: string; nsfw_level: GuildNSFWLevel; + owner?: boolean; + owner_id: snowflake; + permissions?: string; + preferred_locale: Locales; + premium_progress_bar_enabled: boolean; + premium_subscription_count?: number; + premium_tier: PremiumTier; + presences?: GatewayPresenceUpdatePayload[]; + public_updates_channel_id: null | snowflake; + region?: null | string; + roles: RolePayload[]; + rules_channel_id: null | snowflake; + safety_alerts_channel_id: null | snowflake; + splash: null | string; stage_instances?: StageInstancePayload[]; stickers?: StickerPayload[]; - guild_scheduled_events?: ScheduledEventPayload[]; - premium_progress_bar_enabled: boolean; - safety_alerts_channel_id: snowflake | null; + system_channel_flags: number; + system_channel_id: null | snowflake; + threads?: GuildThreadChannelPayload[]; + unavailable?: boolean; + vanity_url_code: null | string; + verification_level: VerificationLevel; + voice_states?: VoiceStatePayload[]; + welcome_screen?: WelcomeScreenPayload; + widget_channel_id?: null | snowflake; + widget_enabled: boolean; } export enum DefaultMessageNotificationLevel { @@ -138,13 +138,14 @@ export enum GuildFeature { DEVELOPER_SUPPORT_SERVER = "DEVELOPER_SUPPORT_SERVER", DISCOVERABLE = "DISCOVERABLE", FEATURABLE = "FEATURABLE", - INVITES_DISABLED = "INVITES_DISABLED", INVITE_SPLASH = "INVITE_SPLASH", + INVITES_DISABLED = "INVITES_DISABLED", MEMBER_VERIFICATION_GATE_ENABLED = "MEMBER_VERIFICATION_GATE_ENABLED", MORE_STICKERS = "MORE_STICKERS", NEWS = "NEWS", PARTNERED = "PARTNERED", PREVIEW_ENABLED = "PREVIEW_ENABLED", + RAID_ALERTS_DISABLED = "RAID_ALERTS_DISABLED", ROLE_ICONS = "ROLE_ICONS", ROLE_SUBSCRIPTIONS_AVAILABLE_FOR_PURCHASE = "ROLE_SUBSCRIPTIONS_AVAILABLE_FOR_PURCHASE", @@ -154,28 +155,27 @@ export enum GuildFeature { VERIFIED = "VERIFIED", VIP_REGIONS = "VIP_REGIONS", WELCOME_SCREEN_ENABLED = "WELCOME_SCREEN_ENABLED", - RAID_ALERTS_DISABLED = "RAID_ALERTS_DISABLED", } export interface PartialGuildChannelPayload { - name: string; - type: ChannelType; id?: number; + name: string; parent_id?: number; + type: ChannelType; } export interface CreateGuildPayload { - name: string; - icon?: string | null; - verification_level?: VerificationLevel; + afk_channel_id?: snowflake; + afk_timeout?: number; + channels?: PartialGuildChannelPayload[]; default_message_notifications?: DefaultMessageNotificationLevel; explicit_content_filter?: ExplicitContentFilterLevel; + icon?: null | string; + name: string; roles?: RolePayload[]; - channels?: PartialGuildChannelPayload[]; - afk_channel_id?: snowflake; - afk_timeout?: number; - system_channel_id?: snowflake; system_channel_flags?: SystemChannelFlags; + system_channel_id?: snowflake; + verification_level?: VerificationLevel; } export interface GetGuildParams { @@ -183,52 +183,52 @@ export interface GetGuildParams { } export interface EditGuildPayload extends Reasonable { - name?: string; - verification_level?: VerificationLevel | null; + afk_channel_id?: null | snowflake; + afk_timeout?: number; + banner?: null | string; default_message_notifications?: DefaultMessageNotificationLevel | null; + description?: null | string; + discovery_splash?: null | string; explicit_content_filter?: ExplicitContentFilterLevel | null; - afk_channel_id?: snowflake | null; - afk_timeout?: number; - icon?: string | null; - owner_id?: snowflake; - splash?: string | null; - discovery_splash?: string | null; - banner?: string | null; - system_channel_id?: snowflake | null; - system_channel_flags?: SystemChannelFlags; - rules_channel_id?: snowflake | null; - public_updates_channel_id?: snowflake | null; - preferred_locale?: string | null; features?: GuildFeature[]; - description?: string | null; + icon?: null | string; + name?: string; + owner_id?: snowflake; + preferred_locale?: null | string; premium_progress_bar_enabled?: boolean; - safety_alerts_channel_id?: snowflake | null; + public_updates_channel_id?: null | snowflake; + rules_channel_id?: null | snowflake; + safety_alerts_channel_id?: null | snowflake; + splash?: null | string; + system_channel_flags?: SystemChannelFlags; + system_channel_id?: null | snowflake; + verification_level?: null | VerificationLevel; } export interface CreateGuildChannelPayload extends Reasonable { - name: string; - type?: ChannelType; - topic?: string; + available_tags?: GuildForumTagPayload[]; bitrate?: number; - user_limit?: number; - rate_limit_per_user?: number; - position?: number; - permission_overwrites?: OverwritePayload[]; - parent_id?: snowflake; - nsfw?: boolean; - rtc_region?: VoiceRegionPayload; - video_quality_mode?: VideoQualityModes; default_auto_archive_duration?: number; + default_forum_layout?: ForumLayout; default_reaction_emoji?: ForumDefaultReactionPayload; - available_tags?: GuildForumTagPayload[]; default_sort_order?: ForumSortOrder; - default_forum_layout?: ForumLayout; default_thread_rate_limit_per_user?: number; + name: string; + nsfw?: boolean; + parent_id?: snowflake; + permission_overwrites?: OverwritePayload[]; + position?: number; + rate_limit_per_user?: number; + rtc_region?: VoiceRegionPayload; + topic?: string; + type?: ChannelType; + user_limit?: number; + video_quality_mode?: VideoQualityModes; } export interface EditGuildChannelPositionPayload { id: snowflake; - position?: number | null; lock_permissions?: boolean | null; - parent_id?: snowflake | null; + parent_id?: null | snowflake; + position?: null | number; } diff --git a/types/src/guilds/integration.ts b/types/src/guilds/integration.ts index c8935490..a3d191ac 100644 --- a/types/src/guilds/integration.ts +++ b/types/src/guilds/integration.ts @@ -13,28 +13,28 @@ export interface IntegrationAccountPayload { } export interface IntegrationApplicationPayload { + bot?: UserPayload; + description: string; + icon: null | string; id: snowflake; name: string; - icon: string | null; - description: string; - bot?: UserPayload; } export interface IntegrationPayload { - id: snowflake; - name: string; - type: string; - enabled: boolean; - syncing?: boolean; - role_id?: snowflake; + account: IntegrationAccountPayload; + application?: IntegrationApplicationPayload; enable_emoticons?: boolean; + enabled: boolean; expire_behavior?: IntegrationExpireBehaviors; expire_grace_period?: number; - user?: UserPayload; - account: IntegrationAccountPayload; - synced_at?: string; - subscriber_count?: number; + id: snowflake; + name: string; revoked?: boolean; - application?: IntegrationApplicationPayload; + role_id?: snowflake; scopes?: Scopes[]; + subscriber_count?: number; + synced_at?: string; + syncing?: boolean; + type: string; + user?: UserPayload; } diff --git a/types/src/guilds/member.ts b/types/src/guilds/member.ts index 0f35a70c..67d4efef 100644 --- a/types/src/guilds/member.ts +++ b/types/src/guilds/member.ts @@ -3,55 +3,55 @@ import { Reasonable } from "../etc/reasonable.ts"; import { UserPayload } from "../users/user.ts"; export interface GuildMemberPayload { - user?: UserPayload; - nick?: string | null; - avatar?: string | null; - roles: snowflake[]; - joined_at: string; - premium_since?: string | null; + avatar?: null | string; + communication_disabled_until?: null | string; deaf: boolean; - mute: boolean; flags: number; + joined_at: string; + mute: boolean; + nick?: null | string; pending?: boolean; permissions?: string; - communication_disabled_until?: string | null; + premium_since?: null | string; + roles: snowflake[]; + user?: UserPayload; } export enum GuildMemberFlags { - DID_REJOIN = 1, COMPLETED_ONBOARDING = 1 << 1, BYPASSES_VERIFICATION = 1 << 2, STARTED_ONBOARDING = 1 << 3, + DID_REJOIN = 1, } export interface ListGuildMembersParams { - limit?: number; after?: snowflake; + limit?: number; } export interface SearchGuildMembersParams { - query: string; limit?: number; + query: string; } export interface AddGuildMemberPayload { access_token: string; + deaf?: boolean; + mute?: boolean; nick?: string; roles?: snowflake[]; - mute?: boolean; - deaf?: boolean; } export interface EditGuildMemberPayload extends Reasonable { - nick?: string | null; - roles?: snowflake[] | null; - mute?: boolean | null; + channel_id?: null | snowflake; + communication_disabled_until?: null | string; deaf?: boolean | null; - channel_id?: snowflake | null; - communication_disabled_until?: string | null; - flags?: number | null; + flags?: null | number; + mute?: boolean | null; + nick?: null | string; + roles?: null | snowflake[]; } export interface EditGuildCurrentMemberPayload extends Reasonable { - nick?: string | null; + nick?: null | string; } diff --git a/types/src/guilds/onboarding.ts b/types/src/guilds/onboarding.ts index 934c2f3f..ba80d8f0 100644 --- a/types/src/guilds/onboarding.ts +++ b/types/src/guilds/onboarding.ts @@ -3,11 +3,11 @@ import { EmojiPayload } from "../emojis/emoij.ts"; import { Reasonable } from "../etc/reasonable.ts"; export interface GuildOnboardingPayload { - guild_id: snowflake; - prompts: GuildOnboardingPromptPayload[]; default_channel_ids: snowflake[]; enabled: boolean; + guild_id: snowflake; mode: GuildOnboardingMode; + prompts: GuildOnboardingPromptPayload[]; } export enum GuildOnboardingMode { @@ -17,24 +17,24 @@ export enum GuildOnboardingMode { export interface GuildOnboardingPromptPayload { id: snowflake; - type: GuildOnboardingPromptType; + in_onboarding: boolean; options: GuildOnboardingPromptOptions; - title: string; - single_select: boolean; required: boolean; - in_onboarding: boolean; + single_select: boolean; + title: string; + type: GuildOnboardingPromptType; } export interface GuildOnboardingPromptOptions { - id: snowflake; channel_ids: snowflake[]; - role_ids: snowflake[]; + description: null | string; emoji?: EmojiPayload; + emoji_animated?: boolean; emoji_id?: snowflake; emoji_name?: string; - emoji_animated?: boolean; + id: snowflake; + role_ids: snowflake[]; title: string; - description: string | null; } export enum GuildOnboardingPromptType { @@ -43,8 +43,8 @@ export enum GuildOnboardingPromptType { } export interface EditGuildOnboardingPayload extends Reasonable { - prompts?: GuildOnboardingPromptPayload[]; default_channel_ids?: snowflake[]; enabled?: boolean; mode?: GuildOnboardingMode; + prompts?: GuildOnboardingPromptPayload[]; } diff --git a/types/src/guilds/role.ts b/types/src/guilds/role.ts index 8b1c70a4..0d53e466 100644 --- a/types/src/guilds/role.ts +++ b/types/src/guilds/role.ts @@ -8,39 +8,39 @@ export interface RoleTagsPayload { } export interface RolePayload { - id: snowflake; - name: string; color: number; hoist: boolean; - icon?: string | null; - unicode_emoji?: string | null; - position: number; - permissions: string; + icon?: null | string; + id: snowflake; managed: boolean; + name: string; + permissions: string; + position: number; tags?: RoleTagsPayload; + unicode_emoji?: null | string; } export interface CreateGuildRolePayload extends Reasonable { - name?: string; - permissions?: string; color?: number; hoist?: boolean; - icon?: string | null; - unicode_emoji?: string | null; + icon?: null | string; mentionable?: boolean; + name?: string; + permissions?: string; + unicode_emoji?: null | string; } export interface EditGuildRolePositionPayload extends Reasonable { id: snowflake; - position?: number | null; + position?: null | number; } export interface EditGuildRolePayload extends Reasonable { - name?: string | null; - permissions?: string | null; - color?: number | null; + color?: null | number; hoist?: boolean | null; - icon?: string | null; - unicode_emoji?: string | null; + icon?: null | string; mentionable?: boolean | null; + name?: null | string; + permissions?: null | string; + unicode_emoji?: null | string; } diff --git a/types/src/interactions/command.ts b/types/src/interactions/command.ts index e848148f..8f2b9332 100644 --- a/types/src/interactions/command.ts +++ b/types/src/interactions/command.ts @@ -4,22 +4,22 @@ import { snowflake } from "../common.ts"; import { Locales } from "../etc/locales.ts"; export interface ApplicationCommandPayload { - id: snowflake; - type?: ApplicationCommandType; application_id: snowflake; - guild_id?: snowflake; - name: string; - name_localizations?: Record; + contexts?: ApplicationCommandContextType[] | null; + default_member_permissions: null | string; + default_permission?: boolean | null; description: string; - description_localizations?: Record; - options?: ApplicationCommandOptionPayload[]; - default_member_permissions: string | null; + description_localizations?: Record; dm_permission?: boolean; - default_permission?: boolean | null; + guild_id?: snowflake; + id: snowflake; + integration_types?: ApplicationIntegrationType[]; + name: string; + name_localizations?: Record; nsfw?: boolean; + options?: ApplicationCommandOptionPayload[]; + type?: ApplicationCommandType; version: snowflake; - contexts?: ApplicationCommandContextType[] | null; - integration_types?: ApplicationIntegrationType[]; } export enum ApplicationCommandContextType { @@ -35,20 +35,20 @@ export enum ApplicationCommandType { } export interface ApplicationCommandOptionPayload { - type: ApplicationCommandOptionType; - name: string; - name_localizations?: Record; - description: string; - description_localizations?: Record; - required?: boolean; - choices?: ApplicationCommandOptionChoicePayload[]; - options?: ApplicationCommandOptionPayload[]; + autocomplete?: boolean; channel_types?: ChannelType[]; - min_value?: number; + choices?: ApplicationCommandOptionChoicePayload[]; + description: string; + description_localizations?: Record; + max_length?: number; max_value?: number; min_length?: number; - max_length?: number; - autocomplete?: boolean; + min_value?: number; + name: string; + name_localizations?: Record; + options?: ApplicationCommandOptionPayload[]; + required?: boolean; + type: ApplicationCommandOptionType; } export enum ApplicationCommandOptionType { @@ -67,29 +67,29 @@ export enum ApplicationCommandOptionType { export interface ApplicationCommandOptionChoicePayload { name: string; - name_localizations?: Record; - value: string | number; + name_localizations?: Record; + value: number | string; } export interface ApplicationCommandInteractionDataOptionPayload { + focused?: boolean; name: string; - type: ApplicationCommandOptionType; - value?: string | number; options?: ApplicationCommandInteractionDataOptionPayload[]; - focused?: boolean; + type: ApplicationCommandOptionType; + value?: number | string; } export interface GuildApplicationCommandPermissionPayload { - id: snowflake; application_id: snowflake; guild_id: snowflake; + id: snowflake; permissions: ApplicationCommandPermissions[]; } export interface ApplicationCommandPermissions { id: snowflake; - type: ApplicationCommandPermissionType; permission: boolean; + type: ApplicationCommandPermissionType; } export enum ApplicationCommandPermissionType { @@ -106,74 +106,74 @@ export type GetGuildApplicationCommandsParams = GetGlobalApplicationCommandsParams; export interface CreateGlobalApplicationCommandPayload { - name: string; - name_localizations?: Record; + contexts?: ApplicationCommandContextType[]; + default_member_permissions?: null | string; + default_permission?: boolean; description: string; - description_localizations?: Record; - options?: ApplicationCommandOptionPayload[]; - default_member_permissions?: string | null; + description_localizations?: Record; dm_permission?: boolean | null; - default_permission?: boolean; - type?: ApplicationCommandType; - nsfw?: boolean; - contexts?: ApplicationCommandContextType[]; integration_types?: ApplicationIntegrationType[]; + name: string; + name_localizations?: Record; + nsfw?: boolean; + options?: ApplicationCommandOptionPayload[]; + type?: ApplicationCommandType; } export interface EditGlobalApplicationCommandPayload { - name?: string; - name_localizations?: Record; + contexts?: ApplicationCommandContextType[]; + default_member_permissions?: null | string; + default_permission?: boolean; description?: string; - description_localizations?: Record; - options?: ApplicationCommandOptionPayload[]; - default_member_permissions?: string | null; + description_localizations?: Record; dm_permission?: boolean | null; - default_permission?: boolean; - nsfw?: boolean; - contexts?: ApplicationCommandContextType[]; integration_types?: ApplicationIntegrationType[]; + name?: string; + name_localizations?: Record; + nsfw?: boolean; + options?: ApplicationCommandOptionPayload[]; } export type BulkOverwriteGlobalApplicationCommandsPayload = CreateGlobalApplicationCommandPayload[]; export interface CreateGuildApplicationCommandPayload { - name: string; - name_localizations?: Record; + default_member_permissions?: null | string; + default_permission?: boolean; description: string; - description_localizations?: Record; + description_localizations?: Record; + name: string; + name_localizations?: Record; + nsfw?: boolean; options?: ApplicationCommandOptionPayload[]; - default_member_permissions?: string | null; - default_permission?: boolean; type?: ApplicationCommandType; - nsfw?: boolean; } export interface EditGuildApplicationCommandPayload { - name?: string; - name_localizations?: Record; - description?: string; - description_localizations?: Record; - options?: ApplicationCommandOptionPayload[]; - default_member_permissions?: string | null; + default_member_permissions?: null | string; default_permission?: boolean; + description?: string; + description_localizations?: Record; + name?: string; + name_localizations?: Record; nsfw?: boolean; + options?: ApplicationCommandOptionPayload[]; } export interface BulkOverwriteGuildApplicationCommandsPayload { - id?: snowflake; - name: string; - name_localizations?: Record; + contexts?: ApplicationCommandContextType[]; + default_member_permissions?: null | string; + default_permission?: boolean; description: string; - description_localizations?: Record; - options?: ApplicationCommandOptionPayload[]; - default_member_permissions?: string | null; + description_localizations?: Record; dm_permission?: boolean | null; - default_permission?: boolean; - contexts?: ApplicationCommandContextType[]; + id?: snowflake; integration_types?: ApplicationIntegrationType[]; - type?: ApplicationCommandType; + name: string; + name_localizations?: Record; nsfw?: boolean; + options?: ApplicationCommandOptionPayload[]; + type?: ApplicationCommandType; } export interface EditApplicationCommandPermissionsPayload { diff --git a/types/src/interactions/components.ts b/types/src/interactions/components.ts index 2732557d..30978ca0 100644 --- a/types/src/interactions/components.ts +++ b/types/src/interactions/components.ts @@ -18,47 +18,47 @@ export enum ComponentType { } export interface ButtonComponentPayload extends ComponentPayload { - type: ComponentType.BUTTON; custom_id?: string; disabled?: boolean; - style: ButtonStylesType; - label?: string; emoji?: EmojiPayload; + label?: string; + style: ButtonStylesType; + type: ComponentType.BUTTON; url?: string; } export interface SelectMenusComponentPayload extends ComponentPayload { - type: - | ComponentType.STRING_SELECT - | ComponentType.USER_SELECT - | ComponentType.ROLE_SELECT - | ComponentType.MENTIONABLE_SELECT - | ComponentType.CHANNEL_SELECT; - custom_id: string; - options?: SelectOptionsPayload; channel_types?: ChannelType[]; - placeholder?: string; + custom_id: string; default_values?: SelectDefaultValuePayload[]; - min_values?: number; - max_values?: number; disabled?: boolean; + max_values?: number; + min_values?: number; + options?: SelectOptionsPayload; + placeholder?: string; + type: + | ComponentType.CHANNEL_SELECT + | ComponentType.MENTIONABLE_SELECT + | ComponentType.ROLE_SELECT + | ComponentType.STRING_SELECT + | ComponentType.USER_SELECT; } export interface ActionRowsComponentPayload extends ComponentPayload { - type: ComponentType.ACTION_ROW; components?: ComponentPayload[]; + type: ComponentType.ACTION_ROW; } export interface TextInputComponentPayload extends ComponentPayload { - type: ComponentType.TEXT_INPUT; custom_id: string; - style: TextInputStyles; label: string; - min_length?: number; max_length?: number; + min_length?: number; + placeholder?: string; required?: boolean; + style: TextInputStyles; + type: ComponentType.TEXT_INPUT; value?: string; - placeholder?: string; } export enum TextInputStyles { @@ -75,14 +75,14 @@ export enum ButtonStylesType { } export interface SelectOptionsPayload { - label: string; - value: string; + default?: boolean; descripion?: string; emoji?: EmojiPayload; - default?: boolean; + label: string; + value: string; } export interface SelectDefaultValuePayload { id: snowflake; - type: "user" | "role" | "channel"; + type: "channel" | "role" | "user"; } diff --git a/types/src/interactions/interaction.ts b/types/src/interactions/interaction.ts index 8a3fc813..4fb68800 100644 --- a/types/src/interactions/interaction.ts +++ b/types/src/interactions/interaction.ts @@ -23,28 +23,28 @@ import { } from "./components.ts"; export interface InteractionPayload { - id: snowflake; + app_permissions?: string; application_id: snowflake; - type: InteractionType; + authorizing_integration_owners: Record; + channel?: ChannelPayload; + channel_id?: snowflake; + context: ApplicationCommandContextType; data?: | ApplicationCommandInteractionDataPayload | ComponentInteractionDataPayload | ModalSubmitDataPayload | ResolvedDataPayload; + entitlements: EntitlementPayload[]; guild_id?: snowflake; - channel?: ChannelPayload; - channel_id?: snowflake; + guild_locale?: Locales; + id: snowflake; + locale?: Locales; member?: GuildMemberPayload; - user?: UserPayload; + message?: MessagePayload; token: string; + type: InteractionType; + user?: UserPayload; version: 1; - message?: MessagePayload; - app_permissions?: string; - locale?: Locales; - guild_locale?: Locales; - entitlements: EntitlementPayload[]; - authorizing_integration_owners: Record; - context: ApplicationCommandContextType; } export enum InteractionType { @@ -56,50 +56,50 @@ export enum InteractionType { } export interface ApplicationCommandInteractionDataPayload { + guild_id?: snowflake; id: snowflake; name: string; - type: ApplicationCommandType; - resolved?: ResolvedDataPayload; options?: ApplicationCommandInteractionDataOptionPayload[]; - guild_id?: snowflake; + resolved?: ResolvedDataPayload; target_id?: snowflake; + type: ApplicationCommandType; } export interface ComponentInteractionDataPayload { - custom_id?: string; component_type?: ComponentType; - values?: SelectOptionsPayload[]; + custom_id?: string; resolved?: ResolvedDataPayload; + values?: SelectOptionsPayload[]; } export interface ModalSubmitDataPayload { - custom_id?: string; components?: ComponentPayload[]; + custom_id?: string; } export interface ResolvedDataPayload { - users?: Record; - members?: Record; - roles?: Record; + attachments?: Record; channels?: Record; + members?: Record; messages?: Record; - attachments?: Record; + roles?: Record; + users?: Record; } export interface MessageInteractionPayload { id: snowflake; - type: InteractionType; + member?: GuildMemberPayload; name: string; + type: InteractionType; user: UserPayload; - member?: GuildMemberPayload; } export interface InteractionResponsePayload { - type: InteractionCallbackType; data?: - | MessageInteractionCallbackData | AutocompleteInteractionCallbackData + | MessageInteractionCallbackData | ModalInteractionCallbackPayload; + type: InteractionCallbackType; } export enum InteractionCallbackType { @@ -114,14 +114,14 @@ export enum InteractionCallbackType { } export interface MessageInteractionCallbackData { - tts?: boolean; + allowed_mentions?: AllowedMentionsPayload; + attachments?: AttachmentPayload[]; + components?: ComponentPayload[]; content?: string; embeds?: EmbedPayload[]; - allowed_mentions?: AllowedMentionsPayload; flags?: number; - components?: ComponentPayload[]; - attachments?: AttachmentPayload[]; poll?: PollCreateRequestPayload; + tts?: boolean; } export interface AutocompleteInteractionCallbackData { @@ -129,7 +129,7 @@ export interface AutocompleteInteractionCallbackData { } export interface ModalInteractionCallbackPayload { + components: ComponentPayload[]; custom_id: string; title: string; - components: ComponentPayload[]; } diff --git a/types/src/invites/invite.ts b/types/src/invites/invite.ts index 0e193cb6..0e6ac6da 100644 --- a/types/src/invites/invite.ts +++ b/types/src/invites/invite.ts @@ -7,18 +7,18 @@ import { ScheduledEventPayload } from "../scheduledEvent/scheduledEvent.ts"; import { UserPayload } from "../users/user.ts"; export interface InvitePayload { + approximate_member_count?: number; + approximate_presence_count?: number; + channel: ChannelPayload | null; code: string; + expires_at?: null | string; guild?: GuildPayload; - channel: ChannelPayload | null; + guild_scheduled_event?: ScheduledEventPayload; inviter?: UserPayload; + stage_instance?: InviteStageInstancePayload; + target_application?: ApplicationPayload; target_type?: InviteTargetType; target_user?: UserPayload; - target_application?: ApplicationPayload; - approximate_presence_count?: number; - approximate_member_count?: number; - expires_at?: string | null; - stage_instance?: InviteStageInstancePayload; - guild_scheduled_event?: ScheduledEventPayload; } export enum InviteTargetType { @@ -34,15 +34,15 @@ export interface InviteStageInstancePayload { } export interface InviteMetadataPayload { - uses: number; - max_uses: number; + created_at: string; max_age: number; + max_uses: number; temporary: boolean; - created_at: string; + uses: number; } export interface GetInviteParams { + guild_scheduled_event_id?: snowflake; with_counts?: boolean; with_expiration?: boolean; - guild_scheduled_event_id?: snowflake; } diff --git a/types/src/poll/poll.ts b/types/src/poll/poll.ts index b2dd7b8d..10bf719b 100644 --- a/types/src/poll/poll.ts +++ b/types/src/poll/poll.ts @@ -3,20 +3,20 @@ import { EmojiPayload } from "../emojis/emoij.ts"; import { UserPayload } from "../users/user.ts"; export interface PollPayload { - question: PollMediaPayload; - answers: PollAnswerPayload[]; - expiry: string | null; allow_multiselect: boolean; + answers: PollAnswerPayload[]; + expiry: null | string; layout_type: PollLayoutType; + question: PollMediaPayload; results?: PollResultPayload; } export interface PollCreateRequestPayload { - question: PollMediaPayload; + allow_multiselect: boolean; answers: PollAnswerPayload[]; duration: number; - allow_multiselect: boolean; layout_type?: PollLayoutType; + question: PollMediaPayload; } export enum PollLayoutType { @@ -24,8 +24,8 @@ export enum PollLayoutType { } export interface PollMediaPayload { - text?: string; emoji?: EmojiPayload; + text?: string; } export interface PollAnswerPayload { @@ -34,13 +34,13 @@ export interface PollAnswerPayload { } export interface PollResultPayload { - is_finalized: boolean; answer_counts: PollAnswerCountPayload[]; + is_finalized: boolean; } export interface PollAnswerCountPayload { - id: number; count: number; + id: number; me_voted: boolean; } diff --git a/types/src/scheduledEvent/scheduledEvent.ts b/types/src/scheduledEvent/scheduledEvent.ts index b25d4a13..11b8868b 100644 --- a/types/src/scheduledEvent/scheduledEvent.ts +++ b/types/src/scheduledEvent/scheduledEvent.ts @@ -4,22 +4,22 @@ import { GuildMemberPayload } from "../guilds/member.ts"; import { UserPayload } from "../users/user.ts"; export interface ScheduledEventPayload { - id: snowflake; + channel_id: null | snowflake; + creator?: UserPayload; + creator_id?: null | snowflake; + description?: string; + entity_id: null | snowflake; + entity_metadata: ScheduledEventEntityMetadataPayload; + entity_type: ScheduledEventEntityType; guild_id: snowflake; - channel_id: snowflake | null; - creator_id?: snowflake | null; + id: snowflake; + image?: null | string; name: string; - description?: string; - scheduled_start_time: string; - scheduled_end_time: string | null; privacy_level: ScheduledEventPrivacyLevel; + scheduled_end_time: null | string; + scheduled_start_time: string; status: ScheduledEventStatus; - entity_type: ScheduledEventEntityType; - entity_id: snowflake | null; - entity_metadata: ScheduledEventEntityMetadataPayload; - creator?: UserPayload; user_cound?: number; - image?: string | null; } export enum ScheduledEventPrivacyLevel { @@ -45,8 +45,8 @@ export interface ScheduledEventEntityMetadataPayload { export interface ScheduledEventUserPayload { guild_scheduled_event_id: snowflake; - user: UserPayload; member?: GuildMemberPayload; + user: UserPayload; } export interface GetScheduledEventsPayload { @@ -55,14 +55,14 @@ export interface GetScheduledEventsPayload { export interface CreateScheduledEventPayload extends Reasonable { channel_id?: snowflake; + description?: string; entity_metadata?: ScheduledEventEntityMetadataPayload; + entity_type: ScheduledEventEntityType; + image?: string; name: string; privacy_level: ScheduledEventPrivacyLevel; - scheduled_start_time: string; scheduled_end_time?: string; - description?: string; - entity_type: ScheduledEventEntityType; - image?: string; + scheduled_start_time: string; } export interface GetScheduledEventPayload { @@ -70,21 +70,21 @@ export interface GetScheduledEventPayload { } export interface EditScheduledEventPayload extends Reasonable { - channel_id?: snowflake | null; - entity_metadata?: ScheduledEventEntityMetadataPayload | null; + channel_id?: null | snowflake; + description?: null | string; + entity_metadata?: null | ScheduledEventEntityMetadataPayload; + entity_type: ScheduledEventEntityType; + image?: string; name?: string; privacy_level?: ScheduledEventPrivacyLevel; - scheduled_start_time?: string; scheduled_end_time?: string; - description?: string | null; - entity_type: ScheduledEventEntityType; + scheduled_start_time?: string; status?: ScheduledEventStatus; - image?: string; } export interface GetScheduledEventUsersParams { + after?: snowflake; + before?: snowflake; limit?: number; with_member?: boolean; - before?: snowflake; - after?: snowflake; } diff --git a/types/src/stageInstances/stage.ts b/types/src/stageInstances/stage.ts index 8de1aab0..853e934f 100644 --- a/types/src/stageInstances/stage.ts +++ b/types/src/stageInstances/stage.ts @@ -2,13 +2,13 @@ import { snowflake } from "../common.ts"; import { Reasonable } from "../etc/reasonable.ts"; export interface StageInstancePayload { - id: snowflake; - guild_id: snowflake; channel_id: snowflake; - topic: string; - privacy_level: StagePrivacyLevel; discoverable_disabled: boolean; - guild_scheduled_event_id: snowflake | null; + guild_id: snowflake; + guild_scheduled_event_id: null | snowflake; + id: snowflake; + privacy_level: StagePrivacyLevel; + topic: string; } export enum StagePrivacyLevel { @@ -18,13 +18,13 @@ export enum StagePrivacyLevel { export interface CreateStageInstancePayload extends Reasonable { channel_id: snowflake; - topic: string; + guild_scheduled_event_id?: snowflake; privacy_level?: StagePrivacyLevel; send_start_notification?: boolean; - guild_scheduled_event_id?: snowflake; + topic: string; } export interface EditStageInstancePayload extends Reasonable { - topic?: string; privacy_level?: StagePrivacyLevel; + topic?: string; } diff --git a/types/src/stickers/sticker.ts b/types/src/stickers/sticker.ts index 68072c16..9b374b5d 100644 --- a/types/src/stickers/sticker.ts +++ b/types/src/stickers/sticker.ts @@ -3,17 +3,17 @@ import { Reasonable } from "../etc/reasonable.ts"; import { UserPayload } from "../users/user.ts"; export interface StickerPayload { + available?: boolean; + description: null | string; + format_type: StickerFormatType; + guild_id?: snowflake; id: snowflake; - pack_id?: snowflake; name: string; - description: string | null; + pack_id?: snowflake; + sort_value?: number; tags: string; type: StickerType; - format_type: StickerFormatType; - available?: boolean; - guild_id?: snowflake; user?: UserPayload; - sort_value?: number; } export enum StickerType { @@ -29,19 +29,19 @@ export enum StickerFormatType { } export interface StickerItemPayload { + format_type: StickerFormatType; id: snowflake; name: string; - format_type: StickerFormatType; } export interface StickerPackPayload { + banner_asset_id?: snowflake; + cover_sticker_id?: snowflake; + description: string; id: snowflake; - stickers: StickerPayload[]; name: string; sku_id: snowflake; - cover_sticker_id?: snowflake; - description: string; - banner_asset_id?: snowflake; + stickers: StickerPayload[]; } export interface ListNitroStickerPacksPayload { @@ -49,14 +49,14 @@ export interface ListNitroStickerPacksPayload { } export interface CreateGuildStickerPayload extends Reasonable { - name: string; description: string; - tags: string; file: Blob; + name: string; + tags: string; } export interface EditGuildStickerPayload extends Reasonable { - name?: string; description?: string; + name?: string; tags?: string; } diff --git a/types/src/teams/team.ts b/types/src/teams/team.ts index d18c74b0..87cdcb25 100644 --- a/types/src/teams/team.ts +++ b/types/src/teams/team.ts @@ -2,7 +2,7 @@ import { snowflake } from "../common.ts"; import { UserPayload } from "../users/user.ts"; export interface TeamPayload { - icon: string | null; + icon: null | string; id: snowflake; members: TeamMemberPayload[]; name: string; @@ -11,9 +11,9 @@ export interface TeamPayload { export interface TeamMemberPayload { membership_state: MembershipState; + role: string; team_id: snowflake; user: UserPayload; - role: string; } export enum MembershipState { diff --git a/types/src/users/connection.ts b/types/src/users/connection.ts index a7109133..49086af9 100644 --- a/types/src/users/connection.ts +++ b/types/src/users/connection.ts @@ -15,8 +15,8 @@ export enum Services { PLAYSTATION_NETWORK = "playstation", REDDIT = "reddit", RIOT_GAMES = "riotgames", - SPOTIFY = "spotify", SKYPE = "skype", + SPOTIFY = "spotify", STEAM = "steam", TIKTOK = "tiktok", TWITCH = "twitch", @@ -27,15 +27,15 @@ export enum Services { } export interface ConnectionPayload { + friend_sync: boolean; id: snowflake; + integrations?: IntegrationPayload[]; name: string; - type: Services; revoked?: boolean; - integrations?: IntegrationPayload[]; - verified: boolean; - friend_sync: boolean; show_activity: boolean; two_way_link: boolean; + type: Services; + verified: boolean; visibility: VisibilityType; } @@ -45,13 +45,13 @@ export enum VisibilityType { } export interface ApplicationRoleConnectionPayload { - platform_name: string | null; - platform_username: string | null; metadata: ApplicationRoleConnectionMetadata; + platform_name: null | string; + platform_username: null | string; } export interface EditApplicationRoleConnectionPayload { + metadata?: ApplicationRoleConnectionMetadata; platform_name?: string; platform_username?: string; - metadata?: ApplicationRoleConnectionMetadata; } diff --git a/types/src/users/user.ts b/types/src/users/user.ts index b582a513..a98deb26 100644 --- a/types/src/users/user.ts +++ b/types/src/users/user.ts @@ -1,27 +1,26 @@ import { snowflake } from "../common.ts"; export interface UserPayload { - id: snowflake; - username: string; - discriminator: string; - global_name: string | null; - avatar: string | null; + accent_color?: null | number; + avatar: null | string; + avatar_decoration?: null | string; + banner?: null | string; bot?: boolean; - system?: boolean; - mfa_enabled?: boolean; - banner?: string | null; - accent_color?: number | null; - locale?: string; - verified?: boolean; - email?: string | null; + discriminator: string; + email?: null | string; flags?: number; + global_name: null | string; + id: snowflake; + locale?: string; + mfa_enabled?: boolean; premium_type?: PremiumType; public_flags?: number; - avatar_decoration?: string | null; + system?: boolean; + username: string; + verified?: boolean; } export enum UserFlags { - None = 0, STAFF = 1 << 0, PARTNER = 1 << 1, HYPESQUAD = 1 << 2, @@ -37,6 +36,7 @@ export enum UserFlags { CERTIFIED_MODERATOR = 1 << 18, BOT_HTTP_INTERACTIONS = 1 << 19, ACTIVE_DEVELOPER = 1 << 22, + None = 0, } export enum PremiumType { @@ -47,13 +47,13 @@ export enum PremiumType { } export interface EditCurrentUserPayload { + avatar?: null | string; username?: string; - avatar?: string | null; } export interface GetCurrentUserGuildsParams { - before?: snowflake; after?: snowflake; + before?: snowflake; limit?: number; with_counts?: boolean; } diff --git a/types/src/voices/voice.ts b/types/src/voices/voice.ts index 724627f6..114aca86 100644 --- a/types/src/voices/voice.ts +++ b/types/src/voices/voice.ts @@ -2,25 +2,25 @@ import { snowflake } from "../common.ts"; import { GuildMemberPayload } from "../guilds/member.ts"; export interface VoiceStatePayload { - guild_id?: snowflake; channel_id: snowflake; - user_id: snowflake; - member?: GuildMemberPayload; - session_id: string; deaf: boolean; + guild_id?: snowflake; + member?: GuildMemberPayload; mute: boolean; + request_to_speak_timestamp: null | string; self_deaf: boolean; self_mute: boolean; self_stream?: boolean; self_video: boolean; + session_id: string; suppress: boolean; - request_to_speak_timestamp: string | null; + user_id: snowflake; } export interface VoiceRegionPayload { + custom: boolean; + deprecated: boolean; id: string; name: string; optimal: boolean; - deprecated: boolean; - custom: boolean; } diff --git a/types/src/webhooks/webhook.ts b/types/src/webhooks/webhook.ts index 225a3e5e..376141fb 100644 --- a/types/src/webhooks/webhook.ts +++ b/types/src/webhooks/webhook.ts @@ -9,18 +9,18 @@ import { PollPayload } from "../poll/poll.ts"; import { UserPayload } from "../users/user.ts"; export interface WebhookPayload { + application_id: null | snowflake; + avatar: null | string; + channel_id: null | snowflake; + guild_id?: null | snowflake; id: snowflake; - type: WebhookType; - guild_id?: snowflake | null; - channel_id: snowflake | null; - user?: UserPayload; - name: string | null; - avatar: string | null; - token?: string; - application_id: snowflake | null; - source_guild?: GuildPayload; + name: null | string; source_channel?: ChannelPayload; + source_guild?: GuildPayload; + token?: string; + type: WebhookType; url?: string; + user?: UserPayload; } export enum WebhookType { @@ -30,35 +30,35 @@ export enum WebhookType { } export interface CreateWebhookPayload { + avatar?: null | string; // Fun fact: name cannot include 'clyde' or 'discord' in it name: string; - avatar?: string | null; } export interface EditWebhookPayload { - name: string; - avatar: string | null; + avatar: null | string; channel_id: snowflake; + name: string; } export interface ExecuteWebhookParams { - wait?: boolean; thread_id?: snowflake; + wait?: boolean; } export interface ExecuteWebhookPayload { - content?: string; - username?: string; - avatar_url?: string; - tts?: boolean; - embeds?: EmbedPayload[]; allowed_mentions?: AllowedMentionsPayload[]; - components?: ComponentPayload[]; + applied_tags?: snowflake[]; attachments?: AttachmentPayload[]; + avatar_url?: string; + components?: ComponentPayload[]; + content?: string; + embeds?: EmbedPayload[]; flags?: number; - thread_name?: string; - applied_tags?: snowflake[]; poll?: PollPayload; + thread_name?: string; + tts?: boolean; + username?: string; } export type ExecuteSlackCompatibleWebhookParams = ExecuteWebhookParams; @@ -70,11 +70,11 @@ export interface GetWebhookMessageParams { export type EditWebhookMessageParams = GetWebhookMessageParams; export interface EditWebhookMessagePayload { - content?: string | null; - embeds?: EmbedPayload[] | null; allowed_mentions?: AllowedMentionsPayload[] | null; - components?: ComponentPayload[] | null; attachments?: AttachmentPayload[] | null; + components?: ComponentPayload[] | null; + content?: null | string; + embeds?: EmbedPayload[] | null; } export type DeleteWebhookMessageParams = GetWebhookMessageParams;