presence.ts 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336
  1. const presence = new Presence({
  2. clientId: "693097839424831489",
  3. }),
  4. browsingTimestamp = Math.floor(Date.now() / 1000);
  5. let user: HTMLElement | Element, thread: HTMLElement | Element;
  6. presence.on("UpdateData", async () => {
  7. const presenceData: PresenceData = {
  8. largeImageKey:
  9. "https://cdn.rcd.gg/PreMiD/websites/M/Minecraft%20Central/assets/logo.png",
  10. startTimestamp: browsingTimestamp,
  11. };
  12. if (document.location.hostname === "mccentral.org") {
  13. if (document.location.pathname === "/community/") {
  14. presenceData.details = "Viewing:";
  15. presenceData.state = "Home page";
  16. } else if (document.location.pathname === "/community/forums/") {
  17. presenceData.details = "Viewing:";
  18. presenceData.state = "Forums main page";
  19. } else if (document.location.pathname.includes("/add-reply"))
  20. presenceData.details = "Replying a thread";
  21. else if (document.location.pathname.includes("/threads/")) {
  22. thread = document.querySelector(".titleBar > h1");
  23. presenceData.details = "Viewing the thread:";
  24. presenceData.state = `"${(thread as HTMLElement).textContent}"`;
  25. } else if (document.location.pathname.includes("/announcements/")) {
  26. presenceData.details = "Viewing:";
  27. presenceData.state = "Annoucements";
  28. } else if (document.location.pathname.includes("/changelog/")) {
  29. presenceData.details = "Viewing:";
  30. presenceData.state = "Changelogs";
  31. } else if (document.location.pathname.includes("/newspaper/")) {
  32. presenceData.details = "Viewing:";
  33. presenceData.state = "Newspaper";
  34. } else if (document.location.pathname.includes("/faq/")) {
  35. presenceData.details = "Viewing:";
  36. presenceData.state = "FAQ";
  37. } else if (document.location.pathname.includes("/bugs/")) {
  38. presenceData.details = "Viewing:";
  39. presenceData.state = "Bug Reports main page";
  40. } else if (document.location.pathname.includes("/forms/bug-reports.15/"))
  41. presenceData.details = "Reporting a bug";
  42. else if (document.location.pathname.includes("/support/")) {
  43. presenceData.details = "Viewing:";
  44. presenceData.state = "Support forums";
  45. } else if (document.location.pathname.includes("/apply/")) {
  46. presenceData.details = "Viewing:";
  47. presenceData.state = "Staff Application forums";
  48. } else if (
  49. document.location.pathname.includes("/forms/staff-application.5/")
  50. )
  51. presenceData.details = "Applying for staff";
  52. else if (
  53. document.location.pathname.includes(
  54. "/forms/previous-staff-application.7/"
  55. )
  56. )
  57. presenceData.details = "Applying for returning staff";
  58. else if (document.location.pathname.includes("/youtuber/")) {
  59. presenceData.details = "Viewing:";
  60. presenceData.state = "Youtuber Application forums";
  61. } else if (
  62. document.location.pathname.includes("/forms/youtuber-application.6/")
  63. )
  64. presenceData.details = "Applying for Youtuber";
  65. else if (document.location.pathname.includes("/reports/")) {
  66. presenceData.details = "Viewing:";
  67. presenceData.state = "Report Players forums";
  68. } else if (document.location.pathname.includes("/forms/report-players.2/"))
  69. presenceData.details = "Reporting a player";
  70. else if (document.location.pathname.includes("/reports-staff/")) {
  71. presenceData.details = "Viewing:";
  72. presenceData.state = "Report Staff forums";
  73. } else if (document.location.pathname.includes("/forms/report-staff.17/"))
  74. presenceData.details = "Reporting a staff member";
  75. else if (document.location.pathname.includes("/appeals/")) {
  76. presenceData.details = "Viewing:";
  77. presenceData.state = "Punishment Appeals forums";
  78. } else if (
  79. document.location.pathname.includes("/forms/punishment-appeal.1/")
  80. )
  81. presenceData.details = "Making a punishment appeal";
  82. else if (document.location.pathname.includes("/punishments/"))
  83. presenceData.details = "Searching for punishments";
  84. else if (document.location.pathname.includes("/general/")) {
  85. presenceData.details = "Viewing:";
  86. presenceData.state = "General Discussion forums";
  87. } else {
  88. switch (document.location.pathname) {
  89. case "/community/forums/skyblock/": {
  90. presenceData.details = "Viewing:";
  91. presenceData.state = "Skyblock Discussion forums";
  92. break;
  93. }
  94. case "/community/forums/creative/": {
  95. presenceData.details = "Viewing:";
  96. presenceData.state = "Creative Discussion forums";
  97. break;
  98. }
  99. case "/community/forums/kitpvp/": {
  100. presenceData.details = "Viewing:";
  101. presenceData.state = "KitPvP Discussion forums";
  102. break;
  103. }
  104. case "/community/forums/survival/": {
  105. presenceData.details = "Viewing:";
  106. presenceData.state = "Survival Discussion forums";
  107. break;
  108. }
  109. case "/community/forums/prison/": {
  110. presenceData.details = "Viewing:";
  111. presenceData.state = "Prison Discussion forums";
  112. break;
  113. }
  114. case "/community/forums/factions/": {
  115. presenceData.details = "Viewing:";
  116. presenceData.state = "Factions Discussion forums";
  117. break;
  118. }
  119. case "/community/forums/minigames/": {
  120. presenceData.details = "Viewing:";
  121. presenceData.state = "Minigames Discussion forums";
  122. break;
  123. }
  124. default:
  125. if (document.location.pathname.includes("/off-topic/")) {
  126. presenceData.details = "Viewing:";
  127. presenceData.state = "Off Topic forums";
  128. } else if (document.location.pathname.includes("/giveaways/")) {
  129. presenceData.details = "Viewing:";
  130. presenceData.state = "Giveaways forums";
  131. } else if (document.location.pathname.includes("/suggestions/")) {
  132. presenceData.details = "Viewing:";
  133. presenceData.state = "Server Suggestions forums";
  134. } else if (document.location.pathname.includes("/maps/")) {
  135. presenceData.details = "Viewing:";
  136. presenceData.state = "Map Submission forums";
  137. } else if (
  138. document.location.pathname.includes("/community-ticket/")
  139. ) {
  140. presenceData.details = "Viewing:";
  141. presenceData.state = "Community Ticket forums";
  142. } else if (
  143. document.location.pathname.includes("/forms/community-ticket.18/")
  144. )
  145. presenceData.details = "Sending a Community Ticket";
  146. else if (document.location.pathname.includes("/staff/")) {
  147. presenceData.details = "Viewing:";
  148. presenceData.state = "Staff Members page";
  149. } else if (document.location.pathname.includes("/rules/")) {
  150. presenceData.details = "Viewing:";
  151. presenceData.state = "Rules page";
  152. } else if (document.location.pathname.includes("/vote/")) {
  153. presenceData.details = "Viewing:";
  154. presenceData.state = "Voting page";
  155. } else if (
  156. document.location.pathname === "/community/leaderboards/"
  157. ) {
  158. presenceData.details = "Viewing:";
  159. presenceData.state = "Leaderboards page";
  160. } else if (document.location.pathname.includes("/guilds/")) {
  161. presenceData.details = "Viewing:";
  162. presenceData.state = "Guilds leaderboards";
  163. } else if (document.location.pathname.includes("/survivalgames/")) {
  164. presenceData.details = "Viewing:";
  165. presenceData.state = "Survival Games leaderboards";
  166. } else if (document.location.pathname.includes("/skywars/")) {
  167. presenceData.details = "Viewing:";
  168. presenceData.state = "Skywars leaderboards";
  169. } else if (document.location.pathname.includes("/walls/")) {
  170. presenceData.details = "Viewing:";
  171. presenceData.state = "Speedy Walls leaderboards";
  172. } else if (document.location.pathname.includes("/ctf/")) {
  173. presenceData.details = "Viewing:";
  174. presenceData.state = "CTF leaderboards";
  175. } else if (document.location.pathname.includes("/murder/")) {
  176. presenceData.details = "Viewing:";
  177. presenceData.state = "Murder Mayhem leaderboards";
  178. } else if (document.location.pathname.includes("/championbuilder/")) {
  179. presenceData.details = "Viewing:";
  180. presenceData.state = "Champion Builder leaderboards";
  181. } else if (document.location.pathname.includes("/cakewars/")) {
  182. presenceData.details = "Viewing:";
  183. presenceData.state = "Cakewars leaderboards";
  184. } else if (document.location.pathname.includes("/uhc/")) {
  185. presenceData.details = "Viewing:";
  186. presenceData.state = "UHC leaderboards";
  187. } else {
  188. switch (document.location.pathname) {
  189. case "/community/leaderboards/skyblock/": {
  190. presenceData.details = "Viewing:";
  191. presenceData.state = "Skyblock leaderboards";
  192. break;
  193. }
  194. case "/community/leaderboards/survival/": {
  195. presenceData.details = "Viewing:";
  196. presenceData.state = "Survival leaderboards";
  197. break;
  198. }
  199. case "/community/leaderboards/factions/": {
  200. presenceData.details = "Viewing:";
  201. presenceData.state = "Factions leaderboards";
  202. break;
  203. }
  204. case "/community/leaderboards/prison/": {
  205. presenceData.details = "Viewing:";
  206. presenceData.state = "Prison leaderboards";
  207. break;
  208. }
  209. case "/community/leaderboards/kitpvp/": {
  210. presenceData.details = "Viewing:";
  211. presenceData.state = "KitPvP leaderboards";
  212. break;
  213. }
  214. case "/community/leaderboards/arenapvp/": {
  215. presenceData.details = "Viewing:";
  216. presenceData.state = "ArenaPvP leaderboards";
  217. break;
  218. }
  219. case "/community/account/": {
  220. presenceData.details = "Changing personal details";
  221. break;
  222. }
  223. default:
  224. if (document.location.pathname.includes("/account/alerts")) {
  225. presenceData.details = "Viewing:";
  226. presenceData.state = "Latest alerts";
  227. } else if (
  228. document.location.pathname === "/community/conversations/"
  229. ) {
  230. presenceData.details = "Viewing:";
  231. presenceData.state = "Conversations";
  232. } else if (
  233. document.location.pathname === "/community/conversations/add"
  234. ) {
  235. presenceData.details = "Starting a:";
  236. presenceData.state = "New conversation...";
  237. } else if (document.location.pathname.includes("/account/")) {
  238. presenceData.details = "Viewing:";
  239. presenceData.state = "Account details";
  240. } else if (
  241. document.location.pathname === "/community/watched/threads"
  242. ) {
  243. presenceData.details = "Viewing:";
  244. presenceData.state = "Unread watched threads";
  245. } else if (
  246. document.location.pathname === "/community/watched/forums"
  247. ) {
  248. presenceData.details = "Viewing:";
  249. presenceData.state = "Watched forums";
  250. } else if (document.location.pathname.includes("/members/")) {
  251. user = document.querySelector(".mainText > h1");
  252. presenceData.details = "Viewing:";
  253. presenceData.state = `${
  254. (user as HTMLElement).textContent
  255. }'s profile page`;
  256. } else if (
  257. document.location.pathname.includes("/search/search")
  258. ) {
  259. presenceData.details = "Searching for:";
  260. presenceData.state = "No results.";
  261. } else if (document.location.pathname.includes("/search/"))
  262. presenceData.details = "Searching...";
  263. }
  264. }
  265. }
  266. }
  267. } else if (document.location.hostname === "buy.mccentral.org") {
  268. if (document.location.pathname === "/") {
  269. presenceData.details = "Viewing:";
  270. presenceData.state = "Store home page";
  271. } else if (document.location.pathname.includes("/category/91801")) {
  272. presenceData.details = "Checking on Store:";
  273. presenceData.state = "Ranks";
  274. } else if (document.location.pathname.includes("/category/205563")) {
  275. presenceData.details = "Checking on Store:";
  276. presenceData.state = "Coal Rank upgrades";
  277. } else if (document.location.pathname.includes("/category/205565")) {
  278. presenceData.details = "Checking on Store:";
  279. presenceData.state = "Iron Rank upgrades";
  280. } else if (document.location.pathname.includes("/category/205567")) {
  281. presenceData.details = "Checking on Store:";
  282. presenceData.state = "Gold Rank upgrades";
  283. } else if (document.location.pathname.includes("/category/205569")) {
  284. presenceData.details = "Checking on Store:";
  285. presenceData.state = "Lapis Rank upgrades";
  286. } else if (document.location.pathname.includes("/category/205570")) {
  287. presenceData.details = "Checking on Store:";
  288. presenceData.state = "Emerald Rank upgrades";
  289. } else if (document.location.pathname.includes("/category/205571")) {
  290. presenceData.details = "Checking on Store:";
  291. presenceData.state = "Diamond Rank upgrades";
  292. } else if (document.location.pathname.includes("/category/512622")) {
  293. presenceData.details = "Checking on Store:";
  294. presenceData.state = "Bedrock Rank upgrades";
  295. } else if (document.location.pathname.includes("/category/860358")) {
  296. presenceData.details = "Checking on Store:";
  297. presenceData.state = "Legend Rank upgrades";
  298. } else if (document.location.pathname.includes("/category/519352")) {
  299. presenceData.details = "Checking on Store:";
  300. presenceData.state = "Keys";
  301. } else if (document.location.pathname.includes("/category/462418")) {
  302. presenceData.details = "Checking on Store:";
  303. presenceData.state = "Effects";
  304. } else if (document.location.pathname.includes("/category/676785")) {
  305. presenceData.details = "Checking on Store:";
  306. presenceData.state = "Pocketpals";
  307. } else if (document.location.pathname.includes("/category/722423")) {
  308. presenceData.details = "Checking on Store:";
  309. presenceData.state = "Boosters";
  310. } else if (document.location.pathname.includes("/category/1080289")) {
  311. presenceData.details = "Checking on Store:";
  312. presenceData.state = "Gift Cards";
  313. } else if (document.location.pathname.includes("/checkout"))
  314. presenceData.details = "Checkout on Store";
  315. }
  316. if (presenceData.details) presence.setActivity(presenceData);
  317. else presence.setActivity();
  318. });