Get the client connected but nothing else.

This commit is contained in:
SeanOMik 2020-05-28 00:50:53 -05:00
parent 39bacd412e
commit e87241d7a6
No known key found for this signature in database
GPG Key ID: FA4D55AC05268A88
2 changed files with 70 additions and 0 deletions

10
nimcord.nimble Normal file
View File

@ -0,0 +1,10 @@
# Package
version = "0.0.0"
author = "SeanOMik, Intexisty"
description = "Discord API wrapper written in nim. Inspired by discord.py"
license = "MIT"
# Dependencies
requires "nim >= 1.0.4", "websocket >= 0.4.1"

60
src/client.nim Normal file
View File

@ -0,0 +1,60 @@
import websocket, asyncnet, asyncdispatch, json, httpClient, strformat
type
DiscordClient* = ref object ## Discord Client
token*: string
#user*: User
#cache: Cache
ws: AsyncWebSocket
httpClient: AsyncHttpClient
#[ proc heartbeat() {.async.} =
while true:
await sleepAsync(35000)
echo "heartbeat now" ]#
proc read(client: DiscordClient) {.async.} =
while true:
var packet: tuple[opcode: Opcode, data: string]
packet = await client.ws.readData();
echo "(opcode: ", packet.opcode, ", data: ", packet.data, ")"
var json: JsonNode = parseJson(packet.data);
case json["op"].num
of 10:
echo "Received 'HELLO' from the gateway."
# Start heartbeat here!
else:
discard
proc Endpoint(url: string): string =
return fmt("https://discord.com/api/v6{url}")
proc startConnection(client: DiscordClient) {.async.} =
client.httpClient = newAsyncHttpClient()
client.httpClient.headers = newHttpHeaders({"Authorization": fmt("Bot {client.token}")})
let result = parseJson(await client.httpClient.getContent(Endpoint("/gateway/bot")))
echo "Got result: ", $result
if (result.contains("url")):
let url = result["url"].getStr()
client.ws = await newAsyncWebsocketClient(url[6..url.high], Port 443 ,
path = "/v=6&encoding=json", true)
echo "Connected!"
asyncCheck client.read()
#asyncCheck heartbeat()
runForever()
else:
var e: ref IOError
new(e)
e.msg = "Failed to get gateway url, token may of been incorrect!"
raise e
var bot = DiscordClient(token:
"TOKEN")
waitFor bot.startConnection()