From 0c91b1964d8acc7d91bb4134e656b6907f1bd4d2 Mon Sep 17 00:00:00 2001 From: sairam4123 Date: Sun, 29 Aug 2021 01:28:48 +0530 Subject: [PATCH 1/4] Implement time and fix bugs --- DiscordEdit.gd | 4 ++++ Main.gd | 28 +++++++++++++++++++++++---- Scenes/Config.gd | 24 +++++++++++++---------- Scenes/Server/Server.gd | 26 +++++++++++++++---------- Scenes/Server/member_button.gd | 13 +++++++++++-- Scenes/Server/message.gd | 6 +++--- addons/discord_gd/classes/channel.gd | 6 +++++- addons/discord_gd/classes/helpers.gd | 18 ++++++++++++++--- default_env.tres | Bin 163 -> 163 bytes project.godot | 4 ++++ 10 files changed, 96 insertions(+), 33 deletions(-) diff --git a/DiscordEdit.gd b/DiscordEdit.gd index 9760acc..66f3ba7 100644 --- a/DiscordEdit.gd +++ b/DiscordEdit.gd @@ -5,6 +5,7 @@ class_name DiscordEdit, "res://Assets/TextEdit.svg" signal button_pressed(button) signal text_entered(text) signal size_changed(value) +signal text_changed(text) export(int) var max_visible_lines: int = 5 export(String, MULTILINE) var text: String @@ -82,3 +83,6 @@ func _on_TextEdit_gui_input(event: InputEvent) -> void: if event.scancode == KEY_ENTER and event.shift == false and not event.echo: emit_signal("text_entered", text) main_text.text = "" + if event.scancode != KEY_ENTER and event.shift == false and not event.echo: + emit_signal("text_changed", text) + diff --git a/Main.gd b/Main.gd index 73fb3c9..dd6d8de 100644 --- a/Main.gd +++ b/Main.gd @@ -15,8 +15,26 @@ var servers: Dictionary = {} func _ready() -> void: bot_node.VERBOSE = true - tab_container.current_tab = 1 - + var file = File.new() + if !file.file_exists("user://config.cfg"): + tab_container.current_tab = 1 + else: + setup_bot("user://config.cfg") + tab_container.current_tab = 2 + +func setup_bot(file_path): + var f = ConfigFile.new() + f.load(file_path) + bot_node.INTENTS = f.get_value("Main", "Intents", 32383) + bot_node.login(f.get_value("Main", "BotToken", ""), f.get_value("Main", "ApplicationID", "")) + bot_node.set_presence({ + "status": f.get_value("Main", "Status", "idle"), + "afk": f.get_value("Main", "AFK", false), + "activity": { + "type": f.get_value("Main", "Type", "listening"), + "name": f.get_value("Main", "Name", "you. Please be sane!"), + } + }) func _on_DiscordBot_bot_ready(bot: DiscordBot) -> void: print("Logged in as |%s#%s|" % [bot.user.username, bot.user.discriminator]) @@ -67,8 +85,10 @@ func _on_DiscordBot_interaction_create(bot, interaction: DiscordInteraction) -> pass # Replace with function body. -func _on_DiscordBot_message_create(bot, message, channel: Channel, guild: Guild): - servers[guild.id].message_recieved(message, channel) +func _on_DiscordBot_message_create(_bot, message, channel: Channel, guild: Guild): + print("message received") + yield(servers[guild.id].message_recieved(message, channel), "completed") + print("recived") func _notification(what: int) -> void: diff --git a/Scenes/Config.gd b/Scenes/Config.gd index 6df516f..e81a412 100644 --- a/Scenes/Config.gd +++ b/Scenes/Config.gd @@ -3,7 +3,7 @@ extends Control var settings: Dictionary = {} var f = ConfigFile.new() -var file_path: String = "user://Config.cfg" +var file_path: String = "user://config.cfg" onready var settings_container = $SettingsContainer @@ -18,21 +18,25 @@ func _ready() -> void: func _on_Configure_pressed() -> void: # yield(settings_container, "ready") for child in settings_container.get_children(): - if child.get_child(1) is LineEdit and not child.get_node("LineEdit").text.empty(): - settings[child.get_node("Label").text] = child.get_node("LineEdit").text - if child.get_child(1) is CheckBox: - settings[child.get_node("Label").text] = child.get_node("CheckBox").pressed - if child.get_child(1) is OptionButton: - settings[child.get_node("Label").text] = child.get_node("OptionButton").text.to_lower() - + if child.get_child_count(): + if child.get_child(1) is LineEdit and not child.get_node("LineEdit").text.empty(): + settings[child.get_node("Label").text.rstrip(":")] = child.get_node("LineEdit").text + if child.get_child(1) is CheckBox: + settings[child.get_node("Label").text.rstrip(":")] = child.get_node("CheckBox").pressed + if child.get_child(1) is OptionButton: + settings[child.get_node("Label").text.rstrip(":")] = child.get_node("OptionButton").text.to_lower() + print(settings) for key in settings: - if not settings[key]: + if settings[key]: + print(key) f.set_value("Main", key, settings[key]) f.save(file_path) f.load(file_path) owner.bot_node.INTENTS = settings.Intents if settings.has("Intents") else 32383 - owner.bot_node.login(f.get_value("Main", $SettingsContainer/HBoxContainer/Label.text, ""), f.get_value("Main", $SettingsContainer/HBoxContainer2/Label.text, "")) + print(f.get_value("Main", $SettingsContainer/HBoxContainer/Label.text.rstrip(":"), "failing")) + print(f.get_section_keys("Main")) + owner.bot_node.login(f.get_value("Main", $SettingsContainer/HBoxContainer/Label.text.rstrip(":"), ""), f.get_value("Main", $SettingsContainer/HBoxContainer2/Label.text, "")) owner.bot_node.set_presence({ "status": settings.Status if settings.has("Status") else "idle", "afk": settings.AFK if settings.has("AFK") else false, diff --git a/Scenes/Server/Server.gd b/Scenes/Server/Server.gd index 0fe1a9d..f0feaa9 100644 --- a/Scenes/Server/Server.gd +++ b/Scenes/Server/Server.gd @@ -28,7 +28,8 @@ func _ready() -> void: for member in members: yield(get_tree(), "idle_frame") var member_button = member_button_scene.instance() - member_button.member = member +# print(member) + member_button.member = member.duplicate() var avatar = yield(member.user.get_display_avatar({size = 128}), "completed") member_button.icon = Helpers.to_image_texture(Helpers.to_png_image(avatar)) # yield(get_tree(), "idle_frame") @@ -65,22 +66,23 @@ func message_recieved(message: Message, channel: Channel): var new_message = message_scene.instance() # var avatar = yield(message.author.get_display_avatar({"size": 128}), "completed") new_message.bot = bot - var avatar = yield(message.author.get_display_avatar({size = 128}), "completed") + var avatar = yield(message.author.get_display_avatar({"size": 128}), "completed") # this is what Godot Docs say to use. new_message.avatar = Helpers.to_image_texture(Helpers.to_png_image(avatar)) new_message.content = message.content new_message.name = message.id new_message.author_name = message.author.username -# var current_time = OS.get_datetime_from_unix_time(int(message.timestamp)) -# var time_zone = OS.get_time_zone_info() -# print(time_zone) - - new_message.time = "Today at %s" % Helpers.get_time() - messages_container.add_child(new_message) -# new_message.get_parent().move_child(new_message, 0) + var time_zone = OS.get_time_zone_info() + var date_time = Helpers.to_datetime(message.timestamp) + var current_time = OS.get_unix_time_from_datetime(date_time) + time_zone.bias * 60 + var timestamp = OS.get_datetime_from_unix_time(current_time) + new_message.time = "Today at %s" % Helpers.get_time(timestamp) + messages_container.call_deferred("add_child", new_message) + print("not adding instance", new_message.content) +# messages_container.call_deferred("move_child", new_message, messages_container.get_child_count()-1) func set_typing(bot, dict: Dictionary): - if current_channel == dict.channel_id: + if current_channel == dict.channel_id and dict.member.user.id != bot.user.id: timer.start() if dict.member.has("nick") and dict.member.nick: typing_label.text = "%s is typing..." % dict.member.nick @@ -91,3 +93,7 @@ func set_typing(bot, dict: Dictionary): func _on_Timer_timeout() -> void: typing_label.hide() + + +func _on_DiscordEdit_text_changed(text): + Channel.send_typing(bot, current_channel) diff --git a/Scenes/Server/member_button.gd b/Scenes/Server/member_button.gd index 3931a0d..9ebaf60 100644 --- a/Scenes/Server/member_button.gd +++ b/Scenes/Server/member_button.gd @@ -1,7 +1,7 @@ extends Button -onready var member: Dictionary = {} setget set_member +onready var member = {} setget set_member onready var popup = $PopupMenu @@ -16,7 +16,7 @@ func _ready() -> void: func set_member(value: Dictionary) -> void: - member = value + member = value.duplicate() name = member.user.id hint_tooltip = Helpers.print_dict(member) @@ -24,6 +24,7 @@ func set_member(value: Dictionary) -> void: text = member.nick else: text = member.user.username + print(member, "cool") func _on_PopupMenu_about_to_show() -> void: @@ -35,3 +36,11 @@ func _on_Member_gui_input(event: InputEvent) -> void: if event is InputEventMouseButton: if event.button_index == BUTTON_RIGHT: popup.popup() + + +func _on_PopupMenu_id_pressed(id): + match id: + 0: + # copy + print(member, "testing") # this is empty dict for no reason? + OS.set_clipboard(member.user.id) diff --git a/Scenes/Server/message.gd b/Scenes/Server/message.gd index 1f232c7..1dcf8de 100644 --- a/Scenes/Server/message.gd +++ b/Scenes/Server/message.gd @@ -13,7 +13,7 @@ onready var name_node = $VBoxContainer/HBoxContainer/VBoxContainer/HBoxContainer onready var time_node = $VBoxContainer/HBoxContainer/VBoxContainer/HBoxContainer/Time onready var avatar_node = $VBoxContainer/HBoxContainer/Avatar onready var content_node = $VBoxContainer/HBoxContainer/VBoxContainer/Content -onready var editted_node = $VBoxContainer/HBoxContainer/VBoxContainer/HBoxContainer/Editted +onready var edited_node = $VBoxContainer/HBoxContainer/VBoxContainer/HBoxContainer/Editted onready var text_edit = $VBoxContainer/HBoxContainer/VBoxContainer/TextEdit onready var edit_button = $VBoxContainer/HBoxContainer/HBoxContainer2/Edit @@ -21,7 +21,7 @@ onready var edit_button = $VBoxContainer/HBoxContainer/HBoxContainer2/Edit func _ready(): self_modulate = Color(0.211765, 0.223529, 0.247059) edit_mode(edit_button.pressed) - editted_node.hide() + edited_node.hide() avatar_node.texture = avatar name_node.text = author_name time_node.text = time @@ -63,7 +63,7 @@ func edit_mode(_bool: bool): content_node.hide() text_edit.text = content_node.text text_edit.show() - editted_node.show() + edited_node.show() else: content_node.show() content_node.text = text_edit.text diff --git a/addons/discord_gd/classes/channel.gd b/addons/discord_gd/classes/channel.gd index 192e03f..5c4bdb8 100644 --- a/addons/discord_gd/classes/channel.gd +++ b/addons/discord_gd/classes/channel.gd @@ -74,7 +74,7 @@ static func get_message(bot, message_id: String, channel_id: String) -> Dictiona static func get_messages(bot, channel_id: String, before: String, limit: int = 100) -> Array: var message_array: Array = yield(bot._send_get("/channels/%s/messages" % channel_id + "?before=%s&limit=%s" % [before, limit]), "completed") -# var invert = message_array.invert() # PLEASE REPORT: Array.invert() is not working, it returns `Nil` + message_array.invert() # PLEASE REPORT: Array.invert() is not working, it returns `Nil` var message_object_array: Array for message in message_array: @@ -82,3 +82,7 @@ static func get_messages(bot, channel_id: String, before: String, limit: int = 1 message_object_array.append(message_object) return message_object_array + +static func send_typing(bot, channel_id: String): + return yield(bot._send_request("/channels/%s/typing" % channel_id, {}), "completed") + diff --git a/addons/discord_gd/classes/helpers.gd b/addons/discord_gd/classes/helpers.gd index f4f1e11..7b8b636 100644 --- a/addons/discord_gd/classes/helpers.gd +++ b/addons/discord_gd/classes/helpers.gd @@ -27,12 +27,24 @@ static func make_iso_string(datetime: Dictionary = OS.get_datetime(true)) -> Str static func get_time(datetime: Dictionary = OS.get_datetime(), airport_time: bool = false): if airport_time: - return "%0d:%0d" % [datetime.hour, datetime.minute] + return "%02d:%02d" % [datetime.hour, datetime.minute] else: if datetime.hour > 12: - return "%0d:%0d PM" % [datetime.hour - 12, datetime.minute] + return "%02d:%02d PM" % [datetime.hour - 12, datetime.minute] else: - return "%0d:%0d AM" % [datetime.hour, datetime.minute] + return "%02d:%02d AM" % [datetime.hour, datetime.minute] + +static func to_datetime(iso: String): + var date = iso.split("T")[0] + var time = iso.split("T")[1] + return { + "year": date.split("-")[0], + "month": date.split("-")[1], + "day": date.split("-")[2], + "hour": time.split(":")[0], + "minute": time.split(":")[1], + "second": time.split(":")[2].split(".")[0], + } # Pretty prints a Dictionary static func print_dict(d: Dictionary) -> String: diff --git a/default_env.tres b/default_env.tres index 3e42e6f6bd0ba3b7694e01dda96598b932e4c72e..20207a4aa2cfbae0c95636531b00d91502940d12 100644 GIT binary patch literal 163 zcmZ9GF$=;l5Jva>iX)Sb&7RR+>{v=ka%U-Na^;c;`S&U)i0k8fA8%T55h~my5Y&E< z)tCI(gma=?HSFwgDV2_54cu9htJcg)O{MvN@hTh$o49?9UBiZUcrU;Av+^#)Rk&qb X5+i{H^UF%?FEloP`vjd}fU|l63b;9^ literal 163 LcmZQz81w)D0HXi_ diff --git a/project.godot b/project.godot index b3d03e6..5989784 100644 --- a/project.godot +++ b/project.godot @@ -141,3 +141,7 @@ singletons=[ "res://git_api.gdnlib" ] [physics] common/enable_pause_aware_picking=true + +[rendering] + +environment/default_environment="res://default_env.tres" From e9033871bb1de24439214358560fa156450ab679 Mon Sep 17 00:00:00 2001 From: sairam4123 Date: Mon, 30 Aug 2021 16:36:39 +0530 Subject: [PATCH 2/4] Change "Today at" to normal datetime, for now. --- Scenes/Server/Server.gd | 2 +- Scenes/Server/message.tscn | 14 +------------- addons/discord_gd/classes/helpers.gd | 3 +++ 3 files changed, 5 insertions(+), 14 deletions(-) diff --git a/Scenes/Server/Server.gd b/Scenes/Server/Server.gd index f0feaa9..4c32bf2 100644 --- a/Scenes/Server/Server.gd +++ b/Scenes/Server/Server.gd @@ -75,7 +75,7 @@ func message_recieved(message: Message, channel: Channel): var date_time = Helpers.to_datetime(message.timestamp) var current_time = OS.get_unix_time_from_datetime(date_time) + time_zone.bias * 60 var timestamp = OS.get_datetime_from_unix_time(current_time) - new_message.time = "Today at %s" % Helpers.get_time(timestamp) + new_message.time = "%s %s" % [Helpers.get_date(timestamp), Helpers.get_time(timestamp)] messages_container.call_deferred("add_child", new_message) print("not adding instance", new_message.content) # messages_container.call_deferred("move_child", new_message, messages_container.get_child_count()-1) diff --git a/Scenes/Server/message.tscn b/Scenes/Server/message.tscn index 1627c0a..8ed2a1e 100644 --- a/Scenes/Server/message.tscn +++ b/Scenes/Server/message.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=8 format=2] +[gd_scene load_steps=7 format=2] [ext_resource path="res://Assets/logo.png" type="Texture" id=1] [ext_resource path="res://Scenes/Server/message.gd" type="Script" id=2] @@ -6,17 +6,6 @@ [ext_resource path="res://Fonts/NotoColorEmoji-unhinted/NotoColorEmoji.ttf" type="DynamicFontData" id=4] [ext_resource path="res://Fonts/Quicksand/static/Quicksand-SemiBold.ttf" type="DynamicFontData" id=5] -[sub_resource type="StyleBoxFlat" id=2] -content_margin_left = 10.0 -content_margin_right = 10.0 -content_margin_top = 10.0 -content_margin_bottom = 10.0 -bg_color = Color( 1, 1, 1, 1 ) -corner_radius_top_left = 5 -corner_radius_top_right = 5 -corner_radius_bottom_right = 5 -corner_radius_bottom_left = 5 - [sub_resource type="DynamicFont" id=1] use_mipmaps = true use_filter = true @@ -28,7 +17,6 @@ fallback/1 = ExtResource( 3 ) anchor_right = 1.0 margin_bottom = 66.0 focus_mode = 2 -custom_styles/panel = SubResource( 2 ) script = ExtResource( 2 ) __meta__ = { "_edit_use_anchors_": false diff --git a/addons/discord_gd/classes/helpers.gd b/addons/discord_gd/classes/helpers.gd index 7b8b636..f9f5fab 100644 --- a/addons/discord_gd/classes/helpers.gd +++ b/addons/discord_gd/classes/helpers.gd @@ -34,6 +34,9 @@ static func get_time(datetime: Dictionary = OS.get_datetime(), airport_time: boo else: return "%02d:%02d AM" % [datetime.hour, datetime.minute] +static func get_date(datetime: Dictionary = OS.get_datetime()): + return "%02d/%02d/%02d" % [datetime.day, datetime.month, datetime.year] + static func to_datetime(iso: String): var date = iso.split("T")[0] var time = iso.split("T")[1] From cee04a25dcdec0ab094f906b099d8c8c79ba4f51 Mon Sep 17 00:00:00 2001 From: sairam4123 Date: Mon, 30 Aug 2021 20:54:55 +0530 Subject: [PATCH 3/4] Remove .import files, it's not necessary. --- ...Add.svg-35b55f4fcb55e46a5bb60616bbb700d5.md5 | 3 --- ...dd.svg-35b55f4fcb55e46a5bb60616bbb700d5.stex | Bin 12140 -> 0 bytes ...own.svg-a435f6c3df16a61e2e91d56f3a2dd543.md5 | 3 --- ...eft.svg-dd1ff4ca3c0a274be1a122772654f963.md5 | 3 --- ...ght.svg-9d10ea31df154b3a56765dd7e52da41a.md5 | 3 --- ...wUp.svg-8d1f30eea02346a007ade066d763e7a3.md5 | 3 --- ...oji.svg-de57aa5631eb620cdaccb0e3633adfb1.md5 | 3 --- ...ji.svg-de57aa5631eb620cdaccb0e3633adfb1.stex | Bin 936 -> 0 bytes ...GIF.svg-5a9709256e5d5fa88074f69eceb8f498.md5 | 3 --- ...IF.svg-5a9709256e5d5fa88074f69eceb8f498.stex | Bin 628 -> 0 bytes ...own.svg-ecae7ba441fa7428aa14e5249b863541.md5 | 3 --- ...wn.svg-ecae7ba441fa7428aa14e5249b863541.stex | Bin 220 -> 0 bytes ...eft.svg-e8ce1afdeb6d24664bde8dabe76d9fb1.md5 | 3 --- ...ft.svg-e8ce1afdeb6d24664bde8dabe76d9fb1.stex | Bin 213 -> 0 bytes ...ght.svg-b33bc11a33cbd14667a5629bcb57f3d5.md5 | 3 --- ...ht.svg-b33bc11a33cbd14667a5629bcb57f3d5.stex | Bin 221 -> 0 bytes ...wUp.svg-e64120bde372f069087a474910cfa497.md5 | 3 --- ...Up.svg-e64120bde372f069087a474910cfa497.stex | Bin 215 -> 0 bytes ...chi.png-c63899c8d28952c44f9070bd236c0867.md5 | 3 --- ...hi.png-c63899c8d28952c44f9070bd236c0867.stex | Bin 34691 -> 0 bytes ...ker.svg-396c579041c93cdee6b35eaacb913c8f.md5 | 3 --- ...er.svg-396c579041c93cdee6b35eaacb913c8f.stex | Bin 630 -> 0 bytes ...dit.svg-1126fe049f460114614f8356e6dc1e71.md5 | 3 --- ...it.svg-1126fe049f460114614f8356e6dc1e71.stex | Bin 378 -> 0 bytes ...con.svg-c17de51589a7d30572bf401526524f64.md5 | 3 --- ...on.svg-c17de51589a7d30572bf401526524f64.stex | Bin 738 -> 0 bytes ...con.png-487276ed1e3a0c39cad0279d744ee560.md5 | 3 --- ...on.png-487276ed1e3a0c39cad0279d744ee560.stex | Bin 3413 -> 0 bytes ...ogo.png-d03fba62c7db4186a5557663390ad40b.md5 | 3 --- ...go.png-d03fba62c7db4186a5557663390ad40b.stex | Bin 47513 -> 0 bytes ...umb.png-58476a9e7d7cd60ad4f03afc80032c48.md5 | 3 --- ...mb.png-58476a9e7d7cd60ad4f03afc80032c48.stex | Bin 408 -> 0 bytes ...ack.png-366a333b3e97d53bb138079a7446d44e.md5 | 3 --- ...ck.png-366a333b3e97d53bb138079a7446d44e.stex | Bin 378 -> 0 bytes 34 files changed, 57 deletions(-) delete mode 100644 .import/Add.svg-35b55f4fcb55e46a5bb60616bbb700d5.md5 delete mode 100644 .import/Add.svg-35b55f4fcb55e46a5bb60616bbb700d5.stex delete mode 100644 .import/ArrowDown.svg-a435f6c3df16a61e2e91d56f3a2dd543.md5 delete mode 100644 .import/ArrowLeft.svg-dd1ff4ca3c0a274be1a122772654f963.md5 delete mode 100644 .import/ArrowRight.svg-9d10ea31df154b3a56765dd7e52da41a.md5 delete mode 100644 .import/ArrowUp.svg-8d1f30eea02346a007ade066d763e7a3.md5 delete mode 100644 .import/Emoji.svg-de57aa5631eb620cdaccb0e3633adfb1.md5 delete mode 100644 .import/Emoji.svg-de57aa5631eb620cdaccb0e3633adfb1.stex delete mode 100644 .import/GIF.svg-5a9709256e5d5fa88074f69eceb8f498.md5 delete mode 100644 .import/GIF.svg-5a9709256e5d5fa88074f69eceb8f498.stex delete mode 100644 .import/GuiTreeArrowDown.svg-ecae7ba441fa7428aa14e5249b863541.md5 delete mode 100644 .import/GuiTreeArrowDown.svg-ecae7ba441fa7428aa14e5249b863541.stex delete mode 100644 .import/GuiTreeArrowLeft.svg-e8ce1afdeb6d24664bde8dabe76d9fb1.md5 delete mode 100644 .import/GuiTreeArrowLeft.svg-e8ce1afdeb6d24664bde8dabe76d9fb1.stex delete mode 100644 .import/GuiTreeArrowRight.svg-b33bc11a33cbd14667a5629bcb57f3d5.md5 delete mode 100644 .import/GuiTreeArrowRight.svg-b33bc11a33cbd14667a5629bcb57f3d5.stex delete mode 100644 .import/GuiTreeArrowUp.svg-e64120bde372f069087a474910cfa497.md5 delete mode 100644 .import/GuiTreeArrowUp.svg-e64120bde372f069087a474910cfa497.stex delete mode 100644 .import/Nichi.png-c63899c8d28952c44f9070bd236c0867.md5 delete mode 100644 .import/Nichi.png-c63899c8d28952c44f9070bd236c0867.stex delete mode 100644 .import/Sticker.svg-396c579041c93cdee6b35eaacb913c8f.md5 delete mode 100644 .import/Sticker.svg-396c579041c93cdee6b35eaacb913c8f.stex delete mode 100644 .import/TextEdit.svg-1126fe049f460114614f8356e6dc1e71.md5 delete mode 100644 .import/TextEdit.svg-1126fe049f460114614f8356e6dc1e71.stex delete mode 100644 .import/class-icon.svg-c17de51589a7d30572bf401526524f64.md5 delete mode 100644 .import/class-icon.svg-c17de51589a7d30572bf401526524f64.stex delete mode 100644 .import/icon.png-487276ed1e3a0c39cad0279d744ee560.md5 delete mode 100644 .import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex delete mode 100644 .import/logo.png-d03fba62c7db4186a5557663390ad40b.md5 delete mode 100644 .import/logo.png-d03fba62c7db4186a5557663390ad40b.stex delete mode 100644 .import/scroll_thumb.png-58476a9e7d7cd60ad4f03afc80032c48.md5 delete mode 100644 .import/scroll_thumb.png-58476a9e7d7cd60ad4f03afc80032c48.stex delete mode 100644 .import/scroll_track.png-366a333b3e97d53bb138079a7446d44e.md5 delete mode 100644 .import/scroll_track.png-366a333b3e97d53bb138079a7446d44e.stex diff --git a/.import/Add.svg-35b55f4fcb55e46a5bb60616bbb700d5.md5 b/.import/Add.svg-35b55f4fcb55e46a5bb60616bbb700d5.md5 deleted file mode 100644 index 5798393..0000000 --- a/.import/Add.svg-35b55f4fcb55e46a5bb60616bbb700d5.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="2c7fe325f4604314b217d64b23ecacc2" -dest_md5="7a7599560b89f31e3e3d8e9d31050787" - diff --git a/.import/Add.svg-35b55f4fcb55e46a5bb60616bbb700d5.stex b/.import/Add.svg-35b55f4fcb55e46a5bb60616bbb700d5.stex deleted file mode 100644 index ed61ff073ff1f748e9012bee0f4c06a006cf05df..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12140 zcmZ{K1yEdFv+dv#AcP>n2_D?t-5J~=!QEYhJ0!s^xVyW%2X}XOw|Da0`)+;pSN%10 zX6DT7v#ob`uU_5aB1+0dAQ0&9g$!IE&<{9x;2jkg><3{P`uKel_ol zI!!#if2VEsgjtykdtO4Dm6MZmt)$^ExkBYxGR%6`y1H7{n%dehO-%xXl;mXd#ib?O z%IEq-=1 zYiep90{;+KA7(Hm$(-Fc+&?f*C>e{3h{)ZY+urpx=VfwnacfaiQ``G+-Z{uwNLx6k zG?WsYC7*wF65O$Os|;l}rtzYBEqw6x6;yDYGbjk^dn`&}w=rI!Zg8n9Dx$&yW%M?a zD^-MLJU%^$k0i5Ns3>lZINF>c2)fSsW7=tHZQZ1>k7+l1-@y3_*b<((R~S|b*4EeO zlaY~?yE=DP<93k;@dmo^su!0Q({lQ}-WjNs>+sSh3^!kt!C7HqDYK>E-#Ix~e`v?vV9unaft!zy59UlWq$nrnzVG5=ze{{V z!dh1|ra_Vw*vreSTTlCL5^gGAUcS2-(?P+ueSK0*&!@JvP8A&DLL0=?oH2RexSKp< zu_~?AvaNEDVZ#9}_~Tf5VU2+Mw%55(dC|{>_mL?jB0BjJWpGnBgL}2ntxX&ih^G}Ux@207ant29hs9f)4=NP=YROw&mW#4TP(1V zGuyeopog6tV$HTZ-D=sSUmJQnZsibiHTrX7KB;!LwzhyUB(MU7DrKc)G-nqU7RXW8 z??m3sWzgx?xK727YDFthq9gux638a`DUoBQlutWtikeeWa!pRax{f&=QHy=n-m)S8 zBteRnX}zEEQ&c|c_rd;t4-E}f3%txS$=Az&WTU3%b~1%AtY*!4Q<-`3?%g{NbHBTQ zAJ5OvYpBo@iH8m3$W*{2yq-$y+w~ZHIyIFDu!PjU3VaoTrzd?KOXKD*W;KuD8D!D` zOOm2JocVYhZI>ifPs%#Uz;myzu67D`c22NcYmZNx*TT>CGi!k7%C+7uHbu>FWt@26 zJ@9N$=2p5_=;`V2@Mim&B*6*!^lwj15jWg2b~FPu4V}x9bUJ`E>1c5RpOv}=}+-nAg zr=|$QZ$EDyo}QwW`Btt56vbVD{I$6Fr{Zd1J2Yx%$t1-RE zyEZyFFO0#sy1YdEW6FZVLeVC`S|BJWIMM8UI#g3x>FY03qOClg)3f<&6IZ{o0V47i z+$`o~Yn$QYynQ8v65K6XEIZKRF}!nmdr=p-$a;ut)8d96gpLz3=$Kyd za&kf;K|0ys5HzIbqpz?3_!x0>mN|iGsKK#{XDz1c$3giy|TQ_ z)4vqos8pz&@nQ$}Ln;>}_{uKV-PZ^E=fH7&V+?whLrj}4;jTozmPaNN%)?X{Y4wb|7HA|qF35K>_Zi6yE3J@q&jc&k?lY;roLnk4Z3gO8SphX8_mXnhkTdI3KiMexW zziX+qia09fr=j85DEE0Np5g0PD^w=B%CBDcoE1H9$Ts++;m85+2eR|vZg6Qw9WZ3- z*n)*(!j37k?7FzRN>NwQQMuorAZcTK!hKOA{wcA|-(Gi7!5VxWULNJYiMB;xwYNqM z>X-iwi-Wu?%!y#IWs!oiI1lL2!rVUd;qijQY#y!LlIij5?&-*ao&d5QLm3+vH@B~1 zA@paSqkS4XV}?Y17d`UOK1i@k3He6Vn=Ru{k88yXsL z98skwr>3ADpPm$~l&IqT_;S%^*g{7-JALDS|9)i`zGb8=aCUZ%n&o4XB2O@wDw7G4 zY!<2I@#+;5E>l59JWO41VETmAO&>rzsP2_3Vv$gAd~$-1#n*hU;#EJ#T|kN!+TwUH z$sS4l&d)J7mv%uUSMkPOMe-~|E{%&eZtKJVAK&|jWJ6=48#%?ecJ6qcI~=Rix1!a2 zGx$k0bMr&$N6UOQFfWgKTcwizUQ{_L{3He@&TVXayU(`z(gDV_+tqFU)K|ykX<$S{G`hU_^fK$91Q8$_> zC@YbOk{=qtkdT_lV?HK^Ocg3Z%+G9btLP~0N2G&*FohL8o6ltqcH_~d8SeJ?_trpV zNsNh!xyq4@F^;@`Qt-#Y!sRD?`9);vs+8B07jfMT{6t8|z8QrYP*->{h4h}vf9z{e zkW55(9x(r%t?mssH#ZpMyXFu6I0PSl!c(jV%2-|I3^E5ldG-La3?Toih60UDPeb#3 zu)#;jSP(-YPv8s(-=*m48t^KZt5|r;LuZ3nM<)1#ju0id|0~B)%OQ&;7zz@SxKR19 zU|jbz{5xRld$#Nig1q@W!7osKc+N0_>KC`Svx93Df-@$bM9|*?``=B_7YO=xG8CX% z`$0lEU9un7#PH#zqaF_nimSP>7ZjC2q^0Q;wA=9G6{4riB|FgRL7|}BCf4x&NK3>2 z%CsUd-vjQ*m}2Dr&B)=i9Ssfo!}lO#Le7U6sPD0HM*}k!m zB%o}_A(6xk$B<<0nvk{ikUL)KPRje17Aw6M0a(7V&+Zb0=n3BmefZc9a~l85OAS*A zAh%NPH4L=c=SL(&hbmR& zz6~Pp(07X=S?-iy=S z^}3Fq3enJ7k{E8Pa9YM8cXM*#7j!Szgs&LrUOo5RN`ddMFKfZv2w{07k zsgS4wxDf-n+`(1@Y_s+16e1kxDV;#8BF$`aL-E`%u$BTKj`@#UXC*=`{`Lj9%5h;o zyaedz#{PDzt*w1d2LS?oZ}PE4aq=rtEQD{2ib#*9uc#(53=ZhEHD&;%h(^RE1?_?< z3SM4bdiK*l`3Y4*#88NC=md$TFp=S)8X+6c{J=YeRw0gaN-D$a9{HVwG+y*6bHbF! zjLR<1{>MNrF!0A|K#nL=aR#4Y{ZUl&_~jGdZsNND%U`0~h&TUnTMURjNO^hxwp4Cx zNvIHn0euh6%v=w|IOv$gbiT{#?CgXn(QC$mzW-?PsY-+jKUO%6PboBKukv7sQO;0= z{2;c;Yg6~DmL`ekLN zN3-Rb|zu!tGk_Z;)pjRwZ<|4TlOGPRzX?aHZYaq(}o?yCnt$Q+5RaHAOgvcpS z;gQ~%tEi}W+t`$&Hv>kC0RY8xwA8I^%V%OpMVh6j^zL9snC2=X(~8Tm%Vhvmeakn; zcIsMfcDbsq{DR=;2!ti<`m18dhc8`SG_-if2uTAkPcRxJFV@o;b@k!67Uo6o{?H@% z!Ft?RG}e`smAU4uMRTgX%^b}!P0#`z=(O7zOs7U-Pixg%r}^r=q0U+_H}JLn^YAeB z*FF9Kd<8GBKrkr{wiRw`{K3P^-CCPSK43hZJ|8`+8CYejfo;|ry~OAeJ{nNz4`dZ6 z7rmyYO6T`2%9UqO#SN_vtJ!;h@&PRMeA@ETo*|RQ6W}dch1Sa3UmodQm0&VY5**q+ zv&Nm>;c7E8GoQT$J4Lso{W3a>ii*$TfY@ZxM9Y7cXY`rzD#PyYHY(-I6HK~j`TIR) z+;_$;E-rpZClL72rm3kV0t0jBJ?Y{htoC!3;OQ{@4rv+A&oPzD?Gg%F@LJbxVSQ%| z0J`HB51wf*nk6uSLcKXU7RhPn8`WIZ~`@X4{mFsoU+lneb+ALypfWg4aY)MGW@6`(QDq zXJ#;U2Aa+zE1y!Td$17-MvaEPGIUJeb0{woH!ZnXrx%x$w3v^yiNRrjKv6zdHz*c( zQ0x2apx=7G*iLJq0Ys(VcFie}tMA}1MhX}YFFic&rkVMdey49a%2Y;*NjV;i(`N7b zr=mFZt9d}9p|JOUn%Q~A`Cv*SuLB1nOMOb%nGfTkHti4M*1D&h26u#a7@k&ERtkgwGlp6wHU@zkhY+p1ky^M@rOjNK<=a7S$HWe2E)GN`pyAD zS2wxedWHaAF)IMDSjyWk9+z?#&dklt5g{QVvz|R)$g^h14Ohbmcp7dmHiYT38F|oW$j(h!l8^S%y>+(_4tAoA zn}0kU{C|x9H*yv8*gE`;BSjwLbn?z0hoPrdcC|2ny4Ckq2xR3w4~7 z=yB|PqiH>IQZV7`%ggH())=8^wX6&QgPN-9u3h72J3c%VtiLe?6*YZx^;^el#D$|M zGFC2ZO78WRDW|TsJUL06%x0xY#Z#S34-f(*=>%?D$KxjNQw|f!eH6q23wjRY2Zta} zk<)3RdX=qOtn!3%JUlQq#&m!b-O!?Nd;X2Ny#b&kA`U{w7Zw+@uH@hX8r$0V9>#RI zC+!^^e1JIBu2uE=_BM*+dLlDiChrNF=jeMM`A-S1)y3C4lLyaN9iFJ@C)vp2;^Mc= zXuh`nt*vf=#V~cq+ z3VR;aVjDl&-$&ilfI9`;At+92#^dHNZmO=X4&`sq={g7Xvawv=j<-_nG7c~r6M-(Y z0q|5HA4dW#42+!+k()R>Ao|>p#q@rBe01mMd%h@M^LkscHXsl0fIOWm=>Eo(^vb=u z;6}wnjP_ecRt8M%dcN`dy(%j^yV{n{umHd-pyYrln;h)v(*BsD${HGOBi-AAJOJBa zGG<7yTz%KAva+&b_gW0*i^Ci7Mdqkg(*~mWx_`LKGClQ9D6L`3M|*%02NZG7rE+06U6_S==8 zVsDZ?XzW%7+8B450Cdzc^MovEp2oFRu#Rc7vt0B#aP*xI6(Emgrgh^{0;A!V@ygVq@=Ws5$39ZxNmeJ zp=x}4Z^vl%+@g>5u7I;5IRm8!c~>qpI$95v5G$R@PJdp>kSXc>JztGxY5e#e)@o~l zPi962QE^ezAswj0T=l7LC<8?#e`+NwE9+NxcbADwSZXXPIv!6FynH)A&P>nD#w#nU zY{$hVtWeR>wardVk@PjwwWxc6gR82m9kyW|4E|a{;35Vh5fZ3ps4g>> zu>^U{1|I{q9}#eJLj+z4twsB*+vK7B0a_a*DJmyYCiK;>>)n6l!c~A~D*tfd95)4; z|G|a7bNyc~Jk>+_qZ&c~*)~4fuTNbhpIGRZ&e5od)h%lMFi^EtFpB>)-S{p!-;3T7dlY%cl?1l$Udm>-c1B(VuaxC4-sP7tNM&ufHa5Zno>8g z^3dR+C($=zNi)HT13Q!uCCAtonI>oln(y;h5aQzINAHA+yt1kT-%mIy9G-C6D=V zzz88QIBlxnXb#Xeefh?tx)H#%Od~jx2}I>hBnK;Xa&vR_3WAiqB%%Tf3bXn}zZC20 zw$gt2V#fDttHEC?_mErhd8@xyJlqBFrGlh=0zJx@;k_EoY&&c~y2`#Tp1q>e)NC<=@QmfJe!fq$R<8b1QVw1TsM8cN#R+?ChA-nu^t-QSa-1gXZ=N0F>92mB5nco!7+V2FD zTJw#fY#)-T*59GkTY24a0NkJlIlV1F8-K$?5m(k#c=e|~(P4^{Ay=xmc{^uufMj0g zcJmzuXb@3X<-;{FG2CLHVEN6G#Zuo^V8O&Oox01O$ZjW;h z%&znT#N$nX-T5;&_Z}UQ3``j(kU#Yx0!I){fo@6n4C~*?;gxZE9Umr?`RDyH|G9?* zd^mDB&s>E%&AO*3SwV|BGQj1C-2yNv4<2T{@t6j6NI$des8|^8?dIgIZRK#^BVXKH z*LoFG4;zR!d;6pOtJ25kKOuJLROilVcAk#kK?Ev>HkDxvJFo`_1*D8VF##)f6stv(Tj)yAWmGT9S}`vZucfAuhkXrQm3F^`Y=E=l{E6o&7^2TN-i znGu;IFSa~b7?=rT(s5Tz9Sz^{)cn0|b(^I`u9Hx+1KS-IUYQXIxxuQ{I!4wnW{=s~ z(@-3EW9ZJ%Df}%~2Ikt9%S!vw?hGN3&1Wkih3JTZV?bWVljO^JXlRrq{wt3@RrGLp zFwp@0)o(}$g6IT>XE#y^zu}$U&y0yx^;neXQuTX#UN2>Phf?LWkZ2RFZ)#|v(Bz_a zAk262#uVxO(f@Rkg5T*+_QPpAo^zBGKT{s zB6vAC5;-|I=DF=3g98KQZ@DgcBg8(=yPTs^1-bj1o5Fj#+{2qTJ#y1rbai!+Lw$9U z&7IoMtPp_(N#Njo*Iq?d;}EG-r^!IiGpTaq;za^cE15ao?>?1U@zJB&y~|ZZczkRr zug{pmmI0N>kfDVN>Wa4p)Bm<{4_Do5H752IfbAHX4rY{uw6^8Ig8&{MC9g&(TL-Xl z8Mpu<*tq(kESMw@2MKmwH}4(H^9An12O3rQuYV47`>}6rdz1l6Tgym$@?$8`uaj!_ zC2I&l)Pb>)?_{&KUb7*EfI?NY3iRt&emyCQBO+fs9Tsc<%)#+#n^q4tOY|I_5Cv)Z z#@0}5CVT&9C)xu6KxaMg^lJZ^TYGQ4b_zirHU)^eg0m=}Rg`Et?@51S}FrC`O%2ls$MLnf-&FgZ|( z+#4>tbwixr3%nKpAsibrTzjT(Z*QsFV$knv-t5-eKPWZZxU4lewQan(3~^!0V`GsR%c7?^S145W0)o4n?j^Ro*_oL%Aw9))CHh9k zMfaI^xJo-Km$$RC7VTN|)D?}k8(j)VCyXv_d&4@^7H&N{HJT@2S=mv9BQFCPUa!Z! z@(In39l>?ahX)dz(mvy~62?3#k2oFH+L_$_K}1Wr-&8By?&&L`HgTHO58SZ3kPug7#!zEmVz3T_&us&D$Fxa)TNtg(rfR_HP2aUG*K@!3tM70=y@p3#%R9ILTC7}+NeK=Z#SmD<5wy`Hc zWg4Fed%uYc&b<}lD+4N!Qu-Pu06^gDwMFkHkGaQRTV&0twRT^e6p2ttPZuA|SbYWH zTU^E&>^C+8x6UlRJO*8d=Nn_iUH8WDA38cZ(xzjl1J4KE@if`ExS(5o83EF-$rp=F zsi|M$qrnh(q#-CccLBi#87U5xt)y+*!+M4-8r4e(7$%h{q87t+h7A(~rG+wZ) z7c3W>PSSRe+u2g>YNNICl1GiFdW*uz1_zmeTw31MQyN?VKDSGY^Jzl$TGLej$+D$? zXGU>R5f`6<*pLvcKZKTCF@M$D@C!`8RMe?seY!Zp8BVE~Q`>XGS$>~<+DDwjRUviX z?+cb}C--Mjb5ZyXYhX}|`k_+(l-bye{V8`Qm?M(;C&@KSR6F3#9G6~Ot$G)#P1-J4 zg4A-c$zuk=y56r0aZ*Mi;aN&8p*!y>W5db-k8K&+bAdjM(Ng9Dm{hEwHW8FJa= z_*jC1j{)wIFG+vBdXmhplL|~puPG3yEl0l1yAm;8gqo~Jgp+Efsd}Av_|l3?N1fKF z(^Sy(L3#udLJNZX{32K_W=p)H1@F$9{TG`SmC{dFZ|(p#thN&ytFlTGps)sXeyUvq z8Tq$J!0r6R>Hk<(uVb^^?xW{>|LdL&`(@86wOW~S z24kLlQQm{6ch_Ifkdrquf(Z|;v@x5hS`0__>ya5F4x``P+#;%Y<`9BoD>`^wdLl`N zoSTo%+u73cI0mwf=x6^{|Ac7`s@hY^2)UApiHU`W$5UK@KnWyQ z#?BiHZ!^G@*CFTdbOv1k=U=IuAc1qBe>(Hy$dM~jtW@>p?ru$$GOpg;-P(m`sK5>W zoIMt=Lj}O<7D4 zXfu_m;==NlWYuUfhhr2Vj4IVryZpK$!x6D;y6kv(e>7UxFXbvz74N8R=i987ypA3? zw!w2#27UWU9bf)zIC{wHF>mSYN%Y-u^62LMcq;8%OHIgI6}cCD z%8P!8xFIa#zrWa})gyu5q^2_jvgW-sBN`2LrKPf^QwOILy+{aPZDno6nljh7femEH zZ%hgco(oT z?D-v9B|JxJ$2ZZeL1qh^m8R(#BSuIN(F+PvH}RYoxQ1R`0`%Ruw$I?$zEPkw(<|f! zQ4lq!p`c;=rr}LoZmg>o0Rcg>QwS2oktS!8GQ7m5ZPb?5$im6##?%4&E;5ad0~~_OoxanwnZIY41+`XQU?k`t9b4QuyEN z8|ZtMQTNz=K?HT|*uM~*lS+0KUJ`b0*xtXp0hl`2m_eSL^gnf-V^&(8yAm?nc|;)4 zvHDwJ#jTx3$B*uxWy0@UTVuyRv8C{$K)624VLST?Z0A#nCCMN`fB?`l{=6gAYZnp` z0{?y=%*-1LEnMYS~dtI<}a8MpUgJ87Lbz@TA{ztEc`eel@9$v1TGXo z3ctL1?z;cgX*x{|0znH>3JFNL4yQxt;?`25;M0Qx%5mmS)AwvRff#NvfTS{ z!sN`Is$^gC;ghY8orx%}2z>Vj=aN=B5b@<5n9U^1&a2F>| z3S&~&h@nN^nlvCw##_UC(z;#?0`@y3C^r4!n+;`Y7yG1QtEE|CSBCvh(gn9y&)&Hg zgXjeA>V=Xm`$ov05-iM#+h&D@--%>87|`!|2wGxNps)`*Ym0}XyxWDRvKnXjZ=2L6 zCMGH=qS7pZ$bBGz#BHdewa#HLjM+1Z$_VdAU1#dh+-fqC%LXvtr%)RN7###2qKBwNaRn zaF@S0ozM)4kN_u6YvVZX7u%%$wfe%?CG$@D&CSh2Nhs9gJdp%uNO)M-dqesGT?|A9 zQH46`OX+;7vGk`Q<7y`q6FG3Y&An$E1AqC~7sw<_jHq|PH?T+cjj85N4pv4gD!u%3 zZ?6m1^>B_w0oQ2=ARMraO5)cp{6M2si2Kdr9GuN*tdC5ti=(*N&M2T$@1)V5BfIr zMM{{sA`^5Y#e3in7 zwRA<-<9>c(t3FODw?Kou$)kyIwZZM>&-Api$n$wJ@X{?v1+^-L7vKP{vk^%MTdNYt%yp<@OdfO?<6D1Js#WcJ224`VqS- z%iw)aPYdWE4?Q;zA!;j+IS_+dP2bWIucagZSD!v3NB}|>sC@)m)23waa9AgQ)o|vR z0!qR<%xiPn^xE7b;i3tkK+b1X**%76Cy*fZ+og(WLip=Tp7fC+O`;Y)y?PeR@Yj8h zsksY&q?kd&$*YkSIv5Zj2Ti&vDbc)Hw;U?!@g4gW8R5MMXsgb@jv-cV^T`F`v|C+gZMK{PX99nB0#* zfd{=>!jY~a@nvgG&2+rQz&TI4qchi;Zi{0kA3Ea0u4B9`!08Vh*3LM^)eV)31$|K~ zo?+=9ZByV&FYiCGs}JtZ&N`d6aXH5yE^F(2__rpd0L23T1ziD*3JCEZO^Re1Z~YHV zf>8LYNuT0$qFbdQ?La~4PidT!dn0k0u_-I^4mY>((3khHhh=eek!%!#O>LFu921fl(~-AW zyuBQ}kcc2$TUU4Ec4kQ0*VYF4(I`S&Bj+D$EbEtMM(1ZWh*0+-DHDcyawc7QtVtz_ zKOs4DD+enfAtTE_$AYTjMLplX3stIDM@2@CFA2Rsefxf=7^?jE(=!u*VJp1JQ<66F z>_tV3R>@_}ppp{N&7O=)1qdQHZ{HtAo_vI|k-C<7W_%DeH7wON4IM{IxJ%s4Bco$~ z*6n9@1HYyA`Lv@8JxhKE3f+EItKRmW+}2k{1FJ|f5c-$ zzVjdA0XhB^4}21Y87Te@0u~k)-pJ56l#Pu|YHxRMB_S!^9>UzrJX%pf$#!UD6vRkR z2Rb`D+k|9gVUrvf8U}TAc7qCvOF<|oC4LcQlE*9EwaV?s*VN3tO6@P000>X1^@s6#OZ}&00001b5ch_0Itp)=>Px&LPM zDwQ^$JM3%A$gux1w9RX=y~4j zfFF(%5kv$aaL$ba9{^Kf0DuW6mpR@i*4m#%QSm0UT?t@V zMBb0;atoPQEcUMN`(wcF>dWr#Zlu4zzq;^%jEJPSS-eiFdL8Ih)pY>V(a`}wE|>fG z{{R4p$aAWCwgN;ZCME!$@qPa$+ux!GNlT^D^T33$)?%&wCKOAn0tk5bho1I#^22ry?dnaqtxNl?}AO>b}S z1)vlau)LgSU~q_=Kiwh-f;xZZ_FoL0ALjQzZa0L8$hQ_)P}Pef(iaYBZr(vx=Me@5 zhd`B7s)b!Ucd}9_FhBn{D=YUn)tBa})s;d@tD z>+9=#eBbW_dPHQOh@^nKsye5txni+69E-(ftM@Kr$`_#8y7vLJI8NFs*h_-|0000< KMNUMnLSTYMA*rtb diff --git a/.import/GIF.svg-5a9709256e5d5fa88074f69eceb8f498.md5 b/.import/GIF.svg-5a9709256e5d5fa88074f69eceb8f498.md5 deleted file mode 100644 index 6e1999a..0000000 --- a/.import/GIF.svg-5a9709256e5d5fa88074f69eceb8f498.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="2e9693d97aaf53d44836537aebf981d4" -dest_md5="1c0b4e7ff015e534b8da2b5e05fb3d95" - diff --git a/.import/GIF.svg-5a9709256e5d5fa88074f69eceb8f498.stex b/.import/GIF.svg-5a9709256e5d5fa88074f69eceb8f498.stex deleted file mode 100644 index 10871598daf76f16fbe2103079ce36aa6f666249..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 628 zcmV-)0*n1eL{n540000J000040000001yWO000130ssI|PDdb#P)Px%4oO5oR5*>*luK(9Q5c4w znOqhL33ciqHA#h}*h=cgg>GyWjBZqlMG=)++X_})DE%ZAstA^SdnDmyFBOPdCvEp!;xOTehaYACfR&6F$T3fkh06j z`z2YLZzdc-#)ct8pNzz=X2UlkNp#Asf^Ved0{i9#Aq2UcMj@X^mSuK#_u%n(%>9zC zBLG!ZsZ`1o3Iz*PQ54$Sw_61(#Uim-l=UC$ghE}EN;->+9~m0H#K6EQ01}Dk2w`w# z{2J+Wn%Vd?;c#!Ap#RWejzo^u3xp8F?nept?qziBvRSNYS>iKOL?XvgTR0^-x+Ys`n)IHPjtJisvc*eauw^?2NMy*yO7z{BoI>y1iegIr97eW{SIGxTd z#nP)c@6Je)^z@&Ow?zcv!vFsl$pRzWGP*#s14%;|2V~?O&1D-pNXegYZmQs)yhdLD O0000F2@c_5U|;}Y79eI|5MXBnk_Uh|z|UQw6G-rKNpS(Wyq+E|K|mU;oP!O>3M-9y z4x|{1gWR1M)}51i3FMS{x;TbtOx$~MBiA7Z0hSBpN>6l>XRi-jbLRUjy(j%XEAQT1 zQ@|n`bYx}Pw3)Iue3y!3Z-{>S&pRRhqp_4v#W9`7B2`glCNBzjllktkvaj3~w;NFk<$8*1DwM_Inu8Yh^!_U27=;x`4sc)z4*} HQ$iB});~(d diff --git a/.import/GuiTreeArrowLeft.svg-e8ce1afdeb6d24664bde8dabe76d9fb1.md5 b/.import/GuiTreeArrowLeft.svg-e8ce1afdeb6d24664bde8dabe76d9fb1.md5 deleted file mode 100644 index 1d6f90a..0000000 --- a/.import/GuiTreeArrowLeft.svg-e8ce1afdeb6d24664bde8dabe76d9fb1.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="003e0331016d78eedf88b8257d819ebf" -dest_md5="e8b520bc0fc123cd0ccd4ee5722b08a3" - diff --git a/.import/GuiTreeArrowLeft.svg-e8ce1afdeb6d24664bde8dabe76d9fb1.stex b/.import/GuiTreeArrowLeft.svg-e8ce1afdeb6d24664bde8dabe76d9fb1.stex deleted file mode 100644 index 2daf5937bf4ecfb7822e84339325f8b7f5f2162f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 213 zcmZ>F2@c_5U|;}Y79eI|5MXBnk~@Joz|UQw6G-rKNpS(Wyq+E|K|mU;oP!O>3M-9y z4x|{1gWR1M)}51i3FPE^x;TbtOx!xrnybNq$K`(4gKOL3(hi;yj_!;*cI(pCuGYv8 z%|~=)JcOUAIzMu0kr9o|TTt_|T7f~@AWGWi0wZrgpIMK&u%%UHx3vIVCg!05ZBq A2><{9 diff --git a/.import/GuiTreeArrowRight.svg-b33bc11a33cbd14667a5629bcb57f3d5.md5 b/.import/GuiTreeArrowRight.svg-b33bc11a33cbd14667a5629bcb57f3d5.md5 deleted file mode 100644 index 08b2e78..0000000 --- a/.import/GuiTreeArrowRight.svg-b33bc11a33cbd14667a5629bcb57f3d5.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="ba14ae9bd0aa27e1d62f383ec706c6a1" -dest_md5="316f02b61c5880808828291212aafb79" - diff --git a/.import/GuiTreeArrowRight.svg-b33bc11a33cbd14667a5629bcb57f3d5.stex b/.import/GuiTreeArrowRight.svg-b33bc11a33cbd14667a5629bcb57f3d5.stex deleted file mode 100644 index 4bf36eb5a4c27af4927f68a53e28eadd3e5c6298..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 221 zcmZ>F2@c_5U|;}Y79eI|5MXBnk_Uk}z|UQw6G-rKNpS(Wyq+E|K|mU;oP!O>3M-9y z4x|{1gWR1M)}51i3FMS}x;TbtOq_agBiA7V0k#M4T{51p+t<@Eng5RG3jN1#G73Ar z+lrQK`Kx%?(XObxGpK8CCr2U60n4lAB{K}RAJDuit5>n$KC@bl!J36UX+7K}_n87- zWvVsr+h%knd|vc}T{~>DamdK II;Vst08+_J3IG5A diff --git a/.import/GuiTreeArrowUp.svg-e64120bde372f069087a474910cfa497.md5 b/.import/GuiTreeArrowUp.svg-e64120bde372f069087a474910cfa497.md5 deleted file mode 100644 index fb4a447..0000000 --- a/.import/GuiTreeArrowUp.svg-e64120bde372f069087a474910cfa497.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="b3c638bb42f4a9d260cb44a473b0aed6" -dest_md5="89dfcc5920adfe7b14ef5ab52678113c" - diff --git a/.import/GuiTreeArrowUp.svg-e64120bde372f069087a474910cfa497.stex b/.import/GuiTreeArrowUp.svg-e64120bde372f069087a474910cfa497.stex deleted file mode 100644 index 54f7edfee79450ea9ace0963c40fe69342423d5c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 215 zcmZ>F2@c_5U|;}Y79eI|5MXBnlDmO8z|UQw6G-rKNpS(Wyq+E|K|mU;oP!O>3M-9y z4x|{1gWR1M)}51i3FH)dx;TbtOgwtgo2xm1r}g3aq*CT`>#{iWHy3nE?m3zVykKI< zSKq1dgJI!?1C0e1^-dmBi_4bjEx*L>ARHCC_o3>S6A~ZnZcQlYf0_FwlV9VZ*!l}x zQB2!iD|kd#+}`!DQ(JDvVd;+tL!7SO|M$WA0r#z=qFv!Ov(^GFXYh3Ob6Mw<&;$Ue Cx=4Zm diff --git a/.import/Nichi.png-c63899c8d28952c44f9070bd236c0867.md5 b/.import/Nichi.png-c63899c8d28952c44f9070bd236c0867.md5 deleted file mode 100644 index f355e25..0000000 --- a/.import/Nichi.png-c63899c8d28952c44f9070bd236c0867.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="0655ae21ba1294be9bbb416b444fbfee" -dest_md5="e4d81fb3e411949bbc3a0a94e04aefad" - diff --git a/.import/Nichi.png-c63899c8d28952c44f9070bd236c0867.stex b/.import/Nichi.png-c63899c8d28952c44f9070bd236c0867.stex deleted file mode 100644 index 7091bf504e7616734c9bc108c2d0e344caed99e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34691 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 diff --git a/.import/Sticker.svg-396c579041c93cdee6b35eaacb913c8f.md5 b/.import/Sticker.svg-396c579041c93cdee6b35eaacb913c8f.md5 deleted file mode 100644 index aaf6a1a..0000000 --- a/.import/Sticker.svg-396c579041c93cdee6b35eaacb913c8f.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="d2cb7469d1f4101c759a9afd2a6a4516" -dest_md5="8e06371a5810cdb2f64c0f087da4aba3" - diff --git a/.import/Sticker.svg-396c579041c93cdee6b35eaacb913c8f.stex b/.import/Sticker.svg-396c579041c93cdee6b35eaacb913c8f.stex deleted file mode 100644 index 07358fa3e8a80b691d32ca29cc9782c1b43d3f7e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 630 zcmV-+0*U=cL{n510000K000040000001yWO000150ssI|PDdb#P)200001b5ch_0Itp)=>Px%5J^NqR5*>jluc_>K@^6c znYlL?n%dZPNz6u332oXcsEBPNfl#mu1$E&HQx}tIwGaK z4yZa%Yp*pZfIyt^jeivoT6?WKtxHOIMr$t*U|DwKP=P=x#ZT7_joWtQyk*%Jn{uj@ zB0Ds|qo>ojt`}Zdhzt0PTa7{i_V)L(QY><9>IOS^Y{#~3oJb^)lj!P7Hw6V48P4%! zdWMC?rO^1kJ^eHd6+)2B43fk!mGt4zW-QlsDSVLynVOK>e^c1JmB=^ zt=p`8DiVuzFnMki0Idy51?OpuK}yNYT!GobJnhjaljEZ(rGO37FIOr6R4P@BF#tTD ze;ELN__)HCuipSDmC68AYc)LY?~4dH9U0EC@cIp@-MjuQi1uh3ckVuA zg43r?0x)#wAdcgZ+!n`ioN#C|5ht052b}e#yAeY2czT9d#}F2@VlpU|;}Y79a+)*cpLj9FPd`b64mD61-eeTtFdSPY;(MkOC0qU;~o!pZ_NU zDaPU;cPEB*=VV?2*&?1Ujv*Gkb0-;kF*{1M?l*Ud+``}C$>n%y$>nQyz1szf*|@p+ z7pyGi%+`Ov%hH`O`N$!sHB8#8KkLLK-#Bvg1_yWY7{%=rlG9hP;!cQt+x1k+uPON*&ZcJ=5yT7x?#8V?sngv zj|)1E`rWy}S&&nG)NApje5UprZ##A!Ff~|zI;fPPfPD`84N;TEw;>E3F2^k|h$L#u zGH|SA^J5eU$==I%VRJ2;&42a)k1D5K>}~zq9~*v%VqamG%oxMK!udck>chcMjy-GH zYhtf1`O_OGmG*zd@81{Gm;~O)Sj#hPwpuNE_DxN~^KK4v2W!R+7u2_lC9XT6@~jsa OSPY)7elF{r5}E*3QH%Tl diff --git a/.import/class-icon.svg-c17de51589a7d30572bf401526524f64.md5 b/.import/class-icon.svg-c17de51589a7d30572bf401526524f64.md5 deleted file mode 100644 index ed33694..0000000 --- a/.import/class-icon.svg-c17de51589a7d30572bf401526524f64.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="3e2b20167e2009ebc9425baacf261b17" -dest_md5="5d05730bcad63b1a3b238d7807112806" - diff --git a/.import/class-icon.svg-c17de51589a7d30572bf401526524f64.stex b/.import/class-icon.svg-c17de51589a7d30572bf401526524f64.stex deleted file mode 100644 index 0405f5fa08a45bd20ff3f66a009afa72978ce781..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 738 zcmV<80v-KFL{n550000P000040000003Zhe0002S0ssJ4MM6+gNk&Gx0ssJ4MM6+k zP&iDk0ssIn7yt$khvcAbBuR43u9n5|2XZ<>|2tDO97U2WE7_0jihna$KmroD?Qhy` zB+0JQ`w%|)r-M%fB%!P)7H)0Zs;cz_cXzjtm>MX?`k(@D%i+6ZxZZaH+;2}Hc;EsB z1qGodE)WexAb3!4gW!rI9{9sI1P7dpkru2P3L$6_)VfM>rO`N7D`$1aH!J}m026kY z&?K7L2Z2ipRL6s|fFdXcQ8w5FB0!f|3^ITZ8JXY<#|c)5FkAjD+Z={q7N|`_$9(KN zsP32EtBo$+Rgdm%%{6idk*uMSqF_u!1WPDlPhvDY@M+^yo3w2P+B2H$0JP3IL9T$# z_FJI!d;Ndk$J@4mK{%eS4=#`Q41%}y{GeqO@F3RqhTp6j2o0kz;e3A$@sIP|3nT#1 z+V(P1`_Ecq+sG6%Yi7E(ZQHi(Ti!IYrhJ*J@O0& zjF~!2EtfG9T6>g*u+A zetE$!FEt#mD=e-{vjH=moi8uXJI^mK-QBaWA&Zgx;6aGvY+&O^Uhv0AjieB`5sJs{ zV2{TUazm(*^pB>dU{0{9Nr~p>Cbp@gLxJ0t)@H7wt^HPkYmG&)Xl|6a6%N-Ag zsyIp<#VRTk2rmx}pDy{7KvQcAMH3bOpkLg}eSh~Qt#4fq59u#nPZ|S9<@e`iE%&y zsS>przdt0}&$vn*s5(D8uL`JD<3AKeCP^oGuzGQMu?l%7k|bjoYL1V~rw!SVZI~`U UK9(d3J;%Mh9Lus?Z|^a^7_do7(f|Me diff --git a/.import/icon.png-487276ed1e3a0c39cad0279d744ee560.md5 b/.import/icon.png-487276ed1e3a0c39cad0279d744ee560.md5 deleted file mode 100644 index 7b61c3e..0000000 --- a/.import/icon.png-487276ed1e3a0c39cad0279d744ee560.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="47313fa4c47a9963fddd764e1ec6e4a8" -dest_md5="2ded9e7f9060e2b530aab678b135fc5b" - diff --git a/.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex b/.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex deleted file mode 100644 index 3ca6461f885d763a3f3c745fe6819ed84bfd666a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3413 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

