diff --git a/commands/admin/setPresence.js b/commands/admin/setPresence.js index 9683fd7..5dbfd51 100644 --- a/commands/admin/setPresence.js +++ b/commands/admin/setPresence.js @@ -1,5 +1,5 @@ const savePresence = require("../../util/savePresence"); -const timeUntil = require("../../util/timer/timeUntil"); +const setPresence = require("../../util/setPresence"); module.exports = { name: 'setpresence', @@ -13,7 +13,16 @@ module.exports = { ,"Custom Variables:" ,"${guilds},${prefix},${uptime},{members}"], admin: true, - execute({message, client, args}) { + execute({message, client, args, prefix}) { + let forceUpdate = false; + if(args.length > 1 && args[0] === "force") { + forceUpdate = true; + args.shift(); + } + if(args.length < 1){ + message.channel.send(`You need at least two arguments for this command, see \`${prefix}help setpresence\``) + return; + } let presenceType = args[0].toLocaleUpperCase(); let sendText = "Presence has been set."; @@ -47,7 +56,10 @@ module.exports = { let temp = args.join(" "); let presenceText = temp.slice(firstArg, temp.length) savePresence(presenceType, presenceText, client); - sendText = `${sendText} It will update ` + if(forceUpdate) + setPresence({presenceText, presenceType, client}) + else + sendText = `${sendText} It will update ` } message.channel.send(sendText); diff --git a/server.js b/server.js index c82911c..871dc93 100644 --- a/server.js +++ b/server.js @@ -54,6 +54,7 @@ createAndLoadWhitelistTable(client.whitelist); client.settings.set("presenceType", presenceType); client.settings.set("presenceText", presenceText); +client.settings.set("globalPrefix", globalPrefix); const reloadCommands = require("./util/reloadCommands.js"); const onMessage = require('./server/message'); @@ -74,7 +75,7 @@ client.once('disconnect', () => { }); client.on('messageCreate', async message => { - onMessage(client, owners, message, globalPrefix); + onMessage(client, owners, message); }); diff --git a/server/message.js b/server/message.js index fb15f3b..169e206 100644 --- a/server/message.js +++ b/server/message.js @@ -1,6 +1,6 @@ const isWhitelisted = require('../util/isWhitelisted') -module.exports = function(client, owners, message, globalPrefix){ - let prefix = globalPrefix; +module.exports = function(client, owners, message){ + let prefix = client.settings.get("globalPrefix"); let serverPrefix = client.serverPrefixes.get(message.guild.id); if (serverPrefix) { prefix = serverPrefix; @@ -28,7 +28,7 @@ module.exports = function(client, owners, message, globalPrefix){ if (command.admin && owners.indexOf(message.author.id.toString()) == -1) return; try { console.log(`${message.author.username}(id: ${message.author.id}) executed ${command.name} with '${args}' as arguments`) - command.execute({ message: message, args: args, client: client, prefix: prefix, owners: owners, globalPrefix: globalPrefix}) + command.execute({ message: message, args: args, client: client, prefix: prefix, owners: owners}) } catch (error) { let divider = "------------------------" console.log(divider) diff --git a/util/setPresence.js b/util/setPresence.js index 7f99e37..62b4633 100644 --- a/util/setPresence.js +++ b/util/setPresence.js @@ -2,7 +2,7 @@ const getGuildInfo = require("./getGuildInfo") const parseMS = require('./parseMS'); const convertDateToISOString = require('./convertDateToISOString') module.exports = function ({presenceText, presenceType, client}) { - const {globalPrefix} = require ('../data/config.json') + const globalPrefix = client.settings.get("globalPrefix") const guildInfo = getGuildInfo(client); let uptime = parseMS(client.uptime); let uptimeFormat = ""; @@ -18,10 +18,22 @@ module.exports = function ({presenceText, presenceType, client}) { uptimeFormat = `less than a minute` } - let regex = [/\${guilds}/g,/\${prefix}/g,/\${uptime}/g, /\${members}/g]; - let replaceValue = [guildInfo.guildCount, globalPrefix, uptimeFormat, guildInfo.totalMembers]; - for(let i = 0; i < regex.length; i++){ - presenceText = presenceText.replace(regex[i], replaceValue[i]); + let presenceVariables = { + guilds: guildInfo.guildCount, + prefix: globalPrefix, + uptime: uptimeFormat, + members: guildInfo.totalMembers + } + + const regex = /(?<=\${)(.*?)(?=})/g; + const matches = presenceText.match(regex); + + if(matches){ + matches.forEach(match => { + if(presenceVariables[match]){ + presenceText = presenceText.replace(`\${${match}}`, presenceVariables[match]); + } + }); } try {