Interaction with the Discord API:
Quick note: for executing webhooks, this can also apply to interactions, I'd recommend reading: https://discord.com/developers/docs/interactions/slash-commands
Endpoint aliases start here: https://discord.com/developers/docs/interactions/slash-commands#edit-original-interaction-response
Procs
proc sendMessage(api: RestApi; channel_id: string; content = ""; tts = false; embed = none Embed; allowed_mentions = none AllowedMentions; nonce: Option[string] or Option[int] = none(int); files = none seq[DiscordFile]; message_reference = none MessageReference): Future[Message]
-
Sends a discord message.
- nonce This can be used for optimistic message sending
proc editMessage(api: RestApi; channel_id, message_id: string; content = ""; tts = false; flags = none(int); embed = none Embed): Future[ Message] {...}{.raises: [Exception, ValueError], tags: [RootEffect, TimeEffect, ReadIOEffect, WriteIOEffect].}
- Edits a discord message. Source Edit
proc crosspostMessage(api: RestApi; channel_id, message_id: string): Future[ Message] {...}{.raises: [Exception, ValueError], tags: [RootEffect, TimeEffect, ReadIOEffect, WriteIOEffect].}
- Crosspost channel message aka publish messages into news channels. Source Edit
proc deleteMessage(api: RestApi; channel_id, message_id: string; reason = ""): owned( Future[void]) {...}{.raises: [Exception], tags: [RootEffect, TimeEffect, ReadIOEffect, WriteIOEffect].}
- Deletes a discord message. Source Edit
proc getChannelMessages(api: RestApi; channel_id: string; around, before, after = ""; limit = 50): Future[ seq[Message]] {...}{.raises: [Exception, ValueError], tags: [RootEffect, TimeEffect, ReadIOEffect, WriteIOEffect].}
- Gets channel messages. Source Edit
proc getChannelMessage(api: RestApi; channel_id, message_id: string): Future[ Message] {...}{.raises: [Exception, ValueError], tags: [RootEffect, TimeEffect, ReadIOEffect, WriteIOEffect].}
- Get a channel message. Source Edit
proc bulkDeleteMessages(api: RestApi; channel_id: string; message_ids: seq[string]; reason = ""): owned( Future[void]) {...}{.raises: [Exception], tags: [RootEffect, TimeEffect, ReadIOEffect, WriteIOEffect].}
- Bulk deletes messages. Source Edit
proc addMessageReaction(api: RestApi; channel_id, message_id, emoji: string): owned( Future[void]) {...}{.raises: [Exception], tags: [RootEffect, TimeEffect, ReadIOEffect, WriteIOEffect].}
-
Adds a message reaction to a Discord message.
- emoji Example: '👀', '💩', likethis:123456789012345678
proc deleteMessageReaction(api: RestApi; channel_id, message_id, emoji: string; user_id = "@me"): owned(Future[void]) {...}{. raises: [Exception], tags: [RootEffect, TimeEffect, ReadIOEffect, WriteIOEffect].}
- Deletes the user's or the bot's message reaction to a Discord message. Source Edit
proc deleteMessageReactionEmoji(api: RestApi; channel_id, message_id, emoji: string): owned( Future[void]) {...}{.raises: [Exception], tags: [RootEffect, TimeEffect, ReadIOEffect, WriteIOEffect].}
- Deletes all the reactions for emoji. Source Edit
proc getMessageReactions(api: RestApi; channel_id, message_id, emoji: string; before, after = ""; limit = 25): Future[seq[User]] {...}{. raises: [Exception, ValueError], tags: [RootEffect, TimeEffect, ReadIOEffect, WriteIOEffect].}
- Get all user message reactions on the emoji provided. Source Edit
proc deleteAllMessageReactions(api: RestApi; channel_id, message_id: string): owned( Future[void]) {...}{.raises: [Exception], tags: [RootEffect, TimeEffect, ReadIOEffect, WriteIOEffect].}
- Remove all message reactions. Source Edit
proc executeWebhook(api: RestApi; webhook_id, webhook_token: string; wait = true; content = ""; tts = false; file = none DiscordFile; embeds = none array[10, Embed]; allowed_mentions = none AllowedMentions; username, avatar_url = none string): Future[Message] {...}{. raises: [Exception, ValueError], tags: [ReadIOEffect, RootEffect, TimeEffect, WriteIOEffect].}
-
Executes a webhook or create a followup message. If wait is false make sure to discard await it.
- webhook_id can be used as application id
- webhook_token can be used as interaction token
proc editWebhookMessage(api: RestApi; webhook_id, webhook_token, message_id: string; content = none string; embeds = none array[10, Embed]; allowed_mentions = none AllowedMentions): owned( Future[void]) {...}{.raises: [Exception], tags: [RootEffect, TimeEffect, ReadIOEffect, WriteIOEffect].}
-
Modifies the webhook message. You can actually use this to modify original interaction or followup message.
- webhook_id can also be application_id
- webhook_token can also be interaction token.
- message_id can be @original
proc deleteWebhookMessage(api: RestApi; webhook_id, webhook_token, message_id: string): owned( Future[void]) {...}{.raises: [Exception], tags: [RootEffect, TimeEffect, ReadIOEffect, WriteIOEffect].}
-
Modifies the webhook message. You can actually use this to delete original interaction or followup message.
- webhook_id can also be application_id
- webhook_token can also be interaction token.
proc executeSlackWebhook(api: RestApi; webhook_id, token: string; wait = true): Future[ Message] {...}{.raises: [Exception, ValueError], tags: [RootEffect, TimeEffect, ReadIOEffect, WriteIOEffect].}
- Executes a slack webhook. If wait is false make sure to discard await it. Source Edit
proc executeGithubWebhook(api: RestApi; webhook_id, token: string; wait = true): Future[ Message] {...}{.raises: [Exception, ValueError], tags: [RootEffect, TimeEffect, ReadIOEffect, WriteIOEffect].}
- Executes a github webhook. If wait is false make sure to discard await it. Source Edit
proc triggerTypingIndicator(api: RestApi; channel_id: string): owned( Future[void]) {...}{.raises: [Exception], tags: [RootEffect, TimeEffect, ReadIOEffect, WriteIOEffect].}
- Starts typing in a specific Discord channel. Source Edit
proc addChannelMessagePin(api: RestApi; channel_id, message_id: string; reason = ""): owned(Future[void]) {...}{. raises: [Exception], tags: [RootEffect, TimeEffect, ReadIOEffect, WriteIOEffect].}
- Add pinned message. Source Edit
proc deleteChannelMessagePin(api: RestApi; channel_id, message_id: string; reason = ""): owned(Future[void]) {...}{. raises: [Exception], tags: [RootEffect, TimeEffect, ReadIOEffect, WriteIOEffect].}
- Remove pinned message. Source Edit
proc getChannelPins(api: RestApi; channel_id: string): Future[seq[Message]] {...}{. raises: [Exception, ValueError], tags: [RootEffect, TimeEffect, ReadIOEffect, WriteIOEffect].}
- Get channel pins. Source Edit
proc editGuildChannel(api: RestApi; channel_id: string; name, parent_id, topic = none string; rate_limit_per_user, bitrate = none int; position, user_limit = none int; permission_overwrites = none seq[Overwrite]; nsfw = none bool; reason = ""): Future[GuildChannel] {...}{. raises: [Exception, ValueError], tags: [RootEffect, TimeEffect, ReadIOEffect, WriteIOEffect].}
- Modify a guild channel. Source Edit
proc createGuildChannel(api: RestApi; guild_id, name: string; kind = 0; parent_id, topic = none string; nsfw = none bool; rate_limit_per_user, bitrate, position, user_limit = none int; permission_overwrites = none seq[Overwrite]; reason = ""): Future[ GuildChannel] {...}{.raises: [Exception, ValueError], tags: [RootEffect, TimeEffect, ReadIOEffect, WriteIOEffect].}
- Creates a channel. Source Edit
proc deleteChannel(api: RestApi; channel_id: string; reason = ""): owned( Future[void]) {...}{.raises: [Exception], tags: [RootEffect, TimeEffect, ReadIOEffect, WriteIOEffect].}
- Deletes or closes a channel. Source Edit
proc editGuildChannelPermissions(api: RestApi; channel_id, perm_id, kind: string or int; perms: PermObj; reason = ""): owned( Future[void])
-
Modify the channel's permissions.
- kind Must be "role" or "member", or 0 or 1 if v8.
proc createChannelInvite(api: RestApi; channel_id: string; max_age = 86400; max_uses = 0; temp, unique = false; target_user = none string; target_user_type = none int; reason = ""): Future[Invite] {...}{. raises: [Exception, ValueError], tags: [RootEffect, TimeEffect, ReadIOEffect, WriteIOEffect].}
- Creates an instant invite. Source Edit
proc deleteGuildChannelPermission(api: RestApi; channel_id, overwrite: string; reason = ""): owned(Future[void]) {...}{. raises: [Exception], tags: [RootEffect, TimeEffect, ReadIOEffect, WriteIOEffect].}
- Deletes a guild channel overwrite. Source Edit
proc deleteInvite(api: RestApi; code: string; reason = ""): owned(Future[void]) {...}{. raises: [Exception], tags: [RootEffect, TimeEffect, ReadIOEffect, WriteIOEffect].}
- Deletes a guild invite. Source Edit
proc getChannelInvites(api: RestApi; channel_id: string): Future[seq[Invite]] {...}{. raises: [Exception, ValueError], tags: [RootEffect, TimeEffect, ReadIOEffect, WriteIOEffect].}
- Gets a list of a channel's invites. Source Edit
proc getGuildChannel(api: RestApi; guild_id, channel_id: string): Future[ GuildChannel] {...}{.raises: [Exception, ValueError], tags: [RootEffect, TimeEffect, ReadIOEffect, WriteIOEffect].}
- Gets a guild channel. Source Edit
proc getGuildChannels(api: RestApi; guild_id: string): Future[seq[GuildChannel]] {...}{. raises: [Exception, ValueError], tags: [RootEffect, TimeEffect, ReadIOEffect, WriteIOEffect].}
- Gets a list of a guild's channels Source Edit
proc editGuildChannelPositions(api: RestApi; guild_id, channel_id: string; position = none int; reason = ""): owned( Future[void]) {...}{.raises: [Exception], tags: [RootEffect, TimeEffect, ReadIOEffect, WriteIOEffect].}
- Edits a guild channel's position. Source Edit
proc getChannelWebhooks(api: RestApi; channel_id: string): Future[seq[Webhook]] {...}{. raises: [Exception, ValueError], tags: [RootEffect, TimeEffect, ReadIOEffect, WriteIOEffect].}
- Gets a list of a channel's webhooks. Source Edit
proc createWebhook(api: RestApi; channel_id, username: string; avatar = none string; reason = ""): Future[Webhook] {...}{. raises: [Exception, ValueError], tags: [RootEffect, TimeEffect, ReadIOEffect, WriteIOEffect].}
- Creates a webhook. (webhook names cannot be: 'clyde', and they range 1-80) Source Edit
proc getWebhook(api: RestApi; webhook_id: string): Future[Webhook] {...}{. raises: [Exception, ValueError], tags: [RootEffect, TimeEffect, ReadIOEffect, WriteIOEffect].}
- Gets a webhook. Source Edit
proc deleteWebhook(api: RestApi; webhook_id: string; reason = ""): owned( Future[void]) {...}{.raises: [Exception], tags: [RootEffect, TimeEffect, ReadIOEffect, WriteIOEffect].}
- Deletes a webhook. Source Edit
proc editWebhook(api: RestApi; webhook_id: string; name, avatar, channel_id = none string; reason = ""): owned( Future[void]) {...}{.raises: [Exception], tags: [RootEffect, TimeEffect, ReadIOEffect, WriteIOEffect].}
- Modifies a webhook. Source Edit
proc beginGuildPrune(api: RestApi; guild_id: string; days = 7; compute_prune_count = true; reason = ""): owned( Future[void]) {...}{.raises: [Exception], tags: [RootEffect, TimeEffect, ReadIOEffect, WriteIOEffect].}
- Begins a guild prune. Source Edit
proc getGuildPruneCount(api: RestApi; guild_id: string; days: int): Future[int] {...}{. raises: [Exception, ValueError], tags: [RootEffect, TimeEffect, ReadIOEffect, WriteIOEffect].}
- Gets the prune count. Source Edit
proc deleteGuild(api: RestApi; guild_id: string): owned(Future[void]) {...}{. raises: [Exception], tags: [RootEffect, TimeEffect, ReadIOEffect, WriteIOEffect].}
- Deletes a guild. Source Edit
proc editGuild(api: RestApi; guild_id: string; name, region, afk_channel_id, icon = none string; discovery_splash, owner_id, splash, banner = none string; system_channel_id, rules_channel_id = none string; preferred_locale, public_updates_channel_id = none string; verification_level, default_message_notifications = none int; explicit_content_filter, afk_timeout = none int; reason = ""): Future[ Guild] {...}{.raises: [Exception, ValueError], tags: [RootEffect, TimeEffect, ReadIOEffect, WriteIOEffect].}
- Edits a guild. Icon needs to be a base64 image. (See: https://nim-lang.org/docs/base64.html) Source Edit
proc createGuild(api: RestApi; name, region = none string; icon, afk_channel_id, system_channel_id = none string; verification_level, default_message_notifications = none int; afk_timeout, explicit_content_filter = none int; roles = none seq[Role]; channels = none seq[Channel]): Future[ Guild] {...}{.raises: [Exception, ValueError], tags: [RootEffect, TimeEffect, ReadIOEffect, WriteIOEffect].}
- Create a guild. Please read these notes: https://discord.com/developers/docs/resources/guild#create-guild Source Edit
proc getGuild(api: RestApi; guild_id: string; with_counts = false): Future[Guild] {...}{. raises: [Exception, ValueError], tags: [RootEffect, TimeEffect, ReadIOEffect, WriteIOEffect].}
- Gets a guild. Source Edit
proc getGuildAuditLogs(api: RestApi; guild_id: string; user_id, before = ""; action_type = -1; limit = 50): Future[AuditLog] {...}{. raises: [Exception, ValueError], tags: [RootEffect, TimeEffect, ReadIOEffect, WriteIOEffect].}
- Get guild audit logs. The maximum limit is 100. Source Edit
proc getGuildRoles(api: RestApi; guild_id: string): Future[seq[Role]] {...}{. raises: [Exception, ValueError], tags: [RootEffect, TimeEffect, ReadIOEffect, WriteIOEffect].}
- Gets a guild's roles. Source Edit
proc createGuildRole(api: RestApi; guild_id: string; name = "new role"; hoist, mentionable = false; permissions: PermObj; color = 0; reason = ""): Future[Role] {...}{. raises: [Exception, ValueError], tags: [RootEffect, TimeEffect, ReadIOEffect, WriteIOEffect].}
- Creates a guild role. Source Edit
proc deleteGuildRole(api: RestApi; guild_id, role_id: string): owned( Future[void]) {...}{.raises: [Exception], tags: [RootEffect, TimeEffect, ReadIOEffect, WriteIOEffect].}
- Deletes a guild role. Source Edit
proc editGuildRole(api: RestApi; guild_id, role_id: string; name = none string; permissions = none PermObj; color = none int; hoist, mentionable = none bool; reason = ""): Future[Role] {...}{. raises: [Exception, ValueError], tags: [RootEffect, TimeEffect, ReadIOEffect, WriteIOEffect].}
- Modifies a guild role. Source Edit
proc editGuildRolePosition(api: RestApi; guild_id, role_id: string; position = none int; reason = ""): Future[seq[Role]] {...}{. raises: [Exception, ValueError], tags: [RootEffect, TimeEffect, ReadIOEffect, WriteIOEffect].}
- Edits guild role position. Source Edit
proc getGuildInvites(api: RestApi; guild_id: string): Future[seq[InviteMetadata]] {...}{. raises: [Exception, ValueError], tags: [RootEffect, TimeEffect, ReadIOEffect, WriteIOEffect].}
- Gets guild invites. Source Edit
proc getGuildVanityUrl(api: RestApi; guild_id: string): Future[ tuple[code: Option[string], uses: int]] {...}{.raises: [Exception, ValueError], tags: [RootEffect, TimeEffect, ReadIOEffect, WriteIOEffect].}
- Gets the guild vanity url. Source Edit
proc editGuildMember(api: RestApi; guild_id, user_id: string; nick, channel_id = none string; roles = none seq[string]; mute, deaf = none bool; reason = ""): owned(Future[void]) {...}{. raises: [Exception], tags: [RootEffect, TimeEffect, ReadIOEffect, WriteIOEffect].}
- Modifies a guild member Source Edit
proc removeGuildMember(api: RestApi; guild_id, user_id: string; reason = ""): owned( Future[void]) {...}{.raises: [Exception], tags: [RootEffect, TimeEffect, ReadIOEffect, WriteIOEffect].}
- Removes a guild member. Source Edit
proc getGuildBan(api: RestApi; guild_id, user_id: string): Future[GuildBan] {...}{. raises: [Exception, ValueError], tags: [RootEffect, TimeEffect, ReadIOEffect, WriteIOEffect].}
- Gets guild ban. Source Edit
proc getGuildBans(api: RestApi; guild_id: string): Future[seq[GuildBan]] {...}{. raises: [Exception, ValueError], tags: [RootEffect, TimeEffect, ReadIOEffect, WriteIOEffect].}
- Gets all the guild bans. Source Edit
proc createGuildBan(api: RestApi; guild_id, user_id: string; deletemsgdays = 0; reason = ""): owned(Future[void]) {...}{.raises: [Exception], tags: [RootEffect, TimeEffect, ReadIOEffect, WriteIOEffect].}
- Creates a guild ban. Source Edit
proc removeGuildBan(api: RestApi; guild_id, user_id: string; reason = ""): owned( Future[void]) {...}{.raises: [Exception], tags: [RootEffect, TimeEffect, ReadIOEffect, WriteIOEffect].}
- Removes a guild ban. Source Edit
proc getGuildIntegrations(api: RestApi; guild_id: string): Future[ seq[Integration]] {...}{.raises: [Exception, ValueError], tags: [RootEffect, TimeEffect, ReadIOEffect, WriteIOEffect].}
- Gets a list of guild integrations. Source Edit
proc getGuildWebhooks(api: RestApi; guild_id: string): Future[seq[Webhook]] {...}{. raises: [Exception, ValueError], tags: [RootEffect, TimeEffect, ReadIOEffect, WriteIOEffect].}
- Gets a list of a channel's webhooks. Source Edit
proc syncGuildIntegration(api: RestApi; guild_id, integ_id: string): owned( Future[void]) {...}{.raises: [Exception], tags: [RootEffect, TimeEffect, ReadIOEffect, WriteIOEffect].}
- Syncs a guild integration. Source Edit
proc editGuildIntegration(api: RestApi; guild_id, integ_id: string; expire_behavior, expire_grace_period = none int; enable_emoticons = none bool; reason = ""): owned( Future[void]) {...}{.raises: [Exception], tags: [RootEffect, TimeEffect, ReadIOEffect, WriteIOEffect].}
- Edits a guild integration. Source Edit
proc deleteGuildIntegration(api: RestApi; integ_id: string; reason = ""): owned( Future[void]) {...}{.raises: [Exception], tags: [RootEffect, TimeEffect, ReadIOEffect, WriteIOEffect].}
- Deletes a guild integration. Source Edit
proc getGuildWidget(api: RestApi; guild_id: string): Future[GuildWidgetJson] {...}{. raises: [Exception, ValueError], tags: [RootEffect, TimeEffect, ReadIOEffect, WriteIOEffect].}
- Gets a guild widget. Source Edit
proc editGuildWidget(api: RestApi; guild_id: string; enabled = none bool; channel_id = none string): Future[ tuple[enabled: bool, channel_id: Option[string]]] {...}{. raises: [Exception, ValueError], tags: [RootEffect, TimeEffect, ReadIOEffect, WriteIOEffect].}
- Modifies a guild widget. Source Edit
proc getGuildPreview(api: RestApi; guild_id: string): Future[GuildPreview] {...}{. raises: [Exception, ValueError], tags: [RootEffect, TimeEffect, ReadIOEffect, WriteIOEffect].}
- Gets guild preview. Source Edit
proc addGuildMember(api: RestApi; guild_id, user_id, access_token: string; nick = none string; roles = none seq[string]; mute, deaf = none bool; reason = ""): Future[ tuple[member: Member, exists: bool]] {...}{.raises: [Exception, ValueError], tags: [RootEffect, TimeEffect, ReadIOEffect, WriteIOEffect].}
- Adds a guild member. If member is in the guild, then exists will be true. Source Edit
proc createGuildEmoji(api: RestApi; guild_id, name, image: string; roles: seq[string] = @[]; reason = ""): Future[Emoji] {...}{. raises: [Exception, ValueError], tags: [RootEffect, TimeEffect, ReadIOEffect, WriteIOEffect].}
- Creates a guild emoji. The image needs to be a base64 string. (See: https://nim-lang.org/docs/base64.html) Source Edit
proc editGuildEmoji(api: RestApi; guild_id, emoji_id: string; name = none string; roles = none seq[string]; reason = ""): Future[ Emoji] {...}{.raises: [Exception, ValueError], tags: [RootEffect, TimeEffect, ReadIOEffect, WriteIOEffect].}
- Modifies a guild emoji. Source Edit
proc deleteGuildEmoji(api: RestApi; guild_id, emoji_id: string; reason = ""): owned( Future[void]) {...}{.raises: [Exception], tags: [RootEffect, TimeEffect, ReadIOEffect, WriteIOEffect].}
- Deletes a guild emoji. Source Edit
proc getGuildVoiceRegions(api: RestApi; guild_id: string): Future[ seq[VoiceRegion]] {...}{.raises: [Exception, ValueError], tags: [RootEffect, TimeEffect, ReadIOEffect, WriteIOEffect].}
- Gets a guild's voice regions. Source Edit
proc getVoiceRegions(api: RestApi): Future[seq[VoiceRegion]] {...}{. raises: [Exception, ValueError], tags: [RootEffect, TimeEffect, ReadIOEffect, WriteIOEffect].}
- Get voice regions Source Edit
proc createGuildFromTemplate(api: RestApi; code: string): Future[Guild] {...}{. raises: [Exception, ValueError], tags: [RootEffect, TimeEffect, ReadIOEffect, WriteIOEffect].}
- Create a guild from a template, this endpoint is used for bots that are in >10 guilds Source Edit
proc getGuildTemplate(api: RestApi; code: string): Future[GuildTemplate] {...}{. raises: [Exception, ValueError], tags: [RootEffect, TimeEffect, ReadIOEffect, WriteIOEffect].}
- Get guild template from its code. Source Edit
proc createGuildTemplate(api: RestApi; guild_id, name: string; description = none string): Future[GuildTemplate] {...}{. raises: [Exception, ValueError], tags: [RootEffect, TimeEffect, ReadIOEffect, WriteIOEffect].}
- Create a guild template Source Edit
proc syncGuildTemplate(api: RestApi; guild_id, code: string): Future[ GuildTemplate] {...}{.raises: [Exception, ValueError], tags: [RootEffect, TimeEffect, ReadIOEffect, WriteIOEffect].}
- Sync guild template. Source Edit
proc editGuildTemplate(api: RestApi; guild_id, code: string; name, description = none string): Future[GuildTemplate] {...}{. raises: [Exception, ValueError], tags: [RootEffect, TimeEffect, ReadIOEffect, WriteIOEffect].}
- Modify a guild template. Source Edit
proc deleteGuildTemplate(api: RestApi; guild_id, code: string): Future[ GuildTemplate] {...}{.raises: [Exception, ValueError], tags: [RootEffect, TimeEffect, ReadIOEffect, WriteIOEffect].}
- Delete guild template. Source Edit
proc getInvite(api: RestApi; code: string; with_counts, auth = false): Future[ Invite] {...}{.raises: [Exception, ValueError], tags: [RootEffect, TimeEffect, ReadIOEffect, WriteIOEffect].}
-
Gets a discord invite, it can be a vanity code.
- auth Whether you should get the invite while authenticated.
proc getGuildMember(api: RestApi; guild_id, user_id: string): Future[Member] {...}{. raises: [Exception, ValueError], tags: [RootEffect, TimeEffect, ReadIOEffect, WriteIOEffect].}
- Gets a guild member. Source Edit
proc getGuildMembers(api: RestApi; guild_id: string; limit = 1; after = "0"): Future[ seq[Member]] {...}{.raises: [Exception, ValueError], tags: [RootEffect, TimeEffect, ReadIOEffect, WriteIOEffect].}
- Gets a list of a guild's members. Source Edit
proc setGuildNick(api: RestApi; guild_id: string; nick, reason = ""): owned( Future[void]) {...}{.raises: [Exception], tags: [RootEffect, TimeEffect, ReadIOEffect, WriteIOEffect].}
- Sets the current user's guild nickname, defaults to "" if no nick is set. Source Edit
proc addGuildMemberRole(api: RestApi; guild_id, user_id, role_id: string; reason = ""): owned(Future[void]) {...}{.raises: [Exception], tags: [RootEffect, TimeEffect, ReadIOEffect, WriteIOEffect].}
- Assigns a member's role. Source Edit
proc removeGuildMemberRole(api: RestApi; guild_id, user_id, role_id: string; reason = ""): owned(Future[void]) {...}{. raises: [Exception], tags: [RootEffect, TimeEffect, ReadIOEffect, WriteIOEffect].}
- Removes a member's role. Source Edit
proc getUser(api: RestApi; user_id: string): Future[User] {...}{. raises: [Exception, ValueError], tags: [RootEffect, TimeEffect, ReadIOEffect, WriteIOEffect].}
- Gets a user. Source Edit
proc leaveGuild(api: RestApi; guild_id: string): owned(Future[void]) {...}{. raises: [Exception], tags: [RootEffect, TimeEffect, ReadIOEffect, WriteIOEffect].}
- Leaves a guild. Source Edit
proc createUserDm(api: RestApi; user_id: string): Future[DMChannel] {...}{. raises: [Exception, ValueError], tags: [RootEffect, TimeEffect, ReadIOEffect, WriteIOEffect].}
- Create user dm. Source Edit
proc getCurrentUser(api: RestApi): Future[User] {...}{. raises: [Exception, ValueError], tags: [RootEffect, TimeEffect, ReadIOEffect, WriteIOEffect].}
- Gets the current user. Source Edit
proc getGatewayBot(api: RestApi): Future[GatewayBot] {...}{. raises: [Exception, ValueError], tags: [RootEffect, TimeEffect, ReadIOEffect, WriteIOEffect].}
- Get gateway bot with authentication. Source Edit
proc getGateway(api: RestApi): Future[string] {...}{.raises: [Exception, ValueError], tags: [RootEffect, TimeEffect, ReadIOEffect, WriteIOEffect].}
- Get Discord gateway URL. Source Edit
proc editCurrentUser(api: RestApi; username, avatar = none string): Future[User] {...}{. raises: [Exception, ValueError], tags: [RootEffect, TimeEffect, ReadIOEffect, WriteIOEffect].}
- Modifies the bot's username or avatar. Source Edit
proc createGroupDm(api: RestApi; access_tokens: seq[string]; nicks: Table[string, string]): Future[DMChannel] {...}{. raises: [Exception, ValueError], tags: [RootEffect, TimeEffect, ReadIOEffect, WriteIOEffect].}
-
Creates a Group DM Channel.
- nicks Example: {"2123450": "MrDude"}.toTable
proc getCurrentApplication(api: RestApi): Future[OAuth2Application] {...}{. raises: [Exception, ValueError], tags: [RootEffect, TimeEffect, ReadIOEffect, WriteIOEffect].}
- Gets the current application for the current user (bot user). Source Edit
proc registerApplicationCommand(api: RestApi; application_id: string; guild_id = ""; name, description: string; options: seq[ApplicationCommandOption] = @[]): Future[ ApplicationCommand] {...}{.raises: [Exception, ValueError], tags: [RootEffect, TimeEffect, ReadIOEffect, WriteIOEffect].}
-
Create a global or guild only slash command.
- guild_id - Optional
- name - Character length (3 - 32)
- descripton - Character length (1 - 100)
NOTE: Creating a command with the same name as an existing command for your application will overwrite the old command.
Source Edit proc getApplicationCommands(api: RestApi; application_id: string; guild_id = ""): Future[ seq[ApplicationCommand]] {...}{.raises: [Exception, ValueError], tags: [ RootEffect, TimeEffect, ReadIOEffect, WriteIOEffect].}
- Get slash commands for a specific application, guild_id is optional. Source Edit
proc editApplicationCommand(api: RestApi; application_id, command_id: string; guild_id = ""; name, description: string; options: seq[ApplicationCommandOption] = @[]): Future[ ApplicationCommand] {...}{.raises: [Exception, ValueError], tags: [RootEffect, TimeEffect, ReadIOEffect, WriteIOEffect].}
-
Modify slash command for a specific application.
- guild_id - Optional
- name - Character length (3 - 32)
- descripton - Character length (1 - 100)
proc deleteApplicationCommand(api: RestApi; application_id, command_id: string; guild_id = ""): owned(Future[void]) {...}{. raises: [Exception], tags: [RootEffect, TimeEffect, ReadIOEffect, WriteIOEffect].}
- Delete slash command for a specific application, guild_id is optional. Source Edit
proc createInteractionResponse(api: RestApi; interaction_id, interaction_token: string; response: InteractionResponse): owned( Future[void]) {...}{.raises: [Exception], tags: [RootEffect, TimeEffect, ReadIOEffect, WriteIOEffect].}
- Create an interaction response. response.kind is required. Source Edit