presence.ts 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. const presence = new Presence({
  2. clientId: '1061398473368412210',
  3. })
  4. async function getStrings() {
  5. return presence.getStrings(
  6. {
  7. buttonListenAlong: 'general.buttonListenAlong',
  8. listeningMusic: 'general.listeningMusic',
  9. pause: 'general.paused',
  10. live: 'general.live',
  11. viewPage: 'general.viewPage',
  12. },
  13. await presence.getSetting<string>('lang').catch(() => 'en'),
  14. )
  15. }
  16. presence.on('UpdateData', async () => {
  17. const [strings, buttons] = await Promise.all([
  18. getStrings(),
  19. presence.getSetting<boolean>('buttons'),
  20. ])
  21. const presenceData: PresenceData = {
  22. largeImageKey: 'https://cdn.rcd.gg/PreMiD/websites/V/Vodafone%20FM/assets/logo.png',
  23. details: strings.listeningMusic,
  24. }
  25. if (document.querySelector('#play')?.classList.contains('hidden')) {
  26. presenceData.smallImageKey = 'https://cdn.rcd.gg/PreMiD/websites/V/Vodafone%20FM/assets/0.png'
  27. presenceData.smallImageText = strings.live
  28. }
  29. else {
  30. presenceData.smallImageKey = 'https://cdn.rcd.gg/PreMiD/websites/V/Vodafone%20FM/assets/1.png'
  31. presenceData.smallImageText = strings.pause
  32. }
  33. const artist = document.querySelector('#artist_name')?.textContent
  34. const song = document.querySelector('#song_name')?.textContent
  35. if (artist && song) {
  36. presenceData.details = song
  37. presenceData.state = artist
  38. }
  39. const cover = document.querySelector<HTMLImageElement>('#cover')
  40. if (cover && !cover.src.includes('/images/nocover.png'))
  41. presenceData.largeImageKey = cover.src
  42. if (buttons) {
  43. presenceData.buttons = [
  44. {
  45. label: strings.buttonListenAlong,
  46. url: document.URL,
  47. },
  48. ]
  49. }
  50. presence.setActivity(presenceData)
  51. })