presence.ts 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. const presence = new Presence({
  2. clientId: "1077743931460177972",
  3. }),
  4. slideshow = presence.createSlideshow(),
  5. watchingTimestamp = Math.floor(Date.now() / 1000);
  6. presence.on("UpdateData", async () => {
  7. const currentStreams = document.location.pathname
  8. .split("/")
  9. .filter(function (str) {
  10. return str !== "";
  11. }),
  12. presenceData: PresenceData = {
  13. largeImageKey:
  14. "https://cdn.rcd.gg/PreMiD/websites/M/MultiTwitch/assets/0.png",
  15. };
  16. if (currentStreams.length === 0) {
  17. presenceData.details = "On the home screen";
  18. if (presence.getSetting("showButton")) {
  19. presenceData.buttons = [
  20. {
  21. label: "Open MultiTwitch",
  22. url: document.location.href,
  23. },
  24. ];
  25. }
  26. presence.setActivity(presenceData);
  27. } else if (await presence.getSetting("showStreamers")) {
  28. for (const stream of currentStreams) {
  29. slideshow.addSlide(
  30. stream,
  31. {
  32. largeImageKey:
  33. "https://cdn.rcd.gg/PreMiD/websites/M/MultiTwitch/assets/0.png",
  34. details: `Watching ${currentStreams.length} ${
  35. currentStreams.length > 1 ? "streams" : "stream"
  36. }`,
  37. state: stream,
  38. },
  39. 5000
  40. );
  41. }
  42. if (await presence.getSetting("showButton")) {
  43. for (const slide of slideshow.getSlides()) {
  44. const pDat = slide.data;
  45. pDat.buttons = [
  46. {
  47. label: "Open MultiTwitch",
  48. url: document.location.href,
  49. },
  50. ];
  51. slide.updateData(pDat);
  52. }
  53. }
  54. presence.setActivity(slideshow);
  55. } else {
  56. slideshow.deleteAllSlides();
  57. presenceData.details = `Watching ${currentStreams.length} ${
  58. currentStreams.length > 1 ? "streams" : "stream"
  59. }`;
  60. presenceData.startTimestamp = watchingTimestamp;
  61. presence.setActivity(presenceData);
  62. }
  63. });