feat: <resource>.filter types

This commit is contained in:
MARCROCK22 2024-04-20 12:38:25 -04:00
parent 20088e9275
commit 400a8b8c52
12 changed files with 59 additions and 1 deletions

View File

@ -1,3 +1,4 @@
import type { APIChannel } from 'discord-api-types/v10';
import { fakePromise } from '../../common';
import type { AllChannels } from '../../structures';
import channelFrom from '../../structures/channels';
@ -7,7 +8,7 @@ import { GuildRelatedResource } from './default/guild-related';
export class Channels extends GuildRelatedResource {
namespace = 'channel';
parse(data: any, id: string, guild_id: string) {
parse(data: APIChannel, id: string, guild_id: string) {
const { permission_overwrites, ...rest } = super.parse(data, id, guild_id);
return rest;
}

View File

@ -7,6 +7,11 @@ import { GuildRelatedResource } from './default/guild-related';
export class Emojis extends GuildRelatedResource {
namespace = 'emoji';
//@ts-ignore
filter(data: APIEmoji, id: string, guild_id?: string) {
return true;
}
override get(id: string): ReturnCache<GuildEmoji | undefined> {
return fakePromise(super.get(id)).then(rawEmoji =>
rawEmoji ? new GuildEmoji(this.client, rawEmoji, rawEmoji.guild_id) : undefined,

View File

@ -7,6 +7,11 @@ import { BaseResource } from './default/base';
export class Guilds extends BaseResource {
namespace = 'guild';
//@ts-expect-error
filter(data: APIGuild, id: string) {
return true;
}
override get(id: string): ReturnCache<Guild<'cached'> | undefined> {
return fakePromise(super.get(id)).then(guild => (guild ? new Guild<'cached'>(this.client, guild) : undefined));
}

View File

@ -1,3 +1,4 @@
import type { APIGuildMember } from 'discord-api-types/v10';
import type { ReturnCache } from '../..';
import { fakePromise } from '../../common';
import { GuildMember } from '../../structures';
@ -5,6 +6,11 @@ import { GuildBasedResource } from './default/guild-based';
export class Members extends GuildBasedResource {
namespace = 'member';
//@ts-expect-error
filter(data: APIGuildMember, id: string, guild_id: string) {
return true;
}
override parse(data: any, key: string, guild_id: string) {
const { user, ...rest } = super.parse(data, data.user?.id ?? key, guild_id);
return rest;

View File

@ -7,6 +7,11 @@ import { GuildRelatedResource } from './default/guild-related';
export class Overwrites extends GuildRelatedResource {
namespace = 'overwrite';
//@ts-expect-error
filter(data: APIOverwrite[], id: string, guild_id?: string) {
return true;
}
parse(data: any[], _id: string, guild_id: string) {
data.forEach(x => {
x.guild_id = guild_id;

View File

@ -4,6 +4,11 @@ import { GuildRelatedResource } from './default/guild-related';
export class Presences extends GuildRelatedResource<PresenceResource> {
namespace = 'presence';
//@ts-expect-error
filter(data: GatewayPresenceUpdate, id: string, guild_id?: string) {
return true;
}
override parse(data: any, key: string, guild_id: string): PresenceResource {
const { user, ...rest } = super.parse(data, key, guild_id);
rest.user_id ??= key;

View File

@ -1,3 +1,4 @@
import type { APIRole } from 'discord-api-types/v10';
import type { ReturnCache } from '../..';
import { fakePromise } from '../../common';
import { GuildRole } from '../../structures';
@ -6,6 +7,11 @@ import { GuildRelatedResource } from './default/guild-related';
export class Roles extends GuildRelatedResource {
namespace = 'role';
//@ts-expect-error
filter(data: APIRole, id: string, guild_id?: string) {
return true;
}
override get(id: string): ReturnCache<GuildRole | undefined> {
return fakePromise(super.get(id)).then(rawRole =>
rawRole ? new GuildRole(this.client, rawRole, rawRole.guild_id) : undefined,

View File

@ -3,4 +3,9 @@ import { GuildRelatedResource } from './default/guild-related';
export class StageInstances extends GuildRelatedResource<APIStageInstance> {
namespace = 'stage_instance';
//@ts-expect-error
filter(data: APIStageInstance, id: string, guild_id?: string) {
return true;
}
}

View File

@ -7,6 +7,11 @@ import { GuildRelatedResource } from './default/guild-related';
export class Stickers extends GuildRelatedResource {
namespace = 'sticker';
//@ts-expect-error
filter(data: APISticker, id: string, guild_id?: string) {
return true;
}
override get(id: string): ReturnCache<Sticker | undefined> {
return fakePromise(super.get(id)).then(rawSticker =>
rawSticker ? new Sticker(this.client, rawSticker) : undefined,

View File

@ -7,6 +7,11 @@ import { GuildRelatedResource } from './default/guild-related';
export class Threads extends GuildRelatedResource {
namespace = 'thread';
//@ts-expect-error
filter(data: APIThreadChannel, id: string, guild_id?: string) {
return true;
}
override get(id: string): ReturnCache<ThreadChannel | undefined> {
return fakePromise(super.get(id)).then(rawThread =>
rawThread ? new ThreadChannel(this.client, rawThread) : undefined,

View File

@ -7,6 +7,11 @@ import { BaseResource } from './default/base';
export class Users extends BaseResource {
namespace = 'user';
//@ts-expect-error
filter(data: APIUser, id: string) {
return true;
}
override get(id: string): ReturnCache<User | undefined> {
return fakePromise(super.get(id)).then(rawUser => (rawUser ? new User(this.client, rawUser) : undefined));
}

View File

@ -7,6 +7,11 @@ import { GuildBasedResource } from './default/guild-based';
export class VoiceStates extends GuildBasedResource {
namespace = 'voice_state';
//@ts-expect-error
filter(data: GatewayVoiceState, id: string, guild_id: string) {
return true;
}
override parse(data: any, id: string, guild_id: string) {
const { member, ...rest } = super.parse(data, id, guild_id);
return rest;