diff --git a/ChatContainer.gd b/ChatContainer.gd index a6cf688..5e16d4f 100644 --- a/ChatContainer.gd +++ b/ChatContainer.gd @@ -8,11 +8,12 @@ func put_chat(senderdata : SenderData, msg : String): var result = await($"../Gift".get_badge(badge, senderdata.tags["room-id"])) badges += "[img=center]" + result.resource_path + "[/img] " var locations : Array = [] - for emote in senderdata.tags["emotes"].split("/", false): - var data : Array = emote.split(":") - for d in data[1].split(","): - var start_end = d.split("-") - locations.append(EmoteLocation.new(data[0], int(start_end[0]), int(start_end[1]))) + if (senderdata.tags.has("emotes")): + for emote in senderdata.tags["emotes"].split("/", false): + var data : Array = emote.split(":") + for d in data[1].split(","): + var start_end = d.split("-") + locations.append(EmoteLocation.new(data[0], int(start_end[0]), int(start_end[1]))) locations.sort_custom(Callable(EmoteLocation, "smaller")) var offset = 0 for loc in locations: diff --git a/addons/gift/gift_node.gd b/addons/gift/gift_node.gd index 0ed27f9..efefbf7 100644 --- a/addons/gift/gift_node.gd +++ b/addons/gift/gift_node.gd @@ -48,7 +48,7 @@ var last_msg : int = Time.get_ticks_msec() # Mapping of channels to their channel info, like available badges. var channels : Dictionary = {} # Last Userstate of the bot for channels. Contains -> entries. -var last_userstate : Dictionary = {} +var last_state : Dictionary = {} # Dictionary of commands, contains -> entries. var commands : Dictionary = {} @@ -166,10 +166,10 @@ func chat(message : String, channel : String = ""): if (channel.begins_with("#")): channel = channel.right(-1) chat_queue.append("PRIVMSG #" + channel + " :" + message + "\r\n") - chat_message.emit(SenderData.new(last_userstate[channels.keys()[0]]["display-name"], channel, last_userstate[channels.keys()[0]]), message) + chat_message.emit(SenderData.new(last_state[channels.keys()[0]]["display-name"], channel, last_state[channels.keys()[0]]), message) elif(keys.size() == 1): chat_queue.append("PRIVMSG #" + channels.keys()[0] + " :" + message + "\r\n") - chat_message.emit(SenderData.new(last_userstate[channels.keys()[0]]["display-name"], channels.keys()[0], last_userstate[channels.keys()[0]]), message) + chat_message.emit(SenderData.new(last_state[channels.keys()[0]]["display-name"], channels.keys()[0], last_state[channels.keys()[0]]), message) else: print_debug("No channel specified.") @@ -319,8 +319,13 @@ func handle_message(message : String, tags : Dictionary) -> void: whisper_message.emit(sender_data, msg[3].right(-1)) "RECONNECT": twitch_restarting = true - "USERSTATE": - last_userstate[msg[2].right(-1)] = tags + "USERSTATE", "ROOMSTATE": + var room = msg[2].right(-1) + if (!last_state.has(room)): + last_state[room] = tags + else: + for key in tags: + last_state[room][key] = tags[key] _: unhandled_message.emit(message, tags) diff --git a/addons/gift/plugin.cfg b/addons/gift/plugin.cfg index d1700d5..5d1d82f 100755 --- a/addons/gift/plugin.cfg +++ b/addons/gift/plugin.cfg @@ -3,5 +3,5 @@ name="Godot IRC For Twitch" description="Godot websocket implementation for Twitch IRC." author="issork" -version="2.0.0" +version="2.0.1" script="gift.gd"