presence.ts 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. const presence = new Presence({
  2. clientId: "971311477514444800",
  3. }),
  4. browsingTimestamp = Math.floor(Date.now() / 1000);
  5. presence.on("UpdateData", async () => {
  6. const presenceData: PresenceData = {
  7. largeImageKey:
  8. "https://cdn.rcd.gg/PreMiD/websites/M/Minecraft%20Menu/assets/logo.png",
  9. startTimestamp: browsingTimestamp,
  10. },
  11. search = document.querySelector<HTMLInputElement>(
  12. "body > div.pusher > div.site-nav.clearfix > div > header > nav > div.right.menu > div > div.ui.right.action.left.icon.input > input"
  13. ),
  14. { pathname, href } = document.location,
  15. [privacy, buttons] = await Promise.all([
  16. presence.getSetting<boolean>("privacy"),
  17. presence.getSetting<boolean>("buttons"),
  18. ]);
  19. if (privacy) presenceData.details = "Browsing";
  20. else if (search.value) {
  21. presenceData.details = "Searching for";
  22. presenceData.state = search.value;
  23. presenceData.smallImageKey = Assets.Search;
  24. } else if (pathname === "/") presenceData.details = "Homepathname";
  25. else if (pathname.includes("/server")) {
  26. presenceData.details = document
  27. .querySelector(
  28. "body > div.pusher > section > div.ui.stackable.grid > div.six.wide.column > table > thead > tr > th"
  29. )
  30. .textContent.trim();
  31. presenceData.state = document.querySelector(
  32. "[class='active item']"
  33. ).textContent;
  34. presenceData.buttons = [
  35. {
  36. label: "View Server",
  37. url: href,
  38. },
  39. ];
  40. } else if (pathname.includes("/cp")) {
  41. presenceData.buttons = [
  42. {
  43. label: "Open Control Panel",
  44. url: href,
  45. },
  46. ];
  47. presenceData.details = "Control Panel";
  48. presenceData.state =
  49. document.querySelector("[class='active item']")?.textContent ??
  50. document.querySelector("[class=' active item']")?.textContent;
  51. } else if (pathname.includes("/partners")) {
  52. presenceData.buttons = [
  53. {
  54. label: "View Partners",
  55. url: href,
  56. },
  57. ];
  58. presenceData.details = "Partners";
  59. } else if (pathname.includes("/sponsored")) {
  60. presenceData.buttons = [
  61. {
  62. label: "View Sponsored Servers",
  63. url: href,
  64. },
  65. ];
  66. presenceData.details = "Sponsored";
  67. } else if (pathname.search(new RegExp(/Minecraft .* Servers/gm))) {
  68. presenceData.buttons = [
  69. {
  70. label: "View Category",
  71. url: href,
  72. },
  73. ];
  74. presenceData.details = document.querySelector(
  75. "body > div.pusher > section > div.header-wrappy > h2 > span"
  76. ).textContent;
  77. }
  78. if (!buttons) delete presenceData.buttons;
  79. if (presenceData.details) presence.setActivity(presenceData);
  80. else presence.setActivity();
  81. });