diff --git a/.gitignore b/.gitignore index d67d0d7..3f958d1 100644 --- a/.gitignore +++ b/.gitignore @@ -4,4 +4,5 @@ server/node_modules nimscan/bin .vscode server_backup -old_tests \ No newline at end of file +old_tests +nim_bot/token.key \ No newline at end of file diff --git a/nim_bot/nim_bot.nimble b/nim_bot/nim_bot.nimble new file mode 100644 index 0000000..b50f6cc --- /dev/null +++ b/nim_bot/nim_bot.nimble @@ -0,0 +1,13 @@ +# Package + +version = "0.1.0" +author = "TaxMachine" +description = "A new awesome nimble package" +license = "MIT" +srcDir = "src" +bin = @["nim_bot"] + + +# Dependencies + +requires "nim >= 1.6.6" diff --git a/nim_bot/src/config.nims b/nim_bot/src/config.nims new file mode 100644 index 0000000..370eccb --- /dev/null +++ b/nim_bot/src/config.nims @@ -0,0 +1,2 @@ +switch("d", "ssl") +switch("d", "release") \ No newline at end of file diff --git a/nim_bot/src/nim_bot b/nim_bot/src/nim_bot new file mode 100755 index 0000000..c7279c3 Binary files /dev/null and b/nim_bot/src/nim_bot differ diff --git a/nim_bot/src/nim_bot.nim b/nim_bot/src/nim_bot.nim new file mode 100644 index 0000000..c283014 --- /dev/null +++ b/nim_bot/src/nim_bot.nim @@ -0,0 +1,116 @@ +import asyncdispatch, json, options, dimscord, strutils, harpoon, os, db_sqlite +from uri import parseUri +discard os.execShellCmd("clear") +let + keyfile = readFile("token.key") + discord = newDiscordClient(keyfile) + prefix = "$" +proc onReady(s: Shard, r: Ready) {.event(discord).} = + echo "Login on " & $r.user + +proc messageCreate(s: Shard, m: Message) {.event(discord).} = + if m.author.bot: return + if not m.content.startsWith(prefix): return + let + args = m.content.toLowerAscii().substr(prefix.len).split(" ") + argument = m.content.split(" ") + case args[0]: + of "help": + discard await discord.api.sendMessage( + m.channel_id, + embeds = @[Embed( + title: some "TaxenHeimer Bot", + fields: some @[EmbedField( + name: "**$help**", + value: "`Displays this menu`", + inline: some true + ), + EmbedField( + name: "**$namemc**", + value: "`Displays informations about a minecraft account`", + inline: some true + )], + color: some 0x000066 + )] + ) + of "namemc": + if (argument.len < 2): + discard await discord.api.sendMessage(m.channel_id, "User not found") + else: + let + url = "https://api.ashcon.app/mojang/v2/user/" & argument[1] + data = getJson(parseUri(url)) + if (data{"code"}.getInt == 404): + discard await discord.api.sendMessage(m.channel_id, "User not found") + else: + var + uuid = data["uuid"].getStr + renderurl = "https://crafatar.com/avatars/" & uuid + bodyurl = "https://crafatar.com/renders/body/" & uuid + username = data["username"].getStr + date = data{"created_at"}.getStr + usernamehistory = data["username_history"] + hist = "" + if (usernamehistory.len > 0): + for names in usernamehistory: + if (names{"changed_at"}.isNil): + hist.add(names["username"].getStr & " : " & "Original\n") + else: + var + cdate = names{"changed_at"}.getStr.split("T") + pdate = cdate[1].split(".")[0] & " " & cdate[0] + hist.add(names["username"].getStr & " : " & pdate & "\n") + else: + hist.add("No Name History") + discard await discord.api.sendMessage( + m.channel_id, + embeds = @[Embed( + title: some "Namemc Lookup", + fields: some @[EmbedField( + name: "**username**", + value: "```\n" & username & "\n```", + inline: some true + ), + EmbedField( + name: "**UUID**", + value: "```\n" & uuid & "\n```", + inline: some true + ), + EmbedField( + name: "**Creation Date(Might not be given)**", + value: "```\n" & date & "\n```", + inline: some true + ), + EmbedField( + name: "**Name History**", + value: "```fix\n" & hist & "\n```", + inline: some false + ) + ], + thumbnail: some EmbedThumbnail( + url: some renderurl + ), + image: some EmbedImage( + url: some bodyurl + ), + color: some 0x000066 + )] + ) + of "status": + let + db = open("../../server/servers.db", "", "", "") + server = db.getAllRows(sql"SELECT host FROM servers").len.intToStr + discard await discord.api.sendMessage( + m.channel_id, + embeds = @[Embed( + title: some "**Server Database Status**", + fields: some @[EmbedField( + name: "**Total Server Count**", + value: "`" & server & "`", + inline: some false + )], + color: some 0x000066 + )] + ) + +waitFor discord.startSession() \ No newline at end of file diff --git a/nim_bot/src/token.key b/nim_bot/src/token.key new file mode 100644 index 0000000..da0f663 --- /dev/null +++ b/nim_bot/src/token.key @@ -0,0 +1 @@ +MTAwMTE4NDM3Njc2OTQ4Mjg2Mw.GLkB_i.w-hAvgUGOVfGq1GI4xFaWuh91PM2SFqRCCZ7As \ No newline at end of file diff --git a/server/index.js b/server/index.js index a1fdd92..f62b5f4 100644 --- a/server/index.js +++ b/server/index.js @@ -67,7 +67,7 @@ app.post("/server", async (req, res) => { '${Minecraft.Server}', '${Minecraft.version.name}', '${Minecraft.players.online}/${Minecraft.players.max}', - '${Minecraft.PlayerList}', + '${Minecraft.PlayerList.replace(/\n/g, "\\n")}', '${Minecraft.roundTripLatency}ms', '${cleanMOTD}', '${new Date().toLocaleDateString('en-US')}'