refactor: remove transformers in helpers/emoji

This commit is contained in:
H01001000
2022-12-09 14:12:48 +08:00
parent 9d45f885c4
commit e56bf4e2e6
4 changed files with 134 additions and 20 deletions

View File

@@ -1,7 +1,11 @@
import type { BigString, DiscordEmoji, WithReason } from '@discordeno/types'
import type {
BigString,
DiscordEmoji,
SnakeToCamelCaseNested,
WithReason
} from '@discordeno/types'
import { urlToBase64 } from '@discordeno/utils'
import type { RestManager } from '../../restManager.js'
import type { Emoji } from '../../transformers/emoji.js'
/**
* Creates an emoji in a guild.
@@ -9,7 +13,7 @@ import type { Emoji } from '../../transformers/emoji.js'
* @param bot - The bot instance to use to make the request.
* @param guildId - The ID of the guild in which to create the emoji.
* @param options - The parameters for the creation of the emoji.
* @returns An instance of the created {@link Emoji}.
* @returns An instance of the created {@link DiscordEmoji}.
*
* @remarks
* Requires the `MANAGE_EMOJIS_AND_STICKERS` permission.
@@ -24,7 +28,7 @@ export async function createEmoji (
rest: RestManager,
guildId: BigString,
options: CreateGuildEmoji
): Promise<Emoji> {
): Promise<SnakeToCamelCaseNested<DiscordEmoji>> {
if (options.image && !options.image.startsWith('data:image/')) {
options.image = await urlToBase64(options.image)
}
@@ -41,7 +45,32 @@ export async function createEmoji (
}
)
return rest.transformers.emoji(rest, result)
return {
id: result.id,
name: result.name,
roles: result.roles,
user: result.user && {
id: result.user.id,
username: result.user.username,
discriminator: result.user.discriminator,
avatar: result.user.avatar,
bot: result.user.bot,
system: result.user.system,
mfaEnabled: result.user.mfa_enabled,
banner: result.user.banner,
accentColor: result.user.accent_color,
locale: result.user.locale,
verified: result.user.verified,
email: result.user.email,
flags: result.user.flags,
premiumType: result.user.premium_type,
publicFlags: result.user.public_flags
},
requireColons: result.require_colons,
managed: result.managed,
animated: result.animated,
available: result.animated
}
}
/** https://discord.com/developers/docs/resources/emoji#create-guild-emoji */

View File

@@ -1,6 +1,10 @@
import type { BigString, DiscordEmoji, WithReason } from '@discordeno/types'
import type {
BigString,
DiscordEmoji,
SnakeToCamelCaseNested,
WithReason
} from '@discordeno/types'
import type { RestManager } from '../../restManager.js'
import type { Emoji } from '../../transformers/emoji.js'
/**
* Edits an emoji.
@@ -9,7 +13,7 @@ import type { Emoji } from '../../transformers/emoji.js'
* @param guildId - The ID of the guild in which to edit the emoji.
* @param id - The ID of the emoji to edit.
* @param options - The parameters for the edit of the emoji.
* @returns An instance of the updated {@link Emoji}.
* @returns An instance of the updated {@link DiscordEmoji}.
*
* @remarks
* Requires the `MANAGE_EMOJIS_AND_STICKERS` permission.
@@ -23,7 +27,7 @@ export async function editEmoji (
guildId: BigString,
id: BigString,
options: ModifyGuildEmoji
): Promise<Emoji> {
): Promise<SnakeToCamelCaseNested<DiscordEmoji>> {
const result = await rest.runMethod<DiscordEmoji>(
rest,
'PATCH',
@@ -38,7 +42,32 @@ export async function editEmoji (
}
)
return rest.transformers.emoji(rest, result)
return {
id: result.id,
name: result.name,
roles: result.roles,
user: result.user && {
id: result.user.id,
username: result.user.username,
discriminator: result.user.discriminator,
avatar: result.user.avatar,
bot: result.user.bot,
system: result.user.system,
mfaEnabled: result.user.mfa_enabled,
banner: result.user.banner,
accentColor: result.user.accent_color,
locale: result.user.locale,
verified: result.user.verified,
email: result.user.email,
flags: result.user.flags,
premiumType: result.user.premium_type,
publicFlags: result.user.public_flags
},
requireColons: result.require_colons,
managed: result.managed,
animated: result.animated,
available: result.animated
}
}
/** https://discord.com/developers/docs/resources/emoji#modify-guild-emoji */

