From f1b8282ba2bda41d7ddb5ef9daf5cec358fb728a Mon Sep 17 00:00:00 2001 From: Cynthia Foxwell Date: Sun, 9 Oct 2022 22:38:15 -0600 Subject: [PATCH] utility: start on presence --- src/modules/utility.js | 79 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) diff --git a/src/modules/utility.js b/src/modules/utility.js index 5ace1fb..6e99f8a 100644 --- a/src/modules/utility.js +++ b/src/modules/utility.js @@ -639,3 +639,82 @@ charinfo.callback = async function (msg, line) { } }; hf.registerCommand(charinfo); + +const PRESENCE_ICONS = { + desktop: { + online: "<:desktop_online:1028887024670871552>", + idle: "<:desktop_idle:1028887022938624033>", + dnd: "<:desktop_dnd:1028887021848121364>", + }, + mobile: { + online: "<:mobile_online:1028887017637036043>", + idle: "<:mobile_idle:1028887019226669116>", + dnd: "<:mobile_dnd:1028887020560449637>", + }, + web: { + online: "<:web_online:1028887016353574962>", + idle: "<:web_idle:1028887014579392592>", + dnd: "<:web_dnd:1028887012855525486>", + }, + embedded: { + online: "<:embedded_online:1028887010636726313>", + idle: "<:embedded_idle:1028887009147760681>", + dnd: "<:embedded_dnd:1028887008149516299>", + }, +}; + +const presence = new Command("presence"); +presence.category = CATEGORY; +presence.helpText = "Get presences of a user."; +presence.usage = ""; +presence.callback = async function (msg, line) { + if (!msg.guildID) return "Can only be used in guilds."; + + let target; + if (line) { + const user = await lookupUser(msg, line); + if ( + user == "No results" || + user == "Canceled" || + user == "Request timed out" + ) { + return user; + } else { + let member = user; + const guild = msg.channel.guild || hf.bot.guilds.get(msg.guildID); + if (guild) { + if (guild.members.has(user.id)) { + member = guild.members.get(user.id); + } else { + const fetched = await guild.fetchMembers({ + userIDs: [user.id], + }); + member = fetched[0]; + target = member; + } + } + } + } else { + target = msg.member; + } + + if (target) { + if (!target.presence) return `**${target.tag}** is offline.`; + + let icons = ""; + for (const platform in target.presence.client_status) { + const status = target.presence.client_status[platform]; + + icons += PRESENCE_ICONS[platform][status] + " "; + } + + const embeds = []; + + return { + content: `Presence for **${target.tag}**: ${icons}`, + }; + } else { + return ":warning: Could not get user???"; + } +}; +hf.registerCommand(presence);