From 29d20905400ac0efa0b367bc6187b08cc83c4c3c Mon Sep 17 00:00:00 2001 From: knotteye <knotteye@airmail.cc> Date: Sat, 27 Jun 2020 03:23:04 -0500 Subject: [PATCH] Add working IRC integration --- install/config.example.yml | 1 + src/chat.ts | 36 ++++++++++++++++++++++++++++++++++-- 2 files changed, 35 insertions(+), 2 deletions(-) diff --git a/install/config.example.yml b/install/config.example.yml index f47e9f2..7366345 100644 --- a/install/config.example.yml +++ b/install/config.example.yml @@ -35,6 +35,7 @@ chat: tls: false nickname: 'SatyrChat' username: 'SatyrChat' + realname: 'Satyr Chat Integration Bot' sasl: false password: diff --git a/src/chat.ts b/src/chat.ts index 9d4f309..af69e19 100644 --- a/src/chat.ts +++ b/src/chat.ts @@ -27,7 +27,26 @@ async function init() { discordClient.login(config['chat']['discord']['token']); } if(config['chat']['irc']['enabled']){ - + ircClient = new irc.Client(config['chat']['irc']['server'], config['chat']['irc']['nickname'], { + userName: config['chat']['irc']['username'], + realName: config['chat']['irc']['realname'], + port: config['chat']['irc']['port'], + secure: config['chat']['irc']['tls'], + sasl: config['chat']['irc']['sasl'], + password: config['chat']['irc']['password'], + }); + ircClient.addListener('error', (message) => { + console.log('IRC Client Error: ', message); + }); + ircClient.once('registered', () => { + console.log("IRC Client Ready"); + }); + ircClient.on('message', (from, to, msg) => { + var lu = getUsr(to, 'irc'); + for(var i=0;i<lu.length;i++){ + sendAll(lu[i], [from, msg], "irc") + } + }); } if(config['chat']['xmpp']['enabled']){ @@ -50,6 +69,7 @@ async function updateInteg() { if(liveUsers.length === 1) { chatIntegration = await db.query('SELECT * FROM chat_integration WHERE username='+db.raw.escape(liveUsers[0]['username'])); console.log('updated ci'); + updateIRCChan(); return; } var qs: string; @@ -61,6 +81,7 @@ async function updateInteg() { chatIntegration = await db.query('SELECT * FROM chat_integration WHERE username='+qs); console.log('updated integrations'); console.log(chatIntegration); + updateIRCChan(); } async function sendAll(user: string, msg: Array<string>, src: string) { @@ -72,7 +93,7 @@ async function sendAll(user: string, msg: Array<string>, src: string) { if(user === null) return; - //if(src !== "irc") sendIRC(); + if(src !== "irc") sendIRC(getCh(user, "irc"), '['+src.toUpperCase()+']'+msg[0]+': '+msg[1]); //if(src !== "twitch") sendTwitch(); if(src !== "discord") sendDiscord(getCh(user, "discord"), '['+src.toUpperCase()+']'+msg[0]+': '+msg[1]); //if(src !== "xmpp") sendXMPP(); @@ -82,6 +103,7 @@ async function sendAll(user: string, msg: Array<string>, src: string) { async function sendIRC(channel: string, msg: string) { if(!config['chat']['irc']['enabled']) return; if(channel === null) return; + ircClient.say(channel, msg); } async function sendDiscord(channel: string, msg: string) { @@ -123,4 +145,14 @@ function getUsr(channel: string, ctype: string): Array<string>{ return list; } +async function updateIRCChan() { + var clist: Array<string> = []; + for(var i=0;i<chatIntegration.length;i++){ + if(chatIntegration[i]['irc'].trim() !== "" && chatIntegration[i]['irc'] !== null) clist.push(chatIntegration[i]['irc']); + } + for(var i=0;i<clist.length;i++){ + ircClient.join(clist[i]); + } +} + export { init, sendAll }; \ No newline at end of file