presence.ts 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. const presence = new Presence({
  2. clientId: "632924426131996702",
  3. }),
  4. pages: {
  5. [name: string]: string;
  6. } = {
  7. "/": "Home",
  8. "/learn": "Learn to Play Chess",
  9. "/practice": "Practice",
  10. "/training/coordinate": "Coordinate",
  11. "/study": "Study",
  12. "/coach": "Coaches",
  13. "/tv": "Lichess TV",
  14. "/games": "Current Games",
  15. "/streamer": "Streamers",
  16. "/broadcast": "Broadcasts",
  17. "/video": "Video Library",
  18. "/player": "Players",
  19. "/team/all": "Teams",
  20. "/forum": "Forums",
  21. "/analysis": "Analysis Board",
  22. "/editor": "Board Editor",
  23. "/paste": "Import Game",
  24. "/games/search": "Advanced Search",
  25. };
  26. presence.on("UpdateData", async () => {
  27. const page = document.location.pathname,
  28. game = document
  29. .querySelector<HTMLElement>(
  30. "#main-wrap > main > aside > div > section > div.game__meta__infos > div > div > div"
  31. )
  32. ?.textContent.trim(),
  33. status = document
  34. .querySelector<HTMLElement>(
  35. "#main-wrap > main > aside > div > section.status"
  36. )
  37. ?.textContent.trim(),
  38. presenceData: PresenceData = {
  39. largeImageKey:
  40. "https://cdn.rcd.gg/PreMiD/websites/L/Lichess/assets/logo.png",
  41. startTimestamp: Math.floor(Date.now() / 1000),
  42. };
  43. if ((page && pages[page]) || (page && pages[page.slice(0, -1)])) {
  44. presenceData.details = "Viewing a page:";
  45. presenceData.state = pages[page] || pages[page.slice(0, -1)];
  46. } else if (page.includes("/training/")) {
  47. presenceData.details = "Viewing a page:";
  48. presenceData.state = "Training";
  49. } else if (page.includes("/@/")) {
  50. presenceData.details = "Searching for:";
  51. presenceData.state = document.title.replace(" • lichess.org", "");
  52. presenceData.smallImageKey = Assets.Search;
  53. } else if (status && game) {
  54. presenceData.details = game;
  55. presenceData.state = status;
  56. } else if (!status && game) {
  57. presenceData.details = "Playing a game:";
  58. presenceData.state = game;
  59. }
  60. if (presenceData.details && presenceData.state)
  61. presence.setActivity(presenceData);
  62. });