let totalMessages = 0, messagesLimit = 0, channelName, provider, addition, removeSelector;
let hideCommands = "true";
let messageSize = 24;
let hideAfter = 60;
let ignoredUsers = [];
let animationIn = 'bounceIn';
let animationOut = 'bounceOut';
let borderMessage = '#000000';
let carimboHora = "nao";
window.addEventListener("onEventReceived", function (obj) {
// Deletar mensagens
if (obj.detail.listener === "delete-message") {
const msgId = obj.detail.event.msgId;
$(`.message-row[data-id=${msgId}]`).remove();
return;
} else if (obj.detail.listener === "delete-messages") {
const userId = obj.detail.event.userId;
$(`.message-row[data-from=${userId}]`).remove();
return;
}
// Testar chat
if (obj.detail.event.listener === "widget-button") {
if (obj.detail.event.field === "testMessage") {
let emulated = new CustomEvent("onEventReceived", {
detail: {
listener: "message",
event: {
service: "twitch",
data: {
time: Date.now(),
tags: {
"badge-info": "",
badges: "moderator/1,partner/1",
color: "#5B99FF",
"display-name": "StreamElements",
emotes: "25:46-50",
flags: "",
id: "43285909-412c-4eee-b80d-89f72ba53142",
mod: "1",
"room-id": "85827806",
subscriber: "0",
"tmi-sent-ts": "1579444549265",
turbo: "0",
"user-id": "100135110",
"user-type": "mod",
},
nick: channelName,
userId: "100135110",
displayName: channelName,
displayColor: "#5B99FF",
badges: [
{
type: "moderator",
version: "1",
url:
"https://static-cdn.jtvnw.net/badges/v1/3267646d-33f0-4b17-b3df-f923a41db1d0/3",
description: "Moderator",
},
{
type: "partner",
version: "1",
url:
"https://static-cdn.jtvnw.net/badges/v1/d12a2e27-16f6-41d0-ab77-b780518f00a3/3",
description: "Verified",
},
],
channel: channelName,
text: "Boo! This is a test message. The bloody chat widget is working.",
isAction: !1,
emotes: [
{
type: "twitch",
name: "Kappa",
id: "25",
gif: !1,
urls: {
1: "https://static-cdn.jtvnw.net/emoticons/v1/25/1.0",
2: "https://static-cdn.jtvnw.net/emoticons/v1/25/1.0",
4: "https://static-cdn.jtvnw.net/emoticons/v1/25/3.0",
},
start: 46,
end: 50,
},
],
msgId: "43285909-412c-4eee-b80d-89f72ba53142",
},
renderedText:
'Boo! This is a test message. The bloody chat widget is working ',
},
},
});
window.dispatchEvent(emulated);
}
return;
}
// Tratar mensagem
if (obj.detail.listener !== "message") return;
let data = obj.detail.event.data;
if (data.text.startsWith("!") && hideCommands === "true") return;
if (ignoredUsers.indexOf(data.nick) !== -1) return;
let message = attachEmotes(data);
let badges = "",
badge;
for (let i = 0; i < data.badges.length; i++) {
badge = data.badges[i];
badges += ` `;
}
let color = data.tags.color;
if (color === "") {
const username = data.displayName;
color = data.displayColor !== "" ? data.displayColor : "#" + (md5(username).substr(26));
}
addMessage(obj.detail.event.data.displayName,
message,
badges,
data.userId,
data.msgId,
color,
data.isAction);
});
window.addEventListener("onWidgetLoad", function (obj) {
const fieldData = obj.detail.fieldData;
messagesLimit = fieldData.messagesLimit;
topDegrade = fieldData.topDegrade;
hideCommands = fieldData.hideCommands;
hideAfter = fieldData.hideAfter;
animationIn = fieldData.animationIn;
animationOut = fieldData.animationOut;
borderMessage = fieldData.msgBorderColor;
carimboHora = fieldData.carimboHora;
channelName = obj.detail.channel.username;
messageSize = fieldData.messageSize;
borderColorUser = fieldData.msgBorderColorUser;
ignoredUsers = fieldData.ignoredUsers
.toLowerCase()
.replace(" ", "")
.split(",");
fetch('https://api.streamelements.com/kappa/v2/channels/' + obj.detail.channel.id + '/').then(response => response.json()).then((profile) => {
provider = profile.provider;
});
if (fieldData.alignMessages === "display: block") {
addition = "prepend";
removeSelector = ".message-row:nth-child(n+" + (messagesLimit + 1) + ")"
} else {
addition = "append";
removeSelector = ".message-row:nth-last-child(n+" + (messagesLimit + 1) + ")"
}
});
function addMessage(username, message, badges, userId, msgId, color, isAction) {
totalMessages += 1;
let actionClass = "";
if (isAction) {
actionClass = "action";
}
if (borderColorUser === "sim") {
borderMessage = color;
}
let hora = "";
if (carimboHora === "sim") {
let d = new Date();
let messageSizeTime = messageSize-(messageSize/4);
hora = `