presence.ts 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183
  1. const presence = new Presence({
  2. clientId: "815515385326469131",
  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/W/Worldhideaway/assets/logo.png",
  9. startTimestamp: browsingTimestamp,
  10. },
  11. search = document.querySelector<HTMLInputElement>(
  12. "#masthead > div.header-search-wrap > div > form > label > input"
  13. ),
  14. { href, pathname } = document.location,
  15. [privacy, buttons, covers] = await Promise.all([
  16. presence.getSetting<boolean>("privacy"),
  17. presence.getSetting<boolean>("buttons"),
  18. presence.getSetting<boolean>("covers"),
  19. ]);
  20. if (privacy) presenceData.details = "Hojeada";
  21. else {
  22. switch (pathname.split("/")[1]) {
  23. case "": {
  24. if (search?.value) {
  25. presenceData.details = "Buscando";
  26. presenceData.state = search.value;
  27. presenceData.smallImageKey = Assets.Search;
  28. } else presenceData.details = "Viendo Inicio";
  29. break;
  30. }
  31. case "register": {
  32. presenceData.details = "Registro";
  33. break;
  34. }
  35. case "logros": {
  36. presenceData.details = "Viendo logros";
  37. presenceData.buttons = [
  38. {
  39. label: "Ver Logros",
  40. url: href,
  41. },
  42. ];
  43. break;
  44. }
  45. case "events": {
  46. presenceData.details = "Viendo eventos";
  47. presenceData.buttons = [
  48. {
  49. label: "Ver Eventos",
  50. url: href,
  51. },
  52. ];
  53. break;
  54. }
  55. case "activity": {
  56. presenceData.details = "Leyendo sobre";
  57. presenceData.state = "Actividad";
  58. presenceData.smallImageKey = Assets.Reading;
  59. presenceData.buttons = [
  60. {
  61. label: "Ver Actividad",
  62. url: href,
  63. },
  64. ];
  65. break;
  66. }
  67. case "topic": {
  68. presenceData.details = "Viendo noticia sobre";
  69. presenceData.state = document.querySelector(
  70. "#topic-6307-replies > li.bs-item-wrap.bs-header-item.align-items-center.no-hover-effect > div > div.item-title > h1"
  71. ).textContent;
  72. presenceData.buttons = [
  73. {
  74. label: "Ver Noticia",
  75. url: href,
  76. },
  77. ];
  78. break;
  79. }
  80. case "members": {
  81. if (document.querySelector('[id="members-all"]')) {
  82. presenceData.details = "Viendo miembros";
  83. presenceData.buttons = [
  84. {
  85. label: "Ver Miembros",
  86. url: href,
  87. },
  88. ];
  89. } else {
  90. presenceData.buttons = [
  91. {
  92. label: "Ver Miembro",
  93. url: href,
  94. },
  95. ];
  96. presenceData.largeImageKey = document
  97. .querySelector('[alt*="Profile photo of"]')
  98. .getAttribute("src");
  99. presenceData.details = `Viendo ${
  100. document.querySelector(
  101. "#item-header-content > div > div > div.flex.align-items-center.member-title-wrap > h2"
  102. )?.textContent
  103. }'s Perfil`;
  104. }
  105. break;
  106. }
  107. case "category": {
  108. presenceData.buttons = [
  109. {
  110. label: "Ver Categoría",
  111. url: href,
  112. },
  113. ];
  114. presenceData.details = "Viendo categoría";
  115. presenceData.state = document.querySelector(
  116. "#main > header > h1 > span"
  117. ).textContent;
  118. break;
  119. }
  120. case "faqs": {
  121. presenceData.buttons = [
  122. {
  123. label: "Leer FAQ",
  124. url: href,
  125. },
  126. ];
  127. presenceData.details = "Leyendo FAQ";
  128. presenceData.smallImageKey = Assets.Reading;
  129. break;
  130. }
  131. case "contacto": {
  132. presenceData.buttons = [
  133. {
  134. label: "Ver Contacto",
  135. url: href,
  136. },
  137. ];
  138. presenceData.details = "Viendo contacto";
  139. break;
  140. }
  141. default: {
  142. const check = document.querySelector(
  143. "#main > div > div > section.elementor-section.elementor-top-section.elementor-element.elementor-element-7cf6a1d.elementor-section-boxed.elementor-section-height-default.elementor-section-height-default > div > div > div > div > div > div > div > h1"
  144. ),
  145. active =
  146. document.querySelector('[aria-current="page"]') ??
  147. document.querySelector('[class="current_page_item"]');
  148. if (check) {
  149. presenceData.buttons = [
  150. {
  151. label: "Leer Articulo",
  152. url: href,
  153. },
  154. ];
  155. presenceData.details = `Leyendo ${check.textContent}`;
  156. presenceData.smallImageKey = Assets.Reading;
  157. } else if (active) {
  158. presenceData.buttons = [
  159. {
  160. label: "Ver Información",
  161. url: href,
  162. },
  163. ];
  164. presenceData.details = `Viendo ${active.textContent}`;
  165. } else presenceData.details = "Página no encontrada";
  166. break;
  167. }
  168. }
  169. }
  170. if (!buttons) delete presenceData.buttons;
  171. if (!covers) {
  172. presenceData.largeImageKey =
  173. "https://cdn.rcd.gg/PreMiD/websites/W/Worldhideaway/assets/logo.png";
  174. }
  175. if (presenceData.details) presence.setActivity(presenceData);
  176. else presence.setActivity();
  177. });