ADDED Ko-Fi, Fourthwall, TipeeeStream and Patreon
This commit is contained in:
288
js/fourthwall/module.js
Normal file
288
js/fourthwall/module.js
Normal file
@@ -0,0 +1,288 @@
|
||||
const showShopifyOrders = getURLParam("showShopifyOrders", true);
|
||||
|
||||
const shopifyMessageHandlers = {
|
||||
'Shopify.OrderPaid': (response) => {
|
||||
console.debug('Shopify Order Paid', response.data);
|
||||
//shopifyOrderPaidMessage(response.data);
|
||||
},
|
||||
};
|
||||
|
||||
for (const [event, handler] of Object.entries(shopifyMessageHandlers)) {
|
||||
streamerBotClient.on(event, handler);
|
||||
}
|
||||
|
||||
|
||||
async function shopifyOrderPaidMessage(data) {
|
||||
|
||||
if (showShopifyOrders == false) return;
|
||||
|
||||
const {
|
||||
username : userName,
|
||||
amount,
|
||||
currency,
|
||||
message: text
|
||||
} = data;
|
||||
|
||||
const userID = createRandomString(40);
|
||||
const messageID = createRandomString(40);
|
||||
|
||||
var money = formatCurrency(amount,currency);
|
||||
|
||||
const [avatar, message] = await Promise.all([
|
||||
'',
|
||||
currentLang.fourthwall.donation({
|
||||
money: money,
|
||||
message: text
|
||||
}),
|
||||
]);
|
||||
|
||||
const classes = '';
|
||||
const messageData = {
|
||||
classes: classes,
|
||||
avatar,
|
||||
badges: '',
|
||||
userName,
|
||||
color: '#FFF',
|
||||
message,
|
||||
reply: '',
|
||||
};
|
||||
|
||||
addEventToChat(userID, messageID, 'fourthwall', messageData);
|
||||
}
|
||||
|
||||
|
||||
async function fourthwallOrderMessage(data) {
|
||||
|
||||
if (showFourthwallOrders == false) return;
|
||||
|
||||
const username = data.username;
|
||||
const total = data.total;
|
||||
const currency = data.currency;
|
||||
const item = data.variants[0].name;
|
||||
const itemsQuantity = data.variants.length;
|
||||
const text = stripStringFromHtml(data.statmessageus);
|
||||
const imageUrl = data.variants[0].image;
|
||||
|
||||
const userID = createRandomString(40);
|
||||
const messageID = createRandomString(40);
|
||||
|
||||
var userName = '';
|
||||
if (username == undefined) { userName = currentLang.fourthwall.someone(); }
|
||||
else { userName = username; }
|
||||
|
||||
var money = '';
|
||||
if (total == 0) { money = 0; }
|
||||
else { money = formatCurrency(total,currency); }
|
||||
|
||||
var fourthWallImage = '';
|
||||
if (showFourthwallShowImage == true) {
|
||||
fourthWallImage = imageUrl
|
||||
}
|
||||
|
||||
const [avatar, message] = await Promise.all([
|
||||
'',
|
||||
currentLang.fourthwall.order({
|
||||
money: money,
|
||||
firstItem: item,
|
||||
items: itemsQuantity,
|
||||
message: text,
|
||||
image: fourthWallImage
|
||||
}),
|
||||
]);
|
||||
|
||||
const classes = ['order'];
|
||||
if (showFourthwallBigImage == true) {
|
||||
classes.push('giantimage');
|
||||
}
|
||||
|
||||
const messageData = {
|
||||
classes: classes.join(' '),
|
||||
avatar,
|
||||
badges: '',
|
||||
userName,
|
||||
color: '#FFF',
|
||||
message,
|
||||
reply: '',
|
||||
};
|
||||
|
||||
addEventToChat(userID, messageID, 'fourthwall', messageData);
|
||||
}
|
||||
|
||||
|
||||
async function fourthwallSubMessage(data) {
|
||||
|
||||
if (showFourthwallSubscriptions == false) return;
|
||||
|
||||
const {
|
||||
nickname : userName,
|
||||
amount,
|
||||
currency
|
||||
} = data;
|
||||
|
||||
const userID = createRandomString(40);
|
||||
const messageID = createRandomString(40);
|
||||
|
||||
var money = formatCurrency(amount,currency);
|
||||
|
||||
const [avatar, message] = await Promise.all([
|
||||
'',
|
||||
currentLang.fourthwall.donation({
|
||||
money: money
|
||||
}),
|
||||
]);
|
||||
|
||||
const classes = '';
|
||||
const messageData = {
|
||||
classes: classes,
|
||||
avatar,
|
||||
badges: '',
|
||||
userName,
|
||||
color: '#FFF',
|
||||
message,
|
||||
reply: '',
|
||||
};
|
||||
|
||||
addEventToChat(userID, messageID, 'fourthwall', messageData);
|
||||
}
|
||||
|
||||
|
||||
async function fourthwallGiftMessage(data) {
|
||||
|
||||
if (showFourthwallGiftPurchase == false) return;
|
||||
|
||||
const userName = data.username;
|
||||
const total = data.total;
|
||||
const currency = data.currency;
|
||||
const gifts = data.gifts.length;
|
||||
const item = data.offer.name;
|
||||
const imageUrl = data.offer.imageUrl;
|
||||
const text = stripStringFromHtml(data.statmessageus);
|
||||
|
||||
const userID = createRandomString(40);
|
||||
const messageID = createRandomString(40);
|
||||
|
||||
var money = '';
|
||||
if (total == 0) { money = 0; }
|
||||
else { money = formatCurrency(total,currency); }
|
||||
|
||||
var fourthWallImage = '';
|
||||
if (showFourthwallShowGiftImage == true) {
|
||||
fourthWallImage = imageUrl
|
||||
}
|
||||
|
||||
const [avatar, message] = await Promise.all([
|
||||
'',
|
||||
currentLang.fourthwall.gift({
|
||||
money: money,
|
||||
firstItem: item,
|
||||
items: gifts,
|
||||
message: text,
|
||||
image: fourthWallImage
|
||||
}),
|
||||
]);
|
||||
|
||||
const classes = ['gift'];
|
||||
if (showFourthwallBigGiftImage == true) {
|
||||
classes.push('giantimage');
|
||||
}
|
||||
|
||||
const messageData = {
|
||||
classes: classes.join(' '),
|
||||
avatar,
|
||||
badges: '',
|
||||
userName,
|
||||
color: '#FFF',
|
||||
message,
|
||||
reply: '',
|
||||
};
|
||||
|
||||
addEventToChat(userID, messageID, 'fourthwall', messageData);
|
||||
}
|
||||
|
||||
async function fourthwallGiftDrawStartMessage(data) {
|
||||
|
||||
if (showFourthwallGiftDraw == false) return;
|
||||
|
||||
const {
|
||||
offer: {
|
||||
name: itemName
|
||||
},
|
||||
durationSeconds
|
||||
} = data;
|
||||
|
||||
const userID = createRandomString(40);
|
||||
const messageID = createRandomString(40);
|
||||
|
||||
const [avatar, message] = await Promise.all([
|
||||
'',
|
||||
currentLang.fourthwall.drawstart({
|
||||
gift: itemName,
|
||||
command: fourthWallGiftDrawCommand
|
||||
}),
|
||||
]);
|
||||
|
||||
const classes = '';
|
||||
const messageData = {
|
||||
classes: classes,
|
||||
avatar,
|
||||
badges: '',
|
||||
userName,
|
||||
color: '#FFF',
|
||||
message,
|
||||
reply: '',
|
||||
};
|
||||
|
||||
addEventToChat(userID, messageID, 'fourthwall', messageData);
|
||||
}
|
||||
|
||||
async function fourthwallGiftDrawEndMessage(data) {
|
||||
|
||||
if (showFourthwallGiftDraw == false) return;
|
||||
|
||||
const {
|
||||
data: {
|
||||
gifts
|
||||
}
|
||||
} = data;
|
||||
|
||||
const userID = createRandomString(40);
|
||||
const messageID = createRandomString(40);
|
||||
|
||||
const [avatar, message] = await Promise.all([
|
||||
'',
|
||||
currentLang.fourthwall.drawend({
|
||||
winners: getWinnersList(gifts)
|
||||
}),
|
||||
]);
|
||||
|
||||
const classes = '';
|
||||
const messageData = {
|
||||
classes: classes,
|
||||
avatar,
|
||||
badges: '',
|
||||
userName,
|
||||
color: '#FFF',
|
||||
message,
|
||||
reply: '',
|
||||
};
|
||||
|
||||
addEventToChat(userID, messageID, 'fourthwall', messageData);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
async function getWinnersList(gifts) {
|
||||
const winners = gifts.map(gift => gift.winner).filter(Boolean); // Remove null/undefined
|
||||
|
||||
const numWinners = winners.length;
|
||||
|
||||
if (numWinners === 0) { return ""; }
|
||||
if (numWinners === 1) { return winners[0]; }
|
||||
if (numWinners === 2) { return `${winners[0]} and ${winners[1]}`; }
|
||||
|
||||
// For 3 or more, use the Oxford comma style: A, B, and C
|
||||
const allButLast = winners.slice(0, -1).join(", ");
|
||||
const lastWinner = winners[winners.length - 1];
|
||||
return `${allButLast}, and ${lastWinner}`;
|
||||
}
|
Reference in New Issue
Block a user