From b104d9d684f252f02850a156b2a1531031271d45 Mon Sep 17 00:00:00 2001 From: David Zwart Date: Tue, 3 May 2022 20:34:09 +0200 Subject: [PATCH] (#21) apply decent nulldef or whitespace checks --- src/commands/admin/welcome.js | 10 +-- src/constants.js | 2 + src/events/guildMemberAdd.js | 115 +++++++++++++++++----------------- 3 files changed, 66 insertions(+), 61 deletions(-) diff --git a/src/commands/admin/welcome.js b/src/commands/admin/welcome.js index 74dcb1aa..507ba2b4 100644 --- a/src/commands/admin/welcome.js +++ b/src/commands/admin/welcome.js @@ -68,31 +68,31 @@ export async function execute(interaction, client) { await data.save(); } - if (typeof enable !== 'undefined' && enable !== null) { + if (!!enable?.length) { data.addons.welcome.enabled = enable; data.markModified('addons.welcome'); await data.save(); } - if (typeof channel !== 'undefined' && channel !== null) { + if (!!channel?.length) { data.addons.welcome.channel = channel.id; data.markModified('addons.welcome'); await data.save(); } - if (typeof image !== 'undefined' && image !== null) { + if (!!image?.length) { data.addons.welcome.image = image; data.markModified('addons.welcome'); await data.save(); } - if (typeof title !== 'undefined' && title !== null) { + if (!!title?.length) { data.addons.welcome.title = title; data.markModified('addons.welcome'); await data.save(); } - if (typeof message !== 'undefined' && message !== null) { + if (!!message?.length) { data.addons.welcome.message = message; data.markModified('addons.welcome'); await data.save(); diff --git a/src/constants.js b/src/constants.js index e1c2f30d..b1cf961b 100644 --- a/src/constants.js +++ b/src/constants.js @@ -13,6 +13,8 @@ export const Constants = { commandsFolder: 'commands', eventsFolder: 'events', jsExt: '.js', + defaultWelcomeTitle: '** {user.name} ** is now a HeartStopper and member number **{guild.totalUser}**', + defaultWelcomeMessage: 'Welcome {user.ping} to {guild.name}!' }; export const DefaultRestOptions = { version: '9' }; diff --git a/src/events/guildMemberAdd.js b/src/events/guildMemberAdd.js index 03ab9391..e0c798ab 100644 --- a/src/events/guildMemberAdd.js +++ b/src/events/guildMemberAdd.js @@ -1,70 +1,73 @@ -import { MessageEmbed } from 'discord.js'; +import {MessageEmbed} from 'discord.js'; +import {Constants} from "../constants.js"; export const name = 'guildMemberAdd'; export const once = false; export async function execute(member, client) { - const guildService = client.database.GuildService; - try { - let guild = member.guild; - let guildData = await guildService.fetchGuild(guild.id); // Get guild document from database + const guildService = client.database.GuildService; + try { + let guild = member.guild; + let guildData = await guildService.fetchGuild(guild.id); // Get guild document from database - if (!guildData.addons.welcome.enabled) return; // Welcome messages aren't enabled + // Ensure welcome messages enabled + const welcomeProp = guildData?.addons?.welcome; + if (!welcomeProp?.enabled) return; - let welcomeChannel = await client.tools.resolveChannel( - guildData.addons.welcome.channel, - guild - ); // Try find the welcome channel + // Gather the data + const channelName = welcomeProp.channel; + const welcomeTitleProp = welcomeProp.title; + const welcomeMessageProp = welcomeProp.message; + const welcomeImage = welcomeProp.image; - let welcomeTitle = - guildData.addons.welcome.title === null || - guildData.addons.welcome.title === '' || - guildData.addons.welcome.title === ' ' - ? '** {user.name} ** is now a HeartStopper and member number **{guild.totalUser}**' - : guildData.addons.welcome.title; // Get the custom title or use the preset one - let welcomeMsg = - guildData.addons.welcome.message === null || - guildData.addons.welcome.message === '' || - guildData.addons.welcome.message === ' ' - ? 'Welcome {user.ping} to {guild.name}!' - : guildData.addons.welcome.message; // Get the custom message or use the preset one + // Try find the welcome channel + let welcomeChannel = await client.tools.resolveChannel( + channelName, + guild + ); - // Replace all valid tags - let finalTitle = welcomeTitle - .replace(/{user.ping}/g, `${member.user}`) - .replace(/{user.name}/g, `${member.user.username}`) - .replace(/{user.id}/g, `${member.user.id}`) - .replace(/{user.tag}/g, `${member.user.tag}`) - .replace(/{guild.name}/g, `${guild.name}`) - .replace(/{guild.id}/g, `${guild.id}`) - .replace(/{guild.totalUser}/g, `${guild.memberCount}`); + // Get the custom title or use default + let welcomeTitle = + !welcomeTitleProp?.trim()?.length + ? Constants.defaultWelcomeTitle + : guildData.addons.welcome.title; + // Get the custom message or use default + let welcomeMsg = + !welcomeMessageProp?.trim()?.length + ? Constants.defaultWelcomeMessage + : guildData.addons.welcome.message; - let finalMsg = welcomeMsg - .replace(/{user.ping}/g, `${member.user}`) - .replace(/{user.name}/g, `${member.user.username}`) - .replace(/{user.id}/g, `${member.user.id}`) - .replace(/{user.tag}/g, `${member.user.tag}`) - .replace(/{guild.name}/g, `${guild.name}`) - .replace(/{guild.id}/g, `${guild.id}`) - .replace(/{guild.totalUser}/g, `${guild.memberCount}`); + // Replace all valid tags using regex + let finalTitle = welcomeTitle + .replace(/{user.ping}/g, `${member.user}`) + .replace(/{user.name}/g, `${member.user.username}`) + .replace(/{user.id}/g, `${member.user.id}`) + .replace(/{user.tag}/g, `${member.user.tag}`) + .replace(/{guild.name}/g, `${guild.name}`) + .replace(/{guild.id}/g, `${guild.id}`) + .replace(/{guild.totalUser}/g, `${guild.memberCount}`); - const welcomeEmbed = new MessageEmbed() - .setColor('#538079') - .setTitle(finalTitle) - .setDescription(finalMsg); + let finalMsg = welcomeMsg + .replace(/{user.ping}/g, `${member.user}`) + .replace(/{user.name}/g, `${member.user.username}`) + .replace(/{user.id}/g, `${member.user.id}`) + .replace(/{user.tag}/g, `${member.user.tag}`) + .replace(/{guild.name}/g, `${guild.name}`) + .replace(/{guild.id}/g, `${guild.id}`) + .replace(/{guild.totalUser}/g, `${guild.memberCount}`); - if ( - !( - guildData.addons.welcome.image === null || - guildData.addons.welcome.image === '' || - guildData.addons.welcome.image === ' ' - ) - ) { - welcomeEmbed.setImage(guildData.addons.welcome.image); - } + const welcomeEmbed = new MessageEmbed() + .setColor('#538079') + .setTitle(finalTitle) + .setDescription(finalMsg); - return welcomeChannel.send({ embeds: [welcomeEmbed] }); - } catch (e) { - console.log(e); - } + const trimmedImagePath = welcomeImage?.trim(); + if (!!trimmedImagePath?.length) { + welcomeEmbed.setImage(trimmedImagePath); + } + + return welcomeChannel.send({embeds: [welcomeEmbed]}); + } catch (e) { + console.log(e); + } }