import { Client } from "discord-rpc"; import { config } from "./config"; // internal state let rpc: Client; export async function initDiscordRpc() { if (!config.discordRpc) return; // clean up existing client if one exists rpc?.removeAllListeners(); try { rpc = new Client({ transport: "ipc" }); rpc.on("ready", () => rpc.setActivity({ state: "stoat.qinbeans.net", details: "Chatting with others", largeImageKey: "qr", largeImageText: "Join Stoat!", buttons: [ { label: "Join Stoat", url: "https://stoat.qinbeans.net/", }, ], }), ); rpc.on("disconnected", reconnect); rpc.login({ clientId: "872068124005007420" }); } catch (err) { reconnect(); } } const reconnect = () => setTimeout(() => initDiscordRpc(), 1e4); export async function destroyDiscordRpc() { rpc?.destroy(); }