presence.ts 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. const presence = new Presence({
  2. clientId: "786770326234464256",
  3. }),
  4. browsingTimestamp = Math.floor(Date.now() / 1000);
  5. const enum Assets {
  6. Homepage = "https://cdn.rcd.gg/PreMiD/websites/M/MDN%20Web%20Docs/assets/0.png",
  7. Extension = "https://cdn.rcd.gg/PreMiD/websites/M/MDN%20Web%20Docs/assets/1.png",
  8. Mathml = "https://cdn.rcd.gg/PreMiD/websites/M/MDN%20Web%20Docs/assets/2.png",
  9. Css = "https://cdn.rcd.gg/PreMiD/websites/M/MDN%20Web%20Docs/assets/3.png",
  10. Html = "https://cdn.rcd.gg/PreMiD/websites/M/MDN%20Web%20Docs/assets/4.png",
  11. Javascript = "https://cdn.rcd.gg/PreMiD/websites/M/MDN%20Web%20Docs/assets/5.png",
  12. }
  13. presence.on("UpdateData", async () => {
  14. const presenceData: PresenceData = {
  15. startTimestamp: browsingTimestamp,
  16. },
  17. paths = document.location.pathname.split("/");
  18. if (!paths[2]) {
  19. presenceData.largeImageKey = Assets.Homepage;
  20. presenceData.details = "Looking at the main page...";
  21. } else if (!paths[3]) {
  22. presenceData.largeImageKey = Assets.Homepage;
  23. presenceData.details = "Looking at Web Technologies";
  24. } else {
  25. switch (paths[4]) {
  26. case "JavaScript": {
  27. presenceData.largeImageKey = Assets.Javascript;
  28. if (paths[5]) {
  29. paths.splice(0, 5);
  30. presenceData.details = `JavaScript: Looking at ${paths[0]}`;
  31. if (paths[1]) {
  32. paths.splice(0, 1);
  33. presenceData.state = `Topic: ${paths.join(", ")}`;
  34. }
  35. } else presenceData.details = "Looking at JavaScript Technologie";
  36. break;
  37. }
  38. case "HTML": {
  39. presenceData.largeImageKey = Assets.Html;
  40. if (paths[5]) {
  41. paths.splice(0, 5);
  42. presenceData.details = `HTML: Looking at ${paths[0]}`;
  43. if (paths[1]) {
  44. paths.splice(0, 1);
  45. presenceData.state = `Topic: ${paths.join(", ")}`;
  46. }
  47. } else presenceData.details = "Looking at HTML Technologie";
  48. break;
  49. }
  50. case "CSS": {
  51. presenceData.largeImageKey = Assets.Css;
  52. if (paths[5]) {
  53. paths.splice(0, 5);
  54. presenceData.details = `CSS: Looking at ${paths[0]}`;
  55. if (paths[1]) {
  56. paths.splice(0, 1);
  57. presenceData.state = `Topic: ${paths.join(", ")}`;
  58. }
  59. } else presenceData.details = "Looking at CSS Technologie";
  60. break;
  61. }
  62. case "MathML": {
  63. presenceData.largeImageKey = Assets.Mathml;
  64. if (paths[5]) {
  65. paths.splice(0, 5);
  66. presenceData.details = `MathML: Looking at ${paths[0]}`;
  67. if (paths[1]) {
  68. paths.splice(0, 1);
  69. presenceData.state = `Topic: ${paths.join(", ")}`;
  70. }
  71. } else presenceData.details = "Looking at MathML Technologie";
  72. break;
  73. }
  74. case "WebExtensions": {
  75. presenceData.largeImageKey = Assets.Extension;
  76. if (paths[4]) {
  77. paths.splice(0, 5);
  78. presenceData.details = `Web Extensions: Looking at ${paths[0]}`;
  79. if (paths[1]) {
  80. paths.splice(0, 1);
  81. presenceData.state = `Topic: ${paths.join(", ")}`;
  82. }
  83. } else presenceData.details = "Looking at Web Extensions Technologies";
  84. break;
  85. }
  86. default: {
  87. presenceData.largeImageKey = Assets.Homepage;
  88. const tech = paths[4];
  89. if (paths[5]) {
  90. paths.splice(0, 5);
  91. presenceData.details = `${tech}: Looking at ${paths[0]}`;
  92. if (paths[1]) {
  93. paths.splice(0, 1);
  94. presenceData.state = `Topic: ${paths.join(", ")}`;
  95. }
  96. } else presenceData.details = `Looking at ${tech}`;
  97. break;
  98. }
  99. }
  100. }
  101. presence.setActivity(presenceData);
  102. });