diff options
Diffstat (limited to 'src/main/richpresence.ts')
-rw-r--r-- | src/main/richpresence.ts | 60 |
1 files changed, 34 insertions, 26 deletions
diff --git a/src/main/richpresence.ts b/src/main/richpresence.ts index 75acfdf..c50c84f 100644 --- a/src/main/richpresence.ts +++ b/src/main/richpresence.ts @@ -1,7 +1,7 @@ import { Status } from "./status"; +import { Client, register } from "discord-rpc" // Only for testing as of right now -> Experimental const ClientId = "551884486351126528"; -const DiscordRPC = require("discord-rich-presence")(ClientId); const slogans = [ "free OpenSource 2D MMORPG", @@ -33,6 +33,8 @@ const dataSet: { }, }; +let DiscordRPC_Client:Client = null; + async function setActivity() { const status = Status.getStatus(); @@ -46,7 +48,9 @@ async function setActivity() { : `🎮 ${data.name} 🎮`; const logo = data && data.logo; - DiscordRPC.updatePresence({ + // IDEA maybe check if changed before updating to save traffic? + + DiscordRPC_Client?.setActivity({ state: `»${slogan}«`, details, largeImageKey: logo, @@ -60,38 +64,42 @@ async function setActivity() { //joinSecret: 'string', //spectateSecret: 'string', //startTimestamp - }); + }).catch(console.error); } -DiscordRPC.on("connected", () => { - setActivity(); +export async function setup(): Promise<void>{ + register(ClientId) + DiscordRPC_Client = await (new Client({transport: 'ipc'})).connect(ClientId) - // activity can only be set every 15 seconds - setInterval(() => { + DiscordRPC_Client.on("ready", () => { setActivity(); - }, 15e3); -}); - -DiscordRPC.on("error", console.log); - -DiscordRPC.on("join", (secret: string) => { - console.log("we should join with", secret); -}); + + // activity can only be set every 15 seconds + setInterval(() => { + setActivity(); + }, 15e3); + }); -DiscordRPC.on("spectate", (secret: string) => { - console.log("we should spectate with", secret); -}); + DiscordRPC_Client.subscribe("ACTIVITY_JOIN", (secret: string) => { + console.log("we should join with", secret); + }); + + DiscordRPC_Client.subscribe("ACTIVITY_SPECTATE", (secret: string) => { + console.log("we should spectate with", secret); + }); + + // client.subscribe('ACTIVITY_JOIN_REQUEST', (user) => { + // if (user.discriminator === '1337') { + // client.sendJoinInvite(user); + // } else { + // client.closeJoinRequest(user); + // } + // }); +} -// DiscordRPC.on('joinRequest', (user) => { -// if (user.discriminator === '1337') { -// DiscordRPC.reply(user, 'YES'); -// } else { -// DiscordRPC.reply(user, 'IGNORE'); -// } -// }); export function quit() { - DiscordRPC.disconnect(); + DiscordRPC_Client?.destroy(); console.log("Shutting down Discord RPC integration"); } |