summaryrefslogtreecommitdiff
path: root/src/main/richpresence.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/richpresence.ts')
-rw-r--r--src/main/richpresence.ts60
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");
}