presence.ts 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. const presence = new Presence({
  2. clientId: "630239297521319953",
  3. }),
  4. capitalize = (text: string): string => {
  5. return text
  6. .replace(/[[{(_)}\]]/g, " ")
  7. .split(" ")
  8. .map(str => str.charAt(0).toUpperCase() + str.slice(1))
  9. .join(" ");
  10. },
  11. whitelist = ["HTML", "CSS", "SQL", "PHP", "W3.CSS", "JQUERY", "XML"];
  12. let elapsed: number, oldUrl: string;
  13. presence.on("UpdateData", () => {
  14. if (window.location.href !== oldUrl) {
  15. oldUrl = window.location.href;
  16. elapsed = Math.floor(Date.now() / 1000);
  17. }
  18. const presenceData: PresenceData = {
  19. largeImageKey:
  20. "https://cdn.rcd.gg/PreMiD/websites/W/W3Schools/assets/logo.png",
  21. startTimestamp: elapsed,
  22. },
  23. language = document.querySelector(".w3-bar-item.w3-button.active"),
  24. lesson = document.querySelector("#main > h1"),
  25. exercise = document.querySelector("#completedExercisesNo");
  26. if (language) {
  27. presenceData.details = `Learning ${capitalize(
  28. language.textContent.toLowerCase()
  29. )}`;
  30. if (whitelist.includes(language.textContent))
  31. presenceData.details = `Learning ${language.textContent}`;
  32. }
  33. if (lesson) presenceData.state = lesson.textContent;
  34. if (exercise) {
  35. presenceData.details = `${capitalize(
  36. window.location.pathname.split("/")[1]
  37. )} Exercise`;
  38. [presenceData.state] = exercise.textContent.match("[0-9](.*)[0-9]");
  39. }
  40. presence.setActivity(presenceData);
  41. });