From b1a47394a31434df3ae16f170937b916d7acc53b Mon Sep 17 00:00:00 2001 From: Fleny Date: Thu, 21 Sep 2023 16:05:11 +0200 Subject: [PATCH] Use `desiredProperties` in `transformEmoji` (#3133) * Use desiredProperties in transformEmoji * remove not necessary payload checks * add checks for payload --- packages/bot/src/transformers/emoji.ts | 41 +++++++++++++++++++------- 1 file changed, 30 insertions(+), 11 deletions(-) diff --git a/packages/bot/src/transformers/emoji.ts b/packages/bot/src/transformers/emoji.ts index ab0ea76da..0a842e9a5 100644 --- a/packages/bot/src/transformers/emoji.ts +++ b/packages/bot/src/transformers/emoji.ts @@ -1,19 +1,38 @@ import type { DiscordEmoji } from '@discordeno/types' -import type { Bot } from '../index.js' -import type { Optionalize } from '../optionalize.js' +import type { Bot, User } from '../index.js' import { EmojiToggles } from './toggles/emoji.js' // eslint-disable-next-line @typescript-eslint/explicit-function-return-type export function transformEmoji(bot: Bot, payload: DiscordEmoji) { - const emoji = { - id: payload.id ? bot.transformers.snowflake(payload.id) : undefined, - name: payload.name ?? undefined, - roles: payload.roles?.map((id) => bot.transformers.snowflake(id)), - user: payload.user ? bot.transformers.user(bot, payload.user) : undefined, - toggles: new EmojiToggles(payload), - } + const props = bot.transformers.desiredProperties.emoji + const emoji = {} as Emoji - return emoji as Optionalize + if (props.id && payload.id) emoji.id = bot.transformers.snowflake(payload.id) + if (props.name && payload.name) emoji.name = payload.name + if (props.roles && payload.roles) emoji.roles = payload.roles.map((id) => bot.transformers.snowflake(id)) + if (props.user && payload.user) emoji.user = bot.transformers.user(bot, payload.user) + + emoji.toggles = new EmojiToggles(payload) + + return emoji } -export interface Emoji extends ReturnType {} +export interface Emoji { + /** Emoji name (can only be null in reaction emoji objects) */ + name?: string + /** Emoji id */ + id?: bigint + /** Roles allowed to use this emoji */ + roles?: bigint[] + /** User that created this emoji */ + user?: User + /** Whether this emoji must be wrapped in colons */ + requireColons?: boolean + /** Whether this emoji is managed */ + managed?: boolean + /** Whether this emoji is animated */ + animated?: boolean + /** Whether this emoji can be used, may be false due to loss of Server Boosts */ + available?: boolean + toggles: EmojiToggles +}