From 1b3a06a12dc0daf77153170631cfa52c48bb1857 Mon Sep 17 00:00:00 2001 From: Danial Raza Date: Fri, 22 Mar 2024 02:55:33 +0100 Subject: [PATCH] feat: support avatar decorations --- deno/payloads/v10/guild.ts | 8 +++++++- deno/payloads/v10/user.ts | 24 ++++++++++++++++++++++++ deno/payloads/v9/guild.ts | 8 +++++++- deno/payloads/v9/user.ts | 24 ++++++++++++++++++++++++ deno/rest/v10/mod.ts | 12 ++++++++++++ deno/rest/v9/mod.ts | 12 ++++++++++++ payloads/v10/guild.ts | 8 +++++++- payloads/v10/user.ts | 24 ++++++++++++++++++++++++ payloads/v9/guild.ts | 8 +++++++- payloads/v9/user.ts | 24 ++++++++++++++++++++++++ rest/v10/index.ts | 12 ++++++++++++ rest/v9/index.ts | 12 ++++++++++++ 12 files changed, 172 insertions(+), 4 deletions(-) diff --git a/deno/payloads/v10/guild.ts b/deno/payloads/v10/guild.ts index 77d7210bb..ee4f51bc6 100644 --- a/deno/payloads/v10/guild.ts +++ b/deno/payloads/v10/guild.ts @@ -8,7 +8,7 @@ import type { PresenceUpdateReceiveStatus } from './gateway.ts'; import type { OAuth2Scopes } from './oauth2.ts'; import type { APIRole } from './permissions.ts'; import type { APISticker } from './sticker.ts'; -import type { APIUser } from './user.ts'; +import type { APIAvatarDecorationData, APIUser } from './user.ts'; /** * https://discord.com/developers/docs/resources/guild#unavailable-guild-object @@ -668,6 +668,12 @@ export interface APIGuildMember { * Timestamp of when the time out will be removed; until then, they cannot interact with the guild */ communication_disabled_until?: string | null; + /** + * The data for the member's guild avatar decoration + * + * See https://discord.com/developers/docs/resources/user#avatar-decoration-data-object + */ + avatar_decoration_data?: APIAvatarDecorationData | null; } /** diff --git a/deno/payloads/v10/user.ts b/deno/payloads/v10/user.ts index 7056ae6aa..b0cf64367 100644 --- a/deno/payloads/v10/user.ts +++ b/deno/payloads/v10/user.ts @@ -87,8 +87,16 @@ export interface APIUser { * The user's avatar decoration hash * * See https://discord.com/developers/docs/reference#image-formatting + * + * @deprecated Use `avatar_decoration_data` instead */ avatar_decoration?: string | null; + /** + * The data for the user's avatar decoration + * + * See https://discord.com/developers/docs/resources/user#avatar-decoration-data-object + */ + avatar_decoration_data?: APIAvatarDecorationData | null; } /** @@ -318,3 +326,19 @@ export interface APIApplicationRoleConnection { */ metadata: Record; } + +/** + * https://discord.com/developers/docs/resources/user#avatar-decoration-data-object + */ +export interface APIAvatarDecorationData { + /** + * The avatar decoration hash + * + * See https://discord.com/developers/docs/reference#image-formatting + */ + asset: string; + /** + * The id of the avatar decoration's SKU + */ + sku_id: Snowflake; +} diff --git a/deno/payloads/v9/guild.ts b/deno/payloads/v9/guild.ts index 51860a141..51bc1f246 100644 --- a/deno/payloads/v9/guild.ts +++ b/deno/payloads/v9/guild.ts @@ -8,7 +8,7 @@ import type { PresenceUpdateReceiveStatus } from './gateway.ts'; import type { OAuth2Scopes } from './oauth2.ts'; import type { APIRole } from './permissions.ts'; import type { APISticker } from './sticker.ts'; -import type { APIUser } from './user.ts'; +import type { APIAvatarDecorationData, APIUser } from './user.ts'; /** * https://discord.com/developers/docs/resources/guild#unavailable-guild-object @@ -660,6 +660,12 @@ export interface APIGuildMember { * Timestamp of when the time out will be removed; until then, they cannot interact with the guild */ communication_disabled_until?: string | null; + /** + * The data for the member's guild avatar decoration + * + * See https://discord.com/developers/docs/resources/user#avatar-decoration-data-object + */ + avatar_decoration_data?: APIAvatarDecorationData | null; } /** diff --git a/deno/payloads/v9/user.ts b/deno/payloads/v9/user.ts index 41b14e184..744b2f51f 100644 --- a/deno/payloads/v9/user.ts +++ b/deno/payloads/v9/user.ts @@ -87,8 +87,16 @@ export interface APIUser { * The user's avatar decoration hash * * See https://discord.com/developers/docs/reference#image-formatting + * + * @deprecated Use `avatar_decoration_data` instead */ avatar_decoration?: string | null; + /** + * The data for the user's avatar decoration + * + * See https://discord.com/developers/docs/resources/user#avatar-decoration-data-object + */ + avatar_decoration_data?: APIAvatarDecorationData | null; } /** @@ -318,3 +326,19 @@ export interface APIApplicationRoleConnection { */ metadata: Record; } + +/** + * https://discord.com/developers/docs/resources/user#avatar-decoration-data-object + */ +export interface APIAvatarDecorationData { + /** + * The avatar decoration hash + * + * See https://discord.com/developers/docs/reference#image-formatting + */ + asset: string; + /** + * The id of the avatar decoration's SKU + */ + sku_id: Snowflake; +} diff --git a/deno/rest/v10/mod.ts b/deno/rest/v10/mod.ts index 7986093be..9f219d3bb 100644 --- a/deno/rest/v10/mod.ts +++ b/deno/rest/v10/mod.ts @@ -1065,11 +1065,23 @@ export const CDNRoutes = { * - GET `/avatar-decorations/{user.id}/{user.avatar_decoration}.png` * * This route supports the extension: PNG + * + * @deprecated Use {@link CDNRoutes.avatarDecoration} instead. */ userAvatarDecoration(userId: Snowflake, userAvatarDecoration: string) { return `/avatar-decorations/${userId}/${userAvatarDecoration}.png` as const; }, + /** + * Route for: + * - GET `/avatar-decoration-presets/{avatar_decoration_data_asset}.png` + * + * This route supports the extension: PNG + */ + avatarDecoration(avatarDecorationDataAsset: string) { + return `/avatar-decoration-presets/${avatarDecorationDataAsset}.png` as const; + }, + /** * Route for: * - GET `/app-icons/{application.id}/{application.icon}.{png|jpeg|webp}` diff --git a/deno/rest/v9/mod.ts b/deno/rest/v9/mod.ts index b5dc53c87..43a660fb7 100644 --- a/deno/rest/v9/mod.ts +++ b/deno/rest/v9/mod.ts @@ -1074,11 +1074,23 @@ export const CDNRoutes = { * - GET `/avatar-decorations/{user.id}/{user.avatar_decoration}.png` * * This route supports the extension: PNG + * + * @deprecated Use {@link CDNRoutes.avatarDecoration} instead. */ userAvatarDecoration(userId: Snowflake, userAvatarDecoration: string) { return `/avatar-decorations/${userId}/${userAvatarDecoration}.png` as const; }, + /** + * Route for: + * - GET `/avatar-decoration-presets/{avatar_decoration_data_asset}.png` + * + * This route supports the extension: PNG + */ + avatarDecoration(avatarDecorationDataAsset: string) { + return `/avatar-decoration-presets/${avatarDecorationDataAsset}.png` as const; + }, + /** * Route for: * - GET `/app-icons/{application.id}/{application.icon}.{png|jpeg|webp}` diff --git a/payloads/v10/guild.ts b/payloads/v10/guild.ts index cf656067e..c0a0c4491 100644 --- a/payloads/v10/guild.ts +++ b/payloads/v10/guild.ts @@ -8,7 +8,7 @@ import type { PresenceUpdateReceiveStatus } from './gateway'; import type { OAuth2Scopes } from './oauth2'; import type { APIRole } from './permissions'; import type { APISticker } from './sticker'; -import type { APIUser } from './user'; +import type { APIAvatarDecorationData, APIUser } from './user'; /** * https://discord.com/developers/docs/resources/guild#unavailable-guild-object @@ -668,6 +668,12 @@ export interface APIGuildMember { * Timestamp of when the time out will be removed; until then, they cannot interact with the guild */ communication_disabled_until?: string | null; + /** + * The data for the member's guild avatar decoration + * + * See https://discord.com/developers/docs/resources/user#avatar-decoration-data-object + */ + avatar_decoration_data?: APIAvatarDecorationData | null; } /** diff --git a/payloads/v10/user.ts b/payloads/v10/user.ts index d499b6603..9f2f9ccc7 100644 --- a/payloads/v10/user.ts +++ b/payloads/v10/user.ts @@ -87,8 +87,16 @@ export interface APIUser { * The user's avatar decoration hash * * See https://discord.com/developers/docs/reference#image-formatting + * + * @deprecated Use `avatar_decoration_data` instead */ avatar_decoration?: string | null; + /** + * The data for the user's avatar decoration + * + * See https://discord.com/developers/docs/resources/user#avatar-decoration-data-object + */ + avatar_decoration_data?: APIAvatarDecorationData | null; } /** @@ -318,3 +326,19 @@ export interface APIApplicationRoleConnection { */ metadata: Record; } + +/** + * https://discord.com/developers/docs/resources/user#avatar-decoration-data-object + */ +export interface APIAvatarDecorationData { + /** + * The avatar decoration hash + * + * See https://discord.com/developers/docs/reference#image-formatting + */ + asset: string; + /** + * The id of the avatar decoration's SKU + */ + sku_id: Snowflake; +} diff --git a/payloads/v9/guild.ts b/payloads/v9/guild.ts index ff154b020..e09774d2f 100644 --- a/payloads/v9/guild.ts +++ b/payloads/v9/guild.ts @@ -8,7 +8,7 @@ import type { PresenceUpdateReceiveStatus } from './gateway'; import type { OAuth2Scopes } from './oauth2'; import type { APIRole } from './permissions'; import type { APISticker } from './sticker'; -import type { APIUser } from './user'; +import type { APIAvatarDecorationData, APIUser } from './user'; /** * https://discord.com/developers/docs/resources/guild#unavailable-guild-object @@ -660,6 +660,12 @@ export interface APIGuildMember { * Timestamp of when the time out will be removed; until then, they cannot interact with the guild */ communication_disabled_until?: string | null; + /** + * The data for the member's guild avatar decoration + * + * See https://discord.com/developers/docs/resources/user#avatar-decoration-data-object + */ + avatar_decoration_data?: APIAvatarDecorationData | null; } /** diff --git a/payloads/v9/user.ts b/payloads/v9/user.ts index a2089dbcc..a8839d26c 100644 --- a/payloads/v9/user.ts +++ b/payloads/v9/user.ts @@ -87,8 +87,16 @@ export interface APIUser { * The user's avatar decoration hash * * See https://discord.com/developers/docs/reference#image-formatting + * + * @deprecated Use `avatar_decoration_data` instead */ avatar_decoration?: string | null; + /** + * The data for the user's avatar decoration + * + * See https://discord.com/developers/docs/resources/user#avatar-decoration-data-object + */ + avatar_decoration_data?: APIAvatarDecorationData | null; } /** @@ -318,3 +326,19 @@ export interface APIApplicationRoleConnection { */ metadata: Record; } + +/** + * https://discord.com/developers/docs/resources/user#avatar-decoration-data-object + */ +export interface APIAvatarDecorationData { + /** + * The avatar decoration hash + * + * See https://discord.com/developers/docs/reference#image-formatting + */ + asset: string; + /** + * The id of the avatar decoration's SKU + */ + sku_id: Snowflake; +} diff --git a/rest/v10/index.ts b/rest/v10/index.ts index b3432e56e..913a0dd02 100644 --- a/rest/v10/index.ts +++ b/rest/v10/index.ts @@ -1065,11 +1065,23 @@ export const CDNRoutes = { * - GET `/avatar-decorations/{user.id}/{user.avatar_decoration}.png` * * This route supports the extension: PNG + * + * @deprecated Use {@link CDNRoutes.avatarDecoration} instead. */ userAvatarDecoration(userId: Snowflake, userAvatarDecoration: string) { return `/avatar-decorations/${userId}/${userAvatarDecoration}.png` as const; }, + /** + * Route for: + * - GET `/avatar-decoration-presets/{avatar_decoration_data_asset}.png` + * + * This route supports the extension: PNG + */ + avatarDecoration(avatarDecorationDataAsset: string) { + return `/avatar-decoration-presets/${avatarDecorationDataAsset}.png` as const; + }, + /** * Route for: * - GET `/app-icons/{application.id}/{application.icon}.{png|jpeg|webp}` diff --git a/rest/v9/index.ts b/rest/v9/index.ts index 4931517a7..37c9062b4 100644 --- a/rest/v9/index.ts +++ b/rest/v9/index.ts @@ -1074,11 +1074,23 @@ export const CDNRoutes = { * - GET `/avatar-decorations/{user.id}/{user.avatar_decoration}.png` * * This route supports the extension: PNG + * + * @deprecated Use {@link CDNRoutes.avatarDecoration} instead. */ userAvatarDecoration(userId: Snowflake, userAvatarDecoration: string) { return `/avatar-decorations/${userId}/${userAvatarDecoration}.png` as const; }, + /** + * Route for: + * - GET `/avatar-decoration-presets/{avatar_decoration_data_asset}.png` + * + * This route supports the extension: PNG + */ + avatarDecoration(avatarDecorationDataAsset: string) { + return `/avatar-decoration-presets/${avatarDecorationDataAsset}.png` as const; + }, + /** * Route for: * - GET `/app-icons/{application.id}/{application.icon}.{png|jpeg|webp}`