Module discordnim

Search:
Group by:

Types

Snowflake = object
  val*: string
Snowlake is a unique id for most Discord objects
Overwrite = object
  id*: Snowflake
  `type`*: string
  allow*: int
  deny*: int
ChannelType = enum
  CTGuildText, CTDM, CTGuildVoice, CTGroupDM, CTGuildCategory
Channel = object of RootObj
  id*: Snowflake
  `type`*: ChannelType
  guild_id*: string
  position*: int
  permission_overwrites*: seq[Overwrite]
  name*: string
  topic*: string
  nsfw*: bool
  last_message_id*: string
  bitrate*: int
  user_limit*: int
  recipients*: seq[User]
  icon*: string
  owner_id*: string
  application_id*: string
  parent_id*: string
  last_pin_timestamp*: string
MessageType = enum
  MTDefault, MTRecipientAdd, MTRecipientRemove, MTCall, MTChannelNameChange,
  MTChannelIconChange, MTChannelPinnedMessage, MTGuildMemberJoin
MessageActivityType = enum
  MATJoin, MATSpectate, MATListen, MATJoinRequest
MessageActivity = ref object
  `type`*: MessageActivityType
  party_id*: string
MessageApplication = ref object
  id*: Snowflake
  cover_image*: string
  description*: string
  icon*: string
  name*: string
Message = object of RootObj
  id*: Snowflake
  channel_id*: string
  author*: User
  content*: string
  timestamp*: string
  edited_timestamp*: string
  tts*: bool
  mention_everyone*: bool
  mentions*: seq[User]
  mention_roles*: seq[string]
  attachments*: seq[Attachment]
  embeds*: seq[Embed]
  reactions*: seq[Reaction]
  nonce*: string
  pinned*: bool
  webhook_id*: string
  `type`*: MessageType
  activity*: MessageActivity
  application*: MessageApplication
Reaction = object
  count*: int
  me*: bool
  emoji*: Emoji
Emoji = object
  id*: Snowflake
  name*: string
  roles*: seq[string]
  user*: User
  require_colons*: bool
  managed*: bool
  animated*: bool
Embed = object
  title*: string
  `type`*: string
  description*: string
  url*: string
  timestamp*: string
  color*: int
  footer*: EmbedFooter
  image*: EmbedImage
  thumbnail*: EmbedThumbnail
  video*: EmbedVideo
  provider*: EmbedProvider
  author*: EmbedAuthor
  fields*: seq[EmbedField] not nil
EmbedThumbnail = object
  url*: string
  proxy_url*: string
  height*: int
  width*: int
EmbedVideo = object
  url*: string
  height*: int
  width*: int
EmbedImage = object
  url*: string
  proxy_url*: string
  height*: int
  width*: int
EmbedProvider = object
  name*: string
  url*: string
EmbedAuthor = object
  name*: string
  url*: string
  icon_url*: string
  proxy_icon_url*: string
EmbedFooter = object
  text*: string
  icon_url*: string
  proxy_icon_url*: string
EmbedField = object
  name*: string
  value*: string
  inline*: bool
Attachment = object
  id*: Snowflake
  filename*: string
  size*: int
  url*: string
  proxy_url*: string
  height*: int
  width*: int
Presence = object
  since*: int
  afk*: bool
  game*: Game
  status*: string
Guild = object of RootObj
  id*: Snowflake
  name*: string
  icon*: string
  splash*: string
  owner*: bool
  owner_id*: string
  permissions*: int
  region*: string
  afk_channel_id*: string
  afk_timeout*: int
  embed_enabled*: bool
  embed_channel_id*: string
  verification_level*: int
  default_message_notifications*: int
  explicit_content_filter*: int
  roles*: seq[Role]
  emojis*: seq[Emoji]
  features*: seq[string]
  mfa_level*: int
  application_id*: string
  widget_enabled*: bool
  widget_channel_id*: string
  system_channel_id*: string
  joined_at*: string
  large*: bool
  unavailable*: bool
  member_count*: int
  voice_states*: seq[VoiceState]
  members*: seq[GuildMember]
  channels*: seq[Channel]
  presences*: seq[Presence]
GuildMember = object of RootObj
  guild_id*: string
  user*: User
  nick*: string
  roles*: seq[string]
  joined_at*: string
  deaf*: bool
  mute*: bool
Integration = object
  id*: Snowflake
  name*: string
  `type`*: string
  enabled*: bool
  syncing*: bool
  role_id*: string
  expire_behavior*: int
  expire_grace_period*: int
  user*: User
  account*: IntegrationAccount
  synced_at*: string
IntegrationAccount = object
  id*: Snowflake
  name*: string
Invite = object
  code*: string
  guild*: InviteGuild
  channel*: InviteChannel
  approximate_presence_count*: int
  approximate_member_count*: int
InviteMetadata = object
  inviter*: User
  uses*: int
  max_uses*: int
  max_age*: int
  temporary*: bool
  created_at*: string
  revoked*: bool
InviteGuild = object
  id*: Snowflake
  name*: string
  splash*: string
  icon*: string
InviteChannel = object
  id*: Snowflake
  name*: string
  `type`*: int
User = object of RootObj
  id*: Snowflake
  username*: string
  discriminator*: string
  avatar*: string
  bot*: bool
  mfa_enabled*: bool
  locale*: string
  verified*: bool
  email*: string
UserGuild = object
  id*: Snowflake
  name*: string
  icon*: string
  owner*: bool
  permissions*: int
Connection = object
  id*: Snowflake
  name*: string
  `type`*: string
  revoked*: bool
  integrations*: seq[Integration]
VoiceState = object of RootObj
  guild_id*: string
  channel_id*: string
  user_id*: string
  session_id*: string
  deaf*: bool
  mute*: bool
  self_deaf*: bool
  self_mute*: bool
  suppress*: bool
VoiceRegion = object
  id*: Snowflake
  name*: string
  vip*: bool
  optimal*: bool
  deprecated*: bool
  custom*: bool
Webhook = object
  id*: Snowflake
  guild_id*: string
  channel_id*: string
  user*: User
  name*: string
  avatar*: string
  token*: string
Role = object
  id*: Snowflake
  name*: string
  color*: int
  hoist*: bool
  position*: int
  permissions*: int
  managed*: bool
  mentionable*: bool
