presence.ts 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. const presence = new Presence({
  2. clientId: "1219194850767929374",
  3. });
  4. let browsingTimestamp = Math.floor(Date.now() / 1000);
  5. const enum Assets {
  6. Logo = "https://cdn.rcd.gg/PreMiD/websites/M/meow.camera/assets/logo.png",
  7. }
  8. presence.on("UpdateData", async () => {
  9. const presenceData: PresenceData = {
  10. largeImageKey: Assets.Logo,
  11. startTimestamp: browsingTimestamp,
  12. };
  13. presenceData.details = document.querySelector(".feeder-title").textContent;
  14. presenceData.state = getStats();
  15. setTimestamps(document.querySelector("video"), presenceData);
  16. presenceData.buttons = [
  17. {
  18. label: "View Feeder",
  19. url: document.location.href,
  20. },
  21. ];
  22. presence.setActivity(presenceData);
  23. });
  24. function getStats(): string {
  25. const stats: string[] = [],
  26. time = document.querySelector(".time"),
  27. snack = document.querySelector("[title='Snack stock']"),
  28. kibble = document.querySelector("[title='Kibble stock']");
  29. if (time) {
  30. const timeArray: string[] = time.textContent.split(":");
  31. let timeString = `🕒: ${timeArray[1]}:${timeArray[2]}`;
  32. if (timeArray[timeArray.length - 1].includes("PM")) timeString += " PM";
  33. else if (timeArray[timeArray.length - 1].includes("AM"))
  34. timeString += " AM";
  35. stats.push(timeString);
  36. }
  37. if (snack) stats.push(`🍪: ${snack.textContent}`);
  38. if (kibble) stats.push(`🍚: ${kibble.textContent}`);
  39. return stats.join(" | ");
  40. }
  41. function setTimestamps(
  42. element: HTMLVideoElement,
  43. presenceData: PresenceData
  44. ): void {
  45. if (element.paused) {
  46. delete presenceData.startTimestamp;
  47. browsingTimestamp = Math.floor(Date.now() / 1000);
  48. presenceData.smallImageKey = Assets.Pause;
  49. } else presenceData.smallImageKey = Assets.Live;
  50. }