dimscord/gateway

Source   Edit  

Interact with the discord api gateway. Especially startSession, updateStatus.

Procs

proc disconnect(s: Shard; should_reconnect = true): owned(Future[void]) {.
    ...stackTrace: false, raises: [Exception], tags: [RootEffect, WriteIOEffect,
    ReadIOEffect, TimeEffect, ReadDirEffect, ReadEnvEffect], forbids: [].}
Disconnects a shard. Source   Edit  
proc endSession(discord: DiscordClient): owned(Future[void]) {.
    ...stackTrace: false, raises: [Exception], tags: [RootEffect, WriteIOEffect,
    ReadIOEffect, TimeEffect, ReadDirEffect, ReadEnvEffect], forbids: [].}
Ends the session. Source   Edit  
proc getGuildMember(s: Shard; guild_id, user_id: string; presence = false): Future[
    Member] {....stackTrace: false, raises: [Exception, ValueError],
              tags: [RootEffect, WriteIOEffect, ReadIOEffect, TimeEffect],
              forbids: [].}
Gets a guild member by using requestGuildMembers.
  • presence Have members presence when returned (member.presence).
Source   Edit  
proc latency(s: Shard): int {....raises: [], tags: [], forbids: [].}
Gets the shard's latency ms. 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]) {....stackTrace: false.}
Requests the offline members to a guild. (See: https://discord.com/developers/docs/topics/gateway#request-guild-members) Source   Edit  
proc resume(s: Shard): owned(Future[void]) {....stackTrace: false,
    raises: [Exception],
    tags: [RootEffect, WriteIOEffect, ReadIOEffect, TimeEffect], forbids: [].}
Source   Edit  
proc startSession(discord: DiscordClient; autoreconnect = true; gateway_intents: set[
    GatewayIntent] = {giGuilds, giGuildMessages, giDirectMessages,
                      giGuildVoiceStates, giMessageContent};
                  large_message_threshold, large_threshold = 50;
                  max_message_size = 5000000; gateway_version = 10;
                  max_shards = none int; shard_id = 0;
                  cache_users, cache_guilds, guild_subscriptions = true;
                  cache_guild_channels, cache_dm_channels = true): owned(
    Future[void]) {....stackTrace: false, raises: [Exception], tags: [RootEffect,
    TimeEffect, ReadDirEffect, ReadEnvEffect, ReadIOEffect, WriteIOEffect],
                    forbids: [].}
Connects the client to Discord via gateway.
  • gateway_intents Allows you to subscribe to pre-defined events. NOTE: When not specified this will default to: giGuilds, giGuildMessages, giDirectMessages, giGuildVoiceStates, giMessageContent
  • 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 updateStatus(s: Shard; activities: seq[ActivityStatus] = @[];
                  status = "online"; afk = false): owned(Future[void]) {.
    ...stackTrace: false, raises: [Exception],
    tags: [RootEffect, WriteIOEffect, ReadIOEffect, TimeEffect], forbids: [].}
Updates the shard's status. Source   Edit  
proc updateStatus(s: Shard; activity = none ActivityStatus; status = "online";
                  afk = false): owned(Future[void]) {....stackTrace: false,
    raises: [Exception],
    tags: [RootEffect, WriteIOEffect, ReadIOEffect, TimeEffect], forbids: [].}
Updates the shard's status. Source   Edit  
proc voiceStateUpdate(s: Shard; guild_id: string; channel_id = none string;
                      self_mute, self_deaf = false): owned(Future[void]) {.
    ...stackTrace: false, raises: [Exception],
    tags: [RootEffect, WriteIOEffect, ReadIOEffect, TimeEffect], forbids: [].}
Allows the shard to either join, move to, or disconnect. If channel_id param is not provided. It will disconnect. Source   Edit