View File

@@ -1,6 +1,9 @@
import type { BigString, DiscordEmoji } from '@discordeno/types'
import type {
BigString,
DiscordEmoji,
SnakeToCamelCaseNested
} from '@discordeno/types'
import type { RestManager } from '../../restManager.js'
import type { Emoji } from '../../transformers/emoji.js'
/**
* Gets an emoji by its ID.
@@ -8,7 +11,7 @@ import type { Emoji } from '../../transformers/emoji.js'
* @param bot - The bot instance to use to make the request.
* @param guildId - The ID of the guild from which to get the emoji.
* @param emojiId - The ID of the emoji to get.
* @returns An instance of {@link Emoji}.
* @returns An instance of {@link DiscordEmoji}.
*
* @see {@link https://discord.com/developers/docs/resources/emoji#get-guild-emoji}
*/
@@ -16,12 +19,37 @@ export async function getEmoji (
rest: RestManager,
guildId: BigString,
emojiId: BigString
): Promise<Emoji> {
): Promise<SnakeToCamelCaseNested<DiscordEmoji>> {
const result = await rest.runMethod<DiscordEmoji>(
rest,
'GET',
rest.constants.routes.GUILD_EMOJI(guildId, emojiId)
)
return rest.transformers.emoji(rest, result)
return {
id: result.id,
name: result.name,
roles: result.roles,
user: result.user && {
id: result.user.id,
username: result.user.username,
discriminator: result.user.discriminator,
avatar: result.user.avatar,
bot: result.user.bot,
system: result.user.system,
mfaEnabled: result.user.mfa_enabled,
banner: result.user.banner,
accentColor: result.user.accent_color,
locale: result.user.locale,
verified: result.user.verified,
email: result.user.email,
flags: result.user.flags,
premiumType: result.user.premium_type,
publicFlags: result.user.public_flags
},
requireColons: result.require_colons,
managed: result.managed,
animated: result.animated,
available: result.animated
}
}

View File

@@ -1,21 +1,24 @@
import type { BigString, DiscordEmoji } from '@discordeno/types'
import type {
BigString,
DiscordEmoji,
SnakeToCamelCaseNested
} from '@discordeno/types'
import { Collection } from '@discordeno/utils'
import type { RestManager } from '../../restManager.js'
import type { Emoji } from '../../transformers/emoji.js'
/**
* Gets the list of emojis for a guild.
*
* @param bot - The bot instance to use to make the request.
* @param guildId - The ID of the guild which to get the emojis of.
* @returns A collection of {@link Emoji} objects assorted by emoji ID.
* @returns A collection of {@link DiscordEmoji} objects assorted by emoji ID.
*
* @see {@link https://discord.com/developers/docs/resources/emoji#list-guild-emojis}
*/
export async function getEmojis (
rest: RestManager,
guildId: BigString
): Promise<Collection<bigint, Emoji>> {
): Promise<Collection<string, SnakeToCamelCaseNested<DiscordEmoji>>> {
const results = await rest.runMethod<DiscordEmoji[]>(
rest,
'GET',
@@ -24,7 +27,32 @@ export async function getEmojis (
return new Collection(
results.map((result) => {
const emoji = rest.transformers.emoji(rest, result)
const emoji: SnakeToCamelCaseNested<DiscordEmoji> = {
id: result.id,
name: result.name,
roles: result.roles,
user: result.user && {
id: result.user.id,
username: result.user.username,
discriminator: result.user.discriminator,
avatar: result.user.avatar,
bot: result.user.bot,
system: result.user.system,
mfaEnabled: result.user.mfa_enabled,
banner: result.user.banner,
accentColor: result.user.accent_color,
locale: result.user.locale,
verified: result.user.verified,
email: result.user.email,
flags: result.user.flags,
premiumType: result.user.premium_type,
publicFlags: result.user.public_flags
},
requireColons: result.require_colons,
managed: result.managed,
animated: result.animated,
available: result.animated
}
return [emoji.id!, emoji]
})
)