diff --git a/src/events/guildMemberAdd/audits.ts b/src/events/guildMemberAdd/audits.ts index 0d61fa1..ccb80af 100644 --- a/src/events/guildMemberAdd/audits.ts +++ b/src/events/guildMemberAdd/audits.ts @@ -1,61 +1,24 @@ -import { ChannelType, EmbedBuilder, GuildMember } from "discord.js"; -import prisma from "../../handlers/database"; -import getEmbedConfig from "../../helpers/getEmbedData"; -import logger from "../../middlewares/logger"; +import { EmbedBuilder, GuildMember } from "discord.js"; +import auditLogger from "../../helpers/auditLogger"; export default { execute: async (member: GuildMember) => { - const { client, guild } = member; - - const getGuild = await prisma.guild.findUnique({ - where: { id: member.guild.id }, - }); - if (!getGuild) throw new Error("Guild not found"); - - if (getGuild.auditsEnabled !== true) return; - if (!getGuild.auditsChannelId) { - throw new Error("Channel not found"); - } - - const embedConfig = await getEmbedConfig(guild); - - const channel = client.channels.cache.get(getGuild.auditsChannelId); - - if (!channel) throw new Error("Channel not found"); - if (channel.type !== ChannelType.GuildText) { - throw new Error("Channel must be a text channel"); - } + const { guild } = member; const embed = new EmbedBuilder() - .setTimestamp(new Date()) .setAuthor({ name: "Member Joined", - iconURL: client.user?.displayAvatarURL(), + iconURL: member.displayAvatarURL(), }) - .setFooter({ - text: embedConfig.footerText, - iconURL: embedConfig.footerIcon, - }); - await channel - .send({ - embeds: [ - embed - .setColor(embedConfig.successColor) - .setDescription(`${member.user} - (${member.user.tag})`) - .addFields([ - { - name: "Account Age", - value: `${member.user.createdAt}`, - }, - ]), - ], - }) - .then(() => { - logger.debug(`Audit log sent for event guildMemberAdd`); - }) - .catch(() => { - throw new Error("Audit log failed to send"); - }); + .setDescription(`${member.user} - (${member.user.tag})`) + .addFields([ + { + name: "Account Age", + value: `${member.user.createdAt}`, + }, + ]); + + await auditLogger(guild, embed); }, }; diff --git a/src/events/guildMemberRemove/audits.ts b/src/events/guildMemberRemove/audits.ts index ff4bb59..5ad64ca 100644 --- a/src/events/guildMemberRemove/audits.ts +++ b/src/events/guildMemberRemove/audits.ts @@ -1,59 +1,24 @@ -import { ChannelType, EmbedBuilder, GuildMember } from "discord.js"; -import prisma from "../../handlers/database"; -import getEmbedConfig from "../../helpers/getEmbedData"; -import logger from "../../middlewares/logger"; +import { EmbedBuilder, GuildMember } from "discord.js"; +import auditLogger from "../../helpers/auditLogger"; export default { execute: async (member: GuildMember) => { - const { client, guild } = member; - - const getGuild = await prisma.guild.findUnique({ - where: { id: member.guild.id }, - }); - if (!getGuild) throw new Error("Guild not found"); - - if (getGuild.auditsEnabled !== true) return; - if (!getGuild.auditsChannelId) { - throw new Error("Channel not found"); - } - - const embedConfig = await getEmbedConfig(guild); - - const channel = client.channels.cache.get(getGuild.auditsChannelId); - if (channel?.type !== ChannelType.GuildText) { - throw new Error("Channel must be a text channel"); - } + const { guild } = member; const embed = new EmbedBuilder() - .setTimestamp(new Date()) .setAuthor({ name: "Member Left", - iconURL: client.user?.displayAvatarURL(), + iconURL: member.displayAvatarURL(), }) - .setFooter({ - text: embedConfig.footerText, - iconURL: embedConfig.footerIcon, - }); - channel - .send({ - embeds: [ - embed - .setColor(embedConfig.errorColor) - .setDescription(`${member.user} - (${member.user.tag})`) - .addFields([ - { - name: "Account Age", - value: `${member.user.createdAt}`, - }, - ]), - ], - }) - .then(() => { - logger.debug(`Audit log sent for event guildMemberRemove.`); - }) - .catch(() => { - throw new Error("Audit log failed to send"); - }); + .setDescription(`${member.user} - (${member.user.tag})`) + .addFields([ + { + name: "Account Age", + value: `${member.user.createdAt}`, + }, + ]); + + await auditLogger(guild, embed); }, }; diff --git a/src/events/messageCreate/modules/counters/index.ts b/src/events/messageCreate/modules/counters/index.ts index 70dd0e7..b6bd32d 100644 --- a/src/events/messageCreate/modules/counters/index.ts +++ b/src/events/messageCreate/modules/counters/index.ts @@ -35,7 +35,7 @@ export default { `${author.username} sent the last message therefor not allowing again.` ); await message.delete(); - return false; + return; } if (content !== channelCounter.triggerWord) { @@ -44,7 +44,7 @@ export default { ); await message.delete(); - return false; + return; } const updateGuildCounter = await prisma.guildCounter.update({ diff --git a/src/events/messageDelete/audits.ts b/src/events/messageDelete/audits.ts index 56a8ac1..812e920 100644 --- a/src/events/messageDelete/audits.ts +++ b/src/events/messageDelete/audits.ts @@ -1,66 +1,23 @@ -import { ChannelType, EmbedBuilder, Message } from "discord.js"; -import prisma from "../../handlers/database"; -import getEmbedConfig from "../../helpers/getEmbedData"; -import logger from "../../middlewares/logger"; +import { EmbedBuilder, Message } from "discord.js"; +import auditLogger from "../../helpers/auditLogger"; export default { execute: async (message: Message) => { - if (message === null) return; + const { guild } = message; + if (!guild) throw new Error("Guild unavailable"); - if (message.guild === null) return; - - const { footerText, footerIcon, successColor } = await getEmbedConfig( - message.guild - ); - - const getGuild = await prisma.guild.findUnique({ - where: { id: message.guild.id }, - }); - if (!getGuild) throw new Error("Guild not found"); - - const { client } = message; - - if (!getGuild) throw new Error("Guild not found"); - - if (getGuild.auditsEnabled !== true) return; - if (!getGuild.auditsChannelId) return; - - const channel = client.channels.cache.get(`${getGuild.auditsChannelId}`); - - if (!channel) return; - if (channel.type !== ChannelType.GuildText) return; - - channel - .send({ - embeds: [ - new EmbedBuilder() - .setColor(successColor) - .setAuthor({ - name: message.author.username, - iconURL: message.author.displayAvatarURL(), - }) - .setDescription( - ` - **Message sent by** ${message.author} **deleted in** ${message.channel} - ${message.content} - ` - ) - .setTimestamp() - .setFooter({ - text: footerText, - iconURL: footerIcon, - }), - ], + const embed = new EmbedBuilder() + .setAuthor({ + name: message.author.username, + iconURL: message.author.displayAvatarURL(), }) - .then(() => { - logger.info( - `Audit log sent for event messageDelete in guild ${message?.guild?.name} (${message?.guild?.id})` - ); - }) - .catch(() => { - throw new Error( - `Audit log failed to send for event messageDelete in guild ${message?.guild?.name} (${message?.guild?.id})` - ); - }); + .setDescription( + ` + **Message sent by** ${message.author} **deleted in** ${message.channel} + ${message.content} + ` + ); + + await auditLogger(guild, embed); }, }; diff --git a/src/events/messageDelete/modules/counter.ts b/src/events/messageDelete/modules/counter.ts index 989db4e..3dc0ab1 100644 --- a/src/events/messageDelete/modules/counter.ts +++ b/src/events/messageDelete/modules/counter.ts @@ -19,20 +19,24 @@ export default async (message: Message) => { }, }); - if (!channelCounter) throw new Error("No counter found in channel."); + if (!channelCounter) return logger.debug("No counter found in channel."); const messages = await message.channel.messages.fetch({ limit: 1 }); const lastMessage = messages.last(); - if (!lastMessage) return; + if (!lastMessage) return false; - if (content !== channelCounter.triggerWord) return; + if (content !== channelCounter.triggerWord) + return logger.silly("Message do not include the trigger word"); - if (lastMessage.author.id === message.author.id) return; + if (lastMessage.author.id === message.author.id) + return logger.debug("Same author as last message"); - channel?.send(`${author} said **${channelCounter.triggerWord}**.`); logger?.silly(`${author} said ${channelCounter.triggerWord} in ${channel}`); logger?.silly( `User: ${author?.tag} (${author?.id}) in guild: ${guild?.name} (${guild?.id}) said the counter word: ${channelCounter.triggerWord}` ); + return await channel.send( + `${author} said **${channelCounter.triggerWord}**.` + ); }; diff --git a/src/events/messageUpdate/audits.ts b/src/events/messageUpdate/audits.ts index a498385..5851edf 100644 --- a/src/events/messageUpdate/audits.ts +++ b/src/events/messageUpdate/audits.ts @@ -1,66 +1,23 @@ /* eslint-disable no-loops/no-loops */ -import { ChannelType, EmbedBuilder, Message } from "discord.js"; -import prisma from "../../handlers/database"; -import getEmbedConfig from "../../helpers/getEmbedData"; -import logger from "../../middlewares/logger"; +import { EmbedBuilder, Message } from "discord.js"; +import auditLogger from "../../helpers/auditLogger"; export default { execute: async (oldMessage: Message, newMessage: Message) => { - if (oldMessage === null) return; - if (newMessage === null) return; + const { guild } = newMessage; + if (!guild) throw new Error("Guild unavailable"); - if (oldMessage.guild === null) return; - if (newMessage.guild === null) return; - - const { footerText, footerIcon, successColor } = await getEmbedConfig( - newMessage.guild - ); - - const getGuild = await prisma.guild.findUnique({ - where: { id: oldMessage.guild.id }, - }); - if (!getGuild) throw new Error("Guild not found"); - - const { client } = oldMessage; - - if (getGuild.auditsEnabled !== true) return; - if (!getGuild.auditsChannelId) return; - - const channel = client.channels.cache.get(`${getGuild.auditsChannelId}`); - - if (!channel) return; - if (channel.type !== ChannelType.GuildText) return; - - channel - .send({ - embeds: [ - new EmbedBuilder() - .setColor(successColor) - .setAuthor({ - name: newMessage.author.username, - iconURL: newMessage.author.displayAvatarURL(), - }) - .setDescription( - ` - **Message edited in** ${newMessage.channel} [jump to message](https://discord.com/channels/${newMessage.guild.id}/${newMessage.channel.id}/${newMessage.id}) - ` - ) - .setTimestamp() - .setFooter({ - text: footerText, - iconURL: footerIcon, - }), - ], + const embed = new EmbedBuilder() + .setAuthor({ + name: newMessage.author.username, + iconURL: newMessage.author.displayAvatarURL(), }) - .then(() => { - logger.info( - `Audit log sent for event messageUpdate in guild ${newMessage?.guild?.name} (${newMessage?.guild?.id})` - ); - }) - .catch(() => { - throw new Error( - `Audit log failed to send for event messageUpdate in guild ${newMessage?.guild?.name} (${newMessage?.guild?.id})` - ); - }); + .setDescription( + ` + **Message edited in** ${newMessage.channel} [jump to message](https://discord.com/channels/${newMessage.guild.id}/${newMessage.channel.id}/${newMessage.id}) + ` + ); + + await auditLogger(guild, embed); }, }; diff --git a/src/helpers/auditLogger/index.ts b/src/helpers/auditLogger/index.ts new file mode 100644 index 0000000..480271a --- /dev/null +++ b/src/helpers/auditLogger/index.ts @@ -0,0 +1,44 @@ +import { ChannelType, EmbedBuilder, Guild } from "discord.js"; +import prisma from "../../handlers/database"; +import getEmbedConfig from "../../helpers/getEmbedData"; +import logger from "../../middlewares/logger"; + +export default async (guild: Guild, embed: EmbedBuilder) => { + const getGuild = await prisma.guild.findUnique({ + where: { id: guild.id }, + }); + if (!getGuild) throw new Error("Guild not found"); + + if (getGuild.auditsEnabled !== true) return; + if (!getGuild.auditsChannelId) { + throw new Error("Channel not found"); + } + + const embedConfig = await getEmbedConfig(guild); + + embed + .setTimestamp(new Date()) + .setFooter({ + text: embedConfig.footerText, + iconURL: embedConfig.footerIcon, + }) + .setColor(embedConfig.successColor); + + const channel = guild.client.channels.cache.get(getGuild.auditsChannelId); + + if (!channel) throw new Error("Channel not found"); + if (channel.type !== ChannelType.GuildText) { + throw new Error("Channel must be a text channel"); + } + + await channel + .send({ + embeds: [embed], + }) + .then(() => { + logger.debug(`Audit log sent for event guildMemberAdd`); + }) + .catch(() => { + throw new Error("Audit log failed to send"); + }); +};