From ca062e858fa15991f8d83caddb1ed51ea358a3b8 Mon Sep 17 00:00:00 2001 From: Reboot0 Date: Mon, 21 Feb 2022 23:58:30 +0100 Subject: [PATCH] Fixed some badge-related functions for chat messages --- dist/se-tools.min.js | 2 +- docs/module-ChatMessage.html | 4 ++-- docs/tutorial-ChatMessage.html | 4 ++-- jsdoc/tutorials/ChatMessage.md | 6 +++--- modules/ChatMessage.js | 19 ++++++++++--------- 5 files changed, 18 insertions(+), 17 deletions(-) diff --git a/dist/se-tools.min.js b/dist/se-tools.min.js index 75d034a..02c645a 100644 --- a/dist/se-tools.min.js +++ b/dist/se-tools.min.js @@ -1 +1 @@ -(()=>{"use strict";function e(e){return function(e){if(Array.isArray(e))return n(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||t(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function t(e,t){if(e){if("string"==typeof e)return n(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?n(e,t):void 0}}function n(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n1&&void 0!==arguments[1]?arguments[1]:null;return null===t?document.querySelector(e):t.querySelector(e)}},{key:"findAll",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return null===t?document.querySelectorAll(e):t.querySelectorAll(e)}},{key:"findAllOrNull",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,r=n.findAll(e,t);return r.length>0?r:null}},{key:"onFirst",value:function(e,t){var r=n.isHTMLElement(e)?e:n.find(e);null!==r&&t(r)}},{key:"onEach",value:function(e,r){var i="string"==typeof e?n.findAll(e):e;if(null!==i){var o,a=function(e,n){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=t(e))){r&&(e=r);var i=0,o=function(){};return{s:o,n:function(){return i>=e.length?{done:!0}:{done:!1,value:e[i++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,u=!0,s=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return u=e.done,e},e:function(e){s=!0,a=e},f:function(){try{u||null==r.return||r.return()}finally{if(s)throw a}}}}(i);try{for(a.s();!(o=a.n()).done;)r(o.value)}catch(e){a.e(e)}finally{a.f()}}}},{key:"isHTMLElement",value:function(e){return 1===(null==e?void 0:e.nodeType)}},{key:"isAudioElement",value:function(e){var t;return n.isHTMLElement(e)&&"audio"===(null===(t=e.nodeName)||void 0===t?void 0:t.toLowerCase())}},{key:"isImgElement",value:function(e){var t;return n.isHTMLElement(e)&&"img"===(null===(t=e.nodeName)||void 0===t?void 0:t.toLowerCase())}},{key:"isPictureElement",value:function(e){var t;return n.isHTMLElement(e)&&"picture"===(null===(t=e.nodeName)||void 0===t?void 0:t.toLowerCase())}},{key:"isImageElement",value:function(e){return n.isImgElement(e)||n.isPictureElement(e)}},{key:"isVideoElement",value:function(e){var t;return n.isHTMLElement(e)&&"video"===(null===(t=e.nodeName)||void 0===t?void 0:t.toLowerCase())}},{key:"isMediaElement",value:function(e){return n.isAudioElement(e)||n.isImageElement(e)||n.isVideoElement(e)}},{key:"updateSrc",value:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"",i=n.isHTMLElement(e)?e:n.find(e);n.isImgElement(i)?n.updateImgSrc(i,t):n.isPictureElement(i)?n.updatePictureSrc(i,t,r):n.isAudioElement(i)?n.updateAudioSrc(i,t,r):n.isVideoElement(i)&&n.updateVideoSrc(i,t,r)}},{key:"updateImgSrc",value:function(e,t){e.src!==t&&(e.src=t)}},{key:"updatePictureSrc",value:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"",i=n.find(""===r?"source":"source[media='(".concat(r,")']"),e);null!==i&&i.srcset!==t&&(i.srcset=t)}},{key:"updateAudioSrc",value:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"";if(Utils.isset(r,!1)||r.startsWith("audio/")){var i=n.find(""===r?"source":"source[type='".concat(r,"']"),e);null!==i&&i.src!==t&&(i.src=t)}}},{key:"updateVideoSrc",value:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"";if(Utils.isset(r,!1)||r.startsWith("video/")){var i=n.find(""===r?"source":"source[type='".concat(r,"']"),e);null!==i&&i.src!==t&&(i.src=t)}}},{key:"setVolume",value:function(e,t){var r=n.isHTMLElement(e)?e:n.find(e);(n.isAudioElement(r)||n.isVideoElement(r))&&(r.volume=t/100)}},{key:"addClass",value:function(t,r){n.onEach(t,(function(t){var n;Array.isArray(r)?(n=t.classList).add.apply(n,e(r)):t.classList.add(r)}))}},{key:"removeClass",value:function(t,r){n.onEach(t,(function(t){var n;Array.isArray(r)?(n=t.classList).remove.apply(n,e(r)):t.classList.remove(r)}))}},{key:"swapClass",value:function(e,t,r){n.removeClass(e,t),n.addClass(e,r)}},{key:"setText",value:function(e,t){n.onEach(e,(function(e){e.innerText=t}))}},{key:"setHTML",value:function(e,t){n.onEach(e,(function(e){e.innerHTML=t}))}},{key:"getCSS",value:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,i=n.isHTMLElement(e)?e:n.find(e);if(!Utils.allset(e,t))return null;if("*"===t)return window.getComputedStyle(i,r);t.includes("-")&&(t=Utils.kebabCaseToCamelCase(t));var o=window.getComputedStyle(i,r);return Utils.isset(o)?o.getPropertyValue(t):null}},{key:"getCSSInt",value:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,i=n.isHTMLElement(e)?e:n.find(e),o=n.getCSS(i,t,r);return Utils.isset(o)?parseInt(o):null}},{key:"getCSSFloat",value:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,i=n.isHTMLElement(e)?e:n.find(e),o=n.getCSS(i,t,r);return Utils.isset(o)?parseFloat(o):null}},{key:"setCSSProp",value:function(e,t,r){n.onEach(e,(function(e){Utils.allset(null==e?void 0:e.style,t)&&(t.includes("-")&&(t=Utils.kebabCaseToCamelCase(t)),e.style[t]=r)}))}},{key:"setCSS",value:function(e,r){n.onEach(e,(function(e){for(var n=0,i=Object.entries(r);n]+)>/g,(function(e,t){return"$"+a[t]})))}if("function"==typeof i){var u=this;return e[Symbol.replace].call(this,n,(function(){var e=arguments;return"object"!==o(e[e.length-1])&&(e=[].slice.call(e)).push(r(e,u)),i.apply(this,e)}))}return e[Symbol.replace].call(this,n,i)},a.apply(this,arguments)}function u(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&s(e,t)}function s(e,t){return(s=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function l(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n1&&void 0!==arguments[1])||arguments[1];return t?null!=e&&""!==e:null!=e}},{key:"allset",value:function(){for(var t=arguments.length,n=new Array(t),r=0;r=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,u=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return a=e.done,e},e:function(e){u=!0,o=e},f:function(){try{a||null==n.return||n.return()}finally{if(u)throw o}}}}(e.split("."));try{for(r.s();!(n=r.n()).done;){var i,o=n.value;if(void 0===(null===(i=t)||void 0===i?void 0:i[o]))return!1;t=t[o]}}catch(e){r.e(e)}finally{r.f()}return!0}},{key:"funcExists",value:function(e){return void 0!==window[e]}},{key:"callFunc",value:function(t){if(e.funcExists(t)){for(var n,r=arguments.length,i=new Array(r>1?r-1:0),o=1;o1&&void 0!==arguments[1]?arguments[1]:",",r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(!e.isString(t))return[];for(var i=t.split(n),o=0;o0&&void 0!==arguments[0]?arguments[0]:1,n=t>=0&&t<=1?t:1;return"rgba(".concat(e.getRandomNumber(0,255),", ").concat(e.getRandomNumber(0,255),", ").concat(e.getRandomNumber(0,255),", ").concat(n,")")}},{key:"getRandomNumber",value:function(e,t){return Math.floor(Math.random()*(t-e+1))+e}},{key:"getRandomDecimal",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:2;return parseFloat((Math.random()*(t-e)+e).toFixed(n))}},{key:"getPercentageOf",value:function(e,t){return e>0&&t>0?e/t*100:0}},{key:"divisibleBy",value:function(e,t){return 0!==t&&e%t==0}},{key:"isWholeNumber",value:function(t){return e.divisibleBy(t,1)}},{key:"nextIterator",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;return Math.abs(e)>=Math.abs(t)?0:e+n}},{key:"formatTimerValue",value:function(e){return e>=0&&e<10?"0".concat(e):e.toString()}},{key:"isChrome",value:function(){return e.matchesRegex(window.navigator.userAgent,/Chrom(e|ium)/i)}},{key:"getChromeVersion",value:function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],n=e.matchRegexGroups(window.navigator.userAgent,a(/Chrom(e|ium)\/(([0-9]+.?[0-9]+.?[0-9]+.?[0-9]+))/i,{version:2})),r=null!=n&&n.version?n.version:0;return t?r:parseInt(r)}},{key:"isBrowserSource",value:function(){return e.isset(window.obsstudio)}},{key:"camelCaseToKebabCase",value:function(e){return e.split("").map((function(e,t){return e.toUpperCase()===e?"".concat(t>0?"-":"").concat(e.toLowerCase()):e})).join("")}},{key:"kebabCaseToCamelCase",value:function(e){return e.split("-").map((function(e,t){return t?e.charAt(0).toUpperCase()+e.slice(1).toLowerCase():e})).join("")}},{key:"formatCurrency",value:function(t,n){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0,i=e.isWholeNumber(t)?0:2;return t.toLocaleString(r,{style:"currency",minimumFractionDigits:i,currency:n})}},{key:"containsText",value:function(t,n){var r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return e.isString(t)&&e.isString(n)?!!e.allset(t,n)&&(r&&t.includes(n)||t.toLocaleLowerCase().includes(null==n?void 0:n.toLocaleLowerCase())):null}},{key:"matchesRegex",value:function(t,n){return!!e.allset(t,n)&&n.test(t)}},{key:"matchRegexGroups",value:function(e,t){var n=t.exec(e);return null!=n&&n.groups?n.groups:null}},{key:"parseTier",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if("string"==typeof e){if("prime"===e)return t?1:"prime";e=Number(e)}switch(e){case 1e3:case 1:return 1;case 2e3:case 2:return 2;case 3e3:case 3:return 3;default:return 0}}},{key:"resumeSEQueue",value:function(){var e;null===(e=SE_API)||void 0===e||e.resumeQueue()}}],null&&c(t.prototype,null),n&&c(t,n),e}();function d(e){return(d="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function v(){v=function(e,t){return new n(e,void 0,t)};var e=RegExp.prototype,t=new WeakMap;function n(e,r,i){var o=new RegExp(e,r);return t.set(o,i||t.get(e)),m(o,n.prototype)}function r(e,n){var r=t.get(n);return Object.keys(r).reduce((function(t,n){return t[n]=e[r[n]],t}),Object.create(null))}return h(n,RegExp),n.prototype.exec=function(t){var n=e.exec.call(this,t);return n&&(n.groups=r(n,this)),n},n.prototype[Symbol.replace]=function(n,i){if("string"==typeof i){var o=t.get(this);return e[Symbol.replace].call(this,n,i.replace(/\$<([^>]+)>/g,(function(e,t){return"$"+o[t]})))}if("function"==typeof i){var a=this;return e[Symbol.replace].call(this,n,(function(){var e=arguments;return"object"!==d(e[e.length-1])&&(e=[].slice.call(e)).push(r(e,a)),i.apply(this,e)}))}return e[Symbol.replace].call(this,n,i)},v.apply(this,arguments)}function h(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&m(e,t)}function m(e,t){return(m=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function y(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return p(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?p(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,i=function(){};return{s:i,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,u=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return a=e.done,e},e:function(e){u=!0,o=e},f:function(){try{a||null==n.return||n.return()}finally{if(u)throw o}}}}function p(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n0&&void 0!==arguments[0]?arguments[0]:"",t=e.startsWith("!")?e:"!"+e;return this.text.startsWith(t)}},{key:"getCommand",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(!this.isCommand())return null;var t=f.matchRegexGroups(this.text,v(/!([0-9A-Z_a-z]+)([\t-\r \*0-9A-Z_a-z\xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF]*)/i,{cmd:1,args:2}));return null===t?null:e?{command:t.cmd,args:f.createList(t.args," ",!0)}:t.cmd}},{key:"getWordList",value:function(){return f.createList(this.text," ")}},{key:"contains",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return f.containsText(this.text,e,t)}},{key:"containsRegex",value:function(e){return f.matchesRegex(this.text,e)}},{key:"usernameOnList",value:function(e){if(Array.isArray(e)&&e.length>0){var t,n=y(e);try{for(n.s();!(t=n.n()).done;){var r,i=t.value;if((null===(r=i.toLocaleLowerCase)||void 0===r?void 0:r.call(i))===this.username.toLocaleLowerCase())return!0}}catch(e){n.e(e)}finally{n.f()}}return!1}},{key:"hasUsername",value:function(e){var t;return this.username.toLocaleLowerCase()===(null===(t=e.toLocaleLowerCase)||void 0===t?void 0:t.call(e))}},{key:"hasUserId",value:function(e){return this.userId===e}},{key:"usernameContains",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return f.containsText(this.username,e,t)}},{key:"usernameContainsRegex",value:function(e){return f.matchesRegex(this.username,e)}}])&&g(t.prototype,n),e}();function k(e,t){for(var n=0;n0}},{key:"expectsEventListener",value:function(e){return this.expectedEventListeners.includes(e)}},{key:"expectsEventName",value:function(e){return this.expectedEventNames.includes(e)}},{key:"isSkippable",value:function(e){return this.skippable.includes(e)}},{key:"disableSenderCorrection",value:function(){this.useSenderCorrection=!1}},{key:"registerOnWidgetLoad",value:function(){this.expectsOnWidgetLoad&&window.addEventListener("onWidgetLoad",this.onWidgetLoadHandler.bind(this))}},{key:"unregisterOnWidgetLoad",value:function(){window.removeEventListener("onWidgetLoad",this.onWidgetLoadHandler)}},{key:"registerOnSessionUpdate",value:function(){this.expectsOnSessionUpdate&&window.addEventListener("onSessionUpdate",this.onSessionUpdateHandler.bind(this))}},{key:"unregisterOnSessionUpdate",value:function(){window.removeEventListener("onSessionUpdate",this.onSessionUpdateHandler)}},{key:"registerOnEventReceived",value:function(){this.expectsEvents()&&window.addEventListener("onEventReceived",this.onEventReceivedHandler.bind(this))}},{key:"unregisterOnEventReceived",value:function(){window.removeEventListener("onEventReceived",this.onEventReceivedHandler)}},{key:"onWidgetLoadHandler",value:function(e){f.callFunc("onWidgetLoad",e)}},{key:"onSessionUpdateHandler",value:function(e){f.callFunc("onSessionUpdate",e)}},{key:"onEventReceivedHandler",value:function(e){var t,n,r=null==e||null===(t=e.detail)||void 0===t?void 0:t.listener,i=null==e||null===(n=e.detail)||void 0===n?void 0:n.event;if(void 0!==r&&void 0!==i&&this.expectsEventListener(r))if(this.expectsEventName("Message")&&"message"===r)this.onMessageHandler(i);else if(this.expectsEventName("DeleteMessage")&&"delete-message"===r)this.onDeleteMessageHandler(i);else if(this.expectsEventName("DeleteMessages")&&"delete-messages"===r)this.onDeleteMessagesHandler(i);else if("subscriber-latest"===r){if(!this.useSenderCorrection||!i.isTest||i.gifted&&i.isCommunityGift||i.bulkGifted||(i.sender=void 0),this.expectsEventName("Subscriber")&&!i.gifted&&1===i.amount&&void 0===i.sender)this.onSubscriberHandler(i);else if(this.expectsEventName("SubGift")&&i.gifted&&!i.isCommunityGift)this.onSubGiftHandler(i);else if(this.expectsEventName("Resub")&&i.amount>1&&void 0===i.sender)this.onResubHandler(i);else if(i.bulkGifted){if(this.expectsEventName("SubBombComplete")){var o,a=null==i||null===(o=i.sender)||void 0===o?void 0:o.toLowerCase();a&&void 0===this.giftCollection[a]&&(this.giftCollection[a]={amount:i.amount,recipients:[]})}this.expectsEventName("SubBomb")&&this.onSubBombHandler(i)}else if(i.gifted&&i.isCommunityGift){if(this.expectsEventName("CommunityGift")&&this.onCommunityGiftHandler(i),this.expectsEventName("SubBombComplete")){var u,s,l=null==i||null===(u=i.sender)||void 0===u?void 0:u.toLowerCase();l&&void 0!==this.giftCollection[l]&&(this.giftCollection[l].recipients.push(i.name),this.giftCollection[l].amount===(null===(s=this.giftCollection[l].recipients)||void 0===s?void 0:s.length)&&(i.amount=this.giftCollection[l].amount,this.onSubBombCompleteHandler(i,this.giftCollection[l].recipients),delete this.giftCollection[l]))}f.resumeSEQueue()}}else this.expectsEventName("Tip")&&"tip-latest"===r?this.onTipHandler(i):this.expectsEventName("Cheer")&&"cheer-latest"===r?this.onCheerHandler(i):this.expectsEventName("Host")&&"host-latest"===r?this.onHostHandler(i):this.expectsEventName("Raid")&&"raid-latest"===r?this.onRaidHandler(i):this.expectsEventName("Follow")&&"follower-latest"===r?this.onFollowHandler(i):this.expectsEventName("BotCounter")&&"bot:counter"===r?this.onBotCounterHandler(i):this.expectsEventName("EventSkip")&&"event:skip"===r?this.onEventSkipHandler(i):this.expectsEventName("WidgetButton")&&"event:test"===r&&"widget-button"===i.listener?this.onWidgetButtonHandler(i):this.expectsEventName("KVStoreUpdate")&&"kvstore:update"===r?this.onKVStoreUpdateHandler(i.data):this.expectsEventName("ToggleSound")&&"alertService:toggleSound"===r?this.onToggleSoundHandler(i):f.resumeSEQueue();else f.resumeSEQueue()}},{key:"onSubscriberHandler",value:function(e){f.callFunc("onSubscriber",e)}},{key:"onResubHandler",value:function(e){f.callFunc("onResub",e)}},{key:"onSubGiftHandler",value:function(e){f.callFunc("onSubGift",e)}},{key:"onCommunityGiftHandler",value:function(e){f.callFunc("onCommunityGift",e)}},{key:"onSubBombHandler",value:function(e){f.callFunc("onSubBomb",e)}},{key:"onSubBombCompleteHandler",value:function(e,t){f.callFunc("onSubBombComplete",e,t)}},{key:"onTipHandler",value:function(e){f.callFunc("onTip",e)}},{key:"onCheerHandler",value:function(e){f.callFunc("onCheer",e)}},{key:"onHostHandler",value:function(e){f.callFunc("onHost",e)}},{key:"onRaidHandler",value:function(e){f.callFunc("onRaid",e)}},{key:"onFollowHandler",value:function(e){f.callFunc("onFollow",e)}},{key:"onMessageHandler",value:function(e){var t="twitch"===e.service.toLowerCase()?new b(e):e;f.callFunc("onMessage",t)}},{key:"onDeleteMessageHandler",value:function(e){f.callFunc("onDeleteMessage",e)}},{key:"onDeleteMessagesHandler",value:function(e){f.callFunc("onDeleteMessages",e)}},{key:"onEventSkipHandler",value:function(){f.callFunc("onEventSkip")}},{key:"onBotCounterHandler",value:function(e){f.callFunc("onBotCounter",e)}},{key:"onWidgetButtonHandler",value:function(e){f.callFunc("onWidgetButton",e)}},{key:"onKVStoreUpdateHandler",value:function(e){f.callFunc("onKVStoreUpdate",e)}},{key:"onToggleSoundHandler",value:function(e){f.callFunc("onToggleSound",e)}}])&&k(t.prototype,n),e}();function w(e,t){for(var n=0;n0?e-1:0}},{key:"add",value:function(e){E(this,L).push(e)}},{key:"remove",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;this.empty()||E(this,L).splice(e,t)}},{key:"removeFirst",value:function(){this.remove(0)}},{key:"removeLast",value:function(){this.remove(-1)}},{key:"get",value:function(e){return this.empty()?null:e>=0&&e<=this.indexLength()?E(this,L)[e]:e<0&&Math.abs(e)<=this.length()?E(this,L)[this.length()-e]:null}},{key:"first",value:function(){return this.get(0)}},{key:"last",value:function(){return this.get(-1)}},{key:"processFirst",value:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return new Promise((function(i,o){var a=t.first();null!==a&&t.ready()&&(C(t,H,!0),e(a).then((function(){setTimeout((function(){t.removeFirst(),C(t,H,!1),r&&f.resumeSEQueue(),i()}),n)})).catch(o))}))}},{key:"processEach",value:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];this.processFirst(e,n,r).then((function(){t.processEach(e,n,r)})).catch((function(e){console.error(e)}))}}])&&w(t.prototype,n),e}();window.DOM=i,window.Events=new S,window.Queue=new A,window.Utils=f})(); \ No newline at end of file +(()=>{"use strict";function e(e){return function(e){if(Array.isArray(e))return n(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||t(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function t(e,t){if(e){if("string"==typeof e)return n(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?n(e,t):void 0}}function n(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n1&&void 0!==arguments[1]?arguments[1]:null;return null===t?document.querySelector(e):t.querySelector(e)}},{key:"findAll",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return null===t?document.querySelectorAll(e):t.querySelectorAll(e)}},{key:"findAllOrNull",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,r=n.findAll(e,t);return r.length>0?r:null}},{key:"onFirst",value:function(e,t){var r=n.isHTMLElement(e)?e:n.find(e);null!==r&&t(r)}},{key:"onEach",value:function(e,r){var i="string"==typeof e?n.findAll(e):e;if(null!==i){var o,a=function(e,n){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=t(e))){r&&(e=r);var i=0,o=function(){};return{s:o,n:function(){return i>=e.length?{done:!0}:{done:!1,value:e[i++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,u=!0,s=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return u=e.done,e},e:function(e){s=!0,a=e},f:function(){try{u||null==r.return||r.return()}finally{if(s)throw a}}}}(i);try{for(a.s();!(o=a.n()).done;)r(o.value)}catch(e){a.e(e)}finally{a.f()}}}},{key:"isHTMLElement",value:function(e){return 1===(null==e?void 0:e.nodeType)}},{key:"isAudioElement",value:function(e){var t;return n.isHTMLElement(e)&&"audio"===(null===(t=e.nodeName)||void 0===t?void 0:t.toLowerCase())}},{key:"isImgElement",value:function(e){var t;return n.isHTMLElement(e)&&"img"===(null===(t=e.nodeName)||void 0===t?void 0:t.toLowerCase())}},{key:"isPictureElement",value:function(e){var t;return n.isHTMLElement(e)&&"picture"===(null===(t=e.nodeName)||void 0===t?void 0:t.toLowerCase())}},{key:"isImageElement",value:function(e){return n.isImgElement(e)||n.isPictureElement(e)}},{key:"isVideoElement",value:function(e){var t;return n.isHTMLElement(e)&&"video"===(null===(t=e.nodeName)||void 0===t?void 0:t.toLowerCase())}},{key:"isMediaElement",value:function(e){return n.isAudioElement(e)||n.isImageElement(e)||n.isVideoElement(e)}},{key:"updateSrc",value:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"",i=n.isHTMLElement(e)?e:n.find(e);n.isImgElement(i)?n.updateImgSrc(i,t):n.isPictureElement(i)?n.updatePictureSrc(i,t,r):n.isAudioElement(i)?n.updateAudioSrc(i,t,r):n.isVideoElement(i)&&n.updateVideoSrc(i,t,r)}},{key:"updateImgSrc",value:function(e,t){e.src!==t&&(e.src=t)}},{key:"updatePictureSrc",value:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"",i=n.find(""===r?"source":"source[media='(".concat(r,")']"),e);null!==i&&i.srcset!==t&&(i.srcset=t)}},{key:"updateAudioSrc",value:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"";if(Utils.isset(r,!1)||r.startsWith("audio/")){var i=n.find(""===r?"source":"source[type='".concat(r,"']"),e);null!==i&&i.src!==t&&(i.src=t)}}},{key:"updateVideoSrc",value:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"";if(Utils.isset(r,!1)||r.startsWith("video/")){var i=n.find(""===r?"source":"source[type='".concat(r,"']"),e);null!==i&&i.src!==t&&(i.src=t)}}},{key:"setVolume",value:function(e,t){var r=n.isHTMLElement(e)?e:n.find(e);(n.isAudioElement(r)||n.isVideoElement(r))&&(r.volume=t/100)}},{key:"addClass",value:function(t,r){n.onEach(t,(function(t){var n;Array.isArray(r)?(n=t.classList).add.apply(n,e(r)):t.classList.add(r)}))}},{key:"removeClass",value:function(t,r){n.onEach(t,(function(t){var n;Array.isArray(r)?(n=t.classList).remove.apply(n,e(r)):t.classList.remove(r)}))}},{key:"swapClass",value:function(e,t,r){n.removeClass(e,t),n.addClass(e,r)}},{key:"setText",value:function(e,t){n.onEach(e,(function(e){e.innerText=t}))}},{key:"setHTML",value:function(e,t){n.onEach(e,(function(e){e.innerHTML=t}))}},{key:"getCSS",value:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,i=n.isHTMLElement(e)?e:n.find(e);if(!Utils.allset(e,t))return null;if("*"===t)return window.getComputedStyle(i,r);t.includes("-")&&(t=Utils.kebabCaseToCamelCase(t));var o=window.getComputedStyle(i,r);return Utils.isset(o)?o.getPropertyValue(t):null}},{key:"getCSSInt",value:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,i=n.isHTMLElement(e)?e:n.find(e),o=n.getCSS(i,t,r);return Utils.isset(o)?parseInt(o):null}},{key:"getCSSFloat",value:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,i=n.isHTMLElement(e)?e:n.find(e),o=n.getCSS(i,t,r);return Utils.isset(o)?parseFloat(o):null}},{key:"setCSSProp",value:function(e,t,r){n.onEach(e,(function(e){Utils.allset(null==e?void 0:e.style,t)&&(t.includes("-")&&(t=Utils.kebabCaseToCamelCase(t)),e.style[t]=r)}))}},{key:"setCSS",value:function(e,r){n.onEach(e,(function(e){for(var n=0,i=Object.entries(r);n]+)>/g,(function(e,t){return"$"+a[t]})))}if("function"==typeof i){var u=this;return e[Symbol.replace].call(this,n,(function(){var e=arguments;return"object"!==o(e[e.length-1])&&(e=[].slice.call(e)).push(r(e,u)),i.apply(this,e)}))}return e[Symbol.replace].call(this,n,i)},a.apply(this,arguments)}function u(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&s(e,t)}function s(e,t){return(s=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function l(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n1&&void 0!==arguments[1])||arguments[1];return t?null!=e&&""!==e:null!=e}},{key:"allset",value:function(){for(var t=arguments.length,n=new Array(t),r=0;r=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,u=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return a=e.done,e},e:function(e){u=!0,o=e},f:function(){try{a||null==n.return||n.return()}finally{if(u)throw o}}}}(e.split("."));try{for(r.s();!(n=r.n()).done;){var i,o=n.value;if(void 0===(null===(i=t)||void 0===i?void 0:i[o]))return!1;t=t[o]}}catch(e){r.e(e)}finally{r.f()}return!0}},{key:"funcExists",value:function(e){return void 0!==window[e]}},{key:"callFunc",value:function(t){if(e.funcExists(t)){for(var n,r=arguments.length,i=new Array(r>1?r-1:0),o=1;o1&&void 0!==arguments[1]?arguments[1]:",",r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(!e.isString(t))return[];for(var i=t.split(n),o=0;o0&&void 0!==arguments[0]?arguments[0]:1,n=t>=0&&t<=1?t:1;return"rgba(".concat(e.getRandomNumber(0,255),", ").concat(e.getRandomNumber(0,255),", ").concat(e.getRandomNumber(0,255),", ").concat(n,")")}},{key:"getRandomNumber",value:function(e,t){return Math.floor(Math.random()*(t-e+1))+e}},{key:"getRandomDecimal",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:2;return parseFloat((Math.random()*(t-e)+e).toFixed(n))}},{key:"getPercentageOf",value:function(e,t){return e>0&&t>0?e/t*100:0}},{key:"divisibleBy",value:function(e,t){return 0!==t&&e%t==0}},{key:"isWholeNumber",value:function(t){return e.divisibleBy(t,1)}},{key:"nextIterator",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;return Math.abs(e)>=Math.abs(t)?0:e+n}},{key:"formatTimerValue",value:function(e){return e>=0&&e<10?"0".concat(e):e.toString()}},{key:"isChrome",value:function(){return e.matchesRegex(window.navigator.userAgent,/Chrom(e|ium)/i)}},{key:"getChromeVersion",value:function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],n=e.matchRegexGroups(window.navigator.userAgent,a(/Chrom(e|ium)\/(([0-9]+.?[0-9]+.?[0-9]+.?[0-9]+))/i,{version:2})),r=null!=n&&n.version?n.version:0;return t?r:parseInt(r)}},{key:"isBrowserSource",value:function(){return e.isset(window.obsstudio)}},{key:"camelCaseToKebabCase",value:function(e){return e.split("").map((function(e,t){return e.toUpperCase()===e?"".concat(t>0?"-":"").concat(e.toLowerCase()):e})).join("")}},{key:"kebabCaseToCamelCase",value:function(e){return e.split("-").map((function(e,t){return t?e.charAt(0).toUpperCase()+e.slice(1).toLowerCase():e})).join("")}},{key:"formatCurrency",value:function(t,n){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0,i=e.isWholeNumber(t)?0:2;return t.toLocaleString(r,{style:"currency",minimumFractionDigits:i,currency:n})}},{key:"containsText",value:function(t,n){var r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return e.isString(t)&&e.isString(n)?!!e.allset(t,n)&&(r&&t.includes(n)||t.toLocaleLowerCase().includes(null==n?void 0:n.toLocaleLowerCase())):null}},{key:"matchesRegex",value:function(t,n){return!!e.allset(t,n)&&n.test(t)}},{key:"matchRegexGroups",value:function(e,t){var n=t.exec(e);return null!=n&&n.groups?n.groups:null}},{key:"parseTier",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if("string"==typeof e){if("prime"===e)return t?1:"prime";e=Number(e)}switch(e){case 1e3:case 1:return 1;case 2e3:case 2:return 2;case 3e3:case 3:return 3;default:return 0}}},{key:"resumeSEQueue",value:function(){var e;null===(e=SE_API)||void 0===e||e.resumeQueue()}}],null&&c(t.prototype,null),n&&c(t,n),e}();function d(e){return(d="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function v(){v=function(e,t){return new n(e,void 0,t)};var e=RegExp.prototype,t=new WeakMap;function n(e,r,i){var o=new RegExp(e,r);return t.set(o,i||t.get(e)),m(o,n.prototype)}function r(e,n){var r=t.get(n);return Object.keys(r).reduce((function(t,n){return t[n]=e[r[n]],t}),Object.create(null))}return h(n,RegExp),n.prototype.exec=function(t){var n=e.exec.call(this,t);return n&&(n.groups=r(n,this)),n},n.prototype[Symbol.replace]=function(n,i){if("string"==typeof i){var o=t.get(this);return e[Symbol.replace].call(this,n,i.replace(/\$<([^>]+)>/g,(function(e,t){return"$"+o[t]})))}if("function"==typeof i){var a=this;return e[Symbol.replace].call(this,n,(function(){var e=arguments;return"object"!==d(e[e.length-1])&&(e=[].slice.call(e)).push(r(e,a)),i.apply(this,e)}))}return e[Symbol.replace].call(this,n,i)},v.apply(this,arguments)}function h(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&m(e,t)}function m(e,t){return(m=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function y(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return p(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?p(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,i=function(){};return{s:i,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,u=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return a=e.done,e},e:function(e){u=!0,o=e},f:function(){try{a||null==n.return||n.return()}finally{if(u)throw o}}}}function p(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n[2|3]0)?[0-9]+","i").exec(this.raw.data.tags.badges);return null===n?0:"20"===(null==n||null===(e=n.groups)||void 0===e?void 0:e.tier)?2:"30"===(null==n||null===(t=n.groups)||void 0===t?void 0:t.tier)?3:1}},{key:"getMonthsSubscribed",value:function(){var e=f.matchRegexGroups(this.badgeInfo,v(/subscriber\/([1-9][0-9]*)/i,{months:1}));return null!=e&&e.months?parseInt(e.months):0}},{key:"getBitsBadge",value:function(){var e=f.matchRegexGroups(this.raw.data.tags.badges,v(/bits\/([1-9][0-9]*)/i,{bits:1}));return null!=e&&e.bits?parseInt(e.bits):0}},{key:"getGiftsBadge",value:function(){var e=f.matchRegexGroups(this.raw.data.tags.badges,v(/sub\x2Dgifter\/([1-9][0-9]*)/i,{gifts:1}));return null!=e&&e.gifts?parseInt(e.gifts):0}},{key:"isAction",value:function(){return!0===this.raw.data.isAction}},{key:"isCustomReward",value:function(){return f.isset(this.customRewardId)}},{key:"isCommand",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=e.startsWith("!")?e:"!"+e;return this.text.startsWith(t)}},{key:"getCommand",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(!this.isCommand())return null;var t=f.matchRegexGroups(this.text,v(/!([0-9A-Z_a-z]+)([\t-\r \*0-9A-Z_a-z\xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF]*)/i,{cmd:1,args:2}));return null===t?null:e?{command:t.cmd,args:f.createList(t.args," ",!0)}:t.cmd}},{key:"getWordList",value:function(){return f.createList(this.text," ")}},{key:"contains",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return f.containsText(this.text,e,t)}},{key:"containsRegex",value:function(e){return f.matchesRegex(this.text,e)}},{key:"usernameOnList",value:function(e){if(Array.isArray(e)&&e.length>0){var t,n=y(e);try{for(n.s();!(t=n.n()).done;){var r,i=t.value;if((null===(r=i.toLocaleLowerCase)||void 0===r?void 0:r.call(i))===this.username.toLocaleLowerCase())return!0}}catch(e){n.e(e)}finally{n.f()}}return!1}},{key:"hasUsername",value:function(e){var t;return this.username.toLocaleLowerCase()===(null===(t=e.toLocaleLowerCase)||void 0===t?void 0:t.call(e))}},{key:"hasUserId",value:function(e){return this.userId===e}},{key:"usernameContains",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return f.containsText(this.username,e,t)}},{key:"usernameContainsRegex",value:function(e){return f.matchesRegex(this.username,e)}}])&&g(t.prototype,n),e}();function k(e,t){for(var n=0;n0}},{key:"expectsEventListener",value:function(e){return this.expectedEventListeners.includes(e)}},{key:"expectsEventName",value:function(e){return this.expectedEventNames.includes(e)}},{key:"isSkippable",value:function(e){return this.skippable.includes(e)}},{key:"disableSenderCorrection",value:function(){this.useSenderCorrection=!1}},{key:"registerOnWidgetLoad",value:function(){this.expectsOnWidgetLoad&&window.addEventListener("onWidgetLoad",this.onWidgetLoadHandler.bind(this))}},{key:"unregisterOnWidgetLoad",value:function(){window.removeEventListener("onWidgetLoad",this.onWidgetLoadHandler)}},{key:"registerOnSessionUpdate",value:function(){this.expectsOnSessionUpdate&&window.addEventListener("onSessionUpdate",this.onSessionUpdateHandler.bind(this))}},{key:"unregisterOnSessionUpdate",value:function(){window.removeEventListener("onSessionUpdate",this.onSessionUpdateHandler)}},{key:"registerOnEventReceived",value:function(){this.expectsEvents()&&window.addEventListener("onEventReceived",this.onEventReceivedHandler.bind(this))}},{key:"unregisterOnEventReceived",value:function(){window.removeEventListener("onEventReceived",this.onEventReceivedHandler)}},{key:"onWidgetLoadHandler",value:function(e){f.callFunc("onWidgetLoad",e)}},{key:"onSessionUpdateHandler",value:function(e){f.callFunc("onSessionUpdate",e)}},{key:"onEventReceivedHandler",value:function(e){var t,n,r=null==e||null===(t=e.detail)||void 0===t?void 0:t.listener,i=null==e||null===(n=e.detail)||void 0===n?void 0:n.event;if(void 0!==r&&void 0!==i&&this.expectsEventListener(r))if(this.expectsEventName("Message")&&"message"===r)this.onMessageHandler(i);else if(this.expectsEventName("DeleteMessage")&&"delete-message"===r)this.onDeleteMessageHandler(i);else if(this.expectsEventName("DeleteMessages")&&"delete-messages"===r)this.onDeleteMessagesHandler(i);else if("subscriber-latest"===r){if(!this.useSenderCorrection||!i.isTest||i.gifted&&i.isCommunityGift||i.bulkGifted||(i.sender=void 0),this.expectsEventName("Subscriber")&&!i.gifted&&1===i.amount&&void 0===i.sender)this.onSubscriberHandler(i);else if(this.expectsEventName("SubGift")&&i.gifted&&!i.isCommunityGift)this.onSubGiftHandler(i);else if(this.expectsEventName("Resub")&&i.amount>1&&void 0===i.sender)this.onResubHandler(i);else if(i.bulkGifted){if(this.expectsEventName("SubBombComplete")){var o,a=null==i||null===(o=i.sender)||void 0===o?void 0:o.toLowerCase();a&&void 0===this.giftCollection[a]&&(this.giftCollection[a]={amount:i.amount,recipients:[]})}this.expectsEventName("SubBomb")&&this.onSubBombHandler(i)}else if(i.gifted&&i.isCommunityGift){if(this.expectsEventName("CommunityGift")&&this.onCommunityGiftHandler(i),this.expectsEventName("SubBombComplete")){var u,s,l=null==i||null===(u=i.sender)||void 0===u?void 0:u.toLowerCase();l&&void 0!==this.giftCollection[l]&&(this.giftCollection[l].recipients.push(i.name),this.giftCollection[l].amount===(null===(s=this.giftCollection[l].recipients)||void 0===s?void 0:s.length)&&(i.amount=this.giftCollection[l].amount,this.onSubBombCompleteHandler(i,this.giftCollection[l].recipients),delete this.giftCollection[l]))}f.resumeSEQueue()}}else this.expectsEventName("Tip")&&"tip-latest"===r?this.onTipHandler(i):this.expectsEventName("Cheer")&&"cheer-latest"===r?this.onCheerHandler(i):this.expectsEventName("Host")&&"host-latest"===r?this.onHostHandler(i):this.expectsEventName("Raid")&&"raid-latest"===r?this.onRaidHandler(i):this.expectsEventName("Follow")&&"follower-latest"===r?this.onFollowHandler(i):this.expectsEventName("BotCounter")&&"bot:counter"===r?this.onBotCounterHandler(i):this.expectsEventName("EventSkip")&&"event:skip"===r?this.onEventSkipHandler(i):this.expectsEventName("WidgetButton")&&"event:test"===r&&"widget-button"===i.listener?this.onWidgetButtonHandler(i):this.expectsEventName("KVStoreUpdate")&&"kvstore:update"===r?this.onKVStoreUpdateHandler(i.data):this.expectsEventName("ToggleSound")&&"alertService:toggleSound"===r?this.onToggleSoundHandler(i):f.resumeSEQueue();else f.resumeSEQueue()}},{key:"onSubscriberHandler",value:function(e){f.callFunc("onSubscriber",e)}},{key:"onResubHandler",value:function(e){f.callFunc("onResub",e)}},{key:"onSubGiftHandler",value:function(e){f.callFunc("onSubGift",e)}},{key:"onCommunityGiftHandler",value:function(e){f.callFunc("onCommunityGift",e)}},{key:"onSubBombHandler",value:function(e){f.callFunc("onSubBomb",e)}},{key:"onSubBombCompleteHandler",value:function(e,t){f.callFunc("onSubBombComplete",e,t)}},{key:"onTipHandler",value:function(e){f.callFunc("onTip",e)}},{key:"onCheerHandler",value:function(e){f.callFunc("onCheer",e)}},{key:"onHostHandler",value:function(e){f.callFunc("onHost",e)}},{key:"onRaidHandler",value:function(e){f.callFunc("onRaid",e)}},{key:"onFollowHandler",value:function(e){f.callFunc("onFollow",e)}},{key:"onMessageHandler",value:function(e){var t="twitch"===e.service.toLowerCase()?new b(e):e;f.callFunc("onMessage",t)}},{key:"onDeleteMessageHandler",value:function(e){f.callFunc("onDeleteMessage",e)}},{key:"onDeleteMessagesHandler",value:function(e){f.callFunc("onDeleteMessages",e)}},{key:"onEventSkipHandler",value:function(){f.callFunc("onEventSkip")}},{key:"onBotCounterHandler",value:function(e){f.callFunc("onBotCounter",e)}},{key:"onWidgetButtonHandler",value:function(e){f.callFunc("onWidgetButton",e)}},{key:"onKVStoreUpdateHandler",value:function(e){f.callFunc("onKVStoreUpdate",e)}},{key:"onToggleSoundHandler",value:function(e){f.callFunc("onToggleSound",e)}}])&&k(t.prototype,n),e}();function w(e,t){for(var n=0;n0?e-1:0}},{key:"add",value:function(e){C(this,H).push(e)}},{key:"remove",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;this.empty()||C(this,H).splice(e,t)}},{key:"removeFirst",value:function(){this.remove(0)}},{key:"removeLast",value:function(){this.remove(-1)}},{key:"get",value:function(e){return this.empty()?null:e>=0&&e<=this.indexLength()?C(this,H)[e]:e<0&&Math.abs(e)<=this.length()?C(this,H)[this.length()-e]:null}},{key:"first",value:function(){return this.get(0)}},{key:"last",value:function(){return this.get(-1)}},{key:"processFirst",value:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return new Promise((function(i,o){var a=t.first();null!==a&&t.ready()&&(x(t,A,!0),e(a).then((function(){setTimeout((function(){t.removeFirst(),x(t,A,!1),r&&f.resumeSEQueue(),i()}),n)})).catch(o))}))}},{key:"processEach",value:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];this.processFirst(e,n,r).then((function(){t.processEach(e,n,r)})).catch((function(e){console.error(e)}))}}])&&w(t.prototype,n),e}();window.DOM=i,window.Events=new S,window.Queue=new T,window.Utils=f})(); \ No newline at end of file diff --git a/docs/module-ChatMessage.html b/docs/module-ChatMessage.html index c8c8323..219a0e6 100644 --- a/docs/module-ChatMessage.html +++ b/docs/module-ChatMessage.html @@ -1390,8 +1390,8 @@

-

Returns the users current subscription-tier as number. (1 = tier 1, 2 = tier 2, 3 = tier 3)

-

Prime subs still count as tier 1.

+

Returns the users current subscription-tier as number. (1 = tier 1, 2 = tier 2, 3 = tier 3, 0 = no sub)

+

Prime subs still count as tier 1 and non-subs return 0

diff --git a/docs/tutorial-ChatMessage.html b/docs/tutorial-ChatMessage.html index ee62360..176206a 100644 --- a/docs/tutorial-ChatMessage.html +++ b/docs/tutorial-ChatMessage.html @@ -210,13 +210,13 @@

Class properties

userId string -The unique ID of the message's sender +The unique ID of the author. "123456789" username string -The username of the message's sender. Capitalization may vary +The username of the author. Capitalization may vary "SenderName" diff --git a/jsdoc/tutorials/ChatMessage.md b/jsdoc/tutorials/ChatMessage.md index 36abf40..e397d9a 100644 --- a/jsdoc/tutorials/ChatMessage.md +++ b/jsdoc/tutorials/ChatMessage.md @@ -34,8 +34,8 @@ The class object has the following properties available: |roles | Object | An object with boolean values for each possible user-role in the channel | `{ staff: false, broadcaster: true, moderator: false, vip: false, subscriber: true }` | |text | string | The plain-text content of the message | `"Nice PogChamp"` | |time | Date | A Date object referring to the time the message was sent | A [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) instance | -|userId | string | The unique ID of the message's sender | `"123456789"` | -|username | string | The username of the message's sender. Capitalization may vary | `"SenderName"` | +|userId | string | The unique ID of the author. | `"123456789"` | +|username | string | The username of the author. Capitalization may vary | `"SenderName"` | # Text Operations @@ -275,4 +275,4 @@ There are other functions which are not as significant as the other functions, b `getDisplayColor()` returns either the users set color or generates a new random hex-string. This will always return a color value. -`getWordList()` returns an array with every word that was used in the message. \ No newline at end of file +`getWordList()` returns an array with every word that was used in the message. diff --git a/modules/ChatMessage.js b/modules/ChatMessage.js index 1d3fe57..8a7a89a 100644 --- a/modules/ChatMessage.js +++ b/modules/ChatMessage.js @@ -188,18 +188,19 @@ export default class ChatMessage } /** - * Returns the users current subscription-tier as number. (1 = tier 1, 2 = tier 2, 3 = tier 3) + * Returns the users current subscription-tier as number. (1 = tier 1, 2 = tier 2, 3 = tier 3, 0 = no sub) * - * Prime subs still count as tier 1. + * Prime subs still count as tier 1 and non-subs return 0 * @return {number} * @since 1.0.0 */ getTierBadge() { - const groups = Utils.matchRegexGroups(this.raw.tags.badges, /subscriber\/(?[2|3]0)[1-9][0-9]*/i); - if(!groups?.tier) return 1; - if(groups.tier === "20") return 2; - if(groups.tier === "30") return 3; + const match = new RegExp("subscriber\\/(?[2|3]0)?[0-9]+", "i").exec(this.raw.data.tags.badges); + if(match === null) { return 0; } + if(match?.groups?.tier === '20') return 2; + if(match?.groups?.tier === '30') return 3; + return 1; } /** @@ -222,7 +223,7 @@ export default class ChatMessage */ getBitsBadge() { - const groups = Utils.matchRegexGroups(this.raw.tags.badges, /bits\/(?[1-9][0-9]*)/i); + const groups = Utils.matchRegexGroups(this.raw.data.tags.badges, /bits\/(?[1-9][0-9]*)/i); return (groups?.bits) ? parseInt(groups.bits) : 0; } @@ -235,7 +236,7 @@ export default class ChatMessage */ getGiftsBadge() { - const groups = Utils.matchRegexGroups(this.raw.tags.badges, /sub-gifter\/(?[1-9][0-9]*)/i); + const groups = Utils.matchRegexGroups(this.raw.data.tags.badges, /sub-gifter\/(?[1-9][0-9]*)/i); return (groups?.gifts) ? parseInt(groups.gifts) : 0; } @@ -387,4 +388,4 @@ export default class ChatMessage { return Utils.matchesRegex(this.username, regex); } -} \ No newline at end of file +}