Add files via upload
This commit is contained in:
47
js/app.js
47
js/app.js
@@ -4,6 +4,10 @@
|
||||
|
||||
const streamerBotServerAddress = getURLParam("streamerBotServerAddress", "127.0.0.1");
|
||||
const streamerBotServerPort = getURLParam("streamerBotServerPort", "8080");
|
||||
|
||||
const ttsSpeakerBotChat = getURLParam("ttsSpeakerBotChat", false);
|
||||
const ttsSpeakerBotEvents = getURLParam("ttsSpeakerBotEvents", false);
|
||||
|
||||
let streamerBotConnected = false;
|
||||
const chatThreshhold = 50;
|
||||
|
||||
@@ -75,6 +79,8 @@ const streamerBotClient = new StreamerbotClient({
|
||||
|
||||
|
||||
async function addMessageToChat(userID, messageID, platform, data) {
|
||||
|
||||
if (ttsSpeakerBotChat == true) { ttsSpeakerBotSays(data.userName, currentLang.ttschat, data.message); }
|
||||
|
||||
const html = DOMPurify.sanitize(`
|
||||
<div id="${messageID}" data-user="${userID}" class="${platform} ${data.classes} message" style="">
|
||||
@@ -121,6 +127,8 @@ async function addMessageToChat(userID, messageID, platform, data) {
|
||||
|
||||
async function addEventToChat(userID, messageID, platform, data) {
|
||||
|
||||
if (ttsSpeakerBotEvents == true) { ttsSpeakerBotSays(data.userName, '', data.message); }
|
||||
|
||||
const html = DOMPurify.sanitize(`
|
||||
<div id="${messageID}" data-user="${userID}" class="${platform} ${data.classes} message event" style="">
|
||||
<div class="animate__animated ${chatHorizontal == true ? 'animate__fadeInRight' : 'animate__fadeInUp'} animate__faster">
|
||||
@@ -149,7 +157,7 @@ async function addEventToChat(userID, messageID, platform, data) {
|
||||
}, 1000);
|
||||
}, Math.floor(hideAfter * 1000));
|
||||
}
|
||||
|
||||
|
||||
removeExtraChatMessages();
|
||||
}
|
||||
|
||||
@@ -298,7 +306,42 @@ const notifySuccess = (success) => {
|
||||
}
|
||||
|
||||
|
||||
|
||||
function escapeRegex(string) {
|
||||
return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
||||
}
|
||||
|
||||
|
||||
async function ttsSpeakerBotSays(user, action, message) {
|
||||
|
||||
if (streamerBotConnected == false) return;
|
||||
|
||||
const ttstext = await cleanStringOfHTMLButEmotes(message);
|
||||
const ttsmessage = user+' '+action+' '+ttstext;
|
||||
|
||||
streamerBotClient.doAction(
|
||||
{ name : "TTS Event" },
|
||||
{
|
||||
"ttsmessage": ttsmessage,
|
||||
}
|
||||
).then( (ttsstuff) => {
|
||||
console.debug('Sending TTS to Streamer.Bot', ttsstuff);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
async function cleanStringOfHTMLButEmotes(string) {
|
||||
// Cria um elemento DOM temporário
|
||||
const container = document.createElement('div');
|
||||
container.innerHTML = string;
|
||||
|
||||
// Substitui <img class="emote" alt="..."> por texto do alt
|
||||
const emotes = container.querySelectorAll('img.emote[alt]');
|
||||
emotes.forEach(img => {
|
||||
const altText = img.getAttribute('alt');
|
||||
const textNode = document.createTextNode(altText);
|
||||
img.replaceWith(textNode);
|
||||
});
|
||||
|
||||
// Remove todo o restante do HTML
|
||||
return container.textContent || "";
|
||||
}
|
@@ -1,6 +1,7 @@
|
||||
const en = {
|
||||
streamerbotconnected: 'Streamer.bot Online!',
|
||||
streamerbotdisconnected: 'Streamer.bot Disconnected!',
|
||||
ttschat: 'said',
|
||||
|
||||
twitch : {
|
||||
firstMessage : () => `First chatter`,
|
||||
|
@@ -1,6 +1,7 @@
|
||||
const es = {
|
||||
streamerbotconnected: '¡Streamer.bot en línea!',
|
||||
streamerbotdisconnected: '¡Streamer.bot desconectado!',
|
||||
ttschat: 'dijo',
|
||||
|
||||
twitch : {
|
||||
firstMessage : () => `Primeira mensaje`,
|
||||
|
@@ -1,6 +1,7 @@
|
||||
const ptbr = {
|
||||
streamerbotconnected: 'Streamer.bot Conectado!',
|
||||
streamerbotdisconnected: 'Streamer.bot Desconectado!',
|
||||
ttschat: 'disse',
|
||||
|
||||
twitch : {
|
||||
firstMessage : () => `Primeira mensagem`,
|
||||
|
@@ -77,10 +77,9 @@ async function loadSettingsFromLocalStorage() {
|
||||
onConnect: (data) => {
|
||||
streamerBotConnected = true;
|
||||
|
||||
var sbstatus = document.getElementById('memberemotesbstatus');
|
||||
|
||||
sbstatus.style.color = '#00dd63';
|
||||
sbstatus.textContent = 'Streamer.Bot is Online!';
|
||||
document.querySelector('#memberemotesbstatus').classList.remove('offline');
|
||||
document.querySelector('#memberemotesbstatus').classList.add('online');
|
||||
document.querySelector('#memberemotesbstatus span').textContent = 'Streamer.Bot is Online!';
|
||||
|
||||
streamerBotClient.getGlobals().then( (getglobals) => {
|
||||
const settings = JSON.parse(getglobals.variables.chatrdytcustomemotes.value);
|
||||
@@ -96,10 +95,10 @@ async function loadSettingsFromLocalStorage() {
|
||||
console.error('Streamer.bot Disconnected!');
|
||||
|
||||
streamerBotConnected = false;
|
||||
|
||||
var sbstatus = document.getElementById('memberemotesbstatus');
|
||||
sbstatus.style.color = '#ff0000';
|
||||
sbstatus.textContent = 'Streamer.Bot Needs to be Online!';
|
||||
|
||||
document.querySelector('#memberemotesbstatus').classList.remove('online');
|
||||
document.querySelector('#memberemotesbstatus').classList.add('offline');
|
||||
document.querySelector('#memberemotesbstatus span').textContent = 'Streamer.Bot is Offline!';
|
||||
}
|
||||
});
|
||||
|
||||
|
@@ -515,7 +515,6 @@ async function twitchChatClearMessages() {
|
||||
|
||||
|
||||
async function twitchUpdateStatistics(data) {
|
||||
|
||||
if (showPlatformStatistics == false || showTwitchViewers == false) return;
|
||||
|
||||
const viewers = DOMPurify.sanitize(data.viewerCount);
|
||||
|
@@ -353,7 +353,7 @@ async function getYouTubeEmotes(data) {
|
||||
const emoteRegex = new RegExp(`(?<!\\S)${escapedCode}(?!\\S)`, 'g');
|
||||
|
||||
const imageUrl = `https://cdn.betterttv.net/emote/${emote.id}/1x`;
|
||||
const emoteElement = `<img src="${imageUrl}" class="emote">`;
|
||||
const emoteElement = `<img src="${imageUrl}" class="emote" alt="${escapedCode}">`;
|
||||
|
||||
message = message.replace(emoteRegex, emoteElement);
|
||||
}
|
||||
@@ -362,7 +362,7 @@ async function getYouTubeEmotes(data) {
|
||||
if (data.emotes) {
|
||||
for (const emote of data.emotes) {
|
||||
const emoteRegex = new RegExp(escapeRegex(emote.name), 'g');
|
||||
const emoteElement = `<img src="${emote.imageUrl}" class="emote">`;
|
||||
const emoteElement = `<img src="${emote.imageUrl}" class="emote" alt="${emote.name}">`;
|
||||
message = message.replace(emoteRegex, emoteElement);
|
||||
}
|
||||
}
|
||||
@@ -372,7 +372,7 @@ async function getYouTubeEmotes(data) {
|
||||
if (data.user.isSponsor == true || data.user.isOwner == true) {
|
||||
message = message.replace(/:([a-zA-Z0-9_]+):/g, (match, emoteName) => {
|
||||
if (youTubeCustomEmotes[emoteName]) {
|
||||
return `<img src="${youTubeCustomEmotes[emoteName]}" class="emote">`;
|
||||
return `<img src="${youTubeCustomEmotes[emoteName]}" class="emote" alt="${emoteName}">`;
|
||||
}
|
||||
return match;
|
||||
});
|
||||
|
Reference in New Issue
Block a user