mirror of
https://github.com/tiramisulabs/seyfert.git
synced 2025-07-01 20:46:08 +00:00
feat: from parameter in resource#filter method (#311)
This commit is contained in:
parent
ded2a32533
commit
db63352dea
83
src/cache/index.ts
vendored
83
src/cache/index.ts
vendored
@ -278,6 +278,7 @@ export class Cache {
|
||||
async bulkPatch(
|
||||
keys: (
|
||||
| readonly [
|
||||
CacheFrom,
|
||||
/* type */
|
||||
NonGuildBased,
|
||||
/* data */
|
||||
@ -286,6 +287,7 @@ export class Cache {
|
||||
string,
|
||||
]
|
||||
| readonly [
|
||||
CacheFrom,
|
||||
/* type */
|
||||
GuildBased | GuildRelated,
|
||||
/* data */
|
||||
@ -299,7 +301,7 @@ export class Cache {
|
||||
) {
|
||||
const allData: [string, any][] = [];
|
||||
const relationshipsData: Record<string, string[]> = {};
|
||||
for (const [type, data, id, guildId] of keys) {
|
||||
for (const [from, type, data, id, guildId] of keys) {
|
||||
switch (type) {
|
||||
case 'roles':
|
||||
case 'stickers':
|
||||
@ -311,7 +313,7 @@ export class Cache {
|
||||
case 'bans':
|
||||
case 'messages':
|
||||
{
|
||||
if (!this[type]?.filter(data, id, guildId)) continue;
|
||||
if (!this[type]?.filter(data, id, guildId, from)) continue;
|
||||
const hashId = this[type]?.hashId(guildId!);
|
||||
if (!hashId) {
|
||||
continue;
|
||||
@ -329,7 +331,7 @@ export class Cache {
|
||||
case 'voiceStates':
|
||||
case 'members':
|
||||
{
|
||||
if (!this[type]?.filter(data, id, guildId)) continue;
|
||||
if (!this[type]?.filter(data, id, guildId, from)) continue;
|
||||
const hashId = this[type]?.hashId(guildId!);
|
||||
if (!hashId) {
|
||||
continue;
|
||||
@ -345,7 +347,7 @@ export class Cache {
|
||||
case 'users':
|
||||
case 'guilds':
|
||||
{
|
||||
if (!this[type]?.filter(data, id)) continue;
|
||||
if (!this[type]?.filter(data, id, from)) continue;
|
||||
const hashId = this[type]?.namespace;
|
||||
if (!hashId) {
|
||||
continue;
|
||||
@ -369,6 +371,7 @@ export class Cache {
|
||||
async bulkSet(
|
||||
keys: (
|
||||
| readonly [
|
||||
CacheFrom,
|
||||
/* type */
|
||||
NonGuildBased,
|
||||
/* data */
|
||||
@ -377,6 +380,7 @@ export class Cache {
|
||||
string,
|
||||
]
|
||||
| readonly [
|
||||
CacheFrom,
|
||||
/* type */
|
||||
GuildBased | GuildRelated,
|
||||
/* data */
|
||||
@ -390,7 +394,7 @@ export class Cache {
|
||||
) {
|
||||
const allData: [string, any][] = [];
|
||||
const relationshipsData: Record<string, string[]> = {};
|
||||
for (const [type, data, id, guildId] of keys) {
|
||||
for (const [from, type, data, id, guildId] of keys) {
|
||||
switch (type) {
|
||||
case 'roles':
|
||||
case 'stickers':
|
||||
@ -401,7 +405,7 @@ export class Cache {
|
||||
case 'overwrites':
|
||||
case 'messages':
|
||||
{
|
||||
if (!this[type]?.filter(data, id, guildId)) continue;
|
||||
if (!this[type]?.filter(data, id, guildId, from)) continue;
|
||||
const hashId = this[type]?.hashId(guildId!);
|
||||
if (!hashId) {
|
||||
continue;
|
||||
@ -420,7 +424,7 @@ export class Cache {
|
||||
case 'voiceStates':
|
||||
case 'members':
|
||||
{
|
||||
if (!this[type]?.filter(data, id, guildId)) continue;
|
||||
if (!this[type]?.filter(data, id, guildId, from)) continue;
|
||||
const hashId = this[type]?.hashId(guildId!);
|
||||
if (!hashId) {
|
||||
continue;
|
||||
@ -436,7 +440,7 @@ export class Cache {
|
||||
case 'users':
|
||||
case 'guilds':
|
||||
{
|
||||
if (!this[type]?.filter(data, id)) continue;
|
||||
if (!this[type]?.filter(data, id, from)) continue;
|
||||
const hashId = this[type]?.namespace;
|
||||
if (!hashId) {
|
||||
continue;
|
||||
@ -464,17 +468,17 @@ export class Cache {
|
||||
protected async onPacketDefault(event: GatewayDispatchPayload) {
|
||||
switch (event.t) {
|
||||
case 'READY':
|
||||
await this.users?.set(event.d.user.id, event.d.user);
|
||||
await this.users?.set(CacheFrom.Gateway, event.d.user.id, event.d.user);
|
||||
break;
|
||||
case 'GUILD_CREATE':
|
||||
case 'GUILD_UPDATE':
|
||||
case 'RAW_GUILD_CREATE':
|
||||
await this.guilds?.patch(event.d.id, { unavailable: false, ...event.d });
|
||||
await this.guilds?.patch(CacheFrom.Gateway, event.d.id, { unavailable: false, ...event.d });
|
||||
break;
|
||||
case 'GUILD_DELETE':
|
||||
case 'RAW_GUILD_DELETE':
|
||||
if (event.d.unavailable) {
|
||||
await this.guilds?.patch(event.d.id, event.d);
|
||||
await this.guilds?.patch(CacheFrom.Gateway, event.d.id, event.d);
|
||||
} else {
|
||||
await this.guilds?.remove(event.d.id);
|
||||
}
|
||||
@ -483,13 +487,18 @@ export class Cache {
|
||||
case 'CHANNEL_UPDATE':
|
||||
{
|
||||
if ('guild_id' in event.d) {
|
||||
await this.channels?.set(event.d.id, event.d.guild_id!, event.d);
|
||||
await this.channels?.set(CacheFrom.Gateway, event.d.id, event.d.guild_id!, event.d);
|
||||
if (event.d.permission_overwrites?.length)
|
||||
await this.overwrites?.set(event.d.id, event.d.guild_id!, event.d.permission_overwrites);
|
||||
await this.overwrites?.set(
|
||||
CacheFrom.Gateway,
|
||||
event.d.id,
|
||||
event.d.guild_id!,
|
||||
event.d.permission_overwrites,
|
||||
);
|
||||
break;
|
||||
}
|
||||
if (event.d.type === ChannelType.DM) {
|
||||
await this.channels?.set(event.d.recipients![0]?.id, '@me', event.d);
|
||||
await this.channels?.set(CacheFrom.Gateway, event.d.recipients![0]?.id, '@me', event.d);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -499,13 +508,13 @@ export class Cache {
|
||||
break;
|
||||
case 'GUILD_ROLE_CREATE':
|
||||
case 'GUILD_ROLE_UPDATE':
|
||||
await this.roles?.set(event.d.role.id, event.d.guild_id, event.d.role);
|
||||
await this.roles?.set(CacheFrom.Gateway, event.d.role.id, event.d.guild_id, event.d.role);
|
||||
break;
|
||||
case 'GUILD_ROLE_DELETE':
|
||||
await this.roles?.remove(event.d.role_id, event.d.guild_id);
|
||||
break;
|
||||
case 'GUILD_BAN_ADD':
|
||||
await this.bans?.set(event.d.user.id, event.d.guild_id, event.d);
|
||||
await this.bans?.set(CacheFrom.Gateway, event.d.user.id, event.d.guild_id, event.d);
|
||||
break;
|
||||
case 'GUILD_BAN_REMOVE':
|
||||
await this.bans?.remove(event.d.user.id, event.d.guild_id);
|
||||
@ -514,6 +523,7 @@ export class Cache {
|
||||
{
|
||||
await this.emojis?.remove(await this.emojis?.keys(event.d.guild_id), event.d.guild_id);
|
||||
await this.emojis?.set(
|
||||
CacheFrom.Gateway,
|
||||
event.d.emojis.map(x => [x.id!, x] as [string, APIEmoji]),
|
||||
event.d.guild_id,
|
||||
);
|
||||
@ -523,6 +533,7 @@ export class Cache {
|
||||
{
|
||||
await this.stickers?.remove(await this.stickers?.keys(event.d.guild_id), event.d.guild_id);
|
||||
await this.stickers?.set(
|
||||
CacheFrom.Gateway,
|
||||
event.d.stickers.map(x => [x.id, x] as [string, APISticker]),
|
||||
event.d.guild_id,
|
||||
);
|
||||
@ -530,7 +541,7 @@ export class Cache {
|
||||
break;
|
||||
case 'GUILD_MEMBER_ADD':
|
||||
case 'GUILD_MEMBER_UPDATE':
|
||||
if (event.d.user) await this.members?.set(event.d.user.id, event.d.guild_id, event.d);
|
||||
if (event.d.user) await this.members?.set(CacheFrom.Gateway, event.d.user.id, event.d.guild_id, event.d);
|
||||
break;
|
||||
case 'GUILD_MEMBER_REMOVE':
|
||||
await this.members?.remove(event.d.user.id, event.d.guild_id);
|
||||
@ -538,12 +549,12 @@ export class Cache {
|
||||
|
||||
case 'PRESENCE_UPDATE':
|
||||
// Should update member data?
|
||||
await this.presences?.set(event.d.user.id, event.d.guild_id, event.d);
|
||||
await this.presences?.set(CacheFrom.Gateway, event.d.user.id, event.d.guild_id, event.d);
|
||||
break;
|
||||
|
||||
case 'THREAD_CREATE':
|
||||
case 'THREAD_UPDATE':
|
||||
if (event.d.guild_id) await this.channels?.set(event.d.id, event.d.guild_id, event.d);
|
||||
if (event.d.guild_id) await this.channels?.set(CacheFrom.Gateway, event.d.id, event.d.guild_id, event.d);
|
||||
break;
|
||||
|
||||
case 'THREAD_DELETE':
|
||||
@ -551,7 +562,7 @@ export class Cache {
|
||||
break;
|
||||
|
||||
case 'USER_UPDATE':
|
||||
await this.users?.set(event.d.id, event.d);
|
||||
await this.users?.set(CacheFrom.Gateway, event.d.id, event.d);
|
||||
break;
|
||||
|
||||
case 'VOICE_STATE_UPDATE':
|
||||
@ -561,7 +572,7 @@ export class Cache {
|
||||
}
|
||||
|
||||
if (event.d.channel_id != null) {
|
||||
await this.voiceStates?.set(event.d.user_id, event.d.guild_id, event.d);
|
||||
await this.voiceStates?.set(CacheFrom.Gateway, event.d.user_id, event.d.guild_id, event.d);
|
||||
} else {
|
||||
await this.voiceStates?.remove(event.d.user_id, event.d.guild_id);
|
||||
}
|
||||
@ -569,7 +580,7 @@ export class Cache {
|
||||
break;
|
||||
case 'STAGE_INSTANCE_CREATE':
|
||||
case 'STAGE_INSTANCE_UPDATE':
|
||||
await this.stageInstances?.set(event.d.id, event.d.guild_id, event.d);
|
||||
await this.stageInstances?.set(CacheFrom.Gateway, event.d.id, event.d.guild_id, event.d);
|
||||
break;
|
||||
case 'STAGE_INSTANCE_DELETE':
|
||||
await this.stageInstances?.remove(event.d.id, event.d.guild_id);
|
||||
@ -578,12 +589,13 @@ export class Cache {
|
||||
{
|
||||
if (this.messages !== undefined) {
|
||||
const data: Parameters<Cache['bulkPatch']>[0] = [
|
||||
['messages', event.d, event.d.id, event.d.channel_id],
|
||||
['users', event.d.author, event.d.author.id],
|
||||
[CacheFrom.Gateway, 'messages', event.d, event.d.id, event.d.channel_id],
|
||||
[CacheFrom.Gateway, 'users', event.d.author, event.d.author.id],
|
||||
];
|
||||
|
||||
if (event.d.guild_id) {
|
||||
if (event.d.member) data.push(['members', event.d.member, event.d.author.id, event.d.guild_id]);
|
||||
if (event.d.member)
|
||||
data.push([CacheFrom.Gateway, 'members', event.d.member, event.d.author.id, event.d.guild_id]);
|
||||
}
|
||||
|
||||
await this.bulkPatch(data);
|
||||
@ -594,12 +606,13 @@ export class Cache {
|
||||
{
|
||||
if (this.messages !== undefined) {
|
||||
const data: Parameters<Cache['bulkPatch']>[0] = [
|
||||
['messages', event.d, event.d.id, event.d.channel_id],
|
||||
['users', event.d.author, event.d.author.id],
|
||||
[CacheFrom.Gateway, 'messages', event.d, event.d.id, event.d.channel_id],
|
||||
[CacheFrom.Gateway, 'users', event.d.author, event.d.author.id],
|
||||
];
|
||||
|
||||
if (event.d.guild_id) {
|
||||
if (event.d.member) data.push(['members', event.d.member, event.d.author.id, event.d.guild_id]);
|
||||
if (event.d.member)
|
||||
data.push([CacheFrom.Gateway, 'members', event.d.member, event.d.author.id, event.d.guild_id]);
|
||||
}
|
||||
|
||||
await this.bulkPatch(data);
|
||||
@ -674,7 +687,7 @@ export class Cache {
|
||||
createUser('marcrock'),
|
||||
];
|
||||
for (const user of users) {
|
||||
await this.users.set(user.id, user);
|
||||
await this.users.set(CacheFrom.Test, user.id, user);
|
||||
}
|
||||
let count = 0;
|
||||
if ((await this.users.values()).length !== users.length)
|
||||
@ -727,7 +740,7 @@ export class Cache {
|
||||
for (const guildId in guildMembers) {
|
||||
const members = guildMembers[guildId];
|
||||
for (const member of members) {
|
||||
await this.members.set(member.user.id, guildId, member);
|
||||
await this.members.set(CacheFrom.Test, member.user.id, guildId, member);
|
||||
}
|
||||
if ((await this.members.values(guildId)).length !== members.length)
|
||||
throw new Error('members.values(guildId) is not of the expected size.');
|
||||
@ -836,7 +849,7 @@ export class Cache {
|
||||
for (const guildId in guildChannels) {
|
||||
const channels = guildChannels[guildId];
|
||||
for (const channel of channels) {
|
||||
await this.channels.set(channel.id, guildId, channel);
|
||||
await this.channels.set(CacheFrom.Test, channel.id, guildId, channel);
|
||||
}
|
||||
if ((await this.channels.values(guildId)).length !== channels.length)
|
||||
throw new Error('channels.values(guildId) is not of the expected size');
|
||||
@ -905,7 +918,7 @@ export class Cache {
|
||||
for (const guildId in guildOverwrites) {
|
||||
const bulkOverwrites = guildOverwrites[guildId];
|
||||
for (const overwrites of bulkOverwrites) {
|
||||
await this.overwrites.set(overwrites[0].channel_id, guildId, overwrites);
|
||||
await this.overwrites.set(CacheFrom.Test, overwrites[0].channel_id, guildId, overwrites);
|
||||
}
|
||||
if ((await this.overwrites.values(guildId)).length !== bulkOverwrites.length)
|
||||
throw new Error('overwrites.values(channelId) is not of the expected size');
|
||||
@ -956,3 +969,9 @@ export class Cache {
|
||||
this.__logger__!.info('the overwrites cache seems to be alright.');
|
||||
}
|
||||
}
|
||||
|
||||
export enum CacheFrom {
|
||||
Gateway = 1,
|
||||
Rest,
|
||||
Test,
|
||||
}
|
||||
|
4
src/cache/resources/bans.ts
vendored
4
src/cache/resources/bans.ts
vendored
@ -1,4 +1,4 @@
|
||||
import type { ReturnCache } from '../..';
|
||||
import type { CacheFrom, ReturnCache } from '../..';
|
||||
import { type GuildBanStructure, Transformers } from '../../client/transformers';
|
||||
import { fakePromise } from '../../common';
|
||||
import type { APIBan, GatewayGuildBanModifyDispatchData } from '../../types';
|
||||
@ -7,7 +7,7 @@ export class Bans extends GuildBasedResource<any, GatewayGuildBanModifyDispatchD
|
||||
namespace = 'ban';
|
||||
|
||||
//@ts-expect-error
|
||||
filter(data: APIBan, id: string, guild_id: string) {
|
||||
filter(data: APIBan, id: string, guild_id: string, from: CacheFrom) {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
4
src/cache/resources/channels.ts
vendored
4
src/cache/resources/channels.ts
vendored
@ -1,14 +1,14 @@
|
||||
import { fakePromise } from '../../common';
|
||||
import { type AllChannels, channelFrom } from '../../structures';
|
||||
import type { APIChannel } from '../../types';
|
||||
import type { ReturnCache } from '../index';
|
||||
import type { CacheFrom, ReturnCache } from '../index';
|
||||
import { GuildRelatedResource } from './default/guild-related';
|
||||
|
||||
export class Channels extends GuildRelatedResource<any, APIChannel> {
|
||||
namespace = 'channel';
|
||||
|
||||
//@ts-expect-error
|
||||
filter(data: APIChannel, id: string, guild_id: string) {
|
||||
filter(data: APIChannel, id: string, guild_id: string, from: CacheFrom) {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
16
src/cache/resources/default/base.ts
vendored
16
src/cache/resources/default/base.ts
vendored
@ -1,7 +1,7 @@
|
||||
import type { UsingClient } from '../../../commands';
|
||||
import { fakePromise } from '../../../common';
|
||||
import type { GatewayIntentBits } from '../../../types';
|
||||
import type { Cache, ReturnCache } from '../../index';
|
||||
import type { Cache, CacheFrom, ReturnCache } from '../../index';
|
||||
|
||||
export class BaseResource<T = any, S = any> {
|
||||
namespace = 'base';
|
||||
@ -12,7 +12,7 @@ export class BaseResource<T = any, S = any> {
|
||||
) {}
|
||||
|
||||
//@ts-expect-error
|
||||
filter(data: any, id: string) {
|
||||
filter(data: any, id: string, from: CacheFrom) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -27,9 +27,9 @@ export class BaseResource<T = any, S = any> {
|
||||
return;
|
||||
}
|
||||
|
||||
setIfNI(intent: keyof typeof GatewayIntentBits, id: string, data: S) {
|
||||
setIfNI(from: CacheFrom, intent: keyof typeof GatewayIntentBits, id: string, data: S) {
|
||||
if (!this.cache.hasIntent(intent)) {
|
||||
return this.set(id, data);
|
||||
return this.set(from, id, data);
|
||||
}
|
||||
}
|
||||
|
||||
@ -41,13 +41,13 @@ export class BaseResource<T = any, S = any> {
|
||||
return fakePromise(this.adapter.bulkGet(ids.map(id => this.hashId(id)))).then(x => x.filter(y => y));
|
||||
}
|
||||
|
||||
set(id: string, data: S) {
|
||||
if (!this.filter(data, id)) return;
|
||||
set(from: CacheFrom, id: string, data: S) {
|
||||
if (!this.filter(data, id, from)) return;
|
||||
return fakePromise(this.addToRelationship(id)).then(() => this.adapter.set(this.hashId(id), data));
|
||||
}
|
||||
|
||||
patch(id: string, data: S) {
|
||||
if (!this.filter(data, id)) return;
|
||||
patch(from: CacheFrom, id: string, data: S) {
|
||||
if (!this.filter(data, id, from)) return;
|
||||
return fakePromise(this.addToRelationship(id)).then(() => this.adapter.patch(this.hashId(id), data));
|
||||
}
|
||||
|
||||
|
29
src/cache/resources/default/guild-based.ts
vendored
29
src/cache/resources/default/guild-based.ts
vendored
@ -1,7 +1,7 @@
|
||||
import type { UsingClient } from '../../../commands';
|
||||
import { fakePromise } from '../../../common';
|
||||
import type { GatewayIntentBits } from '../../../types';
|
||||
import type { Cache, ReturnCache } from '../../index';
|
||||
import type { Cache, CacheFrom, ReturnCache } from '../../index';
|
||||
|
||||
export class GuildBasedResource<T = any, S = any> {
|
||||
namespace = 'base';
|
||||
@ -12,7 +12,7 @@ export class GuildBasedResource<T = any, S = any> {
|
||||
) {}
|
||||
|
||||
//@ts-expect-error
|
||||
filter(data: any, id: string, guild_id: string) {
|
||||
filter(data: any, id: string, guild_id: string, from: CacheFrom) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -33,9 +33,9 @@ export class GuildBasedResource<T = any, S = any> {
|
||||
return;
|
||||
}
|
||||
|
||||
setIfNI(intent: keyof typeof GatewayIntentBits, id: string, guildId: string, data: S) {
|
||||
setIfNI(from: CacheFrom, intent: keyof typeof GatewayIntentBits, id: string, guildId: string, data: S) {
|
||||
if (!this.cache.hasIntent(intent)) {
|
||||
return this.set(id, guildId, data);
|
||||
return this.set(from, id, guildId, data);
|
||||
}
|
||||
}
|
||||
|
||||
@ -47,11 +47,11 @@ export class GuildBasedResource<T = any, S = any> {
|
||||
return fakePromise(this.adapter.bulkGet(ids.map(id => this.hashGuildId(guild, id)))).then(x => x.filter(y => y));
|
||||
}
|
||||
|
||||
set(__keys: string, guild: string, data: S): ReturnCache<void>;
|
||||
set(__keys: [string, S][], guild: string): ReturnCache<void>;
|
||||
set(__keys: string | [string, S][], guild: string, data?: S): ReturnCache<void> {
|
||||
set(from: CacheFrom, __keys: string, guild: string, data: S): ReturnCache<void>;
|
||||
set(from: CacheFrom, __keys: [string, S][], guild: string): ReturnCache<void>;
|
||||
set(from: CacheFrom, __keys: string | [string, S][], guild: string, data?: S): ReturnCache<void> {
|
||||
const keys = (Array.isArray(__keys) ? __keys : [[__keys, data]]).filter(x =>
|
||||
this.filter(x[1], x[0] as string, guild),
|
||||
this.filter(x[1], x[0] as string, guild, from),
|
||||
) as [string, any][];
|
||||
|
||||
return fakePromise(
|
||||
@ -68,13 +68,12 @@ export class GuildBasedResource<T = any, S = any> {
|
||||
) as void;
|
||||
}
|
||||
|
||||
patch(__keys: string, guild: string, data: S): ReturnCache<void>;
|
||||
patch(__keys: [string, any][], guild: string): ReturnCache<void>;
|
||||
patch(__keys: string | [string, any][], guild: string, data?: any): ReturnCache<void> {
|
||||
const keys = (Array.isArray(__keys) ? __keys : [[__keys, data]]).filter(x => this.filter(x[1], x[0], guild)) as [
|
||||
string,
|
||||
any,
|
||||
][];
|
||||
patch(from: CacheFrom, __keys: string, guild: string, data: S): ReturnCache<void>;
|
||||
patch(from: CacheFrom, __keys: [string, any][], guild: string): ReturnCache<void>;
|
||||
patch(from: CacheFrom, __keys: string | [string, any][], guild: string, data?: any): ReturnCache<void> {
|
||||
const keys = (Array.isArray(__keys) ? __keys : [[__keys, data]]).filter(x =>
|
||||
this.filter(x[1], x[0], guild, from),
|
||||
) as [string, any][];
|
||||
|
||||
return fakePromise(this.adapter.bulkGet(keys.map(([key]) => this.hashGuildId(guild, key)))).then(oldDatas =>
|
||||
fakePromise(
|
||||
|
29
src/cache/resources/default/guild-related.ts
vendored
29
src/cache/resources/default/guild-related.ts
vendored
@ -1,7 +1,7 @@
|
||||
import type { UsingClient } from '../../../commands';
|
||||
import { fakePromise } from '../../../common';
|
||||
import type { GatewayIntentBits } from '../../../types';
|
||||
import type { Cache, ReturnCache } from '../../index';
|
||||
import type { Cache, CacheFrom, ReturnCache } from '../../index';
|
||||
|
||||
export class GuildRelatedResource<T = any, S = any> {
|
||||
namespace = 'base';
|
||||
@ -12,7 +12,7 @@ export class GuildRelatedResource<T = any, S = any> {
|
||||
) {}
|
||||
|
||||
//@ts-expect-error
|
||||
filter(data: any, id: string, guild_id?: string) {
|
||||
filter(data: any, id: string, guild_id: string, from: CacheFrom) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -32,9 +32,9 @@ export class GuildRelatedResource<T = any, S = any> {
|
||||
}
|
||||
}
|
||||
|
||||
setIfNI(intent: keyof typeof GatewayIntentBits, id: string, guildId: string, data: S) {
|
||||
setIfNI(from: CacheFrom, intent: keyof typeof GatewayIntentBits, id: string, guildId: string, data: S) {
|
||||
if (!this.cache.hasIntent(intent)) {
|
||||
return this.set(id, guildId, data);
|
||||
return this.set(from, id, guildId, data);
|
||||
}
|
||||
}
|
||||
|
||||
@ -46,11 +46,11 @@ export class GuildRelatedResource<T = any, S = any> {
|
||||
return fakePromise(this.adapter.bulkGet(ids.map(x => this.hashId(x)))).then(x => x.filter(y => y));
|
||||
}
|
||||
|
||||
set(__keys: string, guild: string, data: S): ReturnCache<void>;
|
||||
set(__keys: [string, S][], guild: string): ReturnCache<void>;
|
||||
set(__keys: string | [string, S][], guild: string, data?: S): ReturnCache<void> {
|
||||
set(from: CacheFrom, __keys: string, guild: string, data: S): ReturnCache<void>;
|
||||
set(from: CacheFrom, __keys: [string, S][], guild: string): ReturnCache<void>;
|
||||
set(from: CacheFrom, __keys: string | [string, S][], guild: string, data?: S): ReturnCache<void> {
|
||||
const keys = (Array.isArray(__keys) ? __keys : [[__keys, data]]).filter(x =>
|
||||
this.filter(x[1], x[0] as string, guild),
|
||||
this.filter(x[1], x[0] as string, guild, from),
|
||||
) as [string, any][];
|
||||
|
||||
return fakePromise(
|
||||
@ -68,13 +68,12 @@ export class GuildRelatedResource<T = any, S = any> {
|
||||
);
|
||||
}
|
||||
|
||||
patch(__keys: string, guild: string, data?: any): ReturnCache<void>;
|
||||
patch(__keys: [string, any][], guild: string): ReturnCache<void>;
|
||||
patch(__keys: string | [string, any][], guild: string, data?: any): ReturnCache<void> {
|
||||
const keys = (Array.isArray(__keys) ? __keys : [[__keys, data]]).filter(x => this.filter(x[1], x[0], guild)) as [
|
||||
string,
|
||||
any,
|
||||
][];
|
||||
patch(from: CacheFrom, __keys: string, guild: string, data?: any): ReturnCache<void>;
|
||||
patch(from: CacheFrom, __keys: [string, any][], guild: string): ReturnCache<void>;
|
||||
patch(from: CacheFrom, __keys: string | [string, any][], guild: string, data?: any): ReturnCache<void> {
|
||||
const keys = (Array.isArray(__keys) ? __keys : [[__keys, data]]).filter(x =>
|
||||
this.filter(x[1], x[0], guild, from),
|
||||
) as [string, any][];
|
||||
|
||||
return fakePromise(
|
||||
this.addToRelationship(
|
||||
|
4
src/cache/resources/emojis.ts
vendored
4
src/cache/resources/emojis.ts
vendored
@ -1,4 +1,4 @@
|
||||
import type { ReturnCache } from '../..';
|
||||
import type { CacheFrom, ReturnCache } from '../..';
|
||||
import { type GuildEmojiStructure, Transformers } from '../../client/transformers';
|
||||
import { fakePromise } from '../../common';
|
||||
import type { APIEmoji } from '../../types';
|
||||
@ -8,7 +8,7 @@ export class Emojis extends GuildRelatedResource<any, APIEmoji> {
|
||||
namespace = 'emoji';
|
||||
|
||||
//@ts-expect-error
|
||||
filter(data: APIEmoji, id: string, guild_id?: string) {
|
||||
filter(data: APIEmoji, id: string, guild_id: string, from: CacheFrom) {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
56
src/cache/resources/guilds.ts
vendored
56
src/cache/resources/guilds.ts
vendored
@ -1,4 +1,4 @@
|
||||
import type { Cache, ReturnCache } from '..';
|
||||
import type { Cache, CacheFrom, ReturnCache } from '..';
|
||||
import { type GuildStructure, Transformers } from '../../client/transformers';
|
||||
import { fakePromise } from '../../common';
|
||||
import type { APIGuild, GatewayGuildCreateDispatchData } from '../../types';
|
||||
@ -8,7 +8,7 @@ export class Guilds extends BaseResource<any, APIGuild | GatewayGuildCreateDispa
|
||||
namespace = 'guild';
|
||||
|
||||
//@ts-expect-error
|
||||
filter(data: APIGuild, id: string) {
|
||||
filter(data: APIGuild, id: string, from: CacheFrom) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -86,49 +86,49 @@ export class Guilds extends BaseResource<any, APIGuild | GatewayGuildCreateDispa
|
||||
await super.remove(id);
|
||||
}
|
||||
|
||||
override async set(id: string, data: any) {
|
||||
override async set(from: CacheFrom, id: string, data: any) {
|
||||
const bulkData: Parameters<Cache['bulkSet']>[0] = [];
|
||||
|
||||
for (const member of data.members ?? []) {
|
||||
if (!member.user?.id) {
|
||||
continue;
|
||||
}
|
||||
bulkData.push(['members', member, member.user.id, id]);
|
||||
bulkData.push(['users', member.user, member.user.id]);
|
||||
bulkData.push([from, 'members', member, member.user.id, id]);
|
||||
bulkData.push([from, 'users', member.user, member.user.id]);
|
||||
}
|
||||
|
||||
for (const role of data.roles ?? []) {
|
||||
bulkData.push(['roles', role, role.id, id]);
|
||||
bulkData.push([from, 'roles', role, role.id, id]);
|
||||
}
|
||||
|
||||
for (const channel of data.channels ?? []) {
|
||||
bulkData.push(['channels', channel, channel.id, id]);
|
||||
bulkData.push([from, 'channels', channel, channel.id, id]);
|
||||
if (channel.permission_overwrites?.length)
|
||||
bulkData.push(['overwrites', channel.permission_overwrites, channel.id, id]);
|
||||
bulkData.push([from, 'overwrites', channel.permission_overwrites, channel.id, id]);
|
||||
}
|
||||
|
||||
for (const thread of data.threads ?? []) {
|
||||
bulkData.push(['channels', thread, thread.id, id]);
|
||||
bulkData.push([from, 'channels', thread, thread.id, id]);
|
||||
}
|
||||
|
||||
for (const emoji of data.emojis ?? []) {
|
||||
bulkData.push(['emojis', emoji, emoji.id, id]);
|
||||
bulkData.push([from, 'emojis', emoji, emoji.id, id]);
|
||||
}
|
||||
|
||||
for (const sticker of data.stickers ?? []) {
|
||||
bulkData.push(['stickers', sticker, sticker.id, id]);
|
||||
bulkData.push([from, 'stickers', sticker, sticker.id, id]);
|
||||
}
|
||||
|
||||
for (const voiceState of data.voice_states ?? []) {
|
||||
bulkData.push(['voiceStates', voiceState, voiceState.user_id, id]);
|
||||
bulkData.push([from, 'voiceStates', voiceState, voiceState.user_id, id]);
|
||||
}
|
||||
|
||||
for (const presence of data.presences ?? []) {
|
||||
bulkData.push(['presences', presence, presence.user.id, id]);
|
||||
bulkData.push([from, 'presences', presence, presence.user.id, id]);
|
||||
}
|
||||
|
||||
for (const instance of data.stage_instances ?? []) {
|
||||
bulkData.push(['stageInstances', instance, instance.id, id]);
|
||||
bulkData.push([from, 'stageInstances', instance, instance.id, id]);
|
||||
}
|
||||
|
||||
const {
|
||||
@ -146,55 +146,55 @@ export class Guilds extends BaseResource<any, APIGuild | GatewayGuildCreateDispa
|
||||
...guild
|
||||
} = data;
|
||||
|
||||
bulkData.push(['guilds', guild, id]);
|
||||
bulkData.push([from, 'guilds', guild, id]);
|
||||
|
||||
await this.cache.bulkSet(bulkData);
|
||||
}
|
||||
|
||||
override async patch(id: string, data: any) {
|
||||
override async patch(from: CacheFrom, id: string, data: any) {
|
||||
const bulkData: Parameters<Cache['bulkPatch']>[0] = [];
|
||||
|
||||
for (const member of data.members ?? []) {
|
||||
if (!member.user?.id) {
|
||||
continue;
|
||||
}
|
||||
bulkData.push(['members', member, member.user.id, id]);
|
||||
bulkData.push(['users', member.user, member.user.id]);
|
||||
bulkData.push([from, 'members', member, member.user.id, id]);
|
||||
bulkData.push([from, 'users', member.user, member.user.id]);
|
||||
}
|
||||
|
||||
for (const role of data.roles ?? []) {
|
||||
bulkData.push(['roles', role, role.id, id]);
|
||||
bulkData.push([from, 'roles', role, role.id, id]);
|
||||
}
|
||||
|
||||
for (const channel of data.channels ?? []) {
|
||||
bulkData.push(['channels', channel, channel.id, id]);
|
||||
bulkData.push([from, 'channels', channel, channel.id, id]);
|
||||
if (channel.permission_overwrites?.length) {
|
||||
bulkData.push(['overwrites', channel.permission_overwrites, channel.id, id]);
|
||||
bulkData.push([from, 'overwrites', channel.permission_overwrites, channel.id, id]);
|
||||
}
|
||||
}
|
||||
|
||||
for (const thread of data.threads ?? []) {
|
||||
bulkData.push(['channels', thread, thread.id, id]);
|
||||
bulkData.push([from, 'channels', thread, thread.id, id]);
|
||||
}
|
||||
|
||||
for (const emoji of data.emojis ?? []) {
|
||||
bulkData.push(['emojis', emoji, emoji.id, id]);
|
||||
bulkData.push([from, 'emojis', emoji, emoji.id, id]);
|
||||
}
|
||||
|
||||
for (const sticker of data.stickers ?? []) {
|
||||
bulkData.push(['stickers', sticker, sticker.id, id]);
|
||||
bulkData.push([from, 'stickers', sticker, sticker.id, id]);
|
||||
}
|
||||
|
||||
for (const voiceState of data.voice_states ?? []) {
|
||||
bulkData.push(['voiceStates', voiceState, voiceState.user_id, id]);
|
||||
bulkData.push([from, 'voiceStates', voiceState, voiceState.user_id, id]);
|
||||
}
|
||||
|
||||
for (const presence of data.presences ?? []) {
|
||||
bulkData.push(['presences', presence, presence.user.id, id]);
|
||||
bulkData.push([from, 'presences', presence, presence.user.id, id]);
|
||||
}
|
||||
|
||||
for (const instance of data.stage_instances ?? []) {
|
||||
bulkData.push(['stageInstances', instance, instance.id, id]);
|
||||
bulkData.push([from, 'stageInstances', instance, instance.id, id]);
|
||||
}
|
||||
|
||||
const {
|
||||
@ -212,7 +212,7 @@ export class Guilds extends BaseResource<any, APIGuild | GatewayGuildCreateDispa
|
||||
...guild
|
||||
} = data;
|
||||
|
||||
bulkData.push(['guilds', guild, id]);
|
||||
bulkData.push([from, 'guilds', guild, id]);
|
||||
|
||||
await this.cache.bulkPatch(bulkData);
|
||||
}
|
||||
|
16
src/cache/resources/members.ts
vendored
16
src/cache/resources/members.ts
vendored
@ -1,4 +1,4 @@
|
||||
import type { ReturnCache } from '../..';
|
||||
import type { CacheFrom, ReturnCache } from '../..';
|
||||
import { type GuildMemberStructure, Transformers } from '../../client/transformers';
|
||||
import { fakePromise } from '../../common';
|
||||
import type { APIGuildMember } from '../../types';
|
||||
@ -7,7 +7,7 @@ export class Members extends GuildBasedResource<any, APIGuildMember> {
|
||||
namespace = 'member';
|
||||
|
||||
//@ts-expect-error
|
||||
filter(data: APIGuildMember, id: string, guild_id: string) {
|
||||
filter(data: APIGuildMember, id: string, guild_id: string, from: CacheFrom) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -71,16 +71,16 @@ export class Members extends GuildBasedResource<any, APIGuildMember> {
|
||||
return super.values(guild);
|
||||
}
|
||||
|
||||
override async set(memberId: string, guildId: string, data: any): Promise<void>;
|
||||
override async set(memberId_dataArray: [string, any][], guildId: string): Promise<void>;
|
||||
override async set(__keys: string | [string, any][], guild: string, data?: any) {
|
||||
override async set(from: CacheFrom, memberId: string, guildId: string, data: any): Promise<void>;
|
||||
override async set(from: CacheFrom, memberId_dataArray: [string, any][], guildId: string): Promise<void>;
|
||||
override async set(from: CacheFrom, __keys: string | [string, any][], guild: string, data?: any) {
|
||||
const keys: [string, any][] = Array.isArray(__keys) ? __keys : [[__keys, data]];
|
||||
const bulkData: (['members', any, string, string] | ['users', any, string])[] = [];
|
||||
const bulkData: ([typeof from, 'members', any, string, string] | [typeof from, 'users', any, string])[] = [];
|
||||
|
||||
for (const [id, value] of keys) {
|
||||
if (value.user) {
|
||||
bulkData.push(['members', value, id, guild]);
|
||||
bulkData.push(['users', value.user, id]);
|
||||
bulkData.push([from, 'members', value, id, guild]);
|
||||
bulkData.push([from, 'users', value.user, id]);
|
||||
}
|
||||
}
|
||||
|
||||
|
4
src/cache/resources/messages.ts
vendored
4
src/cache/resources/messages.ts
vendored
@ -1,4 +1,4 @@
|
||||
import type { MessageData, ReturnCache } from '../..';
|
||||
import type { CacheFrom, MessageData, ReturnCache } from '../..';
|
||||
import { type MessageStructure, Transformers } from '../../client/transformers';
|
||||
import { fakePromise } from '../../common';
|
||||
import type { APIMessage, APIUser } from '../../types';
|
||||
@ -8,7 +8,7 @@ export class Messages extends GuildRelatedResource<any, APIMessage> {
|
||||
namespace = 'message';
|
||||
|
||||
//@ts-expect-error
|
||||
filter(data: MessageData, id: string, channel_id?: string) {
|
||||
filter(data: MessageData, id: string, channel_id: string, from: CacheFrom) {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
4
src/cache/resources/overwrites.ts
vendored
4
src/cache/resources/overwrites.ts
vendored
@ -1,4 +1,4 @@
|
||||
import type { ReturnCache } from '../..';
|
||||
import type { CacheFrom, ReturnCache } from '../..';
|
||||
import { fakePromise } from '../../common/it/utils';
|
||||
import { PermissionsBitField } from '../../structures/extra/Permissions';
|
||||
import type { APIOverwrite } from '../../types';
|
||||
@ -8,7 +8,7 @@ export class Overwrites extends GuildRelatedResource<any, APIOverwrite[]> {
|
||||
namespace = 'overwrite';
|
||||
|
||||
//@ts-expect-error
|
||||
filter(data: APIOverwrite[], id: string, guild_id?: string) {
|
||||
filter(data: APIOverwrite[], id: string, guild_id: string, from: CacheFrom) {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
3
src/cache/resources/presence.ts
vendored
3
src/cache/resources/presence.ts
vendored
@ -1,3 +1,4 @@
|
||||
import type { CacheFrom } from '../..';
|
||||
import type { GatewayPresenceUpdate } from '../../types';
|
||||
import { GuildRelatedResource } from './default/guild-related';
|
||||
|
||||
@ -5,7 +6,7 @@ export class Presences extends GuildRelatedResource<PresenceResource, GatewayPre
|
||||
namespace = 'presence';
|
||||
|
||||
//@ts-expect-error
|
||||
filter(data: GatewayPresenceUpdate, id: string, guild_id?: string) {
|
||||
filter(data: GatewayPresenceUpdate, id: string, guild_id: string, from: CacheFrom) {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
4
src/cache/resources/roles.ts
vendored
4
src/cache/resources/roles.ts
vendored
@ -1,4 +1,4 @@
|
||||
import type { ReturnCache } from '../..';
|
||||
import type { CacheFrom, ReturnCache } from '../..';
|
||||
import { type GuildRoleStructure, Transformers } from '../../client/transformers';
|
||||
import { fakePromise } from '../../common';
|
||||
import type { APIRole } from '../../types';
|
||||
@ -8,7 +8,7 @@ export class Roles extends GuildRelatedResource<any, APIRole> {
|
||||
namespace = 'role';
|
||||
|
||||
//@ts-expect-error
|
||||
filter(data: APIRole, id: string, guild_id?: string) {
|
||||
filter(data: APIRole, id: string, guild_id: string, from: CacheFrom) {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
3
src/cache/resources/stage-instances.ts
vendored
3
src/cache/resources/stage-instances.ts
vendored
@ -1,3 +1,4 @@
|
||||
import type { CacheFrom } from '../..';
|
||||
import type { APIStageInstance } from '../../types';
|
||||
import { GuildRelatedResource } from './default/guild-related';
|
||||
|
||||
@ -5,7 +6,7 @@ export class StageInstances extends GuildRelatedResource<APIStageInstance, APISt
|
||||
namespace = 'stage_instance';
|
||||
|
||||
//@ts-expect-error
|
||||
filter(data: APIStageInstance, id: string, guild_id?: string) {
|
||||
filter(data: APIStageInstance, id: string, guild_id: string, from: CacheFrom) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
4
src/cache/resources/stickers.ts
vendored
4
src/cache/resources/stickers.ts
vendored
@ -1,4 +1,4 @@
|
||||
import type { ReturnCache } from '../..';
|
||||
import type { CacheFrom, ReturnCache } from '../..';
|
||||
import { type StickerStructure, Transformers } from '../../client/transformers';
|
||||
import { fakePromise } from '../../common';
|
||||
import type { APISticker } from '../../types';
|
||||
@ -8,7 +8,7 @@ export class Stickers extends GuildRelatedResource<any, APISticker> {
|
||||
namespace = 'sticker';
|
||||
|
||||
//@ts-expect-error
|
||||
filter(data: APISticker, id: string, guild_id?: string) {
|
||||
filter(data: APISticker, id: string, guild_id: string, from: CacheFrom) {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
4
src/cache/resources/users.ts
vendored
4
src/cache/resources/users.ts
vendored
@ -1,4 +1,4 @@
|
||||
import type { ReturnCache } from '../..';
|
||||
import type { CacheFrom, ReturnCache } from '../..';
|
||||
import { Transformers, type UserStructure } from '../../client/transformers';
|
||||
import { fakePromise } from '../../common';
|
||||
import type { APIUser } from '../../types';
|
||||
@ -8,7 +8,7 @@ export class Users extends BaseResource<any, APIUser> {
|
||||
namespace = 'user';
|
||||
|
||||
//@ts-expect-error
|
||||
filter(data: APIUser, id: string) {
|
||||
filter(data: APIUser, id: string, from: CacheFrom) {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
4
src/cache/resources/voice-states.ts
vendored
4
src/cache/resources/voice-states.ts
vendored
@ -1,4 +1,4 @@
|
||||
import type { ReturnCache } from '../..';
|
||||
import type { CacheFrom, ReturnCache } from '../..';
|
||||
import { Transformers, type VoiceStateStructure } from '../../client/transformers';
|
||||
import { fakePromise } from '../../common';
|
||||
import type { APIVoiceState } from '../../types';
|
||||
@ -8,7 +8,7 @@ export class VoiceStates extends GuildBasedResource<any, APIVoiceState> {
|
||||
namespace = 'voice_state';
|
||||
|
||||
//@ts-expect-error
|
||||
filter(data: APIVoiceState, id: string, guild_id: string) {
|
||||
filter(data: APIVoiceState, id: string, guild_id: string, from: CacheFrom) {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -1,3 +1,4 @@
|
||||
import { CacheFrom } from '../../cache';
|
||||
import { type GuildBanStructure, Transformers } from '../../client/transformers';
|
||||
import type {
|
||||
APIBan,
|
||||
@ -57,7 +58,7 @@ export class BanShorter extends BaseShorter {
|
||||
}
|
||||
|
||||
ban = await this.client.proxy.guilds(guildId).bans(userId).get();
|
||||
await this.client.cache.members?.set(ban.user.id, guildId, ban);
|
||||
await this.client.cache.members?.set(CacheFrom.Rest, ban.user.id, guildId, ban);
|
||||
return Transformers.GuildBan(this.client, ban, guildId);
|
||||
}
|
||||
|
||||
@ -78,6 +79,7 @@ export class BanShorter extends BaseShorter {
|
||||
query,
|
||||
});
|
||||
await this.client.cache.bans?.set(
|
||||
CacheFrom.Rest,
|
||||
bans.map<[string, APIBan]>(x => [x.user.id, x]),
|
||||
guildId,
|
||||
);
|
||||
|
@ -1,3 +1,4 @@
|
||||
import { CacheFrom } from '../../cache';
|
||||
import type { Channels } from '../../cache/resources/channels';
|
||||
import type { Overwrites } from '../../cache/resources/overwrites';
|
||||
import { type MessageStructure, type ThreadChannelStructure, Transformers } from '../../client/transformers';
|
||||
@ -40,6 +41,7 @@ export class ChannelShorter extends BaseShorter {
|
||||
|
||||
channel = await this.client.proxy.channels(id).get();
|
||||
await this.client.cache.channels?.patch(
|
||||
CacheFrom.Rest,
|
||||
id,
|
||||
'guild_id' in channel && channel.guild_id ? channel.guild_id : '@me',
|
||||
channel,
|
||||
@ -74,9 +76,16 @@ export class ChannelShorter extends BaseShorter {
|
||||
): Promise<AllChannels> {
|
||||
const options = MergeOptions<MakeRequired<ChannelShorterOptionalParams, 'guildId'>>({ guildId: '@me' }, optional);
|
||||
const res = await this.client.proxy.channels(id).patch({ body, reason: options.reason });
|
||||
await this.client.cache.channels?.setIfNI(BaseChannel.__intent__(options.guildId), res.id, options.guildId, res);
|
||||
await this.client.cache.channels?.setIfNI(
|
||||
CacheFrom.Rest,
|
||||
BaseChannel.__intent__(options.guildId),
|
||||
res.id,
|
||||
options.guildId,
|
||||
res,
|
||||
);
|
||||
if (body.permission_overwrites && 'permission_overwrites' in res && res.permission_overwrites)
|
||||
await this.client.cache.overwrites?.setIfNI(
|
||||
CacheFrom.Rest,
|
||||
BaseChannel.__intent__(options.guildId),
|
||||
res.id,
|
||||
options.guildId,
|
||||
@ -97,6 +106,7 @@ export class ChannelShorter extends BaseShorter {
|
||||
async pins(channelId: string): Promise<MessageStructure[]> {
|
||||
const messages = await this.client.proxy.channels(channelId).pins.get();
|
||||
await this.client.cache.messages?.patch(
|
||||
CacheFrom.Rest,
|
||||
messages.map(x => {
|
||||
return [x.id, x];
|
||||
}) satisfies [string, any][],
|
||||
@ -206,6 +216,7 @@ export class ChannelShorter extends BaseShorter {
|
||||
query,
|
||||
});
|
||||
await this.client.cache.messages?.patch(
|
||||
CacheFrom.Rest,
|
||||
result.map(x => {
|
||||
return [x.id, x];
|
||||
}) satisfies [string, any][],
|
||||
|
@ -1,4 +1,5 @@
|
||||
import { resolveImage } from '../../builders';
|
||||
import { CacheFrom } from '../../cache';
|
||||
import { type GuildEmojiStructure, Transformers } from '../../client/transformers';
|
||||
import type { APIEmoji, RESTPatchAPIGuildEmojiJSONBody, RESTPostAPIGuildEmojiJSONBody } from '../../types';
|
||||
import type { ImageResolvable } from '../types/resolvables';
|
||||
@ -22,6 +23,7 @@ export class EmojiShorter extends BaseShorter {
|
||||
}
|
||||
emojis = await this.client.proxy.guilds(guildId).emojis.get();
|
||||
await this.client.cache.emojis?.set(
|
||||
CacheFrom.Rest,
|
||||
emojis.map<[string, APIEmoji]>(x => [x.id!, x]),
|
||||
guildId,
|
||||
);
|
||||
@ -43,7 +45,7 @@ export class EmojiShorter extends BaseShorter {
|
||||
body: bodyResolved,
|
||||
});
|
||||
|
||||
await this.client.cache.emojis?.setIfNI('GuildExpressions', emoji.id!, guildId, emoji);
|
||||
await this.client.cache.emojis?.setIfNI(CacheFrom.Rest, 'GuildExpressions', emoji.id!, guildId, emoji);
|
||||
|
||||
return Transformers.GuildEmoji(this.client, emoji, guildId);
|
||||
}
|
||||
@ -91,7 +93,7 @@ export class EmojiShorter extends BaseShorter {
|
||||
reason?: string,
|
||||
): Promise<GuildEmojiStructure> {
|
||||
const emoji = await this.client.proxy.guilds(guildId).emojis(emojiId).patch({ body, reason });
|
||||
await this.client.cache.emojis?.setIfNI('GuildExpressions', emoji.id!, guildId, emoji);
|
||||
await this.client.cache.emojis?.setIfNI(CacheFrom.Rest, 'GuildExpressions', emoji.id!, guildId, emoji);
|
||||
return Transformers.GuildEmoji(this.client, emoji, guildId);
|
||||
}
|
||||
}
|
||||
|
@ -1,4 +1,5 @@
|
||||
import { resolveFiles } from '../../builders';
|
||||
import { CacheFrom } from '../../cache';
|
||||
import type { Channels } from '../../cache/resources/channels';
|
||||
import {
|
||||
type AnonymousGuildStructure,
|
||||
@ -33,7 +34,7 @@ export class GuildShorter extends BaseShorter {
|
||||
*/
|
||||
async create(body: RESTPostAPIGuildsJSONBody): Promise<GuildStructure<'api'>> {
|
||||
const guild = await this.client.proxy.guilds.post({ body });
|
||||
await this.client.cache.guilds?.setIfNI('Guilds', guild.id, guild);
|
||||
await this.client.cache.guilds?.setIfNI(CacheFrom.Rest, 'Guilds', guild.id, guild);
|
||||
return Transformers.Guild<'api'>(this.client, guild);
|
||||
}
|
||||
|
||||
@ -54,7 +55,7 @@ export class GuildShorter extends BaseShorter {
|
||||
}
|
||||
|
||||
const data = await this.client.proxy.guilds(id).get();
|
||||
await this.client.cache.guilds?.patch(id, data);
|
||||
await this.client.cache.guilds?.patch(CacheFrom.Rest, id, data);
|
||||
return (await this.client.cache.guilds?.raw(id)) ?? data;
|
||||
}
|
||||
|
||||
@ -71,7 +72,7 @@ export class GuildShorter extends BaseShorter {
|
||||
async edit(guildId: string, body: RESTPatchAPIGuildJSONBody, reason?: string) {
|
||||
const guild = await this.client.proxy.guilds(guildId).patch({ body, reason });
|
||||
|
||||
if (!this.client.cache.hasGuildsIntent) await this.client.cache.guilds?.patch(guildId, guild);
|
||||
if (!this.client.cache.hasGuildsIntent) await this.client.cache.guilds?.patch(CacheFrom.Rest, guildId, guild);
|
||||
return new Guild(this.client, guild);
|
||||
}
|
||||
|
||||
@ -88,7 +89,7 @@ export class GuildShorter extends BaseShorter {
|
||||
if (self?.user) return Transformers.GuildMember(this.client, self, self.user, id);
|
||||
}
|
||||
const self = await this.client.proxy.guilds(id).members(this.client.botId).get();
|
||||
await this.client.cache.members?.patch(self.user.id, id, self);
|
||||
await this.client.cache.members?.patch(CacheFrom.Rest, self.user.id, id, self);
|
||||
return Transformers.GuildMember(this.client, self, self.user, id);
|
||||
}
|
||||
|
||||
@ -121,6 +122,7 @@ export class GuildShorter extends BaseShorter {
|
||||
}
|
||||
channels = await this.client.proxy.guilds(guildId).channels.get();
|
||||
await this.client.cache.channels?.set(
|
||||
CacheFrom.Rest,
|
||||
channels.map<[string, APIChannel]>(x => [x.id, x]),
|
||||
guildId,
|
||||
);
|
||||
@ -142,7 +144,7 @@ export class GuildShorter extends BaseShorter {
|
||||
}
|
||||
|
||||
channel = await this.client.proxy.channels(channelId).get();
|
||||
await this.client.cache.channels?.patch(channelId, guildId, channel);
|
||||
await this.client.cache.channels?.patch(CacheFrom.Rest, channelId, guildId, channel);
|
||||
return channelFrom(channel, this.client);
|
||||
},
|
||||
|
||||
@ -154,7 +156,13 @@ export class GuildShorter extends BaseShorter {
|
||||
*/
|
||||
create: async (guildId: string, body: RESTPostAPIGuildChannelJSONBody) => {
|
||||
const res = await this.client.proxy.guilds(guildId).channels.post({ body });
|
||||
await this.client.cache.channels?.setIfNI(BaseChannel.__intent__(guildId), res.id, guildId, res);
|
||||
await this.client.cache.channels?.setIfNI(
|
||||
CacheFrom.Rest,
|
||||
BaseChannel.__intent__(guildId),
|
||||
res.id,
|
||||
guildId,
|
||||
res,
|
||||
);
|
||||
return channelFrom(res, this.client);
|
||||
},
|
||||
|
||||
@ -181,7 +189,13 @@ export class GuildShorter extends BaseShorter {
|
||||
*/
|
||||
edit: async (guildchannelId: string, channelId: string, body: RESTPatchAPIChannelJSONBody, reason?: string) => {
|
||||
const res = await this.client.proxy.channels(channelId).patch({ body, reason });
|
||||
await this.client.cache.channels?.setIfNI(BaseChannel.__intent__(guildchannelId), res.id, guildchannelId, res);
|
||||
await this.client.cache.channels?.setIfNI(
|
||||
CacheFrom.Rest,
|
||||
BaseChannel.__intent__(guildchannelId),
|
||||
res.id,
|
||||
guildchannelId,
|
||||
res,
|
||||
);
|
||||
return channelFrom(res, this.client);
|
||||
},
|
||||
|
||||
@ -293,6 +307,7 @@ export class GuildShorter extends BaseShorter {
|
||||
list: async (guildId: string): Promise<StickerStructure[]> => {
|
||||
const stickers = await this.client.proxy.guilds(guildId).stickers.get();
|
||||
await this.client.cache.stickers?.set(
|
||||
CacheFrom.Rest,
|
||||
stickers.map(st => [st.id, st] as any),
|
||||
guildId,
|
||||
);
|
||||
@ -315,7 +330,7 @@ export class GuildShorter extends BaseShorter {
|
||||
const sticker = await this.client.proxy
|
||||
.guilds(guildId)
|
||||
.stickers.post({ reason, body: json, files: [{ ...fileResolve[0], key: 'file' }], appendToFormData: true });
|
||||
await this.client.cache.stickers?.setIfNI('GuildExpressions', sticker.id, guildId, sticker);
|
||||
await this.client.cache.stickers?.setIfNI(CacheFrom.Rest, 'GuildExpressions', sticker.id, guildId, sticker);
|
||||
return Transformers.Sticker(this.client, sticker);
|
||||
},
|
||||
|
||||
@ -334,7 +349,7 @@ export class GuildShorter extends BaseShorter {
|
||||
reason?: string,
|
||||
): Promise<StickerStructure> => {
|
||||
const sticker = await this.client.proxy.guilds(guildId).stickers(stickerId).patch({ body, reason });
|
||||
await this.client.cache.stickers?.setIfNI('GuildExpressions', stickerId, guildId, sticker);
|
||||
await this.client.cache.stickers?.setIfNI(CacheFrom.Rest, 'GuildExpressions', stickerId, guildId, sticker);
|
||||
return Transformers.Sticker(this.client, sticker);
|
||||
},
|
||||
|
||||
@ -352,7 +367,7 @@ export class GuildShorter extends BaseShorter {
|
||||
if (sticker) return sticker;
|
||||
}
|
||||
sticker = await this.client.proxy.guilds(guildId).stickers(stickerId).get();
|
||||
await this.client.cache.stickers?.patch(stickerId, guildId, sticker);
|
||||
await this.client.cache.stickers?.patch(CacheFrom.Rest, stickerId, guildId, sticker);
|
||||
return Transformers.Sticker(this.client, sticker);
|
||||
},
|
||||
|
||||
|
@ -1,3 +1,4 @@
|
||||
import { CacheFrom } from '../../cache';
|
||||
import {
|
||||
type GuildMemberStructure,
|
||||
type GuildRoleStructure,
|
||||
@ -58,6 +59,7 @@ export class MemberShorter extends BaseShorter {
|
||||
query,
|
||||
});
|
||||
await this.client.cache.members?.set(
|
||||
CacheFrom.Rest,
|
||||
members.map(x => [x.user.id, x] as [string, APIGuildMember]),
|
||||
guildId,
|
||||
);
|
||||
@ -112,7 +114,7 @@ export class MemberShorter extends BaseShorter {
|
||||
reason?: string,
|
||||
): Promise<GuildMemberStructure> {
|
||||
const member = await this.client.proxy.guilds(guildId).members(memberId).patch({ body, reason });
|
||||
await this.client.cache.members?.setIfNI('GuildMembers', memberId, guildId, member);
|
||||
await this.client.cache.members?.setIfNI(CacheFrom.Rest, 'GuildMembers', memberId, guildId, member);
|
||||
return Transformers.GuildMember(this.client, member, member.user, guildId);
|
||||
}
|
||||
|
||||
@ -137,7 +139,7 @@ export class MemberShorter extends BaseShorter {
|
||||
return;
|
||||
}
|
||||
|
||||
await this.client.cache.members?.setIfNI('GuildMembers', member.user.id, guildId, member);
|
||||
await this.client.cache.members?.setIfNI(CacheFrom.Rest, 'GuildMembers', member.user.id, guildId, member);
|
||||
|
||||
return Transformers.GuildMember(this.client, member, member.user, guildId);
|
||||
}
|
||||
@ -162,7 +164,7 @@ export class MemberShorter extends BaseShorter {
|
||||
}
|
||||
|
||||
member = await this.client.proxy.guilds(guildId).members(memberId).get();
|
||||
await this.client.cache.members?.set(member.user.id, guildId, member);
|
||||
await this.client.cache.members?.set(CacheFrom.Rest, member.user.id, guildId, member);
|
||||
return member;
|
||||
}
|
||||
|
||||
@ -182,7 +184,11 @@ export class MemberShorter extends BaseShorter {
|
||||
members = await this.client.proxy.guilds(guildId).members.get({
|
||||
query,
|
||||
});
|
||||
await this.client.cache.members?.set(members.map(x => [x.user.id, x]) as [string, APIGuildMember][], guildId);
|
||||
await this.client.cache.members?.set(
|
||||
CacheFrom.Rest,
|
||||
members.map(x => [x.user.id, x]) as [string, APIGuildMember][],
|
||||
guildId,
|
||||
);
|
||||
return members.map(m => Transformers.GuildMember(this.client, m, m.user, guildId));
|
||||
}
|
||||
|
||||
@ -244,7 +250,7 @@ export class MemberShorter extends BaseShorter {
|
||||
}
|
||||
|
||||
const state = await this.client.proxy.guilds(guildId)['voice-states'](memberId).get();
|
||||
await this.client.cache.voiceStates?.set(memberId, guildId, state);
|
||||
await this.client.cache.voiceStates?.set(CacheFrom.Rest, memberId, guildId, state);
|
||||
return Transformers.VoiceState(this.client, state);
|
||||
}
|
||||
|
||||
|
@ -8,6 +8,7 @@ import type {
|
||||
} from '../../types';
|
||||
|
||||
import type { ValidAnswerId } from '../../api/Routes/channels';
|
||||
import { CacheFrom } from '../../cache';
|
||||
import { type MessageStructure, type ThreadChannelStructure, Transformers, type UserStructure } from '../../client';
|
||||
import type { MessageCreateBodyRequest, MessageUpdateBodyRequest } from '../types/write';
|
||||
import { BaseShorter } from './base';
|
||||
@ -28,7 +29,13 @@ export class MessageShorter extends BaseShorter {
|
||||
files: parsedFiles,
|
||||
})
|
||||
.then(async message => {
|
||||
await this.client.cache.messages?.setIfNI('GuildMessages', message.id, message.channel_id, message);
|
||||
await this.client.cache.messages?.setIfNI(
|
||||
CacheFrom.Rest,
|
||||
'GuildMessages',
|
||||
message.id,
|
||||
message.channel_id,
|
||||
message,
|
||||
);
|
||||
return Transformers.Message(this.client, message);
|
||||
});
|
||||
}
|
||||
@ -47,7 +54,13 @@ export class MessageShorter extends BaseShorter {
|
||||
files: parsedFiles,
|
||||
})
|
||||
.then(async message => {
|
||||
await this.client.cache.messages?.setIfNI('GuildMessages', message.id, message.channel_id, message);
|
||||
await this.client.cache.messages?.setIfNI(
|
||||
CacheFrom.Rest,
|
||||
'GuildMessages',
|
||||
message.id,
|
||||
message.channel_id,
|
||||
message,
|
||||
);
|
||||
return Transformers.Message(this.client, message);
|
||||
});
|
||||
}
|
||||
@ -58,7 +71,7 @@ export class MessageShorter extends BaseShorter {
|
||||
.messages(messageId)
|
||||
.crosspost.post({ reason })
|
||||
.then(async m => {
|
||||
await this.client.cache.messages?.setIfNI('GuildMessages', m.id, m.channel_id, m);
|
||||
await this.client.cache.messages?.setIfNI(CacheFrom.Rest, 'GuildMessages', m.id, m.channel_id, m);
|
||||
return Transformers.Message(this.client, m);
|
||||
});
|
||||
}
|
||||
@ -85,7 +98,7 @@ export class MessageShorter extends BaseShorter {
|
||||
.messages(messageId)
|
||||
.get()
|
||||
.then(async x => {
|
||||
await this.client.cache.messages?.set(x.id, x.channel_id, x);
|
||||
await this.client.cache.messages?.set(CacheFrom.Rest, x.id, x.channel_id, x);
|
||||
return Transformers.Message(this.client, x);
|
||||
});
|
||||
}
|
||||
|
@ -1,3 +1,4 @@
|
||||
import { CacheFrom } from '../../cache';
|
||||
import { type GuildRoleStructure, Transformers } from '../../client/transformers';
|
||||
import type {
|
||||
APIRole,
|
||||
@ -17,7 +18,7 @@ export class RoleShorter extends BaseShorter {
|
||||
*/
|
||||
async create(guildId: string, body: RESTPostAPIGuildRoleJSONBody, reason?: string): Promise<GuildRoleStructure> {
|
||||
const res = await this.client.proxy.guilds(guildId).roles.post({ body, reason });
|
||||
await this.client.cache.roles?.setIfNI('Guilds', res.id, guildId, res);
|
||||
await this.client.cache.roles?.setIfNI(CacheFrom.Rest, 'Guilds', res.id, guildId, res);
|
||||
return Transformers.GuildRole(this.client, res, guildId);
|
||||
}
|
||||
|
||||
@ -33,7 +34,7 @@ export class RoleShorter extends BaseShorter {
|
||||
if (role) return role;
|
||||
}
|
||||
role = await this.client.proxy.guilds(guildId).roles(roleId).get();
|
||||
await this.client.cache.roles?.set(roleId, guildId, role);
|
||||
await this.client.cache.roles?.set(CacheFrom.Rest, roleId, guildId, role);
|
||||
return role;
|
||||
}
|
||||
|
||||
@ -58,6 +59,7 @@ export class RoleShorter extends BaseShorter {
|
||||
}
|
||||
roles = await this.client.proxy.guilds(guildId).roles.get();
|
||||
await this.client.cache.roles?.set(
|
||||
CacheFrom.Rest,
|
||||
roles.map<[string, APIRole]>(r => [r.id, r]),
|
||||
guildId,
|
||||
);
|
||||
@ -79,7 +81,7 @@ export class RoleShorter extends BaseShorter {
|
||||
reason?: string,
|
||||
): Promise<GuildRoleStructure> {
|
||||
const res = await this.client.proxy.guilds(guildId).roles(roleId).patch({ body, reason });
|
||||
await this.client.cache.roles?.setIfNI('Guilds', roleId, guildId, res);
|
||||
await this.client.cache.roles?.setIfNI(CacheFrom.Rest, 'Guilds', roleId, guildId, res);
|
||||
return Transformers.GuildRole(this.client, res, guildId);
|
||||
}
|
||||
|
||||
@ -108,6 +110,7 @@ export class RoleShorter extends BaseShorter {
|
||||
});
|
||||
if (!this.client.cache.hasRolesIntent) {
|
||||
await this.client.cache.roles?.set(
|
||||
CacheFrom.Rest,
|
||||
roles.map(x => [x.id, x] as [string, any]),
|
||||
guildId,
|
||||
);
|
||||
|
@ -1,3 +1,4 @@
|
||||
import { CacheFrom } from '../..';
|
||||
import type { ThreadChannelStructure } from '../../client/transformers';
|
||||
import { channelFrom } from '../../structures';
|
||||
import type {
|
||||
@ -32,6 +33,7 @@ export class ThreadShorter extends BaseShorter {
|
||||
// When testing this, discord returns the thread object, but in discord api types it does not.
|
||||
.then(async thread => {
|
||||
await this.client.cache.channels?.setIfNI(
|
||||
CacheFrom.Rest,
|
||||
'Guilds',
|
||||
thread.id,
|
||||
(thread as APIThreadChannel).guild_id!,
|
||||
@ -54,7 +56,13 @@ export class ThreadShorter extends BaseShorter {
|
||||
.messages(messageId)
|
||||
.threads.post({ body, reason })
|
||||
.then(async thread => {
|
||||
await this.client.cache.channels?.setIfNI('Guilds', thread.id, (thread as APIThreadChannel).guild_id!, thread);
|
||||
await this.client.cache.channels?.setIfNI(
|
||||
CacheFrom.Rest,
|
||||
'Guilds',
|
||||
thread.id,
|
||||
(thread as APIThreadChannel).guild_id!,
|
||||
thread,
|
||||
);
|
||||
return channelFrom(thread, this.client) as ThreadChannelStructure;
|
||||
});
|
||||
}
|
||||
|
@ -1,3 +1,4 @@
|
||||
import { CacheFrom } from '../..';
|
||||
import {
|
||||
type DMChannelStructure,
|
||||
type MessageStructure,
|
||||
@ -17,7 +18,7 @@ export class UsersShorter extends BaseShorter {
|
||||
const data = await this.client.proxy.users('@me').channels.post({
|
||||
body: { recipient_id: userId },
|
||||
});
|
||||
await this.client.cache.channels?.set(userId, '@me', data);
|
||||
await this.client.cache.channels?.set(CacheFrom.Rest, userId, '@me', data);
|
||||
return Transformers.DMChannel(this.client, data);
|
||||
}
|
||||
|
||||
@ -38,7 +39,7 @@ export class UsersShorter extends BaseShorter {
|
||||
}
|
||||
|
||||
const data = await this.client.proxy.users(userId).get();
|
||||
await this.client.cache.users?.patch(userId, data);
|
||||
await this.client.cache.users?.patch(CacheFrom.Rest, userId, data);
|
||||
return data;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user