| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- import { LoggerUtil } from './loggerutil'
- import { Client, Presence } from 'discord-rpc'
- // Work in progress
- const logger = new LoggerUtil('%c[DiscordWrapper]', 'color: #7289da; font-weight: bold')
- let client: Client
- let activity: Presence
- // TODO types for these settings
- export function initRPC(genSettings: any, servSettings: any, initialDetails = 'Waiting for Client..'){
- client = new Client({ transport: 'ipc' })
- activity = {
- details: initialDetails,
- state: 'Server: ' + servSettings.shortId,
- largeImageKey: servSettings.largeImageKey,
- largeImageText: servSettings.largeImageText,
- smallImageKey: genSettings.smallImageKey,
- smallImageText: genSettings.smallImageText,
- startTimestamp: new Date().getTime(),
- instance: false
- }
- client.on('ready', () => {
- logger.log('Discord RPC Connected')
- client.setActivity(activity)
- })
-
- client.login({clientId: genSettings.clientId}).catch(error => {
- if(error.message.includes('ENOENT')) {
- logger.log('Unable to initialize Discord Rich Presence, no client detected.')
- } else {
- logger.log('Unable to initialize Discord Rich Presence: ' + error.message, error)
- }
- })
- }
- export function updateDetails(details: string){
- activity.details = details
- client.setActivity(activity)
- }
- export function shutdownRPC(){
- if(!client) return
- client.clearActivity()
- client.destroy()
- client = null as unknown as Client // TODO cleanup
- activity = null as unknown as Presence // TODO cleanup
- }
|