ChannelParams = ref object
  name*: string
  position*: int
  topic*: string
  bitrate*: int
  user_limit*: int
GuildParams = ref object
  name*: string
  region*: string
  verification_level*: int
  default_message_notifications*: int
  afk_channel_id*: string
  afk_timeout*: int
  icon*: string
  owner_id*: string
  splash*: string
GuildMemberParams = ref object
  nick*: string
  roles*: seq[string]
  mute*: bool
  deaf*: bool
  channel_id*: string
GuildEmbed = object
  enabled*: bool
  channel_id*: string
WebhookParams = ref object
  content*: string
  username*: string
  avatar_url*: string
  tts*: bool
  embeds*: seq[Embed]
GuildEmojisUpdate = object
  guild_id*: string
  emojis*: seq[Emoji]
GuildIntegrationsUpdate = object
  guild_id*: string
GuildRoleCreate = object
  guild_id*: string
  role*: Role
GuildRoleUpdate = object
  guild_id*: string
  role*: Role
GuildRoleDelete = object
  guild_id*: string
  role_id*: string
AuditLogOptions = object
  delete_members_days*: string
  members_removed*: string
  channel_id*: string
  count*: string
  id*: Snowflake
  `type`*: string
  role_name*: string
AuditLogChangeKind = enum
  ALCString, ALCInt, ALCBool, ALCRoles, ALCOverwrites, ALCNil
AuditLogChangeValue = ref AuditLogChangeValueObj
AuditLogChange = object
  new_value*: AuditLogChangeValue
  old_value*: AuditLogChangeValue
  key*: string
AuditLogEntry = object
  target_id*: string
  changes*: seq[AuditLogChange]
  user_id*: string
  id*: Snowflake
  action_type*: int
  options*: AuditLogOptions
  reason*: string
AuditLog = object
  webhooks*: seq[Webhook]
  users*: seq[User]
  audit_log_entries*: seq[AuditLogEntry]
MessageDeleteBulk = object
  ids*: seq[string]
  channel_id*: string
Game = object of RootObj
  name*: string
  `type`*: int
  url*: string
PresenceUpdate = object
  user*: User
  nick: string
  roles*: seq[string]
  game*: Game
  guild_id*: string
  status*: string
TypingStart = object
  channel_id*: string
  user_id*: string
  timestamp*: int
VoiceServerUpdate = object
  token: string
  guild_id: string
  endpoint: string
VoiceConnection = object
  sampleRate: uint
  frameSize: uint16
  channels: uint8
  volume: float
Resumed = object
  trace*: seq[string]
Cache = ref object
  lock: Lock
  version*: int
  me*: User
  cacheChannels*: bool
  cacheGuilds*: bool
  cacheGuildMembers*: bool
  cacheUsers*: bool
  cacheRoles*: bool
  channels: Table[string, Channel]
  guilds: Table[string, Guild]
  users: Table[string, User]
  members: Table[string, GuildMember]
  roles: Table[string, Role]
  ready: Ready
Ready = object
  v*: int
  user*: User
  private_channels*: seq[Channel]
  session_id*: string
  guilds*: seq[Guild]
  trace*: seq[string]
  presences*: seq[Presence]
Pin = object of RootObj
  last_pin_timestamp*: string
  channel_id*: string
MessageCreate = Message
MessageUpdate = Message
MessageDelete = Message
GuildMemberAdd = GuildMember
GuildMemberUpdate = GuildMember
GuildMemberRemove = GuildMember
GuildMembersChunk = object
  guild_id*: string
  members*: seq[GuildMember]
GuildCreate = Guild
GuildUpdate = Guild
GuildDelete = object
  id*: Snowflake
  unavailable*: bool
GuildBanAdd = User
GuildBanRemove = User
ChannelCreate = Channel
ChannelUpdate = Channel
ChannelDelete = Channel
ChannelPinsUpdate = object of Pin
UserUpdate = User
VoiceStateUpdate = VoiceState
MessageReactionAdd = object of RootObj
  user_id*: string
  message_id*: string
  channel_id*: string
  emoji*: Emoji
MessageReactionRemove = MessageReactionAdd
MessageReactionRemoveAll = object
  message_id*: string
  channel_id*: string
EventType = enum
  channel_create, channel_update, channel_delete, channel_pins_update,
  webhooks_update, guild_create, guild_update, guild_delete, guild_ban_add,
  guild_ban_remove, guild_emojis_update, guild_integrations_update,
  guild_member_add, guild_member_update, guild_member_remove, guild_members_chunk,
  guild_role_create, guild_role_update, guild_role_delete, message_create,
  message_update, message_delete, message_delete_bulk, message_reaction_add,
  message_reaction_remove, message_reaction_remove_all, presence_update,
  typing_start, user_update, voice_state_update, voice_server_update, on_resume,
  on_ready, on_disconnect
Shard = ref ShardImpl
CacheError = object of Exception
AddGroupDMUser = object
  id: string
  nick: string
PartialChannel = object
  name*: string
  `type`*: int

Consts

auditGuildUpdate = 1
auditChannelCreate = 10
auditChannelUpdate = 11
auditChannelDelete = 12
auditChannelOverwriteCreate = 13
auditChannelOverwriteUpdate = 14
auditChannelOverwriteDelete = 15
auditMemberKick = 20
auditMemberPrune = 21
auditMemberBanAdd = 22
auditMemberBanRemove = 23
auditMemberUpdate = 24
auditMemberRoleUpdate = 25
auditRoleCreate = 30
auditRoleUpdate = 31
auditRoleDelete = 32
auditInviteCreate = 40
auditInviteUpdate = 41
auditInviteDelete = 42
auditWebhookCreate = 50
auditWebhookUpdate = 51
auditWebhookDelete = 52
auditEmojiCreate = 60
auditEmojiUpdate = 61
auditEmojiDelete = 62
auditMessageDelete = 72
VERSION = "2.1.0"
permCreateInstantInvite = 0x00000001
permKickMembers = 0x00000002
permBanMembers = 0x00000004
permAdministrator = 0x00000008
permManageChannels = 0x00000010
permManageGuild = 0x00000020
permAddReactions = 0x00000040
permViewAuditLogs = 0x00000080
permPrioritySpeaker = 0x00000100
permViewChannel = 0x00000400
permSendMessages = 0x00000800
permSendTTSMessage = 0x00001000
permManageMessages = 0x00002000
permAttachFiles = 0x00008000
permReadMessageHistory = 0x00010000
permMentionEveryone = 0x00020000
permUseExternalEmojis = 0x00040000
permVoiceConnect = 0x00100000
permVoiceSpeak = 0x00200000
permVoiceMuteMembers = 0x00400000
permVoiceDeafenMemebrs = 0x00800000
permVoiceMoveMembers = 0x01000000
permUseVAD = 0x02000000
permChangeNickname = 0x04000000
permManageNicknames = 0x08000000
permManageRoles = 0x10000000
permManageWebhooks = 0x20000000
permManageEmojis = 0x40000000
permAllText = 261120
permAllVoice = 66060288
permAllChannel = 334757073
permAll = 334757119

