diff --git a/package.json b/package.json index eeb5699..99dde22 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "satyr", - "version": "0.7.1", + "version": "0.7.2", "description": "A livestreaming server.", "license": "AGPL-3.0", "author": "knotteye", diff --git a/src/chat.ts b/src/chat.ts index af9d5f5..f5f2ec9 100644 --- a/src/chat.ts +++ b/src/chat.ts @@ -8,6 +8,7 @@ import * as twitch from "dank-twitch-irc"; var ircClient; var xmppClient; var twitchClient; +var twitchArr: Array = []; var discordClient; var liveUsers: Array; var chatIntegration: Array; @@ -72,6 +73,15 @@ async function init() { sendAll(lu[i], [msg['displayName'], msg['messageText']], "twitch"); } }); + //this library doesn't internally track which channels are currently joined, so we have to do it ourself + twitchClient.on('JOIN', (m) => { + if(twitchArr.indexOf(m['channelName']) === -1) + twitchArr.push(m['channelName']); + }); + twitchClient.on('PART', (m) => { + if(twitchArr.indexOf(m['channelName']) !== -1) + twitchArr.splice(twitchArr.indexOf(m['channelName']), 1); + }); twitchClient.connect(); } } @@ -165,22 +175,38 @@ function getUsr(channel: string, ctype: string): Array{ } async function updateIRCChan() { - var clist: Array = []; + var ilist: Array = []; for(var i=0;i = ilist.filter(n => !Object.keys(ircClient.chans).includes(n)); //channels to join + for(var i=0;i !ilist.includes(n)); //channels to part + for(var i=0;i = []; + var ilist: Array = []; for(var i=0;i = ilist.filter(n => !twitchArr.includes(n)); //channels to join + for(var i=0;i !ilist.includes(n)); //channels to part + for(var i=0;i