xyter/src/plugins/events/guildMemberAdd/audits.ts

62 lines
1.7 KiB
TypeScript

import logger from "../../../middlewares/logger";
import { GuildMember, MessageEmbed } from "discord.js";
import guildSchema from "../../../models/guild";
import getEmbedConfig from "../../../helpers/getEmbedConfig";
export default {
execute: async (member: GuildMember) => {
const { client, guild } = member;
const guildData = await guildSchema.findOne({ guildId: member.guild.id });
if (!guildData) {
throw new Error("Could not find guild");
}
if (guildData.audits.status !== true) return;
if (!guildData.audits.channelId) {
throw new Error("Channel not found");
}
const embedConfig = await getEmbedConfig(guild);
const channel = client.channels.cache.get(guildData.audits.channelId);
if (channel?.type !== "GUILD_TEXT") {
throw new Error("Channel must be a text channel");
}
const embed = new MessageEmbed()
.setTimestamp(new Date())
.setAuthor({
name: "Member Joined",
iconURL: client.user?.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(async () => {
logger.debug(
`Audit log sent for event guildMemberAdd in guild ${member.guild.name} (${member.guild.id})`
);
})
.catch(async () => {
throw new Error("Audit log failed to send");
});
},
};