presence.ts 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. const presence = new Presence({ clientId: "869377195682983957" });
  2. presence.on("UpdateData", async () => {
  3. let presenceData: PresenceData = {
  4. largeImageKey:
  5. "https://cdn.rcd.gg/PreMiD/websites/Y/YomuMang%C3%A1s/assets/0.png",
  6. };
  7. const { pathname, href } = document.location,
  8. privacy = await presence.getSetting<boolean>("privacy"),
  9. pages: Record<string, PresenceData> = {
  10. "/": { details: "Página Inicial" },
  11. "/404": { details: "404", state: "Uhn? Onde estamos?" },
  12. "/500": { details: "500", state: "Uhn? Algo deu errado..." },
  13. "/search": { details: "Pesquisa Avançada" },
  14. "/donate": { details: "Página de Doações" },
  15. "/help": { details: "Página de Ajuda" },
  16. "/tutorial": { details: "Página de Tutorial" },
  17. "/shop": { details: "Loja", state: "Gastando Pães de Mel" },
  18. };
  19. if (!privacy) {
  20. if (pathname.startsWith("/manga")) {
  21. const isChapter = pathname.includes("/chapter/"),
  22. chapter =
  23. document.querySelector("#premid-manga-chapter")?.textContent || "0";
  24. if (
  25. document.querySelector("#premid-manga-nsfw")?.textContent !== "true"
  26. ) {
  27. presenceData.details =
  28. document.querySelector("#premid-manga-title")?.textContent || "Obra";
  29. presenceData.state = !isChapter
  30. ? "Perfil da Obra"
  31. : isNaN(Number(chapter))
  32. ? chapter
  33. : `Capítulo ${chapter}`;
  34. presenceData.largeImageKey =
  35. document.querySelector<HTMLImageElement>("#premid-manga-cover")
  36. ?.src ||
  37. "https://cdn.rcd.gg/PreMiD/websites/Y/YomuMang%C3%A1s/assets/1.png";
  38. presenceData.smallImageKey =
  39. "https://cdn.rcd.gg/PreMiD/websites/Y/YomuMang%C3%A1s/assets/logo.png";
  40. presenceData.buttons = [
  41. { label: "Acessar Obra", url: href.split("/chapter/")[0] },
  42. { label: "Ler Capítulo", url: href },
  43. ];
  44. if (!isChapter) presenceData.buttons?.pop();
  45. } else {
  46. presenceData.details = "Sua biblioteca virtual de mangás";
  47. presenceData.state = "manhwas, doujin e mais!";
  48. }
  49. } else if (pathname.startsWith("/user")) {
  50. const username =
  51. document.querySelector("#premid-user-name")?.textContent || "あれ?";
  52. presenceData.details = `Perfil de ${username}`;
  53. presenceData.state = pathname.endsWith("/settings")
  54. ? "Configurando"
  55. : "Vizualizando";
  56. presenceData.largeImageKey =
  57. document.querySelector<HTMLImageElement>("#premid-user-avatar")?.src ||
  58. "https://cdn.rcd.gg/PreMiD/websites/Y/YomuMang%C3%A1s/assets/2.png";
  59. presenceData.smallImageKey =
  60. "https://cdn.rcd.gg/PreMiD/websites/Y/YomuMang%C3%A1s/assets/logo.png";
  61. presenceData.buttons = [
  62. {
  63. label: "Ver Perfil",
  64. url: href.replace("settings", username.split("(")[0].trim()),
  65. },
  66. ];
  67. } else {
  68. for (const [path, data] of Object.entries(pages)) {
  69. if (pathname.includes(path))
  70. presenceData = { ...presenceData, ...data };
  71. }
  72. }
  73. } else {
  74. presenceData.details = "Sua biblioteca virtual de mangás";
  75. presenceData.state = "manhwas, doujin e mais!";
  76. }
  77. presence.setActivity(presenceData);
  78. });