MCPcopy Index your code
hub / github.com/codebymitch/TitanBot / execute

Function execute

src/events/guildMemberRemove.js:15–150  ·  view source on GitHub ↗
(member)

Source from the content-addressed store, hash-verified

13 once: false,
14
15 async execute(member) {
16 try {
17 const { guild, user } = member;
18
19 const welcomeConfig = await getWelcomeConfig(member.client, guild.id);
20
21 const goodbyeChannelId = welcomeConfig?.goodbyeChannelId;
22
23 if (welcomeConfig?.goodbyeEnabled && goodbyeChannelId) {
24 const channel = guild.channels.cache.get(goodbyeChannelId);
25 if (channel?.isTextBased?.()) {
26 const me = guild.members.me;
27 const permissions = me ? channel.permissionsFor(me) : null;
28 if (!permissions?.has([PermissionFlagsBits.ViewChannel, PermissionFlagsBits.SendMessages])) {
29 return;
30 }
31
32 const formatData = { user, guild, member };
33 const goodbyeMessage = formatWelcomeMessage(
34 welcomeConfig.leaveMessage || welcomeConfig.leaveEmbed?.description || '{user.tag} has left the server.',
35 formatData
36 );
37
38 const embedTitle = formatWelcomeMessage(
39 welcomeConfig.leaveEmbed?.title || '👋 Goodbye',
40 formatData
41 );
42 const embedFooter = welcomeConfig.leaveEmbed?.footer
43 ? formatWelcomeMessage(welcomeConfig.leaveEmbed.footer, formatData)
44 : `Goodbye from ${guild.name}!`;
45
46 const canEmbed = permissions.has(PermissionFlagsBits.EmbedLinks);
47
48 if (!canEmbed) {
49 await channel.send({
50 content: welcomeConfig?.goodbyePing ? `<@${user.id}> ${goodbyeMessage}` : goodbyeMessage,
51 allowedMentions: welcomeConfig?.goodbyePing ? { users: [user.id] } : { parse: [] }
52 });
53 } else {
54 const embed = new EmbedBuilder()
55 .setTitle(embedTitle)
56 .setDescription(goodbyeMessage)
57 .setColor(welcomeConfig.leaveEmbed?.color || getColor('error'))
58 .setThumbnail(user.displayAvatarURL())
59 .addFields(
60 { name: 'User', value: `${user.tag} (${user.id})`, inline: true },
61 { name: 'Member Count', value: guild.memberCount.toString(), inline: true }
62 )
63 .setTimestamp()
64 .setFooter({ text: embedFooter });
65
66 if (typeof welcomeConfig.leaveEmbed?.image === 'string') {
67 embed.setImage(welcomeConfig.leaveEmbed.image);
68 } else if (welcomeConfig.leaveEmbed?.image?.url) {
69 embed.setImage(welcomeConfig.leaveEmbed.image.url);
70 }
71
72 await channel.send({

Callers

nothing calls this directly

Calls 13

getWelcomeConfigFunction · 0.90
formatWelcomeMessageFunction · 0.90
getColorFunction · 0.90
logEventFunction · 0.90
getServerCountersFunction · 0.90
updateCounterFunction · 0.90
getGuildBirthdaysFunction · 0.90
deleteBirthdayFunction · 0.90
getUserApplicationsFunction · 0.90
deleteApplicationFunction · 0.90
deleteUserLevelDataFunction · 0.90
getMethod · 0.45

Tested by

no test coverage detected