refactor!: move dirs outside of src/ (#2032)

This commit is contained in:
Skillz4Killz
2022-02-11 09:49:53 +00:00
committed by GitHub
parent 471ef5cb6c
commit 8aaea9f339
594 changed files with 84 additions and 66 deletions
+11
View File
@@ -0,0 +1,11 @@
import type { Channel } from "../../types/channels/channel.ts";
import type { DiscordGatewayPayload } from "../../types/gateway/gatewayPayload.ts";
import { SnakeCasedPropertiesDeep } from "../../types/util.ts";
import type { Bot } from "../../bot.ts";
export async function handleChannelCreate(bot: Bot, payload: DiscordGatewayPayload) {
const channel = bot.transformers.channel(bot, { channel: payload.d as SnakeCasedPropertiesDeep<Channel> });
bot.events.channelCreate(bot, channel);
}
+17
View File
@@ -0,0 +1,17 @@
import type { Channel } from "../../types/channels/channel.ts";
import type { DiscordGatewayPayload } from "../../types/gateway/gatewayPayload.ts";
import type { Bot } from "../../bot.ts";
import { SnakeCasedPropertiesDeep } from "../../types/util.ts";
export async function handleChannelDelete(bot: Bot, data: DiscordGatewayPayload) {
const payload = data.d as SnakeCasedPropertiesDeep<Channel>;
if (!payload.guild_id) return;
bot.events.channelDelete(
bot,
bot.transformers.channel(bot, {
channel: payload,
guildId: payload.guild_id ? bot.transformers.snowflake(payload.guild_id) : undefined,
}),
);
}
+14
View File
@@ -0,0 +1,14 @@
import type { Bot } from "../../bot.ts";
import type { ChannelPinsUpdate } from "../../types/channels/channelPinsUpdate.ts";
import type { DiscordGatewayPayload } from "../../types/gateway/gatewayPayload.ts";
import { SnakeCasedPropertiesDeep } from "../../types/util.ts";
export async function handleChannelPinsUpdate(bot: Bot, data: DiscordGatewayPayload) {
const payload = data.d as SnakeCasedPropertiesDeep<ChannelPinsUpdate>;
bot.events.channelPinsUpdate(bot, {
guildId: payload.guild_id ? bot.transformers.snowflake(payload.guild_id) : undefined,
channelId: bot.transformers.snowflake(payload.channel_id),
lastPinTimestamp: payload.last_pin_timestamp ? Date.parse(payload.last_pin_timestamp) : undefined,
});
}
+11
View File
@@ -0,0 +1,11 @@
import type { Bot } from "../../bot.ts";
import type { Channel } from "../../types/channels/channel.ts";
import type { DiscordGatewayPayload } from "../../types/gateway/gatewayPayload.ts";
import { SnakeCasedPropertiesDeep } from "../../types/util.ts";
export async function handleChannelUpdate(bot: Bot, data: DiscordGatewayPayload) {
const payload = data.d as SnakeCasedPropertiesDeep<Channel>;
const channel = bot.transformers.channel(bot, { channel: payload });
bot.events.channelUpdate(bot, channel);
}
@@ -0,0 +1,15 @@
import type { Bot } from "../../bot.ts";
import type { StageInstance } from "../../types/channels/stageInstance.ts";
import type { DiscordGatewayPayload } from "../../types/gateway/gatewayPayload.ts";
import { SnakeCasedPropertiesDeep } from "../../types/util.ts";
export function handleStageInstanceCreate(bot: Bot, data: DiscordGatewayPayload) {
const payload = data.d as SnakeCasedPropertiesDeep<StageInstance>;
bot.events.stageInstanceCreate(bot, {
id: bot.transformers.snowflake(payload.id),
guildId: bot.transformers.snowflake(payload.guild_id),
channelId: bot.transformers.snowflake(payload.channel_id),
topic: payload.topic,
});
}
@@ -0,0 +1,15 @@
import type { Bot } from "../../bot.ts";
import type { StageInstance } from "../../types/channels/stageInstance.ts";
import type { DiscordGatewayPayload } from "../../types/gateway/gatewayPayload.ts";
import { SnakeCasedPropertiesDeep } from "../../types/util.ts";
export function handleStageInstanceDelete(bot: Bot, data: DiscordGatewayPayload) {
const payload = data.d as SnakeCasedPropertiesDeep<StageInstance>;
bot.events.stageInstanceDelete(bot, {
id: bot.transformers.snowflake(payload.id),
guildId: bot.transformers.snowflake(payload.guild_id),
channelId: bot.transformers.snowflake(payload.channel_id),
topic: payload.topic,
});
}
@@ -0,0 +1,15 @@
import type { Bot } from "../../bot.ts";
import type { StageInstance } from "../../types/channels/stageInstance.ts";
import type { DiscordGatewayPayload } from "../../types/gateway/gatewayPayload.ts";
import { SnakeCasedPropertiesDeep } from "../../types/util.ts";
export function handleStageInstanceUpdate(bot: Bot, data: DiscordGatewayPayload) {
const payload = data.d as SnakeCasedPropertiesDeep<StageInstance>;
bot.events.stageInstanceUpdate(bot, {
id: bot.transformers.snowflake(payload.id),
guildId: bot.transformers.snowflake(payload.guild_id),
channelId: bot.transformers.snowflake(payload.channel_id),
topic: payload.topic,
});
}
+10
View File
@@ -0,0 +1,10 @@
import { Bot } from "../../bot.ts";
import { Channel } from "../../types/channels/channel.ts";
import { DiscordGatewayPayload } from "../../types/gateway/gatewayPayload.ts";
import { SnakeCasedPropertiesDeep } from "../../types/util.ts";
export async function handleThreadCreate(bot: Bot, data: DiscordGatewayPayload) {
const payload = data.d as SnakeCasedPropertiesDeep<Channel>;
bot.events.threadCreate(bot, bot.transformers.channel(bot, { channel: payload }));
}
+9
View File
@@ -0,0 +1,9 @@
import { Bot } from "../../bot.ts";
import { Channel } from "../../types/channels/channel.ts";
import { DiscordGatewayPayload } from "../../types/gateway/gatewayPayload.ts";
import { SnakeCasedPropertiesDeep } from "../../types/util.ts";
export async function handleThreadDelete(bot: Bot, data: DiscordGatewayPayload) {
const payload = data.d as SnakeCasedPropertiesDeep<Channel>;
bot.events.threadDelete(bot, bot.transformers.channel(bot, { channel: payload }));
}
+20
View File
@@ -0,0 +1,20 @@
import { Bot } from "../../bot.ts";
import { ThreadListSync } from "../../types/channels/threads/threadListSync.ts";
import { DiscordGatewayPayload } from "../../types/gateway/gatewayPayload.ts";
import { SnakeCasedPropertiesDeep } from "../../types/util.ts";
export async function handleThreadListSync(bot: Bot, data: DiscordGatewayPayload) {
const payload = data.d as SnakeCasedPropertiesDeep<ThreadListSync>;
const guildId = bot.transformers.snowflake(payload.guild_id);
return {
guildId,
channelIds: payload.channel_ids?.map((id) => bot.transformers.snowflake(id)),
threads: payload.threads.map((thread) => bot.transformers.channel(bot, { channel: thread, guildId })),
members: payload.members.map((member) => ({
id: member.id ? bot.transformers.snowflake(member.id) : undefined,
userId: member.user_id ? bot.transformers.snowflake(member.user_id) : undefined,
joinTimestamp: Date.parse(member.join_timestamp),
})),
};
}
@@ -0,0 +1,14 @@
import { Bot } from "../../bot.ts";
import { ThreadMembersUpdate } from "../../types/channels/threads/threadMembersUpdate.ts";
import { DiscordGatewayPayload } from "../../types/gateway/gatewayPayload.ts";
import { SnakeCasedPropertiesDeep } from "../../types/util.ts";
export async function handleThreadMembersUpdate(bot: Bot, data: DiscordGatewayPayload) {
const payload = data.d as SnakeCasedPropertiesDeep<ThreadMembersUpdate>;
bot.events.threadMembersUpdate(bot, {
id: bot.transformers.snowflake(payload.id),
guildId: bot.transformers.snowflake(payload.guild_id),
addedMembers: payload.added_members?.map((member) => bot.transformers.threadMember(bot, member)),
removedMemberIds: payload.removed_member_ids?.map((id) => bot.transformers.snowflake(id)),
});
}
@@ -0,0 +1,7 @@
import { Bot } from "../../bot.ts";
import { DiscordGatewayPayload } from "../../types/gateway/gatewayPayload.ts";
export async function handleThreadMemberUpdate(bot: Bot, data: DiscordGatewayPayload) {
// This event is documented for completeness, but unlikely to be used by most bots
return;
}
+10
View File
@@ -0,0 +1,10 @@
import { Bot } from "../../bot.ts";
import { Channel } from "../../types/channels/channel.ts";
import { DiscordGatewayPayload } from "../../types/gateway/gatewayPayload.ts";
import { SnakeCasedPropertiesDeep } from "../../types/util.ts";
export async function handleThreadUpdate(bot: Bot, data: DiscordGatewayPayload) {
const payload = data.d as SnakeCasedPropertiesDeep<Channel>;
bot.events.threadUpdate(bot, bot.transformers.channel(bot, { channel: payload }));
}
+14
View File
@@ -0,0 +1,14 @@
import type { Bot } from "../../bot.ts";
import type { GuildEmojisUpdate } from "../../types/emojis/guildEmojisUpdate.ts";
import type { DiscordGatewayPayload } from "../../types/gateway/gatewayPayload.ts";
import { SnakeCasedPropertiesDeep } from "../../types/util.ts";
import { Collection } from "../../util/collection.ts";
export async function handleGuildEmojisUpdate(bot: Bot, data: DiscordGatewayPayload) {
const payload = data.d as SnakeCasedPropertiesDeep<GuildEmojisUpdate>;
bot.events.guildEmojisUpdate(bot, {
guildId: bot.transformers.snowflake(payload.guild_id),
emojis: new Collection(payload.emojis.map((emoji) => [bot.transformers.snowflake(emoji.id!), emoji])),
});
}
+9
View File
@@ -0,0 +1,9 @@
import type { Bot } from "../../bot.ts";
import type { DiscordGatewayPayload } from "../../types/gateway/gatewayPayload.ts";
import type { GuildBanAddRemove } from "../../types/guilds/guildBanAddRemove.ts";
import { SnakeCasedPropertiesDeep } from "../../types/util.ts";
export async function handleGuildBanAdd(bot: Bot, data: DiscordGatewayPayload) {
const payload = data.d as SnakeCasedPropertiesDeep<GuildBanAddRemove>;
bot.events.guildBanAdd(bot, bot.transformers.user(bot, payload.user), bot.transformers.snowflake(payload.guild_id));
}
+14
View File
@@ -0,0 +1,14 @@
import type { Bot } from "../../bot.ts";
import type { DiscordGatewayPayload } from "../../types/gateway/gatewayPayload.ts";
import type { GuildBanAddRemove } from "../../types/guilds/guildBanAddRemove.ts";
import { SnakeCasedPropertiesDeep } from "../../types/util.ts";
export async function handleGuildBanRemove(bot: Bot, data: DiscordGatewayPayload) {
const payload = data.d as SnakeCasedPropertiesDeep<GuildBanAddRemove>;
await bot.events.guildBanRemove(
bot,
bot.transformers.user(bot, payload.user),
bot.transformers.snowflake(payload.guild_id),
);
}
+9
View File
@@ -0,0 +1,9 @@
import type { Bot } from "../../bot.ts";
import type { DiscordGatewayPayload } from "../../types/gateway/gatewayPayload.ts";
import type { Guild } from "../../types/guilds/guild.ts";
import { SnakeCasedPropertiesDeep } from "../../types/util.ts";
export function handleGuildCreate(bot: Bot, data: DiscordGatewayPayload, shardId: number) {
const payload = data.d as SnakeCasedPropertiesDeep<Guild>;
bot.events.guildCreate(bot, bot.transformers.guild(bot, { guild: payload, shardId }));
}
+9
View File
@@ -0,0 +1,9 @@
import type { Bot } from "../../bot.ts";
import type { DiscordGatewayPayload } from "../../types/gateway/gatewayPayload.ts";
import type { UnavailableGuild } from "../../types/guilds/unavailableGuild.ts";
import { SnakeCasedPropertiesDeep } from "../../types/util.ts";
export async function handleGuildDelete(bot: Bot, data: DiscordGatewayPayload, shardId: number) {
const payload = data.d as SnakeCasedPropertiesDeep<UnavailableGuild>;
bot.events.guildDelete(bot, bot.transformers.snowflake(payload.id), shardId);
}
@@ -0,0 +1,10 @@
import type { Bot } from "../../bot.ts";
import type { DiscordGatewayPayload } from "../../types/gateway/gatewayPayload.ts";
import type { GuildIntegrationsUpdate } from "../../types/integrations/guildIntegrationsUpdate.ts";
import { SnakeCasedPropertiesDeep } from "../../types/util.ts";
export async function handleGuildIntegrationsUpdate(bot: Bot, data: DiscordGatewayPayload) {
const payload = data.d as SnakeCasedPropertiesDeep<GuildIntegrationsUpdate>;
bot.events.integrationUpdate(bot, { guildId: bot.transformers.snowflake(payload.guild_id) });
}
+11
View File
@@ -0,0 +1,11 @@
import type { Bot } from "../../bot.ts";
import type { DiscordGatewayPayload } from "../../types/gateway/gatewayPayload.ts";
import type { Guild } from "../../types/guilds/guild.ts";
import { SnakeCasedPropertiesDeep } from "../../types/util.ts";
export function handleGuildLoaded(bot: Bot, data: DiscordGatewayPayload, shardId: number) {
const payload = data.d as SnakeCasedPropertiesDeep<Guild>;
const guild = bot.transformers.guild(bot, { guild: payload, shardId });
bot.events.guildLoaded(bot, guild);
}
+10
View File
@@ -0,0 +1,10 @@
import type { Bot } from "../../bot.ts";
import type { DiscordGatewayPayload } from "../../types/gateway/gatewayPayload.ts";
import type { Guild } from "../../types/guilds/guild.ts";
import { SnakeCasedPropertiesDeep } from "../../types/util.ts";
export async function handleGuildUpdate(bot: Bot, data: DiscordGatewayPayload, shardId: number) {
const payload = data.d as SnakeCasedPropertiesDeep<Guild>;
bot.events.guildUpdate(bot, bot.transformers.guild(bot, { guild: payload, shardId }));
}
@@ -0,0 +1,9 @@
import { ScheduledEvent } from "../../../types/guilds/scheduledEvents.ts";
import type { Bot } from "../../../bot.ts";
import type { DiscordGatewayPayload } from "../../../types/gateway/gatewayPayload.ts";
import { SnakeCasedPropertiesDeep } from "../../../types/util.ts";
export function handleGuildScheduledEventCreate(bot: Bot, data: DiscordGatewayPayload, shardId: number) {
const payload = data.d as SnakeCasedPropertiesDeep<ScheduledEvent>;
bot.events.scheduledEventCreate(bot, bot.transformers.scheduledEvent(bot, payload));
}
@@ -0,0 +1,9 @@
import { ScheduledEvent } from "../../../types/guilds/scheduledEvents.ts";
import type { Bot } from "../../../bot.ts";
import type { DiscordGatewayPayload } from "../../../types/gateway/gatewayPayload.ts";
import { SnakeCasedPropertiesDeep } from "../../../types/util.ts";
export function handleGuildScheduledEventDelete(bot: Bot, data: DiscordGatewayPayload) {
const payload = data.d as SnakeCasedPropertiesDeep<ScheduledEvent>;
bot.events.scheduledEventDelete(bot, bot.transformers.scheduledEvent(bot, payload));
}
@@ -0,0 +1,9 @@
import { ScheduledEvent } from "../../../types/guilds/scheduledEvents.ts";
import type { Bot } from "../../../bot.ts";
import type { DiscordGatewayPayload } from "../../../types/gateway/gatewayPayload.ts";
import { SnakeCasedPropertiesDeep } from "../../../types/util.ts";
export function handleGuildScheduledEventUpdate(bot: Bot, data: DiscordGatewayPayload) {
const payload = data.d as SnakeCasedPropertiesDeep<ScheduledEvent>;
bot.events.scheduledEventUpdate(bot, bot.transformers.scheduledEvent(bot, payload));
}
@@ -0,0 +1,14 @@
import type { Bot } from "../../../bot.ts";
import type { DiscordGatewayPayload } from "../../../types/gateway/gatewayPayload.ts";
import { ScheduledEventUserAdd } from "../../../types/guilds/scheduledEvents.ts";
import { SnakeCasedPropertiesDeep } from "../../../types/util.ts";
export function handleGuildScheduledEventUserAdd(bot: Bot, data: DiscordGatewayPayload) {
const payload = data.d as SnakeCasedPropertiesDeep<ScheduledEventUserAdd>;
return bot.events.scheduledEventUserAdd(bot, {
guildScheduledEventId: bot.transformers.snowflake(payload.guild_scheduled_event_id),
userId: bot.transformers.snowflake(payload.user_id),
guildId: bot.transformers.snowflake(payload.guild_id),
});
}
@@ -0,0 +1,14 @@
import type { Bot } from "../../../bot.ts";
import type { DiscordGatewayPayload } from "../../../types/gateway/gatewayPayload.ts";
import { ScheduledEventUserRemove } from "../../../types/guilds/scheduledEvents.ts";
import { SnakeCasedPropertiesDeep } from "../../../types/util.ts";
export function handleGuildScheduledEventUserRemove(bot: Bot, data: DiscordGatewayPayload) {
const payload = data.d as SnakeCasedPropertiesDeep<ScheduledEventUserRemove>;
return bot.events.scheduledEventUserRemove(bot, {
guildScheduledEventId: bot.transformers.snowflake(payload.guild_scheduled_event_id),
userId: bot.transformers.snowflake(payload.user_id),
guildId: bot.transformers.snowflake(payload.guild_id),
});
}
@@ -0,0 +1,11 @@
import { Bot } from "../../bot.ts";
import type { DiscordGatewayPayload } from "../../types/gateway/gatewayPayload.ts";
import type { IntegrationCreateUpdate } from "../../types/integrations/integrationCreateUpdate.ts";
import { SnakeCasedPropertiesDeep } from "../../types/util.ts";
export function handleIntegrationCreate(bot: Bot, data: DiscordGatewayPayload) {
bot.events.integrationCreate(
bot,
bot.transformers.integration(bot, data.d as SnakeCasedPropertiesDeep<IntegrationCreateUpdate>),
);
}
@@ -0,0 +1,14 @@
import { Bot } from "../../bot.ts";
import type { DiscordGatewayPayload } from "../../types/gateway/gatewayPayload.ts";
import type { IntegrationDelete } from "../../types/integrations/integrationDelete.ts";
import { SnakeCasedPropertiesDeep } from "../../types/util.ts";
export function handleIntegrationDelete(bot: Bot, data: DiscordGatewayPayload) {
const payload = data.d as SnakeCasedPropertiesDeep<IntegrationDelete>;
bot.events.integrationDelete(bot, {
id: bot.transformers.snowflake(payload.id),
guildId: bot.transformers.snowflake(payload.guild_id),
applicationId: payload.application_id ? bot.transformers.snowflake(payload.application_id) : undefined,
});
}
@@ -0,0 +1,11 @@
import { Bot } from "../../bot.ts";
import type { DiscordGatewayPayload } from "../../types/gateway/gatewayPayload.ts";
import type { IntegrationCreateUpdate } from "../../types/integrations/integrationCreateUpdate.ts";
import { SnakeCasedPropertiesDeep } from "../../types/util.ts";
export function handleIntegrationUpdate(bot: Bot, data: DiscordGatewayPayload) {
bot.events.integrationUpdate(
bot,
bot.transformers.integration(bot, data.d as SnakeCasedPropertiesDeep<IntegrationCreateUpdate>),
);
}
@@ -0,0 +1,9 @@
import { Bot } from "../../bot.ts";
import type { DiscordGatewayPayload } from "../../types/gateway/gatewayPayload.ts";
import type { Interaction } from "../../types/interactions/interaction.ts";
import { SnakeCasedPropertiesDeep } from "../../types/util.ts";
export async function handleInteractionCreate(bot: Bot, data: DiscordGatewayPayload) {
bot.cache.unrepliedInteractions.add(bot.transformers.snowflake((data.d as SnakeCasedPropertiesDeep<Interaction>).id));
bot.events.interactionCreate(bot, bot.transformers.interaction(bot, data.d as SnakeCasedPropertiesDeep<Interaction>));
}
+8
View File
@@ -0,0 +1,8 @@
import { Bot } from "../../bot.ts";
import type { DiscordGatewayPayload } from "../../types/gateway/gatewayPayload.ts";
import type { InviteCreate } from "../../types/invites/inviteCreate.ts";
import { SnakeCasedPropertiesDeep } from "../../types/util.ts";
export function handleInviteCreate(bot: Bot, data: DiscordGatewayPayload) {
bot.events.inviteCreate(bot, bot.transformers.invite(bot, data.d as SnakeCasedPropertiesDeep<InviteCreate>));
}
+17
View File
@@ -0,0 +1,17 @@
import { Bot } from "../../bot.ts";
import type { DiscordGatewayPayload } from "../../types/gateway/gatewayPayload.ts";
import type { InviteDelete } from "../../types/invites/inviteDelete.ts";
import { SnakeCasedPropertiesDeep } from "../../types/util.ts";
export function handleInviteDelete(bot: Bot, data: DiscordGatewayPayload) {
const payload = data.d as SnakeCasedPropertiesDeep<InviteDelete>;
bot.events.inviteDelete(bot, {
/** The channel of the invite */
channelId: bot.transformers.snowflake(payload.channel_id),
/** The guild of the invite */
guildId: payload.guild_id ? bot.transformers.snowflake(payload.guild_id) : undefined,
/** The unique invite code */
code: payload.code,
});
}
+39
View File
@@ -0,0 +1,39 @@
import { Bot } from "../../bot.ts";
import { statusTypes } from "../../transformers/presence.ts";
import type { DiscordGatewayPayload } from "../../types/gateway/gatewayPayload.ts";
import type { GuildMembersChunk } from "../../types/members/guildMembersChunk.ts";
import { SnakeCasedPropertiesDeep } from "../../types/util.ts";
export async function handleGuildMembersChunk(bot: Bot, data: DiscordGatewayPayload) {
const payload = data.d as SnakeCasedPropertiesDeep<GuildMembersChunk>;
const guildId = bot.transformers.snowflake(payload.guild_id);
if (payload.nonce && payload.chunk_index >= payload.chunk_count - 1) {
bot.cache.fetchAllMembersProcessingRequests.get(payload.nonce)?.(
`Member fetching complete. Nonce: ${payload.nonce}`,
);
}
return {
guildId,
members: payload.members.map((m) =>
bot.transformers.member(bot, m, guildId, bot.transformers.snowflake(m.user.id))
),
chunkIndex: payload.chunk_index,
chunkCount: payload.chunk_count,
notFound: payload.not_found?.map((id) => bot.transformers.snowflake(id)),
presences: payload.presences?.map((presence) => ({
user: bot.transformers.user(bot, presence.user),
guildId,
status: statusTypes[presence.status],
activities: presence.activities.map((activity) => bot.transformers.activity(bot, activity)),
clientStatus: {
desktop: presence.client_status.desktop,
mobile: presence.client_status.mobile,
web: presence.client_status.web,
},
})),
nonce: payload.nonce,
};
}
+12
View File
@@ -0,0 +1,12 @@
import { Bot } from "../../bot.ts";
import type { DiscordGatewayPayload } from "../../types/gateway/gatewayPayload.ts";
import type { GuildMemberAdd } from "../../types/members/guildMemberAdd.ts";
import { SnakeCasedPropertiesDeep } from "../../types/util.ts";
export async function handleGuildMemberAdd(bot: Bot, data: DiscordGatewayPayload) {
const payload = data.d as SnakeCasedPropertiesDeep<GuildMemberAdd>;
const guildId = bot.transformers.snowflake(payload.guild_id);
const user = bot.transformers.user(bot, payload.user);
const member = bot.transformers.member(bot, payload, guildId, user.id);
bot.events.guildMemberAdd(bot, member, user);
}
+12
View File
@@ -0,0 +1,12 @@
import { Bot } from "../../bot.ts";
import type { DiscordGatewayPayload } from "../../types/gateway/gatewayPayload.ts";
import type { GuildMemberRemove } from "../../types/members/guildMemberRemove.ts";
import { SnakeCasedPropertiesDeep } from "../../types/util.ts";
export async function handleGuildMemberRemove(bot: Bot, data: DiscordGatewayPayload) {
const payload = data.d as SnakeCasedPropertiesDeep<GuildMemberRemove>;
const guildId = bot.transformers.snowflake(payload.guild_id);
const user = bot.transformers.user(bot, payload.user);
bot.events.guildMemberRemove(bot, user, guildId);
}
+15
View File
@@ -0,0 +1,15 @@
import { Bot } from "../../bot.ts";
import type { DiscordGatewayPayload } from "../../types/gateway/gatewayPayload.ts";
import type { GuildMemberUpdate } from "../../types/members/guildMemberUpdate.ts";
import { SnakeCasedPropertiesDeep } from "../../types/util.ts";
export async function handleGuildMemberUpdate(bot: Bot, data: DiscordGatewayPayload) {
const payload = data.d as SnakeCasedPropertiesDeep<GuildMemberUpdate>;
const user = bot.transformers.user(bot, payload.user);
bot.events.guildMemberUpdate(
bot,
bot.transformers.member(bot, payload, bot.transformers.snowflake(payload.guild_id), user.id),
user,
);
}
+10
View File
@@ -0,0 +1,10 @@
import { Bot } from "../../bot.ts";
import type { DiscordGatewayPayload } from "../../types/gateway/gatewayPayload.ts";
import type { Message } from "../../types/messages/message.ts";
import { SnakeCasedPropertiesDeep } from "../../types/util.ts";
export async function handleMessageCreate(bot: Bot, data: DiscordGatewayPayload) {
const payload = data.d as SnakeCasedPropertiesDeep<Message>;
bot.events.messageCreate(bot, bot.transformers.message(bot, payload));
}
+14
View File
@@ -0,0 +1,14 @@
import { Bot } from "../../bot.ts";
import type { DiscordGatewayPayload } from "../../types/gateway/gatewayPayload.ts";
import type { MessageDelete } from "../../types/messages/messageDelete.ts";
import { SnakeCasedPropertiesDeep } from "../../types/util.ts";
export async function handleMessageDelete(bot: Bot, data: DiscordGatewayPayload) {
const payload = data.d as SnakeCasedPropertiesDeep<MessageDelete>;
bot.events.messageDelete(bot, {
id: bot.transformers.snowflake(payload.id),
channelId: bot.transformers.snowflake(payload.channel_id),
guildId: payload.guild_id ? bot.transformers.snowflake(payload.guild_id) : undefined,
});
}
+14
View File
@@ -0,0 +1,14 @@
import { Bot } from "../../bot.ts";
import type { DiscordGatewayPayload } from "../../types/gateway/gatewayPayload.ts";
import type { MessageDeleteBulk } from "../../types/messages/messageDeleteBulk.ts";
import { SnakeCasedPropertiesDeep } from "../../types/util.ts";
export async function handleMessageDeleteBulk(bot: Bot, data: DiscordGatewayPayload) {
const payload = data.d as SnakeCasedPropertiesDeep<MessageDeleteBulk>;
return {
ids: payload.ids.map((id) => bot.transformers.snowflake(id)),
channelId: bot.transformers.snowflake(payload.channel_id),
guildId: payload.guild_id ? bot.transformers.snowflake(payload.guild_id) : undefined,
};
}
+19
View File
@@ -0,0 +1,19 @@
import { Bot } from "../../bot.ts";
import type { DiscordGatewayPayload } from "../../types/gateway/gatewayPayload.ts";
import type { MessageReactionAdd } from "../../types/messages/messageReactionAdd.ts";
import { SnakeCasedPropertiesDeep } from "../../types/util.ts";
export async function handleMessageReactionAdd(bot: Bot, data: DiscordGatewayPayload) {
const payload = data.d as SnakeCasedPropertiesDeep<MessageReactionAdd>;
const guildId = payload.guild_id ? bot.transformers.snowflake(payload.guild_id) : undefined;
const userId = bot.transformers.snowflake(payload.user_id);
bot.events.reactionAdd(bot, {
userId,
channelId: bot.transformers.snowflake(payload.channel_id),
messageId: bot.transformers.snowflake(payload.message_id),
guildId,
member: payload.member && guildId ? bot.transformers.member(bot, payload.member, guildId, userId) : undefined,
emoji: bot.transformers.emoji(bot, payload.emoji),
});
}
@@ -0,0 +1,16 @@
import { Bot } from "../../bot.ts";
import type { DiscordGatewayPayload } from "../../types/gateway/gatewayPayload.ts";
import type { MessageReactionRemove } from "../../types/messages/messageReactionRemove.ts";
import { SnakeCasedPropertiesDeep } from "../../types/util.ts";
export async function handleMessageReactionRemove(bot: Bot, data: DiscordGatewayPayload) {
const payload = data.d as SnakeCasedPropertiesDeep<MessageReactionRemove>;
bot.events.reactionRemove(bot, {
userId: bot.transformers.snowflake(payload.user_id),
channelId: bot.transformers.snowflake(payload.channel_id),
messageId: bot.transformers.snowflake(payload.message_id),
guildId: payload.guild_id ? bot.transformers.snowflake(payload.guild_id) : undefined,
emoji: bot.transformers.emoji(bot, payload.emoji),
});
}
@@ -0,0 +1,14 @@
import { Bot } from "../../bot.ts";
import type { DiscordGatewayPayload } from "../../types/gateway/gatewayPayload.ts";
import type { MessageReactionRemoveAll } from "../../types/messages/messageReactionRemoveAll.ts";
import { SnakeCasedPropertiesDeep } from "../../types/util.ts";
export async function handleMessageReactionRemoveAll(bot: Bot, data: DiscordGatewayPayload) {
const payload = data.d as SnakeCasedPropertiesDeep<MessageReactionRemoveAll>;
bot.events.reactionRemoveAll(bot, {
channelId: bot.transformers.snowflake(payload.channel_id),
messageId: bot.transformers.snowflake(payload.message_id),
guildId: payload.guild_id ? bot.transformers.snowflake(payload.guild_id) : undefined,
});
}
@@ -0,0 +1,15 @@
import { Bot } from "../../bot.ts";
import type { DiscordGatewayPayload } from "../../types/gateway/gatewayPayload.ts";
import type { MessageReactionRemoveEmoji } from "../../types/messages/messageReactionRemoveEmoji.ts";
import { SnakeCasedPropertiesDeep } from "../../types/util.ts";
export async function handleMessageReactionRemoveEmoji(bot: Bot, data: DiscordGatewayPayload) {
const payload = data.d as SnakeCasedPropertiesDeep<MessageReactionRemoveEmoji>;
bot.events.reactionRemoveEmoji(bot, {
channelId: bot.transformers.snowflake(payload.channel_id),
messageId: bot.transformers.snowflake(payload.message_id),
guildId: payload.guild_id ? bot.transformers.snowflake(payload.guild_id) : undefined,
emoji: bot.transformers.emoji(bot, payload.emoji),
});
}
+11
View File
@@ -0,0 +1,11 @@
import { Bot } from "../../bot.ts";
import type { DiscordGatewayPayload } from "../../types/gateway/gatewayPayload.ts";
import type { Message } from "../../types/messages/message.ts";
import { SnakeCasedPropertiesDeep } from "../../types/util.ts";
export async function handleMessageUpdate(bot: Bot, data: DiscordGatewayPayload) {
const payload = data.d as SnakeCasedPropertiesDeep<Message>;
if (!payload.edited_timestamp) return;
bot.events.messageUpdate(bot, bot.transformers.message(bot, payload));
}
+9
View File
@@ -0,0 +1,9 @@
import { Bot } from "../../bot.ts";
import type { PresenceUpdate } from "../../types/activity/presenceUpdate.ts";
import type { DiscordGatewayPayload } from "../../types/gateway/gatewayPayload.ts";
import { SnakeCasedPropertiesDeep } from "../../types/util.ts";
export async function handlePresenceUpdate(bot: Bot, data: DiscordGatewayPayload) {
const payload = data.d as SnakeCasedPropertiesDeep<PresenceUpdate>;
bot.events.presenceUpdate(bot, bot.transformers.presence(bot, payload));
}
+24
View File
@@ -0,0 +1,24 @@
import { Bot } from "../../bot.ts";
import type { DiscordGatewayPayload } from "../../types/gateway/gatewayPayload.ts";
import type { DiscordReady } from "../../types/gateway/ready.ts";
export function handleReady(bot: Bot, data: DiscordGatewayPayload, shardId: number) {
const payload = data.d as DiscordReady;
// Triggered on each shard
bot.events.ready(
bot,
{
shardId,
v: payload.v,
user: bot.transformers.user(bot, payload.user),
guilds: payload.guilds.map((p) => bot.transformers.snowflake(p.id)),
sessionId: payload.session_id,
shard: payload.shard,
applicationId: bot.transformers.snowflake(payload.application.id),
},
payload,
);
if (!bot.id) bot.id = bot.transformers.snowflake(payload.user.id);
if (!bot.applicationId) bot.applicationId = bot.transformers.snowflake(payload.application.id);
}
+19
View File
@@ -0,0 +1,19 @@
import { Bot } from "../../bot.ts";
import type { DiscordGatewayPayload } from "../../types/gateway/gatewayPayload.ts";
import type { TypingStart } from "../../types/misc/typingStart.ts";
import { SnakeCasedPropertiesDeep } from "../../types/util.ts";
export function handleTypingStart(bot: Bot, data: DiscordGatewayPayload) {
const payload = data.d as SnakeCasedPropertiesDeep<TypingStart>;
const guildId = payload.guild_id ? bot.transformers.snowflake(payload.guild_id) : undefined;
const userId = bot.transformers.snowflake(payload.user_id);
bot.events.typingStart(bot, {
guildId,
channelId: bot.transformers.snowflake(payload.channel_id),
userId,
timestamp: payload.timestamp,
member: payload.member && guildId ? bot.transformers.member(bot, payload.member, guildId, userId) : undefined,
});
}
+9
View File
@@ -0,0 +1,9 @@
import { Bot } from "../../bot.ts";
import type { DiscordGatewayPayload } from "../../types/gateway/gatewayPayload.ts";
import type { User } from "../../types/users/user.ts";
import { SnakeCasedPropertiesDeep } from "../../types/util.ts";
export async function handleUserUpdate(bot: Bot, data: DiscordGatewayPayload) {
const payload = data.d as SnakeCasedPropertiesDeep<User>;
bot.events.botUpdate(bot, bot.transformers.user(bot, payload));
}
+76
View File
@@ -0,0 +1,76 @@
//channels
export * from "./channels/CHANNEL_CREATE.ts";
export * from "./channels/CHANNEL_DELETE.ts";
export * from "./channels/CHANNEL_PINS_UPDATE.ts";
export * from "./channels/CHANNEL_UPDATE.ts";
export * from "./channels/STAGE_INSTANCE_CREATE.ts";
export * from "./channels/STAGE_INSTANCE_UPDATE.ts";
export * from "./channels/STAGE_INSTANCE_DELETE.ts";
export * from "./channels/THREAD_CREATE.ts";
export * from "./channels/THREAD_DELETE.ts";
export * from "./channels/THREAD_LIST_SYNC.ts";
export * from "./channels/THREAD_MEMBERS_UPDATE.ts";
export * from "./channels/THREAD_MEMBER_UPDATE.ts";
export * from "./channels/THREAD_UPDATE.ts";
//emojis
export * from "./emojis/GUILD_EMOJIS_UPDATE.ts";
//guilds
export * from "./guilds/GUILD_BAN_ADD.ts";
export * from "./guilds/GUILD_BAN_REMOVE.ts";
export * from "./guilds/GUILD_CREATE.ts";
export * from "./guilds/GUILD_DELETE.ts";
export * from "./guilds/GUILD_INTEGRATIONS_UPDATE.ts";
export * from "./guilds/GUILD_UPDATE.ts";
//intergrations
export * from "./integrations/INTEGRATION_CREATE.ts";
export * from "./integrations/INTEGRATION_DELETE.ts";
export * from "./integrations/INTEGRATION_UPDATE.ts";
export * from "./interactions/INTERACTION_CREATE.ts";
//invites
export * from "./invites/INVITE_CREATE.ts";
//members
export * from "./members/GUILD_MEMBERS_CHUNK.ts";
export * from "./members/GUILD_MEMBER_ADD.ts";
export * from "./members/GUILD_MEMBER_REMOVE.ts";
export * from "./members/GUILD_MEMBER_UPDATE.ts";
//messages
export * from "./messages/MESSAGE_CREATE.ts";
export * from "./messages/MESSAGE_DELETE.ts";
export * from "./messages/MESSAGE_DELETE_BULK.ts";
export * from "./messages/MESSAGE_REACTION_ADD.ts";
export * from "./messages/MESSAGE_REACTION_REMOVE.ts";
export * from "./messages/MESSAGE_REACTION_REMOVE_ALL.ts";
export * from "./messages/MESSAGE_REACTION_REMOVE_EMOJI.ts";
export * from "./messages/MESSAGE_UPDATE.ts";
//misc
export * from "./misc/PRESENCE_UPDATE.ts";
export * from "./misc/READY.ts";
export * from "./misc/TYPING_START.ts";
export * from "./misc/USER_UPDATE.ts";
//roles
export * from "./roles/GUILD_ROLE_CREATE.ts";
export * from "./roles/GUILD_ROLE_DELETE.ts";
export * from "./roles/GUILD_ROLE_UPDATE.ts";
//voice
export * from "./voice/VOICE_SERVER_UPDATE.ts";
export * from "./voice/VOICE_STATE_UPDATE.ts";
//webhooks
export * from "./webhooks/WEBHOOKS_UPDATE.ts";
//guilds
export * from "./guilds/GUILD_LOADED_DD.ts";
export * from "./guilds/scheduledEvents/GUILD_SCHEDULED_EVENT_CREATE.ts";
export * from "./guilds/scheduledEvents/GUILD_SCHEDULED_EVENT_DELETE.ts";
export * from "./guilds/scheduledEvents/GUILD_SCHEDULED_EVENT_UPDATE.ts";
export * from "./guilds/scheduledEvents/GUILD_SCHEDULED_EVENT_USER_ADD.ts";
export * from "./guilds/scheduledEvents/GUILD_SCHEDULED_EVENT_USER_REMOVE.ts";
+12
View File
@@ -0,0 +1,12 @@
import { Bot } from "../../bot.ts";
import type { DiscordGatewayPayload } from "../../types/gateway/gatewayPayload.ts";
import type { GuildRoleCreate } from "../../types/guilds/guildRoleCreate.ts";
import { SnakeCasedPropertiesDeep } from "../../types/util.ts";
export async function handleGuildRoleCreate(bot: Bot, data: DiscordGatewayPayload) {
const payload = data.d as SnakeCasedPropertiesDeep<GuildRoleCreate>;
bot.events.roleCreate(
bot,
bot.transformers.role(bot, { role: payload.role, guildId: bot.transformers.snowflake(payload.guild_id) }),
);
}
+12
View File
@@ -0,0 +1,12 @@
import { Bot } from "../../bot.ts";
import type { DiscordGatewayPayload } from "../../types/gateway/gatewayPayload.ts";
import type { GuildRoleDelete } from "../../types/guilds/guildRoleDelete.ts";
import { SnakeCasedPropertiesDeep } from "../../types/util.ts";
export async function handleGuildRoleDelete(bot: Bot, data: DiscordGatewayPayload) {
const payload = data.d as SnakeCasedPropertiesDeep<GuildRoleDelete>;
bot.events.roleDelete(bot, {
roleId: bot.transformers.snowflake(payload.role_id),
guildId: bot.transformers.snowflake(payload.guild_id),
});
}
+13
View File
@@ -0,0 +1,13 @@
import { Bot } from "../../bot.ts";
import type { DiscordGatewayPayload } from "../../types/gateway/gatewayPayload.ts";
import type { GuildRoleUpdate } from "../../types/guilds/guildRoleUpdate.ts";
import { SnakeCasedPropertiesDeep } from "../../types/util.ts";
export async function handleGuildRoleUpdate(bot: Bot, data: DiscordGatewayPayload) {
const payload = data.d as SnakeCasedPropertiesDeep<GuildRoleUpdate>;
bot.events.roleUpdate(
bot,
bot.transformers.role(bot, { role: payload.role, guildId: bot.transformers.snowflake(payload.guild_id) }),
);
}
+14
View File
@@ -0,0 +1,14 @@
import { Bot } from "../../bot.ts";
import { SnakeCasedPropertiesDeep } from "../../types/util.ts";
import type { DiscordGatewayPayload } from "../../types/gateway/gatewayPayload.ts";
import type { VoiceServerUpdate } from "../../types/voice/voiceServerUpdate.ts";
export async function handleVoiceServerUpdate(bot: Bot, data: DiscordGatewayPayload) {
const payload = data.d as SnakeCasedPropertiesDeep<VoiceServerUpdate>;
bot.events.voiceServerUpdate(bot, {
token: payload.token,
guildId: bot.transformers.snowflake(payload.guild_id),
endpoint: payload.endpoint ?? undefined,
});
}
+31
View File
@@ -0,0 +1,31 @@
import type { DiscordGatewayPayload } from "../../types/gateway/gatewayPayload.ts";
import type { VoiceState } from "../../types/voice/voiceState.ts";
import { Bot } from "../../bot.ts";
import { SnakeCasedPropertiesDeep } from "../../types/util.ts";
export async function handleVoiceStateUpdate(bot: Bot, data: DiscordGatewayPayload) {
const payload = data.d as SnakeCasedPropertiesDeep<VoiceState>;
if (!payload.guild_id) return;
const guildId = bot.transformers.snowflake(payload.guild_id);
const userId = bot.transformers.snowflake(payload.user_id);
bot.events.voiceStateUpdate(bot, {
guildId,
userId,
channelId: payload.channel_id ? bot.transformers.snowflake(payload.channel_id) : undefined,
member: payload.member ? bot.transformers.member(bot, payload.member, guildId, userId) : undefined,
user: payload.member ? bot.transformers.user(bot, payload.member.user) : undefined,
sessionId: payload.session_id,
deaf: payload.deaf,
mute: payload.mute,
selfDeaf: payload.self_deaf,
selfMute: payload.self_mute,
selfStream: payload.self_stream,
selfVideo: payload.self_video,
suppress: payload.suppress,
requestToSpeakTimestamp: payload.request_to_speak_timestamp
? Date.parse(payload.request_to_speak_timestamp)
: undefined,
});
}
+12
View File
@@ -0,0 +1,12 @@
import type { DiscordGatewayPayload } from "../../types/gateway/gatewayPayload.ts";
import type { WebhookUpdate } from "../../types/webhooks/webhooksUpdate.ts";
import { Bot } from "../../bot.ts";
import { SnakeCasedPropertiesDeep } from "../../types/util.ts";
export function handleWebhooksUpdate(bot: Bot, data: DiscordGatewayPayload) {
const payload = data.d as SnakeCasedPropertiesDeep<WebhookUpdate>;
bot.events.webhooksUpdate(bot, {
channelId: bot.transformers.snowflake(payload.channel_id),
guildId: bot.transformers.snowflake(payload.guild_id),
});
}