[ { "id": "7c36e6b244586b90", "type": "tab", "label": "Settings", "disabled": false, "info": "" }, { "id": "f9eff8535747992a", "type": "tab", "label": "Response", "disabled": false, "info": "" }, { "id": "fcc735a31613ba0b", "type": "group", "z": "7c36e6b244586b90", "name": "Subscriptions ", "style": { "stroke": "#000000", "fill": "#addb7b", "label": true, "color": "#000000", "fill-opacity": "0.46" }, "nodes": [ "3708399c3e4d20ae", "628d5f2e272f07d5", "725b71c7e6ea3a03", "1c3eb24135cc818a", "257045a8061e7b12", "be2aad482f8ef439", "90915023a3d4f850", "326480ef3c92d5c0", "75251f6f795cf94b", "339ec0a4de49f192", "fc340bacd213c455", "5d04b1b54ccbe8c9", "f0a3c8e986b84306", "3cc9efe69b837c90", "405334c2f7ab6b61", "9b2a3a7986e4549f", "02f29ca8c6aec9d8", "e3ae1a35a2d8953e", "054898ab624802e6", "7093682264d0eeaa", "09e4fce23bf14ad4", "dc8eaa0c3026839b", "50ed880f14925aef", "130a9c742ee1cd45", "cb25e994d7e2f0db", "f2a3f080a07c3193", "4b5fef36d50f38f7", "080a52db4f5eebc3" ], "x": 54, "y": 469, "w": 1202, "h": 332 }, { "id": "92e1bc854f009fbe", "type": "group", "z": "7c36e6b244586b90", "name": "Webhook", "style": { "stroke": "#000000", "fill": "#7fb7df", "label": true, "color": "#000000", "fill-opacity": "0.5" }, "nodes": [ "d0b69acfdab9690f", "b24de4d8c4c1bec5", "25dc8656e1bfa516", "e2bf3df8cde51c10", "31e1b1bf8353dccc", "cb2ff17efa270361", "032f8b46cd35fd8b", "837d3dc56ed07a67", "087d1279b39b6fdc", "2d2ab0f1c6b3f056", "185dbbdda096b452", "7080117654ae5e2c", "76b5440e882e8a03", "5970201814f50194", "cf0cc718151d358c" ], "x": 54, "y": 809, "w": 1202, "h": 202 }, { "id": "ebb10d640f7ac801", "type": "group", "z": "7c36e6b244586b90", "name": "API Settings", "style": { "stroke": "#000000", "fill": "#ff3f3f", "fill-opacity": "0.42", "label": true, "color": "#000000" }, "nodes": [ "8d7c21b59ca060cb", "e83fe6a08adf5a78", "a8d2a2d533bd0343", "8fe60d5e257ad07c", "184e1f350ac5f70c", "b0f5b34fc4ee73c2", "8ec8884435ea23c1", "6a3ebc5d2b927cea", "d24a87b460302d14", "77d45f6f763b298b", "f6d9a2ce342ba743", "47fd8e30637509da", "7879e1af17029fe2", "8c13b7d40a7b719e", "6ea6b91f73c37542", "832db0cc8c788581", "fae1084e76c22048", "4fa722aac4d95d35", "cccfb16c105ce92e", "317349278d3e55eb", "1d463669496fe001", "7f2d06ccf6b875f0", "9f2b3a3a73712b8e", "d45d1bed0a44069b", "9ccd95da63d631ba", "5286830d2035ddb0", "6c9da833ab31fa4e", "d15b88885243d289", "6c1201d518e72827", "155d67dffab25869", "486bb864c93facee" ], "x": 54, "y": 39, "w": 812, "h": 422 }, { "id": "1d9e4b26a824022f", "type": "group", "z": "f9eff8535747992a", "name": "EventSub Switch", "style": { "stroke": "#000000", "fill": "#c8e7a7", "fill-opacity": "0.49", "label": true, "color": "#000000" }, "nodes": [ "4b779b18cfa18def", "fee40a11987375da", "c46892d6233c5391", "03f134a19d11f009", "0e717f858b8d799c", "bd60cc12bad786d6", "d1c64ebc8a5feec9", "099c35a256887f74", "35d2b6f068729230", "9f4b9459d55f954b", "d6b5f07cf744a7b2", "66db194703a62045", "789b0a1d5d87ac36", "74325974cbdc5c90", "353f3049743bafc3", "85deb0b591c10ce6", "e1ed82cfe4ac1c7b", "dd04e54715766887", "a69ac429f7a89027", "7008cac6ebd21511", "4f3290f9114221db", "442489b5937e9783", "8e64834c2e4ab9c6", "14246c59203bf325", "f76ce5c449b39ec1", "ec063c27cbdff5bc", "fc172da139ae610c", "09ca04c0b1964ea9", "3e4196fcfe60dd91", "904fead80acf0883", "57835b0e8181dc56", "b97c23ba88296b1b", "b4c1b467be768e4a", "76a3218918c97560", "90d9f9f778dfea84", "1b82f3fefef1c56c", "427e0239f95d69ba", "f71de6f3f45ab546", "aafeca1840745c1a", "641360867f4299e0", "956b7e15e56e3e6e", "2557738c1c37389e", "976a5ddd48218c96", "aa03c725061760dd", "c936ce23cdc37428", "7cb22ecd302d5fe5", "8b358c8a79eba44f", "e2e09ba8297e6c08", "91a14548331e78ff", "74a51ad373778ee6", "cb0ba07aa871111a", "e8239ae110070f53", "104b71d90f13b9fa", "3b489bf1f69ab04e", "e158862b2ad9e355", "a3ee39814135cad2", "4309ad73534e365c", "2e435c1be18bebf7", "07c0971dd23dd62d", "59dac292ac05e5d8", "9cae1c4a7541c723", "52f26835eeca107c", "03c5d3303b39046e", "8fe676f729352bd3", "870a89265d2adf1d" ], "x": 64, "y": 49, "w": 842, "h": 922 }, { "id": "6ef54607ab2089a9", "type": "ui_base", "theme": { "name": "theme-dark", "lightTheme": { "default": "#0094CE", "baseColor": "#0094CE", "baseFont": "-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif", "edited": true, "reset": false }, "darkTheme": { "default": "#097479", "baseColor": "#097479", "baseFont": "-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif", "edited": true, "reset": false }, "customTheme": { "name": "Untitled Theme 1", "default": "#4B7930", "baseColor": "#4B7930", "baseFont": "-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif" }, "themeState": { "base-color": { "default": "#097479", "value": "#097479", "edited": false }, "page-titlebar-backgroundColor": { "value": "#097479", "edited": false }, "page-backgroundColor": { "value": "#111111", "edited": false }, "page-sidebar-backgroundColor": { "value": "#333333", "edited": false }, "group-textColor": { "value": "#0eb8c0", "edited": false }, "group-borderColor": { "value": "#555555", "edited": false }, "group-backgroundColor": { "value": "#333333", "edited": false }, "widget-textColor": { "value": "#eeeeee", "edited": false }, "widget-backgroundColor": { "value": "#097479", "edited": false }, "widget-borderColor": { "value": "#333333", "edited": false }, "base-font": { "value": "-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif" } }, "angularTheme": { "primary": "indigo", "accents": "blue", "warn": "red", "background": "grey", "palette": "light" } }, "site": { "name": "Node-RED Dashboard", "hideToolbar": "false", "allowSwipe": "false", "lockMenu": "false", "allowTempTheme": "true", "dateFormat": "DD/MM/YYYY", "sizes": { "sx": 48, "sy": 48, "gx": 6, "gy": 6, "cx": 6, "cy": 6, "px": 0, "py": 0 } } }, { "id": "9fcc1ffb8aba8b21", "type": "ui_group", "name": "Subscribe", "tab": "4afe96710c08f056", "order": 1, "disp": true, "width": "6", "collapse": false }, { "id": "ee20fe791dedef03", "type": "ui_group", "name": "Unsubscribe", "tab": "4afe96710c08f056", "order": 2, "disp": true, "width": 7, "collapse": false }, { "id": "bef43e4824a89468", "type": "ui_spacer", "z": "7c36e6b244586b90", "name": "spacer", "group": "ee20fe791dedef03", "order": 2, "width": 1, "height": 1 }, { "id": "4a602848e19e8b65", "type": "ui_group", "name": "Authorizations", "tab": "4afe96710c08f056", "order": 4, "disp": true, "width": "6", "collapse": false }, { "id": "4afe96710c08f056", "type": "ui_tab", "name": "EventSub", "icon": "dashboard", "order": 13, "disabled": false, "hidden": false }, { "id": "3708399c3e4d20ae", "type": "function", "z": "7c36e6b244586b90", "g": "fcc735a31613ba0b", "name": "Format subscription", "func": "const Type = msg.type;\nmsg = {\n \"headers\" : {\n \"Client-ID\": flow.get('ClientID'),\n \"Authorization\": flow.get('AppToken'),\n \"Accept\" : \"application/json\"\n },\n \"method\": \"POST\",\n \"url\" : \"https://api.twitch.tv/helix/eventsub/subscriptions\",\n \"payload\" : {\n \"type\": Type,\n \"version\": \"1\",\n \"condition\": {\n \"broadcaster_user_id\": flow.get('ChannelID')\n },\n \"transport\": {\n \"method\": \"webhook\",\n \"callback\": \"https://\" + flow.get('SubURI') + \"/webhook\",\n \"secret\": flow.get('SubSecret')\n }\n }\n}\n\nif(Type == \"channel.raid\"){\n msg.payload.condition = {\n \"to_broadcaster_user_id\" : flow.get('ChannelID')\n }\n}\n\nreturn msg;", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 370, "y": 600, "wires": [ [ "628d5f2e272f07d5" ] ] }, { "id": "628d5f2e272f07d5", "type": "http request", "z": "7c36e6b244586b90", "g": "fcc735a31613ba0b", "name": "", "method": "use", "ret": "obj", "paytoqs": "ignore", "url": "", "tls": "", "persist": false, "proxy": "", "authType": "", "x": 550, "y": 600, "wires": [ [ "be2aad482f8ef439", "4b5fef36d50f38f7" ] ] }, { "id": "725b71c7e6ea3a03", "type": "function", "z": "7c36e6b244586b90", "g": "fcc735a31613ba0b", "name": "Unsubscribe", "func": "const ID = msg.id;\nmsg = {\n \"headers\" : {\n \"Client-ID\" : flow.get('ClientID'),\n \"Authorization\" : flow.get('AppToken')\n },\n \"method\": \"DELETE\",\n \"url\": \"https://api.twitch.tv/helix/eventsub/subscriptions?id=\" + ID\n}\n\nreturn msg;", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 380, "y": 760, "wires": [ [ "1c3eb24135cc818a" ] ] }, { "id": "1c3eb24135cc818a", "type": "http request", "z": "7c36e6b244586b90", "g": "fcc735a31613ba0b", "name": "", "method": "use", "ret": "txt", "paytoqs": "ignore", "url": "", "tls": "", "persist": false, "proxy": "", "authType": "", "x": 550, "y": 760, "wires": [ [ "080a52db4f5eebc3" ] ] }, { "id": "257045a8061e7b12", "type": "function", "z": "7c36e6b244586b90", "g": "fcc735a31613ba0b", "name": "Succes", "func": "msg.payload = \"Subscription successful\"\nreturn msg;", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 880, "y": 540, "wires": [ [ "f0a3c8e986b84306" ] ] }, { "id": "be2aad482f8ef439", "type": "switch", "z": "7c36e6b244586b90", "g": "fcc735a31613ba0b", "name": "check status", "property": "statusCode", "propertyType": "msg", "rules": [ { "t": "eq", "v": "202", "vt": "num" }, { "t": "eq", "v": "409", "vt": "num" }, { "t": "eq", "v": "400", "vt": "num" }, { "t": "eq", "v": "403", "vt": "num" } ], "checkall": "true", "repair": false, "outputs": 4, "x": 710, "y": 600, "wires": [ [ "257045a8061e7b12" ], [ "90915023a3d4f850" ], [ "326480ef3c92d5c0" ], [ "75251f6f795cf94b" ] ] }, { "id": "90915023a3d4f850", "type": "function", "z": "7c36e6b244586b90", "g": "fcc735a31613ba0b", "name": "Already Exist", "func": "msg.payload = msg.payload.message;\nreturn msg;", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 890, "y": 580, "wires": [ [ "f0a3c8e986b84306" ] ] }, { "id": "326480ef3c92d5c0", "type": "function", "z": "7c36e6b244586b90", "g": "fcc735a31613ba0b", "name": "Bad Request", "func": "msg.payload = msg.payload.message;\nreturn msg;", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 890, "y": 620, "wires": [ [ "f0a3c8e986b84306" ] ] }, { "id": "75251f6f795cf94b", "type": "function", "z": "7c36e6b244586b90", "g": "fcc735a31613ba0b", "name": "Forbidden", "func": "msg.payload = msg.payload.message;\nreturn msg;", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 880, "y": 660, "wires": [ [ "f0a3c8e986b84306" ] ] }, { "id": "339ec0a4de49f192", "type": "ui_dropdown", "z": "7c36e6b244586b90", "g": "fcc735a31613ba0b", "name": "", "label": "Subscription list", "tooltip": "", "place": "Select option", "group": "9fcc1ffb8aba8b21", "order": 1, "width": 6, "height": 1, "passthru": true, "multiple": false, "options": [ { "label": "Channel Update", "value": "channel.update", "type": "str" }, { "label": "Follower", "value": "channel.follow", "type": "str" }, { "label": "Subscriber", "value": "channel.subscribe", "type": "str" }, { "label": "SubGift", "value": "channel.subscription.gift", "type": "str" }, { "label": "Sub Message", "value": "channel.subscription.message", "type": "str" }, { "label": "Bits", "value": "channel.cheer", "type": "str" }, { "label": "Raid", "value": "channel.raid", "type": "str" }, { "label": "Ban", "value": "channel.ban", "type": "str" }, { "label": "Unban", "value": "channel.unban", "type": "str" }, { "label": "Channel Point", "value": "channel.channel_points_custom_reward_redemption.add", "type": "str" }, { "label": "Poll begin", "value": "channel.poll.begin", "type": "str" }, { "label": "Poll Progress", "value": "channel.poll.progress", "type": "str" }, { "label": "Poll end", "value": "channel.poll.end", "type": "str" }, { "label": "Prediction begin", "value": "channel.prediction.begin", "type": "str" }, { "label": "Prediction Progress", "value": "channel.prediction.progress", "type": "str" }, { "label": "Prediction end", "value": "channel.prediction.end", "type": "str" }, { "label": "HypeTrain begin", "value": "channel.hype_train.begin", "type": "str" }, { "label": "HypeTrain Progress", "value": "channel.hype_train.progress", "type": "str" }, { "label": "HypeTrain end", "value": "channel.hype_train.end", "type": "str" }, { "label": "Stream ON", "value": "stream.online", "type": "str" }, { "label": "Stream OFF", "value": "stream.offline", "type": "str" } ], "payload": "", "topic": "topic", "x": 160, "y": 510, "wires": [ [ "5d04b1b54ccbe8c9", "130a9c742ee1cd45" ] ] }, { "id": "fc340bacd213c455", "type": "ui_button", "z": "7c36e6b244586b90", "g": "fcc735a31613ba0b", "name": "", "group": "9fcc1ffb8aba8b21", "order": 2, "width": 6, "height": 1, "passthru": false, "label": "Subscribe", "tooltip": "", "color": "", "bgcolor": "", "icon": "", "payload": "", "payloadType": "str", "topic": "subscribe", "x": 140, "y": 560, "wires": [ [ "cb25e994d7e2f0db" ] ] }, { "id": "5d04b1b54ccbe8c9", "type": "ui_text", "z": "7c36e6b244586b90", "g": "fcc735a31613ba0b", "group": "9fcc1ffb8aba8b21", "order": 3, "width": 6, "height": 1, "name": "", "label": "Selected subscription", "format": "{{msg.payload}}", "layout": "row-spread", "x": 360, "y": 510, "wires": [] }, { "id": "f0a3c8e986b84306", "type": "ui_text", "z": "7c36e6b244586b90", "g": "fcc735a31613ba0b", "group": "9fcc1ffb8aba8b21", "order": 4, "width": 6, "height": 1, "name": "", "label": "Response", "format": "{{msg.payload}}", "layout": "row-spread", "x": 1070, "y": 510, "wires": [] }, { "id": "3cc9efe69b837c90", "type": "function", "z": "7c36e6b244586b90", "g": "fcc735a31613ba0b", "name": "Get active subscriptions", "func": "msg = {\n \"headers\" : {\n \"Client-ID\": flow.get('ClientID'),\n \"Authorization\": flow.get('AppToken'),\n \"Accept\": \"application/json\"\n },\n \"url\": \"https://api.twitch.tv/helix/eventsub/subscriptions\"\n}\nreturn msg;", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 340, "y": 680, "wires": [ [ "405334c2f7ab6b61" ] ] }, { "id": "405334c2f7ab6b61", "type": "http request", "z": "7c36e6b244586b90", "g": "fcc735a31613ba0b", "name": "", "method": "GET", "ret": "obj", "paytoqs": "ignore", "url": "", "tls": "", "persist": false, "proxy": "", "authType": "", "x": 550, "y": 680, "wires": [ [ "9b2a3a7986e4549f" ] ] }, { "id": "9b2a3a7986e4549f", "type": "function", "z": "7c36e6b244586b90", "g": "fcc735a31613ba0b", "name": "List Sub ID", "func": "let Sub_ID = {};\nlet Channel_ID = \"\";\nlet Notif_Type = \"\";\nlet Notif_ID = \"\";\n\nfor (let i = 0; i < msg.payload.data.length ; i++){\n Channel_ID = msg.payload.data[i].condition.broadcaster_user_id;\n Notif_Type = msg.payload.data[i].type;\n Notif_ID = msg.payload.data[i].id;\n if (!Sub_ID.hasOwnProperty(Channel_ID)) {\n Sub_ID[Channel_ID] = {};\n }\n if (!Sub_ID[Channel_ID].hasOwnProperty(Notif_Type)) {\n Sub_ID[Channel_ID][Notif_Type] = Notif_ID;\n }\n}\n\nflow.set('Subscription_ID', Sub_ID);\nmsg.payload = Sub_ID;\n\nreturn msg;\n\n", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 710, "y": 680, "wires": [ [ "e3ae1a35a2d8953e" ] ] }, { "id": "02f29ca8c6aec9d8", "type": "ui_button", "z": "7c36e6b244586b90", "g": "fcc735a31613ba0b", "name": "", "group": "ee20fe791dedef03", "order": 1, "width": 3, "height": 1, "passthru": false, "label": "Refresh", "tooltip": "", "color": "", "bgcolor": "", "icon": "", "payload": "", "payloadType": "str", "topic": "topic", "x": 140, "y": 680, "wires": [ [ "3cc9efe69b837c90" ] ] }, { "id": "e3ae1a35a2d8953e", "type": "function", "z": "7c36e6b244586b90", "g": "fcc735a31613ba0b", "name": "Setup Dropdown", "func": "const Broadcaster_ID = flow.get('ChannelID');\nconst Subscriptions = msg.payload[Broadcaster_ID];\nmsg = {options : []}\n\nfor(var type in Subscriptions){\n msg.options.push({[type] : Subscriptions[type]})\n}\n\nreturn msg;", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 730, "y": 720, "wires": [ [ "054898ab624802e6" ] ] }, { "id": "054898ab624802e6", "type": "ui_dropdown", "z": "7c36e6b244586b90", "g": "fcc735a31613ba0b", "name": "", "label": "Active sub", "tooltip": "", "place": "Select option", "group": "ee20fe791dedef03", "order": 4, "width": 0, "height": 0, "passthru": true, "multiple": false, "options": [ { "label": "", "value": "", "type": "str" } ], "payload": "", "topic": "topic", "topicType": "str", "x": 910, "y": 720, "wires": [ [ "dc8eaa0c3026839b", "50ed880f14925aef" ] ] }, { "id": "7093682264d0eeaa", "type": "ui_button", "z": "7c36e6b244586b90", "g": "fcc735a31613ba0b", "name": "", "group": "ee20fe791dedef03", "order": 3, "width": 3, "height": 1, "passthru": false, "label": "Unsubscribe", "tooltip": "", "color": "", "bgcolor": "", "icon": "", "payload": "", "payloadType": "str", "topic": "unsubscribe", "topicType": "str", "x": 150, "y": 720, "wires": [ [ "f2a3f080a07c3193" ] ] }, { "id": "09e4fce23bf14ad4", "type": "ui_text", "z": "7c36e6b244586b90", "g": "fcc735a31613ba0b", "group": "ee20fe791dedef03", "order": 6, "width": 7, "height": 1, "name": "", "label": "Response", "format": "{{msg.payload}}", "layout": "row-spread", "x": 900, "y": 760, "wires": [] }, { "id": "dc8eaa0c3026839b", "type": "ui_text", "z": "7c36e6b244586b90", "g": "fcc735a31613ba0b", "group": "ee20fe791dedef03", "order": 5, "width": 7, "height": 1, "name": "", "label": "Selected unsubscription", "format": "{{msg.payload}}", "layout": "row-spread", "x": 1120, "y": 760, "wires": [] }, { "id": "50ed880f14925aef", "type": "function", "z": "7c36e6b244586b90", "g": "fcc735a31613ba0b", "name": "Save current UnSub", "func": "flow.set(\"unsubscription\", msg.payload);\nmsg.payload = \"waiting\";\nreturn msg;", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 1110, "y": 720, "wires": [ [ "09e4fce23bf14ad4" ] ] }, { "id": "130a9c742ee1cd45", "type": "function", "z": "7c36e6b244586b90", "g": "fcc735a31613ba0b", "name": "Save current Sub", "func": "flow.set(\"subscription\", msg.payload);\nmsg.payload = \"waiting\";\n\nreturn msg;", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 570, "y": 510, "wires": [ [ "f0a3c8e986b84306" ] ] }, { "id": "cb25e994d7e2f0db", "type": "change", "z": "7c36e6b244586b90", "g": "fcc735a31613ba0b", "name": "Set Subscription", "rules": [ { "t": "set", "p": "type", "pt": "msg", "to": "subscription", "tot": "flow" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 170, "y": 600, "wires": [ [ "3708399c3e4d20ae" ] ] }, { "id": "f2a3f080a07c3193", "type": "change", "z": "7c36e6b244586b90", "g": "fcc735a31613ba0b", "name": "Set UnSubscription", "rules": [ { "t": "set", "p": "id", "pt": "msg", "to": "unsubscription", "tot": "flow" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 170, "y": 760, "wires": [ [ "725b71c7e6ea3a03" ] ] }, { "id": "4b5fef36d50f38f7", "type": "debug", "z": "7c36e6b244586b90", "g": "fcc735a31613ba0b", "name": "", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "true", "targetType": "full", "statusVal": "", "statusType": "auto", "x": 690, "y": 550, "wires": [] }, { "id": "d0b69acfdab9690f", "type": "http in", "z": "7c36e6b244586b90", "g": "92e1bc854f009fbe", "name": "WebHook", "url": "/webhook", "method": "post", "upload": false, "swaggerDoc": "", "x": 140, "y": 900, "wires": [ [ "cf0cc718151d358c", "5970201814f50194" ] ] }, { "id": "b24de4d8c4c1bec5", "type": "switch", "z": "7c36e6b244586b90", "g": "92e1bc854f009fbe", "name": "Type ?", "property": "req.headers[\"twitch-eventsub-message-type\"]", "propertyType": "msg", "rules": [ { "t": "eq", "v": "webhook_callback_verification", "vt": "str" }, { "t": "eq", "v": "notification", "vt": "str" }, { "t": "eq", "v": "revocation", "vt": "str" } ], "checkall": "true", "repair": false, "outputs": 3, "x": 620, "y": 940, "wires": [ [ "31e1b1bf8353dccc" ], [ "25dc8656e1bfa516" ], [ "e2bf3df8cde51c10" ] ] }, { "id": "25dc8656e1bfa516", "type": "function", "z": "7c36e6b244586b90", "g": "92e1bc854f009fbe", "name": "Notification", "func": "msg.statusCode = 200;\nreturn msg", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 790, "y": 930, "wires": [ [ "837d3dc56ed07a67", "cb2ff17efa270361" ] ] }, { "id": "e2bf3df8cde51c10", "type": "link out", "z": "7c36e6b244586b90", "g": "92e1bc854f009fbe", "name": "WebHook revocation", "links": [], "x": 820, "y": 970, "wires": [], "l": true }, { "id": "31e1b1bf8353dccc", "type": "function", "z": "7c36e6b244586b90", "g": "92e1bc854f009fbe", "name": "Subscription", "func": "msg.payload = msg.payload.challenge.toString();\nmsg.statusCode = 200;\nreturn msg", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 790, "y": 890, "wires": [ [ "cb2ff17efa270361" ] ] }, { "id": "cb2ff17efa270361", "type": "http response", "z": "7c36e6b244586b90", "g": "92e1bc854f009fbe", "name": "Response", "statusCode": "", "headers": {}, "x": 940, "y": 890, "wires": [] }, { "id": "032f8b46cd35fd8b", "type": "link out", "z": "7c36e6b244586b90", "g": "92e1bc854f009fbe", "name": "WebHook Notification", "links": [ "03f134a19d11f009" ], "x": 1130, "y": 930, "wires": [], "l": true }, { "id": "837d3dc56ed07a67", "type": "function", "z": "7c36e6b244586b90", "g": "92e1bc854f009fbe", "name": "ID Filter", "func": "let IDList = flow.get('EventID')||[];\nlet ID = msg.req.headers[\"twitch-eventsub-message-id\"];\n\nif(!IDList.includes(ID)){\n IDList.push(ID);\n flow.set('EventID', IDList);\n return msg;\n}\n\n", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 940, "y": 930, "wires": [ [ "032f8b46cd35fd8b", "087d1279b39b6fdc" ] ] }, { "id": "087d1279b39b6fdc", "type": "debug", "z": "7c36e6b244586b90", "g": "92e1bc854f009fbe", "name": "", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "true", "targetType": "full", "statusVal": "", "statusType": "auto", "x": 1080, "y": 970, "wires": [] }, { "id": "2d2ab0f1c6b3f056", "type": "inject", "z": "7c36e6b244586b90", "g": "92e1bc854f009fbe", "name": "", "props": [ { "p": "payload" }, { "p": "topic", "vt": "str" } ], "repeat": "3600", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "", "payloadType": "date", "x": 790, "y": 850, "wires": [ [ "185dbbdda096b452" ] ] }, { "id": "185dbbdda096b452", "type": "change", "z": "7c36e6b244586b90", "g": "92e1bc854f009fbe", "name": "Reset EventID", "rules": [ { "t": "set", "p": "EventID", "pt": "flow", "to": "[]", "tot": "json" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 960, "y": 850, "wires": [ [] ] }, { "id": "7080117654ae5e2c", "type": "function", "z": "7c36e6b244586b90", "g": "92e1bc854f009fbe", "name": "Signature match ?", "func": "const Request = flow.get('Req_To_Test');\nflow.set('Req_To_Test', {});\nconst Signature_To_Test = Request.req.headers[\"twitch-eventsub-message-signature\"];\nconst Signature = \"sha256=\" + msg.payload;\n\nif(Signature_To_Test == Signature){\n return Request;\n}", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 450, "y": 940, "wires": [ [ "b24de4d8c4c1bec5" ] ] }, { "id": "76b5440e882e8a03", "type": "hmac", "z": "7c36e6b244586b90", "g": "92e1bc854f009fbe", "name": "", "algorithm": "HmacSHA256", "key": "NA", "x": 290, "y": 940, "wires": [ [ "7080117654ae5e2c" ] ] }, { "id": "5970201814f50194", "type": "function", "z": "7c36e6b244586b90", "g": "92e1bc854f009fbe", "name": "Signature verification", "func": "const ID = msg.req.headers[\"twitch-eventsub-message-id\"];\nconst TS = msg.req.headers[\"twitch-eventsub-message-timestamp\"];\nconst Body = JSON.stringify(msg.req.body);\n\nmsg.secrectkey = flow.get('SubSecret');\nmsg.payload = ID + TS + Body;\n\nreturn msg;", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 340, "y": 900, "wires": [ [ "76b5440e882e8a03" ] ] }, { "id": "cf0cc718151d358c", "type": "function", "z": "7c36e6b244586b90", "g": "92e1bc854f009fbe", "name": "Save Request", "func": "flow.set(\"Req_To_Test\", msg);\nreturn msg;", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 320, "y": 860, "wires": [ [] ] }, { "id": "8d7c21b59ca060cb", "type": "inject", "z": "7c36e6b244586b90", "g": "ebb10d640f7ac801", "name": "Settings", "props": [ { "p": "payload" }, { "p": "topic", "vt": "str" } ], "repeat": "", "crontab": "", "once": true, "onceDelay": 0.1, "topic": "", "payloadType": "date", "x": 160, "y": 110, "wires": [ [ "e83fe6a08adf5a78" ] ] }, { "id": "e83fe6a08adf5a78", "type": "change", "z": "7c36e6b244586b90", "g": "ebb10d640f7ac801", "name": "API Settings", "rules": [ { "t": "set", "p": "ClientID", "pt": "flow", "to": "YOUR CLIENT ID", "tot": "str" }, { "t": "set", "p": "ClientSecret", "pt": "flow", "to": "YOUR CLIENT SECRET", "tot": "str" }, { "t": "set", "p": "SubSecret", "pt": "flow", "to": "YOUR SUB SECRET", "tot": "str" }, { "t": "set", "p": "Channel", "pt": "flow", "to": "ioodyme", "tot": "str" }, { "t": "set", "p": "SubURI", "pt": "flow", "to": "SUB URI", "tot": "str" }, { "t": "set", "p": "Scopes", "pt": "flow", "to": "bits:read channel:manage:broadcast channel:manage:polls channel:manage:predictions channel:manage:redemptions channel:read:polls channel:read:predictions channel:read:redemptions channel:read:subscriptions moderation:read user:read:follows user:read:subscriptions channel:moderate channel:read:hype_train", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 340, "y": 110, "wires": [ [ "5286830d2035ddb0", "6c9da833ab31fa4e" ] ] }, { "id": "a8d2a2d533bd0343", "type": "inject", "z": "7c36e6b244586b90", "g": "ebb10d640f7ac801", "name": "Get channel ID", "props": [ { "p": "payload" }, { "p": "topic", "vt": "str" } ], "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "", "payload": "", "payloadType": "date", "x": 180, "y": 340, "wires": [ [ "8fe60d5e257ad07c" ] ] }, { "id": "8fe60d5e257ad07c", "type": "function", "z": "7c36e6b244586b90", "g": "ebb10d640f7ac801", "name": "Request channel ID", "func": "msg = {\n \"headers\" : {\n \"Client-ID\" : flow.get('ClientID'),\n \"Authorization\" : flow.get('AppToken'),\n \"Accept\" : \"application/vnd.twitchtv.v5+json\"\n },\n \"url\": \"https://api.twitch.tv/helix/search/channels?query=\" + flow.get(\"Channel\")\n}\nreturn msg;", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 360, "y": 340, "wires": [ [ "184e1f350ac5f70c" ] ] }, { "id": "184e1f350ac5f70c", "type": "http request", "z": "7c36e6b244586b90", "g": "ebb10d640f7ac801", "name": "Channel ID", "method": "GET", "ret": "obj", "paytoqs": "ignore", "url": "", "tls": "", "persist": false, "proxy": "", "authType": "", "x": 560, "y": 340, "wires": [ [ "b0f5b34fc4ee73c2", "1d463669496fe001" ] ] }, { "id": "b0f5b34fc4ee73c2", "type": "change", "z": "7c36e6b244586b90", "g": "ebb10d640f7ac801", "name": "", "rules": [ { "t": "set", "p": "ChannelID", "pt": "flow", "to": "msg.payload.data[0].id", "tot": "msg" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 750, "y": 340, "wires": [ [] ] }, { "id": "8ec8884435ea23c1", "type": "http in", "z": "7c36e6b244586b90", "g": "ebb10d640f7ac801", "name": "", "url": "/apptoken", "method": "get", "upload": false, "swaggerDoc": "", "x": 160, "y": 160, "wires": [ [ "6a3ebc5d2b927cea", "f6d9a2ce342ba743" ] ] }, { "id": "6a3ebc5d2b927cea", "type": "function", "z": "7c36e6b244586b90", "g": "ebb10d640f7ac801", "name": "Request APP Token", "func": "msg = {};\nmsg.url = \"https://id.twitch.tv/oauth2/token\";\nmsg.url += \"?client_id=\" + flow.get('ClientID');\nmsg.url += \"&client_secret=\" + flow.get('ClientSecret');\nmsg.url += \"&grant_type=client_credentials\";\nmsg.url += \"&scope=\" + flow.get('Scopes');\nreturn msg;", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 370, "y": 160, "wires": [ [ "d24a87b460302d14" ] ] }, { "id": "d24a87b460302d14", "type": "http request", "z": "7c36e6b244586b90", "g": "ebb10d640f7ac801", "name": "", "method": "POST", "ret": "obj", "paytoqs": "ignore", "url": "", "tls": "", "persist": false, "proxy": "", "authType": "", "x": 560, "y": 160, "wires": [ [ "77d45f6f763b298b" ] ] }, { "id": "77d45f6f763b298b", "type": "function", "z": "7c36e6b244586b90", "g": "ebb10d640f7ac801", "name": "Save Bearer", "func": "const Token = \"Bearer \" + msg.payload[\"access_token\"];\nflow.set('AppToken', Token);\nreturn;", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 730, "y": 160, "wires": [ [] ] }, { "id": "f6d9a2ce342ba743", "type": "function", "z": "7c36e6b244586b90", "g": "ebb10d640f7ac801", "name": "Subscription", "func": "msg.payload = \"APP Token generated\";\nmsg.statusCode = 200;\nreturn msg;", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 340, "y": 200, "wires": [ [ "47fd8e30637509da" ] ] }, { "id": "47fd8e30637509da", "type": "http response", "z": "7c36e6b244586b90", "g": "ebb10d640f7ac801", "name": "Response", "statusCode": "", "headers": {}, "x": 550, "y": 200, "wires": [] }, { "id": "7879e1af17029fe2", "type": "http in", "z": "7c36e6b244586b90", "g": "ebb10d640f7ac801", "name": "", "url": "/usertoken", "method": "get", "upload": false, "swaggerDoc": "", "x": 160, "y": 260, "wires": [ [ "fae1084e76c22048", "8c13b7d40a7b719e" ] ] }, { "id": "8c13b7d40a7b719e", "type": "function", "z": "7c36e6b244586b90", "g": "ebb10d640f7ac801", "name": "Request USER Token", "func": "const code = msg.payload.code;\nmsg = {};\nmsg.url = \"https://id.twitch.tv/oauth2/token?\";\nmsg.url += \"client_id=\" + flow.get('ClientID');\nmsg.url += \"&client_secret=\" + flow.get('ClientSecret');\nmsg.url += \"&code=\" + code;\nmsg.url += \"&grant_type=authorization_code\";\nmsg.url += \"&redirect_uri=https://\" + flow.get('SubURI') + \"/debug\";\nreturn msg;", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 370, "y": 260, "wires": [ [ "6ea6b91f73c37542" ] ] }, { "id": "6ea6b91f73c37542", "type": "http request", "z": "7c36e6b244586b90", "g": "ebb10d640f7ac801", "name": "", "method": "POST", "ret": "obj", "paytoqs": "ignore", "url": "", "tls": "", "persist": false, "proxy": "", "authType": "", "x": 560, "y": 260, "wires": [ [ "832db0cc8c788581" ] ] }, { "id": "832db0cc8c788581", "type": "function", "z": "7c36e6b244586b90", "g": "ebb10d640f7ac801", "name": "Save Bearer", "func": "const Token = \"Bearer \" + msg.payload[\"access_token\"];\nflow.set('UserToken', Token);\nreturn msg;", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 730, "y": 260, "wires": [ [] ] }, { "id": "fae1084e76c22048", "type": "function", "z": "7c36e6b244586b90", "g": "ebb10d640f7ac801", "name": "Subscription", "func": "msg.payload = \"User token generated\";\nmsg.statusCode = 200;\nreturn msg", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 340, "y": 300, "wires": [ [ "4fa722aac4d95d35" ] ] }, { "id": "4fa722aac4d95d35", "type": "http response", "z": "7c36e6b244586b90", "g": "ebb10d640f7ac801", "name": "Response", "statusCode": "", "headers": {}, "x": 550, "y": 300, "wires": [] }, { "id": "cccfb16c105ce92e", "type": "ui_template", "z": "7c36e6b244586b90", "g": "ebb10d640f7ac801", "group": "4a602848e19e8b65", "name": "Authorize App", "order": 1, "width": 3, "height": 1, "format": "", "storeOutMessages": true, "fwdInMessages": true, "resendOnRefresh": true, "templateScope": "local", "x": 550, "y": 120, "wires": [ [] ] }, { "id": "317349278d3e55eb", "type": "ui_template", "z": "7c36e6b244586b90", "g": "ebb10d640f7ac801", "group": "4a602848e19e8b65", "name": "Authorize User", "order": 2, "width": 3, "height": 1, "format": "", "storeOutMessages": true, "fwdInMessages": true, "resendOnRefresh": true, "templateScope": "local", "x": 740, "y": 120, "wires": [ [] ] }, { "id": "1d463669496fe001", "type": "debug", "z": "7c36e6b244586b90", "g": "ebb10d640f7ac801", "name": "", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "false", "statusVal": "", "statusType": "auto", "x": 730, "y": 300, "wires": [] }, { "id": "7f2d06ccf6b875f0", "type": "inject", "z": "7c36e6b244586b90", "g": "ebb10d640f7ac801", "name": "Validate", "props": [ { "p": "payload" }, { "p": "topic", "vt": "str" } ], "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "", "payloadType": "date", "x": 150, "y": 380, "wires": [ [ "9f2b3a3a73712b8e" ] ] }, { "id": "9f2b3a3a73712b8e", "type": "function", "z": "7c36e6b244586b90", "g": "ebb10d640f7ac801", "name": "Validate User Token", "func": "msg = {\n \"headers\" : {\n \"Client-ID\": flow.get('AppID'),\n \"Authorization\": flow.get('UserToken'),\n \"Accept\" : \"application/vnd.twitchtv.v5+json\"\n },\n \"url\": \"https://id.twitch.tv/oauth2/validate\"\n}\nreturn msg;", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 370, "y": 380, "wires": [ [ "d45d1bed0a44069b" ] ] }, { "id": "d45d1bed0a44069b", "type": "http request", "z": "7c36e6b244586b90", "g": "ebb10d640f7ac801", "name": "Request", "method": "GET", "ret": "obj", "paytoqs": "ignore", "url": "", "tls": "", "persist": false, "proxy": "", "authType": "", "x": 550, "y": 380, "wires": [ [ "9ccd95da63d631ba" ] ] }, { "id": "9ccd95da63d631ba", "type": "debug", "z": "7c36e6b244586b90", "g": "ebb10d640f7ac801", "name": "", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "false", "statusVal": "", "statusType": "auto", "x": 730, "y": 380, "wires": [] }, { "id": "5286830d2035ddb0", "type": "template", "z": "7c36e6b244586b90", "g": "ebb10d640f7ac801", "name": "Authorize App", "field": "template", "fieldType": "msg", "format": "handlebars", "syntax": "mustache", "template": "\n\n\n
\n \n \n \n\n\n", "output": "str", "x": 550, "y": 80, "wires": [ [ "cccfb16c105ce92e" ] ] }, { "id": "6c9da833ab31fa4e", "type": "template", "z": "7c36e6b244586b90", "g": "ebb10d640f7ac801", "name": "Authorize User", "field": "template", "fieldType": "msg", "format": "handlebars", "syntax": "mustache", "template": "\n\n\n\n \n \n \n\n\n", "output": "str", "x": 740, "y": 80, "wires": [ [ "317349278d3e55eb" ] ] }, { "id": "d15b88885243d289", "type": "debug", "z": "7c36e6b244586b90", "g": "ebb10d640f7ac801", "name": "", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "false", "statusVal": "", "statusType": "auto", "x": 740, "y": 220, "wires": [] }, { "id": "6c1201d518e72827", "type": "inject", "z": "7c36e6b244586b90", "g": "ebb10d640f7ac801", "name": "Validate", "props": [ { "p": "payload" }, { "p": "topic", "vt": "str" } ], "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "", "payloadType": "date", "x": 150, "y": 420, "wires": [ [ "155d67dffab25869" ] ] }, { "id": "155d67dffab25869", "type": "function", "z": "7c36e6b244586b90", "g": "ebb10d640f7ac801", "name": "Validate App Token", "func": "msg = {\n \"headers\" : {\n \"Client-ID\": flow.get('AppID'),\n \"Authorization\": flow.get('AppToken'),\n \"Accept\" : \"application/vnd.twitchtv.v5+json\"\n },\n \"url\": \"https://id.twitch.tv/oauth2/validate\"\n}\nreturn msg;", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 360, "y": 420, "wires": [ [ "486bb864c93facee" ] ] }, { "id": "486bb864c93facee", "type": "http request", "z": "7c36e6b244586b90", "g": "ebb10d640f7ac801", "name": "Request", "method": "GET", "ret": "obj", "paytoqs": "ignore", "url": "", "tls": "", "persist": false, "proxy": "", "authType": "", "x": 550, "y": 420, "wires": [ [ "9ccd95da63d631ba" ] ] }, { "id": "7098c94cefad6f46", "type": "function", "z": "f9eff8535747992a", "name": "Channel Update", "func": "const broadcaster = msg.payload.event.broadcaster_user_name;\nconst title = msg.payload.event.title;\nconst category = msg.payload.event.category_name;\n\nreturn [{payload: broadcaster}, {payload : title}, {payload : category}];", "outputs": 3, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 1110, "y": 60, "wires": [ [ "d8d1f2dfc5c946e8" ], [ "d8d1f2dfc5c946e8" ], [ "d8d1f2dfc5c946e8" ] ], "outputLabels": [ "Broadcaster", "Title", "Category" ] }, { "id": "3c5392d536a6758c", "type": "link in", "z": "f9eff8535747992a", "name": "Channel Update", "links": [ "d1c64ebc8a5feec9" ], "x": 985, "y": 60, "wires": [ [ "7098c94cefad6f46" ] ] }, { "id": "d8d1f2dfc5c946e8", "type": "debug", "z": "f9eff8535747992a", "name": "", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "false", "statusVal": "", "statusType": "auto", "x": 1290, "y": 60, "wires": [] }, { "id": "e3fdefc8024d75a1", "type": "link in", "z": "f9eff8535747992a", "name": "Channel Update", "links": [ "099c35a256887f74" ], "x": 985, "y": 110, "wires": [ [ "781d8b6ea144560b" ] ] }, { "id": "781d8b6ea144560b", "type": "function", "z": "f9eff8535747992a", "name": "Follower", "func": "const username = msg.payload.event.user_name;\n\nreturn [{payload : username}];", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 1090, "y": 110, "wires": [ [ "508c9bdbf9f32cf2" ] ], "outputLabels": [ "Follower Username" ] }, { "id": "508c9bdbf9f32cf2", "type": "debug", "z": "f9eff8535747992a", "name": "", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "false", "statusVal": "", "statusType": "auto", "x": 1290, "y": 110, "wires": [] }, { "id": "46a3a69959ede421", "type": "link in", "z": "f9eff8535747992a", "name": "Channel Update", "links": [ "35d2b6f068729230" ], "x": 985, "y": 150, "wires": [ [ "0706fa919a2b66b7" ] ] }, { "id": "0706fa919a2b66b7", "type": "function", "z": "f9eff8535747992a", "name": "Subscriber", "func": "const username = msg.payload.event.user_name;\nconst tier = parseInt(msg.payload.event.tier)/1000;\n\nreturn [{payload : username}, {payload : tier}];\n", "outputs": 2, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 1100, "y": 150, "wires": [ [ "13aa39ce93155d90" ], [ "13aa39ce93155d90" ] ], "outputLabels": [ "Subscriber Username", "Tier" ] }, { "id": "13aa39ce93155d90", "type": "debug", "z": "f9eff8535747992a", "name": "", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "false", "statusVal": "", "statusType": "auto", "x": 1290, "y": 150, "wires": [] }, { "id": "22b9bd03717a6092", "type": "function", "z": "f9eff8535747992a", "name": "SubGift", "func": "const username = msg.payload.event.user_name;\nconst tier = parseInt(msg.payload.event.tier)/1000;\n\nreturn [{payload : username}, {payload : tier}];\n", "outputs": 2, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 1090, "y": 190, "wires": [ [ "c9bd7b1cdbdaca88" ], [ "c9bd7b1cdbdaca88" ] ], "outputLabels": [ "Subscriber Username", "Tier" ] }, { "id": "bc942504e9d6822a", "type": "link in", "z": "f9eff8535747992a", "name": "Channel Update", "links": [ "66db194703a62045" ], "x": 985, "y": 190, "wires": [ [ "22b9bd03717a6092" ] ] }, { "id": "c9bd7b1cdbdaca88", "type": "debug", "z": "f9eff8535747992a", "name": "", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "false", "statusVal": "", "statusType": "auto", "x": 1290, "y": 190, "wires": [] }, { "id": "2e12e6b6e53b0967", "type": "function", "z": "f9eff8535747992a", "name": "Sub Mesage", "func": "const username = msg.payload.event.user_name;\nconst tier = parseInt(msg.payload.event.tier)/1000;\nconst message = msg.payload.event.message.text;\n\nreturn [{payload : username}, {payload : tier}, {payload : message}];", "outputs": 3, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 1100, "y": 240, "wires": [ [ "c4cd0c41321ef3bd" ], [ "c4cd0c41321ef3bd" ], [ "c4cd0c41321ef3bd" ] ], "outputLabels": [ "Subscriber Username", "Tier", "Message" ] }, { "id": "f436b7331bd9609b", "type": "link in", "z": "f9eff8535747992a", "name": "Channel Update", "links": [ "7008cac6ebd21511" ], "x": 985, "y": 240, "wires": [ [ "2e12e6b6e53b0967" ] ] }, { "id": "c4cd0c41321ef3bd", "type": "debug", "z": "f9eff8535747992a", "name": "", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "false", "statusVal": "", "statusType": "auto", "x": 1290, "y": 240, "wires": [] }, { "id": "4c49467a35df9851", "type": "function", "z": "f9eff8535747992a", "name": "Bits", "func": "const username = msg.payload.event.user_name;\nconst bits = msg.payload.event.bits;\nconst message = msg.payload.event.message;\n\nreturn [{payload : username}, {payload : bits}, {payload : message}];", "outputs": 3, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 1080, "y": 300, "wires": [ [ "ca9267f59495a61e" ], [ "ca9267f59495a61e" ], [ "ca9267f59495a61e" ] ], "outputLabels": [ "Username", "Bits", "Message" ] }, { "id": "674ee05d36a01381", "type": "link in", "z": "f9eff8535747992a", "name": "Channel Update", "links": [ "e1ed82cfe4ac1c7b" ], "x": 985, "y": 300, "wires": [ [ "4c49467a35df9851" ] ] }, { "id": "ca9267f59495a61e", "type": "debug", "z": "f9eff8535747992a", "name": "", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "false", "statusVal": "", "statusType": "auto", "x": 1290, "y": 300, "wires": [] }, { "id": "c282f7bbe2ea94a6", "type": "function", "z": "f9eff8535747992a", "name": "Raid", "func": "const username = msg.payload.event.from_broadcaster_user_name;\nconst viewers = msg.payload.event.viewers;\n\nreturn[{payload : username}, {payload : viewers}];", "outputs": 2, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 1080, "y": 350, "wires": [ [ "0e8b1da7d78d9e04" ], [ "0e8b1da7d78d9e04" ] ], "outputLabels": [ "Broadcaster Username", "Viewers" ] }, { "id": "6c6457495d5b73d4", "type": "link in", "z": "f9eff8535747992a", "name": "Channel Update", "links": [ "8e64834c2e4ab9c6" ], "x": 985, "y": 350, "wires": [ [ "c282f7bbe2ea94a6" ] ] }, { "id": "0e8b1da7d78d9e04", "type": "debug", "z": "f9eff8535747992a", "name": "", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "false", "statusVal": "", "statusType": "auto", "x": 1290, "y": 350, "wires": [] }, { "id": "216bb963f207e682", "type": "function", "z": "f9eff8535747992a", "name": "Ban", "func": "const username = msg.payload.event.user_name;\nconst moderator = msg.payload.event.moderator_user_name;\nconst reason = msg.payload.event.reason;\nconst end = msg.payload.event.ends_at;\nconst permanent = msg.payload.event.is_permanent;\n\nreturn [{payload : username},{payload : moderator},{payload : reason}, {payload : end},{payload : permanent}];", "outputs": 5, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 1080, "y": 410, "wires": [ [ "d1e21ddc83cc908f" ], [ "d1e21ddc83cc908f" ], [ "d1e21ddc83cc908f" ], [ "d1e21ddc83cc908f" ], [ "d1e21ddc83cc908f" ] ], "outputLabels": [ "Banned User", "Moderator", "Reason", "End date", "Permanent" ] }, { "id": "46a44352c8d66e56", "type": "link in", "z": "f9eff8535747992a", "name": "Channel Update", "links": [ "3e4196fcfe60dd91" ], "x": 985, "y": 410, "wires": [ [ "216bb963f207e682" ] ] }, { "id": "d1e21ddc83cc908f", "type": "debug", "z": "f9eff8535747992a", "name": "", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "false", "statusVal": "", "statusType": "auto", "x": 1290, "y": 410, "wires": [] }, { "id": "b7796720760df4ca", "type": "function", "z": "f9eff8535747992a", "name": "Unban", "func": "const username = msg.payload.event.user_name;\nconst moderator = msg.payload.event.moderator_user_name;\n\nreturn [{payload : username}, {payload : moderator}];", "outputs": 2, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 1080, "y": 470, "wires": [ [ "2a80b4bcb77e25b1" ], [ "2a80b4bcb77e25b1" ] ], "outputLabels": [ "Banned User", "Moderator" ] }, { "id": "e7138cd2dc73b8c0", "type": "link in", "z": "f9eff8535747992a", "name": "Channel Update", "links": [ "ec063c27cbdff5bc" ], "x": 985, "y": 470, "wires": [ [ "b7796720760df4ca" ] ] }, { "id": "2a80b4bcb77e25b1", "type": "debug", "z": "f9eff8535747992a", "name": "", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "false", "statusVal": "", "statusType": "auto", "x": 1290, "y": 470, "wires": [] }, { "id": "3ee0a398d56ce81b", "type": "function", "z": "f9eff8535747992a", "name": "Channel Point", "func": "const username = msg.payload.event.user_name;\nconst message = msg.payload.event.user_input;\nconst title = msg.payload.event.reward.title;\nconst prompt = msg.payload.event.reward.prompt;\nconst cost = msg.payload.event.reward.cost;\n\nreturn [{payload : username}, {payload : message}, {payload : title}, {payload : prompt}, {payload : cost}];", "outputs": 5, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 1110, "y": 530, "wires": [ [ "bb15db95da85594b" ], [ "bb15db95da85594b" ], [ "bb15db95da85594b" ], [ "bb15db95da85594b" ], [ "bb15db95da85594b" ] ], "outputLabels": [ "Username", "Message", "Title", "Prompt", "Cost" ] }, { "id": "2720e13c28d5f2a6", "type": "link in", "z": "f9eff8535747992a", "name": "Channel Update", "links": [ "b97c23ba88296b1b" ], "x": 985, "y": 530, "wires": [ [ "3ee0a398d56ce81b" ] ] }, { "id": "bb15db95da85594b", "type": "debug", "z": "f9eff8535747992a", "name": "", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "false", "statusVal": "", "statusType": "auto", "x": 1290, "y": 530, "wires": [] }, { "id": "f23b95398eaa0fb5", "type": "function", "z": "f9eff8535747992a", "name": "Poll Begin", "func": "const title = msg.payload.event.title;\nconst choices = msg.payload.event.choices;\nconst end = msg.payload.event.ends_at;\n\nreturn [{payload : title}, {payload : choices}, {payload : end}];", "outputs": 3, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 1090, "y": 600, "wires": [ [ "0a6403e990465b45" ], [ "0a6403e990465b45" ], [ "0a6403e990465b45" ] ], "outputLabels": [ "Title", "Choices", "End" ] }, { "id": "c977fc48940eaa1f", "type": "link in", "z": "f9eff8535747992a", "name": "Channel Update", "links": [ "f71de6f3f45ab546" ], "x": 985, "y": 600, "wires": [ [ "f23b95398eaa0fb5" ] ] }, { "id": "0a6403e990465b45", "type": "debug", "z": "f9eff8535747992a", "name": "", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "false", "statusVal": "", "statusType": "auto", "x": 1290, "y": 600, "wires": [] }, { "id": "e66321b5eebb9e62", "type": "function", "z": "f9eff8535747992a", "name": "Poll Progress", "func": "const title = msg.payload.event.title;\nconst choices = msg.payload.event.choices;\nconst end = msg.payload.event.ends_at;\n\nreturn [{payload : title}, {payload : choices}, {payload : end}];", "outputs": 3, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 1100, "y": 650, "wires": [ [ "82982a94bf2f96e5" ], [ "82982a94bf2f96e5" ], [ "82982a94bf2f96e5" ] ], "outputLabels": [ "Title", "Choices", "End" ] }, { "id": "013eac261f7f830a", "type": "link in", "z": "f9eff8535747992a", "name": "Channel Update", "links": [ "52f26835eeca107c" ], "x": 985, "y": 650, "wires": [ [ "e66321b5eebb9e62" ] ] }, { "id": "82982a94bf2f96e5", "type": "debug", "z": "f9eff8535747992a", "name": "", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "false", "statusVal": "", "statusType": "auto", "x": 1290, "y": 650, "wires": [] }, { "id": "7822bd853ff32202", "type": "function", "z": "f9eff8535747992a", "name": "Poll End", "func": "const title = msg.payload.event.title;\nconst choices = msg.payload.event.choices;\n\nreturn [{payload : title}, {payload : choices}];", "outputs": 2, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 1090, "y": 700, "wires": [ [ "e3a2b757bc7b4f00" ], [ "e3a2b757bc7b4f00" ] ], "outputLabels": [ "Title", "Choices" ] }, { "id": "440ca17ff1420dfe", "type": "link in", "z": "f9eff8535747992a", "name": "Channel Update", "links": [ "90d9f9f778dfea84" ], "x": 985, "y": 700, "wires": [ [ "7822bd853ff32202" ] ] }, { "id": "e3a2b757bc7b4f00", "type": "debug", "z": "f9eff8535747992a", "name": "", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "false", "statusVal": "", "statusType": "auto", "x": 1290, "y": 700, "wires": [] }, { "id": "bf777e01107c8dad", "type": "function", "z": "f9eff8535747992a", "name": "Prediction Begin", "func": "const title = msg.payload.event.title;\nconst outcomes = msg.payload.event.outcomes;\nconst end = msg.payload.event.locks_at;\n\nreturn [{payload : title}, {payload : outcomes}, {payload : end}];", "outputs": 3, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 1110, "y": 750, "wires": [ [ "cf8eb778297937fe" ], [ "cf8eb778297937fe" ], [ "cf8eb778297937fe" ] ], "outputLabels": [ "Title", "Outcomes", "End" ] }, { "id": "02eff79de54243df", "type": "link in", "z": "f9eff8535747992a", "name": "Channel Update", "links": [ "956b7e15e56e3e6e" ], "x": 985, "y": 750, "wires": [ [ "bf777e01107c8dad" ] ] }, { "id": "cf8eb778297937fe", "type": "debug", "z": "f9eff8535747992a", "name": "", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "false", "statusVal": "", "statusType": "auto", "x": 1290, "y": 760, "wires": [] }, { "id": "31b7edc241da122b", "type": "function", "z": "f9eff8535747992a", "name": "Prediction Progress", "func": "const title = msg.payload.event.title;\nconst outcomes = msg.payload.event.outcomes;\nconst end = msg.payload.event.locks_at;\n\nreturn [{payload : title}, {payload : outcomes}, {payload : end}];", "outputs": 3, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 1120, "y": 810, "wires": [ [ "d3ae76bd5a99fe61" ], [ "d3ae76bd5a99fe61" ], [ "d3ae76bd5a99fe61" ] ], "outputLabels": [ "Title", "Outcomes", "End" ] }, { "id": "58059205d3b59963", "type": "link in", "z": "f9eff8535747992a", "name": "Channel Update", "links": [ "03c5d3303b39046e" ], "x": 985, "y": 810, "wires": [ [ "31b7edc241da122b" ] ] }, { "id": "d3ae76bd5a99fe61", "type": "debug", "z": "f9eff8535747992a", "name": "", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "false", "statusVal": "", "statusType": "auto", "x": 1300, "y": 810, "wires": [] }, { "id": "4ce638dd76c24bdb", "type": "function", "z": "f9eff8535747992a", "name": "Prediction End", "func": "const title = msg.payload.event.title;\nconst outcomes = msg.payload.event.outcomes;\n\nreturn [{payload : title}, {payload : outcomes}];", "outputs": 2, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 1110, "y": 860, "wires": [ [ "9438739a0d42032a" ], [ "9438739a0d42032a" ] ], "outputLabels": [ "Title", "Outcomes" ] }, { "id": "d8842a92a68f0e27", "type": "link in", "z": "f9eff8535747992a", "name": "Channel Update", "links": [ "8b358c8a79eba44f" ], "x": 985, "y": 860, "wires": [ [ "4ce638dd76c24bdb" ] ] }, { "id": "9438739a0d42032a", "type": "debug", "z": "f9eff8535747992a", "name": "", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "false", "statusVal": "", "statusType": "auto", "x": 1290, "y": 860, "wires": [] }, { "id": "ba962cb706960ca3", "type": "function", "z": "f9eff8535747992a", "name": "HypeTrain Begin", "func": "const total = msg.payload.event.total;\nconst progress = msg.payload.event.progress;\nconst goal = msg.payload.event.goal;\nconst top_contrib = msg.payload.event.top_contributions;\nconst last_contrib = msg.payload.event.last_contribution;\n\nreturn [{payload : total}, {payload : progress}, {payload : goal}, {payload : top_contrib}, {payload : last_contrib}];", "outputs": 5, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 1120, "y": 920, "wires": [ [ "bcf41039c5488aa0" ], [ "bcf41039c5488aa0" ], [ "bcf41039c5488aa0" ], [ "bcf41039c5488aa0" ], [ "bcf41039c5488aa0" ] ], "outputLabels": [ "Total", "Progress", "Goal", "Top contrib", "Last contrib" ] }, { "id": "3445992ddf31cb4e", "type": "link in", "z": "f9eff8535747992a", "name": "Channel Update", "links": [ "aa03c725061760dd" ], "x": 985, "y": 920, "wires": [ [ "ba962cb706960ca3" ] ] }, { "id": "bcf41039c5488aa0", "type": "debug", "z": "f9eff8535747992a", "name": "", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "false", "statusVal": "", "statusType": "auto", "x": 1310, "y": 920, "wires": [] }, { "id": "2082c62be84dcf16", "type": "function", "z": "f9eff8535747992a", "name": "HypeTrain Progress", "func": "const level = msg.payload.event.level;\nconst total = msg.payload.event.total;\nconst progress = msg.payload.event.progress;\nconst goal = msg.payload.event.goal;\nconst top_contrib = msg.payload.event.top_contributions;\nconst last_contrib = msg.payload.event.last_contribution;\n\nreturn [{payload : level}, {payload : total}, {payload : progress}, {payload : goal}, {payload : top_contrib}, {payload : last_contrib}];", "outputs": 6, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 1130, "y": 1010, "wires": [ [ "9f32750213a4f0c6" ], [ "9f32750213a4f0c6" ], [ "9f32750213a4f0c6" ], [ "9f32750213a4f0c6" ], [ "9f32750213a4f0c6" ], [ "9f32750213a4f0c6" ] ], "outputLabels": [ "Level", "Total", "Progress", "Goal", "Top contrib", "Last contrib" ] }, { "id": "1d7fb21bf35a91b8", "type": "link in", "z": "f9eff8535747992a", "name": "Channel Update", "links": [ "a3ee39814135cad2" ], "x": 985, "y": 1010, "wires": [ [ "2082c62be84dcf16" ] ] }, { "id": "9f32750213a4f0c6", "type": "debug", "z": "f9eff8535747992a", "name": "", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "false", "statusVal": "", "statusType": "auto", "x": 1340, "y": 1010, "wires": [] }, { "id": "65537eb9b8bb35b8", "type": "function", "z": "f9eff8535747992a", "name": "HyperTrain End", "func": "const level = msg.payload.event.level;\nconst total = msg.payload.event.total;\nconst top_contrib = msg.payload.event.top_contributions;\n\nreturn [{payload : level}, {payload : total}, {payload : top_contrib}];", "outputs": 3, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 1110, "y": 1090, "wires": [ [ "df791e577307e9f7" ], [ "df791e577307e9f7" ], [ "df791e577307e9f7" ] ], "outputLabels": [ "Level", "Total", "Top contrib" ] }, { "id": "c22851c0379367b6", "type": "link in", "z": "f9eff8535747992a", "name": "Channel Update", "links": [ "74a51ad373778ee6" ], "x": 985, "y": 1090, "wires": [ [ "65537eb9b8bb35b8" ] ] }, { "id": "df791e577307e9f7", "type": "debug", "z": "f9eff8535747992a", "name": "", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "false", "statusVal": "", "statusType": "auto", "x": 1310, "y": 1090, "wires": [] }, { "id": "4b779b18cfa18def", "type": "function", "z": "f9eff8535747992a", "g": "1d9e4b26a824022f", "name": "Fake Sub", "func": "msg.payload = {\n \"subscription\": {\n \"id\": \"f1c2a387-161a-49f9-a165-0f21d7a4e1c4\",\n \"type\": \"channel.subscribe\",\n \"version\": \"1\",\n \"status\": \"enabled\",\n \"cost\": 0,\n \"condition\": {\n \"broadcaster_user_id\": \"1337\"\n },\n \"transport\": {\n \"method\": \"webhook\",\n \"callback\": \"https://example.com/webhooks/callback\"\n },\n \"created_at\": \"2019-11-16T10:11:12.123Z\"\n },\n \"event\": {\n \"user_id\": \"1234\",\n \"user_login\": \"cool_user\",\n \"user_name\": \"Cool_User\",\n \"broadcaster_user_id\": \"1337\",\n \"broadcaster_user_login\": \"cooler_user\",\n \"broadcaster_user_name\": \"Cooler_User\",\n \"tier\": \"1000\",\n \"is_gift\": false\n }\n}\n\nreturn msg;", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 320, "y": 210, "wires": [ [ "c46892d6233c5391" ] ] }, { "id": "fee40a11987375da", "type": "function", "z": "f9eff8535747992a", "g": "1d9e4b26a824022f", "name": "Fake Follow", "func": "msg.payload = {\n \"subscription\": {\n \"id\": \"f1c2a387-161a-49f9-a165-0f21d7a4e1c4\",\n \"type\": \"channel.follow\",\n \"version\": \"1\",\n \"status\": \"enabled\",\n \"cost\": 0,\n \"condition\": {\n \"broadcaster_user_id\": \"1337\"\n },\n \"transport\": {\n \"method\": \"webhook\",\n \"callback\": \"https://example.com/webhooks/callback\"\n },\n \"created_at\": \"2019-11-16T10:11:12.123Z\"\n },\n \"event\": {\n \"user_id\": \"1234\",\n \"user_login\": \"cool_user\",\n \"user_name\": \"Cool_User\",\n \"broadcaster_user_id\": \"1337\",\n \"broadcaster_user_login\": \"cooler_user\",\n \"broadcaster_user_name\": \"Cooler_User\",\n \"followed_at\": \"2020-07-15T18:16:11.17106713Z\"\n }\n}\nreturn msg;", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 330, "y": 170, "wires": [ [ "c46892d6233c5391" ] ] }, { "id": "c46892d6233c5391", "type": "switch", "z": "f9eff8535747992a", "g": "1d9e4b26a824022f", "name": "", "property": "payload.subscription.type", "propertyType": "msg", "rules": [ { "t": "eq", "v": "channel.update", "vt": "str" }, { "t": "eq", "v": "channel.follow", "vt": "str" }, { "t": "eq", "v": "channel.subscribe", "vt": "str" }, { "t": "eq", "v": "channel.subscription.gift", "vt": "str" }, { "t": "eq", "v": "channel.subscription.message", "vt": "str" }, { "t": "eq", "v": "channel.cheer", "vt": "str" }, { "t": "eq", "v": "channel.raid", "vt": "str" }, { "t": "eq", "v": "channel.ban", "vt": "str" }, { "t": "eq", "v": "channel.unban", "vt": "str" }, { "t": "eq", "v": "channel.channel_points_custom_reward_redemption.add", "vt": "str" }, { "t": "eq", "v": "channel.poll.begin", "vt": "str" }, { "t": "eq", "v": "channel.poll.progress", "vt": "str" }, { "t": "eq", "v": "channel.poll.end", "vt": "str" }, { "t": "eq", "v": "channel.prediction.begin", "vt": "str" }, { "t": "eq", "v": "channel.prediction.progress", "vt": "str" }, { "t": "eq", "v": "channel.prediction.end", "vt": "str" }, { "t": "eq", "v": "channel.hype_train.begin", "vt": "str" }, { "t": "eq", "v": "channel.hype_train.progress", "vt": "str" }, { "t": "eq", "v": "channel.hype_train.end", "vt": "str" }, { "t": "eq", "v": "stream.online", "vt": "str" }, { "t": "eq", "v": "stream.offline", "vt": "str" } ], "checkall": "true", "repair": false, "outputs": 21, "x": 550, "y": 490, "wires": [ [ "d1c64ebc8a5feec9" ], [ "099c35a256887f74" ], [ "35d2b6f068729230" ], [ "66db194703a62045" ], [ "7008cac6ebd21511" ], [ "e1ed82cfe4ac1c7b" ], [ "8e64834c2e4ab9c6" ], [ "3e4196fcfe60dd91" ], [ "ec063c27cbdff5bc" ], [ "b97c23ba88296b1b" ], [ "f71de6f3f45ab546" ], [ "52f26835eeca107c" ], [ "90d9f9f778dfea84" ], [ "956b7e15e56e3e6e" ], [ "03c5d3303b39046e" ], [ "8b358c8a79eba44f" ], [ "aa03c725061760dd" ], [ "a3ee39814135cad2" ], [ "74a51ad373778ee6" ], [ "104b71d90f13b9fa" ], [ "07c0971dd23dd62d" ] ] }, { "id": "03f134a19d11f009", "type": "link in", "z": "f9eff8535747992a", "g": "1d9e4b26a824022f", "name": "Webhook Response", "links": [ "496beddfeba0baee" ], "x": 310, "y": 90, "wires": [ [ "c46892d6233c5391" ] ], "l": true }, { "id": "0e717f858b8d799c", "type": "function", "z": "f9eff8535747992a", "g": "1d9e4b26a824022f", "name": "Fake Update", "func": "msg.payload = {\n \"subscription\": {\n \"id\": \"f1c2a387-161a-49f9-a165-0f21d7a4e1c4\",\n \"type\": \"channel.update\",\n \"version\": \"1\",\n \"status\": \"enabled\",\n \"cost\": 0,\n \"condition\": {\n \"broadcaster_user_id\": \"1337\"\n },\n \"transport\": {\n \"method\": \"webhook\",\n \"callback\": \"https://example.com/webhooks/callback\"\n },\n \"created_at\": \"2019-11-16T10:11:12.123Z\"\n },\n \"event\": {\n \"broadcaster_user_id\": \"1337\",\n \"broadcaster_user_login\": \"cool_user\",\n \"broadcaster_user_name\": \"Cool_User\",\n \"title\": \"Best Stream Ever\",\n \"language\": \"en\",\n \"category_id\": \"21779\",\n \"category_name\": \"Fortnite\",\n \"is_mature\": false\n }\n}\nreturn msg;", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 330, "y": 130, "wires": [ [ "c46892d6233c5391" ] ] }, { "id": "bd60cc12bad786d6", "type": "inject", "z": "f9eff8535747992a", "g": "1d9e4b26a824022f", "name": "Inject", "props": [ { "p": "payload" }, { "p": "topic", "vt": "str" } ], "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "", "payloadType": "date", "x": 160, "y": 130, "wires": [ [ "0e717f858b8d799c" ] ] }, { "id": "d1c64ebc8a5feec9", "type": "link out", "z": "f9eff8535747992a", "g": "1d9e4b26a824022f", "name": "Channel Update OUT", "links": [ "3c5392d536a6758c" ], "x": 760, "y": 130, "wires": [], "l": true }, { "id": "099c35a256887f74", "type": "link out", "z": "f9eff8535747992a", "g": "1d9e4b26a824022f", "name": "Follower OUT", "links": [ "e3fdefc8024d75a1" ], "x": 740, "y": 170, "wires": [], "l": true }, { "id": "35d2b6f068729230", "type": "link out", "z": "f9eff8535747992a", "g": "1d9e4b26a824022f", "name": "Subscriber OUT", "links": [ "46a3a69959ede421", "f29e0798f7657a80", "56eb628ad3cecd79", "e48379b1b04cd476" ], "x": 740, "y": 210, "wires": [], "l": true }, { "id": "9f4b9459d55f954b", "type": "inject", "z": "f9eff8535747992a", "g": "1d9e4b26a824022f", "name": "Inject", "props": [ { "p": "payload" }, { "p": "topic", "vt": "str" } ], "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "", "payloadType": "date", "x": 160, "y": 170, "wires": [ [ "fee40a11987375da" ] ] }, { "id": "d6b5f07cf744a7b2", "type": "inject", "z": "f9eff8535747992a", "g": "1d9e4b26a824022f", "name": "Inject", "props": [ { "p": "payload" }, { "p": "topic", "vt": "str" } ], "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "", "payloadType": "date", "x": 160, "y": 210, "wires": [ [ "4b779b18cfa18def" ] ] }, { "id": "66db194703a62045", "type": "link out", "z": "f9eff8535747992a", "g": "1d9e4b26a824022f", "name": " SubGift OUT", "links": [ "bc942504e9d6822a" ], "x": 730, "y": 250, "wires": [], "l": true }, { "id": "789b0a1d5d87ac36", "type": "inject", "z": "f9eff8535747992a", "g": "1d9e4b26a824022f", "name": "Inject", "props": [ { "p": "payload" }, { "p": "topic", "vt": "str" } ], "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "", "payloadType": "date", "x": 160, "y": 250, "wires": [ [ "74325974cbdc5c90" ] ] }, { "id": "74325974cbdc5c90", "type": "function", "z": "f9eff8535747992a", "g": "1d9e4b26a824022f", "name": "Fake SubGift", "func": "msg.payload ={\n \"subscription\": {\n \"id\": \"f1c2a387-161a-49f9-a165-0f21d7a4e1c4\",\n \"type\": \"channel.subscription.gift\",\n \"version\": \"1\",\n \"status\": \"enabled\",\n \"cost\": 0,\n \"condition\": {\n \"broadcaster_user_id\": \"1337\"\n },\n \"transport\": {\n \"method\": \"webhook\",\n \"callback\": \"https://example.com/webhooks/callback\"\n },\n \"created_at\": \"2019-11-16T10:11:12.123Z\"\n },\n \"event\": {\n \"user_id\": \"1234\",\n \"user_login\": \"cool_user\",\n \"user_name\": \"Cool_User\",\n \"broadcaster_user_id\": \"1337\",\n \"broadcaster_user_login\": \"cooler_user\",\n \"broadcaster_user_name\": \"Cooler_User\",\n \"total\": 2,\n \"tier\": \"1000\",\n \"cumulative_total\": 284, //null if anonymous or not shared by the user\n \"is_anonymous\": false\n }\n}\n\nreturn msg;", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 330, "y": 250, "wires": [ [ "c46892d6233c5391" ] ] }, { "id": "353f3049743bafc3", "type": "inject", "z": "f9eff8535747992a", "g": "1d9e4b26a824022f", "name": "Inject", "props": [ { "p": "payload" }, { "p": "topic", "vt": "str" } ], "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "", "payloadType": "date", "x": 160, "y": 330, "wires": [ [ "85deb0b591c10ce6" ] ] }, { "id": "85deb0b591c10ce6", "type": "function", "z": "f9eff8535747992a", "g": "1d9e4b26a824022f", "name": "Fake Bits", "func": "msg.payload ={\n \"subscription\": {\n \"id\": \"f1c2a387-161a-49f9-a165-0f21d7a4e1c4\",\n \"type\": \"channel.cheer\",\n \"version\": \"1\",\n \"status\": \"enabled\",\n \"cost\": 0,\n \"condition\": {\n \"broadcaster_user_id\": \"1337\"\n },\n \"transport\": {\n \"method\": \"webhook\",\n \"callback\": \"https://example.com/webhooks/callback\"\n },\n \"created_at\": \"2019-11-16T10:11:12.123Z\"\n },\n \"event\": {\n \"is_anonymous\": false,\n \"user_id\": \"1234\", // null if is_anonymous=true\n \"user_login\": \"cool_user\", // null if is_anonymous=true\n \"user_name\": \"Cool_User\", // null if is_anonymous=true\n \"broadcaster_user_id\": \"1337\",\n \"broadcaster_user_login\": \"cooler_user\",\n \"broadcaster_user_name\": \"Cooler_User\",\n \"message\": \"pogchamp\",\n \"bits\": 1000\n }\n}\n\nreturn msg;", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 320, "y": 330, "wires": [ [ "c46892d6233c5391" ] ] }, { "id": "e1ed82cfe4ac1c7b", "type": "link out", "z": "f9eff8535747992a", "g": "1d9e4b26a824022f", "name": " Bits OUT", "links": [ "674ee05d36a01381" ], "x": 720, "y": 330, "wires": [], "l": true }, { "id": "dd04e54715766887", "type": "inject", "z": "f9eff8535747992a", "g": "1d9e4b26a824022f", "name": "Inject", "props": [ { "p": "payload" }, { "p": "topic", "vt": "str" } ], "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "", "payloadType": "date", "x": 160, "y": 290, "wires": [ [ "a69ac429f7a89027" ] ] }, { "id": "a69ac429f7a89027", "type": "function", "z": "f9eff8535747992a", "g": "1d9e4b26a824022f", "name": "Fake Sub Message", "func": "msg.payload ={\n \"subscription\": {\n \"id\": \"f1c2a387-161a-49f9-a165-0f21d7a4e1c4\",\n \"type\": \"channel.subscription.message\",\n \"version\": \"1\",\n \"status\": \"enabled\",\n \"cost\": 0,\n \"condition\": {\n \"broadcaster_user_id\": \"1337\"\n },\n \"transport\": {\n \"method\": \"webhook\",\n \"callback\": \"https://example.com/webhooks/callback\"\n },\n \"created_at\": \"2019-11-16T10:11:12.123Z\"\n },\n \"event\": {\n \"user_id\": \"1234\",\n \"user_login\": \"cool_user\",\n \"user_name\": \"Cool_User\",\n \"broadcaster_user_id\": \"1337\",\n \"broadcaster_user_login\": \"cooler_user\",\n \"broadcaster_user_name\": \"Cooler_User\",\n \"tier\": \"1000\",\n \"message\": {\n \"text\": \"Love the stream! FevziGG\",\n \"emotes\": [\n {\n \"begin\": 23,\n \"end\": 30,\n \"id\": \"302976485\"\n }\n ]\n },\n \"cumulative_months\": 15,\n \"streak_months\": 1, // null if not shared\n \"duration_months\": 6\n }\n}\n\nreturn msg;", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 350, "y": 290, "wires": [ [ "c46892d6233c5391" ] ] }, { "id": "7008cac6ebd21511", "type": "link out", "z": "f9eff8535747992a", "g": "1d9e4b26a824022f", "name": "SubMessage OUT", "links": [ "f436b7331bd9609b" ], "x": 750, "y": 290, "wires": [], "l": true }, { "id": "4f3290f9114221db", "type": "inject", "z": "f9eff8535747992a", "g": "1d9e4b26a824022f", "name": "Inject", "props": [ { "p": "payload" }, { "p": "topic", "vt": "str" } ], "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "", "payloadType": "date", "x": 160, "y": 370, "wires": [ [ "442489b5937e9783" ] ] }, { "id": "442489b5937e9783", "type": "function", "z": "f9eff8535747992a", "g": "1d9e4b26a824022f", "name": "Fake Raid", "func": "msg.payload ={\n \"subscription\": {\n \"id\": \"f1c2a387-161a-49f9-a165-0f21d7a4e1c4\",\n \"type\": \"channel.raid\",\n \"version\": \"1\",\n \"status\": \"enabled\",\n \"cost\": 0,\n \"condition\": {\n \"to_broadcaster_user_id\": \"1337\"\n },\n \"transport\": {\n \"method\": \"webhook\",\n \"callback\": \"https://example.com/webhooks/callback\"\n },\n \"created_at\": \"2019-11-16T10:11:12.123Z\"\n },\n \"event\": {\n \"from_broadcaster_user_id\": \"1234\",\n \"from_broadcaster_user_login\": \"cool_user\",\n \"from_broadcaster_user_name\": \"Cool_User\",\n \"to_broadcaster_user_id\": \"1337\",\n \"to_broadcaster_user_login\": \"cooler_user\",\n \"to_broadcaster_user_name\": \"Cooler_User\",\n \"viewers\": 9001\n }\n}\n\nreturn msg;", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 330, "y": 370, "wires": [ [ "c46892d6233c5391" ] ] }, { "id": "8e64834c2e4ab9c6", "type": "link out", "z": "f9eff8535747992a", "g": "1d9e4b26a824022f", "name": " Raid OUT", "links": [ "6c6457495d5b73d4" ], "x": 720, "y": 370, "wires": [], "l": true }, { "id": "14246c59203bf325", "type": "inject", "z": "f9eff8535747992a", "g": "1d9e4b26a824022f", "name": "Inject", "props": [ { "p": "payload" }, { "p": "topic", "vt": "str" } ], "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "", "payloadType": "date", "x": 160, "y": 450, "wires": [ [ "f76ce5c449b39ec1" ] ] }, { "id": "f76ce5c449b39ec1", "type": "function", "z": "f9eff8535747992a", "g": "1d9e4b26a824022f", "name": "Fake Unban", "func": "msg.payload ={\n \"subscription\": {\n \"id\": \"f1c2a387-161a-49f9-a165-0f21d7a4e1c4\",\n \"type\": \"channel.unban\",\n \"version\": \"1\",\n \"status\": \"enabled\",\n \"cost\": 0,\n \"condition\": {\n \"broadcaster_user_id\": \"1337\"\n },\n \"transport\": {\n \"method\": \"webhook\",\n \"callback\": \"https://example.com/webhooks/callback\"\n },\n \"created_at\": \"2019-11-16T10:11:12.123Z\"\n },\n \"event\": {\n \"user_id\": \"1234\",\n \"user_login\": \"cool_user\",\n \"user_name\": \"Cool_User\",\n \"broadcaster_user_id\": \"1337\",\n \"broadcaster_user_login\": \"cooler_user\",\n \"broadcaster_user_name\": \"Cooler_User\",\n \"moderator_user_id\": \"1339\",\n \"moderator_user_login\": \"mod_user\",\n \"moderator_user_name\": \"Mod_User\"\n }\n}\n\nreturn msg;", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 330, "y": 450, "wires": [ [ "c46892d6233c5391" ] ] }, { "id": "ec063c27cbdff5bc", "type": "link out", "z": "f9eff8535747992a", "g": "1d9e4b26a824022f", "name": " Unban OUT", "links": [ "e7138cd2dc73b8c0" ], "x": 730, "y": 450, "wires": [], "l": true }, { "id": "fc172da139ae610c", "type": "inject", "z": "f9eff8535747992a", "g": "1d9e4b26a824022f", "name": "Inject", "props": [ { "p": "payload" }, { "p": "topic", "vt": "str" } ], "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "", "payloadType": "date", "x": 160, "y": 410, "wires": [ [ "09ca04c0b1964ea9" ] ] }, { "id": "09ca04c0b1964ea9", "type": "function", "z": "f9eff8535747992a", "g": "1d9e4b26a824022f", "name": "Fake Ban", "func": "msg.payload ={\n \"subscription\": {\n \"id\": \"f1c2a387-161a-49f9-a165-0f21d7a4e1c4\",\n \"type\": \"channel.ban\",\n \"version\": \"1\",\n \"status\": \"enabled\",\n \"cost\": 0,\n \"condition\": {\n \"broadcaster_user_id\": \"1337\"\n },\n \"transport\": {\n \"method\": \"webhook\",\n \"callback\": \"https://example.com/webhooks/callback\"\n },\n \"created_at\": \"2019-11-16T10:11:12.123Z\"\n },\n \"event\": {\n \"user_id\": \"1234\",\n \"user_login\": \"cool_user\",\n \"user_name\": \"Cool_User\",\n \"broadcaster_user_id\": \"1337\",\n \"broadcaster_user_login\": \"cooler_user\",\n \"broadcaster_user_name\": \"Cooler_User\",\n \"moderator_user_id\": \"1339\",\n \"moderator_user_login\": \"mod_user\",\n \"moderator_user_name\": \"Mod_User\",\n \"reason\": \"Offensive language\",\n \"ends_at\": \"2020-07-15T18:16:11.17106713Z\",\n \"is_permanent\": false\n }\n}\n\nreturn msg;", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 320, "y": 410, "wires": [ [ "c46892d6233c5391" ] ] }, { "id": "3e4196fcfe60dd91", "type": "link out", "z": "f9eff8535747992a", "g": "1d9e4b26a824022f", "name": "Ban OUT", "links": [ "46a44352c8d66e56" ], "x": 720, "y": 410, "wires": [], "l": true }, { "id": "904fead80acf0883", "type": "inject", "z": "f9eff8535747992a", "g": "1d9e4b26a824022f", "name": "Inject", "props": [ { "p": "payload" }, { "p": "topic", "vt": "str" } ], "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "", "payloadType": "date", "x": 160, "y": 490, "wires": [ [ "57835b0e8181dc56" ] ] }, { "id": "57835b0e8181dc56", "type": "function", "z": "f9eff8535747992a", "g": "1d9e4b26a824022f", "name": "Fake Channel point", "func": "msg.payload ={\n \"subscription\": {\n \"id\": \"f1c2a387-161a-49f9-a165-0f21d7a4e1c4\",\n \"type\": \"channel.channel_points_custom_reward_redemption.add\",\n \"version\": \"1\",\n \"status\": \"enabled\",\n \"cost\": 0,\n \"condition\": {\n \"broadcaster_user_id\": \"1337\"\n },\n \"transport\": {\n \"method\": \"webhook\",\n \"callback\": \"https://example.com/webhooks/callback\"\n },\n \"created_at\": \"2019-11-16T10:11:12.123Z\"\n },\n \"event\": {\n \"id\": \"1234\",\n \"broadcaster_user_id\": \"1337\",\n \"broadcaster_user_login\": \"cool_user\",\n \"broadcaster_user_name\": \"Cool_User\",\n \"user_id\": \"9001\",\n \"user_login\": \"cooler_user\",\n \"user_name\": \"Cooler_User\",\n \"user_input\": \"pogchamp\",\n \"status\": \"unfulfilled\",\n \"reward\": {\n \"id\": \"9001\",\n \"title\": \"title\",\n \"cost\": 100,\n \"prompt\": \"reward prompt\"\n },\n \"redeemed_at\": \"2020-07-15T17:16:03.17106713Z\"\n }\n}\n\nreturn msg;", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 350, "y": 490, "wires": [ [ "c46892d6233c5391" ] ] }, { "id": "b97c23ba88296b1b", "type": "link out", "z": "f9eff8535747992a", "g": "1d9e4b26a824022f", "name": "Channel point OUT", "links": [ "2720e13c28d5f2a6", "855f17e48633f9cb" ], "x": 750, "y": 490, "wires": [], "l": true }, { "id": "b4c1b467be768e4a", "type": "inject", "z": "f9eff8535747992a", "g": "1d9e4b26a824022f", "name": "Inject", "props": [ { "p": "payload" }, { "p": "topic", "vt": "str" } ], "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "", "payloadType": "date", "x": 160, "y": 610, "wires": [ [ "76a3218918c97560" ] ] }, { "id": "76a3218918c97560", "type": "function", "z": "f9eff8535747992a", "g": "1d9e4b26a824022f", "name": "Fake Poll end", "func": "msg.payload ={\n \"subscription\": {\n \"id\": \"f1c2a387-161a-49f9-a165-0f21d7a4e1c4\",\n \"type\": \"channel.poll.end\",\n \"version\": \"1\",\n \"status\": \"enabled\",\n \"cost\": 0,\n \"condition\": {\n \"broadcaster_user_id\": \"1337\"\n },\n \"transport\": {\n \"method\": \"webhook\",\n \"callback\": \"https://example.com/webhooks/callback\"\n },\n \"created_at\": \"2019-11-16T10:11:12.123Z\"\n },\n \"event\": {\n \"id\": \"1243456\",\n \"broadcaster_user_id\": \"1337\",\n \"broadcaster_user_login\": \"cool_user\",\n \"broadcaster_user_name\": \"Cool_User\",\n \"title\": \"Aren’t shoes just really hard socks?\",\n \"choices\": [\n {\"id\": \"123\", \"title\": \"Blue\", \"bits_votes\": 50, \"channel_points_votes\": 70, \"votes\": 120},\n {\"id\": \"124\", \"title\": \"Yellow\", \"bits_votes\": 100, \"channel_points_votes\": 40, \"votes\": 140},\n {\"id\": \"125\", \"title\": \"Green\", \"bits_votes\": 10, \"channel_points_votes\": 70, \"votes\": 80}\n ],\n \"bits_voting\": {\n \"is_enabled\": true,\n \"amount_per_vote\": 10\n },\n \"channel_points_voting\": {\n \"is_enabled\": true,\n \"amount_per_vote\": 10\n },\n \"status\": \"completed\",\n \"started_at\": \"2020-07-15T17:16:03.17106713Z\",\n \"ended_at\": \"2020-07-15T17:16:11.17106713Z\"\n }\n}\n\nreturn msg;", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 340, "y": 610, "wires": [ [ "c46892d6233c5391" ] ] }, { "id": "90d9f9f778dfea84", "type": "link out", "z": "f9eff8535747992a", "g": "1d9e4b26a824022f", "name": "Poll End OUT", "links": [ "440ca17ff1420dfe" ], "x": 740, "y": 610, "wires": [], "l": true }, { "id": "1b82f3fefef1c56c", "type": "inject", "z": "f9eff8535747992a", "g": "1d9e4b26a824022f", "name": "Inject", "props": [ { "p": "payload" }, { "p": "topic", "vt": "str" } ], "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "", "payloadType": "date", "x": 160, "y": 530, "wires": [ [ "427e0239f95d69ba" ] ] }, { "id": "427e0239f95d69ba", "type": "function", "z": "f9eff8535747992a", "g": "1d9e4b26a824022f", "name": "Fake Poll Begin", "func": "msg.payload ={\n \"subscription\": {\n \"id\": \"f1c2a387-161a-49f9-a165-0f21d7a4e1c4\",\n \"type\": \"channel.poll.begin\",\n \"version\": \"1\",\n \"status\": \"enabled\",\n \"cost\": 0,\n \"condition\": {\n \"broadcaster_user_id\": \"1337\"\n },\n \"transport\": {\n \"method\": \"webhook\",\n \"callback\": \"https://example.com/webhooks/callback\"\n },\n \"created_at\": \"2019-11-16T10:11:12.123Z\"\n },\n \"event\": {\n \"id\": \"1243456\",\n \"broadcaster_user_id\": \"1337\",\n \"broadcaster_user_login\": \"cool_user\",\n \"broadcaster_user_name\": \"Cool_User\",\n \"title\": \"Aren’t shoes just really hard socks?\",\n \"choices\": [\n {\"id\": \"123\", \"title\": \"Yeah!\"},\n {\"id\": \"124\", \"title\": \"No!\"},\n {\"id\": \"125\", \"title\": \"Maybe!\"}\n ],\n \"bits_voting\": {\n \"is_enabled\": true,\n \"amount_per_vote\": 10\n },\n \"channel_points_voting\": {\n \"is_enabled\": true,\n \"amount_per_vote\": 10\n },\n \"started_at\": \"2020-07-15T17:16:03.17106713Z\",\n \"ends_at\": \"2020-07-15T17:16:08.17106713Z\"\n }\n}\n\nreturn msg;", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 340, "y": 530, "wires": [ [ "c46892d6233c5391" ] ] }, { "id": "f71de6f3f45ab546", "type": "link out", "z": "f9eff8535747992a", "g": "1d9e4b26a824022f", "name": "Poll Begin OUT", "links": [ "c977fc48940eaa1f" ], "x": 740, "y": 530, "wires": [], "l": true }, { "id": "aafeca1840745c1a", "type": "inject", "z": "f9eff8535747992a", "g": "1d9e4b26a824022f", "name": "Inject", "props": [ { "p": "payload" }, { "p": "topic", "vt": "str" } ], "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "", "payloadType": "date", "x": 160, "y": 650, "wires": [ [ "641360867f4299e0" ] ] }, { "id": "641360867f4299e0", "type": "function", "z": "f9eff8535747992a", "g": "1d9e4b26a824022f", "name": "Fake Prediction Begin", "func": "msg.payload ={\n \"subscription\": {\n \"id\": \"f1c2a387-161a-49f9-a165-0f21d7a4e1c4\",\n \"type\": \"channel.prediction.begin\",\n \"version\": \"1\",\n \"status\": \"enabled\",\n \"cost\": 0,\n \"condition\": {\n \"broadcaster_user_id\": \"1337\"\n },\n \"transport\": {\n \"method\": \"webhook\",\n \"callback\": \"https://example.com/webhooks/callback\"\n },\n \"created_at\": \"2019-11-16T10:11:12.123Z\"\n },\n \"event\": {\n \"id\": \"1243456\",\n \"broadcaster_user_id\": \"1337\",\n \"broadcaster_user_login\": \"cool_user\",\n \"broadcaster_user_name\": \"Cool_User\",\n \"title\": \"Aren’t shoes just really hard socks?\",\n \"outcomes\": [\n {\"id\": \"1243456\", \"title\": \"Yeah!\", \"color\": \"blue\"},\n {\"id\": \"2243456\", \"title\": \"No!\", \"color\": \"pink\"},\n ],\n \"started_at\": \"2020-07-15T17:16:03.17106713Z\",\n \"locks_at\": \"2020-07-15T17:21:03.17106713Z\"\n }\n}\n\nreturn msg;", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 360, "y": 650, "wires": [ [ "c46892d6233c5391" ] ] }, { "id": "956b7e15e56e3e6e", "type": "link out", "z": "f9eff8535747992a", "g": "1d9e4b26a824022f", "name": " Prediction Begin OUT", "links": [ "02eff79de54243df" ], "x": 760, "y": 650, "wires": [], "l": true }, { "id": "2557738c1c37389e", "type": "inject", "z": "f9eff8535747992a", "g": "1d9e4b26a824022f", "name": "Inject", "props": [ { "p": "payload" }, { "p": "topic", "vt": "str" } ], "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "", "payloadType": "date", "x": 160, "y": 770, "wires": [ [ "976a5ddd48218c96" ] ] }, { "id": "976a5ddd48218c96", "type": "function", "z": "f9eff8535747992a", "g": "1d9e4b26a824022f", "name": "Fake HypeTrain Begin", "func": "msg.payload ={\n \"subscription\": {\n \"id\": \"f1c2a387-161a-49f9-a165-0f21d7a4e1c4\",\n \"type\": \"channel.hype_train.begin\",\n \"version\": \"1\",\n \"status\": \"enabled\",\n \"cost\": 0,\n \"condition\": {\n \"broadcaster_user_id\": \"1337\"\n },\n \"transport\": {\n \"method\": \"webhook\",\n \"callback\": \"https://example.com/webhooks/callback\"\n },\n \"created_at\": \"2019-11-16T10:11:12.123Z\"\n },\n \"event\": {\n \"id\": \"1b0AsbInCHZW2SQFQkCzqN07Ib2\",\n \"broadcaster_user_id\": \"1337\",\n \"broadcaster_user_login\": \"cool_user\",\n \"broadcaster_user_name\": \"Cool_User\",\n \"total\": 137,\n \"progress\": 137,\n \"goal\": 500,\n \"top_contributions\": [\n { \"user_id\": \"123\", \"user_login\": \"pogchamp\", \"user_name\": \"PogChamp\", \"type\": \"bits\", \"total\": 50 },\n { \"user_id\": \"456\", \"user_login\": \"kappa\", \"user_name\": \"Kappa\", \"type\": \"subscription\", \"total\": 45 }\n ],\n \"last_contribution\": { \"user_id\": \"123\", \"user_login\": \"pogchamp\", \"user_name\": \"PogChamp\", \"type\": \"bits\", \"total\": 50 },\n \"started_at\": \"2020-07-15T17:16:03.17106713Z\",\n \"expires_at\": \"2020-07-15T17:16:11.17106713Z\"\n }\n}\n\nreturn msg;", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 360, "y": 770, "wires": [ [ "c46892d6233c5391" ] ] }, { "id": "aa03c725061760dd", "type": "link out", "z": "f9eff8535747992a", "g": "1d9e4b26a824022f", "name": "HypeTrain Begin OUT", "links": [ "3445992ddf31cb4e" ], "x": 760, "y": 770, "wires": [], "l": true }, { "id": "c936ce23cdc37428", "type": "inject", "z": "f9eff8535747992a", "g": "1d9e4b26a824022f", "name": "Inject", "props": [ { "p": "payload" }, { "p": "topic", "vt": "str" } ], "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "", "payloadType": "date", "x": 160, "y": 730, "wires": [ [ "7cb22ecd302d5fe5" ] ] }, { "id": "7cb22ecd302d5fe5", "type": "function", "z": "f9eff8535747992a", "g": "1d9e4b26a824022f", "name": "Fake Prediction End", "func": "msg.payload ={\n \"subscription\": {\n \"id\": \"f1c2a387-161a-49f9-a165-0f21d7a4e1c4\",\n \"type\": \"channel.prediction.end\",\n \"version\": \"1\",\n \"status\": \"enabled\",\n \"cost\": 0,\n \"condition\": {\n \"broadcaster_user_id\": \"1337\"\n },\n \"transport\": {\n \"method\": \"webhook\",\n \"callback\": \"https://example.com/webhooks/callback\"\n },\n \"created_at\": \"2019-11-16T10:11:12.123Z\"\n },\n \"event\": {\n \"id\": \"1243456\",\n \"broadcaster_user_id\": \"1337\",\n \"broadcaster_user_login\": \"cool_user\",\n \"broadcaster_user_name\": \"Cool_User\",\n \"title\": \"Aren’t shoes just really hard socks?\",\n \"winning_outcome_id\": \"12345\",\n \"outcomes\": [\n {\n \"id\": \"12345\",\n \"title\": \"Yeah!\",\n \"color\": \"blue\", // can be blue or pink\n \"users\": 2,\n \"channel_points\": 15000,\n \"top_predictors\": [ // contains up to 10 users\n {\n \"user_name\": \"Cool_User\",\n \"user_login\": \"cool_user\",\n \"user_id\": \"1234\",\n \"channel_points_won\": 10000,\n \"channel_points_used\": 500\n },\n {\n \"user_name\": \"Coolest_User\",\n \"user_login\": \"coolest_user\",\n \"user_id\": \"1236\",\n \"channel_points_won\": 5000,\n \"channel_points_used\": 100\n },\n ]\n },\n {\n \"id\": \"22435\",\n \"title\": \"No!\",\n \"users\": 2,\n \"channel_points\": 200,\n \"color\": \"pink\",\n \"top_predictors\": [\n {\n \"user_name\": \"Cooler_User\",\n \"user_login\": \"cooler_user\",\n \"user_id\": 12345,\n \"channel_points_won\": null, // null if result is refund or loss\n \"channel_points_used\": 100\n },\n {\n \"user_name\": \"Elite_User\",\n \"user_login\": \"elite_user\",\n \"user_id\": 1337,\n \"channel_points_won\": null, // null if result is refund or loss\n \"channel_points_used\": 100\n }\n ]\n }\n ],\n \"status\": \"resolved\", // valid values: resolved, canceled\n \"started_at\": \"2020-07-15T17:16:03.17106713Z\",\n \"ended_at\": \"2020-07-15T17:16:11.17106713Z\"\n }\n}\n\nreturn msg;", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 360, "y": 730, "wires": [ [ "c46892d6233c5391" ] ] }, { "id": "8b358c8a79eba44f", "type": "link out", "z": "f9eff8535747992a", "g": "1d9e4b26a824022f", "name": "Prediction End OUT", "links": [ "d8842a92a68f0e27" ], "x": 760, "y": 730, "wires": [], "l": true }, { "id": "e2e09ba8297e6c08", "type": "inject", "z": "f9eff8535747992a", "g": "1d9e4b26a824022f", "name": "Inject", "props": [ { "p": "payload" }, { "p": "topic", "vt": "str" } ], "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "", "payloadType": "date", "x": 160, "y": 850, "wires": [ [ "91a14548331e78ff" ] ] }, { "id": "91a14548331e78ff", "type": "function", "z": "f9eff8535747992a", "g": "1d9e4b26a824022f", "name": "Fake HypeTrain End", "func": "msg.payload ={\n \"subscription\": {\n \"id\": \"f1c2a387-161a-49f9-a165-0f21d7a4e1c4\",\n \"type\": \"channel.hype_train.end\",\n \"version\": \"1\",\n \"status\": \"enabled\",\n \"cost\": 0,\n \"condition\": {\n \"broadcaster_user_id\": \"1337\"\n },\n \"transport\": {\n \"method\": \"webhook\",\n \"callback\": \"https://example.com/webhooks/callback\"\n },\n \"created_at\": \"2019-11-16T10:11:12.123Z\"\n },\n \"event\": {\n \"id\": \"1b0AsbInCHZW2SQFQkCzqN07Ib2\",\n \"broadcaster_user_id\": \"1337\",\n \"broadcaster_user_login\": \"cool_user\",\n \"broadcaster_user_name\": \"Cool_User\",\n \"level\": 2,\n \"total\": 137,\n \"top_contributions\": [\n { \"user_id\": \"123\", \"user_login\": \"pogchamp\", \"user_name\": \"PogChamp\", \"type\": \"bits\", \"total\": 50 },\n { \"user_id\": \"456\", \"user_login\": \"kappa\", \"user_name\": \"Kappa\", \"type\": \"subscription\", \"total\": 45 }\n ],\n \"started_at\": \"2020-07-15T17:16:03.17106713Z\",\n \"ended_at\": \"2020-07-15T17:16:11.17106713Z\",\n \"cooldown_ends_at\": \"2020-07-15T18:16:11.17106713Z\"\n }\n}\n\nreturn msg;", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 360, "y": 850, "wires": [ [ "c46892d6233c5391" ] ] }, { "id": "74a51ad373778ee6", "type": "link out", "z": "f9eff8535747992a", "g": "1d9e4b26a824022f", "name": "HypeTrain End OUT", "links": [ "c22851c0379367b6" ], "x": 760, "y": 850, "wires": [], "l": true }, { "id": "cb0ba07aa871111a", "type": "inject", "z": "f9eff8535747992a", "g": "1d9e4b26a824022f", "name": "Inject", "props": [ { "p": "payload" }, { "p": "topic", "vt": "str" } ], "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "", "payloadType": "date", "x": 160, "y": 890, "wires": [ [ "e8239ae110070f53" ] ] }, { "id": "e8239ae110070f53", "type": "function", "z": "f9eff8535747992a", "g": "1d9e4b26a824022f", "name": "Fake Stream Online", "func": "msg.payload ={\n \"subscription\": {\n \"id\": \"f1c2a387-161a-49f9-a165-0f21d7a4e1c4\",\n \"type\": \"stream.online\",\n \"version\": \"1\",\n \"status\": \"enabled\",\n \"cost\": 0,\n \"condition\": {\n \"broadcaster_user_id\": \"1337\"\n },\n \"transport\": {\n \"method\": \"webhook\",\n \"callback\": \"https://example.com/webhooks/callback\"\n },\n \"created_at\": \"2019-11-16T10:11:12.123Z\"\n },\n \"event\": {\n \"id\": \"9001\",\n \"broadcaster_user_id\": \"1337\",\n \"broadcaster_user_login\": \"cool_user\",\n \"broadcaster_user_name\": \"Cool_User\",\n \"type\": \"live\",\n \"started_at\": \"2020-10-11T10:11:12.123Z\"\n }\n}\n\nreturn msg;", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 360, "y": 890, "wires": [ [ "c46892d6233c5391" ] ] }, { "id": "104b71d90f13b9fa", "type": "link out", "z": "f9eff8535747992a", "g": "1d9e4b26a824022f", "name": "Stream Online OUT", "links": [ "444252717fbfd856" ], "x": 750, "y": 890, "wires": [], "l": true }, { "id": "3b489bf1f69ab04e", "type": "inject", "z": "f9eff8535747992a", "g": "1d9e4b26a824022f", "name": "Inject", "props": [ { "p": "payload" }, { "p": "topic", "vt": "str" } ], "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "", "payloadType": "date", "x": 160, "y": 810, "wires": [ [ "e158862b2ad9e355" ] ] }, { "id": "e158862b2ad9e355", "type": "function", "z": "f9eff8535747992a", "g": "1d9e4b26a824022f", "name": "Fake HypeTrainProgress", "func": "msg.payload ={\n \"subscription\": {\n \"id\": \"f1c2a387-161a-49f9-a165-0f21d7a4e1c4\",\n \"type\": \"channel.hype_train.progress\",\n \"version\": \"1\",\n \"status\": \"enabled\",\n \"cost\": 0,\n \"condition\": {\n \"broadcaster_user_id\": \"1337\"\n },\n \"transport\": {\n \"method\": \"webhook\",\n \"callback\": \"https://example.com/webhooks/callback\"\n },\n \"created_at\": \"2019-11-16T10:11:12.123Z\"\n },\n \"event\": {\n \"id\": \"1b0AsbInCHZW2SQFQkCzqN07Ib2\",\n \"broadcaster_user_id\": \"1337\",\n \"broadcaster_user_login\": \"cool_user\",\n \"broadcaster_user_name\": \"Cool_User\",\n \"level\": 2,\n \"total\": 700,\n \"progress\": 200,\n \"goal\": 1000,\n \"top_contributions\": [\n { \"user_id\": \"123\", \"user_login\": \"pogchamp\", \"user_name\": \"PogChamp\", \"type\": \"bits\", \"total\": 50 },\n { \"user_id\": \"456\", \"user_login\": \"kappa\", \"user_name\": \"Kappa\", \"type\": \"subscription\", \"total\": 45 }\n ],\n \"last_contribution\": { \"user_id\": \"123\", \"user_login\": \"pogchamp\", \"user_name\": \"PogChamp\", \"type\": \"bits\", \"total\": 50 },\n \"started_at\": \"2020-07-15T17:16:03.17106713Z\",\n \"expires_at\": \"2020-07-15T17:16:11.17106713Z\"\n }\n}\n\nreturn msg;", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 370, "y": 810, "wires": [ [ "c46892d6233c5391" ] ] }, { "id": "a3ee39814135cad2", "type": "link out", "z": "f9eff8535747992a", "g": "1d9e4b26a824022f", "name": "HypeTrain Progress OUT", "links": [ "1d7fb21bf35a91b8" ], "x": 770, "y": 810, "wires": [], "l": true }, { "id": "4309ad73534e365c", "type": "inject", "z": "f9eff8535747992a", "g": "1d9e4b26a824022f", "name": "Inject", "props": [ { "p": "payload" }, { "p": "topic", "vt": "str" } ], "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "", "payloadType": "date", "x": 160, "y": 930, "wires": [ [ "2e435c1be18bebf7" ] ] }, { "id": "2e435c1be18bebf7", "type": "function", "z": "f9eff8535747992a", "g": "1d9e4b26a824022f", "name": "Fake Stream Offline", "func": "msg.payload ={\n \"subscription\": {\n \"id\": \"f1c2a387-161a-49f9-a165-0f21d7a4e1c4\",\n \"type\": \"stream.offline\",\n \"version\": \"1\",\n \"status\": \"enabled\",\n \"cost\": 0,\n \"condition\": {\n \"broadcaster_user_id\": \"1337\"\n },\n \"created_at\": \"2019-11-16T10:11:12.123Z\",\n \"transport\": {\n \"method\": \"webhook\",\n \"callback\": \"https://example.com/webhooks/callback\"\n }\n },\n \"event\": {\n \"broadcaster_user_id\": \"1337\",\n \"broadcaster_user_login\": \"cool_user\",\n \"broadcaster_user_name\": \"Cool_User\"\n }\n}\n\nreturn msg;", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 360, "y": 930, "wires": [ [ "c46892d6233c5391" ] ] }, { "id": "07c0971dd23dd62d", "type": "link out", "z": "f9eff8535747992a", "g": "1d9e4b26a824022f", "name": "Stream Offline OUT", "links": [ "cd7537381dac4350" ], "x": 750, "y": 930, "wires": [], "l": true }, { "id": "59dac292ac05e5d8", "type": "inject", "z": "f9eff8535747992a", "g": "1d9e4b26a824022f", "name": "Inject", "props": [ { "p": "payload" }, { "p": "topic", "vt": "str" } ], "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "", "payloadType": "date", "x": 160, "y": 570, "wires": [ [ "9cae1c4a7541c723" ] ] }, { "id": "9cae1c4a7541c723", "type": "function", "z": "f9eff8535747992a", "g": "1d9e4b26a824022f", "name": "Fake Poll Progress", "func": "msg.payload ={\n \"subscription\": {\n \"id\": \"f1c2a387-161a-49f9-a165-0f21d7a4e1c4\",\n \"type\": \"channel.poll.progress\",\n \"version\": \"1\",\n \"status\": \"enabled\",\n \"cost\": 0,\n \"condition\": {\n \"broadcaster_user_id\": \"1337\"\n },\n \"transport\": {\n \"method\": \"webhook\",\n \"callback\": \"https://example.com/webhooks/callback\"\n },\n \"created_at\": \"2019-11-16T10:11:12.123Z\"\n },\n \"event\": {\n \"id\": \"1243456\",\n \"broadcaster_user_id\": \"1337\",\n \"broadcaster_user_login\": \"cool_user\",\n \"broadcaster_user_name\": \"Cool_User\",\n \"title\": \"Aren’t shoes just really hard socks?\",\n \"choices\": [\n {\"id\": \"123\", \"title\": \"Yeah!\", \"bits_votes\": 5, \"channel_points_votes\": 7, \"votes\": 12},\n {\"id\": \"124\", \"title\": \"No!\", \"bits_votes\": 10, \"channel_points_votes\": 4, \"votes\": 14},\n {\"id\": \"125\", \"title\": \"Maybe!\", \"bits_votes\": 0, \"channel_points_votes\": 7, \"votes\": 7}\n ],\n \"bits_voting\": {\n \"is_enabled\": true,\n \"amount_per_vote\": 10\n },\n \"channel_points_voting\": {\n \"is_enabled\": true,\n \"amount_per_vote\": 10\n },\n \"started_at\": \"2020-07-15T17:16:03.17106713Z\",\n \"ends_at\": \"2020-07-15T17:16:08.17106713Z\"\n }\n}\n\nreturn msg;", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 350, "y": 570, "wires": [ [ "c46892d6233c5391" ] ] }, { "id": "52f26835eeca107c", "type": "link out", "z": "f9eff8535747992a", "g": "1d9e4b26a824022f", "name": "Poll Progress OUT", "links": [ "013eac261f7f830a" ], "x": 750, "y": 570, "wires": [], "l": true }, { "id": "03c5d3303b39046e", "type": "link out", "z": "f9eff8535747992a", "g": "1d9e4b26a824022f", "name": "Prediction Progress OUT", "links": [ "58059205d3b59963" ], "x": 770, "y": 690, "wires": [], "l": true }, { "id": "8fe676f729352bd3", "type": "inject", "z": "f9eff8535747992a", "g": "1d9e4b26a824022f", "name": "Inject", "props": [ { "p": "payload" }, { "p": "topic", "vt": "str" } ], "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "", "payloadType": "date", "x": 160, "y": 690, "wires": [ [ "870a89265d2adf1d" ] ] }, { "id": "870a89265d2adf1d", "type": "function", "z": "f9eff8535747992a", "g": "1d9e4b26a824022f", "name": "Fake Prediction progress", "func": "msg.payload ={\n \"subscription\": {\n \"id\": \"f1c2a387-161a-49f9-a165-0f21d7a4e1c4\",\n \"type\": \"channel.prediction.progress\",\n \"version\": \"1\",\n \"status\": \"enabled\",\n \"cost\": 0,\n \"condition\": {\n \"broadcaster_user_id\": \"1337\"\n },\n \"transport\": {\n \"method\": \"webhook\",\n \"callback\": \"https://example.com/webhooks/callback\"\n },\n \"created_at\": \"2019-11-16T10:11:12.123Z\"\n },\n \"event\": {\n \"id\": \"1243456\",\n \"broadcaster_user_id\": \"1337\",\n \"broadcaster_user_login\": \"cool_user\",\n \"broadcaster_user_name\": \"Cool_User\",\n \"title\": \"Aren’t shoes just really hard socks?\",\n \"outcomes\": [\n {\n \"id\": \"1243456\",\n \"title\": \"Yeah!\",\n \"color\": \"blue\",\n \"users\": 10,\n \"channel_points\": 15000,\n \"top_predictors\": [ // contains up to 10 users\n {\n \"user_name\": \"Cool_User\",\n \"user_login\": \"cool_user\",\n \"user_id\": \"1234\",\n \"channel_points_won\": null,\n \"channel_points_used\": 500\n },\n {\n \"user_name\": \"Coolest_User\",\n \"user_login\": \"coolest_user\",\n \"user_id\": \"1236\",\n \"channel_points_won\": null,\n \"channel_points_used\": 200\n }\n ]\n },\n {\n \"id\": \"2243456\",\n \"title\": \"No!\",\n \"color\": \"pink\",\n \"top_predictors\": [ // contains up to 10 users\n {\n \"user_name\": \"Cooler_User\",\n \"user_login\": \"cooler_user\",\n \"user_id\": 12345,\n \"channel_points_won\": null,\n \"channel_points_used\": 5000\n }\n ]\n },\n ],\n \"started_at\": \"2020-07-15T17:16:03.17106713Z\",\n \"locks_at\": \"2020-07-15T17:21:03.17106713Z\"\n }\n}\nreturn msg;", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 370, "y": 690, "wires": [ [ "c46892d6233c5391" ] ] }, { "id": "d7df12800dd78f6e", "type": "function", "z": "f9eff8535747992a", "name": "Stream Online", "func": "const broadcaster = msg.payload.event.broadcaster_user_name;\nconst start = msg.payload.event.started_at;\n\nglobal.set(\"STREAMON\", true);\n\nreturn [{payload : broadcaster}, {payload : start}];", "outputs": 2, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 670, "y": 1050, "wires": [ [ "3a9f2efc21945060" ], [ "3a9f2efc21945060" ] ], "outputLabels": [ "Broadcaster Username", "Started at" ] }, { "id": "444252717fbfd856", "type": "link in", "z": "f9eff8535747992a", "name": "Channel Update", "links": [ "104b71d90f13b9fa" ], "x": 545, "y": 1050, "wires": [ [ "d7df12800dd78f6e" ] ] }, { "id": "3a9f2efc21945060", "type": "debug", "z": "f9eff8535747992a", "name": "", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "false", "statusVal": "", "statusType": "auto", "x": 850, "y": 1050, "wires": [] }, { "id": "14323d28693e9d72", "type": "function", "z": "f9eff8535747992a", "name": "Stream Offline", "func": "const broadcaster = msg.payload.event.broadcaster_user_name;\n\nglobal.set(\"STREAMON\", false);\n\nreturn [{payload : broadcaster}];", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 670, "y": 1090, "wires": [ [ "56a3e8c2387e3365" ] ], "outputLabels": [ "Broadcaster Username" ] }, { "id": "cd7537381dac4350", "type": "link in", "z": "f9eff8535747992a", "name": "Channel Update", "links": [ "07c0971dd23dd62d" ], "x": 545, "y": 1090, "wires": [ [ "14323d28693e9d72" ] ] }, { "id": "56a3e8c2387e3365", "type": "debug", "z": "f9eff8535747992a", "name": "", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "false", "statusVal": "", "statusType": "auto", "x": 850, "y": 1090, "wires": [] }, { "id": "080a52db4f5eebc3", "type": "function", "z": "7c36e6b244586b90", "g": "fcc735a31613ba0b", "name": "Response ?", "func": "if (msg.payload == \"\") {\n msg.payload = \"Unsubscription successful\";\n}\nreturn msg;", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 710, "y": 760, "wires": [ [ "09e4fce23bf14ad4" ] ] } ]