presence.ts 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. const presence = new Presence({
  2. clientId: "871843228213731340",
  3. }),
  4. time = Math.floor(Date.now() / 1000);
  5. presence.on("UpdateData", () => {
  6. const presenceData: PresenceData = {
  7. largeImageKey:
  8. "https://cdn.rcd.gg/PreMiD/websites/K/KickAssFingers/assets/logo.png",
  9. startTimestamp: time,
  10. },
  11. data = document.querySelector("#premIdVars"),
  12. vars = JSON.parse(data.getAttribute("vars")),
  13. live = JSON.parse(data.getAttribute("liveScores"));
  14. presenceData.details = vars.details;
  15. if (vars.page === "test") {
  16. if (live?.chrOk === 0 && live?.chrKo === 0) presenceData.state = vars.ready;
  17. else
  18. presenceData.state = `${live.worPm} wpm, ${live.points} ${vars.points}, ${live.chrAcc}% ${vars.accuracy}`;
  19. if (document.querySelector("#resultsContent").textContent === "") {
  20. if (vars.testType === 0) {
  21. const residualTime = document
  22. .querySelector("#premIdVars")
  23. .getAttribute("residualTime");
  24. if (residualTime !== "") {
  25. presenceData.endTimestamp =
  26. Math.floor(Date.now() / 1000) + (parseInt(residualTime) + 1);
  27. }
  28. } else if (presenceData.state !== vars.ready)
  29. presenceData.state += `, ${Math.round(live.time)} ${vars.seconds}`;
  30. } else {
  31. presenceData.details = vars.finished;
  32. if (presenceData.state !== vars.ready)
  33. presenceData.state += `, ${live.time} ${vars.seconds}, ${vars.words} ${live.worOk}/${live.worKo}, ${vars.chars} ${live.chrOk}/${live.chrKo}`;
  34. }
  35. }
  36. if (
  37. !document
  38. .querySelector("#cntr-boxOverlay")
  39. .classList.contains("displayNone")
  40. ) {
  41. presenceData.details = vars.checking_stats;
  42. delete presenceData.state;
  43. }
  44. if (presenceData.details) presence.setActivity(presenceData);
  45. else presence.setActivity();
  46. });