mirror of
https://github.com/tiramisulabs/seyfert.git
synced 2025-07-01 20:46:08 +00:00
feat: use message cache in events
This commit is contained in:
parent
a96db12337
commit
2f1b6e4b8f
6
src/cache/resources/messages.ts
vendored
6
src/cache/resources/messages.ts
vendored
@ -20,12 +20,12 @@ export class Messages extends GuildRelatedResource {
|
||||
}
|
||||
|
||||
override get(id: string): ReturnCache<Message | undefined> {
|
||||
return fakePromise(super.get(id) as APIMessageResource).then(rawMessage => {
|
||||
return fakePromise(super.get(id) as APIMessageResource | undefined).then(rawMessage => {
|
||||
const user =
|
||||
this.cache.users && rawMessage.user_id
|
||||
this.cache.users && rawMessage?.user_id
|
||||
? (this.cache.adapter.get(this.cache.users.hashId(rawMessage.user_id)) as APIUser | undefined)
|
||||
: undefined;
|
||||
return user ? new Message(this.client, { ...rawMessage, author: user }) : undefined;
|
||||
return user ? new Message(this.client, { ...rawMessage!, author: user }) : undefined;
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -139,6 +139,12 @@ export class Client<Ready extends boolean = boolean> extends BaseClient {
|
||||
await this.events?.execute(packet.t, packet, this as Client<true>, shardId);
|
||||
await this.cache.onPacket(packet);
|
||||
break;
|
||||
case 'MESSAGE_UPDATE':
|
||||
case 'MESSAGE_DELETE_BULK':
|
||||
case 'MESSAGE_DELETE':
|
||||
await this.events?.execute(packet.t, packet, this as Client<true>, shardId);
|
||||
await this.cache.onPacket(packet);
|
||||
break;
|
||||
case 'GUILD_DELETE':
|
||||
case 'CHANNEL_UPDATE':
|
||||
await this.events?.execute(packet.t, packet, this as Client<true>, shardId);
|
||||
|
@ -318,10 +318,10 @@ export class WorkerClient<Ready extends boolean = boolean> extends BaseClient {
|
||||
await this.events?.execute('RAW', packet, this as WorkerClient<true>, shardId);
|
||||
switch (packet.t) {
|
||||
case 'GUILD_MEMBER_UPDATE':
|
||||
await this.events?.execute(packet.t, packet, this as WorkerClient<true>, shardId);
|
||||
await this.cache.onPacket(packet);
|
||||
break;
|
||||
case 'PRESENCE_UPDATE':
|
||||
case 'MESSAGE_UPDATE':
|
||||
case 'MESSAGE_DELETE_BULK':
|
||||
case 'MESSAGE_DELETE':
|
||||
await this.events?.execute(packet.t, packet, this as WorkerClient<true>, shardId);
|
||||
await this.cache.onPacket(packet);
|
||||
break;
|
||||
|
@ -49,8 +49,8 @@ export const GUILD_CREATE = (self: BaseClient, data: GatewayGuildCreateDispatchD
|
||||
return new Guild<'create'>(self, data);
|
||||
};
|
||||
|
||||
export const GUILD_DELETE = async (_self: BaseClient, data: GatewayGuildDeleteDispatchData) => {
|
||||
return data;
|
||||
export const GUILD_DELETE = async (self: BaseClient, data: GatewayGuildDeleteDispatchData) => {
|
||||
return (await self.cache.guilds?.get(data.id)) ?? data;
|
||||
};
|
||||
|
||||
export const GUILD_EMOJIS_UPDATE = (self: BaseClient, data: GatewayGuildEmojisUpdateDispatchData) => {
|
||||
|
@ -18,12 +18,15 @@ export const MESSAGE_CREATE = (self: BaseClient, data: GatewayMessageCreateDispa
|
||||
return new Message(self, data);
|
||||
};
|
||||
|
||||
export const MESSAGE_DELETE = (_self: BaseClient, data: GatewayMessageDeleteDispatchData) => {
|
||||
return toCamelCase(data);
|
||||
export const MESSAGE_DELETE = async (self: BaseClient, data: GatewayMessageDeleteDispatchData) => {
|
||||
return (await self.cache.messages?.get(data.id)) ?? toCamelCase(data);
|
||||
};
|
||||
|
||||
export const MESSAGE_DELETE_BULK = (_self: BaseClient, data: GatewayMessageDeleteBulkDispatchData) => {
|
||||
return toCamelCase(data);
|
||||
export const MESSAGE_DELETE_BULK = async (self: BaseClient, data: GatewayMessageDeleteBulkDispatchData) => {
|
||||
return {
|
||||
...data,
|
||||
messages: await Promise.all(data.ids.map(id => self.cache.messages?.get(id))),
|
||||
};
|
||||
};
|
||||
|
||||
export const MESSAGE_REACTION_ADD = (_self: BaseClient, data: GatewayMessageReactionAddDispatchData) => {
|
||||
@ -45,14 +48,19 @@ export const MESSAGE_REACTION_REMOVE_EMOJI = (
|
||||
return toCamelCase(data);
|
||||
};
|
||||
|
||||
export const MESSAGE_UPDATE = (
|
||||
export const MESSAGE_UPDATE = async (
|
||||
self: BaseClient,
|
||||
data: GatewayMessageUpdateDispatchData,
|
||||
): MakeRequired<
|
||||
PartialClass<Message>,
|
||||
'id' | 'channelId' | 'createdAt' | 'createdTimestamp' | 'rest' | 'cache' | 'api' | 'client'
|
||||
): Promise<
|
||||
[
|
||||
undefined | Message,
|
||||
MakeRequired<
|
||||
PartialClass<Message>,
|
||||
'id' | 'channelId' | 'createdAt' | 'createdTimestamp' | 'rest' | 'cache' | 'api' | 'client'
|
||||
>,
|
||||
]
|
||||
> => {
|
||||
return new Message(self, data as APIMessage);
|
||||
return [await self.cache.messages?.get(data.id), new Message(self, data as APIMessage)];
|
||||
};
|
||||
|
||||
export const MESSAGE_POLL_VOTE_ADD = (_: BaseClient, data: GatewayMessagePollVoteDispatchData) => {
|
||||
|
Loading…
x
Reference in New Issue
Block a user