Interact with the discord api gateway. Especially startSession, updateStatus.
Procs
proc updateStatus(s: Shard; game = none GameStatus; status = "online"; afk = false): owned( Future[void]) {...}{.raises: [Exception, FutureError], tags: [RootEffect, WriteIOEffect, ReadIOEffect, TimeEffect].}
- Updates the shard's status. Source Edit
proc resume(s: Shard): owned(Future[void]) {...}{.raises: [Exception, FutureError], tags: [RootEffect, WriteIOEffect, ReadIOEffect, TimeEffect].}
- Source Edit
proc requestGuildMembers(s: Shard; guild_id: string or seq[string]; limit = none int; query = none string; nonce = ""; presences = false; user_ids: seq[string] = @[]): owned(Future[void])
- Requests the offline members to a guild. (See: https://discord.com/developers/docs/topics/gateway#request-guild-members) Source Edit
proc voiceStateUpdate(s: Shard; guild_id: string; channel_id = none string; self_mute, self_deaf = false): owned(Future[void]) {...}{. raises: [Exception, FutureError], tags: [RootEffect, WriteIOEffect, ReadIOEffect, TimeEffect].}
- Allows the shard to either join, move to, or disconnect. If channel_id param is not provided. It will disconnect. Source Edit
proc disconnect(s: Shard; should_reconnect = true): owned(Future[void]) {...}{. raises: [Exception, FutureError], tags: [RootEffect, WriteIOEffect, ReadIOEffect, TimeEffect].}
- Disconnects a shard. Source Edit
proc endSession(discord: DiscordClient): owned(Future[void]) {...}{. raises: [Exception, FutureError], tags: [RootEffect, WriteIOEffect, ReadIOEffect, TimeEffect].}
- Ends the session. Source Edit
proc startSession(discord: DiscordClient; autoreconnect = true; gateway_intents: set[GatewayIntent] = {}; large_message_threshold, large_threshold = 50; max_message_size = 5000000; gateway_version = 6; max_shards = none int; cache_users, cache_guilds, guild_subscriptions = true; cache_guild_channels, cache_dm_channels = true): owned(Future[void]) {...}{. raises: [Exception, FutureError], tags: [RootEffect, TimeEffect, ReadIOEffect, WriteIOEffect].}
-
Connects the client to Discord via gateway.
If you want to compress add -d:discordCompress, zlib1(.dll|.so.1|.dylib) file needs to be in your directory.
- gateway_intents Allows you to subscribe to pre-defined events. If you are using v8, this defaults to {giGuilds, giGuildMessages, giDirectMessages}.
- large_threshold The number that would be considered a large guild (50-250).
- guild_subscriptions Whether or not to receive presence_update, typing_start events.
- autoreconnect Whether the client should reconnect whenever a network error occurs.
- max_message_size Max message JSON size (MESSAGE_CREATE) the client should cache in bytes.
- large_message_threshold Max message limit (MESSAGE_CREATE)
proc latency(s: Shard): int {...}{.raises: [], tags: [].}
- Gets the shard's latency ms. Source Edit