From a0251568f7945a09f98df7ba4c1f015dbceb5666 Mon Sep 17 00:00:00 2001 From: Skillz Date: Sat, 12 Sep 2020 12:06:25 -0400 Subject: [PATCH] bans as controllers --- src/controllers/bans.ts | 26 ++++++++++++++++++++++++++ src/controllers/mod.ts | 6 ++++++ src/module/shardingManager.ts | 12 ------------ src/types/discord.ts | 4 +++- 4 files changed, 35 insertions(+), 13 deletions(-) create mode 100644 src/controllers/bans.ts diff --git a/src/controllers/bans.ts b/src/controllers/bans.ts new file mode 100644 index 000000000..4b83c20f5 --- /dev/null +++ b/src/controllers/bans.ts @@ -0,0 +1,26 @@ +import { eventHandlers } from "../module/client.ts"; +import { DiscordPayload } from "../types/discord.ts"; +import { GuildBanPayload } from "../types/guild.ts"; +import { cache } from "../utils/cache.ts"; + +export function handleInternalGuildBanAdd(data: DiscordPayload) { + if (data.t !== "GUILD_BAN_ADD") return; + + const payload = data.d as GuildBanPayload; + const guild = cache.guilds.get(payload.guild_id); + if (!guild) return; + + const member = guild.members.get(payload.user.id); + eventHandlers.guildBanAdd?.(guild, member || payload.user); +} + +export function handleInternalGuildBanRemove(data: DiscordPayload) { + if (data.t !== "GUILD_BAN_ADD") return; + + const payload = data.d as GuildBanPayload; + const guild = cache.guilds.get(payload.guild_id); + if (!guild) return; + + const member = guild.members.get(payload.user.id); + eventHandlers.guildBanRemove?.(guild, member || payload.user); +} diff --git a/src/controllers/mod.ts b/src/controllers/mod.ts index 5c184510f..dc88f18eb 100644 --- a/src/controllers/mod.ts +++ b/src/controllers/mod.ts @@ -1,3 +1,7 @@ +import { + handleInternalGuildBanAdd, + handleInternalGuildBanRemove, +} from "./bans.ts"; import { handleInternalChannelCreate, handleInternalChannelDelete, @@ -18,4 +22,6 @@ export let controllers = { GUILD_CREATE: handleInternalGuildCreate, GUILD_DELETE: handleInternalGuildDelete, GUILD_UPDATE: handleInternalGuildUpdate, + GUILD_BAN_ADD: handleInternalGuildBanAdd, + GUILD_BAN_REMOVE: handleInternalGuildBanRemove, }; diff --git a/src/module/shardingManager.ts b/src/module/shardingManager.ts index 0e649e3a0..9d5c58ad1 100644 --- a/src/module/shardingManager.ts +++ b/src/module/shardingManager.ts @@ -134,18 +134,6 @@ export async function handleDiscordPayload( // Run the appropriate controller for this event. controllers[data.t]?.(data, shardID); - if (data.t && ["GUILD_BAN_ADD", "GUILD_BAN_REMOVE"].includes(data.t)) { - const options = data.d as GuildBanPayload; - const guild = cache.guilds.get(options.guild_id); - if (!guild) return; - - const member = guild.members.get(options.user.id); - - return data.t === "GUILD_BAN_ADD" - ? eventHandlers.guildBanAdd?.(guild, member || options.user) - : eventHandlers.guildBanRemove?.(guild, member || options.user); - } - if (data.t === "GUILD_EMOJIS_UPDATE") { const options = data.d as GuildEmojisUpdatePayload; const guild = cache.guilds.get(options.guild_id); diff --git a/src/types/discord.ts b/src/types/discord.ts index 6e11f2cfd..85e5ca87f 100644 --- a/src/types/discord.ts +++ b/src/types/discord.ts @@ -18,7 +18,9 @@ export interface DiscordPayload { | "CHANNEL_DELETE" | "GUILD_CREATE" | "GUILD_DELETE" - | "GUILD_UPDATE"; + | "GUILD_UPDATE" + | "GUILD_BAN_ADD" + | "GUILD_BAN_REMOVE"; } export interface DiscordBotGatewayData {