presence.ts 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. const presence = new Presence({ clientId: '890757020393816064' })
  2. const startTimestamp = Math.floor(Date.now() / 1000)
  3. presence.on('UpdateData', async () => {
  4. const presenceData: PresenceData = {
  5. largeImageKey: 'https://cdn.rcd.gg/PreMiD/websites/D/Discord%20Turkiye/assets/logo.png',
  6. details: 'Geziniyor',
  7. startTimestamp,
  8. }
  9. const { pathname } = document.location
  10. const privacyMode = await presence.getSetting('privacy_mode').catch(() => false)
  11. if (document.querySelector('[href="/login/"]')) {
  12. presenceData.smallImageText = 'Misafir Modu'
  13. presenceData.smallImageKey = 'https://cdn.rcd.gg/PreMiD/websites/D/Discord%20Turkiye/assets/0.png'
  14. }
  15. else if (document.querySelector('span.avatar.avatar--xxs > img')) {
  16. presenceData.smallImageText = document
  17. .querySelector('span.avatar.avatar--xxs > img')
  18. ?.getAttribute('alt')
  19. presenceData.smallImageKey = 'https://cdn.rcd.gg/PreMiD/websites/D/Discord%20Turkiye/assets/0.png'
  20. }
  21. switch (pathname) {
  22. case '/':
  23. presenceData.details = 'Anasayfayı görüntülüyor'
  24. break
  25. case '/hesabim':
  26. presenceData.details = 'Kişisel detaylarını görüntülüyor'
  27. break
  28. case '/kullanicilar/':
  29. presenceData.details = 'Kullanıcıları görüntülüyor'
  30. break
  31. case '/araclar/':
  32. presenceData.details = 'Araçları görüntülüyor'
  33. delete presenceData.smallImageKey
  34. break
  35. case '/araclar/davet/':
  36. delete presenceData.smallImageKey
  37. if (privacyMode) {
  38. presenceData.details = 'Davet görüntülüyor'
  39. }
  40. else if (
  41. document.querySelector<HTMLElement>('div.tag > div.name')?.textContent
  42. ) {
  43. presenceData.details = 'Daveti görüntülüyor:'
  44. presenceData.state = document.querySelector<HTMLElement>('div.tag > div.name')?.textContent
  45. presenceData.largeImageKey = document
  46. .querySelector<HTMLElement>('div.icon')
  47. ?.style
  48. ?.backgroundImage
  49. ?.split('url("')[1]
  50. ?.split('");')[0]
  51. }
  52. break
  53. case '/konular/':
  54. presenceData.details = 'Konuyu görüntülüyor:'
  55. presenceData.state = document.title.split(' | ')[0]
  56. if (
  57. document
  58. .querySelector<HTMLElement>('div.fr-element.fr-view > p')
  59. ?.textContent
  60. ?.trim()
  61. ) {
  62. presenceData.details = 'Konuya yorum yazıyor:'
  63. presenceData.state = document.title.split(' | ')[0]
  64. }
  65. break
  66. case '/araclar/kullanici/':
  67. delete presenceData.smallImageKey
  68. if (privacyMode) {
  69. presenceData.details = 'Kullanıcı görüntülüyor'
  70. }
  71. else if (document.querySelector<HTMLElement>('div.tag')?.textContent) {
  72. presenceData.details = 'Kullanıcı görüntülüyor:'
  73. presenceData.state = `${
  74. document.querySelector<HTMLElement>('div.tag > div.username')
  75. ?.textContent
  76. }${
  77. document.querySelector<HTMLElement>('div.tag > div.discriminator')
  78. ?.textContent
  79. }`
  80. presenceData.largeImageKey = document
  81. .querySelector<HTMLElement>('div.avatar')
  82. ?.style
  83. ?.backgroundImage
  84. ?.split('url("')[1]
  85. ?.split('");')[0]
  86. }
  87. break
  88. case '/konusmalar/':
  89. presenceData.details = 'Konuşmalarını görüntülüyor'
  90. break
  91. case '/tags/':
  92. presenceData.details = 'Etiketi görüntülüyor:'
  93. presenceData.state = document.title.split(' | ')[0]
  94. break
  95. case '/tags':
  96. presenceData.details = 'Etiketleri görüntülüyor'
  97. break
  98. case '/post-thread':
  99. presenceData.details = 'Kategoride konu açıyor:'
  100. presenceData.state = document.querySelector(
  101. '[itemprop="itemListElement"]:last-child span[itemprop="name"]',
  102. )?.textContent
  103. break
  104. }
  105. if (document.querySelector('span.username > span')) {
  106. presenceData.details = 'Kullanıcıyı görüntülüyor:'
  107. presenceData.state = document.title.split(' | ')[0]
  108. }
  109. if (document.querySelector<HTMLElement>('div.tag')?.textContent) {
  110. presenceData.details = 'Kullanıcı görüntülüyor:'
  111. presenceData.state = `${
  112. document.querySelector<HTMLElement>('div.tag > div.username')?.textContent
  113. }${
  114. document.querySelector<HTMLElement>('div.tag > div.discriminator')
  115. ?.textContent
  116. }`
  117. presenceData.largeImageKey = document
  118. .querySelector<HTMLElement>('div.avatar')
  119. ?.style
  120. ?.backgroundImage
  121. ?.split('url("')[1]
  122. ?.split('");')[0]
  123. }
  124. presence.setActivity(presenceData)
  125. })