88 lines
3.5 KiB
JavaScript
88 lines
3.5 KiB
JavaScript
(function() {
|
|
|
|
function getWordAt(str, pos) {
|
|
str = String(str);
|
|
pos = pos >>> 0;
|
|
var left = str.slice(0, pos + 2).search(/\S+$/),
|
|
right = str.slice(pos).search(/\s/);
|
|
if (right < 0)
|
|
return str.slice(left);
|
|
return str.slice(left, right + pos);
|
|
}
|
|
|
|
function getNoTwitchEmotes(event, message){
|
|
var emotes = event.getTags().get('emotes'),
|
|
str = message, i;
|
|
|
|
if (emotes.length() > 0) {
|
|
emotes = emotes.replaceAll('[0-9]+:', '').split('/');
|
|
for (i in emotes) {
|
|
str = str.replace(getWordAt(message, parseInt(emotes[i].split('-')[0])), '');
|
|
}
|
|
}
|
|
return str;
|
|
}
|
|
|
|
|
|
function sendData(tpe, te, ce) {
|
|
$.panelsocketserver.sendJSONToAll(JSON.stringify({
|
|
'eventFamily': 'emote',
|
|
'eventType': tpe,
|
|
'data': {
|
|
twitch: te,
|
|
custom: ce,
|
|
}
|
|
}));
|
|
}
|
|
|
|
$.bind('ircChannelMessage', function(event){
|
|
var sender = event.getSender(),
|
|
message = event.getMessage();
|
|
tags = event.getTags();
|
|
if(message.indexOf('!')!=0)
|
|
sendData('bounce',event.getTags().get('emotes').split('/'), getNoTwitchEmotes(event,message).split(' '))
|
|
})
|
|
|
|
$.bind('command', function(event) {
|
|
const sender = "" + event.getSender().toLowerCase(),
|
|
command = event.getCommand(),
|
|
args = event.getArgs(),
|
|
action = args[0];
|
|
|
|
if (command.equalsIgnoreCase('ew')) {
|
|
if (!action) {
|
|
$.say($.whisperPrefix(sender) + $.lang.get('ew.help', ' Use "!ew [rain | firework | volcano | bomb | explosion] emote" to render emotes.'));
|
|
} else if (action.equalsIgnoreCase('rain')) {
|
|
sendData('rain',event.getTags().get('emotes').split('/'), getNoTwitchEmotes(event,event.getMessage()).split(' '))
|
|
} else if (action.equalsIgnoreCase('firework')) {
|
|
sendData('firework',event.getTags().get('emotes').split('/'), getNoTwitchEmotes(event,event.getMessage()).split(' '))
|
|
} else if (action.equalsIgnoreCase('volcano')) {
|
|
sendData('volcano',event.getTags().get('emotes').split('/'), getNoTwitchEmotes(event,event.getMessage()).split(' '))
|
|
} else if (action.equalsIgnoreCase('bomb')) {
|
|
sendData('bomb',event.getTags().get('emotes').split('/'), getNoTwitchEmotes(event,event.getMessage()).split(' '))
|
|
} else if (action.equalsIgnoreCase('explosion')) {
|
|
sendData('explosion',event.getTags().get('emotes').split('/'), getNoTwitchEmotes(event,event.getMessage()).split(' '))
|
|
} else {
|
|
$.say($.whisperPrefix(sender) + $.lang.get('ew.help', ' Use "!ew [rain | firework | volcano | bomb | explosion] emote" to render emotes.'));
|
|
}
|
|
}
|
|
});
|
|
|
|
$.bind('twitchFollow', function(event) {
|
|
sendData('firework', [],['AYAYA'])
|
|
|
|
});
|
|
$.bind('twitchSubscriber', function(event) {
|
|
sendData('volcano', [], ['AYAYA']);
|
|
});
|
|
|
|
$.bind('initReady', function() {
|
|
$.registerChatCommand('./custom/custom/customEmoteWall.js', 'ew');
|
|
$.registerChatSubcommand('ew', 'rain', 2);
|
|
$.registerChatSubcommand('ew', 'firework', 2);
|
|
$.registerChatSubcommand('ew', 'volcano', 2);
|
|
$.registerChatSubcommand('ew', 'bomb', 2);
|
|
$.registerChatSubcommand('ew', 'explosion', 2);
|
|
});
|
|
|
|
})(); |