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

Reply via email to