mirror of
https://github.com/tiramisulabs/seyfert.git
synced 2025-07-02 21:16:09 +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> {
|
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 =
|
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)
|
? (this.cache.adapter.get(this.cache.users.hashId(rawMessage.user_id)) as APIUser | undefined)
|
||||||
: 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.events?.execute(packet.t, packet, this as Client<true>, shardId);
|
||||||
await this.cache.onPacket(packet);
|
await this.cache.onPacket(packet);
|
||||||
break;
|
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 'GUILD_DELETE':
|
||||||
case 'CHANNEL_UPDATE':
|
case 'CHANNEL_UPDATE':
|
||||||
await this.events?.execute(packet.t, packet, this as Client<true>, shardId);
|
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);
|
await this.events?.execute('RAW', packet, this as WorkerClient<true>, shardId);
|
||||||
switch (packet.t) {
|
switch (packet.t) {
|
||||||
case 'GUILD_MEMBER_UPDATE':
|
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 '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.events?.execute(packet.t, packet, this as WorkerClient<true>, shardId);
|
||||||
await this.cache.onPacket(packet);
|
await this.cache.onPacket(packet);
|
||||||
break;
|
break;
|
||||||
|
@ -49,8 +49,8 @@ export const GUILD_CREATE = (self: BaseClient, data: GatewayGuildCreateDispatchD
|
|||||||
return new Guild<'create'>(self, data);
|
return new Guild<'create'>(self, data);
|
||||||
};
|
};
|
||||||
|
|
||||||
export const GUILD_DELETE = async (_self: BaseClient, data: GatewayGuildDeleteDispatchData) => {
|
export const GUILD_DELETE = async (self: BaseClient, data: GatewayGuildDeleteDispatchData) => {
|
||||||
return data;
|
return (await self.cache.guilds?.get(data.id)) ?? data;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const GUILD_EMOJIS_UPDATE = (self: BaseClient, data: GatewayGuildEmojisUpdateDispatchData) => {
|
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);
|
return new Message(self, data);
|
||||||
};
|
};
|
||||||
|
|
||||||
export const MESSAGE_DELETE = (_self: BaseClient, data: GatewayMessageDeleteDispatchData) => {
|
export const MESSAGE_DELETE = async (self: BaseClient, data: GatewayMessageDeleteDispatchData) => {
|
||||||
return toCamelCase(data);
|
return (await self.cache.messages?.get(data.id)) ?? toCamelCase(data);
|
||||||
};
|
};
|
||||||
|
|
||||||
export const MESSAGE_DELETE_BULK = (_self: BaseClient, data: GatewayMessageDeleteBulkDispatchData) => {
|
export const MESSAGE_DELETE_BULK = async (self: BaseClient, data: GatewayMessageDeleteBulkDispatchData) => {
|
||||||
return toCamelCase(data);
|
return {
|
||||||
|
...data,
|
||||||
|
messages: await Promise.all(data.ids.map(id => self.cache.messages?.get(id))),
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
export const MESSAGE_REACTION_ADD = (_self: BaseClient, data: GatewayMessageReactionAddDispatchData) => {
|
export const MESSAGE_REACTION_ADD = (_self: BaseClient, data: GatewayMessageReactionAddDispatchData) => {
|
||||||
@ -45,14 +48,19 @@ export const MESSAGE_REACTION_REMOVE_EMOJI = (
|
|||||||
return toCamelCase(data);
|
return toCamelCase(data);
|
||||||
};
|
};
|
||||||
|
|
||||||
export const MESSAGE_UPDATE = (
|
export const MESSAGE_UPDATE = async (
|
||||||
self: BaseClient,
|
self: BaseClient,
|
||||||
data: GatewayMessageUpdateDispatchData,
|
data: GatewayMessageUpdateDispatchData,
|
||||||
): MakeRequired<
|
): Promise<
|
||||||
PartialClass<Message>,
|
[
|
||||||
'id' | 'channelId' | 'createdAt' | 'createdTimestamp' | 'rest' | 'cache' | 'api' | 'client'
|
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) => {
|
export const MESSAGE_POLL_VOTE_ADD = (_: BaseClient, data: GatewayMessagePollVoteDispatchData) => {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user