;bxNq9|WS`!!V>%SQOR5^#<(e~B) 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 diff --git a/.import/scroll_thumb.png-58476a9e7d7cd60ad4f03afc80032c48.md5 b/.import/scroll_thumb.png-58476a9e7d7cd60ad4f03afc80032c48.md5 deleted file mode 100644 index b1564f0..0000000 --- a/.import/scroll_thumb.png-58476a9e7d7cd60ad4f03afc80032c48.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="b028dfd419cfb1919d60f00965d92ce0" -dest_md5="f72b36d334e259409d638f0c6ec5ee11" - diff --git a/.import/scroll_thumb.png-58476a9e7d7cd60ad4f03afc80032c48.stex b/.import/scroll_thumb.png-58476a9e7d7cd60ad4f03afc80032c48.stex deleted file mode 100644 index c1b097b93f10a26405e201a0d55bb3dad2d58dde..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 408 zcmV;J0cZY4L{n5U0000o000040000003Zhe0001d0RRA3MM6+gNk&F+0RRA3MM6+k zP&iCv0RR9mF+dCug@d+@1ZnuAHHV+6ZufD&f^q zK46s=g*}L<){0~^QHzZiBdJMZetfFcJ^(O=E&~H_YB>j3w^@P6Z8FiS^%{#lb6uZc z-)HaIr}yY{{|DDTy?vj(u1~P&GuQTMh}`Di8?4)`0IrP#7((0TFGLpS z@Oyw5OJ7OG1n00H0OQl}g~11dd$=!v;jH9Lw&ECsLmB`e8gs#3@9wU*7tA#T@vs6{ CZK+}a diff --git a/.import/scroll_track.png-366a333b3e97d53bb138079a7446d44e.md5 b/.import/scroll_track.png-366a333b3e97d53bb138079a7446d44e.md5 deleted file mode 100644 index 2f0dd3a..0000000 --- a/.import/scroll_track.png-366a333b3e97d53bb138079a7446d44e.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="1e226bb98590191ec6edb393fd824654" -dest_md5="600aa1a5d7e8586d296cbb5a34bd1de0" - diff --git a/.import/scroll_track.png-366a333b3e97d53bb138079a7446d44e.stex b/.import/scroll_track.png-366a333b3e97d53bb138079a7446d44e.stex deleted file mode 100644 index 8fc3337d6ef08d3c3a6cd92c97c1d8fda71788ac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 378 zcmV-=0fqiYL{n5U0000o000040000003Zhe000190RRA3MM6+gNk&Fe0RRA3MM6+k zP&iCQ0RR9mF+dCug@iVe1W79XqH5LB9edw z(bA+oG+71=!+_|nK6VcnunSCm&V(%rdbLn5+?ZO)PVQ={`@vGJwG716V?6WL(dV~OnE;*KlpU^ol< z2EA~Dz}_(d`>+A-uiO!bVF<7^y)aoK4*v!aQTa*{3F5E^fa>@c+#f|AassH6#BW@3 YqBsuM0{~*HVY0z&Hpon4OK=`m0DY&PK>z>% From 80e711e5334536128728a8098eca6c5b1046cbf0 Mon Sep 17 00:00:00 2001 From: sairam4123 Date: Tue, 31 Aug 2021 01:18:48 +0530 Subject: [PATCH 4/4] Add reply and much more. --- DiscordEdit.gd | 6 +++- Main.gd | 24 +++++++------ Scenes/Config.gd | 35 +++++++++++++++--- Scenes/Config.tscn | 1 + Scenes/Server/Server.gd | 41 ++++++++++++++++----- Scenes/Server/Server.tscn | 54 +++++++++++++++------------- Scenes/Server/member_button.gd | 9 ++--- Scenes/Server/message.gd | 18 ++++++---- Scenes/Server/message.tscn | 22 ++++++------ addons/discord_gd/classes/channel.gd | 53 +++++++++++++++++++++++++-- addons/discord_gd/classes/helpers.gd | 20 +++++++---- addons/discord_gd/discord.gd | 2 +- project.godot | 2 ++ 13 files changed, 208 insertions(+), 79 deletions(-) diff --git a/DiscordEdit.gd b/DiscordEdit.gd index 66f3ba7..b2f48f6 100644 --- a/DiscordEdit.gd +++ b/DiscordEdit.gd @@ -64,7 +64,11 @@ func adjust_text_nodes(): rect_position.y += line_height rect_min_size.y -= line_height - +func update(): + main_text.center_viewport_to_cursor() + adjust_text_nodes() + placeholder.text = placeholder_text + main_text.text = text func _on_TextEdit_text_changed() -> void: adjust_text_nodes() diff --git a/Main.gd b/Main.gd index dd6d8de..7dbb017 100644 --- a/Main.gd +++ b/Main.gd @@ -3,6 +3,8 @@ extends Control export(PackedScene) var server_scene = preload("res://Scenes/Server/Server.tscn") +var config_path = "user://config.cfg" + var current_guild_id: = "" var current_channel_id: = "" @@ -16,10 +18,10 @@ var servers: Dictionary = {} func _ready() -> void: bot_node.VERBOSE = true var file = File.new() - if !file.file_exists("user://config.cfg"): + if !file.file_exists(config_path): tab_container.current_tab = 1 else: - setup_bot("user://config.cfg") + setup_bot(config_path) tab_container.current_tab = 2 func setup_bot(file_path): @@ -27,14 +29,6 @@ func setup_bot(file_path): f.load(file_path) bot_node.INTENTS = f.get_value("Main", "Intents", 32383) bot_node.login(f.get_value("Main", "BotToken", ""), f.get_value("Main", "ApplicationID", "")) - bot_node.set_presence({ - "status": f.get_value("Main", "Status", "idle"), - "afk": f.get_value("Main", "AFK", false), - "activity": { - "type": f.get_value("Main", "Type", "listening"), - "name": f.get_value("Main", "Name", "you. Please be sane!"), - } - }) func _on_DiscordBot_bot_ready(bot: DiscordBot) -> void: print("Logged in as |%s#%s|" % [bot.user.username, bot.user.discriminator]) @@ -43,6 +37,16 @@ func _on_DiscordBot_bot_ready(bot: DiscordBot) -> void: for guild in bot.guilds: servers.append(bot.guilds[guild].name) print("Ready on %s servers (guilds): %s and %s channels" % [bot.guilds.size(), servers, bot.channels.size()]) + var f = ConfigFile.new() + f.load(config_path) + bot_node.set_presence({ + "status": f.get_value("Main", "Status", "idle"), + "afk": f.get_value("Main", "AFK", false), + "activity": { + "type": f.get_value("Main", "Type", "listening"), + "name": f.get_value("Main", "Name", "you. Please be sane!"), + } + }) # bot_node.add_application_commands( # { diff --git a/Scenes/Config.gd b/Scenes/Config.gd index e81a412..e3691ca 100644 --- a/Scenes/Config.gd +++ b/Scenes/Config.gd @@ -7,13 +7,43 @@ var file_path: String = "user://config.cfg" onready var settings_container = $SettingsContainer +var statuses = { + "invisible": "offline", # exception + "dnd": "dnd", + "online": "online", + "idle": "idle", + "offline": "offline", + "do not disturb": "dnd" # exception +} func _ready() -> void: f.load(file_path) for key in f.get_section_keys("Main"): var refined_key = key.replace(":", "") settings[refined_key] = f.get_value("Main", key) + +# print(settings) + settings["Name"] = "you. Please be sane." + for child in settings_container.get_children(): + if child.get_child_count(): +# print(child.get_node("Label").text.rstrip(":")) +# print(settings[child.get_node("Label").text.rstrip(":")]) + if child.get_child(1) is LineEdit: + + child.get_node("LineEdit").text = settings[child.get_node("Label").text.rstrip(":")] + if child.get_child(1) is CheckBox: + child.get_node("CheckBox").pressed = settings[child.get_node("Label").text.rstrip(":")] + if child.get_child(1) is OptionButton: +# print(settings[child.get_node("Label").text.rstrip(":")]) +# print(find_selected_from_id(child.get_node("OptionButton"), settings[child.get_node("Label").text.rstrip(":")])) + child.get_node("OptionButton").selected = find_selected_from_id(child.get_node("OptionButton"), settings[child.get_node("Label").text.rstrip(":")]) +func find_selected_from_id(button: OptionButton, text: String): + for index in button.get_item_count(): + var ind_text = button.get_item_text(index) + if ind_text.to_lower() == text.to_lower(): + return index + return -1 func _on_Configure_pressed() -> void: # yield(settings_container, "ready") @@ -25,10 +55,8 @@ func _on_Configure_pressed() -> void: settings[child.get_node("Label").text.rstrip(":")] = child.get_node("CheckBox").pressed if child.get_child(1) is OptionButton: settings[child.get_node("Label").text.rstrip(":")] = child.get_node("OptionButton").text.to_lower() - print(settings) for key in settings: if settings[key]: - print(key) f.set_value("Main", key, settings[key]) f.save(file_path) @@ -36,9 +64,8 @@ func _on_Configure_pressed() -> void: owner.bot_node.INTENTS = settings.Intents if settings.has("Intents") else 32383 print(f.get_value("Main", $SettingsContainer/HBoxContainer/Label.text.rstrip(":"), "failing")) print(f.get_section_keys("Main")) - owner.bot_node.login(f.get_value("Main", $SettingsContainer/HBoxContainer/Label.text.rstrip(":"), ""), f.get_value("Main", $SettingsContainer/HBoxContainer2/Label.text, "")) owner.bot_node.set_presence({ - "status": settings.Status if settings.has("Status") else "idle", + "status": statuses[settings.Status.to_lower() if settings.has("Status") else "idle"], "afk": settings.AFK if settings.has("AFK") else false, "activity": { "type": settings.Type if settings.has("Type") else "listening", diff --git a/Scenes/Config.tscn b/Scenes/Config.tscn index 85f72e4..5b7bf57 100644 --- a/Scenes/Config.tscn +++ b/Scenes/Config.tscn @@ -259,6 +259,7 @@ margin_bottom = 46.0 size_flags_horizontal = 3 size_flags_vertical = 3 size_flags_stretch_ratio = 1.98 +text = "Please be sane." placeholder_text = "Value here...." [node name="Configure" type="Button" parent="."] diff --git a/Scenes/Server/Server.gd b/Scenes/Server/Server.gd index ad61d2c..6381123 100644 --- a/Scenes/Server/Server.gd +++ b/Scenes/Server/Server.gd @@ -8,13 +8,14 @@ export var message_scene = preload("res://Scenes/Server/message.tscn") var guild: Guild var bot: DiscordBot var current_channel: String setget set_channel +var referenced_message: Dictionary onready var channels_container = $HSplitContainer/ChannelContainer/Channels onready var members_container = $HSplitContainer/HSplitContainer/MembersContainer/Members onready var messages_container = $HSplitContainer/HSplitContainer/MessagesContainer/MessageContainer/Messages onready var typing_label = $HSplitContainer/HSplitContainer/MessagesContainer/Typing onready var timer = $Timer - +onready var discord_edit = $HSplitContainer/HSplitContainer/MessagesContainer/DiscordEdit func _ready() -> void: name = guild.name @@ -45,16 +46,34 @@ func set_channel(value: String) -> void: child.queue_free() var channel = yield(guild.get_channel(bot, current_channel), "completed") - var messages: Array = yield(channel.get_messages(bot, channel.id, channel.last_message_id), "completed") + var messages: Array = yield(channel.get_messages(bot, channel.id), "completed") for message in messages: yield(get_tree(), "idle_frame") message_recieved(message, channel) - + + discord_edit.placeholder_text = "Message #%s" % channel.name + discord_edit.update() + +func reply_pressed(message: Message): + $HSplitContainer/HSplitContainer/MessagesContainer/ReplyMessage.text = "Replying to %s" % message.author.username + $HSplitContainer/HSplitContainer/MessagesContainer/ReplyMessage.show() + print(message.guild_id, "test", message.channel_id, message.id) + if message.guild_id: + referenced_message = {"message_id": message.id, "channel_id": message.channel_id, "guild_id": message.guild_id} + else: + referenced_message = {"message_id": message.id, "channel_id": message.channel_id} + func _on_DiscordEdit_text_entered(text: String): if text != "": - Channel.create_message(bot, {"content": text}, current_channel) + if referenced_message: + Channel.create_message(bot, {"content": text, "message_reference": referenced_message, "type": 19}, current_channel) + else: + Channel.create_message(bot, {"content": text}, current_channel) + if $HSplitContainer/HSplitContainer/MessagesContainer/ReplyMessage.visible: + $HSplitContainer/HSplitContainer/MessagesContainer/ReplyMessage.hide() + referenced_message = {} func message_recieved(message: Message, channel: Channel): typing_label.hide() @@ -71,14 +90,18 @@ func message_recieved(message: Message, channel: Channel): new_message.content = message.content new_message.name = message.id new_message.author_name = message.author.username - var time_zone = OS.get_time_zone_info() - var date_time = Helpers.to_datetime(message.timestamp) - var current_time = OS.get_unix_time_from_datetime(date_time) + time_zone.bias * 60 - var timestamp = OS.get_datetime_from_unix_time(current_time) + var timestamp + if message.edited_timestamp: + timestamp = Helpers.get_local_time(message.edited_timestamp) + else: + timestamp = Helpers.get_local_time(message.timestamp) new_message.time = "%s %s" % [Helpers.get_date(timestamp), Helpers.get_time(timestamp)] - + messages_container.add_child(new_message) + new_message.connect("reply_pressed", self, "reply_pressed", [message]) new_message.message = message + if message.edited_timestamp: + new_message.edited_node.show() # new_message.get_parent().move_child(new_message, 0) diff --git a/Scenes/Server/Server.tscn b/Scenes/Server/Server.tscn index 6445930..70ccc75 100644 --- a/Scenes/Server/Server.tscn +++ b/Scenes/Server/Server.tscn @@ -33,13 +33,14 @@ __meta__ = { } [node name="ChannelContainer" type="ScrollContainer" parent="HSplitContainer"] -margin_bottom = 589.0 +margin_right = 418.0 +margin_bottom = 1069.0 size_flags_horizontal = 3 size_flags_vertical = 3 [node name="Channels" type="VBoxContainer" parent="HSplitContainer/ChannelContainer"] -margin_right = 58.0 -margin_bottom = 577.0 +margin_right = 418.0 +margin_bottom = 1069.0 size_flags_horizontal = 3 size_flags_vertical = 3 __meta__ = { @@ -47,7 +48,7 @@ __meta__ = { } [node name="Label" type="Label" parent="HSplitContainer/ChannelContainer/Channels"] -margin_right = 58.0 +margin_right = 418.0 margin_bottom = 14.0 text = "Channels" align = 1 @@ -55,20 +56,20 @@ valign = 1 [node name="HSeparator" type="HSeparator" parent="HSplitContainer/ChannelContainer/Channels"] margin_top = 18.0 -margin_right = 58.0 +margin_right = 418.0 margin_bottom = 22.0 [node name="HSplitContainer" type="HSplitContainer" parent="HSplitContainer"] -margin_left = 12.0 -margin_right = 1008.0 -margin_bottom = 589.0 +margin_left = 430.0 +margin_right = 1904.0 +margin_bottom = 1069.0 size_flags_horizontal = 3 size_flags_vertical = 3 split_offset = 109 [node name="MessagesContainer" type="VBoxContainer" parent="HSplitContainer/HSplitContainer"] -margin_right = 790.0 -margin_bottom = 589.0 +margin_right = 1120.0 +margin_bottom = 1069.0 size_flags_horizontal = 3 size_flags_vertical = 3 size_flags_stretch_ratio = 2.23 @@ -77,8 +78,8 @@ __meta__ = { } [node name="MessageContainer" type="ScrollContainer" parent="HSplitContainer/HSplitContainer/MessagesContainer"] -margin_right = 790.0 -margin_bottom = 551.0 +margin_right = 1120.0 +margin_bottom = 1013.0 size_flags_horizontal = 3 size_flags_vertical = 3 follow_focus = true @@ -87,8 +88,8 @@ __meta__ = { } [node name="Messages" type="VBoxContainer" parent="HSplitContainer/HSplitContainer/MessagesContainer/MessageContainer"] -margin_right = 790.0 -margin_bottom = 551.0 +margin_right = 1120.0 +margin_bottom = 1013.0 size_flags_horizontal = 3 size_flags_vertical = 3 size_flags_stretch_ratio = 1.1 @@ -97,13 +98,18 @@ __meta__ = { "_edit_use_anchors_": false } +[node name="ReplyMessage" type="Label" parent="HSplitContainer/HSplitContainer/MessagesContainer"] +margin_top = 1017.0 +margin_right = 1120.0 +margin_bottom = 1031.0 + [node name="DiscordEdit" parent="HSplitContainer/HSplitContainer/MessagesContainer" instance=ExtResource( 2 )] anchor_top = 0.0 anchor_right = 0.0 anchor_bottom = 0.0 -margin_top = 555.0 -margin_right = 790.0 -margin_bottom = 589.0 +margin_top = 1035.0 +margin_right = 1120.0 +margin_bottom = 1069.0 size_flags_vertical = 8 [node name="Typing" type="Label" parent="HSplitContainer/HSplitContainer/MessagesContainer"] @@ -114,15 +120,15 @@ margin_bottom = 589.0 text = "@%s is typing..." [node name="MembersContainer" type="ScrollContainer" parent="HSplitContainer/HSplitContainer"] -margin_left = 802.0 -margin_right = 996.0 -margin_bottom = 589.0 +margin_left = 1132.0 +margin_right = 1474.0 +margin_bottom = 1069.0 size_flags_horizontal = 3 size_flags_vertical = 3 [node name="Members" type="VBoxContainer" parent="HSplitContainer/HSplitContainer/MembersContainer"] -margin_right = 194.0 -margin_bottom = 589.0 +margin_right = 342.0 +margin_bottom = 1069.0 size_flags_horizontal = 3 size_flags_vertical = 3 __meta__ = { @@ -130,7 +136,7 @@ __meta__ = { } [node name="Label" type="Label" parent="HSplitContainer/HSplitContainer/MembersContainer/Members"] -margin_right = 194.0 +margin_right = 342.0 margin_bottom = 14.0 text = "Members" align = 1 @@ -138,7 +144,7 @@ valign = 1 [node name="HSeparator" type="HSeparator" parent="HSplitContainer/HSplitContainer/MembersContainer/Members"] margin_top = 18.0 -margin_right = 194.0 +margin_right = 342.0 margin_bottom = 22.0 [node name="Timer" type="Timer" parent="."] diff --git a/Scenes/Server/member_button.gd b/Scenes/Server/member_button.gd index 9ebaf60..da38644 100644 --- a/Scenes/Server/member_button.gd +++ b/Scenes/Server/member_button.gd @@ -1,7 +1,7 @@ extends Button -onready var member = {} setget set_member +onready var member setget set_member onready var popup = $PopupMenu @@ -16,7 +16,10 @@ func _ready() -> void: func set_member(value: Dictionary) -> void: - member = value.duplicate() + if !value: + return + + member = value name = member.user.id hint_tooltip = Helpers.print_dict(member) @@ -24,7 +27,6 @@ func set_member(value: Dictionary) -> void: text = member.nick else: text = member.user.username - print(member, "cool") func _on_PopupMenu_about_to_show() -> void: @@ -42,5 +44,4 @@ func _on_PopupMenu_id_pressed(id): match id: 0: # copy - print(member, "testing") # this is empty dict for no reason? OS.set_clipboard(member.user.id) diff --git a/Scenes/Server/message.gd b/Scenes/Server/message.gd index ae6c740..6914a90 100644 --- a/Scenes/Server/message.gd +++ b/Scenes/Server/message.gd @@ -1,5 +1,6 @@ extends Control +signal reply_pressed var bot: DiscordBot var message: Message setget set_message @@ -14,7 +15,7 @@ onready var name_node = $VBoxContainer/HBoxContainer/VBoxContainer/HBoxContainer onready var time_node = $VBoxContainer/HBoxContainer/VBoxContainer/HBoxContainer/Time onready var avatar_node = $VBoxContainer/HBoxContainer/Avatar onready var content_node = $VBoxContainer/HBoxContainer/VBoxContainer/Content -onready var edited_node = $VBoxContainer/HBoxContainer/VBoxContainer/HBoxContainer/Editted +onready var edited_node = $VBoxContainer/HBoxContainer/VBoxContainer/HBoxContainer/Edited onready var text_edit = $VBoxContainer/HBoxContainer/VBoxContainer/TextEdit onready var edit_button = $VBoxContainer/HBoxContainer/HBoxContainer2/Edit onready var reply_button = $VBoxContainer/HBoxContainer/HBoxContainer2/Reply @@ -52,7 +53,9 @@ func set_message(value: Message) -> void: name_node.text = message.author.username - time_node.text = "Today at %s" % message.edited_timestamp + if message.edited_timestamp: + var parsed_date_time = Helpers.get_local_time(message.edited_timestamp) + time_node.text = "%s %s" % [Helpers.get_date(parsed_date_time), Helpers.get_time(parsed_date_time)] var dict: Dictionary for key in message.get_property_list(): @@ -85,7 +88,7 @@ func _on_Delete_pressed() -> void: func _on_Reply_pressed() -> void: - pass # Replace with function body. + emit_signal("reply_pressed") func _on_Edit_toggled(button_pressed: bool) -> void: @@ -93,10 +96,13 @@ func _on_Edit_toggled(button_pressed: bool) -> void: func _on_TextEdit_gui_input(event: InputEvent) -> void: if event is InputEventKey: - if event.scancode == KEY_ENTER and not event.shift: + if event.scancode == KEY_ENTER and not event.shift and not event.echo: edit_mode(false) - Channel.edit_message(server.bot, name, server.current_channel, {"content":text_edit.text}) - time_node.text = "Today at %s" % Helpers.get_time() + yield(Channel.edit_message(server.bot, name, server.current_channel, {"content": text_edit.text}), "completed") + if message.edited_timestamp: + var parsed_date_time = Helpers.get_local_time(message.edited_timestamp) + print(parsed_date_time) + time_node.text = "%s %s" % [Helpers.get_date(parsed_date_time), Helpers.get_time(parsed_date_time)] func _on_PanelContainer_mouse_exited() -> void: diff --git a/Scenes/Server/message.tscn b/Scenes/Server/message.tscn index 8ed2a1e..8c9da15 100644 --- a/Scenes/Server/message.tscn +++ b/Scenes/Server/message.tscn @@ -23,10 +23,10 @@ __meta__ = { } [node name="VBoxContainer" type="VBoxContainer" parent="."] -margin_left = 10.0 -margin_top = 10.0 -margin_right = 1014.0 -margin_bottom = 58.0 +margin_left = 7.0 +margin_top = 7.0 +margin_right = 1913.0 +margin_bottom = 59.0 size_flags_horizontal = 3 size_flags_vertical = 3 @@ -47,7 +47,7 @@ margin_bottom = 14.0 text = "Some refrenced message" [node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer"] -margin_right = 1004.0 +margin_right = 1906.0 margin_bottom = 48.0 [node name="Avatar" type="TextureRect" parent="VBoxContainer/HBoxContainer"] @@ -63,13 +63,13 @@ __meta__ = { [node name="VBoxContainer" type="VBoxContainer" parent="VBoxContainer/HBoxContainer"] margin_left = 52.0 -margin_right = 850.0 +margin_right = 1610.0 margin_bottom = 48.0 size_flags_horizontal = 3 size_flags_stretch_ratio = 5.35 [node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer/HBoxContainer/VBoxContainer"] -margin_right = 798.0 +margin_right = 1558.0 margin_bottom = 14.0 custom_constants/separation = 14 @@ -85,7 +85,7 @@ margin_bottom = 14.0 custom_colors/font_color = Color( 0.447059, 0.447059, 0.447059, 1 ) text = "Today at 16:00PM" -[node name="Editted" type="Label" parent="VBoxContainer/HBoxContainer/VBoxContainer/HBoxContainer"] +[node name="Edited" type="Label" parent="VBoxContainer/HBoxContainer/VBoxContainer/HBoxContainer"] visible = false margin_left = 206.0 margin_right = 260.0 @@ -94,7 +94,7 @@ text = "(editted)" [node name="Content" type="Label" parent="VBoxContainer/HBoxContainer/VBoxContainer"] margin_top = 18.0 -margin_right = 798.0 +margin_right = 1558.0 margin_bottom = 48.0 size_flags_horizontal = 3 size_flags_vertical = 3 @@ -112,8 +112,8 @@ size_flags_vertical = 3 caret_blink = true [node name="HBoxContainer2" type="HBoxContainer" parent="VBoxContainer/HBoxContainer"] -margin_left = 858.0 -margin_right = 1004.0 +margin_left = 1760.0 +margin_right = 1906.0 margin_bottom = 20.0 size_flags_horizontal = 10 size_flags_vertical = 0 diff --git a/addons/discord_gd/classes/channel.gd b/addons/discord_gd/classes/channel.gd index ee9e0f6..baacbbf 100644 --- a/addons/discord_gd/classes/channel.gd +++ b/addons/discord_gd/classes/channel.gd @@ -72,17 +72,64 @@ static func get_message(bot, message_id: String, channel_id: String) -> Dictiona return Message.new(bot, yield(bot._send_get("/channels/%s/messages/%s" % [channel_id, message_id]), "completed")) -static func get_messages(bot, channel_id: String, before: String, limit: int = 100) -> Array: - var message_array: Array = yield(bot._send_get("/channels/%s/messages" % channel_id + "?before=%s&limit=%s" % [before, limit]), "completed") +func get_messages(bot, channel_id: String, before: String = "", limit: int = 100) -> Array: + var message_array: Array = yield(bot._send_get("/channels/%s/messages" % channel_id + "?limit=%s" % [limit]), "completed") var message_object_array: Array for message in message_array: var message_object = Message.new(bot, message) message_object_array.append(message_object) - message_object_array.invert() + message_object_array = Sorter.new(self, "_sort_message_array", message_object_array, []).get_array() + return message_object_array +static func _sort_message_array(a: Message, b: Message): + var a_datetime = Helpers.to_datetime(a.timestamp) + var b_datetime = Helpers.to_datetime(b.timestamp) + + if a_datetime.year < b_datetime.year: + return true + if a_datetime.year == b_datetime.year and a_datetime.month < b_datetime.month: + return true + if a_datetime.year == b_datetime.year and a_datetime.month == b_datetime.month and a_datetime.day < b_datetime.day: + return true + if (a_datetime.year == b_datetime.year and a_datetime.month == b_datetime.month and + a_datetime.day == b_datetime.day and a_datetime.hour < b_datetime.hour): + return true + if (a_datetime.year == b_datetime.year and a_datetime.month == b_datetime.month and + a_datetime.day == b_datetime.day and a_datetime.hour == b_datetime.hour and + a_datetime.minute < b_datetime.minute): + return true + if (a_datetime.year == b_datetime.year and a_datetime.month == b_datetime.month and + a_datetime.day == b_datetime.day and a_datetime.hour == b_datetime.hour and + a_datetime.minute == b_datetime.minute and a_datetime.second < b_datetime.second): + return true + if (a_datetime.year == b_datetime.year and a_datetime.month == b_datetime.month and + a_datetime.day == b_datetime.day and a_datetime.hour == b_datetime.hour and + a_datetime.minute == b_datetime.minute and a_datetime.second == b_datetime.second): + return true + return false + + static func send_typing(bot, channel_id: String): return yield(bot._send_request("/channels/%s/typing" % channel_id, {}), "completed") +class Sorter: + var extra_params = [] + var array + var object: Object + var function: String + + func _init(_object, _function, _array, _extra_params): + self.object = _object + self.function = _function + self.extra_params = _extra_params + self.array = _array + self.array.sort_custom(self, "sort") + + func get_array(): + return array + + func sort(a, b): + return object.callv(function, [a, b] + extra_params) diff --git a/addons/discord_gd/classes/helpers.gd b/addons/discord_gd/classes/helpers.gd index f9f5fab..13cdc77 100644 --- a/addons/discord_gd/classes/helpers.gd +++ b/addons/discord_gd/classes/helpers.gd @@ -38,17 +38,25 @@ static func get_date(datetime: Dictionary = OS.get_datetime()): return "%02d/%02d/%02d" % [datetime.day, datetime.month, datetime.year] static func to_datetime(iso: String): + if iso.empty(): + return var date = iso.split("T")[0] var time = iso.split("T")[1] return { - "year": date.split("-")[0], - "month": date.split("-")[1], - "day": date.split("-")[2], - "hour": time.split(":")[0], - "minute": time.split(":")[1], - "second": time.split(":")[2].split(".")[0], + "year": date.split("-")[0].to_int(), + "month": date.split("-")[1].to_int(), + "day": date.split("-")[2].to_int(), + "hour": time.split(":")[0].to_int(), + "minute": time.split(":")[1].to_int(), + "second": time.split(":")[2].split(".")[0].to_int(), } +static func get_local_time(timestamp: String): + var time_zone = OS.get_time_zone_info() + var date_time = to_datetime(timestamp) + var current_time = OS.get_unix_time_from_datetime(date_time) + time_zone.bias * 60 + return OS.get_datetime_from_unix_time(current_time) + # Pretty prints a Dictionary static func print_dict(d: Dictionary) -> String: # print(JSON.print(d, '\t')) diff --git a/addons/discord_gd/discord.gd b/addons/discord_gd/discord.gd index dfe60a4..8aa92b0 100644 --- a/addons/discord_gd/discord.gd +++ b/addons/discord_gd/discord.gd @@ -122,7 +122,7 @@ func login(token: String, app_id: String = '') -> void: assert(TOKEN.length() > 2, 'ERROR: Unable to login. TOKEN attribute not set.') _headers = ['Authorization: Bot %s' % TOKEN, 'User-Agent: discord.gd (https://github.com/3ddelano/discord.gd)'] _login_error = _client.connect_to_url(_gateway_base) - + print(_login_error) # No internet? if _login_error == ERR_INVALID_PARAMETER: print('Trying to reconnect in 5s') diff --git a/project.godot b/project.godot index 5989784..155f009 100644 --- a/project.godot +++ b/project.godot @@ -127,6 +127,8 @@ GlobalTween="*res://tween.gd" [display] +window/size/width=1920 +window/size/height=1080 window/size/test_width=1600 window/size/test_height=900