presence.ts 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. const presence = new Presence({
  2. clientId: "1138055195008454656",
  3. }),
  4. browsingTimestamp = Math.floor(Date.now() / 1000);
  5. const enum Assets { // Other default assets can be found at index.d.ts
  6. Logo = "https://cdn.rcd.gg/PreMiD/websites/M/Masuru/assets/logo.webp",
  7. Bot = "https://cdn.rcd.gg/PreMiD/websites/M/Masuru/assets/0.webp",
  8. }
  9. presence.on("UpdateData", async () => {
  10. const presenceData: PresenceData = {
  11. startTimestamp: browsingTimestamp,
  12. },
  13. { pathname, hostname } = document.location;
  14. switch (hostname.replace("www.", "")) {
  15. case "masuru.in.th": {
  16. const title = document.querySelector("title").textContent;
  17. if (title) {
  18. presenceData.largeImageKey = Assets.Logo;
  19. presenceData.details = title;
  20. if (pathname.replace("/th", "").replace("/en", "").startsWith("/s/")) {
  21. presenceData.state = document.querySelector(
  22. 'meta[name="description"]'
  23. );
  24. }
  25. presence.setActivity(presenceData);
  26. }
  27. break;
  28. }
  29. case "bot.masuru.in.th": {
  30. const title = document.querySelector("title").textContent;
  31. if (title) {
  32. presenceData.details = title;
  33. presenceData.largeImageKey = Assets.Bot;
  34. const pathname_ = pathname.replace("/th", "").replace("/en", "");
  35. switch (pathname_) {
  36. case "/":
  37. presenceData.details = `Home - ${title}`;
  38. break;
  39. case "/status":
  40. presenceData.details = `Status - ${title}`;
  41. break;
  42. default:
  43. if (pathname_.startsWith("/dashboard")) {
  44. presenceData.details = `Dashboard - ${title}`;
  45. presenceData.state = pathname_.split("/").reverse()[0];
  46. if (presenceData.state === "discovery") {
  47. presenceData.buttons = [
  48. {
  49. label: "View Discovery",
  50. url: "https://masuru.in.th/discovery",
  51. },
  52. ];
  53. }
  54. }
  55. }
  56. presence.setActivity(presenceData);
  57. }
  58. break;
  59. }
  60. case "cloud.masuru.in.th": {
  61. const title = document.querySelector("title").textContent;
  62. if (title) {
  63. presenceData.details = title;
  64. presenceData.largeImageKey = Assets.Logo;
  65. presence.setActivity(presenceData);
  66. }
  67. break;
  68. }
  69. }
  70. });