dimscord/gateway

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)
  Source Edit
proc latency(s: Shard): int {...}{.raises: [], tags: [].}
Gets the shard's latency ms.   Source Edit