xyter/src/events/guildMemberAdd/joinMessage.ts

48 lines
1.4 KiB
TypeScript

import { ChannelType, EmbedBuilder, GuildMember } from "discord.js";
import prisma from "../../handlers/database";
import getEmbedConfig from "../../helpers/getEmbedData";
export default {
execute: async (member: GuildMember) => {
const { footerText, footerIcon, successColor } = await getEmbedConfig(
member.guild
);
const getGuild = await prisma.guild.findUnique({
where: { id: member.guild.id },
});
if (!getGuild) throw new Error("Guild not found");
const { client } = member;
if (getGuild.welcomeEnabled !== true) return;
if (!getGuild.welcomeJoinChannelId) return;
const channel = client.channels.cache.get(
`${getGuild.welcomeJoinChannelId}`
);
if (!channel) throw new Error("Channel not found");
if (channel.type !== ChannelType.GuildText)
throw new Error("Channel is not a text channel");
channel.send({
embeds: [
new EmbedBuilder()
.setColor(successColor)
.setTitle(`${member.user.username} has joined the server!`)
.setThumbnail(member.user.displayAvatarURL())
.setDescription(
getGuild.welcomeJoinChannelMessage ||
"Configure a join message in the `/settings guild welcome`."
)
.setTimestamp()
.setFooter({
text: footerText,
iconURL: footerIcon,
}),
],
});
},
};