discord_bot/util/setPresence.js
SileNce5k 17dd134934
All checks were successful
CI / CI (push) Successful in 24s
Don't set presence when it hasn't changed
2026-02-04 04:16:48 +01:00

49 lines
No EOL
1.7 KiB
JavaScript

const getGuildInfo = require("./getGuildInfo")
const parseMS = require('./parseMS');
const convertDateToISOString = require('./convertDateToISOString')
module.exports = function ({presenceText, presenceType, client}) {
const globalPrefix = client.settings.get("globalPrefix")
const guildInfo = getGuildInfo(client);
let uptime = parseMS(client.uptime);
let uptimeFormat = "";
let uptimeSingularOrPlural;
if(uptime.hours >= 1 || uptime.days >= 1){
let hours = uptime.days * 24 + uptime.hours;
uptimeSingularOrPlural = hours > 1 ? "s" : "";
uptimeFormat = `${hours} hour${uptimeSingularOrPlural}`;
}else if(uptime.minutes > 1){
uptimeSingularOrPlural = uptime.minutes > 1 ? "s" : "";
uptimeFormat = uptime.minutes + ` minute${uptimeSingularOrPlural}`;
}else{
uptimeFormat = `less than a minute`
}
let presenceVariables = {
guilds: guildInfo.guildCount,
prefix: globalPrefix,
uptime: uptimeFormat,
members: guildInfo.totalMembers,
uniqueMembers: guildInfo.uniqueMemberCount
}
const regex = /(?<=\${)(.*?)(?=})/g;
const matches = presenceText.match(regex);
if(matches){
matches.forEach(match => {
if(presenceVariables[match]){
presenceText = presenceText.replace(`\${${match}}`, presenceVariables[match]);
}
});
}
try {
const lastPresenceObject = client.settings.get("lastPresenceObject")
if(lastPresenceObject.presenceType !== presenceType && lastPresenceObject.presenceText !== presenceText){
client.user.setPresence({ activities: [{ name: presenceText, type: presenceType }]});
client.settings.set(lastPresenceObject, {presenceType, presenceText})
}
}catch(e){
console.error(`${convertDateToISOString(new Date)}\n${e}`);
}
}