presence.ts 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. const presence = new Presence({
  2. clientId: "630550023133724692",
  3. });
  4. let deck;
  5. const enum Assets {
  6. Banner = "https://cdn.rcd.gg/PreMiD/websites/Y/Yu-Gi-Oh%20Top%20Decks/assets/0.png",
  7. Logo = "https://cdn.rcd.gg/PreMiD/websites/Y/Yu-Gi-Oh%20Top%20Decks/assets/logo.png",
  8. }
  9. presence.on("UpdateData", async () => {
  10. const presenceData: PresenceData = {
  11. largeImageKey: Assets.Logo,
  12. smallImageKey: Assets.Logo,
  13. };
  14. switch (document.location.pathname) {
  15. case "/": {
  16. presenceData.details = "Browsing Decks..";
  17. presenceData.state = "at Homepage";
  18. presenceData.smallImageText = "browsing";
  19. break;
  20. }
  21. case "/decklists": {
  22. presenceData.details = "Looking at Decklists";
  23. presenceData.state = `Page: ${
  24. document.querySelectorAll(".current")[0].firstElementChild.textContent
  25. } top: ${
  26. document.querySelector("#deck_lists").lastElementChild.firstElementChild
  27. .children[2].textContent
  28. } by ${
  29. document.querySelector("#deck_lists").lastElementChild.firstElementChild
  30. .children[1].ENTITY_NODE
  31. }`;
  32. presenceData.smallImageText = (
  33. document.querySelector("#deck_lists").lastElementChild.firstElementChild
  34. .children[2].firstElementChild as HTMLLinkElement
  35. ).href;
  36. break;
  37. }
  38. case "/top_decks": {
  39. presenceData.details = "Looking at Top decks";
  40. presenceData.state = `Current Meta: ${document
  41. .querySelectorAll(".sortable")[0]
  42. .children[1].firstElementChild.children[1].textContent.replace(
  43. "Most Used Cards",
  44. ""
  45. )}`;
  46. presenceData.largeImageKey = Assets.Banner;
  47. presenceData.smallImageKey = Assets.Logo;
  48. presenceData.smallImageText = "looking";
  49. break;
  50. }
  51. case "/top_cards": {
  52. presenceData.details = "Looking at Top Cards";
  53. (presenceData.state = `Top Card: ${
  54. document.querySelectorAll(".sortable")[0].children[1].firstElementChild
  55. .children[2].textContent
  56. } Price: ${
  57. document.querySelectorAll(".sortable")[0].children[1].firstElementChild
  58. .children[4].textContent
  59. }`),
  60. (presenceData.largeImageKey = Assets.Banner);
  61. presenceData.smallImageKey = Assets.Logo;
  62. presenceData.smallImageText = "looking";
  63. break;
  64. }
  65. case "/new_deck": {
  66. deck = (document.getElementsByName("deck_name")[0] as HTMLInputElement)
  67. .value;
  68. presenceData.details = "Building Deck";
  69. presenceData.state = `Editing: ${deck}`;
  70. presenceData.largeImageKey = Assets.Banner;
  71. presenceData.smallImageKey = Assets.Logo;
  72. presenceData.smallImageText = "creating deck";
  73. break;
  74. }
  75. default:
  76. if (
  77. document.location.pathname.includes("/deck") &&
  78. /\d/.test("/deck/8205")
  79. ) {
  80. deck = document.querySelectorAll(".large-12.columns.panel")[0]
  81. .firstElementChild.textContent;
  82. presenceData.details = `Viewing deck: ${deck} (archetype: ${
  83. document.querySelectorAll(".large-12.columns.panel")[0].children[1]
  84. .children[10].textContent
  85. })`;
  86. presenceData.state = `by: ${
  87. document.querySelectorAll(".large-12.columns.panel")[0].children[1]
  88. .children[1].textContent
  89. }, price: ${
  90. document
  91. .querySelectorAll(".large-12.columns.panel")[1]
  92. .children[1].textContent.replace("\n", ":")
  93. .split(":")[1]
  94. }`;
  95. presenceData.largeImageKey = Assets.Banner;
  96. presenceData.smallImageKey = Assets.Logo;
  97. presenceData.smallImageText = document.location.href;
  98. }
  99. }
  100. presence.setActivity(presenceData);
  101. });