Procs

proc toSnowflake(id: string): Snowflake {.
inline, raises: [], tags: []
.}
proc toSnowflake(id: int64): Snowflake {.
inline, raises: [], tags: []
.}
proc `==`(a, b: Snowflake): bool {.
inline, raises: [], tags: []
.}
proc `==`(a: Snowflake; b: string): bool {.
inline, raises: [], tags: []
.}
proc `==`(a: string; b: Snowflake): bool {.
inline, raises: [], tags: []
.}
proc `&`(a: string; b: Snowflake): string {.
inline, raises: [], tags: []
.}
proc `$`(a: Snowflake): string {.
inline, raises: [], tags: []
.}
proc gateway(): string {.
inline, raises: [], tags: []
.}
proc endpointAttachment(cid, aid, fname: string): string {.
inline, raises: [], tags: []
.}
proc endpointAvatar(uid, hash: string): string {.
inline, raises: [], tags: []
.}
proc endpointAvatarAnimated(uid, hash: string): string {.
inline, raises: [], tags: []
.}
proc endpointGuildIcon(gid, hash: string): string {.
inline, raises: [], tags: []
.}
proc endpointGuildSplash(gid, hash: string): string {.
inline, raises: [], tags: []
.}
proc endpointGroupIcon(cid, hash: string): string {.
inline, raises: [], tags: []
.}
proc endpointChannels(cid: string): string {.
inline, raises: [], tags: []
.}
proc endpointChannelMessages(cid: string): string {.
inline, raises: [], tags: []
.}
proc endpointChannelMessage(cid, mid: string): string {.
inline, raises: [], tags: []
.}
proc endpointReactions(cid, mid: string): string {.
inline, raises: [], tags: []
.}
proc endpointOwnReactions(cid, mid, eid: string): string {.
inline, raises: [], tags: []
.}
proc endpointMessageReactions(cid, mid, eid: string): string {.
inline, raises: [], tags: []
.}
proc endpointMessageUserReaction(cid, mid, eid, uid: string): string {.
inline, raises: [], tags: []
.}
proc endpointBulkDelete(cid: string): string {.
inline, raises: [], tags: []
.}
proc endpointChannelPermissions(cid, owid: string): string {.
inline, raises: [], tags: []
.}
proc endpointChannelInvites(cid: string): string {.
inline, raises: [], tags: []
.}
proc endpointTriggerTypingIndicator(cid: string): string {.
inline, raises: [], tags: []
.}
proc endpointChannelPinnedMessages(cid: string): string {.
inline, raises: [], tags: []
.}
proc endpointPinnedChannelMessage(cid, mid: string): string {.
inline, raises: [], tags: []
.}
proc endpointGroupDMRecipient(cid, uid: string): string {.
inline, raises: [], tags: []
.}
proc endpointGuilds(): string {.
inline, raises: [], tags: []
.}
proc endpointGuild(gid: string): string {.
inline, raises: [], tags: []
.}
proc endpointGuildChannels(gid: string): string {.
inline, raises: [], tags: []
.}
proc endpointGuildMembers(gid: string): string {.
inline, raises: [], tags: []
.}
proc endpointGuildMember(gid, uid: string): string {.
inline, raises: [], tags: []
.}
proc endpointEditNick(gid: string): string {.
inline, raises: [], tags: []
.}
proc endpointGuildMemberRoles(gid, uid, rid: string): string {.
inline, raises: [], tags: []
.}
proc endpointGuildBans(gid: string): string {.
inline, raises: [], tags: []
.}
proc endpointGuildBan(gid, uid: string): string {.
inline, raises: [], tags: []
.}
proc endpointGuildRoles(gid: string): string {.
inline, raises: [], tags: []
.}
proc endpointGuildRole(gid, rid: string): string {.
inline, raises: [], tags: []
.}
proc endpointGuildPruneCount(gid: string): string {.
inline, raises: [], tags: []
.}
proc endpointGuildVoiceRegions(gid: string): string {.
inline, raises: [], tags: []
.}
proc endpointGuildInvites(gid: string): string {.
inline, raises: [], tags: []
.}
proc endpointGuildIntegrations(gid: string): string {.
inline, raises: [], tags: []
.}
proc endpointGuildIntegration(gid, iid: string): string {.
inline, raises: [], tags: []
.}
proc endpointSyncGuildIntegration(gid, iid: string): string {.
inline, raises: [], tags: []
.}
proc endpointGuildEmbed(gid: string): string {.
inline, raises: [], tags: []
.}
proc endpointInvite(ic: string): string {.
inline, raises: [], tags: []
.}
proc endpointCurrentUser(): string {.
inline, raises: [], tags: []
.}
proc endpointUser(uid: string): string {.
inline, raises: [], tags: []
.}
proc endpointCurrentUserGuilds(): string {.
inline, raises: [], tags: []
.}
proc endpointLeaveGuild(gid: string): string {.
inline, raises: [], tags: []
.}
proc endpointUserDMs(): string {.
inline, raises: [], tags: []
.}
proc endpointDM(): string {.
inline, raises: [], tags: []
.}
proc endpointUsersConnections(): string {.
inline, raises: [], tags: []
.}
proc endpointListVoiceRegions(): string {.
inline, raises: [], tags: []
.}
proc endpointWebhooks(cid: string): string {.
inline, raises: [], tags: []
.}
proc endpointGuildWebhooks(gid: string): string {.
inline, raises: [], tags: []
.}
proc endpointWebhook(wid: string): string {.
inline, raises: [], tags: []
.}
proc endpointWebhookWithToken(wid, token: string): string {.
inline, raises: [], tags: []
.}
proc endpointAuth(): string {.
inline, raises: [], tags: []
.}
proc newPartialChannel(name: string; typ: int = 0): PartialChannel {.
inline, raises: [], tags: []
.}
proc `$`(u: User): string {.
gcsafe, inline, raises: [], tags: []
.}

