From 784f647ab45347f5cb3bdb1bac9a67393fb6cc58 Mon Sep 17 00:00:00 2001 From: Vermium Sifell Date: Tue, 12 Apr 2022 23:26:35 +0200 Subject: [PATCH] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20messageUpdate=20event?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/events/messageUpdate/index.ts | 30 ++++++++------------- src/events/messageUpdate/modules/counter.ts | 28 +++++++++++++++++++ 2 files changed, 39 insertions(+), 19 deletions(-) create mode 100644 src/events/messageUpdate/modules/counter.ts diff --git a/src/events/messageUpdate/index.ts b/src/events/messageUpdate/index.ts index e234150..2aafc9d 100644 --- a/src/events/messageUpdate/index.ts +++ b/src/events/messageUpdate/index.ts @@ -1,27 +1,19 @@ -import counters from "../../database/schemas/counter"; +// Dependencies import { Message } from "discord.js"; +import logger from "../../logger"; + +// Modules +import counter from "./modules/counter"; + export default { name: "messageUpdate", async execute(oldMessage: Message, newMessage: Message) { - // If message author is bot - if (newMessage.author.bot) return; + const { author } = newMessage; - // Get counter object - const counter = await counters.findOne({ - guildId: newMessage.guild?.id, - channelId: newMessage.channel.id, - }); + logger.silly({ oldMessage, newMessage }); - // If counter for the message channel - if (counter) { - // If message content is not strictly the same as counter word - if (newMessage.content !== counter.word) { - // Delete the message - await newMessage.delete(); - await newMessage.channel.send( - `${newMessage.author} said **${counter.word}**.` - ); - } - } + if (author?.bot) return; + + await counter(newMessage); }, }; diff --git a/src/events/messageUpdate/modules/counter.ts b/src/events/messageUpdate/modules/counter.ts new file mode 100644 index 0000000..d330b4e --- /dev/null +++ b/src/events/messageUpdate/modules/counter.ts @@ -0,0 +1,28 @@ +// Dependencies +import { Message } from "discord.js"; + +// Models +import counterSchema from "../../../database/schemas/counter"; +import logger from "../../../logger"; + +export default async (message: Message) => { + const { guild, channel, author, content } = message; + + const counter = await counterSchema?.findOne({ + guildId: guild?.id, + channelId: channel?.id, + }); + + if (counter === null) return; + const { word } = counter; + if (content === word) return; + + await message + ?.delete() + ?.then(async () => { + await channel?.send(`${author} said **${word}**.`); + }) + ?.catch(async (error) => { + logger.error(new Error(error)); + }); +};