presence.ts 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. const presence = new Presence({
  2. clientId: "1061398473368412210",
  3. }),
  4. getStrings = async () =>
  5. presence.getStrings(
  6. {
  7. buttonListenAlong: "general.buttonListenAlong",
  8. listeningMusic: "general.listeningMusic",
  9. pause: "general.paused",
  10. live: "general.live",
  11. viewPage: "general.viewPage",
  12. },
  13. await presence.getSetting<string>("lang").catch(() => "en")
  14. );
  15. presence.on("UpdateData", async () => {
  16. const [strings, buttons] = await Promise.all([
  17. getStrings(),
  18. presence.getSetting<boolean>("buttons"),
  19. ]),
  20. presenceData: PresenceData = {
  21. largeImageKey:
  22. "https://cdn.rcd.gg/PreMiD/websites/V/Vodafone%20FM/assets/logo.png",
  23. details: strings.listeningMusic,
  24. };
  25. if (document.querySelector("#play").classList.contains("hidden")) {
  26. presenceData.smallImageKey =
  27. "https://cdn.rcd.gg/PreMiD/websites/V/Vodafone%20FM/assets/0.png";
  28. presenceData.smallImageText = strings.live;
  29. } else {
  30. presenceData.smallImageKey =
  31. "https://cdn.rcd.gg/PreMiD/websites/V/Vodafone%20FM/assets/1.png";
  32. presenceData.smallImageText = strings.pause;
  33. }
  34. const artist = document.querySelector("#artist_name")?.textContent,
  35. song = document.querySelector("#song_name")?.textContent;
  36. if (artist && song) {
  37. presenceData.details = song;
  38. presenceData.state = artist;
  39. }
  40. const cover = document.querySelector<HTMLImageElement>("#cover");
  41. if (cover && !cover.src.includes("/images/nocover.png"))
  42. presenceData.largeImageKey = cover.src;
  43. if (buttons) {
  44. presenceData.buttons = [
  45. {
  46. label: strings.buttonListenAlong,
  47. url: document.URL,
  48. },
  49. ];
  50. }
  51. presence.setActivity(presenceData);
  52. });