image from code wooo
Diffstat (limited to 'Main.gd')
-rw-r--r--Main.gd72
1 files changed, 72 insertions, 0 deletions
diff --git a/Main.gd b/Main.gd
new file mode 100644
index 0000000..612ab8f
--- /dev/null
+++ b/Main.gd
@@ -0,0 +1,72 @@
+extends Node
+
+const prefix := "!c"
+
+onready var code_view: CodeDisplay = $"%Code"
+onready var viewport: CodeViewport = $"%CodeViewport"
+
+var file = File.new()
+
+
+func compile(source: String) -> RegEx:
+ var reg := RegEx.new()
+ reg.compile(source)
+ return reg
+
+
+func _ready():
+ var bot := DiscordBot.new()
+ add_child(bot)
+ var err = file.open("res://token", File.READ)
+ var token
+ if err == OK:
+ token = file.get_as_text()
+ elif OS.has_environment("TOKEN"):
+ token = OS.get_environment("TOKEN")
+ else:
+ push_error("token missing")
+ file.close()
+ bot.TOKEN = token
+ bot.connect("bot_ready", self, "_on_bot_ready")
+ bot.connect("message_create", self, "_on_message_create")
+ bot.login()
+
+
+func _on_bot_ready(bot: DiscordBot):
+ bot.set_presence({"activity": {"type": "Game", "name": "Creating imagery"}})
+ print("Logged in as " + bot.user.username + "#" + bot.user.discriminator)
+ print("Listening on " + str(bot.channels.size()) + " channels and " + str(bot.guilds.size()) + " guilds.")
+
+
+func _on_message_create(bot: DiscordBot, message: Message, _channel: Dictionary):
+ var split = message.content.split(" ")
+ if message.author.bot or not prefix in split[0]:
+ return
+ var res
+ if message.content.find("```") != -1:
+ var reg := compile("```([\\s\\S]+)```")
+ res = reg.search(message.content)
+ elif message.content.find("`") != -1:
+ var reg := compile("`([^`]+)`")
+ res = reg.search(message.content)
+ split.remove(0)
+ var code: String = res.strings[1] if res else split.join(" ")
+ var lines = code.split("\n")
+ if res and lines[0] in ["swift", "py", "c", "c++"]:
+ lines.remove(0)
+ code = lines.join("\n")
+
+ code = code.strip_edges()
+
+ if !code:
+ return
+
+ code_view.set_text(code)
+ code_view.emit_signal("text_changed")
+ viewport.warmup()
+
+ yield(get_tree(), "idle_frame")
+ var img: Image = viewport.save()
+ bot.reply(
+ message, {"files": [{"name": "code.png", "media_type": "image/png", "data": img.save_png_to_buffer()}]}
+ )