/* --------------------- */ /* KOFI MODULE VARIABLES */ /* --------------------- */ const showKofi = getURLParam("showKofi", true); const showKofiSubscriptions = getURLParam("showKofiSubscriptions", true); const showKofiDonations = getURLParam("showKofiDonations", true); const showKofiOrders = getURLParam("showKofiOrders", true); // KOFI EVENTS HANDLERS const kofiMessageHandlers = { 'Kofi.Donation': (response) => { kofiDonationMessage(response.data); }, 'Kofi.Subscription': (response) => { kofiSubMessage(response.data); }, 'Kofi.Resubscription': (response) => { kofiReSubMessage(response.data); }, 'Kofi.ShopOrder': (response) => { kofiOrderMessage(response.data); }, }; if (showKofi) { registerPlatformHandlersToStreamerBot(kofiMessageHandlers, '[Ko-Fi]'); } // KOFI EVENT FUNCTIONS async function kofiDonationMessage(data) { if (kofiDonationMessage == false) return; const template = eventTemplate; const clone = template.content.cloneNode(true); const messageId = createRandomString(40); const userId = createRandomString(40); const { header, platform, user, action, value, 'actual-message': message } = Object.fromEntries( [...clone.querySelectorAll('[class]')] .map(el => [el.className, el]) ); const classes = ['kofi', 'donation']; header.remove(); user.innerHTML = `${data.from}`; action.innerHTML = ` donated `; var money = formatCurrency(data.amount,data.currency); value.innerHTML = `${money}`; if (data.message) message.innerHTML = `${data.message}`; addEventItem('kofi', clone, classes, userId, messageId); } async function kofiSubMessage(data) { if (showKofiSubscriptions == false) return; const template = eventTemplate; const clone = template.content.cloneNode(true); const messageId = createRandomString(40); const userId = createRandomString(40); const { header, platform, user, action, value, 'actual-message': message } = Object.fromEntries( [...clone.querySelectorAll('[class]')] .map(el => [el.className, el]) ); const classes = ['kofi', 'sub']; header.remove(); user.innerHTML = `${data.from}`; action.innerHTML = ` just subscribed `; var money = formatCurrency(data.amount,data.currency); value.innerHTML = `(${money})`; if (data.message) message.innerHTML = `${data.message}`; addEventItem('kofi', clone, classes, userId, messageId); } async function kofiReSubMessage(data) { if (showKofiSubscriptions == false) return; const template = eventTemplate; const clone = template.content.cloneNode(true); const messageId = createRandomString(40); const userId = createRandomString(40); const { header, platform, user, action, value, 'actual-message': message } = Object.fromEntries( [...clone.querySelectorAll('[class]')] .map(el => [el.className, el]) ); const classes = ['kofi', 'sub']; header.remove(); user.innerHTML = `${data.from}`; action.innerHTML = ` just resubscribed `; var money = formatCurrency(data.amount,data.currency); value.innerHTML = `(${money}) ${data.tier ? '(Tier '+data.tier+')' : ''}`; if (data.message) message.innerHTML = `${data.message}`; addEventItem('kofi', clone, classes, userId, messageId); } async function kofiOrderMessage(data) { if (showKofiOrders == false) return; const template = eventTemplate; const clone = template.content.cloneNode(true); const messageId = createRandomString(40); const userId = createRandomString(40); const { header, platform, user, action, value, 'actual-message': message } = Object.fromEntries( [...clone.querySelectorAll('[class]')] .map(el => [el.className, el]) ); const classes = ['kofi', 'sub']; header.remove(); user.innerHTML = `${data.from}`; action.innerHTML = ` just ordered `; var money = ''; if (data.amount == 0) money = 'Free'; else money = formatCurrency(data.amount,data.currency); value.innerHTML = `${data.items.length} ${data.items.length > 1 ? 'item' : 'items'} (${money})`; if (data.message) message.innerHTML = `${data.message}`; addEventItem('kofi', clone, classes, userId, messageId); }