From abd45c83464bf9fe7ad2c262d0e162acd19bc786 Mon Sep 17 00:00:00 2001 From: knotteye Date: Sat, 4 Jul 2020 09:53:12 -0500 Subject: [PATCH] Only join channels not already joined with twitchClient and ircClient Leave channels we don't need anymore as well. --- package.json | 2 +- src/chat.ts | 42 ++++++++++++++++++++++++++++++++++-------- 2 files changed, 35 insertions(+), 9 deletions(-) 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