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

Function execute

src/events/guildMemberAdd.js:15–159  ·  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 config = await getGuildConfig(member.client, guild.id);
20
21 const welcomeConfig = await getWelcomeConfig(member.client, guild.id);
22
23 const welcomeChannelId = welcomeConfig?.channelId;
24
25 if (welcomeConfig?.enabled && welcomeChannelId) {
26 const channel = guild.channels.cache.get(welcomeChannelId);
27 if (channel?.isTextBased?.()) {
28 const me = guild.members.me;
29 const permissions = me ? channel.permissionsFor(me) : null;
30 if (!permissions?.has([PermissionFlagsBits.ViewChannel, PermissionFlagsBits.SendMessages])) {
31 return;
32 }
33
34 const formatData = { user, guild, member };
35 const welcomeMessage = formatWelcomeMessage(
36 welcomeConfig.welcomeMessage || welcomeConfig.welcomeEmbed?.description || 'Welcome {user} to {server}!',
37 formatData
38 );
39
40 const messageContent = welcomeConfig.welcomePing ? user.toString() : null;
41
42 const embedTitle = formatWelcomeMessage(
43 welcomeConfig.welcomeEmbed?.title || '🎉 Welcome!',
44 formatData
45 );
46 const embedFooter = welcomeConfig.welcomeEmbed?.footer
47 ? formatWelcomeMessage(welcomeConfig.welcomeEmbed.footer, formatData)
48 : `Welcome to ${guild.name}!`;
49
50 const canEmbed = permissions.has(PermissionFlagsBits.EmbedLinks);
51
52 if (!canEmbed) {
53 await channel.send({
54 content: messageContent || welcomeMessage
55 });
56 } else {
57 const embed = new EmbedBuilder()
58 .setColor(welcomeConfig.welcomeEmbed?.color || getColor('success'))
59 .setTitle(embedTitle)
60 .setDescription(welcomeMessage)
61 .setThumbnail(user.displayAvatarURL())
62 .addFields(
63 { name: 'User', value: `${user.tag} (${user.id})`, inline: true },
64 { name: 'Member Count', value: guild.memberCount.toString(), inline: true }
65 )
66 .setTimestamp()
67 .setFooter({ text: embedFooter });
68
69 if (welcomeConfig.welcomeImage) {
70 embed.setImage(welcomeConfig.welcomeImage);
71 } else if (welcomeConfig.welcomeEmbed?.image?.url) {
72 embed.setImage(welcomeConfig.welcomeEmbed.image.url);

Callers

nothing calls this directly

Calls 11

getGuildConfigFunction · 0.90
getWelcomeConfigFunction · 0.90
formatWelcomeMessageFunction · 0.90
getColorFunction · 0.90
logEventFunction · 0.90
getServerCountersFunction · 0.90
updateCounterFunction · 0.90
assignRoleSafelyFunction · 0.85
handleVerificationFunction · 0.85
getMethod · 0.45
setMethod · 0.45

Tested by

no test coverage detected