Skip to content

Commit

Permalink
(mkevenaar#21) apply decent nulldef or whitespace checks
Browse files Browse the repository at this point in the history
  • Loading branch information
davidzwa committed May 3, 2022
1 parent 32bc04f commit b104d9d
Show file tree
Hide file tree
Showing 3 changed files with 66 additions and 61 deletions.
10 changes: 5 additions & 5 deletions src/commands/admin/welcome.js
Original file line number Diff line number Diff line change
Expand Up @@ -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();
Expand Down
2 changes: 2 additions & 0 deletions src/constants.js
Original file line number Diff line number Diff line change
Expand Up @@ -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' };
115 changes: 59 additions & 56 deletions src/events/guildMemberAdd.js
Original file line number Diff line number Diff line change
@@ -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);
}
}

0 comments on commit b104d9d

Please sign in to comment.