diff --git a/src/events/guildMemberAdd/index.ts b/src/events/guildMemberAdd/index.ts index c3c2808..bd15935 100644 --- a/src/events/guildMemberAdd/index.ts +++ b/src/events/guildMemberAdd/index.ts @@ -5,6 +5,7 @@ import { GuildMember } from "discord.js"; import updatePresence from "@helpers/updatePresence"; import fetchUser from "@helpers/fetchUser"; import logger from "@logger"; +import joinMessage from "../guildMemberAdd/joinMessage"; export default { name: "guildMemberAdd", @@ -15,6 +16,7 @@ export default { `New member: ${user.tag} (${user.id}) added to guild: ${guild.name} (${guild.id})` ); + await joinMessage.execute(member); await fetchUser(user, guild); await updatePresence(client); }, diff --git a/src/events/guildMemberAdd/joinMessage.ts b/src/events/guildMemberAdd/joinMessage.ts new file mode 100644 index 0000000..8c7e9bb --- /dev/null +++ b/src/events/guildMemberAdd/joinMessage.ts @@ -0,0 +1,45 @@ +import logger from "@logger"; +import { GuildMember, MessageEmbed, TextChannel } from "discord.js"; + +import guildSchema from "@schemas/guild"; + +import { footerText, footerIcon, successColor } from "@config/embed"; + +export default { + execute: async (member: GuildMember) => { + logger.info(member); + + const guildData = await guildSchema.findOne({ guildId: member.guild.id }); + + const { client } = member; + + if (guildData === null) return; + + if (guildData.welcome.status !== true) return; + if (!guildData.welcome.joinChannel) return; + + const channel = client.channels.cache.get( + `${guildData.welcome.joinChannel}` + ); + + if (channel === null) return; + + (channel as TextChannel).send({ + embeds: [ + new MessageEmbed() + .setColor(successColor) + .setTitle(`${member.user.username} has joined the server!`) + .setThumbnail(member.user.displayAvatarURL()) + .setDescription( + guildData.welcome.joinChannelMessage || + "Configure a join message in the `/settings guild welcome`." + ) + .setTimestamp() + .setFooter({ + text: footerText, + iconURL: footerIcon, + }), + ], + }); + }, +};