presence.ts 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. const presence = new Presence({
  2. clientId: "642719342609432586",
  3. }),
  4. browsingTimestamp = Math.floor(Date.now() / 1000);
  5. let title: HTMLElement;
  6. presence.on("UpdateData", async () => {
  7. const presenceData: PresenceData = {
  8. largeImageKey:
  9. "https://cdn.rcd.gg/PreMiD/websites/F/FimFiction/assets/logo.png",
  10. startTimestamp: browsingTimestamp,
  11. };
  12. if (document.location.hostname === "www.fimfiction.net") {
  13. if (document.location.pathname === "/")
  14. presenceData.details = "Viewing home page";
  15. else if (document.querySelector("#chapter_title")) {
  16. presenceData.details = `Reading: ${
  17. document.querySelector(
  18. "#chapter_format > div.story-page-header > div.inner > div.info-container > div > h1 > a"
  19. ).textContent
  20. }`;
  21. presenceData.state = `Chapter: ${
  22. document.querySelector("#chapter_title").textContent
  23. }`;
  24. presenceData.smallImageKey = Assets.Reading;
  25. } else if (document.location.pathname.includes("/story/")) {
  26. presenceData.details = "Viewing story:";
  27. presenceData.state = document.querySelector(".story_name").textContent;
  28. presenceData.smallImageKey = Assets.Reading;
  29. } else if (document.location.pathname.includes("/user/")) {
  30. presenceData.details = "Viewing user:";
  31. presenceData.state = document.querySelector(
  32. "body > div.body-layout > div.body_container > div:nth-child(4) > div > div.user-page-header > div > div.info-container > h1 > a"
  33. ).textContent;
  34. } else if (document.location.pathname.includes("/tag/")) {
  35. presenceData.details = "Viewing tag:";
  36. presenceData.state = document.querySelector(
  37. "body > div.body-layout > div.body_container > div:nth-child(4) > div > div > form > div > div > div.tag-header-inner > div.info > h1 > a"
  38. ).textContent;
  39. } else if (document.location.pathname.includes("/blog/")) {
  40. presenceData.details = "Reading blog post:";
  41. title =
  42. document.querySelector(
  43. "body > div.body-layout > div.body_container > div:nth-child(4) > div.content.mobile-no-margin > div.two-columns > div.left > div > div.content_box.blog-post-content-box > h1 > span"
  44. ) ||
  45. document.querySelector(
  46. "body > div.body-layout > div.body_container > div:nth-child(4) > div > div.content.mobile-no-margin > div > div.left > div > div.content_box.blog-post-content-box > h1 > span > a"
  47. );
  48. presenceData.state = title.textContent;
  49. presenceData.smallImageKey = Assets.Reading;
  50. } else if (document.location.pathname.includes("/news/story-reviews"))
  51. presenceData.details = "Viewing story revies";
  52. else if (document.location.pathname.includes("/group/")) {
  53. presenceData.details = "Viewing group:";
  54. presenceData.state = document.querySelector(".group_name").textContent;
  55. } else if (document.location.pathname.includes("/groups"))
  56. presenceData.details = "Viewing all groups";
  57. else if (document.location.pathname.includes("/stories"))
  58. presenceData.details = "Browsing stories...";
  59. }
  60. if (presenceData.details) presence.setActivity(presenceData);
  61. else presence.setActivity();
  62. });