Boto/www/boto.js

48 lines
1.5 KiB
JavaScript
Raw Normal View History

2022-02-13 13:00:03 +00:00
const countElement = document.querySelector('#count');
2022-02-13 04:58:36 +00:00
const usersElement = document.querySelector('#users');
2022-02-13 13:00:03 +00:00
const statusElement = document.querySelector('#status');
2022-02-13 04:58:36 +00:00
2022-02-13 13:00:03 +00:00
const params = new URLSearchParams(window.location.search);
const channel = params.get('channel') || 'codinggarden';
2022-02-13 03:49:36 +00:00
const client = new tmi.Client({
2022-02-13 13:00:03 +00:00
connection: {
secure: true,
reconnect: true,
},
channels: [channel],
});
2022-02-13 04:39:29 +00:00
//identity: {
// username: 'sariboto',
// password: 'oauth:480i2mbv7zvfjz1t3wplj5di530p9r'
//},
2022-02-13 03:49:36 +00:00
2022-02-13 13:00:03 +00:00
client.connect().then(() => {
statusElement.textContent = `Listening for messages in ${channel}...`;
});
2022-02-13 03:49:36 +00:00
2022-02-13 04:58:36 +00:00
let listeningForCount = false;
2022-02-13 05:19:06 +00:00
let users = {};
2022-02-13 04:58:36 +00:00
2022-02-13 13:00:03 +00:00
client.on('message', (wat, tags, message, self) => {
if (self) return;
const { username } = tags;
if (username.toLowerCase() === channel.toLowerCase()) {
if (message === '!start-count') {
listeningForCount = true;
} else if (message === '!end-count') {
listeningForCount = false;
// say count out loud.
const sayCount = new SpeechSynthesisUtterance(Object.keys(users).length);
window.speechSynthesis.speak(sayCount);
} else if (message === '!clear-count') {
countElement.textContent = 'Waiting for count...';
usersElement.textContent = '';
users = {};
2022-02-13 04:58:36 +00:00
}
2022-02-13 13:00:03 +00:00
} else if (listeningForCount && message === '1') {
users[tags.username] = true;
// display current count page.
countElement.textContent = Object.keys(users).length;
usersElement.textContent = Object.keys(users).join(', ');
}
});