From b7b3c4ae639cb057cbe24d75f6d6c4e1acbfb2cd Mon Sep 17 00:00:00 2001 From: Sarimoko Date: Wed, 16 Feb 2022 08:59:40 +0000 Subject: [PATCH] Add 'www/mc_br.js' --- www/mc_br.js | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 www/mc_br.js diff --git a/www/mc_br.js b/www/mc_br.js new file mode 100644 index 0000000..985566e --- /dev/null +++ b/www/mc_br.js @@ -0,0 +1,46 @@ +const countElement = document.querySelector('#mrbr_count'); +const usersElement = document.querySelector('#mrbr_users'); +const statusElement = document.querySelector('#mrbr_status'); + +const params = new URLSearchParams(window.location.search); +const channel = params.get('channel') || 'sarimoko'; +const client = new tmi.Client({ + connection: { + secure: true, + reconnect: true, + }, + channels: [channel], +}); + +client.connect().then(() => { + statusElement.textContent = `Connection to ${channel} successful, listening for votes...`; +}); + +let listeningForCount = false; +let users = {}; + +client.on('message', (wat, tags, message, self) => { + if (self) return; + const { username } = tags; + if (username.toLowerCase() === channel.toLowerCase()) { + if (message === '!startmcbr') { + listeningForCount = true; + } + else if (message === '!stopmcbr') { + listeningForCount = false; + // say count out loud. + const sayCount = new SpeechSynthesisUtterance(Object.keys(users).length); + window.speechSynthesis.speak(sayCount); + } + else if (message === '!clearmcbr') { + countElement.textContent = 'Waiting for votes...'; + usersElement.textContent = ''; + users = {}; + } + } else if (listeningForCount && message === '!mcbr') { + users[tags.username] = true; + // display current count page. + countElement.textContent = Object.keys(users).length; + usersElement.textContent = Object.keys(users).join(', '); + } +}); \ No newline at end of file