mcc-discord-rpc/app.js

60 lines
1.9 KiB
JavaScript
Raw Normal View History

const express = require("express")
const app = new express()
const RPC = require('discord-rpc');
const client = new RPC.Client({ transport: 'ipc' });
const { defaultActivity } = require("./lib/defaults");
const { teamsIndex } = require("./lib/teams")
const port = process.env.PORT || 60881
const { getState, updateState, preloadState } = require("./lib/utils");
const fs = require("node:fs");
const { get } = require("node:http");
app.get("/changeTeams/regular-participant/:teamSlug", (res, req) => {
if (req.teamSlug == "sprecators") {
client.setActivity({
pid: process.pid,
activity: teamsIndex.regularEvents.sprecators
})
updateState(teamsIndex.regularEvents.sprecators)
} else {
res.status(404).json({
ok: false,
error: "Team not found on index."
})
}
})
app.get("/getState", (req, res) => {
res.json(getState())
})
app.get("/getState/preloaded", (req, res) => {
res.json(preloadState)
})
client.on('ready', async () => {
fs.stat('rpcState.json', function(err, stat) {
if (err == null) {
console.log('info: State file exists, preloading from previous state');
client.request("SET_ACTIVITY", { pid: process.pid, activity: getState() });
} else {
client.request("SET_ACTIVITY", { pid: process.pid, activity: defaultActivity });
console.log("info: Using default activity for state due to file issues");
updateState(defaultActivity)
}
});
});
client.on('connected', async () => {
console.log("info: Connected to Discord RPC");
});
app.listen(port, () => {
console.log("info: REST API is up at http://localhost:"+port+", see README.md and docs directory")
console.log("info: for the API docs.")
})
// Uses the unofficial MCC.Live OAuth client ID from Andrei Jiroh.
client.login({ clientId: "952456760948559932" });