discordwrapper.js 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  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. }
  29. exports.updateDetails = function(details){
  30. if(activity == null){
  31. console.error('Discord RPC is not initialized and therefore cannot be updated.')
  32. }
  33. activity.details = details
  34. rpc.setActivity(activity)
  35. }
  36. exports.shutdownRPC = function(){
  37. if(!rpc) return
  38. rpc.setActivity({})
  39. rpc.destroy()
  40. rpc = null
  41. activity = null
  42. }