/** * @copyright NHCarrigan * @license Naomi's Public License * @author Naomi Carrigan */ import { ids } from "../config/ids.js"; import { logger } from "../utils/logger.js"; import type { Amari } from "../interfaces/amari.js"; import type { GuildMember, PartialGuildMember } from "discord.js"; /** * Run when a guild member leaves. If the member had the mentorship role, * notify Naomi. * @param amari - Amari's instance. * @param member - The member payload from Discord. */ export const logMenteeLeave = async( amari: Amari, member: GuildMember | PartialGuildMember, ): Promise => { if (!member.roles.cache.has(ids.roles.mentorship)) { return; } const channel = amari.discord.channels.cache.get(ids.channels.menteeChat) ?? await amari.discord.channels.fetch(ids.channels.menteeChat); if (channel?.isSendable() !== true) { await logger.log( "warn", "Mentee Chat channel does not exist or is not sendable.", ); return; } await channel.send({ content: `Hey <@${ids.users.naomi}>~! <@${member.id}> (${member.user.displayName} - ${member.id}) has left the server. It seems they were part of the mentorship programme, so you may need to offboard them.`, }); };