feat: guild members chunk which fixes #11

This commit is contained in:
Yuzu 2022-08-19 08:28:34 -05:00
parent d1766cd862
commit 9a9379b4a6

View File

@ -11,6 +11,7 @@ import type {
DiscordGuildMemberAdd,
DiscordGuildMemberRemove,
DiscordGuildMemberUpdate,
DiscordGuildMembersChunk,
DiscordGuildRoleCreate,
DiscordGuildRoleDelete,
DiscordGuildRoleUpdate,
@ -675,6 +676,17 @@ export const VOICE_SERVER_UPDATE: RawHandler<DiscordVoiceServerUpdate> = (sessio
});
};
export const GUILD_MEMBERS_CHUNK: RawHandler<DiscordGuildMembersChunk> = (session, _shardId, payload) => {
session.events.emit('guildMembersChunk', {
guildId: payload.guild_id,
members: new Map(payload.members.map(m => [m.user.id, new Member(session, m, payload.guild_id)])),
chunkIndex: payload.chunk_index,
chunkCount: payload.chunk_count,
notFound: payload.not_found,
presences: payload.presences?.map(p => new Presence(session, p)) ?? [],
});
};
export const raw: RawHandler<unknown> = (session, shardId, data) => {
session.events.emit('raw', data as { t: string; d: unknown }, shardId);
};
@ -683,6 +695,16 @@ export interface Ready extends Omit<DiscordReady, 'user'> {
user: User;
}
export interface GuildMembersChunk {
guildId: Snowflake;
members: Map<Snowflake, Member>;
chunkIndex: number;
chunkCount: number;
notFound?: string[];
presences: Presence[];
nonce?: string;
}
/**
* Alias of `keyof Events`. List of all events that can be emitted by the session.
* Ex: ready, messageCreate, guildCreate, etc.
@ -706,6 +728,7 @@ export interface Events {
guildMemberAdd: Handler<[Member]>;
guildMemberUpdate: Handler<[Member]>;
guildMemberRemove: Handler<[User, Snowflake]>;
guildMembersChunk: Handler<[GuildMembersChunk]>;
guildBanAdd: Handler<[{ guildId: Snowflake; user: DiscordUser }]>;
guildBanRemove: Handler<[{ guildId: Snowflake; user: DiscordUser }]>;
guildEmojisUpdate: Handler<