presence.ts 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. const presence = new Presence({
  2. clientId: "1133734950055714866",
  3. }),
  4. browsingTimestamp = Math.floor(Date.now() / 1000);
  5. let urlParameters: URLSearchParams, searchQuery: string;
  6. presence.on("UpdateData", async () => {
  7. const presenceData: PresenceData = {
  8. largeImageKey: "https://cdn.rcd.gg/PreMiD/websites/L/LCPDFR/assets/0.png",
  9. startTimestamp: browsingTimestamp,
  10. },
  11. privacy = await presence.getSetting<boolean>("privacy"),
  12. { search, pathname, hostname } = document.location,
  13. activeTab = document
  14. .querySelectorAll('[class="ipsTabs_item.ipsTabs_activeItem"]')[0]
  15. ?.textContent?.trim();
  16. switch (hostname) {
  17. case "www.lcpdfr.com": {
  18. if (pathname === "/") presenceData.details = "Patrolling the Home Page";
  19. else if (pathname.includes("/downloads/")) {
  20. presenceData.smallImageKey = Assets.Viewing;
  21. switch (activeTab) {
  22. case "Essential Mods": {
  23. presenceData.details = "Inspecting Essential Mods";
  24. break;
  25. }
  26. case "Vehicle Models": {
  27. presenceData.details = "Analyzing Vehicle Models";
  28. break;
  29. }
  30. case "Vehicle Textures": {
  31. presenceData.details = "Examining Vehicle Textures";
  32. break;
  33. }
  34. case "Scripts & Plugins": {
  35. presenceData.details = "Investigating Scripts & Plugins";
  36. break;
  37. }
  38. case "Character": {
  39. presenceData.details = "Reviewing Character Mods";
  40. break;
  41. }
  42. case "Audio": {
  43. presenceData.details = "Exploring Audio Mods";
  44. break;
  45. }
  46. case "Visual & Data File": {
  47. presenceData.details = "Examining Data Files";
  48. break;
  49. }
  50. case "Misc": {
  51. presenceData.details = "Keeping an eye out for miscelaneous";
  52. break;
  53. }
  54. default:
  55. presenceData.details = "Inspecting the Download Page";
  56. }
  57. } else if (pathname.includes("/forums/"))
  58. presenceData.details = "Engaging in Discussions";
  59. else if (pathname.includes("/discover/"))
  60. presenceData.details = "Investigating Recent Activity";
  61. else if (pathname.includes("/contact-us/"))
  62. presenceData.details = "Contacting the staff";
  63. else if (pathname.includes("/wiki/"))
  64. presenceData.details = "Studying the Wiki";
  65. else if (pathname.includes("/login/"))
  66. presenceData.details = "Going on Duty";
  67. else if (pathname.includes("/register/"))
  68. presenceData.details = "Signing Up for Duty";
  69. else if (pathname.includes("/search/")) {
  70. urlParameters = new URLSearchParams(search);
  71. searchQuery = urlParameters.get("q");
  72. presenceData.details = "Searching for:";
  73. presenceData.state = searchQuery;
  74. presenceData.smallImageKey = Assets.Search;
  75. } else if (pathname.includes("/profile/")) {
  76. presenceData.details = "Viewing Officer:";
  77. presenceData.state = document.querySelector(
  78. "h1[class='ipsType_reset ipsPageHead_barText']"
  79. ).textContent;
  80. presenceData.largeImageKey = document
  81. .querySelector('[class="ipsUserPhoto ipsUserPhoto_xlarge"]')
  82. ?.getAttribute("href");
  83. presenceData.smallImageKey = Assets.Viewing;
  84. } else if (pathname.includes("/settings/"))
  85. presenceData.details = "Viewing Settings";
  86. else if (pathname.includes("/guideline-hub/")) {
  87. presenceData.details = "Reading the guidelines";
  88. presenceData.smallImageKey = Assets.Reading;
  89. } else if (pathname.includes("/staff/"))
  90. presenceData.details = "Viewing the Staff";
  91. else if (pathname.includes("/gallery/")) {
  92. presenceData.details = "Looking through the Gallery";
  93. presenceData.smallImageKey = Assets.Viewing;
  94. } else presenceData.details = "Just browsing...";
  95. break;
  96. }
  97. }
  98. if (privacy) {
  99. presenceData.details = "Browsing undercover...";
  100. delete presenceData.state;
  101. delete presenceData.smallImageKey;
  102. if (
  103. presenceData.largeImageKey !==
  104. "https://cdn.rcd.gg/PreMiD/websites/L/LCPDFR/assets/0.png"
  105. ) {
  106. presenceData.largeImageKey =
  107. "https://cdn.rcd.gg/PreMiD/websites/L/LCPDFR/assets/0.png";
  108. }
  109. }
  110. if (presenceData.details) presence.setActivity(presenceData);
  111. else presence.setActivity();
  112. });