miggor-StreamGraph/classes/deck/nodes/twitch/twitch_eventsub_event.gd
Eroax 2d5fcd25f6 Reworks Twitch Nodes to work with the new Triggers Workflow. (#82)
Closes #59 by reworking Twitch Nodes to use the new Trigger workflow that allows inputs that trigger through Ports with Port.UsageType.BOTH as well the functionality for Port.UsageType.VALUE_REQUEST and Port.UsageType.TRIGGER.

Co-authored-by: Eroax <eroaxebusiness@duck>
Reviewed-on: https://codeberg.org/StreamGraph/StreamGraph/pulls/82
2024-02-26 11:36:19 +00:00

54 lines
1.5 KiB
GDScript

# (c) 2023-present Eroax
# (c) 2023-present Yagich
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
extends DeckNode
var cached_event_data : Dictionary
func _init():
name = "Twitch EventSub Event"
node_type = name.to_snake_case()
description = "Listens for a specific Event from Twitch EventSub."
props_to_serialize = []
# Adds a port that allows specifying what type of event to listen for.
add_input_port(DeckType.Types.STRING, "Event Name", "field", Port.UsageType.VALUE_REQUEST)
# Adds a port that outputs when the Event has been received
add_output_port(DeckType.Types.ANY, "Event Received", "", Port.UsageType.TRIGGER)
# Adds a port that outputs the data received when the Event has been received.
add_output_port(DeckType.Types.DICTIONARY, "Event Data", "", Port.UsageType.BOTH)
func _event_received(event_name: StringName, event_data: Dictionary = {}):
if event_name != &"twitch_eventsub":
return
var port_0 = await resolve_input_port_value_async(0)
print("Event Name ", event_data)
if port_0 == null or port_0 != event_data.payload.subscription.type:
return
# Sends the data along as well as the fact that the event happened. While also caching the event data for later access
cached_event_data = event_data.payload
# Sends to indicate that the specified event has happened.
send(0, event_data)
send(1, event_data)
func _value_request(port):
if port != 1:
return
return cached_event_data