discordwrapper.js 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. // Work in progress
  2. const {Client} = require('discord-rpc')
  3. const ConfigManager = require('./configmanager.js')
  4. let rpc
  5. let activity
  6. exports.initRPC = function(genSettings, servSettings, initialDetails = 'Waiting for Client..'){
  7. rpc = new Client({ transport: 'ipc' })
  8. rpc.on('ready', () => {
  9. activity = {
  10. details: initialDetails,
  11. state: 'Server: ' + servSettings.shortId,
  12. largeImageKey: servSettings.largeImageKey,
  13. largeImageText: servSettings.largeImageText,
  14. smallImageKey: genSettings.smallImageKey,
  15. smallImageText: genSettings.smallImageText,
  16. startTimestamp: new Date().getTime() / 1000,
  17. instance: false
  18. }
  19. rpc.setActivity(activity)
  20. })
  21. rpc.login(genSettings.clientID).catch(error => {
  22. if(error.message.includes('ENOENT')) {
  23. console.log('Unable to initialize Discord Rich Presence, no client detected.')
  24. } else {
  25. console.log('Unable to initialize Discord Rich Presence: ' + error.message, error)
  26. }
  27. })
  28. return rpc
  29. }
  30. exports.updateDetails = function(details){
  31. if(activity == null){
  32. console.error('Discord RPC is not initialized and therefore cannot be updated.')
  33. }
  34. activity.details = details
  35. rpc.setActivity(activity)
  36. }
  37. exports.shutdownRPC = function(){
  38. if(!rpc) return
  39. // Workaround until discord rpc releases clearActivity()
  40. rpc.request('SET_ACTIVITY', {pid: process.pid})
  41. rpc.destroy()
  42. rpc = null
  43. activity = null
  44. }