feat(structures): add Emoji methods

This commit is contained in:
ayntee 2020-12-25 20:31:53 +04:00
parent 3695b81de6
commit 9c048686c8
2 changed files with 23 additions and 4 deletions

View file

@ -1,15 +1,14 @@
import { Client } from '../models/client.ts' import { Client } from '../models/client.ts'
import { EmojiPayload } from '../types/emoji.ts' import { EmojiPayload } from '../types/emoji.ts'
import { EMOJI } from '../types/endpoint.ts'
import { Base } from './base.ts' import { Base } from './base.ts'
import { Guild } from './guild.ts'
import { User } from './user.ts' import { User } from './user.ts'
export class Emoji extends Base { export class Emoji extends Base {
id: string id: string | null;
name: string name: string
roles?: string[] roles?: string[]
user?: User user?: User
guild?: Guild
requireColons?: boolean requireColons?: boolean
managed?: boolean managed?: boolean
animated?: boolean animated?: boolean
@ -37,6 +36,18 @@ export class Emoji extends Base {
this.available = data.available this.available = data.available
} }
/** 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(guildID: string, data: ModifyGuildEmojiParams) {
const res = await this.client.rest.patch(EMOJI(guildID, this.id!));
return new Emoji(this.client, res);
}
/** Delete the given emoji. Requires the MANAGE_EMOJIS permission. Returns `true` on success. Fires a Guild Emojis Update Gateway event. */
async delete(guildID: string): Promise<boolean> {
await this.client.rest.patch(EMOJI(guildID, this.id!));
return true;
}
readFromData(data: EmojiPayload): void { readFromData(data: EmojiPayload): void {
this.id = data.id ?? this.id this.id = data.id ?? this.id
this.name = data.name ?? this.name this.name = data.name ?? this.name
@ -48,3 +59,11 @@ export class Emoji extends Base {
if (data.user !== undefined) this.user = new User(this.client, data.user) if (data.user !== undefined) this.user = new User(this.client, data.user)
} }
} }
/** https://discord.com/developers/docs/resources/emoji#modify-guild-emoji-json-params */
export interface ModifyGuildEmojiParams {
/** Name of the emoji */
name: string;
/** Roles to which this emoji will be whitelisted */
roles: string[] | null;
}

View file

@ -1,7 +1,7 @@
import { UserPayload } from './user.ts' import { UserPayload } from './user.ts'
export interface EmojiPayload { export interface EmojiPayload {
id: string id: string | null
name: string name: string
roles?: string[] roles?: string[]
user?: UserPayload user?: UserPayload