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