Stringifies a user.

e.g: Username#1234

proc `$`(c: Channel): string {.
gcsafe, inline, raises: [], tags: []
.}

Stringifies a channel.

e.g: #channel-name

proc `$`(e: Emoji): string {.
gcsafe, inline, raises: [], tags: []
.}

Stringifies an emoji.

e.g: :emojiName:129837192873

proc `@`(u: User): string {.
gcsafe, inline, raises: [], tags: []
.}

Returns a message formatted user mention.

e.g: <@109283102983019283>

proc `@`(c: Channel): string {.
gcsafe, inline, raises: [], tags: []
.}

Returns a message formatted channel mention.

e.g: <#1239810283>

proc `@`(r: Role): string {.
gcsafe, inline, raises: [], tags: []
.}

Returns a message formatted role mention

e.g: <@&129837128937>

proc `@`(e: Emoji): string {.
gcsafe, inline, raises: [], tags: []
.}

Returns a message formated emoji.

e.g: <:emojiName:1920381>

proc defaultAvatar(u: User): string {.
raises: [ValueError, OverflowError], tags: []
.}

Returns the avatar url of the user.

If the user doesn't have an avatar it returns the users default avatar.

proc timestamp(i: int64): DateTime {.
raises: [], tags: []
.}
Takes an ID and converts it into a timestamp
proc stripMentions(msg: Message): string {.
gcsafe, raises: [RegexError], tags: []
.}

Strips all user mentions from a message and replaces them with plaintext

e.g: <@1901092738173> -> @Username#1234

proc stripEveryoneMention(msg: Message): string {.
gcsafe, raises: [RegexError], tags: []
.}
Strips a message of any @everyone and @here mention
proc newChannelParams(name, topic: string = ""; position: int = 0; bitrate: int = 48;
                     userlimit: int = 0): ChannelParams {.
gcsafe, inline, raises: [], tags: []
.}
Initialises a new ChannelParams object for altering channel settings.
proc newGuildParams(name, region, afkchan: string = ""; verlvl: int = 0; defnotif: int = 0;
                   afktim: int = 0; icon: string = ""; ownerid: string = "";
                   splash: string = ""): GuildParams {.
gcsafe, inline, raises: [], tags: []
.}
Initialises a new GuildParams object for altering guild settings.
proc newGuildMemberParams(nick, channelid: string = ""; roles: seq[string] = @[];
                         mute: bool = false; deaf: bool = false): GuildMemberParams {.
gcsafe, inline, raises: [], tags: []
.}
Initialises a new GuildMemberParams object for altering guild members.
proc newWebhookParams(content, username, avatarurl: string = ""; tts: bool = false;
                     embeds: seq[Embed] = nil): WebhookParams {.
gcsafe, inline, raises: [], tags: []
.}
Initialises a new WebhookParams object for altering webhooks.
proc messageGuild(s: Shard; m: Message): string {.
raises: [Exception, ValueError, OSError, FutureError, IndexError], tags: [RootEffect, TimeEffect]
.}

Returns the guild id of the guild the message was sent in.

Returns an empty string if it can't find the guild in the cache or by requesting it from the API.

proc newShard(token: string): Shard {.
gcsafe, raises: [Exception, ValueError, OSError, FutureError, IndexError], tags: [RootEffect, TimeEffect]
.}

Methods

method timestamp(s: Snowflake): DateTime {.
base, raises: [ValueError], tags: []
.}
Makes a timestamp from the Snowflake
method addHandler(d: Shard; t: EventType; p: pointer): (proc ()) {.
gcsafe, base, inline, raises: [KeyError], tags: []
.}

Adds a handler tied to a websocket event.

Returns a proc that removes the event handler.

