/websites/S/SuperiorServers.co/presence.ts

https://github.com/PreMiD/Presences · TypeScript · 252 lines · 250 code · 2 blank · 0 comment · 68 complexity · 2f42bd5485edfbc5e8249496403bbf6f MD5 · raw file

  1. const presence = new Presence({
  2. clientId: "792094839414980639"
  3. });
  4. presence.on("UpdateData", async () => {
  5. const currentTime = Math.floor(Date.now() / 1000),
  6. presenceData: PresenceData = {
  7. largeImageKey: "main",
  8. startTimestamp: currentTime
  9. };
  10. if (document.location.hostname === "superiorservers.co") {
  11. presenceData.largeImageKey = "main";
  12. presenceData.details = "Portal";
  13. if (document.location.pathname === "/" || !document.location.pathname)
  14. presenceData.startTimestamp = currentTime;
  15. if (document.location.pathname.includes("/staff")) {
  16. const DRPStaff = document
  17. .querySelector("#RP_info")
  18. .textContent.substr(
  19. document.querySelector("#RP_info").textContent.indexOf(" of") + 3,
  20. document.querySelector("#RP_info").textContent.indexOf(" entries")
  21. )
  22. .replace(" entries", ""),
  23. AllServersStaff = document
  24. .querySelector("#NO_ID_info")
  25. .textContent.substr(
  26. document.querySelector("#NO_ID_info").textContent.indexOf(" of") +
  27. 3,
  28. document
  29. .querySelector("#NO_ID_info")
  30. .textContent.indexOf(" entries")
  31. )
  32. .replace(" entries", ""),
  33. MilRPStaff = document
  34. .querySelector("#MilRP_info")
  35. .textContent.substr(
  36. document.querySelector("#MilRP_info").textContent.indexOf(" of") +
  37. 3,
  38. document
  39. .querySelector("#MilRP_info")
  40. .textContent.indexOf(" entries")
  41. )
  42. .replace(" entries", ""),
  43. SWRPStaff = document
  44. .querySelector("#SWRP_info")
  45. .textContent.substr(
  46. document.querySelector("#SWRP_info").textContent.indexOf(" of") + 3,
  47. document.querySelector("#SWRP_info").textContent.indexOf(" entries")
  48. )
  49. .replace(" entries", ""),
  50. totalStaff = (
  51. parseInt(DRPStaff) +
  52. parseInt(SWRPStaff) +
  53. parseInt(MilRPStaff) +
  54. parseInt(AllServersStaff)
  55. ).toString();
  56. presenceData.details = "Viewing the Staff list";
  57. presenceData.state = `${totalStaff} total members`;
  58. presenceData.startTimestamp = currentTime;
  59. }
  60. if (document.location.pathname.includes("/bans")) {
  61. const numBans = document
  62. .querySelector("div.dataTables_info")
  63. .textContent.substr(
  64. document
  65. .querySelector("div.dataTables_info")
  66. .textContent.indexOf("of ") + 3,
  67. document
  68. .querySelector("div.dataTables_info")
  69. .textContent.indexOf(" entries")
  70. )
  71. .replace(" entries", ""),
  72. currentPage = document.querySelector(
  73. "#bans_paginate > ul > li.paginate_button.active > a"
  74. ),
  75. lastPage = document.querySelector(
  76. "#bans_paginate > ul > li:nth-child(8) > a"
  77. );
  78. presenceData.details = `Viewing ${numBans} bans`;
  79. presenceData.state = `(${currentPage.textContent}/${lastPage.textContent})`;
  80. presenceData.startTimestamp = currentTime;
  81. }
  82. if (document.location.pathname.includes("/credits")) {
  83. presenceData.details = "Viewing the Credits page";
  84. presenceData.startTimestamp = currentTime;
  85. if (document.location.pathname.includes("/darkrp"))
  86. presenceData.state = "(DarkRP)";
  87. else if (document.location.pathname.includes("/milrp"))
  88. presenceData.state = "(MilRP)";
  89. else if (document.location.pathname.includes("/cwrp"))
  90. presenceData.state = "(CWRP)";
  91. }
  92. if (document.location.pathname.includes("/rules")) {
  93. presenceData.details = "Reading the server rules";
  94. presenceData.startTimestamp = currentTime;
  95. if (document.location.pathname.includes("/darkrp"))
  96. presenceData.state = "(DarkRP)";
  97. else if (document.location.pathname.includes("/milrp"))
  98. presenceData.state = "(MilRP)";
  99. else if (document.location.pathname.includes("/cwrp"))
  100. presenceData.state = "(CWRP)";
  101. }
  102. if (document.location.pathname.includes("/leaderboard/money")) {
  103. presenceData.details = "Viewing money leaderboards";
  104. presenceData.startTimestamp = currentTime;
  105. if (document.location.pathname.includes("/darkrp"))
  106. presenceData.state = "(DarkRP)";
  107. }
  108. if (document.location.pathname.includes("/moneyboard")) {
  109. presenceData.details = "Viewing money leaderboards";
  110. presenceData.startTimestamp = currentTime;
  111. if (document.location.pathname.includes("/cwrp"))
  112. presenceData.state = "(CWRP)";
  113. else if (document.location.pathname.includes("/milrp"))
  114. presenceData.state = "(MilRP)";
  115. }
  116. if (document.location.pathname.includes("/darkrp/leaderboard/orgs")) {
  117. presenceData.details = "Viewing org leaderboard";
  118. presenceData.state = "(DarkRP)";
  119. presenceData.startTimestamp = currentTime;
  120. }
  121. if (document.location.pathname.includes("/polls")) {
  122. presenceData.details = "Viewing polls";
  123. presenceData.startTimestamp = currentTime;
  124. if (document.location.pathname.includes("/darkrp"))
  125. presenceData.state = "(DarkRP)";
  126. else if (document.location.pathname.includes("/milrp"))
  127. presenceData.state = "(MilRP)";
  128. else if (document.location.pathname.includes("/cwrp"))
  129. presenceData.state = "(CWRP)";
  130. }
  131. if (document.location.pathname.includes("/characters")) {
  132. presenceData.details = "Using character search";
  133. presenceData.startTimestamp = currentTime;
  134. if (document.location.pathname.includes("/darkrp"))
  135. presenceData.state = "(DarkRP)";
  136. else if (document.location.pathname.includes("/milrp"))
  137. presenceData.state = "(MilRP)";
  138. else if (document.location.pathname.includes("/cwrp"))
  139. presenceData.state = "(CWRP)";
  140. }
  141. if (document.location.pathname.includes("/gamemasters")) {
  142. presenceData.startTimestamp = currentTime;
  143. if (document.location.pathname.includes("/darkrp"))
  144. presenceData.state = "(DarkRP)";
  145. else if (document.location.pathname.includes("/milrp")) {
  146. presenceData.details = "Viewing MilRP GMs";
  147. const GMs = document
  148. .querySelector("#gamemasters_info")
  149. .textContent.substr(
  150. document
  151. .querySelector("#gamemasters_info")
  152. .textContent.indexOf(" of") + 3,
  153. document
  154. .querySelector("#gamemasters_info")
  155. .textContent.indexOf(" entries")
  156. )
  157. .replace(" entries", "");
  158. presenceData.state = `${GMs} total members`;
  159. } else if (document.location.pathname.includes("/cwrp")) {
  160. presenceData.details = "Viewing CWRP GMs";
  161. const GMs = document
  162. .querySelector("#gamemasters_info")
  163. .textContent.substr(
  164. document
  165. .querySelector("#gamemasters_info")
  166. .textContent.indexOf(" of") + 3,
  167. document
  168. .querySelector("#gamemasters_info")
  169. .textContent.indexOf(" entries")
  170. )
  171. .replace(" entries", "");
  172. presenceData.state = `${GMs} total members`;
  173. }
  174. }
  175. if (document.location.pathname.includes("/xpboard")) {
  176. presenceData.details = "Viewing XP leaderboards";
  177. presenceData.startTimestamp = currentTime;
  178. if (document.location.pathname.includes("/milrp"))
  179. presenceData.state = "(MilRP)";
  180. else if (document.location.pathname.includes("/cwrp"))
  181. presenceData.state = "(CWRP)";
  182. }
  183. if (document.location.pathname.includes("/killboard")) {
  184. presenceData.details = "Viewing K/D leaderboards";
  185. presenceData.startTimestamp = currentTime;
  186. if (document.location.pathname.includes("/milrp"))
  187. presenceData.state = "(MilRP)";
  188. else if (document.location.pathname.includes("/cwrp"))
  189. presenceData.state = "(CWRP)";
  190. }
  191. if (document.location.pathname.includes("/minigameboard")) {
  192. presenceData.details = "Viewing Minigame leaderboards";
  193. presenceData.startTimestamp = currentTime;
  194. if (document.location.pathname.includes("/milrp"))
  195. presenceData.state = "(MilRP)";
  196. else if (document.location.pathname.includes("/cwrp"))
  197. presenceData.state = "(CWRP)";
  198. }
  199. if (document.location.pathname.includes("/profile/")) {
  200. presenceData.details = `Viewing ${
  201. document.querySelector(
  202. "#app > div:nth-child(2) > div > div.panel.panel-default > div.panel-body > div > div:nth-child(1) > span"
  203. ).textContent
  204. }'s profile`;
  205. let steamID32;
  206. const steamID64 = BigInt(
  207. document.location.pathname
  208. .substr(document.location.pathname.indexOf("/", 2))
  209. .replace("/", "")
  210. .replace("/", "")
  211. );
  212. if (steamID64 % 2n === 0n) {
  213. steamID32 = `STEAM_0:0:${(
  214. (steamID64 - 76561197960265728n) /
  215. 2n
  216. ).toString()}`;
  217. } else {
  218. steamID32 = `STEAM_0:1:${(
  219. (steamID64 - 76561197960265728n) /
  220. 2n
  221. ).toString()}`;
  222. }
  223. presenceData.state = steamID32;
  224. presenceData.startTimestamp = currentTime;
  225. }
  226. } else if (document.location.hostname === "forum.superiorservers.co") {
  227. presenceData.details = "Forums";
  228. if (document.location.pathname === "/" || !document.location.pathname) {
  229. presenceData.state = "Home";
  230. presenceData.startTimestamp = currentTime;
  231. }
  232. if (document.location.pathname.includes("/topic/")) {
  233. presenceData.state = `Viewing topic: ${
  234. document.querySelector(
  235. "#ipsLayout_mainArea > div.ipsPageHeader.ipsClearfix > div.ipsPhotoPanel.ipsPhotoPanel_small.ipsPhotoPanel_notPhone.ipsClearfix > div > h1 > span > span"
  236. ).textContent
  237. }`;
  238. presenceData.startTimestamp = currentTime;
  239. }
  240. if (document.location.pathname.includes("/profile/")) {
  241. presenceData.state = `Viewing profile: ${
  242. document.querySelector(
  243. "#elProfileHeader > div.ipsColumns.ipsColumns_collapsePhone > div.ipsColumn.ipsColumn_fluid > div > h1"
  244. ).textContent
  245. }`;
  246. presenceData.startTimestamp = currentTime;
  247. }
  248. }
  249. presence.setActivity(presenceData);
  250. });