let cmd, voz, permitBadge, userPermit, banWords = [], isPlaying = false, inT, outT,
volumen, pre;
let textoPendiente = [], showPendiente = [];
let customRewards = {};
const TTS_BASE =
"[Link]
const TTS_BASEG = "[Link]
8&total=1&idx=0&client=tw-ob&prev=input&textlen";
const elements = {
source: [Link]( "#source" ),
audio: [Link]( "#audio" ),
sourceG: [Link]( "#sourceG" ),
audioG: [Link]( "#audioG" ),
};
let service = 'Polly';
let msgQueue = [];
[Link]('onWidgetLoad', function (obj) {
const fieldData = [Link];
channelName = obj["detail"]["channel"]["username"];
cmd = fieldData["command"];
voz = fieldData["voz"]; volumen = fieldData["volumen"];
isUser = fieldData["isUser"]; pre = fieldData["pre"];
isGuion = fieldData["isGuion"];
useCmd = fieldData["useCmd"];
useReward = fieldData["useReward"];
useDefault = fieldData["useDefault"];
reward = fieldData["reward"];
all = fieldData["all"];
inT = fieldData["inT"];
outT = fieldData["outT"];
boolMsg = fieldData["boolMsg"];
configPermiso(fieldData);
setRewards(channelName);
service = [Link]('es')? 'Google' : 'Polly';
audio = [Link]( "#audio" );
source = [Link]( "#source" );
[Link]('ended', end);
[Link]( "#audioG" ).addEventListener('ended', end);
});
[Link]('onEventReceived', function (obj) {
if(test(obj)) return;
let command = cmd + ' ';
let data = [Link];
let id = [Link]['custom-reward-id'];
let isDefault = [Link]['msg-id'] === "highlighted-message";
if ( && id == undefined && !isDefault) {
[Link]("no empieza con " + cmd);
return;
}
let badges = [Link];
let isPermit = havePermission(badges, [Link]);
if(isPermit) {
let input = [Link];
if(!continuar(id, isDefault, input)) return;
let txt = [Link](command) ? [Link]([Link]) :
input;
let msg = txt;
if(banW(txt)) return;
txt = isUser?((isGuion? [Link]('_',' ')
: [Link]) + ' ' + pre + ' ' + txt) : (pre + ' ' + txt);
let txt2 = newText(txt);
[Link]('paused ->' + ![Link] + ' ' + !
[Link]);
if(![Link] || ![Link]) {
[Link](txt2);
let pen = {txtPen: txt, dataPen: data };
[Link](pen);
if(boolMsg) showMessage(data, msg);
return;
}
if([Link] > 1) {
for(let i = 1; i < [Link]; i++ ) {
[Link](txt2[i]);
}
if(service == 'Polly') playTTS(txt2[0]);
else ttsGoogle(txt2[0], voz);
if(boolMsg) showMessage(data, msg);
} else {
if(service == 'Polly') playTTS(txt);
else ttsGoogle(txt, voz);
if(boolMsg) showMessage(data, msg);
}
} else {
[Link]('no tiene permiso');
return;
}
});
function banW(txt) {
if([Link] > 0) {
for(let s of banWords) {
if([Link](s)) return true;
}
}
return false;
}
function showMessage(data, txt) {
let message = attachEmotes(data, txt);
[Link]('message');
[Link](message);
let badges = "", badge;
for (let i = 0; i < [Link]; i++) {
badge = [Link][i];
badges += `<img alt="" src="${[Link]}" class="badge"> `;
}
[Link](badges);
let username = [Link] + ":";
let usr = [Link];
let nickname = [Link];
const color = [Link] !== "" ? [Link] : "#" +
(md5(username).substr(26));
username = `<span style="color:${color}">${username}</span>`;
let uid = [Link];
let msgId = [Link];
const element = `
<div data-sender="${uid}" data-msgid="${msgId}" class="message-row animated"
id="msg-0">
<div class="user-box">
${badges}${username}
<span class="user-message">${message}</span>
</div>
</div>`;
[Link](element);
$('#main').html(element);
$('#main').removeClass(outT + "Out initialHide");
$('#main').addClass(inT + "In");
}
function attachEmotes(msg, txt) {
let text = html_encode(txt);
let data = [Link];
return text
.replace(
/([^\s]*)/gi,
function (m, key) {
let result = [Link](emote => {
return html_encode([Link]) === key
});
if (typeof result[0] !== "undefined") {
let url = result[0]['urls'][1];
return `<img alt="" src="${url}" class="badge"/>`;
} else return key;
}
);
}
function end() {
$('#main').removeClass(inT + "In");
$('#main').addClass(outT + "Out");
if([Link] > 0 && [Link] && [Link])
{
let txt = textoPendiente[0];
if(service == 'Polly') playTTS(txt);
else ttsGoogle(txt, voz);
if([Link] > 0){
[Link](txt[0].trim());
let msgPen = showPendiente[0].txtPen;
let dataPen = showPendiente[0].dataPen;
[Link](msgPen);
[Link]([Link](txt[0].trim()));
if([Link](txt[0].trim())) {
showMessage(dataPen, msgPen);
[Link](0, 1);
}
}
[Link](0, 1);
}
}
function continuar(id, isDefault, input) {
[Link]('xd');
let bolReward = false;
if(id != undefined) {
bolReward = customRewards[id].name == reward && useReward;
}
let bolDefault = isDefault && useDefault;
let bolCmd = [Link](cmd) && useCmd;
[Link]('xdperm');
[Link]('permiso ' + (bolReward && bolDefault && bolCmd));
[Link]('xdre');
[Link](bolReward + ' ' + bolDefault + ' ' + bolCmd);
return bolReward || bolDefault || bolCmd;
}
function configPermiso(fieldData) {
let possibleBadges = ['subscriber', 'vip', 'moderator', 'founder'];
permitBadge = ['broadcaster'];
for(let x of possibleBadges) {
if(fieldData[x]) [Link](x);
if(x == 'founder' && fieldData['subscriber']) [Link](x);
}
userPermit = fieldData["listUser"];
userPermit = [Link](/\s/g, '').toLowerCase();
userPermit = [Link](',');
banWords = fieldData["listBans"];
banWords = [Link](/\s/g, '').toLowerCase();
banWords = [Link](',');
}
function havePermission(badges, nick) {
if(all) return true;
let badgeBol = [Link](b => [Link]([Link]));
let userBol = [Link](nick);
[Link](badgeBol + ' ' + userBol);
return badgeBol || userBol;
}
function setRewards(channelName) {
$.get({
type: 'GET',
url: `[Link]
success: function(data) {
let obj = [Link](data);
let rewards =
obj[0].[Link];
for(let reward of rewards) {
customRewards[reward['id']] = {"cost": reward['cost'], "name":
reward['title']};
}
[Link](customRewards);
}
});
}
function html_encode(e) {
return [Link](/[<>"^]/g, function (e) {
return "&#" + [Link](0) + ";";
});
}
async function callAPI(url) {
const speak = await fetch(url, {
method: "post",
headers: {
"Content-Type": "application/json",
"Access-Control-Allow-Origin": "*",
"Access-Control-Allow-Headers": "*"
}
}).then(
function (res) {
[Link](res);
return [Link]();
},
function (err) {
callAPI(url);
}
);
return speak;
}
async function playTTS(text) {
if ([Link]) {
const str = `service=${service}&voice=Mia&text=${encodeURIComponent(text)}`;
const speak = await (callAPI(`${TTS_BASE}?${str}`));
if (![Link]) {
return;
}
// TODO: Switch to Web Audio API instead of using Audio elements.
const mp3 = speak.speak_url;
[Link] = mp3;
const audio = [Link];
[Link]();
[Link] = (volumen / 100);
[Link]();
}
}
function ttsGoogle(msg, idioma){
[Link]('google');
const audio = [Link];
let audioDuration=0;
const message = encodeURIComponent(msg);
const messageLength = [Link];
let url = `${TTS_BASEG}=${messageLength}&q=${message}`;
url += `&tl=${idioma}&ttsspeed=1`
[Link] = url;
[Link]();
[Link] = (volumen / 100);
[Link]();
}
function test(obj) {
if ([Link]) {
if ([Link] === 'widget-button') {
[Link](obj);
if ([Link] === 'test-tts') {
let txt = isUser?((isGuion? [Link]('_',' ')
: channelName) + pre + ' Esto es una Prueba') : pre + ' Esto
es una Prueba';
[Link](txt);
if(service == 'Polly') playTTS(txt);
else ttsGoogle(txt, voz);
if(boolMsg) {
let element =
'<div data-sender="232038609" data-msgid="a40a5ebb-ae1f-4a59-8e3e-
7920167d3cdd" class="message-row animated" id="msg-0">'+
'<div class="user-box"><img alt="" src="[Link]
[Link]/badges/v1/5527c58c-fb7d-422d-b71b-f309dcb85cc1/3" class="badge">'+
'<span style="color:#008df7">'+ channelName + ':</span></div><div
class="user-message">Esto es una Prueba</div></div>';
$('#main').html(element);
$('#main').removeClass(outT + "Out initialHide");
$('#main').addClass(inT + "In");
}
return true;
}
}
}
return false;
}
function newText(txt) {
let txt2 = [Link](' ');
let newTxt = '';
let vecTxt = [];
for(let i = 0; i < [Link]; i++) {
if(([Link] + txt2[i].length + 1) <= 180) {
newTxt += ' ' + txt2[i];
} else {
if(txt2[i].length > 180) {
[Link](txt2[i].match(/.{1,3}/g))
} else {
[Link](newTxt);
newTxt = txt2[i];
}
}
}
if(newTxt != '')[Link](newTxt);
return vecTxt;
}