From ae603ddad63a85a380cb9322a035deef620b06ae Mon Sep 17 00:00:00 2001 From: knotteye <knotteye@airmail.cc> Date: Sat, 4 Jul 2020 03:09:32 -0500 Subject: [PATCH 1/2] Normalize discord messages into human-readable plaintext. --- src/chat.ts | 44 ++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 42 insertions(+), 2 deletions(-) diff --git a/src/chat.ts b/src/chat.ts index 11993d1..af9d5f5 100644 --- a/src/chat.ts +++ b/src/chat.ts @@ -18,11 +18,11 @@ async function init() { if(config['chat']['discord']['enabled']){ discordClient = new discord.Client(); discordClient.once('ready', ()=>{ console.log('Discord bot ready')}); - discordClient.on('message', (msg) => { + discordClient.on('message', async (msg) => { if(msg['author']['bot']) return; var lu = getUsr(msg['channel']['name'], 'discord') for(var i=0;i<lu.length;i++){ - sendAll(lu[i], [msg['author']['username'], msg['content']], "discord") + sendAll(lu[i], [msg['author']['username'], await normalizeDiscordMsg(msg)], "discord"); } }); discordClient.login(config['chat']['discord']['token']); @@ -184,4 +184,44 @@ async function updateTwitchChan() { } } +async function normalizeDiscordMsg(msg): Promise<string>{ + var nmsg: string=msg['content']; + + //normalize user mentions + var uarray = await msg['mentions']['users'].array(); + var karray = await msg['mentions']['users'].keyArray(); + for(var i=0;i<karray.length;i++){ + var usr = uarray[i]; + nmsg = nmsg.replace(new RegExp('<@!'+karray[i]+'>', 'g'), '@'+usr['username']); + } + + //normalize emoji + var e = nmsg.match(new RegExp('<:\\w+:[0-9]+>', 'g')); + //<:.+:.+> + if(e !== null) + for (var i=0;i<e.length;i++){ + nmsg = nmsg.replace(e[i], e[i].match(new RegExp(':\\w+:', 'g'))[0]); + } + //in 10 minutes, I will have forgot what all of this regex does. + + //normalize role mentions + var uarray = await msg['mentions']['roles'].array(); + var karray = await msg['mentions']['roles'].keyArray(); + for(var i=0;i<karray.length;i++){ + var role = uarray[i]; + nmsg = nmsg.replace(new RegExp('<@&'+karray[i]+'>', 'g'), '@'+role['name']); + } + + //normalize channel mentions + var c = nmsg.match(new RegExp('<#[0-9]+>', 'g')); + if(c !== null) + for(var i=0;i<c.length;i++){ + nmsg = nmsg.replace(c[i], '#'+discordClient.channels.get(c[i].match(new RegExp('[0-9]+', 'g'))[0])['name']); + } + + //fuck me this better work + + return nmsg; +} + export { init, sendAll }; \ No newline at end of file From ec57e23e9cf181ee97c22dc50bd2db93aaea38dc Mon Sep 17 00:00:00 2001 From: knotteye <knotteye@airmail.cc> Date: Sat, 4 Jul 2020 03:14:46 -0500 Subject: [PATCH 2/2] Increment package version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index bb5def9..eeb5699 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "satyr", - "version": "0.7.0", + "version": "0.7.1", "description": "A livestreaming server.", "license": "AGPL-3.0", "author": "knotteye",