From b07503ec21a11a22070644bd6744ea3db5b3c1db Mon Sep 17 00:00:00 2001 From: Will Hunt <half-shot@molrams.com> Date: Sat, 18 Feb 2017 19:03:43 +0000 Subject: [PATCH] Update presence hooks. --- src/discordbot.ts | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/discordbot.ts b/src/discordbot.ts index 7411cae..fb01463 100644 --- a/src/discordbot.ts +++ b/src/discordbot.ts @@ -27,6 +27,7 @@ export class DiscordBot { this.bot.on("typingStop", (c, u) => { this.OnTyping(c, u, false); }); this.bot.on("userUpdate", (_, newUser) => { this.UpdateUser(newUser); }); this.bot.on("channelUpdate", (_, newChannel) => { this.UpdateRoom(<Discord.TextChannel> newChannel); }); + this.bot.on("presenceUpdate", (_, newMember) => { this.UpdatePresence(newMember); }); this.bot.on("message", this.OnMessage.bind(this)); this.bot.login(this.config.auth.botToken); } @@ -186,6 +187,23 @@ export class DiscordBot { }); } + private UpdatePresence(guildMember: Discord.GuildMember) { + log.info("DiscordBot", `Updating presence for ${guildMember.user.username}#${guildMember.user.discriminator}`); + const intent = this.bridge.getIntentFromLocalpart(`_discord_${guildMember.id}`); + try { + let presence = guildMember.presence.status; + if (presence === "idle" || presence === "dnd") { + presence = "unavailable"; + } + intent.getClient().setPresence({ + presence, + }); + } catch (err) { + log.info("DiscordBot", "Couldn't set presence ", err); + } + // TODO: Set nicknames inside the scope of guild chats. + } + private OnTyping(channel: Discord.Channel, user: Discord.User, isTyping: boolean) { this.GetRoomIdFromChannel(channel).then((room) => { const intent = this.bridge.getIntentFromLocalpart(`_discord_${user.id}`); -- GitLab