Start removing global variables
This commit is contained in:
parent
dfa7017342
commit
95279cadb8
|
@ -227,19 +227,17 @@ proc startConnection*(client: DiscordClient, shardAmount: int = 1) {.async.} =
|
|||
while true:
|
||||
if not shard.reconnecting:
|
||||
poll()
|
||||
|
||||
#[ client.ws = await newAsyncWebsocketClient(url[6..url.high], Port 443,
|
||||
path = "/v=6&encoding=json", true)
|
||||
|
||||
asyncCheck client.handleWebsocketPacket()
|
||||
# Now just wait. Dont poll for new events while we're reconnecting
|
||||
while true:
|
||||
if not client.reconnecting:
|
||||
poll() ]#
|
||||
else:
|
||||
raise newException(IOError, "Failed to get gateway url, token may of been incorrect!")
|
||||
|
||||
proc updateClientPresence*(shard: Shard, presence: Presence) {.async.} =
|
||||
## Start a bot's presence.
|
||||
##
|
||||
## Examples:
|
||||
##
|
||||
## .. code-block:: nim
|
||||
## let presence = newPresence("with Nimcord", activityTypeGame, clientStatusIdle, false)
|
||||
## asyncCheck event.shard.updateClientPresence(presence) ## Will read "Playing with Nimcord"
|
||||
let jsonPayload = %* {
|
||||
"op": ord(opPresenceUpdate),
|
||||
"d": presence.presenceToJson()
|
||||
|
@ -247,6 +245,14 @@ proc updateClientPresence*(shard: Shard, presence: Presence) {.async.} =
|
|||
|
||||
await shard.sendGatewayRequest(jsonPayload)
|
||||
|
||||
# DiscordClient stored instances:
|
||||
let clientInstances = newTable[uint8, DiscordClient]()
|
||||
var nextInstanceId = 0
|
||||
|
||||
proc getClientInstance*(instanceID: uint8): DiscordClient =
|
||||
## Get a client instance with instance id. Mainly used internally.
|
||||
return clientInstances[instanceID]
|
||||
|
||||
proc newDiscordClient*(tkn: string, commandPrefix: string): DiscordClient =
|
||||
## Create a DiscordClient using a token.
|
||||
##
|
||||
|
@ -256,4 +262,6 @@ proc newDiscordClient*(tkn: string, commandPrefix: string): DiscordClient =
|
|||
var cac: Cache
|
||||
new(cac)
|
||||
|
||||
result = DiscordClient(token: tkn, cache: cac, commandPrefix: commandPrefix)
|
||||
result = DiscordClient(token: tkn, cache: cac, commandPrefix: commandPrefix, instanceID: nextInstanceId)
|
||||
clientInstances.add(nextInstanceId, result)
|
||||
nextInstanceId++
|
|
@ -10,6 +10,7 @@ type
|
|||
shardCount*: int
|
||||
endpoint*: string
|
||||
commandPrefix*: string
|
||||
instanceID*: uint8
|
||||
|
||||
Shard* = ref object
|
||||
id*: int
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
type
|
||||
Snowflake* = uint64
|
||||
DiscordObject* = object of RootObj
|
||||
id*: Snowflake
|
||||
id*: Snowflake ## ID of this discord object.
|
||||
clientInstanceID*: uint8 ## Client instance id for this object. Mainly used internally.
|
||||
|
||||
proc `==`*(obj1: DiscordObject, obj2: DiscordObject): bool =
|
||||
return obj1.id == obj2.id
|
||||
|
|
Reference in New Issue