62 lines
1.7 KiB
TypeScript
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");
|
|
});
|
|
},
|
|
};
|