discordwrapper.js 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. // Work in progress
  2. const logger = require('./loggerutil')('%c[DiscordWrapper]', 'color: #7289da; font-weight: bold')
  3. const {Client} = require('discord-rpc-patch')
  4. let client
  5. let activity
  6. exports.initRPC = function(genSettings, servSettings, initialDetails = 'Waiting for Client..'){
  7. client = new Client({ transport: 'ipc' })
  8. activity = {
  9. details: initialDetails,
  10. state: 'Server: ' + servSettings.shortId,
  11. largeImageKey: servSettings.largeImageKey,
  12. largeImageText: servSettings.largeImageText,
  13. smallImageKey: genSettings.smallImageKey,
  14. smallImageText: genSettings.smallImageText,
  15. startTimestamp: new Date().getTime(),
  16. instance: false
  17. }
  18. client.on('ready', () => {
  19. logger.log('Discord RPC Connected')
  20. client.setActivity(activity)
  21. })
  22. client.login({clientId: genSettings.clientId}).catch(error => {
  23. if(error.message.includes('ENOENT')) {
  24. logger.log('Unable to initialize Discord Rich Presence, no client detected.')
  25. } else {
  26. logger.log('Unable to initialize Discord Rich Presence: ' + error.message, error)
  27. }
  28. })
  29. }
  30. exports.updateDetails = function(details){
  31. activity.details = details
  32. client.setActivity(activity)
  33. }
  34. exports.shutdownRPC = function(){
  35. if(!client) return
  36. client.clearActivity()
  37. client.destroy()
  38. client = null
  39. activity = null
  40. }