mirror of
https://github.com/discordeno/discordeno.git
synced 2026-09-17 16:57:22 +00:00
fix(types)!: Fix nullability for DiscordEmoji (#4285)
* Fix nullability for DiscordEmoji * Fix type errors, use actual DiscordEmoji for partial emojis * Apply code review suggestions
This commit is contained in:
@@ -399,6 +399,7 @@ function oldtransformMessage(bot: Bot, payload: DiscordMessage): any {
|
||||
reactions: payload.reactions?.map((reaction) => ({
|
||||
me: reaction.me,
|
||||
count: reaction.count,
|
||||
// @ts-expect-error: TODO: Deal with partials
|
||||
emoji: bot.transformers.emoji(bot, reaction.emoji),
|
||||
})),
|
||||
type: payload.type,
|
||||
|
||||
@@ -15,6 +15,7 @@ export async function handleMessageReactionAdd(bot: Bot, data: DiscordGatewayPay
|
||||
guildId,
|
||||
member: payload.member && guildId ? bot.transformers.member(bot, payload.member, guildId, userId) : undefined,
|
||||
user: payload.member ? bot.transformers.user(bot, payload.member.user) : undefined,
|
||||
// @ts-expect-error TODO: Deal with partials
|
||||
emoji: bot.transformers.emoji(bot, payload.emoji),
|
||||
messageAuthorId: payload.message_author_id ? bot.transformers.snowflake(payload.message_author_id) : undefined,
|
||||
burst: payload.burst,
|
||||
|
||||
@@ -11,6 +11,7 @@ export async function handleMessageReactionRemove(bot: Bot, data: DiscordGateway
|
||||
channelId: bot.transformers.snowflake(payload.channel_id),
|
||||
messageId: bot.transformers.snowflake(payload.message_id),
|
||||
guildId: payload.guild_id ? bot.transformers.snowflake(payload.guild_id) : undefined,
|
||||
// @ts-expect-error TODO: Deal with partials
|
||||
emoji: bot.transformers.emoji(bot, payload.emoji),
|
||||
burst: payload.burst,
|
||||
})
|
||||
|
||||
@@ -10,6 +10,7 @@ export async function handleMessageReactionRemoveEmoji(bot: Bot, data: DiscordGa
|
||||
channelId: bot.transformers.snowflake(payload.channel_id),
|
||||
messageId: bot.transformers.snowflake(payload.message_id),
|
||||
guildId: payload.guild_id ? bot.transformers.snowflake(payload.guild_id) : undefined,
|
||||
// @ts-expect-error TODO: Deal with partials
|
||||
emoji: bot.transformers.emoji(bot, payload.emoji),
|
||||
})
|
||||
}
|
||||
|
||||
@@ -177,7 +177,7 @@ function transformSelectMenuComponent(bot: Bot, payload: DiscordSelectMenuCompon
|
||||
emoji: option.emoji
|
||||
? {
|
||||
id: option.emoji.id ? bot.transformers.snowflake(option.emoji.id) : undefined,
|
||||
name: option.emoji.name,
|
||||
name: option.emoji.name ?? undefined,
|
||||
animated: option.emoji.animated,
|
||||
}
|
||||
: undefined,
|
||||
|
||||
@@ -244,6 +244,7 @@ export function transformMessage(
|
||||
burst: reaction.count_details.burst,
|
||||
normal: reaction.count_details.normal,
|
||||
},
|
||||
// @ts-expect-error TODO: Deal with partials
|
||||
emoji: bot.transformers.emoji(bot, reaction.emoji),
|
||||
burstColors: reaction.burst_colors,
|
||||
}))
|
||||
|
||||
@@ -99,8 +99,8 @@ function transformButtonComponent(bot: Bot, payload: Component): DiscordButtonCo
|
||||
disabled: payload.disabled,
|
||||
emoji: payload.emoji
|
||||
? {
|
||||
id: payload.emoji.id ? bot.transformers.reverse.snowflake(payload.emoji.id) : undefined,
|
||||
name: payload.emoji.name,
|
||||
id: payload.emoji.id ? bot.transformers.reverse.snowflake(payload.emoji.id) : null,
|
||||
name: payload.emoji.name ?? null,
|
||||
animated: payload.emoji.animated,
|
||||
}
|
||||
: undefined,
|
||||
@@ -145,8 +145,8 @@ function transformSelectMenuComponent(bot: Bot, payload: Component): DiscordSele
|
||||
description: option.description,
|
||||
emoji: option.emoji
|
||||
? {
|
||||
id: option.emoji.id ? bot.transformers.reverse.snowflake(option.emoji.id) : undefined,
|
||||
name: option.emoji.name,
|
||||
id: option.emoji.id ? bot.transformers.reverse.snowflake(option.emoji.id) : null,
|
||||
name: option.emoji.name ?? null,
|
||||
animated: option.emoji.animated,
|
||||
}
|
||||
: undefined,
|
||||
|
||||
@@ -3,8 +3,8 @@ import type { Emoji, InternalBot } from '../../index.js'
|
||||
|
||||
export function transformEmojiToDiscordEmoji(bot: InternalBot, payload: Emoji): DiscordEmoji {
|
||||
return {
|
||||
id: payload.id ? bot.transformers.reverse.snowflake(payload.id) : undefined,
|
||||
name: payload.name ?? undefined,
|
||||
id: payload.id ? bot.transformers.reverse.snowflake(payload.id) : null,
|
||||
name: payload.name ?? null,
|
||||
roles: payload.roles?.map((id) => bot.transformers.reverse.snowflake(id)),
|
||||
user: payload.user ? bot.transformers.reverse.user(bot, payload.user) : undefined,
|
||||
require_colons: payload.toggles.requireColons,
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
/** Types for: https://discord.com/developers/docs/components/reference */
|
||||
|
||||
import type { ChannelTypes } from './channel.js'
|
||||
import type { DiscordEmoji } from './emoji.js'
|
||||
|
||||
/** https://discord.com/developers/docs/components/reference#component-object-component-types */
|
||||
export enum MessageComponentTypes {
|
||||
@@ -91,14 +92,7 @@ export interface DiscordButtonComponent extends DiscordBaseComponent {
|
||||
* @remarks
|
||||
* A button of style {@link ButtonStyles.Premium | Premium} cannot have an emoji
|
||||
*/
|
||||
emoji?: {
|
||||
/** Emoji id */
|
||||
id?: string
|
||||
/** Emoji name */
|
||||
name?: string
|
||||
/** Whether this emoji is animated */
|
||||
animated?: boolean
|
||||
}
|
||||
emoji?: Pick<DiscordEmoji, 'id' | 'name' | 'animated'>
|
||||
/**
|
||||
* A dev-defined unique string sent on click (max 100 characters).
|
||||
*
|
||||
@@ -193,14 +187,7 @@ export interface DiscordSelectOption {
|
||||
/** An additional description of the option. Maximum 50 characters. */
|
||||
description?: string
|
||||
/** The id, name, and animated properties of an emoji. */
|
||||
emoji?: {
|
||||
/** Emoji id */
|
||||
id?: string
|
||||
/** Emoji name */
|
||||
name?: string
|
||||
/** Whether this emoji is animated */
|
||||
animated?: boolean
|
||||
}
|
||||
emoji?: Pick<DiscordEmoji, 'id' | 'name' | 'animated'>
|
||||
/** Will render this option as already-selected by default. */
|
||||
default?: boolean
|
||||
}
|
||||
|
||||
@@ -4,10 +4,15 @@ import type { DiscordUser } from './user.js'
|
||||
|
||||
/** https://discord.com/developers/docs/resources/emoji#emoji-object-emoji-structure */
|
||||
export interface DiscordEmoji {
|
||||
/** Emoji name (can only be null in reaction emoji objects) */
|
||||
name?: string
|
||||
/** Emoji id */
|
||||
id?: string
|
||||
id: string | null
|
||||
/**
|
||||
* Emoji name
|
||||
*
|
||||
* @remarks
|
||||
* Can be null only in reaction emoji objects
|
||||
*/
|
||||
name: string | null
|
||||
/** Roles allowed to use this emoji */
|
||||
roles?: string[]
|
||||
/** User that created this emoji */
|
||||
|
||||
Reference in New Issue
Block a user