mirror of
https://github.com/tiramisulabs/seyfert.git
synced 2025-07-01 20:46:08 +00:00
fix: overwrites cache
This commit is contained in:
parent
b00076df23
commit
7819b371a5
9
src/cache/index.ts
vendored
9
src/cache/index.ts
vendored
@ -511,11 +511,8 @@ export class Cache {
|
||||
event.d.guild_id!,
|
||||
event.d.permission_overwrites,
|
||||
);
|
||||
break;
|
||||
}
|
||||
if (event.d.type === ChannelType.DM) {
|
||||
} else if (event.d.type === ChannelType.DM) {
|
||||
await this.channels?.set(CacheFrom.Gateway, event.d.recipients![0]?.id, '@me', event.d);
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
@ -593,7 +590,11 @@ export class Cache {
|
||||
|
||||
case 'THREAD_CREATE':
|
||||
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.permission_overwrites?.length)
|
||||
await this.overwrites?.set(CacheFrom.Gateway, event.d.id, event.d.guild_id!, event.d.permission_overwrites);
|
||||
}
|
||||
break;
|
||||
|
||||
case 'THREAD_DELETE':
|
||||
|
3
src/cache/resources/default/guild-related.ts
vendored
3
src/cache/resources/default/guild-related.ts
vendored
@ -19,7 +19,8 @@ export class GuildRelatedResource<T = any, S = any> {
|
||||
parse(data: any, id: string, guild_id: string) {
|
||||
if (!data.id) data.id = id;
|
||||
data.guild_id = guild_id;
|
||||
return data;
|
||||
const { permission_overwrites, ...rest } = data;
|
||||
return rest;
|
||||
}
|
||||
|
||||
get adapter() {
|
||||
|
@ -44,6 +44,9 @@ export class ChannelShorter extends BaseShorter {
|
||||
'guild_id' in channel && channel.guild_id ? channel.guild_id : '@me',
|
||||
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;
|
||||
}
|
||||
|
||||
|
@ -32,6 +32,8 @@ import type {
|
||||
RESTPostAPIGuildChannelJSONBody,
|
||||
RESTPostAPIGuildsJSONBody,
|
||||
} from '../../types';
|
||||
import type { APITextChannel } from '../../types/payloads/channel';
|
||||
import type { MakeRequired } from '../types/util';
|
||||
import { BaseShorter } from './base';
|
||||
|
||||
export class GuildShorter extends BaseShorter {
|
||||
@ -145,6 +147,21 @@ export class GuildShorter extends BaseShorter {
|
||||
channels.map<[string, APIChannel]>(x => [x.id, x]),
|
||||
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));
|
||||
},
|
||||
|
||||
@ -164,6 +181,9 @@ export class GuildShorter extends BaseShorter {
|
||||
|
||||
channel = await this.client.proxy.channels(channelId).get();
|
||||
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);
|
||||
},
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user