types: add gateway events types

This commit is contained in:
ayntee
2021-03-27 12:03:55 +04:00
parent 68c0aa4877
commit b1512e0334
30 changed files with 316 additions and 78 deletions
+4 -3
View File
@@ -1,9 +1,10 @@
import { eventHandlers } from "../../bot.ts";
import { structures } from "../../structures/mod.ts";
import { cacheHandlers } from "../../cache.ts";
import { structures } from "../../structures/mod.ts";
import { DiscordGatewayPayload } from "../../types/gateway.ts";
export async function handleChannelCreate(data: DiscordPayload) {
const payload = data.d as ChannelCreatePayload;
export async function handleChannelCreate(data: DiscordGatewayPayload) {
const payload = data.d as DiscordChannel;
const channelStruct = await structures.createChannelStruct(payload);
await cacheHandlers.set("channels", channelStruct.id, channelStruct);
+3 -2
View File
@@ -1,8 +1,9 @@
import { eventHandlers } from "../../bot.ts";
import { cacheHandlers } from "../../cache.ts";
import { DiscordGatewayPayload } from "../../types/gateway.ts";
export async function handleChannelDelete(data: DiscordPayload) {
const payload = data.d as ChannelCreatePayload;
export async function handleChannelDelete(data: DiscordGatewayPayload) {
const payload = data.d as DiscordChannel;
const cachedChannel = await cacheHandlers.get("channels", payload.id);
if (!cachedChannel) return;
+6 -2
View File
@@ -1,8 +1,12 @@
import { eventHandlers } from "../../bot.ts";
import { cacheHandlers } from "../../cache.ts";
import {
DiscordChannelPinsUpdate,
DiscordGatewayPayload,
} from "../../types/gateway.ts";
export async function handleChannelPinsUpdate(data: DiscordPayload) {
const payload = data.d as DiscordChannelPinsUpdateEvent;
export async function handleChannelPinsUpdate(data: DiscordGatewayPayload) {
const payload = data.d as DiscordChannelPinsUpdate;
const channel = await cacheHandlers.get("channels", payload.channel_id);
if (!channel) return;
+4 -3
View File
@@ -1,9 +1,10 @@
import { eventHandlers } from "../../bot.ts";
import { structures } from "../../structures/mod.ts";
import { cacheHandlers } from "../../cache.ts";
import { structures } from "../../structures/mod.ts";
import { DiscordGatewayPayload } from "../../types/gateway.ts";
export async function handleChannelUpdate(data: DiscordPayload) {
const payload = data.d as ChannelCreatePayload;
export async function handleChannelUpdate(data: DiscordGatewayPayload) {
const payload = data.d as DiscordChannel;
const cachedChannel = await cacheHandlers.get("channels", payload.id);
const channelStruct = await structures.createChannelStruct(payload);
+7 -3
View File
@@ -1,9 +1,13 @@
import { eventHandlers } from "../../bot.ts";
import { Collection } from "../../util/collection.ts";
import { cacheHandlers } from "../../cache.ts";
import {
DiscordGatewayPayload,
DiscordGuildEmojisUpdate,
} from "../../types/gateway.ts";
import { Collection } from "../../util/collection.ts";
export async function handleGuildEmojisUpdate(data: DiscordPayload) {
const payload = data.d as GuildEmojisUpdatePayload;
export async function handleGuildEmojisUpdate(data: DiscordGatewayPayload) {
const payload = data.d as DiscordGuildEmojisUpdate;
const guild = await cacheHandlers.get("guilds", payload.guild_id);
if (!guild) return;
+6 -2
View File
@@ -1,8 +1,12 @@
import { eventHandlers } from "../../bot.ts";
import { cacheHandlers } from "../../cache.ts";
import {
DiscordGatewayPayload,
DiscordGuildBanAddRemove,
} from "../../types/gateway.ts";
export async function handleGuildBanAdd(data: DiscordPayload) {
const payload = data.d as GuildBanPayload;
export async function handleGuildBanAdd(data: DiscordGatewayPayload) {
const payload = data.d as DiscordGuildBanAddRemove;
const guild = await cacheHandlers.get("guilds", payload.guild_id);
if (!guild) return;
+6 -2
View File
@@ -1,8 +1,12 @@
import { eventHandlers } from "../../bot.ts";
import { cacheHandlers } from "../../cache.ts";
import {
DiscordGatewayPayload,
DiscordGuildBanAddRemove,
} from "../../types/gateway.ts";
export async function handleGuildBanRemove(data: DiscordPayload) {
const payload = data.d as GuildBanPayload;
export async function handleGuildBanRemove(data: DiscordGatewayPayload) {
const payload = data.d as DiscordGuildBanAddRemove;
const guild = await cacheHandlers.get("guilds", payload.guild_id);
if (!guild) return;
+4 -3
View File
@@ -1,18 +1,19 @@
import { eventHandlers } from "../../bot.ts";
import { cache, cacheHandlers } from "../../cache.ts";
import { structures } from "../../structures/mod.ts";
import { DiscordGatewayPayload } from "../../types/gateway.ts";
import { basicShards } from "../../ws/shard.ts";
export async function handleGuildCreate(
data: DiscordPayload,
data: DiscordGatewayPayload,
shardID: number,
) {
const payload = data.d as CreateGuildPayload;
const payload = data.d as DiscordGuild;
// When shards resume they emit GUILD_CREATE again.
if (await cacheHandlers.has("guilds", payload.id)) return;
const guildStruct = await structures.createGuildStruct(
data.d as CreateGuildPayload,
data.d,
shardID,
);
await cacheHandlers.set("guilds", guildStruct.id, guildStruct);
+3 -2
View File
@@ -1,12 +1,13 @@
import { eventHandlers } from "../../bot.ts";
import { cacheHandlers } from "../../cache.ts";
import { DiscordGatewayPayload } from "../../types/gateway.ts";
import { basicShards } from "../../ws/shard.ts";
export async function handleGuildDelete(
data: DiscordPayload,
data: DiscordGatewayPayload,
shardID: number,
) {
const payload = data.d as GuildDeletePayload;
const payload = data.d as DiscordUnavailableGuild;
const guild = await cacheHandlers.get("guilds", payload.id);
if (!guild) return;
@@ -1,10 +1,14 @@
import { eventHandlers } from "../../bot.ts";
import { cacheHandlers } from "../../cache.ts";
import {
DiscordGatewayPayload,
DiscordGuildIntegrationsUpdate,
} from "../../types/gateway.ts";
export async function handleGuildIntegrationsUpdate(
data: DiscordPayload,
data: DiscordGatewayPayload,
) {
const payload = data.d as DiscordGuildIntegrationsUpdateEvent;
const payload = data.d as DiscordGuildIntegrationsUpdate;
const guild = await cacheHandlers.get("guilds", payload.guild_id);
if (!guild) return;
+3 -2
View File
@@ -1,8 +1,9 @@
import { eventHandlers } from "../../bot.ts";
import { cacheHandlers } from "../../cache.ts";
import { DiscordGatewayPayload } from "../../types/gateway.ts";
export async function handleGuildUpdate(data: DiscordPayload) {
const payload = data.d as UpdateGuildPayload;
export async function handleGuildUpdate(data: DiscordGatewayPayload) {
const payload = data.d as DiscordGuild;
const cachedGuild = await cacheHandlers.get("guilds", payload.id);
if (!cachedGuild) return;
+6 -2
View File
@@ -1,9 +1,13 @@
import { cache, cacheHandlers } from "../../cache.ts";
import { structures } from "../../structures/mod.ts";
import {
DiscordGatewayPayload,
DiscordGuildMembersChunk,
} from "../../types/gateway.ts";
import { Collection } from "../../util/collection.ts";
export async function handleGuildMembersChunk(data: DiscordPayload) {
const payload = data.d as GuildMemberChunkPayload;
export async function handleGuildMembersChunk(data: DiscordGatewayPayload) {
const payload = data.d as DiscordGuildMembersChunk;
const members = await Promise.all(
payload.members.map(async (member) => {
+7 -3
View File
@@ -1,9 +1,13 @@
import { eventHandlers } from "../../bot.ts";
import { structures } from "../../structures/mod.ts";
import { cacheHandlers } from "../../cache.ts";
import { structures } from "../../structures/mod.ts";
import {
DiscordGatewayPayload,
DiscordGuildMemberAdd,
} from "../../types/gateway.ts";
export async function handleGuildMemberAdd(data: DiscordPayload) {
const payload = data.d as GuildMemberAddPayload;
export async function handleGuildMemberAdd(data: DiscordGatewayPayload) {
const payload = data.d as DiscordGuildMemberAdd;
const guild = await cacheHandlers.get("guilds", payload.guild_id);
if (!guild) return;
+6 -2
View File
@@ -1,8 +1,12 @@
import { eventHandlers } from "../../bot.ts";
import { cacheHandlers } from "../../cache.ts";
import {
DiscordGatewayPayload,
DiscordGuildMemberRemove,
} from "../../types/gateway.ts";
export async function handleGuildMemberRemove(data: DiscordPayload) {
const payload = data.d as GuildBanPayload;
export async function handleGuildMemberRemove(data: DiscordGatewayPayload) {
const payload = data.d as DiscordGuildMemberRemove;
const guild = await cacheHandlers.get("guilds", payload.guild_id);
if (!guild) return;
+8 -4
View File
@@ -1,9 +1,13 @@
import { eventHandlers } from "../../bot.ts";
import { structures } from "../../structures/mod.ts";
import { cacheHandlers } from "../../cache.ts";
import { structures } from "../../structures/mod.ts";
import {
DiscordGatewayPayload,
DiscordGuildMemberUpdate,
} from "../../types/gateway.ts";
export async function handleGuildMemberUpdate(data: DiscordPayload) {
const payload = data.d as GuildMemberUpdatePayload;
export async function handleGuildMemberUpdate(data: DiscordGatewayPayload) {
const payload = data.d as DiscordGuildMemberUpdate;
const guild = await cacheHandlers.get("guilds", payload.guild_id);
if (!guild) return;
@@ -31,7 +35,7 @@ export async function handleGuildMemberUpdate(data: DiscordPayload) {
eventHandlers.nicknameUpdate?.(
guild,
memberStruct,
payload.nick,
payload.nick!,
guildMember?.nick,
);
}
+4 -3
View File
@@ -1,9 +1,10 @@
import { eventHandlers } from "../../bot.ts";
import { structures } from "../../structures/mod.ts";
import { cacheHandlers } from "../../cache.ts";
import { structures } from "../../structures/mod.ts";
import { DiscordGatewayPayload } from "../../types/gateway.ts";
export async function handleMessageCreate(data: DiscordPayload) {
const payload = data.d as MessageCreateOptions;
export async function handleMessageCreate(data: DiscordGatewayPayload) {
const payload = data.d as DiscordMessage;
const channel = await cacheHandlers.get("channels", payload.channel_id);
if (channel) channel.lastMessageID = payload.id;
+6 -2
View File
@@ -1,8 +1,12 @@
import { eventHandlers } from "../../bot.ts";
import { cacheHandlers } from "../../cache.ts";
import {
DiscordGatewayPayload,
DiscordMessageDelete,
} from "../../types/gateway.ts";
export async function handleMessageDelete(data: DiscordPayload) {
const payload = data.d as MessageDeletePayload;
export async function handleMessageDelete(data: DiscordGatewayPayload) {
const payload = data.d as DiscordMessageDelete;
const channel = await cacheHandlers.get("channels", payload.channel_id);
if (!channel) return;
+6 -2
View File
@@ -1,8 +1,12 @@
import { eventHandlers } from "../../bot.ts";
import { cacheHandlers } from "../../cache.ts";
import {
DiscordGatewayPayload,
DiscordMessageDeleteBulk,
} from "../../types/gateway.ts";
export async function handleMessageDeleteBulk(data: DiscordPayload) {
const payload = data.d as MessageDeleteBulkPayload;
export async function handleMessageDeleteBulk(data: DiscordGatewayPayload) {
const payload = data.d as DiscordMessageDeleteBulk;
const channel = await cacheHandlers.get("channels", payload.channel_id);
if (!channel) return;
@@ -1,9 +1,13 @@
import { botID, eventHandlers } from "../../bot.ts";
import { structures } from "../../structures/mod.ts";
import { cacheHandlers } from "../../cache.ts";
import { structures } from "../../structures/mod.ts";
import {
DiscordGatewayPayload,
DiscordMessageReactionAdd,
} from "../../types/gateway.ts";
export async function handleMessageReactionAdd(data: DiscordPayload) {
const payload = data.d as MessageReactionPayload;
export async function handleMessageReactionAdd(data: DiscordGatewayPayload) {
const payload = data.d as DiscordMessageReactionAdd;
const message = await cacheHandlers.get("messages", payload.message_id);
if (message) {
@@ -1,11 +1,15 @@
import { botID, eventHandlers } from "../../bot.ts";
import { structures } from "../../structures/mod.ts";
import { cacheHandlers } from "../../cache.ts";
import { structures } from "../../structures/mod.ts";
import {
DiscordGatewayPayload,
DiscordMessageReactionRemove,
} from "../../types/gateway.ts";
export async function handleMessageReactionRemove(
data: DiscordPayload,
data: DiscordGatewayPayload,
) {
const payload = data.d as MessageReactionPayload;
const payload = data.d as DiscordMessageReactionRemove;
const message = await cacheHandlers.get("messages", payload.message_id);
if (message) {
@@ -1,10 +1,14 @@
import { eventHandlers } from "../../bot.ts";
import { cacheHandlers } from "../../cache.ts";
import {
DiscordGatewayPayload,
DiscordMessageReactionRemoveAll,
} from "../../types/gateway.ts";
export async function handleMessageReactionRemoveAll(
data: DiscordPayload,
data: DiscordGatewayPayload,
) {
const payload = data.d as BaseMessageReactionPayload;
const payload = data.d as DiscordMessageReactionRemoveAll;
const message = await cacheHandlers.get("messages", payload.message_id);
if (message?.reactions) {
@@ -13,5 +17,5 @@ export async function handleMessageReactionRemoveAll(
await cacheHandlers.set("messages", payload.message_id, message);
}
eventHandlers.reactionRemoveAll?.(data.d as BaseMessageReactionPayload);
eventHandlers.reactionRemoveAll?.(data.d);
}
@@ -1,10 +1,14 @@
import { botID, eventHandlers } from "../../bot.ts";
import { eventHandlers } from "../../bot.ts";
import { cacheHandlers } from "../../cache.ts";
import {
DiscordGatewayPayload,
DiscordMessageReactionRemoveEmoji,
} from "../../types/gateway.ts";
export async function handleMessageReactionRemoveEmoji(
data: DiscordPayload,
data: DiscordGatewayPayload,
) {
const payload = data.d as MessageReactionRemoveEmojiPayload;
const payload = data.d as DiscordMessageReactionRemoveEmoji;
const message = await cacheHandlers.get("messages", payload.message_id);
if (message?.reactions) {
@@ -20,6 +24,6 @@ export async function handleMessageReactionRemoveEmoji(
}
eventHandlers.reactionRemoveEmoji?.(
data.d as MessageReactionRemoveEmojiPayload,
data.d,
);
}
+4 -3
View File
@@ -1,9 +1,10 @@
import { eventHandlers } from "../../bot.ts";
import { structures } from "../../structures/mod.ts";
import { cacheHandlers } from "../../cache.ts";
import { structures } from "../../structures/mod.ts";
import { DiscordGatewayPayload } from "../../types/gateway.ts";
export async function handleMessageUpdate(data: DiscordPayload) {
const payload = data.d as MessageCreateOptions;
export async function handleMessageUpdate(data: DiscordGatewayPayload) {
const payload = data.d as DiscordMessage;
const channel = await cacheHandlers.get("channels", payload.channel_id);
if (!channel) return;
+2 -1
View File
@@ -1,7 +1,8 @@
import { eventHandlers } from "../../bot.ts";
import { cacheHandlers } from "../../cache.ts";
import { DiscordGatewayPayload } from "../../types/gateway.ts";
export async function handlePresenceUpdate(data: DiscordPayload) {
export async function handlePresenceUpdate(data: DiscordGatewayPayload) {
const payload = data.d as PresenceUpdatePayload;
const oldPresence = await cacheHandlers.get("presences", payload.user.id);
await cacheHandlers.set("presences", payload.user.id, payload);
+4 -3
View File
@@ -7,17 +7,18 @@ import {
import { cache, cacheHandlers } from "../../cache.ts";
import { initialMemberLoadQueue } from "../../structures/guild.ts";
import { structures } from "../../structures/mod.ts";
import { DiscordGatewayPayload, DiscordReady } from "../../types/gateway.ts";
import { delay } from "../../util/utils.ts";
import { allowNextShard, basicShards } from "../../ws/mod.ts";
export async function handleReady(
data: DiscordPayload,
data: DiscordGatewayPayload,
shardID: number,
) {
// The bot has already started, the last shard is resumed, however.
if (cache.isReady) return;
const payload = data.d as ReadyPayload;
const payload = data.d as DiscordReady;
setBotID(payload.user.id);
setApplicationID(payload.application.id);
@@ -44,7 +45,7 @@ export async function handleReady(
// Don't pass the shard itself because unavailableGuilds won't be updated by the GUILD_CREATE event
/** This function checks if the shard is fully loaded */
function checkReady(payload: ReadyPayload, shardID: number, now: number) {
function checkReady(payload: DiscordReady, shardID: number, now: number) {
const shard = basicShards.get(shardID);
if (!shard) return;
+7 -3
View File
@@ -1,9 +1,13 @@
import { eventHandlers } from "../../bot.ts";
import { structures } from "../../structures/mod.ts";
import { cacheHandlers } from "../../cache.ts";
import { structures } from "../../structures/mod.ts";
import {
DiscordGatewayPayload,
DiscordGuildRoleCreateUpdate,
} from "../../types/gateway.ts";
export async function handleGuildRoleCreate(data: DiscordPayload) {
const payload = data.d as GuildRolePayload;
export async function handleGuildRoleCreate(data: DiscordGatewayPayload) {
const payload = data.d as DiscordGuildRoleCreateUpdate;
const guild = await cacheHandlers.get("guilds", payload.guild_id);
if (!guild) return;
+6 -2
View File
@@ -1,8 +1,12 @@
import { eventHandlers } from "../../bot.ts";
import { cacheHandlers } from "../../cache.ts";
import {
DiscordGatewayPayload,
DiscordGuildRoleDelete,
} from "../../types/gateway.ts";
export async function handleGuildRoleDelete(data: DiscordPayload) {
const payload = data.d as GuildRoleDeletePayload;
export async function handleGuildRoleDelete(data: DiscordGatewayPayload) {
const payload = data.d as DiscordGuildRoleDelete;
const guild = await cacheHandlers.get("guilds", payload.guild_id);
if (!guild) return;
+7 -3
View File
@@ -1,9 +1,13 @@
import { eventHandlers } from "../../bot.ts";
import { structures } from "../../structures/mod.ts";
import { cacheHandlers } from "../../cache.ts";
import { structures } from "../../structures/mod.ts";
import {
DiscordGatewayPayload,
DiscordGuildRoleCreateUpdate,
} from "../../types/gateway.ts";
export async function handleGuildRoleUpdate(data: DiscordPayload) {
const payload = data.d as GuildRolePayload;
export async function handleGuildRoleUpdate(data: DiscordGatewayPayload) {
const payload = data.d as DiscordGuildRoleCreateUpdate;
const guild = await cacheHandlers.get("guilds", payload.guild_id);
if (!guild) return;