Add missing cdn functions, dynamic image format
This commit is contained in:
parent
d26059fdc8
commit
88519d9420
4 changed files with 82 additions and 8 deletions
|
@ -3,11 +3,13 @@ import { ImageFormats, ImageSize } from '../types/cdn.ts'
|
|||
/** Function to get Image URL from a resource on Discord CDN */
|
||||
export const ImageURL = (
|
||||
url: string,
|
||||
format: ImageFormats | undefined = 'png',
|
||||
size: ImageSize | undefined = 128
|
||||
format: ImageFormats = 'png',
|
||||
size: ImageSize = 128
|
||||
): string => {
|
||||
size = size === undefined ? 128 : size
|
||||
if (url.includes('a_')) {
|
||||
return `${url}.${format === undefined ? 'gif' : format}?size=${size}`
|
||||
} else return `${url}.${format === 'gif' ? 'png' : format}?size=${size}`
|
||||
return `${url}.${format === 'dynamic' ? 'gif' : format}?size=${size}`
|
||||
} else
|
||||
return `${url}.${
|
||||
format === 'gif' || format === 'dynamic' ? 'png' : format
|
||||
}?size=${size}`
|
||||
}
|
||||
|
|
|
@ -1,8 +1,10 @@
|
|||
import { Client } from '../models/client.ts'
|
||||
import { ImageSize } from '../types/cdn.ts'
|
||||
import { EmojiPayload } from '../types/emoji.ts'
|
||||
import { EMOJI } from '../types/endpoint.ts'
|
||||
import { CUSTOM_EMOJI, EMOJI } from '../types/endpoint.ts'
|
||||
import { Snowflake } from '../utils/snowflake.ts'
|
||||
import { Base } from './base.ts'
|
||||
import { ImageURL } from './cdn.ts'
|
||||
import { Guild } from './guild.ts'
|
||||
import { Role } from './role.ts'
|
||||
import { User } from './user.ts'
|
||||
|
@ -54,6 +56,18 @@ export class Emoji extends Base {
|
|||
this.available = data.available
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets emoji image URL
|
||||
*/
|
||||
emojiImageURL(
|
||||
format: 'png' | 'gif' | 'dynamic' = 'png',
|
||||
size: ImageSize = 512
|
||||
): string | undefined {
|
||||
return this.id != null
|
||||
? `${ImageURL(CUSTOM_EMOJI(this.id), format, size)}`
|
||||
: undefined
|
||||
}
|
||||
|
||||
/** Modify the given emoji. Requires the MANAGE_EMOJIS permission. Returns the updated emoji object on success. Fires a Guild Emojis Update Gateway event. */
|
||||
async edit(data: ModifyGuildEmojiParams): Promise<Emoji> {
|
||||
if (this.id === null) throw new Error('Emoji ID is not valid.')
|
||||
|
|
|
@ -32,9 +32,13 @@ import { User } from './user.ts'
|
|||
import { Application } from './application.ts'
|
||||
import {
|
||||
GUILD_BAN,
|
||||
GUILD_BANNER,
|
||||
GUILD_BANS,
|
||||
GUILD_DISCOVERY_SPLASH,
|
||||
GUILD_ICON,
|
||||
GUILD_INTEGRATIONS,
|
||||
GUILD_PRUNE
|
||||
GUILD_PRUNE,
|
||||
GUILD_SPLASH
|
||||
} from '../types/endpoint.ts'
|
||||
import { GuildVoiceStatesManager } from '../managers/guildVoiceStates.ts'
|
||||
import { RequestMembersOptions } from '../gateway/index.ts'
|
||||
|
@ -42,6 +46,8 @@ import { GuildPresencesManager } from '../managers/presences.ts'
|
|||
import { TemplatePayload } from '../types/template.ts'
|
||||
import { Template } from './template.ts'
|
||||
import { DiscordAPIError } from '../models/rest.ts'
|
||||
import { ImageFormats, ImageSize } from '../types/cdn.ts'
|
||||
import { ImageURL } from './cdn.ts'
|
||||
|
||||
export class GuildBan extends Base {
|
||||
guild: Guild
|
||||
|
@ -258,6 +264,58 @@ export class Guild extends SnowflakeBase {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets guild icon URL
|
||||
*/
|
||||
iconURL(
|
||||
format: ImageFormats = 'png',
|
||||
size: ImageSize = 512
|
||||
): string | undefined {
|
||||
return this.icon != null
|
||||
? `${ImageURL(GUILD_ICON(this.id, this.icon), format, size)}`
|
||||
: undefined
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets guild splash URL
|
||||
*/
|
||||
splashURL(
|
||||
format: ImageFormats = 'png',
|
||||
size: ImageSize = 512
|
||||
): string | undefined {
|
||||
return this.splash != null
|
||||
? `${ImageURL(GUILD_SPLASH(this.id, this.splash), format, size)}`
|
||||
: undefined
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets guild discover splash URL
|
||||
*/
|
||||
discoverSplashURL(
|
||||
format: ImageFormats = 'png',
|
||||
size: ImageSize = 512
|
||||
): string | undefined {
|
||||
return this.discoverySplash != null
|
||||
? `${ImageURL(
|
||||
GUILD_DISCOVERY_SPLASH(this.id, this.discoverySplash),
|
||||
format,
|
||||
size
|
||||
)}`
|
||||
: undefined
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets guild banner URL
|
||||
*/
|
||||
bannerURL(
|
||||
format: ImageFormats = 'png',
|
||||
size: ImageSize = 512
|
||||
): string | undefined {
|
||||
return this.banner != null
|
||||
? `${ImageURL(GUILD_BANNER(this.id, this.banner), format, size)}`
|
||||
: undefined
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets Everyone role of the Guild
|
||||
*/
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
export type ImageSize = 16 | 32 | 64 | 128 | 256 | 512 | 1024 | 2048
|
||||
export type ImageFormats = 'jpg' | 'jpeg' | 'png' | 'webp' | 'gif'
|
||||
export type ImageFormats = 'jpg' | 'jpeg' | 'png' | 'webp' | 'gif' | 'dynamic'
|
||||
|
|
Loading…
Reference in a new issue