fix: overwrites cache

This commit is contained in:
MARCROCK22 2025-04-16 16:49:24 -04:00
parent b00076df23
commit 7819b371a5
4 changed files with 31 additions and 6 deletions

11
src/cache/index.ts vendored
View File

@ -511,11 +511,8 @@ export class Cache {
event.d.guild_id!, event.d.guild_id!,
event.d.permission_overwrites, event.d.permission_overwrites,
); );
break; } else if (event.d.type === ChannelType.DM) {
}
if (event.d.type === ChannelType.DM) {
await this.channels?.set(CacheFrom.Gateway, event.d.recipients![0]?.id, '@me', event.d); await this.channels?.set(CacheFrom.Gateway, event.d.recipients![0]?.id, '@me', event.d);
break;
} }
} }
break; break;
@ -593,7 +590,11 @@ export class Cache {
case 'THREAD_CREATE': case 'THREAD_CREATE':
case 'THREAD_UPDATE': case 'THREAD_UPDATE':
if (event.d.guild_id) await this.channels?.set(CacheFrom.Gateway, 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);
if (event.d.permission_overwrites?.length)
await this.overwrites?.set(CacheFrom.Gateway, event.d.id, event.d.guild_id!, event.d.permission_overwrites);
}
break; break;
case 'THREAD_DELETE': case 'THREAD_DELETE':

View File

@ -19,7 +19,8 @@ export class GuildRelatedResource<T = any, S = any> {
parse(data: any, id: string, guild_id: string) { parse(data: any, id: string, guild_id: string) {
if (!data.id) data.id = id; if (!data.id) data.id = id;
data.guild_id = guild_id; data.guild_id = guild_id;
return data; const { permission_overwrites, ...rest } = data;
return rest;
} }
get adapter() { get adapter() {

View File

@ -44,6 +44,9 @@ export class ChannelShorter extends BaseShorter {
'guild_id' in channel && channel.guild_id ? channel.guild_id : '@me', 'guild_id' in channel && channel.guild_id ? channel.guild_id : '@me',
channel, channel,
); );
if ('permission_overwrites' in channel && channel.permission_overwrites && channel.guild_id) {
await this.client.cache.overwrites?.set(CacheFrom.Rest, id, channel.guild_id, channel.permission_overwrites);
}
return channel as APIChannel; return channel as APIChannel;
} }

View File

@ -32,6 +32,8 @@ import type {
RESTPostAPIGuildChannelJSONBody, RESTPostAPIGuildChannelJSONBody,
RESTPostAPIGuildsJSONBody, RESTPostAPIGuildsJSONBody,
} from '../../types'; } from '../../types';
import type { APITextChannel } from '../../types/payloads/channel';
import type { MakeRequired } from '../types/util';
import { BaseShorter } from './base'; import { BaseShorter } from './base';
export class GuildShorter extends BaseShorter { export class GuildShorter extends BaseShorter {
@ -145,6 +147,21 @@ export class GuildShorter extends BaseShorter {
channels.map<[string, APIChannel]>(x => [x.id, x]), channels.map<[string, APIChannel]>(x => [x.id, x]),
guildId, guildId,
); );
const filtered = channels.filter(
(ch): ch is MakeRequired<APITextChannel, 'permission_overwrites' | 'guild_id'> => {
return 'permission_overwrites' in ch && ch.permission_overwrites !== undefined && ch.guild_id !== undefined;
},
);
if (filtered.length) {
await this.client.cache.overwrites?.set(
CacheFrom.Rest,
filtered.map(x => {
return [x.id, x.permission_overwrites] as const;
}),
guildId,
);
}
return channels.map(m => channelFrom(m, this.client)); return channels.map(m => channelFrom(m, this.client));
}, },
@ -164,6 +181,9 @@ export class GuildShorter extends BaseShorter {
channel = await this.client.proxy.channels(channelId).get(); channel = await this.client.proxy.channels(channelId).get();
await this.client.cache.channels?.patch(CacheFrom.Rest, channelId, guildId, channel); await this.client.cache.channels?.patch(CacheFrom.Rest, channelId, guildId, channel);
if ('permission_overwrites' in channel && channel.permission_overwrites) {
await this.client.cache.overwrites?.set(CacheFrom.Rest, channelId, guildId, channel.permission_overwrites);
}
return channelFrom(channel, this.client); return channelFrom(channel, this.client);
}, },