Use desiredProperties in transformEmoji (#3133)

* Use desiredProperties in transformEmoji

* remove not necessary payload checks

* add checks for payload
This commit is contained in:
Fleny
2023-09-21 14:05:11 +00:00
committed by GitHub
parent 39a4c07fac
commit b1a47394a3
+30 -11
View File
@@ -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<typeof emoji>
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<typeof transformEmoji> {}
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
}