This commit is contained in:
MARCROCK22 2025-02-14 22:04:35 -04:00
parent a677ec795c
commit 3c4043b2b1
4 changed files with 34 additions and 22 deletions

View File

@ -1,5 +1,10 @@
import { CacheFrom, resolveImage } from '../..';
import { type ApplicationEmojiStructure, type EntitlementStructure, Transformers } from '../../client';
import {
type ApplicationEmojiStructure,
type ApplicationStructure,
type EntitlementStructure,
Transformers,
} from '../../client';
import type {
APIEntitlement,
RESTGetAPIEntitlementsQuery,
@ -23,7 +28,7 @@ export class ApplicationShorter extends BaseShorter {
if (cached?.length) return cached;
}
const data = await this.client.proxy.applications(this.client.applicationId).emojis.get();
this.client.cache.emojis?.set(
await this.client.cache.emojis?.set(
CacheFrom.Rest,
data.items.map(e => [e.id, e]),
this.client.applicationId,
@ -41,7 +46,7 @@ export class ApplicationShorter extends BaseShorter {
if (cached) return cached;
}
const data = await this.client.proxy.applications(this.client.applicationId).emojis(emojiId).get();
this.client.cache.emojis?.set(CacheFrom.Rest, data.id, this.client.applicationId, data);
await this.client.cache.emojis?.set(CacheFrom.Rest, data.id, this.client.applicationId, data);
return Transformers.ApplicationEmoji(this.client, data);
}
@ -51,11 +56,11 @@ export class ApplicationShorter extends BaseShorter {
* @param body.image The [image data string](https://discord.com/developers/docs/reference#image-data) of the emoji.
* @returns The created emoji.
*/
async createEmoji(raw: ApplicationEmojiResolvable) {
async createEmoji(raw: ApplicationEmojiResolvable): Promise<ApplicationEmojiStructure> {
const data = await this.client.proxy
.applications(this.client.applicationId)
.emojis.post({ body: { ...raw, image: await resolveImage(raw.image) } });
this.client.cache.emojis?.set(CacheFrom.Rest, data.id, this.client.applicationId, data);
await this.client.cache.emojis?.set(CacheFrom.Rest, data.id, this.client.applicationId, data);
return Transformers.ApplicationEmoji(this.client, data);
}
@ -65,9 +70,9 @@ export class ApplicationShorter extends BaseShorter {
* @param body.name The new name of the emoji.
* @returns The edited emoji.
*/
async editEmoji(emojiId: string, body: RESTPatchAPIApplicationEmojiJSONBody) {
async editEmoji(emojiId: string, body: RESTPatchAPIApplicationEmojiJSONBody): Promise<ApplicationEmojiStructure> {
const data = await this.client.proxy.applications(this.client.applicationId).emojis(emojiId).patch({ body });
this.client.cache.emojis?.patch(CacheFrom.Rest, emojiId, this.client.applicationId, data);
await this.client.cache.emojis?.patch(CacheFrom.Rest, emojiId, this.client.applicationId, data);
return Transformers.ApplicationEmoji(this.client, data);
}
@ -125,12 +130,12 @@ export class ApplicationShorter extends BaseShorter {
return this.client.proxy.applications(this.client.applicationId).skus.get();
}
async fetch() {
async fetch(): Promise<ApplicationStructure> {
const data = await this.client.proxy.applications('@me').get();
return Transformers.Application(this.client, data);
}
async edit(body: RESTPatchCurrentApplicationJSONBody) {
async edit(body: RESTPatchCurrentApplicationJSONBody): Promise<ApplicationStructure> {
const data = await this.client.proxy.applications('@me').patch({ body });
return Transformers.Application(this.client, data);
}

View File

@ -30,8 +30,8 @@ export class ChannelShorter extends BaseShorter {
async raw(id: string, force?: boolean): Promise<APIChannel> {
if (!force) {
const channel = await this.client.cache.channels?.raw(id);
const overwrites = await this.client.cache.overwrites?.raw(id);
if (channel) {
const overwrites = await this.client.cache.overwrites?.raw(id);
if (overwrites) (channel as APIGuildChannel<ChannelType>).permission_overwrites = overwrites;
return channel as APIChannel;
}

View File

@ -1,4 +1,5 @@
import type { UsingClient } from '..';
import type { ApplicationEmojiStructure, ApplicationStructure } from '../client';
import type { ApplicationEmojiResolvable, ObjectToLower } from '../common';
import type {
APIApplication,
@ -21,14 +22,14 @@ export class Application extends DiscordBase<APIApplication> {
/**
* Fetch the current application.
*/
fetch() {
fetch(): Promise<ApplicationStructure> {
return this.client.applications.fetch();
}
/**
* Edit the current application.
*/
edit(data: RESTPatchCurrentApplicationJSONBody) {
edit(data: RESTPatchCurrentApplicationJSONBody): Promise<ApplicationStructure> {
return this.client.applications.edit(data);
}
@ -43,19 +44,20 @@ export class Application extends DiscordBase<APIApplication> {
/**
* Get an application emoji.
*/
fetch: (id: string) => this.client.applications.getEmoji(id),
fetch: (id: string): Promise<ApplicationEmojiStructure> => this.client.applications.getEmoji(id),
/**
* Get the application emojis.
*/
list: () => this.client.applications.listEmojis(),
list: (): Promise<ApplicationEmojiStructure[]> => this.client.applications.listEmojis(),
/**
* Create an application emoji.
*/
create: (data: ApplicationEmojiResolvable) => this.client.applications.createEmoji(data),
create: (data: ApplicationEmojiResolvable): Promise<ApplicationEmojiStructure> =>
this.client.applications.createEmoji(data),
/**
* Edit an application emoji.
*/
edit: (emojiId: string, body: RESTPatchAPIApplicationEmojiJSONBody) =>
edit: (emojiId: string, body: RESTPatchAPIApplicationEmojiJSONBody): Promise<ApplicationEmojiStructure> =>
this.client.applications.editEmoji(emojiId, body),
};
}

View File

@ -1,6 +1,12 @@
import type { BaseCDNUrlOptions } from '../api';
import type { ReturnCache } from '../cache';
import type { GuildEmojiStructure, GuildStructure } from '../client';
import {
type ApplicationEmojiStructure,
type GuildEmojiStructure,
type GuildStructure,
Transformers,
type UserStructure,
} from '../client';
import type { UsingClient } from '../commands';
import { type EmojiShorter, Formatter, type MethodContext, type ObjectToLower, type When } from '../common';
import type {
@ -9,16 +15,15 @@ import type {
RESTPatchAPIApplicationEmojiJSONBody,
RESTPatchAPIGuildEmojiJSONBody,
} from '../types';
import { User } from './User';
import { DiscordBase } from './extra/DiscordBase';
export interface Emoji extends DiscordBase, ObjectToLower<Omit<APIEmoji, 'id' | 'user'>> {}
export class Emoji<T extends boolean = false> extends DiscordBase {
user: When<T, User>;
user: When<T, UserStructure>;
constructor(client: UsingClient, data: APIEmoji) {
super(client, { ...data, id: data.id! });
this.user = (data.user && new User(client, data.user)) as never;
this.user = (data.user && Transformers.User(client, data.user)) as never;
}
url(options?: BaseCDNUrlOptions) {
@ -93,11 +98,11 @@ export class ApplicationEmoji extends Emoji<true> {
super(client, data);
}
fetch() {
fetch(): Promise<ApplicationEmojiStructure> {
return this.client.applications.getEmoji(this.id);
}
edit(body: RESTPatchAPIApplicationEmojiJSONBody) {
edit(body: RESTPatchAPIApplicationEmojiJSONBody): Promise<ApplicationEmojiStructure> {
return this.client.applications.editEmoji(this.id, body);
}