method getGuild(c: Cache; id: string): tuple[guild: Guild, exists: bool] {.
base, gcsafe, raises: [CacheError, KeyError], tags: []
.}
Gets a guild from the cache
method removeGuild(c: Cache; guildid: string) {.
raises: CacheError, base, gcsafe, tags: []
.}
Removes a guild from the cache
method updateGuild(c: Cache; guild: Guild) {.
raises: CacheError, inline, base, gcsafe, tags: []
.}
Updates a guild in the cache
method getUser(c: Cache; id: string): tuple[user: User, exists: bool] {.
base, gcsafe, raises: [CacheError, KeyError], tags: []
.}
Gets a user from the cache
method removeUser(c: Cache; id: string) {.
raises: CacheError, inline, base, gcsafe, tags: []
.}
Removes a user from the cache
method updateUser(c: Cache; user: User) {.
inline, base, gcsafe, raises: [CacheError], tags: []
.}
Updates a user in the cache
method getChannel(c: Cache; id: string): tuple[channel: Channel, exists: bool] {.
base, gcsafe, raises: [CacheError, KeyError], tags: []
.}
Gets a channel from the cache
method updateChannel(c: Cache; chan: Channel) {.
inline, base, gcsafe, raises: [CacheError], tags: []
.}
Updates a channel in the cache
method removeChannel(c: Cache; chan: string) {.
raises: CacheError, inline, base, gcsafe, tags: []
.}
Removes a channel from the cache
method getGuildMember(c: Cache; guild, memberid: string): tuple[member: GuildMember,
    exists: bool] {.
base, gcsafe, raises: [CacheError, Exception], tags: [RootEffect]
.}
Gets a guild member from the cache
method addGuildMember(c: Cache; member: GuildMember) {.
inline, base, gcsafe, raises: [CacheError], tags: []
.}
Adds a guild member to the cache
method updateGuildMember(c: Cache; m: GuildMember) {.
inline, base, gcsafe, raises: [CacheError], tags: []
.}
Updates a guild member in the cache
method removeGuildMember(c: Cache; gmember: GuildMember) {.
inline, base, gcsafe, raises: [CacheError], tags: []
.}
Removes a guild member from the cache
method getRole(c: Cache; guildid, roleid: string): tuple[role: Role, exists: bool] {.
base, gcsafe, raises: [CacheError, Exception], tags: [RootEffect]
.}
Gets a role from the cache
method updateRole(c: Cache; role: Role) {.
raises: CacheError, base, gcsafe, tags: []
.}
Updates a role in the cache
method removeRole(c: Cache; role: string) {.
raises: CacheError, base, gcsafe, tags: []
.}
Removes a role from the cache
method clear(c: Cache) {.
base, gcsafe, raises: [], tags: []
.}
Clears a cache of all cached objects
method channel(s: Shard; channel_id: string): Future[Channel] {.
base, gcsafe, raises: [FutureError], tags: [RootEffect, TimeEffect, ReadIOEffect]
.}
method channelEdit(s: Shard; channelid: string; params: ChannelParams;
                  reason: string = ""): Future[Guild] {.
base, gcsafe, raises: [FutureError], tags: [ReadIOEffect, RootEffect, TimeEffect, WriteIOEffect]
.}
Edits a channel with the ChannelParams
method deleteChannel(s: Shard; channelid: string; reason: string = ""): Future[Channel] {.
base, gcsafe, raises: [FutureError], tags: [ReadIOEffect, RootEffect, TimeEffect]
.}
Deletes a channel
method channelMessages(s: Shard; channelid: string; before, after, around: string;
                      limit: int): Future[seq[Message]] {.
base, gcsafe, raises: [FutureError], tags: [TimeEffect, ReadIOEffect, RootEffect]
.}
Returns a channels messages Maximum of 100 messages
method channelMessage(s: Shard; channelid, messageid: string): Future[Message] {.
base, gcsafe, inline, raises: [FutureError], tags: [TimeEffect, ReadIOEffect, RootEffect]
.}
Returns a message from a channel
method channelMessageSend(s: Shard; channelid, message: string): Future[Message] {.
base, gcsafe, raises: [FutureError], tags: [TimeEffect, ReadIOEffect, RootEffect]
.}
Sends a regular text message to a channel
method channelMessageSendEmbed(s: Shard; channelid: string; embed: Embed): Future[
    Message] {.
base, gcsafe, inline, raises: [FutureError], tags: [TimeEffect, ReadIOEffect, RootEffect]
.}
Sends an Embed message to a channel
method channelMessageSendTTS(s: Shard; channelid, message: string): Future[Message] {.
base, gcsafe, inline, raises: [FutureError], tags: [TimeEffect, ReadIOEffect, RootEffect]
.}
Sends a TTS message to a channel
method channelFileSendWithMessage(s: Shard; channelid, name, message: string): Future[
    Message] {.
base, gcsafe, raises: [FutureError], tags: [ReadIOEffect, TimeEffect, RootEffect]
.}
Sends a file to a channel along with a message
method channelFileSendWithMessage(s: Shard; channelid, name, fbody, message: string): Future[
    Message] {.
base, gcsafe, raises: [FutureError], tags: [TimeEffect, ReadIOEffect, RootEffect]
.}
Sends the contents of a file as a file to a channel.
method channelFileSend(s: Shard; channelid, fname: string): Future[Message] {.
base, gcsafe, inline, raises: [FutureError], tags: [RootEffect]
.}
Sends a file to a channel
method channelFileSend(s: Shard; channelid, fname, fbody: string): Future[Message] {.
base, gcsafe, inline, raises: [FutureError], tags: [RootEffect]
.}
Sends the contents of a file as a file to a channel.
method channelMessageReactionAdd(s: Shard; channelid, messageid, emojiid: string): Future[
    void] {.
base, gcsafe, inline, raises: [FutureError], tags: [RootEffect, TimeEffect, ReadIOEffect]
.}
Adds a reaction to a message
method messageDeleteOwnReaction(s: Shard; channelid, messageid, emojiid: string): Future[
    void] {.
base, gcsafe, inline, raises: [FutureError], tags: [RootEffect, TimeEffect, ReadIOEffect]
.}
Deletes your own reaction to a message
method messageDeleteReaction(s: Shard;
                            channelid, messageid, emojiid, userid: string): Future[
    void] {.
base, gcsafe, inline, raises: [FutureError], tags: [RootEffect, TimeEffect, ReadIOEffect]
.}
Deletes a reaction from a user from a message
method messageGetReactions(s: Shard; channelid, messageid, emojiid: string): Future[
    seq[User]] {.
base, gcsafe, inline, raises: [FutureError], tags: [RootEffect, TimeEffect, ReadIOEffect]
.}
Gets a message's reactions
method messageDeleteAllReactions(s: Shard; channelid, messageid: string): Future[void] {.
base, gcsafe, inline, raises: [FutureError], tags: [RootEffect, TimeEffect, ReadIOEffect]
.}
Deletes all reactions on a message
method channelMessageEdit(s: Shard; channelid, messageid, content: string): Future[
    Message] {.
base, gcsafe, inline, raises: [FutureError], tags: [TimeEffect, ReadIOEffect, RootEffect]
.}
Edits a message's contents
method channelMessageDelete(s: Shard; channelid, messageid: string;
                           reason: string = ""): Future[void] {.
base, gcsafe, raises: [FutureError], tags: [RootEffect, TimeEffect, ReadIOEffect]
.}
Deletes a message
method channelMessagesDeleteBulk(s: Shard; channelid: string; messages: seq[string]): Future[
    void] {.
base, gcsafe, inline, raises: [FutureError], tags: [RootEffect, TimeEffect, ReadIOEffect]
.}
Deletes messages in bulk. Will not delete messages older than 2 weeks
method channelEditPermissions(s: Shard; channelid: string; overwrite: Overwrite;
                             reason: string = ""): Future[void] {.
base, gcsafe, raises: [FutureError], tags: [RootEffect, TimeEffect, ReadIOEffect]
.}
Edits a channel's permissions
method channelInvites(s: Shard; channel: string): Future[seq[Invite]] {.
base, gcsafe, inline, raises: [FutureError], tags: [RootEffect, TimeEffect, ReadIOEffect]
.}
Returns all invites to a channel
method channelCreateInvite(s: Shard; channel: string; max_age, max_uses: int;
                          temp, unique: bool; reason: string = ""): Future[Invite] {.
base, gcsafe, raises: [FutureError], tags: [RootEffect, TimeEffect, ReadIOEffect]
.}
Creates an invite to a channel
method channelDeletePermission(s: Shard; channel, target: string; reason: string = ""): Future[
    void] {.
base, gcsafe, raises: [FutureError], tags: [RootEffect, TimeEffect, ReadIOEffect]
.}
Deletes a channel permission
method typingIndicatorTrigger(s: Shard; channel: string): Future[void] {.
base, gcsafe, inline, raises: [FutureError], tags: [RootEffect, TimeEffect, ReadIOEffect]
.}
Triggers the "X is typing" indicator
method channelPinnedMessages(s: Shard; channel: string): Future[seq[Message]] {.
base, gcsafe, inline, raises: [FutureError], tags: [TimeEffect, ReadIOEffect, RootEffect]
.}
Returns all pinned messages in a channel
method channelPinMessage(s: Shard; channel, message: string): Future[void] {.
base, gcsafe, inline, raises: [FutureError], tags: [RootEffect, TimeEffect, ReadIOEffect]
.}
Pins a message in a channel
method channelDeletePinnedMessage(s: Shard; channel, message: string): Future[void] {.
base, gcsafe, inline, raises: [FutureError], tags: [RootEffect, TimeEffect, ReadIOEffect]
.}
method groupDMCreate(s: Shard; accesstokens: seq[string]; nicks: seq[AddGroupDMUser]): Future[
    Channel] {.
base, gcsafe, inline, raises: [FutureError], tags: [ReadIOEffect, RootEffect, TimeEffect]
.}
Creates a group DM channel
method groupDMAddUser(s: Shard; channelid, userid, access_token, nick: string): Future[
    void] {.
base, gcsafe, inline, raises: [FutureError], tags: [RootEffect, TimeEffect, ReadIOEffect]
.}
Adds a user to a group dm. Requires the 'gdm.join' scope.
method groupdDMRemoveUser(s: Shard; channelid, userid: string): Future[void] {.
base, gcsafe, inline, raises: [FutureError], tags: [RootEffect, TimeEffect, ReadIOEffect]
.}
Removes a user from a group dm.
method createGuild(s: Shard; name, region, icon: string; roles: seq[Role] = @[];
                  channels: seq[PartialChannel] = @[]; verlvl, defmsgnot: int): Future[
    Guild] {.
base, gcsafe, inline, raises: [FutureError], tags: [ReadIOEffect, RootEffect, TimeEffect]
.}
Creates a guild. This endpoint is limited to 10 active guilds
method guild(s: Shard; id: string): Future[Guild] {.
base, gcsafe, raises: [FutureError], tags: [RootEffect, ReadIOEffect, TimeEffect]
.}
Gets a guild
method guildEdit(s: Shard; guild: string; settings: GuildParams; reason: string = ""): Future[
    Guild] {.
base, gcsafe, raises: [FutureError], tags: [ReadIOEffect, RootEffect, TimeEffect, WriteIOEffect]
.}
Edits a guild with the GuildParams
method deleteGuild(s: Shard; guild: string): Future[Guild] {.
base, gcsafe, inline, raises: [FutureError], tags: [RootEffect, TimeEffect, ReadIOEffect]
.}
Deletes a guild
method guildChannels(s: Shard; guild: string): Future[seq[Channel]] {.
base, gcsafe, raises: [FutureError], tags: [RootEffect, ReadIOEffect, TimeEffect]
.}
Returns all guild channels
method guildChannelCreate(s: Shard; guild, channelname: string; voice: bool;
                         reason: string = ""): Future[Channel] {.
base, gcsafe, raises: [FutureError], tags: [ReadIOEffect, RootEffect, TimeEffect]
.}
Creates a new channel in a guild
method guildChannelPositionEdit(s: Shard; guild, channel: string; position: int;
                               reason: string = ""): Future[seq[Channel]] {.
base, gcsafe, raises: [FutureError], tags: [ReadIOEffect, RootEffect, TimeEffect]
.}
Reorders the position of a channel and returns the new order
method guildMembers(s: Shard; guild: string; limit, after: int): Future[seq[GuildMember]] {.
base, gcsafe, raises: [FutureError], tags: [ReadIOEffect, RootEffect, TimeEffect]
.}
Returns up to 1000 guild members
method guildMember(s: Shard; guild, userid: string): Future[GuildMember] {.
base, gcsafe, raises: [FutureError], tags: [RootEffect, ReadIOEffect, TimeEffect]
.}
Returns a guild member with the userid
method guildAddMember(s: Shard; guild, userid, accesstoken: string): Future[GuildMember] {.
base, gcsafe, raises: [FutureError], tags: [ReadIOEffect, RootEffect, TimeEffect]
.}
Adds a guild member to the guild
method guildMemberRolesEdit(s: Shard; guild, userid: string; roles: seq[string]): Future[
    void] {.
base, gcsafe, raises: [FutureError], tags: [RootEffect, TimeEffect, ReadIOEffect]
.}
Edits a guild member's roles
method guildMemberSetNickname(s: Shard; guild, userid, nick: string;
                             reason: string = ""): Future[void] {.
base, gcsafe, raises: [FutureError], tags: [RootEffect, TimeEffect, ReadIOEffect]
.}
Sets the nickname of a member
method guildMemberMute(s: Shard; guild, userid: string; mute: bool; reason: string = ""): Future[
    void] {.
base, gcsafe, raises: [FutureError], tags: [RootEffect, TimeEffect, ReadIOEffect]
.}
Mutes a guild member
method guildMemberDeafen(s: Shard; guild, userid: string; deafen: bool;
                        reason: string = ""): Future[void] {.
base, gcsafe, raises: [FutureError], tags: [RootEffect, TimeEffect, ReadIOEffect]
.}
Deafens a guild member
method guildMemberMove(s: Shard; guild, userid, channel: string; reason: string = ""): Future[
    void] {.
base, gcsafe, raises: [FutureError], tags: [RootEffect, TimeEffect, ReadIOEffect]
.}
Moves a guild member from one channel to another only works if they are connected to a voice channel
method setNickname(s: Shard; guild, nick: string; reason: string = ""): Future[void] {.
base, gcsafe, raises: [FutureError], tags: [RootEffect, TimeEffect, ReadIOEffect]
.}
Sets the nick for the current user
method guildMemberAddRole(s: Shard; guild, userid, roleid: string; reason: string = ""): Future[
    void] {.
base, gcsafe, raises: [FutureError], tags: [RootEffect, TimeEffect, ReadIOEffect]
.}
Adds a role to a guild member
method guildMemberRemoveRole(s: Shard; guild, userid, roleid: string;
                            reason: string = ""): Future[void] {.
base, gcsafe, raises: [FutureError], tags: [RootEffect, TimeEffect, ReadIOEffect]
.}
Removes a role from a guild member
method guildRemoveMemberWithReason(s: Shard; guild, userid, reason: string): Future[
    void] {.
base, gcsafe, raises: [FutureError], tags: [RootEffect, TimeEffect, ReadIOEffect]
.}
method guildRemoveMember(s: Shard; guild, userid: string; reason: string = ""): Future[
    void] {.
base, gcsafe, inline, raises: [FutureError], tags: [RootEffect]
.}
Removes a guild membe from the guild
method guildBans(s: Shard; guild: string): Future[seq[User]] {.
base, gcsafe, inline, raises: [FutureError], tags: [RootEffect, TimeEffect, ReadIOEffect]
.}
Returns all users who have been banned from the guild
method guildUserBan(s: Shard; guild, userid: string; reason: string = ""): Future[void] {.
base, gcsafe, raises: [FutureError], tags: [RootEffect, TimeEffect, ReadIOEffect]
.}
Bans a user from the guild
method guildRemoveBan(s: Shard; guild, userid: string; reason: string = ""): Future[void] {.
base, gcsafe, raises: [FutureError], tags: [RootEffect, TimeEffect, ReadIOEffect]
.}
Removes a ban from the guild
method guildRoles(s: Shard; guild: string): Future[seq[Role]] {.
base, gcsafe, raises: [FutureError], tags: [RootEffect, TimeEffect, ReadIOEffect]
.}
Returns all guild roles
method guildRole(s: Shard; guild, roleid: string): Future[Role] {.
base, gcsafe, raises: [FutureError], tags: [RootEffect]
.}
Returns a role with the given id.
method guildCreateRole(s: Shard; guild: string; reason: string = ""): Future[Role] {.
base, gcsafe, raises: [FutureError], tags: [RootEffect, TimeEffect, ReadIOEffect]
.}
Creates a new role in the guild
method guildEditRolePosition(s: Shard; guild: string; roles: seq[Role];
                            reason: string = ""): Future[seq[Role]] {.
base, gcsafe, raises: [FutureError], tags: [RootEffect, TimeEffect, ReadIOEffect, WriteIOEffect]
.}
Edits the positions of a guilds roles roles and returns the new roles order
method guildEditRole(s: Shard; guild, roleid, name: string; permissions, color: int;
                    hoist, mentionable: bool; reason: string = ""): Future[Role] {.
base, gcsafe, raises: [FutureError], tags: [RootEffect, TimeEffect, ReadIOEffect]
.}
Edits a role
method guildDeleteRole(s: Shard; guild, roleid: string; reason: string = ""): Future[void] {.
base, gcsafe, raises: [FutureError], tags: [RootEffect, TimeEffect, ReadIOEffect]
.}
Deletes a role
method guildPruneCount(s: Shard; guild: string; days: int): Future[int] {.
base, gcsafe, raises: [FutureError], tags: [RootEffect, TimeEffect, ReadIOEffect]
.}
Returns the number of members who would get kicked during a prune operation
method guildPruneBegin(s: Shard; guild: string; days: int; reason: string = ""): Future[int] {.
base, gcsafe, raises: [FutureError], tags: [RootEffect, TimeEffect, ReadIOEffect]
.}
Begins a prune operation and kicks all members who haven't been active for N days
method guildVoiceRegions(s: Shard; guild: string): Future[seq[VoiceRegion]] {.
base, gcsafe, inline, raises: [FutureError], tags: [RootEffect, TimeEffect, ReadIOEffect]
.}
Lists all voice regions in a guild
method guildInvites(s: Shard; guild: string): Future[seq[Invite]] {.
base, gcsafe, inline, raises: [FutureError], tags: [RootEffect, TimeEffect, ReadIOEffect]
.}
Lists all guild invites
method guildIntegrations(s: Shard; guild: string): Future[seq[Integration]] {.
base, gcsafe, inline, raises: [FutureError], tags: [RootEffect, TimeEffect, ReadIOEffect]
.}
Lists all guild integrations
method guildIntegrationCreate(s: Shard; guild, typ, id: string): Future[void] {.
base, gcsafe, raises: [FutureError], tags: [RootEffect, TimeEffect, ReadIOEffect]
.}
Creates a new guild integration
method guildIntegrationEdit(s: Shard; guild, integrationid: string;
                           behaviour, grace: int; emotes: bool): Future[void] {.
base, gcsafe, raises: [FutureError], tags: [RootEffect, TimeEffect, ReadIOEffect]
.}
Edits a guild integration
method guildIntegrationDelete(s: Shard; guild, integration: string): Future[void] {.
base, gcsafe, inline, raises: [FutureError], tags: [RootEffect, TimeEffect, ReadIOEffect]
.}
Deletes a guild Integration
method guildIntegrationSync(s: Shard; guild, integration: string): Future[void] {.
base, gcsafe, inline, raises: [FutureError], tags: [RootEffect, TimeEffect, ReadIOEffect]
.}
Syncs an existing guild integration
method guildEmbed(s: Shard; guild: string): Future[GuildEmbed] {.
base, gcsafe, inline, raises: [FutureError], tags: [RootEffect, TimeEffect, ReadIOEffect]
.}
Gets a GuildEmbed
method guildEmbedEdit(s: Shard; guild: string; enabled: bool; channel: string): Future[
    GuildEmbed] {.
base, gcsafe, raises: [FutureError], tags: [RootEffect, TimeEffect, ReadIOEffect, WriteIOEffect]
.}
Edits a GuildEmbed
method guildEmojiCreate(s: Shard; guild, name, image: string; roles: seq[string] = @[]): Future[
    Emoji] {.
base, gcsafe, raises: [FutureError], tags: [ReadIOEffect, RootEffect, TimeEffect]
.}
method guildEmojiUpdate(s: Shard; guild, emoji, name: string; roles: seq[string] = @[]): Future[
    Emoji] {.
base, gcsafe, raises: [FutureError], tags: [ReadIOEffect, RootEffect, TimeEffect]
.}
Updates a guild emoji
method guildEmojiDelete(s: Shard; guild, emoji: string): Future[void] {.
base, gcsafe, raises: [FutureError], tags: [RootEffect, TimeEffect, ReadIOEffect]
.}
method guildAuditLog(s: Shard; guild: string; user_id: string = "";
                    action_type: int = -1; before: string = ""; limit: int = 50): Future[
    AuditLog] {.
gcsafe, base, raises: [FutureError], tags: [RootEffect, TimeEffect, ReadIOEffect]
.}
method invite(s: Shard; code: string): Future[Invite] {.
base, gcsafe, inline, raises: [FutureError], tags: [RootEffect, TimeEffect, ReadIOEffect]
.}
Gets an invite with code
method inviteDelete(s: Shard; code: string; reason: string = ""): Future[Invite] {.
base, gcsafe, raises: [FutureError], tags: [RootEffect, TimeEffect, ReadIOEffect]
.}
Deletes an invite
method me(s: Shard): User {.
base, gcsafe, inline, raises: [], tags: []
.}
Returns the current user
method user(s: Shard; userid: string): Future[User] {.
base, gcsafe, raises: [FutureError], tags: [RootEffect, TimeEffect, ReadIOEffect]
.}
Gets a user
method usernameEdit(s: Shard; name: string): Future[User] {.
base, gcsafe, inline, raises: [FutureError], tags: [RootEffect, TimeEffect, ReadIOEffect]
.}
Edits the current users username
method avatarEdit(s: Shard; avatar: string): Future[User] {.
base, gcsafe, inline, raises: [FutureError], tags: [RootEffect, TimeEffect, ReadIOEffect]
.}
Changes the current users avatar
method currentUserGuilds(s: Shard): Future[seq[UserGuild]] {.
base, gcsafe, inline, raises: [FutureError], tags: [RootEffect, TimeEffect, ReadIOEffect]
.}
Lists the current users guilds
method leaveGuild(s: Shard; guild: string): Future[void] {.
base, gcsafe, inline, raises: [FutureError], tags: [RootEffect, TimeEffect, ReadIOEffect]
.}
Makes the current user leave the specified guild
method activePrivateChannels(s: Shard): Future[seq[Channel]] {.
base, gcsafe, inline, raises: [FutureError], tags: [ReadIOEffect, RootEffect, TimeEffect]
.}
Lists all active DM channels
method privateChannelCreate(s: Shard; recipient: string): Future[Channel] {.
base, gcsafe, inline, raises: [FutureError], tags: [ReadIOEffect, RootEffect, TimeEffect]
.}
Creates a new DM channel
method voiceRegions(s: Shard): Future[seq[VoiceRegion]] {.
base, gcsafe, inline, raises: [FutureError], tags: [RootEffect, TimeEffect, ReadIOEffect]
.}
Lists all voice regions
method webhookCreate(s: Shard; channel, name, avatar: string; reason: string = ""): Future[
    Webhook] {.
base, gcsafe, raises: [FutureError], tags: [RootEffect, TimeEffect, ReadIOEffect]
.}
Creates a webhook
method channelWebhooks(s: Shard; channel: string): Future[seq[Webhook]] {.
base, gcsafe, inline, raises: [FutureError], tags: [RootEffect, TimeEffect, ReadIOEffect]
.}
Lists all webhooks in a channel
method guildWebhooks(s: Shard; guild: string): Future[seq[Webhook]] {.
base, gcsafe, inline, raises: [FutureError], tags: [RootEffect, TimeEffect, ReadIOEffect]
.}
Lists all webhooks in a guild
method getWebhookWithToken(s: Shard; webhook, token: string): Future[Webhook] {.
base, gcsafe, inline, raises: [FutureError], tags: [RootEffect, TimeEffect, ReadIOEffect]
.}
Gets a webhook with a token
method webhookEdit(s: Shard; webhook, name, avatar: string; reason: string = ""): Future[
    Webhook] {.
base, gcsafe, raises: [FutureError], tags: [RootEffect, TimeEffect, ReadIOEffect]
.}
Edits a webhook
method webhookEditWithToken(s: Shard; webhook, token, name, avatar: string;
                           reason: string = ""): Future[Webhook] {.
base, gcsafe, raises: [FutureError], tags: [RootEffect, TimeEffect, ReadIOEffect]
.}
Edits a webhook with a token
method webhookDelete(s: Shard; webhook: string; reason: string = ""): Future[Webhook] {.
base, gcsafe, raises: [FutureError], tags: [RootEffect, TimeEffect, ReadIOEffect]
.}
Deletes a webhook
method webhookDeleteWithToken(s: Shard; webhook, token: string; reason: string = ""): Future[
    Webhook] {.
base, gcsafe, raises: [FutureError], tags: [RootEffect, TimeEffect, ReadIOEffect]
.}
Deltes a webhook with a token
method executeWebhook(s: Shard; webhook, token: string; payload: WebhookParams): Future[
    void] {.
base, gcsafe, inline, raises: [FutureError], tags: [RootEffect, TimeEffect, ReadIOEffect, WriteIOEffect]
.}
Executes a webhook
method updateStreamingStatus(s: Shard; idle: int = 0; game: string; url: string = "";
                            status: string = "online"): Future[void] {.
base, gcsafe, raises: [FutureError], tags: [RootEffect, WriteIOEffect, ReadIOEffect]
.}
Updates the Playing ... message of the current user.
method updateStatus(s: Shard; idle: int = 0; game: string = ""): Future[void] {.
base, gcsafe, inline, raises: [FutureError], tags: [RootEffect]
.}
Updates the Playing ... status
method disconnect(s: Shard): Future[void] {.
gcsafe, base, raises: [FutureError], tags: [ RootEffect, WriteIOEffect, ReadIOEffect]
.}
Disconnects a shard
method startSession(s: Shard): Future[void] {.
base, raises: [FutureError], tags: [RootEffect, TimeEffect, WriteIOEffect, ReadIOEffect]
.}
Connects a Shard