48 lines
1.4 KiB
TypeScript
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,
|
|
}),
|
|
],
|
|
});
|
|
},
|
|
};
|