One way you could implement async:
import json, httpclient, asyncdispatch, strformat
type
Guild = object
name: string
desc: string
inviter_name: string
inviter_discrim: string
channel: string
var guilds: seq[Guild]
proc check(code: string): Future[Guild] {.async.} =
let client = newAsyncHttpClient()
let content = await
client.get(&"https://discord.com/api/v9/invites/{code}")
if content.status == "200 OK":
let json_content = parseJson(content.body.read)
let
guild_name = json_content["guild"]["name"].getStr()
guild_welcome_desc =
json_content["guild"]["welcome_screen"]["description"].getStr()
guild_inviter_name =
json_content["inviter"]["username"].getStr()
guild_inviter_descrim =
json_content["inviter"]["discriminator"].getStr()
guild_invite_channel = json_content["channel"]["name"].getStr()
result.name = guild_name
result.desc = guild_welcome_desc
result.inviter_name = guild_inviter_name
result.inviter_discrim = guild_inviter_descrim
result.channel = guild_invite_channel
let some_guild = waitFor check("gtyt4zido")
guilds.add(some_guild)
Run