diff --git a/.build b/.build index 6bb990d77..f86e8e016 100644 --- a/.build +++ b/.build @@ -68,9 +68,14 @@ Nostrum.Struct.AutoModerationRule.html Nostrum.Struct.Channel.html Nostrum.Struct.Component.ActionRow.html Nostrum.Struct.Component.Button.html +Nostrum.Struct.Component.ChannelSelect.html +Nostrum.Struct.Component.DefaultValue.html +Nostrum.Struct.Component.MentionableSelect.html Nostrum.Struct.Component.Option.html +Nostrum.Struct.Component.RoleSelect.html Nostrum.Struct.Component.SelectMenu.html Nostrum.Struct.Component.TextInput.html +Nostrum.Struct.Component.UserSelect.html Nostrum.Struct.Component.html Nostrum.Struct.Embed.Author.html Nostrum.Struct.Embed.Field.html @@ -182,8 +187,8 @@ dist/lato-latin-ext-300-normal-VPGGJKJL.woff2 dist/lato-latin-ext-400-normal-N27NCBWW.woff2 dist/lato-latin-ext-700-normal-Q2L5DVMW.woff2 dist/remixicon-NKANDIL5.woff2 -dist/search_data-18DEF2BE.js -dist/sidebar_items-9312FB79.js +dist/search_data-66B3A380.js +dist/sidebar_items-1B1415BF.js event_handling.html gateway_compression.html gateway_intents.html diff --git a/404.html b/404.html index 4151e0d01..5ef6b9647 100644 --- a/404.html +++ b/404.html @@ -16,7 +16,7 @@ - + diff --git a/Mix.Tasks.Gh.Docs.html b/Mix.Tasks.Gh.Docs.html index 866abfa06..3cd65f323 100644 --- a/Mix.Tasks.Gh.Docs.html +++ b/Mix.Tasks.Gh.Docs.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Api.Ratelimiter.html b/Nostrum.Api.Ratelimiter.html index cb9808a07..46f3ce2c0 100644 --- a/Nostrum.Api.Ratelimiter.html +++ b/Nostrum.Api.Ratelimiter.html @@ -14,7 +14,7 @@ - + @@ -164,9 +164,9 @@

The ratelimiter is fully asynchronous internally. In theory, it also supports queueing requests in an asynchronous manner. However, support for this is currently not implemented in Nostrum.Api.

If you want to make one or multiple asynchronous requests manually, you can -use the following pattern:

req = :gen_statem.send_request(Nostrum.Api.Ratelimiter, {:queue, request})
+use the following pattern:

req = :gen_statem.send_request(Nostrum.Api.Ratelimiter, {:queue, request})
 # ...
-response = :gen_statem.receive_response(req, timeout)

where request is a map describing the request to run - see Nostrum.Api +response = :gen_statem.receive_response(req, timeout)

where request is a map describing the request to run - see Nostrum.Api for more information. You can also send multiple requests at the same time and wait for their response: see :gen_statem.reqids_add/3 and :gen_statem.wait_response/3 for more information.

diff --git a/Nostrum.Api.html b/Nostrum.Api.html index 29f5b6639..2b06f46a1 100644 --- a/Nostrum.Api.html +++ b/Nostrum.Api.html @@ -14,7 +14,7 @@ - + @@ -142,25 +142,25 @@

Interface for Discord's rest API.

By default all methods in this module are ran synchronously. If you wish to have async rest operations I recommend you execute these functions inside of a task.

Examples

# Async Task
-t = Task.async fn ->
-  Nostrum.Api.get_channel_messages(12345678912345, :infinity, {})
-end
+t = Task.async fn ->
+  Nostrum.Api.get_channel_messages(12345678912345, :infinity, {})
+end
 messages = Task.await t
 
 # A lot of times we don't care about the return value of the function
-Task.start fn ->
-  messages = ["in", "the", "end", "it", "doesn't", "even", "matter"]
-  Enum.each messages, &Nostrum.Api.create_message!(12345678912345, &1)
-end

A note about Strings and Ints

Currently, responses from the REST api will have id fields as string. +Task.start fn -> + messages = ["in", "the", "end", "it", "doesn't", "even", "matter"] + Enum.each messages, &Nostrum.Api.create_message!(12345678912345, &1) +end

A note about Strings and Ints

Currently, responses from the REST api will have id fields as string. Everything received from the WS connection will have id fields as int.

If you're processing a response from the API and trying to access something in the cache based off of an id in the response, you will need to convert it to an int using -String.to_integer/1. I'm open to suggestions for how this should be handled going forward.

Example

messages = Nostrum.Api.get_pinned_messages!(12345678912345)
+String.to_integer/1. I'm open to suggestions for how this should be handled going forward.

Example

messages = Nostrum.Api.get_pinned_messages!(12345678912345)
 
 authors =
-  Enum.map messages, fn msg ->
-    author_id = String.to_integer(msg.author.id)
-    Nostrum.Cache.User.get!(id: author_id)
-  end
+
Enum.map messages, fn msg -> + author_id = String.to_integer(msg.author.id) + Nostrum.Cache.User.get!(id: author_id) + end
@@ -2902,13 +2902,13 @@

add_guild_member(guild_id, user_id, options Examples

-
Nostrum.Api.add_guild_member(
+
Nostrum.Api.add_guild_member(
   41771983423143937,
   18374719829378473,
   access_token: "6qrZcUqja7812RVdnEKjpzOL4CvHBFG",
   nick: "nostrum",
-  roles: [431849301, 913809431]
-)
+
roles: [431849301, 913809431] +)
@@ -3019,7 +3019,7 @@

add_pinned_channel_message(channel_id, mess Examples

-
Nostrum.Api.add_pinned_channel_message(43189401384091, 18743893102394)
+
Nostrum.Api.add_pinned_channel_message(43189401384091, 18743893102394)
@@ -3173,8 +3173,8 @@

begin_guild_prune(guild_id, days, reason \\ Examples

-
Nostrum.Api.begin_guild_prune(81384788765712384, 1)
-{:ok, %{pruned: 0}}
+
Nostrum.Api.begin_guild_prune(81384788765712384, 1)
+{:ok, %{pruned: 0}}
@@ -3430,11 +3430,11 @@

create_channel_invite(channel_id, options \ Examples

-
Nostrum.Api.create_channel_invite(41771983423143933)
-{:ok, Nostrum.Struct.Invite{}}
+
Nostrum.Api.create_channel_invite(41771983423143933)
+{:ok, Nostrum.Struct.Invite{}}
 
-Nostrum.Api.create_channel_invite(41771983423143933, max_uses: 20)
-{:ok, %Nostrum.Struct.Invite{}}
+
Nostrum.Api.create_channel_invite(41771983423143933, max_uses: 20) +{:ok, %Nostrum.Struct.Invite{}}
@@ -3505,8 +3505,8 @@

create_dm(user_id)

Examples -
Nostrum.Api.create_dm(150061853001777154)
-{:ok, %Nostrum.Struct.Channel{type: 1}}
+
Nostrum.Api.create_dm(150061853001777154)
+{:ok, %Nostrum.Struct.Channel{type: 1}}
@@ -3663,9 +3663,9 @@

create_global_application_command(applicati Example

-
Nostrum.Api.create_global_application_command(
-  %{name: "edit", description: "ed, man! man, ed", options: []}
-)
+
Nostrum.Api.create_global_application_command(
+  %{name: "edit", description: "ed, man! man, ed", options: []}
+)
@@ -3703,8 +3703,8 @@

create_group_dm(access_tokens, nicks)

Examples -
Nostrum.Api.create_group_dm(["6qrZcUqja7812RVdnEKjpzOL4CvHBFG"], %{41771983423143937 => "My Nickname"})
-{:ok, %Nostrum.Struct.Channel{type: 3}}
+
Nostrum.Api.create_group_dm(["6qrZcUqja7812RVdnEKjpzOL4CvHBFG"], %{41771983423143937 => "My Nickname"})
+{:ok, %Nostrum.Struct.Channel{type: 3}}
@@ -3900,8 +3900,8 @@

create_guild_channel(guild_id, options)

Examples -
Nostrum.Api.create_guild_channel(81384788765712384, name: "elixir-nostrum", topic: "craig's domain")
-{:ok, %Nostrum.Struct.Channel{guild_id: 81384788765712384}}
+
Nostrum.Api.create_guild_channel(81384788765712384, name: "elixir-nostrum", topic: "craig's domain")
+{:ok, %Nostrum.Struct.Channel{guild_id: 81384788765712384}}
@@ -3980,7 +3980,7 @@

create_guild_emoji(guild_id, options, reaso

image = "data:image/png;base64,YXl5IGJieSB1IGx1a2luIDQgc3VtIGZ1az8="
 
-Nostrum.Api.create_guild_emoji(43189401384091, name: "nostrum", image: image, roles: [])
+Nostrum.Api.create_guild_emoji(43189401384091, name: "nostrum", image: image, roles: [])
@@ -4090,7 +4090,7 @@

create_guild_role(guild_id, options, reason Examples

-
Nostrum.Api.create_guild_role(41771983423143937, name: "nostrum-club", hoist: true)
+
Nostrum.Api.create_guild_role(41771983423143937, name: "nostrum-club", hoist: true)
@@ -4302,13 +4302,13 @@

create_interaction_response(id, token, resp Example

-
response = %{
+
response = %{
   type: 4,
-  data: %{
+  data: %{
     content: "I copy and pasted this code."
-  }
-}
-Nostrum.Api.create_interaction_response(interaction, response)

As an alternative to passing the interaction ID and token, the + } +} +Nostrum.Api.create_interaction_response(interaction, response)

As an alternative to passing the interaction ID and token, the original Nostrum.Struct.Interaction.t/0 can also be passed directly. See create_interaction_response/2.

@@ -4417,35 +4417,35 @@

create_message(channel_id, options)

message_reference field in your call. The complete structure documentation can be found on the Discord Developer Portal, -but simply passing message_id will suffice:

def my_command(msg) do
+but simply passing message_id will suffice:

def my_command(msg) do
   # Reply to the author - ``msg`` is a ``Nostrum.Struct.Message``
-  Nostrum.Api.create_message(
+  Nostrum.Api.create_message(
     msg.channel_id,
     content: "Hello",
-    message_reference: %{message_id: msg.id}
-  )
-end

Passing a list will merge the settings provided

+ message_reference: %{message_id: msg.id} + ) +end

Passing a list will merge the settings provided

Examples

-
Nostrum.Api.create_message(43189401384091, content: "hello world!")
+
Nostrum.Api.create_message(43189401384091, content: "hello world!")
 
-Nostrum.Api.create_message(43189401384091, "hello world!")
+Nostrum.Api.create_message(43189401384091, "hello world!")
 
 import Nostrum.Struct.Embed
 embed =
-  %Nostrum.Struct.Embed{}
-  |> put_title("embed")
-  |> put_description("new desc")
-Nostrum.Api.create_message(43189401384091, embeds: [embed])
+  %Nostrum.Struct.Embed{}
+  |> put_title("embed")
+  |> put_description("new desc")
+Nostrum.Api.create_message(43189401384091, embeds: [embed])
 
-Nostrum.Api.create_message(43189401384091, file: "/path/to/file.txt")
+Nostrum.Api.create_message(43189401384091, file: "/path/to/file.txt")
 
-Nostrum.Api.create_message(43189401384091, content: "hello world!", embeds: [embed], file: "/path/to/file.txt")
+Nostrum.Api.create_message(43189401384091, content: "hello world!", embeds: [embed], file: "/path/to/file.txt")
 
-Nostrum.Api.create_message(43189401384091, content: "Hello @everyone", allowed_mentions: :none)
+
Nostrum.Api.create_message(43189401384091, content: "Hello @everyone", allowed_mentions: :none)
@@ -4520,11 +4520,11 @@

create_reaction(channel_id, message_id, emo Examples

# Using a Nostrum.Struct.Emoji.
-emoji = %Nostrum.Struct.Emoji{id: 43819043108, name: "foxbot"}
-Nostrum.Api.create_reaction(123123123123, 321321321321, emoji)
+emoji = %Nostrum.Struct.Emoji{id: 43819043108, name: "foxbot"}
+Nostrum.Api.create_reaction(123123123123, 321321321321, emoji)
 
 # Using a base 16 emoji string.
-Nostrum.Api.create_reaction(123123123123, 321321321321, "\xF0\x9F\x98\x81")
+Nostrum.Api.create_reaction(123123123123, 321321321321, "\xF0\x9F\x98\x81")
 

For other emoji string examples, see Nostrum.Struct.Emoji.api_name/0.

@@ -4701,8 +4701,8 @@

delete_channel(channel_id, reason \\ nil) Examples

-
Nostrum.Api.delete_channel(421533712753360896)
-{:ok, %Nostrum.Struct.Channel{id: 421533712753360896}}
+
Nostrum.Api.delete_channel(421533712753360896)
+{:ok, %Nostrum.Struct.Channel{id: 421533712753360896}}
@@ -4848,8 +4848,8 @@

delete_guild(guild_id)

Examples -
Nostrum.Api.delete_guild(81384788765712384)
-{:ok}
+
Nostrum.Api.delete_guild(81384788765712384)
+{:ok}
@@ -5089,7 +5089,7 @@

delete_guild_role(guild_id, role_id, reason Examples

-
Nostrum.Api.delete_guild_role(41771983423143937, 392817238471936)
+
Nostrum.Api.delete_guild_role(41771983423143937, 392817238471936)
@@ -5431,7 +5431,7 @@

delete_invite(invite_code)

Examples -
Nostrum.Api.delete_invite("zsjUsC")
+
Nostrum.Api.delete_invite("zsjUsC")
@@ -5525,7 +5525,7 @@

delete_message(channel_id, message_id)

Examples -
Nostrum.Api.delete_message(43189401384091, 43189401384091)
+
Nostrum.Api.delete_message(43189401384091, 43189401384091)
@@ -6329,18 +6329,18 @@

edit_message(channel_id, message_id, option Examples

-
Nostrum.Api.edit_message(43189401384091, 1894013840914098, content: "hello world!")
+
Nostrum.Api.edit_message(43189401384091, 1894013840914098, content: "hello world!")
 
-Nostrum.Api.edit_message(43189401384091, 1894013840914098, "hello world!")
+Nostrum.Api.edit_message(43189401384091, 1894013840914098, "hello world!")
 
 import Nostrum.Struct.Embed
 embed =
-  %Nostrum.Struct.Embed{}
-  |> put_title("embed")
-  |> put_description("new desc")
-Nostrum.Api.edit_message(43189401384091, 1894013840914098, embeds: [embed])
+  %Nostrum.Struct.Embed{}
+  |> put_title("embed")
+  |> put_description("new desc")
+Nostrum.Api.edit_message(43189401384091, 1894013840914098, embeds: [embed])
 
-Nostrum.Api.edit_message(43189401384091, 1894013840914098, content: "hello world!", embeds: [embed])
+
Nostrum.Api.edit_message(43189401384091, 1894013840914098, content: "hello world!", embeds: [embed])
@@ -6704,21 +6704,21 @@

get_application_information()

Example
Nostrum.Api.get_application_information
-{:ok,
-%{
+{:ok,
+%{
   bot_public: false,
   bot_require_code_grant: false,
   description: "Test",
   icon: nil,
   id: "172150183260323840",
   name: "Baba O-Riley",
-  owner: %{
+  owner: %{
     avatar: nil,
     discriminator: "0042",
     id: "172150183260323840",
     username: "i own a bot"
-  },
-}}
+ }, +}}
@@ -6753,8 +6753,8 @@

get_channel(channel_id)

Examples -
Nostrum.Api.get_channel(381889573426429952)
-{:ok, %Nostrum.Struct.Channel{id: 381889573426429952}}
+
Nostrum.Api.get_channel(381889573426429952)
+{:ok, %Nostrum.Struct.Channel{id: 381889573426429952}}
@@ -6819,8 +6819,8 @@

get_channel_invites(channel_id)

Examples -
Nostrum.Api.get_channel_invites(43189401384091)
-{:ok, [%Nostrum.Struct.Invite{} | _]}
+
Nostrum.Api.get_channel_invites(43189401384091)
+{:ok, [%Nostrum.Struct.Invite{} | _]}
@@ -6884,7 +6884,7 @@

get_channel_message(channel_id, message_id) Examples

-
Nostrum.Api.get_channel_message(43189401384091, 198238475613443)
+
Nostrum.Api.get_channel_message(43189401384091, 198238475613443)
@@ -6952,7 +6952,7 @@

get_channel_messages(channel_id, limit, loc Examples

-
Nostrum.Api.get_channel_messages(43189401384091, 5, {:before, 130230401384})
+
Nostrum.Api.get_channel_messages(43189401384091, 5, {:before, 130230401384})
@@ -7122,8 +7122,8 @@

get_current_user_guilds(options \\ [])

Examples -
iex> Nostrum.Api.get_current_user_guilds(limit: 1)
-{:ok, [%Nostrum.Struct.Guild{}]}
+
iex> Nostrum.Api.get_current_user_guilds(limit: 1)
+{:ok, [%Nostrum.Struct.Guild{}]}
@@ -7206,15 +7206,15 @@

get_global_application_commands(application Example

iex> Nostrum.Api.get_global_application_commands
-{:ok,
- [
-   %{
+{:ok,
+ [
+   %{
      application_id: "455589479713865749",
      description: "ed, man! man, ed",
      id: "789841753196331029",
      name: "edit"
-   }
- ]}
+ } + ]}
@@ -7249,8 +7249,8 @@

get_guild(guild_id)

Examples -
Nostrum.Api.get_guild(81384788765712384)
-{:ok, %Nostrum.Struct.Guild{id: 81384788765712384}}
+
Nostrum.Api.get_guild(81384788765712384)
+{:ok, %Nostrum.Struct.Guild{id: 81384788765712384}}
@@ -7573,8 +7573,8 @@

get_guild_channels(guild_id)

Examples -
Nostrum.Api.get_guild_channels(81384788765712384)
-{:ok, [%Nostrum.Struct.Channel{guild_id: 81384788765712384} | _]}
+
Nostrum.Api.get_guild_channels(81384788765712384)
+{:ok, [%Nostrum.Struct.Channel{guild_id: 81384788765712384} | _]}
@@ -7725,8 +7725,8 @@

get_guild_invites(guild_id)

Examples -
Nostrum.Api.get_guild_invites(81384788765712384)
-{:ok, [%Nostrum.Struct.Invite{} | _]}
+
Nostrum.Api.get_guild_invites(81384788765712384)
+{:ok, [%Nostrum.Struct.Invite{} | _]}
@@ -7790,7 +7790,7 @@

get_guild_member(guild_id, user_id)

Examples -
Nostrum.Api.get_guild_member(4019283754613, 184937267485)
+
Nostrum.Api.get_guild_member(4019283754613, 184937267485)
@@ -7854,8 +7854,8 @@

get_guild_prune_count(guild_id, days)

Examples -
Nostrum.Api.get_guild_prune_count(81384788765712384, 1)
-{:ok, %{pruned: 0}}
+
Nostrum.Api.get_guild_prune_count(81384788765712384, 1)
+{:ok, %{pruned: 0}}
@@ -7919,7 +7919,7 @@

get_guild_roles(guild_id)

Examples -
Nostrum.Api.get_guild_roles(147362948571673)
+
Nostrum.Api.get_guild_roles(147362948571673)
@@ -8193,9 +8193,9 @@

get_invite(invite_code, options \\ [])

Examples -
Nostrum.Api.get_invite("zsjUsC")
+
Nostrum.Api.get_invite("zsjUsC")
 
-Nostrum.Api.get_invite("zsjUsC", with_counts: true)
+
Nostrum.Api.get_invite("zsjUsC", with_counts: true)
@@ -8292,7 +8292,7 @@

get_pinned_messages(channel_id)

Examples -
Nostrum.Api.get_pinned_messages(43189401384091)
+
Nostrum.Api.get_pinned_messages(43189401384091)
@@ -8686,8 +8686,8 @@

get_user_dms()

Examples -
Nostrum.Api.get_user_dms()
-{:ok, [%Nostrum.Struct.Channel{type: 1} | _]}
+
Nostrum.Api.get_user_dms()
+{:ok, [%Nostrum.Struct.Channel{type: 1} | _]}
@@ -9037,7 +9037,7 @@

list_guild_members(guild_id, options \\ %{} Examples

-
Nostrum.Api.list_guild_members(41771983423143937, limit: 1)
+
Nostrum.Api.list_guild_members(41771983423143937, limit: 1)
@@ -9348,11 +9348,11 @@

modify_channel(channel_id, options, reason Examples

-
Nostrum.Api.modify_channel(41771983423143933, name: "elixir-nostrum", topic: "nostrum discussion")
-{:ok, %Nostrum.Struct.Channel{id: 41771983423143933, name: "elixir-nostrum", topic: "nostrum discussion"}}
+
Nostrum.Api.modify_channel(41771983423143933, name: "elixir-nostrum", topic: "nostrum discussion")
+{:ok, %Nostrum.Struct.Channel{id: 41771983423143933, name: "elixir-nostrum", topic: "nostrum discussion"}}
 
-Nostrum.Api.modify_channel(41771983423143933)
-{:ok, %Nostrum.Struct.Channel{id: 41771983423143933}}
+
Nostrum.Api.modify_channel(41771983423143933) +{:ok, %Nostrum.Struct.Channel{id: 41771983423143933}}
@@ -9426,7 +9426,7 @@

modify_current_user(options)

Examples -
Nostrum.Api.modify_current_user(avatar: "data:image/jpeg;base64,YXl5IGJieSB1IGx1a2luIDQgc3VtIGZ1az8=")
+
Nostrum.Api.modify_current_user(avatar: "data:image/jpeg;base64,YXl5IGJieSB1IGx1a2luIDQgc3VtIGZ1az8=")
@@ -9497,8 +9497,8 @@

modify_current_user_nick(guild_id, options Examples

-
Nostrum.Api.modify_current_user_nick(41771983423143937, nick: "Nostrum")
-{:ok, %{nick: "Nostrum"}}
+
Nostrum.Api.modify_current_user_nick(41771983423143937, nick: "Nostrum")
+{:ok, %{nick: "Nostrum"}}
@@ -9585,8 +9585,8 @@

modify_guild(guild_id, options \\ [], reaso Examples

-
Nostrum.Api.modify_guild(451824027976073216, name: "Nose Drum")
-{:ok, %Nostrum.Struct.Guild{id: 451824027976073216, name: "Nose Drum", ...}}
+
Nostrum.Api.modify_guild(451824027976073216, name: "Nose Drum")
+{:ok, %Nostrum.Struct.Guild{id: 451824027976073216, name: "Nose Drum", ...}}
@@ -9689,8 +9689,8 @@

modify_guild_channel_positions(guild_id, po Examples

-
Nostrum.Api.modify_guild_channel_positions(279093381723062272, [%{id: 351500354581692420, position: 2}])
-{:ok}
+
Nostrum.Api.modify_guild_channel_positions(279093381723062272, [%{id: 351500354581692420, position: 2}])
+{:ok}
@@ -9771,7 +9771,7 @@

modify_guild_emoji(guild_id, emoji_id, opti Examples

-
Nostrum.Api.modify_guild_emoji(43189401384091, 4314301984301, name: "elixir", roles: [])
+
Nostrum.Api.modify_guild_emoji(43189401384091, 4314301984301, name: "elixir", roles: [])
@@ -9889,8 +9889,8 @@

modify_guild_member(guild_id, user_id, opti Examples

-
Nostrum.Api.modify_guild_member(41771983423143937, 637162356451, nick: "Nostrum")
-{:ok, %Nostrum.Struct.Member{}}
+
Nostrum.Api.modify_guild_member(41771983423143937, 637162356451, nick: "Nostrum")
+{:ok, %Nostrum.Struct.Member{}}
@@ -9975,7 +9975,7 @@

modify_guild_role(guild_id, role_id, option Examples

-
Nostrum.Api.modify_guild_role(41771983423143937, 392817238471936, hoist: false, name: "foo-bar")
+
Nostrum.Api.modify_guild_role(41771983423143937, 392817238471936, hoist: false, name: "foo-bar")
@@ -10051,7 +10051,7 @@

modify_guild_role_positions(guild_id, posit Examples

-
Nostrum.Api.modify_guild_role_positions(41771983423143937, [%{id: 41771983423143936, position: 2}])
+
Nostrum.Api.modify_guild_role_positions(41771983423143937, [%{id: 41771983423143936, position: 2}])
@@ -10344,8 +10344,8 @@

remove_guild_member(guild_id, user_id, reas Examples

-
Nostrum.Api.remove_guild_member(1453827904102291, 18739485766253)
-{:ok}
+
Nostrum.Api.remove_guild_member(1453827904102291, 18739485766253)
+{:ok}
diff --git a/Nostrum.Cache.CacheSupervisor.html b/Nostrum.Cache.CacheSupervisor.html index 3e6e08f33..ee7c8124c 100644 --- a/Nostrum.Cache.CacheSupervisor.html +++ b/Nostrum.Cache.CacheSupervisor.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Cache.ChannelGuildMapping.ETS.html b/Nostrum.Cache.ChannelGuildMapping.ETS.html index 1f185d772..8de33a7d6 100644 --- a/Nostrum.Cache.ChannelGuildMapping.ETS.html +++ b/Nostrum.Cache.ChannelGuildMapping.ETS.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Cache.ChannelGuildMapping.Mnesia.html b/Nostrum.Cache.ChannelGuildMapping.Mnesia.html index d98998432..0259bae17 100644 --- a/Nostrum.Cache.ChannelGuildMapping.Mnesia.html +++ b/Nostrum.Cache.ChannelGuildMapping.Mnesia.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Cache.ChannelGuildMapping.NoOp.html b/Nostrum.Cache.ChannelGuildMapping.NoOp.html index 004730812..b2055e56d 100644 --- a/Nostrum.Cache.ChannelGuildMapping.NoOp.html +++ b/Nostrum.Cache.ChannelGuildMapping.NoOp.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Cache.ChannelGuildMapping.html b/Nostrum.Cache.ChannelGuildMapping.html index 26b50d70a..0688c972d 100644 --- a/Nostrum.Cache.ChannelGuildMapping.html +++ b/Nostrum.Cache.ChannelGuildMapping.html @@ -14,7 +14,7 @@ - + @@ -157,9 +157,9 @@

By default, nostrum will use Elixir.Nostrum.Cache.ChannelGuildMapping.ETS to store the mapping. To override this, set the [:caches, :channel_guild_mapping] setting on nostrum's application configuration:

config :nostrum,
-  caches: %{
+  caches: %{
     channel_guild_mapping: MyBot.Nostrum.Cache.ChannelGuildMapping
-  }

This setting must be set at compile time.

+ }

This setting must be set at compile time.

diff --git a/Nostrum.Cache.GuildCache.ETS.html b/Nostrum.Cache.GuildCache.ETS.html index 3c1319ead..0b427ccde 100644 --- a/Nostrum.Cache.GuildCache.ETS.html +++ b/Nostrum.Cache.GuildCache.ETS.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Cache.GuildCache.Mnesia.html b/Nostrum.Cache.GuildCache.Mnesia.html index 4dd12ef21..e8b840498 100644 --- a/Nostrum.Cache.GuildCache.Mnesia.html +++ b/Nostrum.Cache.GuildCache.Mnesia.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Cache.GuildCache.NoOp.html b/Nostrum.Cache.GuildCache.NoOp.html index 6455eeb49..4acf48256 100644 --- a/Nostrum.Cache.GuildCache.NoOp.html +++ b/Nostrum.Cache.GuildCache.NoOp.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Cache.GuildCache.html b/Nostrum.Cache.GuildCache.html index 793c9d002..a08e73d8c 100644 --- a/Nostrum.Cache.GuildCache.html +++ b/Nostrum.Cache.GuildCache.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Cache.Me.html b/Nostrum.Cache.Me.html index 963defd06..947e44260 100644 --- a/Nostrum.Cache.Me.html +++ b/Nostrum.Cache.Me.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Cache.MemberCache.ETS.html b/Nostrum.Cache.MemberCache.ETS.html index 9ee0078ef..161b23118 100644 --- a/Nostrum.Cache.MemberCache.ETS.html +++ b/Nostrum.Cache.MemberCache.ETS.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Cache.MemberCache.Mnesia.html b/Nostrum.Cache.MemberCache.Mnesia.html index a4625f092..c1ea423e8 100644 --- a/Nostrum.Cache.MemberCache.Mnesia.html +++ b/Nostrum.Cache.MemberCache.Mnesia.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Cache.MemberCache.NoOp.html b/Nostrum.Cache.MemberCache.NoOp.html index 2702ca55b..9b97b8061 100644 --- a/Nostrum.Cache.MemberCache.NoOp.html +++ b/Nostrum.Cache.MemberCache.NoOp.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Cache.MemberCache.html b/Nostrum.Cache.MemberCache.html index 43eceba46..1e3ea1653 100644 --- a/Nostrum.Cache.MemberCache.html +++ b/Nostrum.Cache.MemberCache.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Cache.MessageCache.Mnesia.html b/Nostrum.Cache.MessageCache.Mnesia.html index 540b6c7a1..0895d51fa 100644 --- a/Nostrum.Cache.MessageCache.Mnesia.html +++ b/Nostrum.Cache.MessageCache.Mnesia.html @@ -14,7 +14,7 @@ - + @@ -154,12 +154,12 @@

that the table cannot be changed to only store its contents on disk later. default: :ordered_set

To change this configuration, you can add the following to your config.exs:

config :nostrum,
-  caches: %{
-    messages: {Nostrum.Cache.MessageCache.Mnesia,
+  caches: %{
+    messages: {Nostrum.Cache.MessageCache.Mnesia,
                size_limit: 1000, eviction_count: 50,
                table_name: :my_custom_messages_table_name,
-               compressed: true, type: :set}
-  }

You can also change the table name used by the cache by setting the + compressed: true, type: :set} + }

You can also change the table name used by the cache by setting the table_name field in the configuration for the messages cache.

diff --git a/Nostrum.Cache.MessageCache.Noop.html b/Nostrum.Cache.MessageCache.Noop.html index b31e0818d..c775df605 100644 --- a/Nostrum.Cache.MessageCache.Noop.html +++ b/Nostrum.Cache.MessageCache.Noop.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Cache.MessageCache.html b/Nostrum.Cache.MessageCache.html index 8181f131e..a8abe80a9 100644 --- a/Nostrum.Cache.MessageCache.html +++ b/Nostrum.Cache.MessageCache.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Cache.PresenceCache.ETS.html b/Nostrum.Cache.PresenceCache.ETS.html index 3372814fe..97494a002 100644 --- a/Nostrum.Cache.PresenceCache.ETS.html +++ b/Nostrum.Cache.PresenceCache.ETS.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Cache.PresenceCache.Mnesia.html b/Nostrum.Cache.PresenceCache.Mnesia.html index ee68ca3f8..4327678e1 100644 --- a/Nostrum.Cache.PresenceCache.Mnesia.html +++ b/Nostrum.Cache.PresenceCache.Mnesia.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Cache.PresenceCache.NoOp.html b/Nostrum.Cache.PresenceCache.NoOp.html index 132f06e47..d82615aa5 100644 --- a/Nostrum.Cache.PresenceCache.NoOp.html +++ b/Nostrum.Cache.PresenceCache.NoOp.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Cache.PresenceCache.html b/Nostrum.Cache.PresenceCache.html index aee84882c..8aa67bc09 100644 --- a/Nostrum.Cache.PresenceCache.html +++ b/Nostrum.Cache.PresenceCache.html @@ -14,7 +14,7 @@ - + @@ -601,12 +601,12 @@

get(guild_id, user_id, cache \\ Nostrum.Cac Example

-
case Nostrum.Cache.PresenceCache.get(111133335555, 222244446666) do
-  {:ok, presence} ->
-    "They're #{presence.status}"
-  {:error, _reason} ->
+
case Nostrum.Cache.PresenceCache.get(111133335555, 222244446666) do
+  {:ok, presence} ->
+    "They're #{presence.status}"
+  {:error, _reason} ->
     "They're dead Jim"
-end
+
end
diff --git a/Nostrum.Cache.UserCache.ETS.html b/Nostrum.Cache.UserCache.ETS.html index f3de610af..4f128ed87 100644 --- a/Nostrum.Cache.UserCache.ETS.html +++ b/Nostrum.Cache.UserCache.ETS.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Cache.UserCache.Mnesia.html b/Nostrum.Cache.UserCache.Mnesia.html index ba548da9c..dece2b173 100644 --- a/Nostrum.Cache.UserCache.Mnesia.html +++ b/Nostrum.Cache.UserCache.Mnesia.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Cache.UserCache.NoOp.html b/Nostrum.Cache.UserCache.NoOp.html index 0a78a7358..2e92652e6 100644 --- a/Nostrum.Cache.UserCache.NoOp.html +++ b/Nostrum.Cache.UserCache.NoOp.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Cache.UserCache.html b/Nostrum.Cache.UserCache.html index 38fbe2834..5d47f0366 100644 --- a/Nostrum.Cache.UserCache.html +++ b/Nostrum.Cache.UserCache.html @@ -14,7 +14,7 @@ - + @@ -549,12 +549,12 @@

get(user_id, cache \\ Nostrum.Cache.UserCac Example

-
case Nostrum.Cache.UserCache.get(1111222233334444) do
-  {:ok, user} ->
+
case Nostrum.Cache.UserCache.get(1111222233334444) do
+  {:ok, user} ->
     "We found " <> user.username
-  {:error, _reason} ->
+  {:error, _reason} ->
     "No es bueno"
-end
+
end
diff --git a/Nostrum.Constants.ApplicationCommandOptionType.html b/Nostrum.Constants.ApplicationCommandOptionType.html index 9b718ccb2..8a1d0d9a9 100644 --- a/Nostrum.Constants.ApplicationCommandOptionType.html +++ b/Nostrum.Constants.ApplicationCommandOptionType.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Constants.ApplicationCommandPermissionType.html b/Nostrum.Constants.ApplicationCommandPermissionType.html index 5dba147d0..4e99e8575 100644 --- a/Nostrum.Constants.ApplicationCommandPermissionType.html +++ b/Nostrum.Constants.ApplicationCommandPermissionType.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Constants.ApplicationCommandType.html b/Nostrum.Constants.ApplicationCommandType.html index e2c51bd6f..0a198e494 100644 --- a/Nostrum.Constants.ApplicationCommandType.html +++ b/Nostrum.Constants.ApplicationCommandType.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Constants.ButtonStyle.html b/Nostrum.Constants.ButtonStyle.html index 92363edc1..6cb6966dc 100644 --- a/Nostrum.Constants.ButtonStyle.html +++ b/Nostrum.Constants.ButtonStyle.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Constants.ChannelType.html b/Nostrum.Constants.ChannelType.html index bafbe2658..146529e5f 100644 --- a/Nostrum.Constants.ChannelType.html +++ b/Nostrum.Constants.ChannelType.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Constants.ComponentType.html b/Nostrum.Constants.ComponentType.html index c4b65b7cc..22ece933b 100644 --- a/Nostrum.Constants.ComponentType.html +++ b/Nostrum.Constants.ComponentType.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Constants.InteractionCallbackType.html b/Nostrum.Constants.InteractionCallbackType.html index 0dabcb5ea..df9d7129d 100644 --- a/Nostrum.Constants.InteractionCallbackType.html +++ b/Nostrum.Constants.InteractionCallbackType.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Constants.InteractionType.html b/Nostrum.Constants.InteractionType.html index 6030681ac..b0dbfa08f 100644 --- a/Nostrum.Constants.InteractionType.html +++ b/Nostrum.Constants.InteractionType.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Constants.TextInputStyle.html b/Nostrum.Constants.TextInputStyle.html index 8f075d6eb..f94e64712 100644 --- a/Nostrum.Constants.TextInputStyle.html +++ b/Nostrum.Constants.TextInputStyle.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Constants.WebhookType.html b/Nostrum.Constants.WebhookType.html index f0e8d0515..9c3c31a8c 100644 --- a/Nostrum.Constants.WebhookType.html +++ b/Nostrum.Constants.WebhookType.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Consumer.html b/Nostrum.Consumer.html index e7a99b85f..83fc3016c 100644 --- a/Nostrum.Consumer.html +++ b/Nostrum.Consumer.html @@ -14,7 +14,7 @@ - + @@ -150,13 +150,13 @@

parallelism and isolation. You therefore do not need to start more than one consumer in your supervision tree. If you want to override this behaviour, implement the handle_info/2 function in your consumer. For reference, this -is the default implementation:

  def handle_info({:event, event}, state) do
-    Task.start_link(fn ->
-      __MODULE__.handle_event(event)
-    end)
+is the default implementation:

  def handle_info({:event, event}, state) do
+    Task.start_link(fn ->
+      __MODULE__.handle_event(event)
+    end)
 
-    {:noreply, state}
-  end

+ {:noreply, state} + end

@@ -171,35 +171,35 @@

Example consumer

An example consumer could look as follows:

# Sourced from examples/event_consumer.ex
-defmodule ExampleSupervisor do
+defmodule ExampleSupervisor do
   use Supervisor
 
-  def start_link(args) do
-    Supervisor.start_link(__MODULE__, args, name: __MODULE__)
-  end
+  def start_link(args) do
+    Supervisor.start_link(__MODULE__, args, name: __MODULE__)
+  end
 
   @impl true
-  def init(_init_arg) do
-    children = [ExampleConsumer]
+  def init(_init_arg) do
+    children = [ExampleConsumer]
 
-    Supervisor.init(children, strategy: :one_for_one)
-  end
-end
+    Supervisor.init(children, strategy: :one_for_one)
+  end
+end
 
-defmodule ExampleConsumer do
+defmodule ExampleConsumer do
   use Nostrum.Consumer
 
   alias Nostrum.Api
 
-  def handle_event({:MESSAGE_CREATE, msg, _ws_state}) do
-    case msg.content do
+  def handle_event({:MESSAGE_CREATE, msg, _ws_state}) do
+    case msg.content do
       "!sleep" ->
-        Api.create_message(msg.channel_id, "Going to sleep...")
+        Api.create_message(msg.channel_id, "Going to sleep...")
         # This won't stop other events from being handled.
-        Process.sleep(3000)
+        Process.sleep(3000)
 
       "!ping" ->
-        Api.create_message(msg.channel_id, "pyongyang!")
+        Api.create_message(msg.channel_id, "pyongyang!")
 
       "!raise" ->
         # This won't crash the entire Consumer.
@@ -207,9 +207,9 @@ 

_ -> :ignore - end - end -end + end + end +end

@@ -2933,9 +2933,9 @@

handle_event(event)

Event

event is a tuple describing the event. The tuple will include information in -the following format:

{event_name, {event_payload(s)}, WSState.t}

For example, a message create will look like this

{:MESSAGE_CREATE, Nostrum.Struct.Message.t, WSState.t}

In some cases there will be multiple payloads when something is updated, so as +the following format:

{event_name, {event_payload(s)}, WSState.t}

For example, a message create will look like this

{:MESSAGE_CREATE, Nostrum.Struct.Message.t, WSState.t}

In some cases there will be multiple payloads when something is updated, so as to include the new and the old versions. In the event of there being two payloads, -the old payload will always be first, followed by the new payload.

{:USER_UPDATE, {old_user :: Nostrum.Struct.User.t, new_user :: Nostrum.Struct.User.t}, WSState.t()}

For a full listing of events, please see Nostrum.Consumer.event/0.

+the old payload will always be first, followed by the new payload.

{:USER_UPDATE, {old_user :: Nostrum.Struct.User.t, new_user :: Nostrum.Struct.User.t}, WSState.t()}

For a full listing of events, please see Nostrum.Consumer.event/0.

diff --git a/Nostrum.ConsumerGroup.html b/Nostrum.ConsumerGroup.html index b5305ac07..01c9fa7fd 100644 --- a/Nostrum.ConsumerGroup.html +++ b/Nostrum.ConsumerGroup.html @@ -14,7 +14,7 @@ - + @@ -397,17 +397,17 @@

join(pid)

alias Nostrum.Struct.Message alias Nostrum.Struct.User - def command(%Message{author: %User{id: author_id}}) do - Api.create_message!(msg, "Reply 'y' in 5 seconds to confirm ordering a large burger menu.") - ConsumerGroup.join() - receive do - {:event, {:MESSAGE_CREATE, %Message{author: %User{id: author_id}, content: "y"}, _}} -> - Api.create_message!(msg, "The large burger menu is coming.") - after + def command(%Message{author: %User{id: author_id}}) do + Api.create_message!(msg, "Reply 'y' in 5 seconds to confirm ordering a large burger menu.") + ConsumerGroup.join() + receive do + {:event, {:MESSAGE_CREATE, %Message{author: %User{id: author_id}, content: "y"}, _}} -> + Api.create_message!(msg, "The large burger menu is coming.") + after 5_000 -> - Api.create_message!(msg, "Too slow!") - end - end + Api.create_message!(msg, "Too slow!") + end + end end diff --git a/Nostrum.Error.ApiError.html b/Nostrum.Error.ApiError.html index e260349d5..73b65c161 100644 --- a/Nostrum.Error.ApiError.html +++ b/Nostrum.Error.ApiError.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Error.CacheError.html b/Nostrum.Error.CacheError.html index be0e87094..47f956cab 100644 --- a/Nostrum.Error.CacheError.html +++ b/Nostrum.Error.CacheError.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Error.VoiceError.html b/Nostrum.Error.VoiceError.html index 1342b1d5b..485f7db2d 100644 --- a/Nostrum.Error.VoiceError.html +++ b/Nostrum.Error.VoiceError.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Permission.html b/Nostrum.Permission.html index f2bfca018..cde40c37c 100644 --- a/Nostrum.Permission.html +++ b/Nostrum.Permission.html @@ -14,7 +14,7 @@ - + @@ -143,13 +143,13 @@

to work with permissions:

alias Nostrum.Cache.GuildCache
 alias Nostrum.Struct.Guild.Member
 
-guild = GuildCache.get!(279093381723062272)
-member = Map.get(guild.members, 177888205536886784)
-member_perms = Member.guild_permissions(member, guild)
+guild = GuildCache.get!(279093381723062272)
+member = Map.get(guild.members, 177888205536886784)
+member_perms = Member.guild_permissions(member, guild)
 
-if :administrator in member_perms do
-  IO.puts("This user has the administrator permission.")
-end
+if :administrator in member_perms do + IO.puts("This user has the administrator permission.") +end @@ -589,10 +589,10 @@

from_bit(bit)

Examples -
iex> Nostrum.Permission.from_bit(0x04000000)
-{:ok, :change_nickname}
+
iex> Nostrum.Permission.from_bit(0x04000000)
+{:ok, :change_nickname}
 
-iex> Nostrum.Permission.from_bit(0)
+iex> Nostrum.Permission.from_bit(0)
 :error
@@ -627,10 +627,10 @@

from_bit!(bit)

Examples -
iex> Nostrum.Permission.from_bit!(0x04000000)
+
iex> Nostrum.Permission.from_bit!(0x04000000)
 :change_nickname
 
-iex> Nostrum.Permission.from_bit!(0)
+iex> Nostrum.Permission.from_bit!(0)
 ** (ArgumentError) expected a valid bit, got: `0`
@@ -665,11 +665,11 @@

from_bitset(bitset)

Examples -
iex> Nostrum.Permission.from_bitset(0x08000002)
-[:manage_nicknames, :kick_members]
+
iex> Nostrum.Permission.from_bitset(0x08000002)
+[:manage_nicknames, :kick_members]
 
-iex> Nostrum.Permission.from_bitset(0x4000000000000)
-[]
+
iex> Nostrum.Permission.from_bitset(0x4000000000000) +[]
@@ -699,10 +699,10 @@

is_permission(term)

Examples -
iex> Nostrum.Permission.is_permission(:administrator)
+
iex> Nostrum.Permission.is_permission(:administrator)
 true
 
-iex> Nostrum.Permission.is_permission(:not_a_permission)
+iex> Nostrum.Permission.is_permission(:not_a_permission)
 false
@@ -737,7 +737,7 @@

to_bit(permission)

Examples -
iex> Nostrum.Permission.to_bit(:administrator)
+
iex> Nostrum.Permission.to_bit(:administrator)
 8
@@ -772,7 +772,7 @@

to_bitset(permissions)

Examples -
iex> Nostrum.Permission.to_bitset([:administrator, :create_instant_invite])
+
iex> Nostrum.Permission.to_bitset([:administrator, :create_instant_invite])
 9
diff --git a/Nostrum.Shard.Session.Compression.Zlib.html b/Nostrum.Shard.Session.Compression.Zlib.html index efc866e2c..b860997d3 100644 --- a/Nostrum.Shard.Session.Compression.Zlib.html +++ b/Nostrum.Shard.Session.Compression.Zlib.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Shard.Session.Compression.Zstd.html b/Nostrum.Shard.Session.Compression.Zstd.html index 54cc8a785..e46a03ab5 100644 --- a/Nostrum.Shard.Session.Compression.Zstd.html +++ b/Nostrum.Shard.Session.Compression.Zstd.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Shard.Session.Compression.html b/Nostrum.Shard.Session.Compression.html index 25fb296a7..504384a2d 100644 --- a/Nostrum.Shard.Session.Compression.html +++ b/Nostrum.Shard.Session.Compression.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Shard.Session.html b/Nostrum.Shard.Session.html index 06b66d40e..e9eeb127d 100644 --- a/Nostrum.Shard.Session.html +++ b/Nostrum.Shard.Session.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Shard.Supervisor.html b/Nostrum.Shard.Supervisor.html index dbc716a63..b175420a9 100644 --- a/Nostrum.Shard.Supervisor.html +++ b/Nostrum.Shard.Supervisor.html @@ -14,7 +14,7 @@ - + @@ -478,8 +478,8 @@

disconnect(shard_num)

Examples -
iex> Nostrum.Shard.Supervisor.disconnect(4)
-%{shard_num: 4, ...}
+
iex> Nostrum.Shard.Supervisor.disconnect(4)
+%{shard_num: 4, ...}
@@ -520,9 +520,9 @@

reconnect(opts)

Examples -
iex> resume = Nostrum.Shard.Supervisor.disconnect(4)
-%{shard_num: 4, ...}
-iex> Nostrum.Shard.Supervisor.reconnect(resume)
+
iex> resume = Nostrum.Shard.Supervisor.disconnect(4)
+%{shard_num: 4, ...}
+iex> Nostrum.Shard.Supervisor.reconnect(resume)
diff --git a/Nostrum.Snowflake.html b/Nostrum.Snowflake.html index b1fc9f35c..b626ec49f 100644 --- a/Nostrum.Snowflake.html +++ b/Nostrum.Snowflake.html @@ -14,7 +14,7 @@ - + @@ -366,19 +366,19 @@

cast(value)

Examples -
iex> Nostrum.Snowflake.cast(200317799350927360)
-{:ok, 200317799350927360}
+
iex> Nostrum.Snowflake.cast(200317799350927360)
+{:ok, 200317799350927360}
 
-iex> Nostrum.Snowflake.cast("200317799350927360")
-{:ok, 200317799350927360}
+iex> Nostrum.Snowflake.cast("200317799350927360")
+{:ok, 200317799350927360}
 
-iex> Nostrum.Snowflake.cast(nil)
-{:ok, nil}
+iex> Nostrum.Snowflake.cast(nil)
+{:ok, nil}
 
-iex> Nostrum.Snowflake.cast(true)
+iex> Nostrum.Snowflake.cast(true)
 :error
 
-iex> Nostrum.Snowflake.cast(-1)
+iex> Nostrum.Snowflake.cast(-1)
 :error
@@ -441,7 +441,7 @@

creation_time(snowflake)

Examples -
iex> Nostrum.Snowflake.creation_time(177888205536886784)
+
iex> Nostrum.Snowflake.creation_time(177888205536886784)
 ~U[2016-05-05 21:04:13.203Z]
@@ -476,7 +476,7 @@

dump(snowflake)

Examples -
iex> Nostrum.Snowflake.dump(109112383011581952)
+
iex> Nostrum.Snowflake.dump(109112383011581952)
 "109112383011581952"
@@ -512,12 +512,12 @@

from_datetime(datetime)

Examples -
iex> {:ok, dt, _} = DateTime.from_iso8601("2016-05-05T21:04:13.203Z")
-iex> Nostrum.Snowflake.from_datetime(dt)
-{:ok, 177888205536755712}
+
iex> {:ok, dt, _} = DateTime.from_iso8601("2016-05-05T21:04:13.203Z")
+iex> Nostrum.Snowflake.from_datetime(dt)
+{:ok, 177888205536755712}
 
-iex> {:ok, dt, _} = DateTime.from_iso8601("1998-12-25T00:00:00.000Z")
-iex> Nostrum.Snowflake.from_datetime(dt)
+iex> {:ok, dt, _} = DateTime.from_iso8601("1998-12-25T00:00:00.000Z")
+iex> Nostrum.Snowflake.from_datetime(dt)
 :error
@@ -576,16 +576,16 @@

is_snowflake(term)

Examples -
iex> Nostrum.Snowflake.is_snowflake(89918932789497856)
+
iex> Nostrum.Snowflake.is_snowflake(89918932789497856)
 true
 
-iex> Nostrum.Snowflake.is_snowflake(-1)
+iex> Nostrum.Snowflake.is_snowflake(-1)
 false
 
-iex> Nostrum.Snowflake.is_snowflake(0xFFFFFFFFFFFFFFFF + 1)
+iex> Nostrum.Snowflake.is_snowflake(0xFFFFFFFFFFFFFFFF + 1)
 false
 
-iex> Nostrum.Snowflake.is_snowflake("117789813427535878")
+iex> Nostrum.Snowflake.is_snowflake("117789813427535878")
 false
diff --git a/Nostrum.StateMachineTranslator.html b/Nostrum.StateMachineTranslator.html index be07fc273..957f3dc1b 100644 --- a/Nostrum.StateMachineTranslator.html +++ b/Nostrum.StateMachineTranslator.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Store.GuildShardMapping.ETS.html b/Nostrum.Store.GuildShardMapping.ETS.html index 243d29fd9..cb0e1e958 100644 --- a/Nostrum.Store.GuildShardMapping.ETS.html +++ b/Nostrum.Store.GuildShardMapping.ETS.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Store.GuildShardMapping.Mnesia.html b/Nostrum.Store.GuildShardMapping.Mnesia.html index 2bcd017c5..e8b6aaf00 100644 --- a/Nostrum.Store.GuildShardMapping.Mnesia.html +++ b/Nostrum.Store.GuildShardMapping.Mnesia.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Store.GuildShardMapping.html b/Nostrum.Store.GuildShardMapping.html index 778a623e8..636ae2352 100644 --- a/Nostrum.Store.GuildShardMapping.html +++ b/Nostrum.Store.GuildShardMapping.html @@ -14,7 +14,7 @@ - + @@ -157,9 +157,9 @@

By default, nostrum will use Elixir.Nostrum.Store.GuildShardMapping.ETS to store the mapping. To override this, set the [:stores, :guild_shard_mapping] setting on nostrum's application configuration:

config :nostrum,
-  stores: %{
+  stores: %{
     guild_shard_mapping: MyBot.Nostrum.Store.GuildShardMapping
-  }

This setting must be set at compile time.

+ }

This setting must be set at compile time.

diff --git a/Nostrum.Store.Supervisor.html b/Nostrum.Store.Supervisor.html index d6c1db311..9f052e33f 100644 --- a/Nostrum.Store.Supervisor.html +++ b/Nostrum.Store.Supervisor.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Store.UnavailableGuild.ETS.html b/Nostrum.Store.UnavailableGuild.ETS.html index aad65a422..36a5a5ac1 100644 --- a/Nostrum.Store.UnavailableGuild.ETS.html +++ b/Nostrum.Store.UnavailableGuild.ETS.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Store.UnavailableGuild.Mnesia.html b/Nostrum.Store.UnavailableGuild.Mnesia.html index 6d3ee3bd0..a7c1d966c 100644 --- a/Nostrum.Store.UnavailableGuild.Mnesia.html +++ b/Nostrum.Store.UnavailableGuild.Mnesia.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Store.UnavailableGuild.html b/Nostrum.Store.UnavailableGuild.html index 8bb7927e5..d910c7bae 100644 --- a/Nostrum.Store.UnavailableGuild.html +++ b/Nostrum.Store.UnavailableGuild.html @@ -14,7 +14,7 @@ - + @@ -158,9 +158,9 @@

By default, nostrum will use Elixir.Nostrum.Store.UnavailableGuild.ETS to store unavailable guilds. To override this, set the [:stores, :unavailable_guilds] setting on nostrum's application configuration:

config :nostrum,
-  stores: %{
+  stores: %{
     unavailable_guilds: MyBot.Nostrum.Store.UnavailableGuild
-  }

This setting must be set at compile time.

+ }

This setting must be set at compile time.

diff --git a/Nostrum.Struct.ApplicationCommand.html b/Nostrum.Struct.ApplicationCommand.html index 4f45d7dd7..21bc3c657 100644 --- a/Nostrum.Struct.ApplicationCommand.html +++ b/Nostrum.Struct.ApplicationCommand.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Struct.ApplicationCommandInteractionData.html b/Nostrum.Struct.ApplicationCommandInteractionData.html index cbcba4869..cb1879df5 100644 --- a/Nostrum.Struct.ApplicationCommandInteractionData.html +++ b/Nostrum.Struct.ApplicationCommandInteractionData.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Struct.ApplicationCommandInteractionDataOption.html b/Nostrum.Struct.ApplicationCommandInteractionDataOption.html index 89b66516b..1606b2a7b 100644 --- a/Nostrum.Struct.ApplicationCommandInteractionDataOption.html +++ b/Nostrum.Struct.ApplicationCommandInteractionDataOption.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Struct.ApplicationCommandInteractionDataResolved.html b/Nostrum.Struct.ApplicationCommandInteractionDataResolved.html index 37432f02e..35102d12f 100644 --- a/Nostrum.Struct.ApplicationCommandInteractionDataResolved.html +++ b/Nostrum.Struct.ApplicationCommandInteractionDataResolved.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Struct.AutoModerationRule.Action.html b/Nostrum.Struct.AutoModerationRule.Action.html index bfc3c247a..129c9c6e5 100644 --- a/Nostrum.Struct.AutoModerationRule.Action.html +++ b/Nostrum.Struct.AutoModerationRule.Action.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Struct.AutoModerationRule.ActionMetadata.html b/Nostrum.Struct.AutoModerationRule.ActionMetadata.html index 10ed87eb1..23e9f9641 100644 --- a/Nostrum.Struct.AutoModerationRule.ActionMetadata.html +++ b/Nostrum.Struct.AutoModerationRule.ActionMetadata.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Struct.AutoModerationRule.TriggerMetadata.html b/Nostrum.Struct.AutoModerationRule.TriggerMetadata.html index 5d360bd27..faf822019 100644 --- a/Nostrum.Struct.AutoModerationRule.TriggerMetadata.html +++ b/Nostrum.Struct.AutoModerationRule.TriggerMetadata.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Struct.AutoModerationRule.html b/Nostrum.Struct.AutoModerationRule.html index aca1a5a3d..c3220662d 100644 --- a/Nostrum.Struct.AutoModerationRule.html +++ b/Nostrum.Struct.AutoModerationRule.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Struct.Channel.html b/Nostrum.Struct.Channel.html index 1062bebe3..4488ffc5e 100644 --- a/Nostrum.Struct.Channel.html +++ b/Nostrum.Struct.Channel.html @@ -14,7 +14,7 @@ - + @@ -145,15 +145,15 @@

Channel Struct

-

The channel struct is used by Nostrum to represent a Discord Channel Object. More information can be found on the Discord API Channel Documentation.

The struct can have one of several forms depending on the type of channel. You can read more about the individual channel types below.

A typical channel would appear as:

%Nostrum.Struct.Channel{
+

The channel struct is used by Nostrum to represent a Discord Channel Object. More information can be found on the Discord API Channel Documentation.

The struct can have one of several forms depending on the type of channel. You can read more about the individual channel types below.

A typical channel would appear as:

%Nostrum.Struct.Channel{
   guild_id: 766435015768539156,
   id: 827333533688397865,
   name: "announcements",
   nsfw: false,
-  permission_overwrites: [],
+  permission_overwrites: [],
   position: 1,
   type: 5,
-}

The channel struct implements String.Chars protocol through the mention/1 function. This example uses our channel from the previous code block.

channel |> to_string()
+}

The channel struct implements String.Chars protocol through the mention/1 function. This example uses our channel from the previous code block.

channel |> to_string()
 "<#766435015768539156>"

@@ -168,16 +168,16 @@

Example

-
> guild_id = Nostrum.Cache.ChannelGuildMapping.get(1229955694258684005)
+
> guild_id = Nostrum.Cache.ChannelGuildMapping.get(1229955694258684005)
 1226944827137069107
-> {:ok, guild} = Nostrum.Cache.GuildCache.get(guild_id)
-{:ok,
-  %Nostrum.Struct.Guild{
+> {:ok, guild} = Nostrum.Cache.GuildCache.get(guild_id)
+{:ok,
+  %Nostrum.Struct.Guild{
     id: 1226944827137069107,
     name: "Craig Cat Zone",
     ...
-}}
-> guild.channels[channel_id].name
+}}
+> guild.channels[channel_id].name
 "cat-general"

@@ -2904,7 +2904,7 @@

mention(channel)

Examples

channel
-|> Nostrum.Struct.Channel.mention()
+|> Nostrum.Struct.Channel.mention()
 "<#381889573426429952>"
 
diff --git a/Nostrum.Struct.Component.ActionRow.html b/Nostrum.Struct.Component.ActionRow.html index 09acaeb8d..dca5afe00 100644 --- a/Nostrum.Struct.Component.ActionRow.html +++ b/Nostrum.Struct.Component.ActionRow.html @@ -14,7 +14,7 @@ - + @@ -265,8 +265,10 @@

t()

@type t() :: %Nostrum.Struct.Component{
+  channel_types: term(),
   components: [Nostrum.Struct.Component.components()],
   custom_id: term(),
+  default_values: term(),
   disabled: term(),
   emoji: term(),
   label: term(),
diff --git a/Nostrum.Struct.Component.Button.html b/Nostrum.Struct.Component.Button.html
index 570dc3945..4cb2f0257 100644
--- a/Nostrum.Struct.Component.Button.html
+++ b/Nostrum.Struct.Component.Button.html
@@ -14,7 +14,7 @@
 
     
     
-    
+    
     
     
 
@@ -307,8 +307,10 @@ 

interaction_button()

@type interaction_button() :: %Nostrum.Struct.Component{
+  channel_types: term(),
   components: term(),
   custom_id: Nostrum.Struct.Component.custom_id(),
+  default_values: term(),
   disabled: Nostrum.Struct.Component.disabled(),
   emoji: Nostrum.Struct.Component.emoji(),
   label: Nostrum.Struct.Component.label(),
@@ -354,8 +356,10 @@ 

link_button()

@type link_button() :: %Nostrum.Struct.Component{
+  channel_types: term(),
   components: term(),
   custom_id: term(),
+  default_values: term(),
   disabled: Nostrum.Struct.Component.disabled(),
   emoji: Nostrum.Struct.Component.emoji(),
   label: Nostrum.Struct.Component.label(),
diff --git a/Nostrum.Struct.Component.ChannelSelect.html b/Nostrum.Struct.Component.ChannelSelect.html
new file mode 100644
index 000000000..433e8ac4c
--- /dev/null
+++ b/Nostrum.Struct.Component.ChannelSelect.html
@@ -0,0 +1,425 @@
+
+
+  
+    
+    
+    
+    
+    
+
+
+    Nostrum.Struct.Component.ChannelSelect — Nostrum v0.10.0
+    
+
+
+    
+    
+    
+    
+    
+
+
+  
+  
+    
+
+
+ + + + + +
+ + +
+ + +
+

+ + + + View Source + + + Nostrum.Struct.Component.ChannelSelect + (Nostrum v0.10.0) + +

+ + +
+

Channel Select

+
+ +
+ +
+

+ + + + Summary +

+
+

+ Types +

+ +
+
+ opt() + +
+ +
+ +
+
+ opts() + +
+ +
+ +
+
+ t() + +
+ +
+ +
+
+

+ Functions +

+ + + +
+
+ flatten(map) + +
+ +
+ +
+ +
+ + +
+

+ + + + Types +

+
+
+ + + +
+ +
+ +
@type opt() ::
+  {:custom_id, Nostrum.Struct.Component.custom_id()}
+  | {:min_values, Nostrum.Struct.Component.min_values()}
+  | {:max_values, Nostrum.Struct.Component.max_values()}
+  | {:disabled, Nostrum.Struct.Component.disabled()}
+  | {:channel_types, Nostrum.Struct.Component.channel_types()}
+ +
+ + +
+
+
+ + + +
+ +
+ +
@type opts() :: [opt()]
+ +
+ + +
+
+
+ + + +
+ +
+ +
@type t() :: %Nostrum.Struct.Component{
+  channel_types: Nostrum.Struct.Component.channel_types(),
+  components: term(),
+  custom_id: Nostrum.Struct.Component.custom_id(),
+  default_values: term(),
+  disabled: Nostrum.Struct.Component.disabled(),
+  emoji: term(),
+  label: term(),
+  max_length: term(),
+  max_values: Nostrum.Struct.Component.max_values(),
+  min_length: term(),
+  min_values: Nostrum.Struct.Component.min_values(),
+  options: term(),
+  placeholder: term(),
+  required: term(),
+  style: term(),
+  type: Nostrum.Struct.Component.type(),
+  url: term(),
+  value: term()
+}
+ +
+ + +
+
+ +
+
+ +
+

+ + + + Functions +

+
+
+ + + +
+ + + Link to this function + +

channel_select(custom_id, opts \\ [])

+ + + + View Source + + + +
+ +
+ + +
+
+
+ + + +
+ + +
+
+ +
+
+ + +
+
+
+ + + + diff --git a/Nostrum.Struct.Component.DefaultValue.html b/Nostrum.Struct.Component.DefaultValue.html new file mode 100644 index 000000000..231a6b87f --- /dev/null +++ b/Nostrum.Struct.Component.DefaultValue.html @@ -0,0 +1,321 @@ + + + + + + + + + + + Nostrum.Struct.Component.DefaultValue — Nostrum v0.10.0 + + + + + + + + + + + + + + +
+ + + + + +
+ + +
+ + +
+

+ + + + View Source + + + Nostrum.Struct.Component.DefaultValue + (Nostrum v0.10.0) + +

+ + +
+

Default Value

+
+ +
+ +
+

+ + + + Summary +

+
+

+ Types +

+ +
+
+ id() + +
+ +
+ +
+
+ t() + +
+ +
+ +
+
+ type() + +
+ +
+ +
+ +
+ + +
+

+ + + + Types +

+
+
+ + + +
+ +
+ +
@type id() :: Nostrum.Snowflake.t()
+ +
+ + +
+
+
+ + + +
+ +
+ +
@type t() :: %Nostrum.Struct.Component.DefaultValue{id: id(), type: type()}
+ +
+ + +
+
+
+ + + +
+ +
+ +
@type type() :: :user | :role | :channel
+ +
+ + +
+
+ +
+
+ + +
+
+
+ + + + diff --git a/Nostrum.Struct.Component.MentionableSelect.html b/Nostrum.Struct.Component.MentionableSelect.html new file mode 100644 index 000000000..046ec0a8e --- /dev/null +++ b/Nostrum.Struct.Component.MentionableSelect.html @@ -0,0 +1,406 @@ + + + + + + + + + + + Nostrum.Struct.Component.MentionableSelect — Nostrum v0.10.0 + + + + + + + + + + + + + + +
+ + + + + +
+ + +
+ + +
+

+ + + + View Source + + + Nostrum.Struct.Component.MentionableSelect + (Nostrum v0.10.0) + +

+ + +
+

Mentionable Select

+
+ +
+ +
+

+ + + + Summary +

+
+

+ Types +

+ +
+
+ opt() + +
+ +
+ +
+
+ opts() + +
+ +
+ +
+
+ t() + +
+ +
+ +
+
+

+ Functions +

+ +
+
+ flatten(map) + +
+ +
+ + + +
+ +
+ + +
+

+ + + + Types +

+
+
+ + + +
+ +
+ +
@type opt() ::
+  {:custom_id, Nostrum.Struct.Component.custom_id()}
+  | {:placeholder, Nostrum.Struct.Component.placeholder()}
+  | {:min_values, Nostrum.Struct.Component.min_values()}
+  | {:max_values, Nostrum.Struct.Component.max_values()}
+  | {:disabled, Nostrum.Struct.Component.disabled()}
+ +
+ + +
+
+
+ + + +
+ +
+ +
@type opts() :: [opt()]
+ +
+ + +
+
+
+ + + +
+ +
+ +
@type t() :: Nostrum.Struct.Component.SelectMenu.t()
+ +
+ + +
+
+ +
+
+ +
+

+ + + + Functions +

+
+
+ + + +
+ + +
+
+
+ + + +
+ + + Link to this function + +

mentionable_select(custom_id, opts \\ [])

+ + + + View Source + + + +
+ +
+ + +
+
+ +
+
+ + +
+
+
+ + + + diff --git a/Nostrum.Struct.Component.Option.html b/Nostrum.Struct.Component.Option.html index 2e5b07e2c..a12b40b86 100644 --- a/Nostrum.Struct.Component.Option.html +++ b/Nostrum.Struct.Component.Option.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Struct.Component.RoleSelect.html b/Nostrum.Struct.Component.RoleSelect.html new file mode 100644 index 000000000..253052d57 --- /dev/null +++ b/Nostrum.Struct.Component.RoleSelect.html @@ -0,0 +1,406 @@ + + + + + + + + + + + Nostrum.Struct.Component.RoleSelect — Nostrum v0.10.0 + + + + + + + + + + + + + + +
+ + + + + +
+ + +
+ + +
+

+ + + + View Source + + + Nostrum.Struct.Component.RoleSelect + (Nostrum v0.10.0) + +

+ + +
+

Role Select

+
+ +
+ +
+

+ + + + Summary +

+
+

+ Types +

+ +
+
+ opt() + +
+ +
+ +
+
+ opts() + +
+ +
+ +
+
+ t() + +
+ +
+ +
+
+

+ Functions +

+ +
+
+ flatten(map) + +
+ +
+ + + +
+ +
+ + +
+

+ + + + Types +

+
+
+ + + +
+ +
+ +
@type opt() ::
+  {:custom_id, Nostrum.Struct.Component.custom_id()}
+  | {:placeholder, Nostrum.Struct.Component.placeholder()}
+  | {:min_values, Nostrum.Struct.Component.min_values()}
+  | {:max_values, Nostrum.Struct.Component.max_values()}
+  | {:disabled, Nostrum.Struct.Component.disabled()}
+ +
+ + +
+
+
+ + + +
+ +
+ +
@type opts() :: [opt()]
+ +
+ + +
+
+
+ + + +
+ +
+ +
@type t() :: Nostrum.Struct.Component.SelectMenu.t()
+ +
+ + +
+
+ +
+
+ +
+

+ + + + Functions +

+
+
+ + + +
+ + +
+
+
+ + + +
+ + + Link to this function + +

mentionable_select(custom_id, opts \\ [])

+ + + + View Source + + + +
+ +
+ + +
+
+ +
+
+ + +
+
+
+ + + + diff --git a/Nostrum.Struct.Component.SelectMenu.html b/Nostrum.Struct.Component.SelectMenu.html index e5667c95b..6ad9a859c 100644 --- a/Nostrum.Struct.Component.SelectMenu.html +++ b/Nostrum.Struct.Component.SelectMenu.html @@ -14,7 +14,7 @@ - + @@ -307,8 +307,10 @@

t()

@type t() :: %Nostrum.Struct.Component{
+  channel_types: term(),
   components: term(),
   custom_id: Nostrum.Struct.Component.custom_id(),
+  default_values: term(),
   disabled: Nostrum.Struct.Component.disabled(),
   emoji: term(),
   label: term(),
diff --git a/Nostrum.Struct.Component.TextInput.html b/Nostrum.Struct.Component.TextInput.html
index ce2bb0823..04430a43a 100644
--- a/Nostrum.Struct.Component.TextInput.html
+++ b/Nostrum.Struct.Component.TextInput.html
@@ -14,7 +14,7 @@
 
     
     
-    
+    
     
     
 
@@ -316,8 +316,10 @@ 

t()

@type t() :: %Nostrum.Struct.Component{
+  channel_types: term(),
   components: term(),
   custom_id: Nostrum.Struct.Component.custom_id(),
+  default_values: term(),
   disabled: term(),
   emoji: term(),
   label: Nostrum.Struct.Component.label(),
diff --git a/Nostrum.Struct.Component.UserSelect.html b/Nostrum.Struct.Component.UserSelect.html
new file mode 100644
index 000000000..409b808de
--- /dev/null
+++ b/Nostrum.Struct.Component.UserSelect.html
@@ -0,0 +1,406 @@
+
+
+  
+    
+    
+    
+    
+    
+
+
+    Nostrum.Struct.Component.UserSelect — Nostrum v0.10.0
+    
+
+
+    
+    
+    
+    
+    
+
+
+  
+  
+    
+
+
+ + + + + +
+ + +
+ + +
+

+ + + + View Source + + + Nostrum.Struct.Component.UserSelect + (Nostrum v0.10.0) + +

+ + +
+

User Select

+
+ +
+ +
+

+ + + + Summary +

+
+

+ Types +

+ +
+
+ opt() + +
+ +
+ +
+
+ opts() + +
+ +
+ +
+
+ t() + +
+ +
+ +
+
+

+ Functions +

+ +
+
+ flatten(map) + +
+ +
+ + + +
+ +
+ + +
+

+ + + + Types +

+
+
+ + + +
+ +
+ +
@type opt() ::
+  {:custom_id, Nostrum.Struct.Component.custom_id()}
+  | {:placeholder, Nostrum.Struct.Component.placeholder()}
+  | {:min_values, Nostrum.Struct.Component.min_values()}
+  | {:max_values, Nostrum.Struct.Component.max_values()}
+  | {:disabled, Nostrum.Struct.Component.disabled()}
+ +
+ + +
+
+
+ + + +
+ +
+ +
@type opts() :: [opt()]
+ +
+ + +
+
+
+ + + +
+ +
+ +
@type t() :: Nostrum.Struct.Component.SelectMenu.t()
+ +
+ + +
+
+ +
+
+ +
+

+ + + + Functions +

+
+
+ + + +
+ + +
+
+
+ + + +
+ + + Link to this function + +

mentionable_select(custom_id, opts \\ [])

+ + + + View Source + + + +
+ +
+ + +
+
+ +
+
+ + +
+
+
+ + + + diff --git a/Nostrum.Struct.Component.html b/Nostrum.Struct.Component.html index 0b4b121c6..e7f41a64f 100644 --- a/Nostrum.Struct.Component.html +++ b/Nostrum.Struct.Component.html @@ -14,7 +14,7 @@ - + @@ -198,6 +198,14 @@

Types

+
+ + +
+
components() @@ -218,6 +226,14 @@

+
+ + +
+
disabled() @@ -421,6 +437,36 @@

Types

+
+ +
+ + + Link to this type + +

channel_types()

+ + + + View Source + + + + (since 0.5.0) + +
+ +
+ +
+ +
@type channel_types() :: [Nostrum.Struct.Channel.type()]
+ +
+ + +
+
@@ -430,7 +476,7 @@

components()

- + View Source @@ -464,7 +510,7 @@

components()

custom_id()

- + View Source @@ -485,6 +531,36 @@

custom_id()

Used to identify the component when the interaction is sent to you from the user.

Valid for Interaction Buttons, Select Menus, and Text Input.

+
+ +
+ + + Link to this type + +

default_values()

+ + + + View Source + + + + (since 0.5.0) + +
+ +
+ +
+ +
@type default_values() :: [DefaultValue.t()]
+ +
+ + +
+
@@ -494,7 +570,7 @@

custom_id()

disabled()

- + View Source @@ -524,7 +600,7 @@

disabled()

emoji()

- + View Source @@ -560,7 +636,7 @@

emoji()

label()

- + View Source @@ -590,7 +666,7 @@

label()

max_length()

- + View Source @@ -620,7 +696,7 @@

max_length()

max_values()

- + View Source @@ -650,7 +726,7 @@

max_values()

min_length()

- + View Source @@ -680,7 +756,7 @@

min_length()

min_values()

- + View Source @@ -710,7 +786,7 @@

min_values()

options()

- + View Source @@ -740,7 +816,7 @@

options()

placeholder()

- + View Source @@ -770,7 +846,7 @@

placeholder()

required()

- + View Source @@ -800,7 +876,7 @@

required()

style()

- + View Source @@ -830,7 +906,7 @@

style()

t()

- + View Source @@ -864,7 +940,7 @@

t()

type()

- + View Source @@ -894,7 +970,7 @@

type()

url()

- + View Source @@ -924,7 +1000,7 @@

url()

value()

- + View Source @@ -966,7 +1042,7 @@

new(opts)

- + View Source @@ -996,7 +1072,7 @@

new(opts)

update(t, opts)

- + View Source @@ -1038,7 +1114,7 @@

to_struct(map)

- + View Source diff --git a/Nostrum.Struct.Embed.Author.html b/Nostrum.Struct.Embed.Author.html index 4fe520fdb..fabe7a231 100644 --- a/Nostrum.Struct.Embed.Author.html +++ b/Nostrum.Struct.Embed.Author.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Struct.Embed.Field.html b/Nostrum.Struct.Embed.Field.html index 2b3537fe1..cc6ef85ea 100644 --- a/Nostrum.Struct.Embed.Field.html +++ b/Nostrum.Struct.Embed.Field.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Struct.Embed.Footer.html b/Nostrum.Struct.Embed.Footer.html index 2396dfb9c..6922f73fe 100644 --- a/Nostrum.Struct.Embed.Footer.html +++ b/Nostrum.Struct.Embed.Footer.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Struct.Embed.Image.html b/Nostrum.Struct.Embed.Image.html index d4082b542..b9a953b06 100644 --- a/Nostrum.Struct.Embed.Image.html +++ b/Nostrum.Struct.Embed.Image.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Struct.Embed.Provider.html b/Nostrum.Struct.Embed.Provider.html index 8be286b22..453396c8c 100644 --- a/Nostrum.Struct.Embed.Provider.html +++ b/Nostrum.Struct.Embed.Provider.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Struct.Embed.Thumbnail.html b/Nostrum.Struct.Embed.Thumbnail.html index 6a51352da..411b00b77 100644 --- a/Nostrum.Struct.Embed.Thumbnail.html +++ b/Nostrum.Struct.Embed.Thumbnail.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Struct.Embed.Video.html b/Nostrum.Struct.Embed.Video.html index 9498c7cfc..d2341604d 100644 --- a/Nostrum.Struct.Embed.Video.html +++ b/Nostrum.Struct.Embed.Video.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Struct.Embed.html b/Nostrum.Struct.Embed.html index 54248d197..bb36559cf 100644 --- a/Nostrum.Struct.Embed.html +++ b/Nostrum.Struct.Embed.html @@ -14,7 +14,7 @@ - + @@ -148,63 +148,63 @@

Nostrum.Struct.Embeds can be built using this module's builder functions or standard Map syntax:

iex> import Nostrum.Struct.Embed
 ...> embed =
-...>   %Nostrum.Struct.Embed{}
-...>   |> put_title("craig")
-...>   |> put_description("nostrum")
-...>   |> put_url("https://google.com/")
-...>   |> put_timestamp("2016-05-05T21:04:13.203Z")
-...>   |> put_color(431_948)
-...>   |> put_field("Field 1", "Test")
-...>   |> put_field("Field 2", "More test", true)
+...>   %Nostrum.Struct.Embed{}
+...>   |> put_title("craig")
+...>   |> put_description("nostrum")
+...>   |> put_url("https://google.com/")
+...>   |> put_timestamp("2016-05-05T21:04:13.203Z")
+...>   |> put_color(431_948)
+...>   |> put_field("Field 1", "Test")
+...>   |> put_field("Field 2", "More test", true)
 ...> embed
-%Nostrum.Struct.Embed{
+%Nostrum.Struct.Embed{
   title: "craig",
   description: "nostrum",
   url: "https://google.com/",
   timestamp: "2016-05-05T21:04:13.203Z",
   color: 431_948,
-  fields: [
-    %Nostrum.Struct.Embed.Field{name: "Field 1", value: "Test"},
-    %Nostrum.Struct.Embed.Field{name: "Field 2", value: "More test", inline: true}
-  ]
-}

+ fields: [ + %Nostrum.Struct.Embed.Field{name: "Field 1", value: "Test"}, + %Nostrum.Struct.Embed.Field{name: "Field 2", value: "More test", inline: true} + ] +}

Using structs

You can also create Nostrum.Struct.Embeds from structs, by using the -Nostrum.Struct.Embed module. Here's how the example above could be build using structs

  defmodule MyApp.MyStruct do
+Nostrum.Struct.Embed module. Here's how the example above could be build using structs

  defmodule MyApp.MyStruct do
     use Nostrum.Struct.Embed
 
-    defstruct []
+    defstruct []
 
-    def title(_), do: "craig"
-    def description(_), do: "nostrum"
-    def url(_), do: "https://google.com/"
-    def timestamp(_), do: "2016-05-05T21:04:13.203Z"
-    def color(_), do: 431_948
+    def title(_), do: "craig"
+    def description(_), do: "nostrum"
+    def url(_), do: "https://google.com/"
+    def timestamp(_), do: "2016-05-05T21:04:13.203Z"
+    def color(_), do: 431_948
 
-    def fields(_) do
-      [
-        %Nostrum.Struct.Embed.Field{name: "Field 1", value: "Test"},
-        %Nostrum.Struct.Embed.Field{name: "Field 2", value: "More test", inline: true}
-      ]
-    end
-  end
+    def fields(_) do
+      [
+        %Nostrum.Struct.Embed.Field{name: "Field 1", value: "Test"},
+        %Nostrum.Struct.Embed.Field{name: "Field 2", value: "More test", inline: true}
+      ]
+    end
+  end
 
-iex> Nostrum.Struct.Embed.from(%MyApp.MyStruct{})
-%Nostrum.Struct.Embed{
+iex> Nostrum.Struct.Embed.from(%MyApp.MyStruct{})
+%Nostrum.Struct.Embed{
   title: "craig",
   description: "nostrum",
   url: "https://google.com/",
   timestamp: "2016-05-05T21:04:13.203Z",
   color: 431_948,
-  fields: [
-    %Nostrum.Struct.Embed.Field{name: "Field 1", value: "Test"},
-    %Nostrum.Struct.Embed.Field{name: "Field 2", value: "More test", inline: true}
-  ]
-}

See this modules callbacks for a list of all the functions that can be implemented.

The implementation of these callbacks is optional. Not implemented functions will simply + fields: [ + %Nostrum.Struct.Embed.Field{name: "Field 1", value: "Test"}, + %Nostrum.Struct.Embed.Field{name: "Field 2", value: "More test", inline: true} + ] +}

See this modules callbacks for a list of all the functions that can be implemented.

The implementation of these callbacks is optional. Not implemented functions will simply be ignored.

@@ -1343,15 +1343,15 @@

put_author(embed, name, url, icon_url)

Examples

-
iex> embed = %Nostrum.Struct.Embed{}
-...> Nostrum.Struct.Embed.put_author(embed, "skippi", "https://github.com/skippi", nil)
-%Nostrum.Struct.Embed{
-  author: %Nostrum.Struct.Embed.Author{
+
iex> embed = %Nostrum.Struct.Embed{}
+...> Nostrum.Struct.Embed.put_author(embed, "skippi", "https://github.com/skippi", nil)
+%Nostrum.Struct.Embed{
+  author: %Nostrum.Struct.Embed.Author{
     name: "skippi",
     url: "https://github.com/skippi",
     icon_url: nil
-  }
-}
+
} +}
@@ -1385,9 +1385,9 @@

put_color(embed, value)

Examples -
iex> embed = %Nostrum.Struct.Embed{}
-...> Nostrum.Struct.Embed.put_color(embed, 431948)
-%Nostrum.Struct.Embed{color: 431948}
+
iex> embed = %Nostrum.Struct.Embed{}
+...> Nostrum.Struct.Embed.put_color(embed, 431948)
+%Nostrum.Struct.Embed{color: 431948}
@@ -1421,9 +1421,9 @@

put_description(embed, value)

Examples -
iex> embed = %Nostrum.Struct.Embed{}
-...> Nostrum.Struct.Embed.put_description(embed, "An elixir library for the discord API.")
-%Nostrum.Struct.Embed{description: "An elixir library for the discord API."}
+
iex> embed = %Nostrum.Struct.Embed{}
+...> Nostrum.Struct.Embed.put_description(embed, "An elixir library for the discord API.")
+%Nostrum.Struct.Embed{description: "An elixir library for the discord API."}
@@ -1464,26 +1464,26 @@

put_field(embed, name, value, inline \\ nil Examples

-
iex> embed = %Nostrum.Struct.Embed{}
-...> Nostrum.Struct.Embed.put_field(embed, "First User", "b1nzy")
-%Nostrum.Struct.Embed{
-  fields: [
-    %Nostrum.Struct.Embed.Field{name: "First User", value: "b1nzy"}
-  ]
-}
-
-iex> embed = %Nostrum.Struct.Embed{
-...>   fields: [
-...>     %Nostrum.Struct.Embed.Field{name: "First User", value: "b1nzy"}
-...>   ]
-...> }
-...> Nostrum.Struct.Embed.put_field(embed, "Second User", "Danny")
-%Nostrum.Struct.Embed{
-  fields: [
-    %Nostrum.Struct.Embed.Field{name: "First User", value: "b1nzy"},
-    %Nostrum.Struct.Embed.Field{name: "Second User", value: "Danny"}
-  ]
-}
+
iex> embed = %Nostrum.Struct.Embed{}
+...> Nostrum.Struct.Embed.put_field(embed, "First User", "b1nzy")
+%Nostrum.Struct.Embed{
+  fields: [
+    %Nostrum.Struct.Embed.Field{name: "First User", value: "b1nzy"}
+  ]
+}
+
+iex> embed = %Nostrum.Struct.Embed{
+...>   fields: [
+...>     %Nostrum.Struct.Embed.Field{name: "First User", value: "b1nzy"}
+...>   ]
+...> }
+...> Nostrum.Struct.Embed.put_field(embed, "Second User", "Danny")
+%Nostrum.Struct.Embed{
+  fields: [
+    %Nostrum.Struct.Embed.Field{name: "First User", value: "b1nzy"},
+    %Nostrum.Struct.Embed.Field{name: "Second User", value: "Danny"}
+  ]
+}
@@ -1523,23 +1523,23 @@

put_footer(embed, text, icon_url \\ nil) Examples

-
iex> embed = %Nostrum.Struct.Embed{}
-...> Nostrum.Struct.Embed.put_footer(embed, "Discord API", nil)
-%Nostrum.Struct.Embed{
-  footer: %Nostrum.Struct.Embed.Footer{
+
iex> embed = %Nostrum.Struct.Embed{}
+...> Nostrum.Struct.Embed.put_footer(embed, "Discord API", nil)
+%Nostrum.Struct.Embed{
+  footer: %Nostrum.Struct.Embed.Footer{
     text: "Discord API",
     icon_url: nil
-  }
-}
+  }
+}
 
-iex> embed = %Nostrum.Struct.Embed{}
-...> Nostrum.Struct.Embed.put_footer(embed, "nostrum footer", "https://discord.com/assets/53ef346458017da2062aca5c7955946b.svg")
-%Nostrum.Struct.Embed{
-  footer: %Nostrum.Struct.Embed.Footer{
+iex> embed = %Nostrum.Struct.Embed{}
+...> Nostrum.Struct.Embed.put_footer(embed, "nostrum footer", "https://discord.com/assets/53ef346458017da2062aca5c7955946b.svg")
+%Nostrum.Struct.Embed{
+  footer: %Nostrum.Struct.Embed.Footer{
     text: "nostrum footer",
     icon_url: "https://discord.com/assets/53ef346458017da2062aca5c7955946b.svg"
-  }
-}
+
} +}
@@ -1573,13 +1573,13 @@

put_image(embed, url)

Examples -
iex> embed = %Nostrum.Struct.Embed{}
-...> Nostrum.Struct.Embed.put_image(embed, "https://discord.com/assets/af92e60c16b7019f34a467383b31490a.svg")
-%Nostrum.Struct.Embed{
-  image: %Nostrum.Struct.Embed.Image{
+
iex> embed = %Nostrum.Struct.Embed{}
+...> Nostrum.Struct.Embed.put_image(embed, "https://discord.com/assets/af92e60c16b7019f34a467383b31490a.svg")
+%Nostrum.Struct.Embed{
+  image: %Nostrum.Struct.Embed.Image{
     url: "https://discord.com/assets/af92e60c16b7019f34a467383b31490a.svg"
-  }
-}
+
} +}
@@ -1613,13 +1613,13 @@

put_thumbnail(embed, url)

Examples -
iex> embed = %Nostrum.Struct.Embed{}
-...> Nostrum.Struct.Embed.put_thumbnail(embed, "https://discord.com/assets/af92e60c16b7019f34a467383b31490a.svg")
-%Nostrum.Struct.Embed{
-  thumbnail: %Nostrum.Struct.Embed.Thumbnail{
+
iex> embed = %Nostrum.Struct.Embed{}
+...> Nostrum.Struct.Embed.put_thumbnail(embed, "https://discord.com/assets/af92e60c16b7019f34a467383b31490a.svg")
+%Nostrum.Struct.Embed{
+  thumbnail: %Nostrum.Struct.Embed.Thumbnail{
     url: "https://discord.com/assets/af92e60c16b7019f34a467383b31490a.svg"
-  }
-}
+
} +}
@@ -1653,9 +1653,9 @@

put_timestamp(embed, value)

Examples -
iex> embed = %Nostrum.Struct.Embed{}
-...> Nostrum.Struct.Embed.put_timestamp(embed, "2018-04-21T17:33:51.893000Z")
-%Nostrum.Struct.Embed{timestamp: "2018-04-21T17:33:51.893000Z"}
+
iex> embed = %Nostrum.Struct.Embed{}
+...> Nostrum.Struct.Embed.put_timestamp(embed, "2018-04-21T17:33:51.893000Z")
+%Nostrum.Struct.Embed{timestamp: "2018-04-21T17:33:51.893000Z"}
@@ -1689,9 +1689,9 @@

put_title(embed, value)

Examples -
iex> embed = %Nostrum.Struct.Embed{}
-...> Nostrum.Struct.Embed.put_title(embed, "nostrum")
-%Nostrum.Struct.Embed{title: "nostrum"}
+
iex> embed = %Nostrum.Struct.Embed{}
+...> Nostrum.Struct.Embed.put_title(embed, "nostrum")
+%Nostrum.Struct.Embed{title: "nostrum"}
@@ -1725,9 +1725,9 @@

put_url(embed, value)

Examples -
iex> embed = %Nostrum.Struct.Embed{}
-...> Nostrum.Struct.Embed.put_url(embed, "https://github.com/Kraigie/nostrum")
-%Nostrum.Struct.Embed{url: "https://github.com/Kraigie/nostrum"}
+
iex> embed = %Nostrum.Struct.Embed{}
+...> Nostrum.Struct.Embed.put_url(embed, "https://github.com/Kraigie/nostrum")
+%Nostrum.Struct.Embed{url: "https://github.com/Kraigie/nostrum"}
diff --git a/Nostrum.Struct.Emoji.html b/Nostrum.Struct.Emoji.html index 754fb7ca7..52394f2a8 100644 --- a/Nostrum.Struct.Emoji.html +++ b/Nostrum.Struct.Emoji.html @@ -14,7 +14,7 @@ - + @@ -146,26 +146,26 @@

Mentioning Emojis in Messages

A Nostrum.Struct.Emoji can be mentioned in message content using the String.Chars -protocol or mention/1.

emoji = %Nostrum.Struct.Emoji{id: 437093487582642177, name: "foxbot"}
-Nostrum.Api.create_message!(184046599834435585, "#{emoji}")
-%Nostrum.Struct.Message{content: "<:foxbot:437093487582642177>"}
+protocol or mention/1.

emoji = %Nostrum.Struct.Emoji{id: 437093487582642177, name: "foxbot"}
+Nostrum.Api.create_message!(184046599834435585, "#{emoji}")
+%Nostrum.Struct.Message{content: "<:foxbot:437093487582642177>"}
 
-emoji = %Nostrum.Struct.Emoji{id: 436885297037312001, name: "tealixir"}
-Nostrum.Api.create_message!(280085880452939778, "#{Nostrum.Struct.Emoji.mention(emoji)}")
-%Nostrum.Struct.Message{content: "<:tealixir:436885297037312001>"}

+emoji = %Nostrum.Struct.Emoji{id: 436885297037312001, name: "tealixir"} +Nostrum.Api.create_message!(280085880452939778, "#{Nostrum.Struct.Emoji.mention(emoji)}") +%Nostrum.Struct.Message{content: "<:tealixir:436885297037312001>"}

Using Emojis in the Api

A Nostrum.Struct.Emoji can be used in Nostrum.Api by using its api name -or the struct itself.

emoji = %Nostrum.Struct.Emoji{id: 436885297037312001, name: "tealixir"}
-Nostrum.Api.create_reaction(381889573426429952, 436247584349356032, Nostrum.Struct.Emoji.api_name(emoji))
-{:ok}
+or the struct itself.

emoji = %Nostrum.Struct.Emoji{id: 436885297037312001, name: "tealixir"}
+Nostrum.Api.create_reaction(381889573426429952, 436247584349356032, Nostrum.Struct.Emoji.api_name(emoji))
+{:ok}
 
-emoji = %Nostrum.Struct.Emoji{id: 436189601820966923, name: "elixir"}
-Nostrum.Api.create_reaction(381889573426429952, 436247584349356032, emoji)
-{:ok}

See Nostrum.Struct.Emoji.api_name/0 for more information.

+
emoji = %Nostrum.Struct.Emoji{id: 436189601820966923, name: "elixir"} +Nostrum.Api.create_reaction(381889573426429952, 436247584349356032, emoji) +{:ok}

See Nostrum.Struct.Emoji.api_name/0 for more information.

@@ -638,12 +638,12 @@

api_name(emoji)

Examples -
iex> emoji = %Nostrum.Struct.Emoji{name: "Γ¡É"}
-...> Nostrum.Struct.Emoji.api_name(emoji)
+
iex> emoji = %Nostrum.Struct.Emoji{name: "Γ¡É"}
+...> Nostrum.Struct.Emoji.api_name(emoji)
 "Γ¡É"
 
-iex> emoji = %Nostrum.Struct.Emoji{id: 437093487582642177, name: "foxbot"}
-...> Nostrum.Struct.Emoji.api_name(emoji)
+iex> emoji = %Nostrum.Struct.Emoji{id: 437093487582642177, name: "foxbot"}
+...> Nostrum.Struct.Emoji.api_name(emoji)
 "foxbot:437093487582642177"
@@ -679,16 +679,16 @@

image_url(emoji)

Examples -
iex> emoji = %Nostrum.Struct.Emoji{id: 450225070569291776}
-iex> Nostrum.Struct.Emoji.image_url(emoji)
+
iex> emoji = %Nostrum.Struct.Emoji{id: 450225070569291776}
+iex> Nostrum.Struct.Emoji.image_url(emoji)
 "https://cdn.discordapp.com/emojis/450225070569291776.png"
 
-iex> emoji = %Nostrum.Struct.Emoji{id: 406140226998894614, animated: true}
-iex> Nostrum.Struct.Emoji.image_url(emoji)
+iex> emoji = %Nostrum.Struct.Emoji{id: 406140226998894614, animated: true}
+iex> Nostrum.Struct.Emoji.image_url(emoji)
 "https://cdn.discordapp.com/emojis/406140226998894614.gif"
 
-iex> emoji = %Nostrum.Struct.Emoji{id: nil, name: "Γ¡É"}
-iex> Nostrum.Struct.Emoji.image_url(emoji)
+iex> emoji = %Nostrum.Struct.Emoji{id: nil, name: "Γ¡É"}
+iex> Nostrum.Struct.Emoji.image_url(emoji)
 nil
@@ -723,16 +723,16 @@

mention(emoji)

Examples -
iex> emoji = %Nostrum.Struct.Emoji{name: "👍"}
-...> Nostrum.Struct.Emoji.mention(emoji)
+
iex> emoji = %Nostrum.Struct.Emoji{name: "👍"}
+...> Nostrum.Struct.Emoji.mention(emoji)
 "👍"
 
-iex> emoji = %Nostrum.Struct.Emoji{id: 436885297037312001, name: "tealixir"}
-...> Nostrum.Struct.Emoji.mention(emoji)
+iex> emoji = %Nostrum.Struct.Emoji{id: 436885297037312001, name: "tealixir"}
+...> Nostrum.Struct.Emoji.mention(emoji)
 "<:tealixir:436885297037312001>"
 
-iex> emoji = %Nostrum.Struct.Emoji{id: 437016804309860372, name: "blobseizure", animated: true}
-...> Nostrum.Struct.Emoji.mention(emoji)
+iex> emoji = %Nostrum.Struct.Emoji{id: 437016804309860372, name: "blobseizure", animated: true}
+...> Nostrum.Struct.Emoji.mention(emoji)
 "<a:blobseizure:437016804309860372>"
diff --git a/Nostrum.Struct.Event.AutoModerationRuleExecute.html b/Nostrum.Struct.Event.AutoModerationRuleExecute.html index 79a42db9d..2dceba68a 100644 --- a/Nostrum.Struct.Event.AutoModerationRuleExecute.html +++ b/Nostrum.Struct.Event.AutoModerationRuleExecute.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Struct.Event.ChannelPinsUpdate.html b/Nostrum.Struct.Event.ChannelPinsUpdate.html index 2fb9d0138..90fdb9698 100644 --- a/Nostrum.Struct.Event.ChannelPinsUpdate.html +++ b/Nostrum.Struct.Event.ChannelPinsUpdate.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Struct.Event.GuildBanAdd.html b/Nostrum.Struct.Event.GuildBanAdd.html index 8ee55afdc..d7310892c 100644 --- a/Nostrum.Struct.Event.GuildBanAdd.html +++ b/Nostrum.Struct.Event.GuildBanAdd.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Struct.Event.GuildBanRemove.html b/Nostrum.Struct.Event.GuildBanRemove.html index ddbbf70a5..1c1573c02 100644 --- a/Nostrum.Struct.Event.GuildBanRemove.html +++ b/Nostrum.Struct.Event.GuildBanRemove.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Struct.Event.GuildIntegrationDelete.html b/Nostrum.Struct.Event.GuildIntegrationDelete.html index bdb8d383e..200965ac7 100644 --- a/Nostrum.Struct.Event.GuildIntegrationDelete.html +++ b/Nostrum.Struct.Event.GuildIntegrationDelete.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Struct.Event.GuildIntegrationsUpdate.html b/Nostrum.Struct.Event.GuildIntegrationsUpdate.html index 7f8b71f42..1c3748b5d 100644 --- a/Nostrum.Struct.Event.GuildIntegrationsUpdate.html +++ b/Nostrum.Struct.Event.GuildIntegrationsUpdate.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Struct.Event.GuildScheduledEventUserAdd.html b/Nostrum.Struct.Event.GuildScheduledEventUserAdd.html index 5c489a45f..df3eaa44c 100644 --- a/Nostrum.Struct.Event.GuildScheduledEventUserAdd.html +++ b/Nostrum.Struct.Event.GuildScheduledEventUserAdd.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Struct.Event.GuildScheduledEventUserRemove.html b/Nostrum.Struct.Event.GuildScheduledEventUserRemove.html index c21baa7a3..61d64afd3 100644 --- a/Nostrum.Struct.Event.GuildScheduledEventUserRemove.html +++ b/Nostrum.Struct.Event.GuildScheduledEventUserRemove.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Struct.Event.InviteCreate.html b/Nostrum.Struct.Event.InviteCreate.html index 7de60334b..6d048ded7 100644 --- a/Nostrum.Struct.Event.InviteCreate.html +++ b/Nostrum.Struct.Event.InviteCreate.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Struct.Event.InviteDelete.html b/Nostrum.Struct.Event.InviteDelete.html index 07206e739..5bee1ef51 100644 --- a/Nostrum.Struct.Event.InviteDelete.html +++ b/Nostrum.Struct.Event.InviteDelete.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Struct.Event.MessageDelete.html b/Nostrum.Struct.Event.MessageDelete.html index 13aa467df..cd6778b4f 100644 --- a/Nostrum.Struct.Event.MessageDelete.html +++ b/Nostrum.Struct.Event.MessageDelete.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Struct.Event.MessageDeleteBulk.html b/Nostrum.Struct.Event.MessageDeleteBulk.html index 9d382a1f2..950a20bfd 100644 --- a/Nostrum.Struct.Event.MessageDeleteBulk.html +++ b/Nostrum.Struct.Event.MessageDeleteBulk.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Struct.Event.MessageReactionAdd.html b/Nostrum.Struct.Event.MessageReactionAdd.html index 93df5af6c..ae0a58c08 100644 --- a/Nostrum.Struct.Event.MessageReactionAdd.html +++ b/Nostrum.Struct.Event.MessageReactionAdd.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Struct.Event.MessageReactionRemove.html b/Nostrum.Struct.Event.MessageReactionRemove.html index a1c49fca5..3acb0db93 100644 --- a/Nostrum.Struct.Event.MessageReactionRemove.html +++ b/Nostrum.Struct.Event.MessageReactionRemove.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Struct.Event.MessageReactionRemoveAll.html b/Nostrum.Struct.Event.MessageReactionRemoveAll.html index 3252315bc..016928ea7 100644 --- a/Nostrum.Struct.Event.MessageReactionRemoveAll.html +++ b/Nostrum.Struct.Event.MessageReactionRemoveAll.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Struct.Event.MessageReactionRemoveEmoji.html b/Nostrum.Struct.Event.MessageReactionRemoveEmoji.html index 335f3dd8d..e086b96d8 100644 --- a/Nostrum.Struct.Event.MessageReactionRemoveEmoji.html +++ b/Nostrum.Struct.Event.MessageReactionRemoveEmoji.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Struct.Event.PartialApplication.html b/Nostrum.Struct.Event.PartialApplication.html index b3349739a..69050a8d3 100644 --- a/Nostrum.Struct.Event.PartialApplication.html +++ b/Nostrum.Struct.Event.PartialApplication.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Struct.Event.PollVoteChange.html b/Nostrum.Struct.Event.PollVoteChange.html index 791ccbe18..d6b6f978f 100644 --- a/Nostrum.Struct.Event.PollVoteChange.html +++ b/Nostrum.Struct.Event.PollVoteChange.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Struct.Event.Ready.html b/Nostrum.Struct.Event.Ready.html index 28c07c507..d3156bd42 100644 --- a/Nostrum.Struct.Event.Ready.html +++ b/Nostrum.Struct.Event.Ready.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Struct.Event.SpeakingUpdate.html b/Nostrum.Struct.Event.SpeakingUpdate.html index be0680749..076bfb127 100644 --- a/Nostrum.Struct.Event.SpeakingUpdate.html +++ b/Nostrum.Struct.Event.SpeakingUpdate.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Struct.Event.ThreadListSync.html b/Nostrum.Struct.Event.ThreadListSync.html index 5dacf5314..1def455f4 100644 --- a/Nostrum.Struct.Event.ThreadListSync.html +++ b/Nostrum.Struct.Event.ThreadListSync.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Struct.Event.ThreadMembersUpdate.html b/Nostrum.Struct.Event.ThreadMembersUpdate.html index 2bf9e9b7c..071109ad2 100644 --- a/Nostrum.Struct.Event.ThreadMembersUpdate.html +++ b/Nostrum.Struct.Event.ThreadMembersUpdate.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Struct.Event.TypingStart.html b/Nostrum.Struct.Event.TypingStart.html index 81ace2fce..37fd906f3 100644 --- a/Nostrum.Struct.Event.TypingStart.html +++ b/Nostrum.Struct.Event.TypingStart.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Struct.Event.VoiceReady.html b/Nostrum.Struct.Event.VoiceReady.html index ec3caee0c..212e455e2 100644 --- a/Nostrum.Struct.Event.VoiceReady.html +++ b/Nostrum.Struct.Event.VoiceReady.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Struct.Event.VoiceServerUpdate.html b/Nostrum.Struct.Event.VoiceServerUpdate.html index d4425d50f..36f9566a4 100644 --- a/Nostrum.Struct.Event.VoiceServerUpdate.html +++ b/Nostrum.Struct.Event.VoiceServerUpdate.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Struct.Event.VoiceState.html b/Nostrum.Struct.Event.VoiceState.html index e7d40e0a2..1bbfd5561 100644 --- a/Nostrum.Struct.Event.VoiceState.html +++ b/Nostrum.Struct.Event.VoiceState.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Struct.Guild.AuditLog.html b/Nostrum.Struct.Guild.AuditLog.html index 4865fdc79..aa9b5a831 100644 --- a/Nostrum.Struct.Guild.AuditLog.html +++ b/Nostrum.Struct.Guild.AuditLog.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Struct.Guild.AuditLogEntry.html b/Nostrum.Struct.Guild.AuditLogEntry.html index f15e27983..e6cf3e8c1 100644 --- a/Nostrum.Struct.Guild.AuditLogEntry.html +++ b/Nostrum.Struct.Guild.AuditLogEntry.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Struct.Guild.Ban.html b/Nostrum.Struct.Guild.Ban.html index 9d59dbaf6..64013d08b 100644 --- a/Nostrum.Struct.Guild.Ban.html +++ b/Nostrum.Struct.Guild.Ban.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Struct.Guild.Integration.Account.html b/Nostrum.Struct.Guild.Integration.Account.html index a270587a4..491510a8b 100644 --- a/Nostrum.Struct.Guild.Integration.Account.html +++ b/Nostrum.Struct.Guild.Integration.Account.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Struct.Guild.Integration.Application.html b/Nostrum.Struct.Guild.Integration.Application.html index 8dec5d9a6..333bfeaff 100644 --- a/Nostrum.Struct.Guild.Integration.Application.html +++ b/Nostrum.Struct.Guild.Integration.Application.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Struct.Guild.Integration.html b/Nostrum.Struct.Guild.Integration.html index a70b1b70a..7d1865b99 100644 --- a/Nostrum.Struct.Guild.Integration.html +++ b/Nostrum.Struct.Guild.Integration.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Struct.Guild.Member.Flags.html b/Nostrum.Struct.Guild.Member.Flags.html index 00c527b7d..e59915564 100644 --- a/Nostrum.Struct.Guild.Member.Flags.html +++ b/Nostrum.Struct.Guild.Member.Flags.html @@ -14,7 +14,7 @@ - + @@ -481,13 +481,13 @@

from_integer(flag_value)

Examples -
iex> Nostrum.Struct.Guild.Member.Flags.from_integer(9)
-%Nostrum.Struct.Guild.Member.Flags{
+
iex> Nostrum.Struct.Guild.Member.Flags.from_integer(9)
+%Nostrum.Struct.Guild.Member.Flags{
   did_rejoin: true,
   completed_onboarding: false,
   bypasses_verification: false,
   started_onboarding: true
-}
+
}
@@ -523,13 +523,13 @@

to_integer(flag_struct)

Examples -
iex> my_flags = %Nostrum.Struct.Guild.Member.Flags{
+
iex> my_flags = %Nostrum.Struct.Guild.Member.Flags{
 ...>   did_rejoin: true,
 ...>   completed_onboarding: false,
 ...>   bypasses_verification: false,
 ...>   started_onboarding: true
-...> }
-iex> Nostrum.Struct.Guild.Member.Flags.to_integer(my_flags)
+...> }
+iex> Nostrum.Struct.Guild.Member.Flags.to_integer(my_flags)
 9
diff --git a/Nostrum.Struct.Guild.Member.html b/Nostrum.Struct.Guild.Member.html index 7c79e8e48..c85e814ae 100644 --- a/Nostrum.Struct.Guild.Member.html +++ b/Nostrum.Struct.Guild.Member.html @@ -14,7 +14,7 @@ - + @@ -147,13 +147,13 @@

Mentioning Members in Messages

A Nostrum.Struct.Guild.Member can be mentioned in message content using the String.Chars -protocol or mention/1.

member = %Nostrum.Struct.Guild.Member{user_id: 120571255635181568}
-Nostrum.Api.create_message!(184046599834435585, "#{member}")
-%Nostrum.Struct.Message{content: "<@120571255635181568>"}
+protocol or mention/1.

member = %Nostrum.Struct.Guild.Member{user_id: 120571255635181568}
+Nostrum.Api.create_message!(184046599834435585, "#{member}")
+%Nostrum.Struct.Message{content: "<@120571255635181568>"}
 
-member = %Nostrum.Struct.Guild.Member{user_id: 89918932789497856}
-Nostrum.Api.create_message!(280085880452939778, "#{Nostrum.Struct.Guild.Member.mention(member)}")
-%Nostrum.Struct.Message{content: "<@89918932789497856>"}
+
member = %Nostrum.Struct.Guild.Member{user_id: 89918932789497856} +Nostrum.Api.create_message!(280085880452939778, "#{Nostrum.Struct.Guild.Member.mention(member)}") +%Nostrum.Struct.Message{content: "<@89918932789497856>"}
@@ -767,12 +767,12 @@

avatar_url(member, guild_id, image_format \ Examples

-
iex> member = %Nostrum.Struct.Guild.Member{
+
iex> member = %Nostrum.Struct.Guild.Member{
 ...>   user_id: 165023948638126080,
 ...>   avatar: "4c8319db8ea745275a1399f8f8aa74ab"
-...> }
+...> }
 iex> guild_id = 1226944827137069107
-iex> Nostrum.Struct.Guild.Member.avatar_url(member, guild_id)
+iex> Nostrum.Struct.Guild.Member.avatar_url(member, guild_id)
 "https://cdn.discordapp.com/guilds/1226944827137069107/users/165023948638126080/avatars/4c8319db8ea745275a1399f8f8aa74ab.png"
@@ -813,10 +813,10 @@

guild_channel_permissions(member, guild, ch Examples

-
guild = Nostrum.Cache.GuildCache.get!(279093381723062272)
-member = Map.get(guild.members, 177888205536886784)
+
guild = Nostrum.Cache.GuildCache.get!(279093381723062272)
+member = Map.get(guild.members, 177888205536886784)
 channel_id = 381889573426429952
-Nostrum.Struct.Guild.Member.guild_channel_permissions(member, guild, channel_id)
+Nostrum.Struct.Guild.Member.guild_channel_permissions(member, guild, channel_id)
 #=> [:manage_messages]
@@ -851,9 +851,9 @@

guild_permissions(member, guild)

Examples -
guild = Nostrum.Cache.GuildCache.get!(279093381723062272)
-member = Map.get(guild.members, 177888205536886784)
-Nostrum.Struct.Guild.Member.guild_permissions(member, guild)
+
guild = Nostrum.Cache.GuildCache.get!(279093381723062272)
+member = Map.get(guild.members, 177888205536886784)
+Nostrum.Struct.Guild.Member.guild_permissions(member, guild)
 #=> [:administrator]
@@ -888,8 +888,8 @@

mention(member)

Examples -
iex> member = %Nostrum.Struct.Guild.Member{user_id: 177888205536886784}
-...> Nostrum.Struct.Guild.Member.mention(member)
+
iex> member = %Nostrum.Struct.Guild.Member{user_id: 177888205536886784}
+...> Nostrum.Struct.Guild.Member.mention(member)
 "<@177888205536886784>"
diff --git a/Nostrum.Struct.Guild.Role.html b/Nostrum.Struct.Guild.Role.html index 757f2fdd8..b869ce234 100644 --- a/Nostrum.Struct.Guild.Role.html +++ b/Nostrum.Struct.Guild.Role.html @@ -14,7 +14,7 @@ - + @@ -146,13 +146,13 @@

Mentioning Roles in Messages

A Nostrum.Struct.Guild.Role can be mentioned in message content using the String.Chars -protocol or mention/1.

role = %Nostrum.Struct.Guild.Role{id: 431886897539973131}
-Nostrum.Api.create_message!(184046599834435585, "#{role}")
-%Nostrum.Struct.Message{}
+protocol or mention/1.

role = %Nostrum.Struct.Guild.Role{id: 431886897539973131}
+Nostrum.Api.create_message!(184046599834435585, "#{role}")
+%Nostrum.Struct.Message{}
 
-role = %Nostrum.Struct.Guild.Role{id: 431884023535632398}
-Nostrum.Api.create_message!(280085880452939778, "#{Nostrum.Struct.Guild.Role.mention(role)}")
-%Nostrum.Struct.Message{}
+
role = %Nostrum.Struct.Guild.Role{id: 431884023535632398} +Nostrum.Api.create_message!(280085880452939778, "#{Nostrum.Struct.Guild.Role.mention(role)}") +%Nostrum.Struct.Message{}
@@ -672,8 +672,8 @@

mention(role)

Examples -
iex> role = %Nostrum.Struct.Guild.Role{id: 431886639627763722}
-...> Nostrum.Struct.Guild.Role.mention(role)
+
iex> role = %Nostrum.Struct.Guild.Role{id: 431886639627763722}
+...> Nostrum.Struct.Guild.Role.mention(role)
 "<@&431886639627763722>"
diff --git a/Nostrum.Struct.Guild.ScheduledEvent.EntityMetadata.html b/Nostrum.Struct.Guild.ScheduledEvent.EntityMetadata.html index 4bb358cff..348130c0b 100644 --- a/Nostrum.Struct.Guild.ScheduledEvent.EntityMetadata.html +++ b/Nostrum.Struct.Guild.ScheduledEvent.EntityMetadata.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Struct.Guild.ScheduledEvent.User.html b/Nostrum.Struct.Guild.ScheduledEvent.User.html index 9d64a9107..68011a9ec 100644 --- a/Nostrum.Struct.Guild.ScheduledEvent.User.html +++ b/Nostrum.Struct.Guild.ScheduledEvent.User.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Struct.Guild.ScheduledEvent.html b/Nostrum.Struct.Guild.ScheduledEvent.html index ebd9ebc9b..6e7b6849f 100644 --- a/Nostrum.Struct.Guild.ScheduledEvent.html +++ b/Nostrum.Struct.Guild.ScheduledEvent.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Struct.Guild.SystemChannelFlags.html b/Nostrum.Struct.Guild.SystemChannelFlags.html index 212afab01..2c706d37f 100644 --- a/Nostrum.Struct.Guild.SystemChannelFlags.html +++ b/Nostrum.Struct.Guild.SystemChannelFlags.html @@ -14,7 +14,7 @@ - + @@ -548,15 +548,15 @@

from_integer(flag_value)

Examples -
iex> Nostrum.Struct.Guild.SystemChannelFlags.from_integer(3)
-%Nostrum.Struct.Guild.SystemChannelFlags{
+
iex> Nostrum.Struct.Guild.SystemChannelFlags.from_integer(3)
+%Nostrum.Struct.Guild.SystemChannelFlags{
   suppress_guild_reminder_notifications: false,
   suppress_join_notification_replies: false,
   suppress_join_notifications: true,
   suppress_premium_subscriptions: true,
   suppress_role_subscription_purchase_notification_replies: false,
   suppress_role_subscription_purchase_notifications: false
-}
+
}
@@ -590,11 +590,11 @@

to_integer(flag_struct)

Examples -
iex> my_flags = %Nostrum.Struct.Guild.SystemChannelFlags{
+
iex> my_flags = %Nostrum.Struct.Guild.SystemChannelFlags{
 ...>               suppress_join_notifications: true,
 ...>               suppress_join_notification_replies: true
-...> }
-iex> Nostrum.Struct.Guild.SystemChannelFlags.to_integer(my_flags)
+...> }
+iex> Nostrum.Struct.Guild.SystemChannelFlags.to_integer(my_flags)
 9
diff --git a/Nostrum.Struct.Guild.UnavailableGuild.html b/Nostrum.Struct.Guild.UnavailableGuild.html index eb94347f6..c14ec6301 100644 --- a/Nostrum.Struct.Guild.UnavailableGuild.html +++ b/Nostrum.Struct.Guild.UnavailableGuild.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Struct.Guild.html b/Nostrum.Struct.Guild.html index 4f514455e..6251201df 100644 --- a/Nostrum.Struct.Guild.html +++ b/Nostrum.Struct.Guild.html @@ -14,7 +14,7 @@ - + @@ -2400,11 +2400,11 @@

banner_url(guild, image_format \\ "web Examples

-
iex> guild = %Nostrum.Struct.Guild{banner: "656477617264736e6f7764656e",
-...>                               id: 112233445566778899}
-iex> Nostrum.Struct.Guild.banner_url(guild)
+
iex> guild = %Nostrum.Struct.Guild{banner: "656477617264736e6f7764656e",
+...>                               id: 112233445566778899}
+iex> Nostrum.Struct.Guild.banner_url(guild)
 "https://cdn.discordapp.com/banners/112233445566778899/656477617264736e6f7764656e.webp"
-iex> Nostrum.Struct.Guild.banner_url(guild, "png")
+iex> Nostrum.Struct.Guild.banner_url(guild, "png")
 "https://cdn.discordapp.com/banners/112233445566778899/656477617264736e6f7764656e.png"
@@ -2441,11 +2441,11 @@

discovery_splash_url(guild, image_format \\ Examples

-
iex> guild = %Nostrum.Struct.Guild{discovery_splash: "656477617264736e6f7764656e",
-...>                               id: 112233445566778899}
-iex> Nostrum.Struct.Guild.discovery_splash_url(guild)
+
iex> guild = %Nostrum.Struct.Guild{discovery_splash: "656477617264736e6f7764656e",
+...>                               id: 112233445566778899}
+iex> Nostrum.Struct.Guild.discovery_splash_url(guild)
 "https://cdn.discordapp.com/discovery-splashes/112233445566778899/656477617264736e6f7764656e.webp"
-iex> Nostrum.Struct.Guild.discovery_splash_url(guild, "png")
+iex> Nostrum.Struct.Guild.discovery_splash_url(guild, "png")
 "https://cdn.discordapp.com/discovery-splashes/112233445566778899/656477617264736e6f7764656e.png"
@@ -2482,15 +2482,15 @@

icon_url(guild, image_format \\ "webp& Examples

-
iex> guild = %Nostrum.Struct.Guild{icon: "86e39f7ae3307e811784e2ffd11a7310",
-...>                               id: 41771983423143937}
-iex> Nostrum.Struct.Guild.icon_url(guild)
+
iex> guild = %Nostrum.Struct.Guild{icon: "86e39f7ae3307e811784e2ffd11a7310",
+...>                               id: 41771983423143937}
+iex> Nostrum.Struct.Guild.icon_url(guild)
 "https://cdn.discordapp.com/icons/41771983423143937/86e39f7ae3307e811784e2ffd11a7310.webp"
-iex> Nostrum.Struct.Guild.icon_url(guild, "png")
+iex> Nostrum.Struct.Guild.icon_url(guild, "png")
 "https://cdn.discordapp.com/icons/41771983423143937/86e39f7ae3307e811784e2ffd11a7310.png"
 
-iex> guild = %Nostrum.Struct.Guild{icon: nil}
-iex> Nostrum.Struct.Guild.icon_url(guild)
+iex> guild = %Nostrum.Struct.Guild{icon: nil}
+iex> Nostrum.Struct.Guild.icon_url(guild)
 nil
@@ -2527,15 +2527,15 @@

splash_url(guild, image_format \\ "web Examples

-
iex> guild = %Nostrum.Struct.Guild{splash: "86e39f7ae3307e811784e2ffd11a7310",
-...>                               id: 41771983423143937}
-iex> Nostrum.Struct.Guild.splash_url(guild)
+
iex> guild = %Nostrum.Struct.Guild{splash: "86e39f7ae3307e811784e2ffd11a7310",
+...>                               id: 41771983423143937}
+iex> Nostrum.Struct.Guild.splash_url(guild)
 "https://cdn.discordapp.com/splashes/41771983423143937/86e39f7ae3307e811784e2ffd11a7310.webp"
-iex> Nostrum.Struct.Guild.splash_url(guild, "png")
+iex> Nostrum.Struct.Guild.splash_url(guild, "png")
 "https://cdn.discordapp.com/splashes/41771983423143937/86e39f7ae3307e811784e2ffd11a7310.png"
 
-iex> guild = %Nostrum.Struct.Guild{splash: nil}
-iex> Nostrum.Struct.Guild.splash_url(guild)
+iex> guild = %Nostrum.Struct.Guild{splash: nil}
+iex> Nostrum.Struct.Guild.splash_url(guild)
 nil
diff --git a/Nostrum.Struct.Interaction.html b/Nostrum.Struct.Interaction.html index 667d9ce9b..6982a5cd1 100644 --- a/Nostrum.Struct.Interaction.html +++ b/Nostrum.Struct.Interaction.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Struct.Invite.html b/Nostrum.Struct.Invite.html index fe5f5abb4..3192758f6 100644 --- a/Nostrum.Struct.Invite.html +++ b/Nostrum.Struct.Invite.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Struct.Message.Activity.html b/Nostrum.Struct.Message.Activity.html index 6c67dbd8d..1d042446d 100644 --- a/Nostrum.Struct.Message.Activity.html +++ b/Nostrum.Struct.Message.Activity.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Struct.Message.Application.html b/Nostrum.Struct.Message.Application.html index f10a28511..744c988fd 100644 --- a/Nostrum.Struct.Message.Application.html +++ b/Nostrum.Struct.Message.Application.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Struct.Message.Attachment.html b/Nostrum.Struct.Message.Attachment.html index 16f11b382..60822ca2d 100644 --- a/Nostrum.Struct.Message.Attachment.html +++ b/Nostrum.Struct.Message.Attachment.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Struct.Message.Component.html b/Nostrum.Struct.Message.Component.html index f9ac4d74e..2c0bd25a9 100644 --- a/Nostrum.Struct.Message.Component.html +++ b/Nostrum.Struct.Message.Component.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Struct.Message.Poll.Answer.html b/Nostrum.Struct.Message.Poll.Answer.html index 765a836d6..f7da1e8b9 100644 --- a/Nostrum.Struct.Message.Poll.Answer.html +++ b/Nostrum.Struct.Message.Poll.Answer.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Struct.Message.Poll.MediaObject.html b/Nostrum.Struct.Message.Poll.MediaObject.html index 4be943447..eb88fc63a 100644 --- a/Nostrum.Struct.Message.Poll.MediaObject.html +++ b/Nostrum.Struct.Message.Poll.MediaObject.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Struct.Message.Poll.Results.html b/Nostrum.Struct.Message.Poll.Results.html index a418856ff..df348cbe6 100644 --- a/Nostrum.Struct.Message.Poll.Results.html +++ b/Nostrum.Struct.Message.Poll.Results.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Struct.Message.Poll.html b/Nostrum.Struct.Message.Poll.html index 3ebe38387..30ff8443b 100644 --- a/Nostrum.Struct.Message.Poll.html +++ b/Nostrum.Struct.Message.Poll.html @@ -14,7 +14,7 @@ - + @@ -584,11 +584,11 @@

create_poll(question_text, list)

Examples -
poll = Poll.create_poll("Do you enjoy pineapple on pizza?", duration: 2, allow_multiselect: false)
-        |> Poll.put_answer("Yes!", default_emoji: "\u2705") # check mark emoji
-        |> Poll.put_answer("No!", default_emoji: "\u274C") # cross emoji
+
poll = Poll.create_poll("Do you enjoy pineapple on pizza?", duration: 2, allow_multiselect: false)
+        |> Poll.put_answer("Yes!", default_emoji: "\u2705") # check mark emoji
+        |> Poll.put_answer("No!", default_emoji: "\u274C") # cross emoji
 
-Api.create_message(channel_id, poll: poll)
+
Api.create_message(channel_id, poll: poll)
diff --git a/Nostrum.Struct.Message.Reaction.html b/Nostrum.Struct.Message.Reaction.html index af7cafdbe..ca2159a05 100644 --- a/Nostrum.Struct.Message.Reaction.html +++ b/Nostrum.Struct.Message.Reaction.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Struct.Message.Reference.html b/Nostrum.Struct.Message.Reference.html index 7ee481205..a1f82eecb 100644 --- a/Nostrum.Struct.Message.Reference.html +++ b/Nostrum.Struct.Message.Reference.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Struct.Message.html b/Nostrum.Struct.Message.html index 0d75ab8a7..ac993c675 100644 --- a/Nostrum.Struct.Message.html +++ b/Nostrum.Struct.Message.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Struct.Overwrite.html b/Nostrum.Struct.Overwrite.html index cff7af190..f85bbeca6 100644 --- a/Nostrum.Struct.Overwrite.html +++ b/Nostrum.Struct.Overwrite.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Struct.Sticker.Pack.html b/Nostrum.Struct.Sticker.Pack.html index a882144aa..866cbd9f7 100644 --- a/Nostrum.Struct.Sticker.Pack.html +++ b/Nostrum.Struct.Sticker.Pack.html @@ -14,7 +14,7 @@ - + @@ -556,7 +556,7 @@

banner_url(map)

Examples -
iex> pack = %Nostrum.Struct.Sticker.Pack{banner_asset_id: 112233445566778899}
+
iex> pack = %Nostrum.Struct.Sticker.Pack{banner_asset_id: 112233445566778899}
 iex> Nostrum.Struct.Sticker.Pack.banner_url pack
 "https://cdn.discordapp.com/app-assets/710982414301790216/store/112233445566778899.png"
diff --git a/Nostrum.Struct.Sticker.html b/Nostrum.Struct.Sticker.html index 52972ed12..41558c629 100644 --- a/Nostrum.Struct.Sticker.html +++ b/Nostrum.Struct.Sticker.html @@ -14,7 +14,7 @@ - + @@ -724,9 +724,9 @@

cdn_url(map)

Examples -
iex> sticker = %Nostrum.Struct.Sticker{format_type: :gif, id: 112233445566778899}
+
iex> sticker = %Nostrum.Struct.Sticker{format_type: :gif, id: 112233445566778899}
 iex> Nostrum.Struct.Sticker.cdn_url sticker
-"https://media.discordapp.net/stickers/112233445566778899.gif"
iex> sticker = %Nostrum.Struct.Sticker{format_type: :apng, id: 998877665544332211}
+"https://media.discordapp.net/stickers/112233445566778899.gif"
iex> sticker = %Nostrum.Struct.Sticker{format_type: :apng, id: 998877665544332211}
 iex> Nostrum.Struct.Sticker.cdn_url sticker
 "https://cdn.discordapp.com/stickers/998877665544332211.png"
diff --git a/Nostrum.Struct.ThreadMember.html b/Nostrum.Struct.ThreadMember.html index 5395fb3ee..2b5f62aa3 100644 --- a/Nostrum.Struct.ThreadMember.html +++ b/Nostrum.Struct.ThreadMember.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Struct.User.Connection.html b/Nostrum.Struct.User.Connection.html index 28ec9591a..9cca4e1b9 100644 --- a/Nostrum.Struct.User.Connection.html +++ b/Nostrum.Struct.User.Connection.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Struct.User.Flags.html b/Nostrum.Struct.User.Flags.html index a48b96945..58c4a45a6 100644 --- a/Nostrum.Struct.User.Flags.html +++ b/Nostrum.Struct.User.Flags.html @@ -14,7 +14,7 @@ - + @@ -856,8 +856,8 @@

from_integer(flag_value)

Examples -
iex> Nostrum.Struct.User.Flags.from_integer(131842)
-%Nostrum.Struct.User.Flags{
+
iex> Nostrum.Struct.User.Flags.from_integer(131842)
+%Nostrum.Struct.User.Flags{
   bug_hunter_level_1: false,
   bug_hunter_level_2: false,
   early_supporter: true,
@@ -871,7 +871,7 @@ 

from_integer(flag_value)

team_user: false, verified_bot: false, verified_developer: true -}
+
}
@@ -905,7 +905,7 @@

to_integer(flag_struct)

Examples -
iex> my_flags = %Nostrum.Struct.User.Flags{
+
iex> my_flags = %Nostrum.Struct.User.Flags{
 ...>  bug_hunter_level_1: false,
 ...>  bug_hunter_level_2: false,
 ...>  early_supporter: true,
@@ -919,8 +919,8 @@ 

to_integer(flag_struct)

...> team_user: false, ...> verified_bot: false, ...> verified_developer: true -...> } -iex> Nostrum.Struct.User.Flags.to_integer(my_flags) +...> } +iex> Nostrum.Struct.User.Flags.to_integer(my_flags) 131842
diff --git a/Nostrum.Struct.User.html b/Nostrum.Struct.User.html index dd47bae44..26d2c89e2 100644 --- a/Nostrum.Struct.User.html +++ b/Nostrum.Struct.User.html @@ -14,7 +14,7 @@ - + @@ -146,13 +146,13 @@

Mentioning Users in Messages

A Nostrum.Struct.User can be mentioned in message content using the String.Chars -protocol or mention/1.

user = %Nostrum.Struct.User{id: 120571255635181568}
-Nostrum.Api.create_message!(184046599834435585, "#{user}")
-%Nostrum.Struct.Message{content: "<@120571255635181568>"}
+protocol or mention/1.

user = %Nostrum.Struct.User{id: 120571255635181568}
+Nostrum.Api.create_message!(184046599834435585, "#{user}")
+%Nostrum.Struct.Message{content: "<@120571255635181568>"}
 
-user = %Nostrum.Struct.User{id: 89918932789497856}
-Nostrum.Api.create_message!(280085880452939778, "#{Nostrum.Struct.User.mention(user)}")
-%Nostrum.Struct.Message{content: "<@89918932789497856>"}

+user = %Nostrum.Struct.User{id: 89918932789497856} +Nostrum.Api.create_message!(280085880452939778, "#{Nostrum.Struct.User.mention(user)}") +%Nostrum.Struct.Message{content: "<@89918932789497856>"}

@@ -583,22 +583,22 @@

avatar_url(user, image_format \\ "webp Examples

-
iex> user = %Nostrum.Struct.User{avatar: "8342729096ea3675442027381ff50dfe",
-...>                             id: 80351110224678912}
-iex> Nostrum.Struct.User.avatar_url(user)
+
iex> user = %Nostrum.Struct.User{avatar: "8342729096ea3675442027381ff50dfe",
+...>                             id: 80351110224678912}
+iex> Nostrum.Struct.User.avatar_url(user)
 "https://cdn.discordapp.com/avatars/80351110224678912/8342729096ea3675442027381ff50dfe.webp"
-iex> Nostrum.Struct.User.avatar_url(user, "png")
+iex> Nostrum.Struct.User.avatar_url(user, "png")
 "https://cdn.discordapp.com/avatars/80351110224678912/8342729096ea3675442027381ff50dfe.png"
 
-iex> user = %Nostrum.Struct.User{avatar: nil,
+iex> user = %Nostrum.Struct.User{avatar: nil,
 ...>                             id: 80351110224678912,
-...>                             discriminator: "0"}
-iex> Nostrum.Struct.User.avatar_url(user)
+...>                             discriminator: "0"}
+iex> Nostrum.Struct.User.avatar_url(user)
 "https://cdn.discordapp.com/embed/avatars/5.png"
 
-iex> user = %Nostrum.Struct.User{avatar: nil,
-...>                             discriminator: "1337"}
-iex> Nostrum.Struct.User.avatar_url(user)
+iex> user = %Nostrum.Struct.User{avatar: nil,
+...>                             discriminator: "1337"}
+iex> Nostrum.Struct.User.avatar_url(user)
 "https://cdn.discordapp.com/embed/avatars/2.png"
@@ -634,13 +634,13 @@

full_name(user)

Examples -
iex> user = %Nostrum.Struct.User{global_name: "TheRealJason",
+
iex> user = %Nostrum.Struct.User{global_name: "TheRealJason",
 ...>                             username: "therealjason",
-...>                             discriminator: "0"}
-iex> Nostrum.Struct.User.full_name(user)
-"TheRealJason"
iex> user = %Nostrum.Struct.User{username: "b1nzy",
-...>                             discriminator: "0852"}
-iex> Nostrum.Struct.User.full_name(user)
+...>                             discriminator: "0"}
+iex> Nostrum.Struct.User.full_name(user)
+"TheRealJason"
iex> user = %Nostrum.Struct.User{username: "b1nzy",
+...>                             discriminator: "0852"}
+iex> Nostrum.Struct.User.full_name(user)
 "b1nzy#0852"
@@ -675,8 +675,8 @@

mention(user)

Examples -
iex> user = %Nostrum.Struct.User{id: 177888205536886784}
-...> Nostrum.Struct.User.mention(user)
+
iex> user = %Nostrum.Struct.User{id: 177888205536886784}
+...> Nostrum.Struct.User.mention(user)
 "<@177888205536886784>"
diff --git a/Nostrum.Struct.VoiceRegion.html b/Nostrum.Struct.VoiceRegion.html index f609630e9..ade215326 100644 --- a/Nostrum.Struct.VoiceRegion.html +++ b/Nostrum.Struct.VoiceRegion.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Struct.VoiceWSState.html b/Nostrum.Struct.VoiceWSState.html index d0fedb0cb..2305bca85 100644 --- a/Nostrum.Struct.VoiceWSState.html +++ b/Nostrum.Struct.VoiceWSState.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Struct.WSState.html b/Nostrum.Struct.WSState.html index e221ac517..3f4723055 100644 --- a/Nostrum.Struct.WSState.html +++ b/Nostrum.Struct.WSState.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Struct.Webhook.html b/Nostrum.Struct.Webhook.html index 3ba5626ad..290732724 100644 --- a/Nostrum.Struct.Webhook.html +++ b/Nostrum.Struct.Webhook.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Token.html b/Nostrum.Token.html index b7cee1456..5621e0679 100644 --- a/Nostrum.Token.html +++ b/Nostrum.Token.html @@ -14,7 +14,7 @@ - + @@ -217,11 +217,11 @@

check_token!()

Examples
iex> token = "OTY4NTU2MzQ4MzkwMzkxODU5.G49NjP.pD8PLpKp-Xx8sr-8m1DCxSPTJZdcpcJZOExc1c"
-iex> Nostrum.Token.check_token!(token)
+iex> Nostrum.Token.check_token!(token)
 :ok
 
 iex> token = "ODY4MDcxODUzMDMyMzU3OTc4.YPqU6Q.jNJcq1daGG3otexX3c1LcxCpgpQ"
-iex> Nostrum.Token.check_token!(token)
+iex> Nostrum.Token.check_token!(token)
 :ok
diff --git a/Nostrum.Util.html b/Nostrum.Util.html index 9fdbb3add..5f65fa013 100644 --- a/Nostrum.Util.html +++ b/Nostrum.Util.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Voice.Crypto.Aes.html b/Nostrum.Voice.Crypto.Aes.html index b13e78f77..70a105a36 100644 --- a/Nostrum.Voice.Crypto.Aes.html +++ b/Nostrum.Voice.Crypto.Aes.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Voice.Crypto.Chacha.html b/Nostrum.Voice.Crypto.Chacha.html index a3b6075be..bebed29dc 100644 --- a/Nostrum.Voice.Crypto.Chacha.html +++ b/Nostrum.Voice.Crypto.Chacha.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Voice.Crypto.Salsa.html b/Nostrum.Voice.Crypto.Salsa.html index 8118dbcf1..aa96fcb4d 100644 --- a/Nostrum.Voice.Crypto.Salsa.html +++ b/Nostrum.Voice.Crypto.Salsa.html @@ -14,7 +14,7 @@ - + diff --git a/Nostrum.Voice.html b/Nostrum.Voice.html index 35460839d..733f8111c 100644 --- a/Nostrum.Voice.html +++ b/Nostrum.Voice.html @@ -14,7 +14,7 @@ - + @@ -782,10 +782,10 @@

create_ogg_bitstream(opus_packets)

and consecutive opus packets from a single source that you want written to a file, you can run the following:

bitstream =
   opus_packets
-  |> create_ogg_bitstream()
-  |> :binary.list_to_bin()
+  |> create_ogg_bitstream()
+  |> :binary.list_to_bin()
 
-File.write!("my_recording.ogg", bitstream)

When creating a logical bitstream, ensure that the packets are all from a single SSRC. +File.write!("my_recording.ogg", bitstream)

When creating a logical bitstream, ensure that the packets are all from a single SSRC. When listening in a channel with multiple speakers, you should be storing the received packets in unique buckets for each SSRC so that the multiple audio sources don't become jumbled. A single logical bitstream should represent audio data from a single speaker. @@ -793,9 +793,9 @@

create_ogg_bitstream(opus_packets)

logical bitstreams as each logical bitstream and its constituent pages contain a unique and randomly generated bitstream serial number, but this is a story for another time.

Assuming you have a list of rtp_opus/0 packets that are not separated by ssrc, you may do the following:

jumbled_packets
-|> Stream.filter(fn {{_seq, _time, ssrc}, _opus} -> ssrc == particular_ssrc end)
-|> Enum.map(fn {{_seq, _time, _ssrc}, opus} -> opus end)
-|> create_ogg_bitstream()
+
|> Stream.filter(fn {{_seq, _time, ssrc}, _opus} -> ssrc == particular_ssrc end) +|> Enum.map(fn {{_seq, _time, _ssrc}, opus} -> opus end) +|> create_ogg_bitstream()
@@ -866,14 +866,14 @@

get_channel_id(guild_id)

Examples -
iex> Nostrum.Voice.join_channel(123456789, 420691337)
+
iex> Nostrum.Voice.join_channel(123456789, 420691337)
 
-iex> Nostrum.Voice.get_channel(123456789)
+iex> Nostrum.Voice.get_channel(123456789)
 420691337
 
-iex> Nostrum.Voice.leave_channel(123456789)
+iex> Nostrum.Voice.leave_channel(123456789)
 
-iex> Nostrum.Voice.get_channel(123456789)
+iex> Nostrum.Voice.get_channel(123456789)
 nil
@@ -1148,11 +1148,11 @@

pause(guild_id)

Examples -
iex> Nostrum.Voice.join_channel(123456789, 420691337)
+
iex> Nostrum.Voice.join_channel(123456789, 420691337)
 
-iex> Nostrum.Voice.play(123456789, "~/files/twelve_hour_loop_of_waterfall_sounds.mp3")
+iex> Nostrum.Voice.play(123456789, "~/files/twelve_hour_loop_of_waterfall_sounds.mp3")
 
-iex> Nostrum.Voice.pause(123456789)
+
iex> Nostrum.Voice.pause(123456789)
@@ -1211,27 +1211,27 @@

play(guild_id, input, type \\ :url, options Examples

-
iex> Nostrum.Voice.join_channel(123456789, 420691337)
+
iex> Nostrum.Voice.join_channel(123456789, 420691337)
 
-iex> Nostrum.Voice.play(123456789, "~/music/FavoriteSong.mp3", :url)
+iex> Nostrum.Voice.play(123456789, "~/music/FavoriteSong.mp3", :url)
 
-iex> Nostrum.Voice.play(123456789, "~/music/NotFavoriteButStillGoodSong.mp3", :url, volume: 0.5)
+iex> Nostrum.Voice.play(123456789, "~/music/NotFavoriteButStillGoodSong.mp3", :url, volume: 0.5)
 
-iex> Nostrum.Voice.play(123456789, "~/music/ThisWillBeHeavilyDistorted.mp3", :url, volume: 1000)
iex> Nostrum.Voice.join_channel(123456789, 420691337)
+iex> Nostrum.Voice.play(123456789, "~/music/ThisWillBeHeavilyDistorted.mp3", :url, volume: 1000)
iex> Nostrum.Voice.join_channel(123456789, 420691337)
 
-iex> raw_data = File.read!("~/music/sound_effect.wav")
+iex> raw_data = File.read!("~/music/sound_effect.wav")
 
-iex> Nostrum.Voice.play(123456789, raw_data, :pipe)
iex> Nostrum.Voice.join_channel(123456789, 420691337)
+iex> Nostrum.Voice.play(123456789, raw_data, :pipe)
iex> Nostrum.Voice.join_channel(123456789, 420691337)
 
-iex> Nostrum.Voice.play(123456789, "https://www.youtube.com/watch?v=b4RJ-QGOtw4", :ytdl,
-...>   realtime: true, start_pos: "0:17", duration: "30")
+iex> Nostrum.Voice.play(123456789, "https://www.youtube.com/watch?v=b4RJ-QGOtw4", :ytdl,
+...>   realtime: true, start_pos: "0:17", duration: "30")
 
-iex> Nostrum.Voice.play(123456789, "https://www.youtube.com/watch?v=0ngcL_5ekXo", :ytdl,
-...>   filter: "lowpass=f=1200", filter: "highpass=f=300", filter: "asetrate=44100*0.5")
iex> Nostrum.Voice.join_channel(123456789, 420691337)
+iex> Nostrum.Voice.play(123456789, "https://www.youtube.com/watch?v=0ngcL_5ekXo", :ytdl,
+...>   filter: "lowpass=f=1200", filter: "highpass=f=300", filter: "asetrate=44100*0.5")
iex> Nostrum.Voice.join_channel(123456789, 420691337)
 
-iex> Nostrum.Voice.play(123456789, "https://www.twitch.tv/pestily", :stream)
+iex> Nostrum.Voice.play(123456789, "https://www.twitch.tv/pestily", :stream)
 
-iex> Nostrum.Voice.play(123456789, "https://youtu.be/LN4r-K8ZP5Q", :stream)
+
iex> Nostrum.Voice.play(123456789, "https://youtu.be/LN4r-K8ZP5Q", :stream)
@@ -1271,16 +1271,16 @@

playing?(guild_id)

Examples -
iex> Nostrum.Voice.join_channel(123456789, 420691337)
+
iex> Nostrum.Voice.join_channel(123456789, 420691337)
 
-iex> Nostrum.Voice.play(123456789, "https://a-real-site.biz/RickRoll.m4a")
+iex> Nostrum.Voice.play(123456789, "https://a-real-site.biz/RickRoll.m4a")
 
-iex> Nostrum.Voice.playing?(123456789)
+iex> Nostrum.Voice.playing?(123456789)
 true
 
-iex> Nostrum.Voice.pause(123456789)
+iex> Nostrum.Voice.pause(123456789)
 
-iex> Nostrum.Voice.playing?(123456789)
+iex> Nostrum.Voice.playing?(123456789)
 false
@@ -1321,14 +1321,14 @@

ready?(guild_id)

Examples -
iex> Nostrum.Voice.join_channel(123456789, 420691337)
+
iex> Nostrum.Voice.join_channel(123456789, 420691337)
 
-iex> Nostrum.Voice.ready?(123456789)
+iex> Nostrum.Voice.ready?(123456789)
 true
 
-iex> Nostrum.Voice.leave_channel(123456789)
+iex> Nostrum.Voice.leave_channel(123456789)
 
-iex> Nostrum.Voice.ready?(123456789)
+iex> Nostrum.Voice.ready?(123456789)
 false
@@ -1369,13 +1369,13 @@

resume(guild_id)

Examples -
iex> Nostrum.Voice.join_channel(123456789, 420691337)
+
iex> Nostrum.Voice.join_channel(123456789, 420691337)
 
-iex> Nostrum.Voice.play(123456789, "~/stuff/Toto - Africa (Bass Boosted)")
+iex> Nostrum.Voice.play(123456789, "~/stuff/Toto - Africa (Bass Boosted)")
 
-iex> Nostrum.Voice.pause(123456789)
+iex> Nostrum.Voice.pause(123456789)
 
-iex> Nostrum.Voice.resume(123456789)
+
iex> Nostrum.Voice.resume(123456789)
@@ -1513,11 +1513,11 @@

stop(guild_id)

Examples -
iex> Nostrum.Voice.join_channel(123456789, 420691337)
+
iex> Nostrum.Voice.join_channel(123456789, 420691337)
 
-iex> Nostrum.Voice.play(123456789, "http://brandthill.com/files/weird_dubstep_noises.mp3")
+iex> Nostrum.Voice.play(123456789, "http://brandthill.com/files/weird_dubstep_noises.mp3")
 
-iex> Nostrum.Voice.stop(123456789)
+
iex> Nostrum.Voice.stop(123456789)
diff --git a/Nostrum.epub b/Nostrum.epub index 93621b9d9..068191626 100644 Binary files a/Nostrum.epub and b/Nostrum.epub differ diff --git a/api-1.html b/api-1.html index 11c600ac5..03fbd4e4a 100644 --- a/api-1.html +++ b/api-1.html @@ -16,7 +16,7 @@ - + @@ -156,14 +156,14 @@

Sending a message

utc_now = DateTime.utc_now
-atom_count = :erlang.system_info(:atom_count)
+atom_count = :erlang.system_info(:atom_count)
 
 content = """
-UTC time is: #{DateTime.to_iso8601(utc_now)}
-Atom table size is: #{atom_count}
+UTC time is: #{DateTime.to_iso8601(utc_now)}
+Atom table size is: #{atom_count}
 """
 
-Nostrum.Api.create_message(msg.channel_id, content)

+Nostrum.Api.create_message(msg.channel_id, content)

@@ -172,75 +172,75 @@

import Nostrum.Struct.Embed
 
 embed =
-  %Nostrum.Struct.Embed{}
-  |> put_title("Craig's Cats")
-  |> put_description("nostrum")
-  |> put_url("https://google.com/")
-  |> put_timestamp("2016-05-05T21:04:13.203Z")
-  |> put_color(431_948)
-  |> put_field("Field 1", "Test")
+  %Nostrum.Struct.Embed{}
+  |> put_title("Craig's Cats")
+  |> put_description("nostrum")
+  |> put_url("https://google.com/")
+  |> put_timestamp("2016-05-05T21:04:13.203Z")
+  |> put_color(431_948)
+  |> put_field("Field 1", "Test")
   # set inline attribute to true
-  |> put_field("Field 2", "More test", true)
+  |> put_field("Field 2", "More test", true)
 
-Nostrum.Api.create_message(msg.channel_id, embeds: [embed])

You can look at the documentation in Nostrum.Struct.Embed for more advanced usage.

+Nostrum.Api.create_message(msg.channel_id, embeds: [embed])

You can look at the documentation in Nostrum.Struct.Embed for more advanced usage.

Upload an attachment

-
Nostrum.Api.create_message(
+
Nostrum.Api.create_message(
   msg.channel_id,
-  files: [
+  files: [
     # file from filesystem
     "/path/to/file.txt",
     # file from memory
-    %{body: "test file", name: "example.txt"}
-  ]
-)

+ %{body: "test file", name: "example.txt"} + ] +)

Reply to a message

-

With a mention:

Nostrum.Api.create_message(
+

With a mention:

Nostrum.Api.create_message(
     msg.channel_id,
     content: "Hello!",
-    message_reference: %{message_id: msg.id}
-)

Without a mention:

Nostrum.Api.create_message(
+    message_reference: %{message_id: msg.id}
+)

Without a mention:

Nostrum.Api.create_message(
     msg.channel_id,
     content: "Hello!",
-    message_reference: %{message_id: msg.id},
+    message_reference: %{message_id: msg.id},
     allowed_mentions: :none
-)

+)

Send a poll

-
poll = Poll.create_poll(
+
poll = Poll.create_poll(
      "Do you enjoy pineapple on pizza?",
      duration: 2,
      allow_multiselect: false
-)
-|> Poll.put_answer("Yes!", default_emoji: "\u2705")
-|> Poll.put_answer("No!", default_emoji: "\u274C")
+)
+|> Poll.put_answer("Yes!", default_emoji: "\u2705")
+|> Poll.put_answer("No!", default_emoji: "\u274C")
 
-Api.create_message(channel_id, poll: poll)

+Api.create_message(channel_id, poll: poll)

React to a message

-

Using a default emoji (unicode representation):

Nostrum.Api.create_reaction(
+

Using a default emoji (unicode representation):

Nostrum.Api.create_reaction(
     msg.channel_id,
     msg.id,
     "👾"
-)

Using a custom Discord emoji:

emoji = %Nostrum.Struct.Emoji{
+)

Using a custom Discord emoji:

emoji = %Nostrum.Struct.Emoji{
       name: "emojiname",
       id: 1228698654022434866
-}
+}
 
-Nostrum.Api.create_reaction(msg.channel_id, msg.id, emoji)

+Nostrum.Api.create_reaction(msg.channel_id, msg.id, emoji)

@@ -252,11 +252,11 @@

Update the bot status

-
Nostrum.Api.update_status(
+
Nostrum.Api.update_status(
     :dnd,
     "craigs cats",
     3 # Watching status
-)

You can also update a single shard with Nostrum.Api.update_shard_status/5.

+)

You can also update a single shard with Nostrum.Api.update_shard_status/5.

@@ -264,11 +264,11 @@

image = "data:image/png;base64,..."
 
-Nostrum.Api.create_guild_emoji(
+Nostrum.Api.create_guild_emoji(
     msg.guild_id,
     name: "nostrum",
     image: image
-)
+
)
diff --git a/api-4.html b/api-4.html index d48123afe..935ec2342 100644 --- a/api-4.html +++ b/api-4.html @@ -14,7 +14,7 @@ - + @@ -147,15 +147,15 @@

A lot of methods have a banged version of themselves. This is a common Elixir idiom hailing from Elixir's style of failing fast.

By default, the API method will return a tuple like one of the following:

# Success
-{:ok, msg} = Nostrum.Api.create_message(179679229036724225, "456")
+{:ok, msg} = Nostrum.Api.create_message(179679229036724225, "456")
 
 # Failure
-{:error, reason} = Nostrum.Api.create_message(123, "eat my shorts api")

A banged method, instead of returning an error tuple, will throw an error. If +{:error, reason} = Nostrum.Api.create_message(123, "eat my shorts api")

A banged method, instead of returning an error tuple, will throw an error. If successful, it will directly return the response with no :ok tuple.

# Success
-msg = Nostrum.Api.create_message!(179679229036724225, "456")
+msg = Nostrum.Api.create_message!(179679229036724225, "456")
 
 # Failure - Throws an error
-Nostrum.Api.create_message!(123, "eat my shorts api")

+Nostrum.Api.create_message!(123, "eat my shorts api")

diff --git a/api-reference.html b/api-reference.html index af299a284..2ca4b934b 100644 --- a/api-reference.html +++ b/api-reference.html @@ -14,7 +14,7 @@ - + @@ -776,6 +776,33 @@

Helpers for dealing with Button Components

+ +
+ + +

Channel Select

+ +
+
+ + +

Default Value

+ +
+
+ + +

Mentionable Select

+
@@ -785,6 +812,15 @@

Component Options

+

+
+ + +

Role Select

+
@@ -803,6 +839,15 @@

Text Input.

+

+
+ + +

User Select

+
diff --git a/application_commands.html b/application_commands.html index 4384bb013..f9ee0158b 100644 --- a/application_commands.html +++ b/application_commands.html @@ -14,7 +14,7 @@ - + @@ -158,37 +158,37 @@

is in within an hour. Guild-specific commands slash commands will be available instantly, which is why we will use guild-specific commands for testing.

We will create a command that will allow the user to assign or remove a role of choice. The guild_id parameter is the ID of the guild on which the command -will be created.

Our command definition looks as follows:

command = %{
+will be created.

Our command definition looks as follows:

command = %{
   name: "role",
   description: "assign or remove a role",
-  options: [
-    %{
+  options: [
+    %{
       # ApplicationCommandType::ROLE
       type: 8,
       name: "name",
       description: "role to assign or remove",
       required: true
-    },
-    %{
+    },
+    %{
       # ApplicationCommandType::STRING
       type: 3,
       name: "action",
       description: "whether to assign or remove the role",
       required: true,
-      choices: [
-        %{
+      choices: [
+        %{
           name: "assign",
           value: "assign"
-        },
-        %{
+        },
+        %{
           name: "remove",
           value: "remove"
-        }
-      ]
-    }
-  ]
-}

To register this command on the guild, we simply pass it to -Nostrum.Api.create_guild_application_command/2:

Nostrum.Api.create_guild_application_command(guild_id, command)

You can register the command in the :READY gateway event handler.

+ } + ] + } + ] +}

To register this command on the guild, we simply pass it to +Nostrum.Api.create_guild_application_command/2:

Nostrum.Api.create_guild_application_command(guild_id, command)

You can register the command in the :READY gateway event handler.

@@ -197,46 +197,46 @@

Set up a gateway event handler for :INTERACTION_CREATE. On command invocation the interaction payload will look something like the following:

%Nostrum.Struct.Interaction{
   channel_id: 474025345243414539,
-  data: %{
+  data: %{
     id: 793152718839087135,
     name: "role",
-    options: [
-      %{name: "name", value: "458692275199803406"},
-      %{name: "action", value: "assign"}
-    ]
-  },
+    options: [
+      %{name: "name", value: "458692275199803406"},
+      %{name: "action", value: "assign"}
+    ]
+  },
   # ...

Note that Discord already converted the user-supplied role to a snowflake. Convenient!

Let's match on the retrieved event and create two function heads for the separate operation modes:

alias Nostrum.Api
 alias Nostrum.Struct.Interaction
 
-defp manage_role(%Interaction{data: %{options: [%{value: role_id}, %{value: "assign"}]}} = interaction) do
-  Api.add_guild_member_role(interaction.guild_id, interaction.member.user_id, role_id)
-end
+defp manage_role(%Interaction{data: %{options: [%{value: role_id}, %{value: "assign"}]}} = interaction) do
+  Api.add_guild_member_role(interaction.guild_id, interaction.member.user_id, role_id)
+end
 
-defp manage_role(%Interaction{data: %{options: [%{value: role_id}, %{value: "remove"}]}} = interaction) do
-  Api.remove_guild_member_role(interaction.guild_id, interaction.member.user_id, role_id)
-end
+defp manage_role(%Interaction{data: %{options: [%{value: role_id}, %{value: "remove"}]}} = interaction) do
+  Api.remove_guild_member_role(interaction.guild_id, interaction.member.user_id, role_id)
+end
 
-def handle_event({:INTERACTION_CREATE, %Interaction{data: %{name: "role"}} = interaction, _ws_state}) do
-  manage_role(interaction)
-end

Okay, we now have our handling code done. This is pretty much the same code +def handle_event({:INTERACTION_CREATE, %Interaction{data: %{name: "role"}} = interaction, _ws_state}) do + manage_role(interaction) +end

Okay, we now have our handling code done. This is pretty much the same code that you would use for regular commands.

Responding to interactions

-

To respond to interactions, use Nostrum.Api.create_interaction_response/2:

defp manage_role(%Interaction{data: %{options: [%{value: role_id}, %{value: "assign"}]}} = interaction) do
-  Api.add_guild_member_role(interaction.guild_id, interaction.member.user_id, role_id)
-  response = %{
+

To respond to interactions, use Nostrum.Api.create_interaction_response/2:

defp manage_role(%Interaction{data: %{options: [%{value: role_id}, %{value: "assign"}]}} = interaction) do
+  Api.add_guild_member_role(interaction.guild_id, interaction.member.user_id, role_id)
+  response = %{
     type: 4,  # ChannelMessageWithSource
-    data: %{
+    data: %{
       content: "role assigned"
-    }
-  }
-  Api.create_interaction_response(interaction, response)
-end

We have now built a simple command using slash commands, with argument + } + } + Api.create_interaction_response(interaction, response) +end

We have now built a simple command using slash commands, with argument conversion delegated to Discords side of things. Further actions on the command, such as checking permissions, author roles, and more - are left as an exercise to the reader.

diff --git a/dist/search_data-18DEF2BE.js b/dist/search_data-18DEF2BE.js deleted file mode 100644 index d40a73f1d..000000000 --- a/dist/search_data-18DEF2BE.js +++ /dev/null @@ -1 +0,0 @@ -searchData={"items":[{"type":"task","title":"mix gh.docs","doc":"Task that pushes docs to gh-pages branch on Discord.","ref":"Mix.Tasks.Gh.Docs.html"},{"type":"function","title":"Mix.Tasks.Gh.Docs.run/1","doc":"","ref":"Mix.Tasks.Gh.Docs.html#run/1"},{"type":"module","title":"Nostrum.Api","doc":"Interface for Discord's rest API.\n\nBy default all methods in this module are ran synchronously. If you wish to\nhave async rest operations I recommend you execute these functions inside of a\ntask.\n\n**Examples**\n```elixir\n# Async Task\nt = Task.async fn ->\n Nostrum.Api.get_channel_messages(12345678912345, :infinity, {})\nend\nmessages = Task.await t\n\n# A lot of times we don't care about the return value of the function\nTask.start fn ->\n messages = [\"in\", \"the\", \"end\", \"it\", \"doesn't\", \"even\", \"matter\"]\n Enum.each messages, &Nostrum.Api.create_message!(12345678912345, &1)\nend\n```\n\n#### A note about Strings and Ints\nCurrently, responses from the REST api will have `id` fields as `string`.\nEverything received from the WS connection will have `id` fields as `int`.\n\nIf you're processing a response from the API and trying to access something in the cache\nbased off of an `id` in the response, you will need to convert it to an `int` using\n`String.to_integer/1`. I'm open to suggestions for how this should be handled going forward.\n\n**Example**\n```elixir\nmessages = Nostrum.Api.get_pinned_messages!(12345678912345)\n\nauthors =\n Enum.map messages, fn msg ->\n author_id = String.to_integer(msg.author.id)\n Nostrum.Cache.User.get!(id: author_id)\n end\n```","ref":"Nostrum.Api.html"},{"type":"function","title":"Nostrum.Api.add_guild_member/3","doc":"Puts a user in a guild.\n\nThis endpoint fires the `t:Nostrum.Consumer.guild_member_add/0` event.\nIt requires the `CREATE_INSTANT_INVITE` permission. Additionally, it\nsituationally requires the `MANAGE_NICKNAMES`, `MANAGE_ROLES`,\n`MUTE_MEMBERS`, and `DEAFEN_MEMBERS` permissions.\n\nIf successful, returns `{:ok, member}` or `{:ok}` if the user was already a member of the\nguild. Otherwise, returns a `t:Nostrum.Api.error/0`.","ref":"Nostrum.Api.html#add_guild_member/3"},{"type":"function","title":"Options - Nostrum.Api.add_guild_member/3","doc":"* `:access_token` (string) - the user's oauth2 access token\n * `:nick` (string) - value to set users nickname to\n * `:roles` (list of `t:Nostrum.Struct.Guild.Role.id/0`) - array of role ids the member is assigned\n * `:mute` (boolean) - if the user is muted\n * `:deaf` (boolean) - if the user is deafened\n\n`:access_token` is always required.","ref":"Nostrum.Api.html#add_guild_member/3-options"},{"type":"function","title":"Examples - Nostrum.Api.add_guild_member/3","doc":"```elixir\nNostrum.Api.add_guild_member(\n 41771983423143937,\n 18374719829378473,\n access_token: \"6qrZcUqja7812RVdnEKjpzOL4CvHBFG\",\n nick: \"nostrum\",\n roles: [431849301, 913809431]\n)\n```","ref":"Nostrum.Api.html#add_guild_member/3-examples"},{"type":"function","title":"Nostrum.Api.add_guild_member!/3","doc":"Same as `add_guild_member/3`, but raises `Nostrum.Error.ApiError` in case of failure.","ref":"Nostrum.Api.html#add_guild_member!/3"},{"type":"function","title":"Nostrum.Api.add_guild_member_role/4","doc":"Adds a role to a member.\n\nRole to add is specified by `role_id`.\nUser to add role to is specified by `guild_id` and `user_id`.\nAn optional `reason` can be given for the audit log.","ref":"Nostrum.Api.html#add_guild_member_role/4"},{"type":"function","title":"Nostrum.Api.add_pinned_channel_message/2","doc":"Pins a message in a channel.\n\nThis endpoint requires the 'VIEW_CHANNEL', 'READ_MESSAGE_HISTORY', and\n'MANAGE_MESSAGES' permissions. It fires the\n`t:Nostrum.Consumer.message_update/0` and\n`t:Nostrum.Consumer.channel_pins_update/0` events.\n\nIf successful, returns `{:ok}`. Otherwise, returns a `t:Nostrum.Api.error/0`.","ref":"Nostrum.Api.html#add_pinned_channel_message/2"},{"type":"function","title":"Examples - Nostrum.Api.add_pinned_channel_message/2","doc":"```elixir\nNostrum.Api.add_pinned_channel_message(43189401384091, 18743893102394)\n```","ref":"Nostrum.Api.html#add_pinned_channel_message/2-examples"},{"type":"function","title":"Nostrum.Api.add_pinned_channel_message!/2","doc":"Same as `add_pinned_channel_message/2`, but raises `Nostrum.Error.ApiError` in case of failure.","ref":"Nostrum.Api.html#add_pinned_channel_message!/2"},{"type":"function","title":"Nostrum.Api.add_thread_member/2","doc":"Add a user to a thread, requires the ability to send messages in the thread.","ref":"Nostrum.Api.html#add_thread_member/2"},{"type":"function","title":"Nostrum.Api.batch_edit_application_command_permissions/3","doc":"Edits command permissions for a specific command for your application in a guild. You can only add up to 10 permission overwrites for a command.","ref":"Nostrum.Api.html#batch_edit_application_command_permissions/3"},{"type":"function","title":"Parameters - Nostrum.Api.batch_edit_application_command_permissions/3","doc":"- `application_id`: Application ID commands are registered under.\n If not given, this will be fetched from `Me`.\n- `guild_id`: Guild ID to fetch command permissions from.\n- `command_id`: Command ID to fetch permissions for.\n- `permissions`: List of partial [guild application command permissions](hhttps://discord.com/developers/docs/interactions/application-commands#application-command-permissions-object-guild-application-command-permissions-structure) with `id` and `permissions`. You can add up to 10 overwrites per command.","ref":"Nostrum.Api.html#batch_edit_application_command_permissions/3-parameters"},{"type":"function","title":"Return value - Nostrum.Api.batch_edit_application_command_permissions/3","doc":"This method returns a guild application command permission object, see all available values on the [Discord API docs](https://discord.com/developers/docs/interactions/application-commands#application-command-permissions-object-guild-application-command-permissions-structure).","ref":"Nostrum.Api.html#batch_edit_application_command_permissions/3-return-value"},{"type":"function","title":"Nostrum.Api.begin_guild_prune/3","doc":"Begins a guild prune to prune members within `days`.\n\nAn optional `reason` can be provided for the guild audit log.\n\nThis endpoint requires the `KICK_MEMBERS` permission. It fires multiple\n`t:Nostrum.Consumer.guild_member_remove/0` events.\n\nIf successful, returns `{:ok, %{pruned: pruned}}`. Otherwise, returns a `t:Nostrum.Api.error/0`.","ref":"Nostrum.Api.html#begin_guild_prune/3"},{"type":"function","title":"Examples - Nostrum.Api.begin_guild_prune/3","doc":"```elixir\nNostrum.Api.begin_guild_prune(81384788765712384, 1)\n{:ok, %{pruned: 0}}\n```","ref":"Nostrum.Api.html#begin_guild_prune/3-examples"},{"type":"function","title":"Nostrum.Api.begin_guild_prune!/3","doc":"Same as `begin_guild_prune/2`, but raises `Nostrum.Error.ApiError` in case of failure.","ref":"Nostrum.Api.html#begin_guild_prune!/3"},{"type":"function","title":"Nostrum.Api.bulk_delete_messages/3","doc":"Deletes multiple messages from a channel.\n\n`messages` is a list of `Nostrum.Struct.Message.id` that you wish to delete.\nWhen given more than 100 messages, this function will chunk the given message\nlist into blocks of 100 and send them off to the API. It will stop deleting\non the first error that occurs. Keep in mind that deleting thousands of\nmessages will take a pretty long time and it may be proper to just delete\nthe channel you want to bulk delete in and recreate it.\n\nThis method can only delete messages sent within the last two weeks.\n`Filter` is an optional parameter that specifies whether messages sent over\ntwo weeks ago should be filtered out; defaults to `true`.","ref":"Nostrum.Api.html#bulk_delete_messages/3"},{"type":"function","title":"Nostrum.Api.bulk_delete_messages!/3","doc":"Same as `bulk_delete_messages/2`, but raises `Nostrum.Error.ApiError` in case of failure.","ref":"Nostrum.Api.html#bulk_delete_messages!/3"},{"type":"function","title":"Nostrum.Api.bulk_overwrite_global_application_commands/2","doc":"Overwrite the existing global application commands.\n\nThis action will:\n- Create any command that was provided and did not already exist\n- Update any command that was provided and already existed if its configuration changed\n- Delete any command that was not provided but existed on Discord's end\n\nUpdates will be available in all guilds after 1 hour.\nCommands that do not already exist will count toward daily application command create limits.","ref":"Nostrum.Api.html#bulk_overwrite_global_application_commands/2"},{"type":"function","title":"Parameters - Nostrum.Api.bulk_overwrite_global_application_commands/2","doc":"- `application_id`: Application ID for which to overwrite the commands.\n If not given, this will be fetched from `Me`.\n- `commands`: List of command configurations, see the linked API documentation for reference.","ref":"Nostrum.Api.html#bulk_overwrite_global_application_commands/2-parameters"},{"type":"function","title":"Return value - Nostrum.Api.bulk_overwrite_global_application_commands/2","doc":"Updated list of global application commands. See the official reference:\nhttps://discord.com/developers/docs/interactions/application-commands#bulk-overwrite-global-application-commands","ref":"Nostrum.Api.html#bulk_overwrite_global_application_commands/2-return-value"},{"type":"function","title":"Nostrum.Api.bulk_overwrite_guild_application_commands/3","doc":"Overwrite the existing guild application commands on the specified guild.\n\nThis action will:\n- Create any command that was provided and did not already exist\n- Update any command that was provided and already existed if its configuration changed\n- Delete any command that was not provided but existed on Discord's end","ref":"Nostrum.Api.html#bulk_overwrite_guild_application_commands/3"},{"type":"function","title":"Parameters - Nostrum.Api.bulk_overwrite_guild_application_commands/3","doc":"- `application_id`: Application ID for which to overwrite the commands.\n If not given, this will be fetched from `Me`.\n- `guild_id`: Guild on which to overwrite the commands.\n- `commands`: List of command configurations, see the linked API documentation for reference.","ref":"Nostrum.Api.html#bulk_overwrite_guild_application_commands/3-parameters"},{"type":"function","title":"Return value - Nostrum.Api.bulk_overwrite_guild_application_commands/3","doc":"Updated list of guild application commands. See the official reference:\nhttps://discord.com/developers/docs/interactions/application-commands#bulk-overwrite-guild-application-commands","ref":"Nostrum.Api.html#bulk_overwrite_guild_application_commands/3-return-value"},{"type":"function","title":"Nostrum.Api.create_channel_invite/3","doc":"Creates an invite for a guild channel.\n\nAn optional `reason` can be provided for the audit log.\n\nThis endpoint requires the `CREATE_INSTANT_INVITE` permission.\n\nIf successful, returns `{:ok, invite}`. Otherwise, returns a `t:Nostrum.Api.error/0`.","ref":"Nostrum.Api.html#create_channel_invite/3"},{"type":"function","title":"Options - Nostrum.Api.create_channel_invite/3","doc":"* `:max_age` (integer) - duration of invite in seconds before expiry, or 0 for never.\n (default: `86400`)\n * `:max_uses` (integer) - max number of uses or 0 for unlimited.\n (default: `0`)\n * `:temporary` (boolean) - Whether the invite should grant temporary\n membership. (default: `false`)\n * `:unique` (boolean) - used when creating unique one time use invites.\n (default: `false`)","ref":"Nostrum.Api.html#create_channel_invite/3-options"},{"type":"function","title":"Examples - Nostrum.Api.create_channel_invite/3","doc":"```elixir\nNostrum.Api.create_channel_invite(41771983423143933)\n{:ok, Nostrum.Struct.Invite{}}\n\nNostrum.Api.create_channel_invite(41771983423143933, max_uses: 20)\n{:ok, %Nostrum.Struct.Invite{}}\n```","ref":"Nostrum.Api.html#create_channel_invite/3-examples"},{"type":"function","title":"Nostrum.Api.create_channel_invite!/3","doc":"Same as `create_channel_invite/2`, but raises `Nostrum.Error.ApiError` in case of failure.","ref":"Nostrum.Api.html#create_channel_invite!/3"},{"type":"function","title":"Nostrum.Api.create_dm/1","doc":"Create a new DM channel with a user.\n\nIf successful, returns `{:ok, dm_channel}`. Otherwise, returns a `t:Nostrum.Api.error/0`.","ref":"Nostrum.Api.html#create_dm/1"},{"type":"function","title":"Examples - Nostrum.Api.create_dm/1","doc":"```elixir\nNostrum.Api.create_dm(150061853001777154)\n{:ok, %Nostrum.Struct.Channel{type: 1}}\n```","ref":"Nostrum.Api.html#create_dm/1-examples"},{"type":"function","title":"Nostrum.Api.create_dm!/1","doc":"Same as `create_dm/1`, but raises `Nostrum.Error.ApiError` in case of failure.","ref":"Nostrum.Api.html#create_dm!/1"},{"type":"function","title":"Nostrum.Api.create_followup_message/3","doc":"Create a followup message for an interaction.\n\nDelegates to ``execute_webhook/3``, see the function for more details.","ref":"Nostrum.Api.html#create_followup_message/3"},{"type":"function","title":"Nostrum.Api.create_followup_message!/3","doc":"Same as `create_followup_message/3`, but raises `Nostrum.Error.ApiError` in case of failure.","ref":"Nostrum.Api.html#create_followup_message!/3"},{"type":"function","title":"Nostrum.Api.create_global_application_command/2","doc":"Create a new global application command.\n\nThe new command will be available on all guilds in around an hour.\nIf you want to test commands, use `create_guild_application_command/2` instead,\nas commands will become available instantly there.\nIf an existing command with the same name exists, it will be overwritten.","ref":"Nostrum.Api.html#create_global_application_command/2"},{"type":"function","title":"Parameters - Nostrum.Api.create_global_application_command/2","doc":"- `application_id`: Application ID for which to create the command.\n If not given, this will be fetched from `Me`.\n- `command`: Command configuration, see the linked API documentation for reference.","ref":"Nostrum.Api.html#create_global_application_command/2-parameters"},{"type":"function","title":"Return value - Nostrum.Api.create_global_application_command/2","doc":"The created command. See the official reference:\nhttps://discord.com/developers/docs/interactions/application-commands#create-global-application-command","ref":"Nostrum.Api.html#create_global_application_command/2-return-value"},{"type":"function","title":"Example - Nostrum.Api.create_global_application_command/2","doc":"```elixir\nNostrum.Api.create_global_application_command(\n %{name: \"edit\", description: \"ed, man! man, ed\", options: []}\n)\n```","ref":"Nostrum.Api.html#create_global_application_command/2-example"},{"type":"function","title":"Nostrum.Api.create_group_dm/2","doc":"Creates a new group DM channel.\n\nIf successful, returns `{:ok, group_dm_channel}`. Otherwise, returns a `t:Nostrum.Api.error/0`.\n\n`access_tokens` are user oauth2 tokens. `nicks` is a map that maps a user id\nto a nickname.","ref":"Nostrum.Api.html#create_group_dm/2"},{"type":"function","title":"Examples - Nostrum.Api.create_group_dm/2","doc":"```elixir\nNostrum.Api.create_group_dm([\"6qrZcUqja7812RVdnEKjpzOL4CvHBFG\"], %{41771983423143937 => \"My Nickname\"})\n{:ok, %Nostrum.Struct.Channel{type: 3}}\n```","ref":"Nostrum.Api.html#create_group_dm/2-examples"},{"type":"function","title":"Nostrum.Api.create_group_dm!/2","doc":"Same as `create_group_dm/2`, but raises `Nostrum.Error.ApiError` in case of failure.","ref":"Nostrum.Api.html#create_group_dm!/2"},{"type":"function","title":"Nostrum.Api.create_guild_application_command/3","doc":"Create a guild application command on the specified guild.\n\nThe new command will be available immediately.","ref":"Nostrum.Api.html#create_guild_application_command/3"},{"type":"function","title":"Parameters - Nostrum.Api.create_guild_application_command/3","doc":"- `application_id`: Application ID for which to create the command.\n If not given, this will be fetched from `Me`.\n- `guild_id`: Guild on which to create the command.\n- `command`: Command configuration, see the linked API documentation for reference.","ref":"Nostrum.Api.html#create_guild_application_command/3-parameters"},{"type":"function","title":"Return value - Nostrum.Api.create_guild_application_command/3","doc":"The created command. See the official reference:\nhttps://discord.com/developers/docs/interactions/application-commands#create-guild-application-command","ref":"Nostrum.Api.html#create_guild_application_command/3-return-value"},{"type":"function","title":"Nostrum.Api.create_guild_auto_moderation_rule/2","doc":"Create a new auto-moderation rule for a guild.","ref":"Nostrum.Api.html#create_guild_auto_moderation_rule/2"},{"type":"function","title":"Options - Nostrum.Api.create_guild_auto_moderation_rule/2","doc":"* `:name` (`t:String.t/0`) - The name of the rule.\n * `:event_type` (`t:AutoModerationRule.event_type/0`) - The type of event that triggers the rule.\n * `:trigger_type` (`t:AutoModerationRule.trigger_type/0`) - The type of content that triggers the rule.\n * `:trigger_metadata` (`t:AutoModerationRule.trigger_metadata/0`) - The metadata associated with the rule trigger.\n - optional, based on the `:trigger_type`.\n * `:actions` (`t:AutoModerationRule.actions/0`) - The actions to take when the rule is triggered.\n * `:enabled` (`t:AutoModerationRule.enabled/0`) - Whether the rule is enabled or not.\n - optional, defaults to `false`.\n * `:exempt_roles` - (`t:AutoModerationRule.exempt_roles/0`) - A list of role id's that are exempt from the rule.\n - optional, defaults to `[]`, maximum of 20.\n * `:exempt_channels` - (`t:AutoModerationRule.exempt_channels/0`) - A list of channel id's that are exempt from the rule.\n - optional, defaults to `[]`, maximum of 50.","ref":"Nostrum.Api.html#create_guild_auto_moderation_rule/2-options"},{"type":"function","title":"Nostrum.Api.create_guild_ban/4","doc":"Bans a user from a guild.\n\nUser to delete is specified by `guild_id` and `user_id`.\nAn optional `reason` can be specified for the audit log.","ref":"Nostrum.Api.html#create_guild_ban/4"},{"type":"function","title":"Nostrum.Api.create_guild_channel/2","doc":"Creates a channel for a guild.\n\nThis endpoint requires the `MANAGE_CHANNELS` permission. It fires a\n`t:Nostrum.Consumer.channel_create/0` event.\n\nIf successful, returns `{:ok, channel}`. Otherwise, returns a `t:Nostrum.Api.error/0`.","ref":"Nostrum.Api.html#create_guild_channel/2"},{"type":"function","title":"Options - Nostrum.Api.create_guild_channel/2","doc":"* `:name` (string) - channel name (2-100 characters)\n * `:type` (integer) - the type of channel (See `Nostrum.Struct.Channel`)\n * `:topic` (string) - channel topic (0-1024 characters)\n * `:bitrate` (integer) - the bitrate (in bits) of the voice channel (voice only)\n * `:user_limit` (integer) - the user limit of the voice channel (voice only)\n * `:permission_overwrites` (list of `t:Nostrum.Struct.Overwrite.t/0` or equivalent map) -\n the channel's permission overwrites\n * `:parent_id` (`t:Nostrum.Struct.Channel.id/0`) - id of the parent category for a channel\n * `:nsfw` (boolean) - if the channel is nsfw\n\n`:name` is always required.","ref":"Nostrum.Api.html#create_guild_channel/2-options"},{"type":"function","title":"Examples - Nostrum.Api.create_guild_channel/2","doc":"```elixir\nNostrum.Api.create_guild_channel(81384788765712384, name: \"elixir-nostrum\", topic: \"craig's domain\")\n{:ok, %Nostrum.Struct.Channel{guild_id: 81384788765712384}}\n```","ref":"Nostrum.Api.html#create_guild_channel/2-examples"},{"type":"function","title":"Nostrum.Api.create_guild_channel!/2","doc":"Same as `create_guild_channel/2`, but raises `Nostrum.Error.ApiError` in case of failure.","ref":"Nostrum.Api.html#create_guild_channel!/2"},{"type":"function","title":"Nostrum.Api.create_guild_emoji/3","doc":"Creates a new emoji for the given guild.\n\nThis endpoint requires the `MANAGE_EMOJIS` permission. It fires a\n`t:Nostrum.Consumer.guild_emojis_update/0` event.\n\nAn optional `reason` can be provided for the audit log.\n\nIf successful, returns `{:ok, emoji}`. Otherwise, returns `t:Nostrum.Api.error/0`.","ref":"Nostrum.Api.html#create_guild_emoji/3"},{"type":"function","title":"Options - Nostrum.Api.create_guild_emoji/3","doc":"* `:name` (string) - name of the emoji\n * `:image` (base64 data URI) - the 128x128 emoji image. Maximum size of 256kb\n * `:roles` (list of `t:Nostrum.Snowflake.t/0`) - roles for which this emoji will be whitelisted\n (default: [])\n\n`:name` and `:image` are always required.","ref":"Nostrum.Api.html#create_guild_emoji/3-options"},{"type":"function","title":"Examples - Nostrum.Api.create_guild_emoji/3","doc":"```elixir\nimage = \"data:image/png;base64,YXl5IGJieSB1IGx1a2luIDQgc3VtIGZ1az8=\"\n\nNostrum.Api.create_guild_emoji(43189401384091, name: \"nostrum\", image: image, roles: [])\n```","ref":"Nostrum.Api.html#create_guild_emoji/3-examples"},{"type":"function","title":"Nostrum.Api.create_guild_emoji!/3","doc":"Same as `create_guild_emoji/2`, but raises `Nostrum.Error.ApiError` in case of failure.","ref":"Nostrum.Api.html#create_guild_emoji!/3"},{"type":"function","title":"Nostrum.Api.create_guild_integrations/2","doc":"Creates a new guild integeration.\n\nGuild to create integration with is specified by `guild_id`.\n\n`options` is a map with the following requires keys:\n * `type` - Integration type.\n * `id` - Integeration id.","ref":"Nostrum.Api.html#create_guild_integrations/2"},{"type":"function","title":"Nostrum.Api.create_guild_role/3","doc":"Creates a guild role.\n\nAn optional reason for the audit log can be provided via `reason`.\n\nThis endpoint requires the `MANAGE_ROLES` permission. It fires a\n`t:Nostrum.Consumer.guild_role_create/0` event.\n\nIf successful, returns `{:ok, role}`. Otherwise, returns a `t:Nostrum.Api.error/0`.","ref":"Nostrum.Api.html#create_guild_role/3"},{"type":"function","title":"Options - Nostrum.Api.create_guild_role/3","doc":"* `:name` (string) - name of the role (default: \"new role\")\n * `:permissions` (integer) - bitwise of the enabled/disabled permissions (default: @everyone perms)\n * `:color` (integer) - RGB color value (default: 0)\n * `:hoist` (boolean) - whether the role should be displayed separately in the sidebar (default: false)\n * `:mentionable` (boolean) - whether the role should be mentionable (default: false)\n * `:icon` (string) - URL role icon (default: `nil`)\n * `:unicode_emoji` (string) - standard unicode character emoji role icon (default: `nil`)","ref":"Nostrum.Api.html#create_guild_role/3-options"},{"type":"function","title":"Examples - Nostrum.Api.create_guild_role/3","doc":"```elixir\nNostrum.Api.create_guild_role(41771983423143937, name: \"nostrum-club\", hoist: true)\n```","ref":"Nostrum.Api.html#create_guild_role/3-examples"},{"type":"function","title":"Nostrum.Api.create_guild_role!/3","doc":"Same as `create_guild_role/2`, but raises `Nostrum.Error.ApiError` in case of failure.","ref":"Nostrum.Api.html#create_guild_role!/3"},{"type":"function","title":"Nostrum.Api.create_guild_scheduled_event/3","doc":"Creates a new scheduled event for the guild.","ref":"Nostrum.Api.html#create_guild_scheduled_event/3"},{"type":"function","title":"Options - Nostrum.Api.create_guild_scheduled_event/3","doc":"* `:channel_id` - (`t:Nostrum.Snowflake.t/0`) optional channel id for the event\n * `:entity_metadata` - (`t:Nostrum.Struct.Guild.ScheduledEvent.EntityMetadata.t/0`) metadata for the event\n * `:name` - (string) required name for the event\n * `:privacy_level` - (integer) at the time of writing, this must always be 2 for `GUILD_ONLY`\n * `:scheduled_start_time` - required time for the event to start as a `DateTime` or (ISO8601 timestamp)[`DateTime.to_iso8601/3`]\n * `:scheduled_end_time` - optional time for the event to end as a `DateTime` or (ISO8601 timestamp)[`DateTime.to_iso8601/3`]\n * `:description` - (string) optional description for the event\n * `:entity_type` - (integer) an integer representing the type of entity the event is for\n * `1` - `STAGE_INSTANCE`\n * `2` - `VOICE`\n * `3` - `EXTERNAL`\n\nSee the (official documentation)[https://discord.com/developers/docs/resources/guild-scheduled-event] for more information.\n\n\nAn optional `reason` can be specified for the audit log.","ref":"Nostrum.Api.html#create_guild_scheduled_event/3-options"},{"type":"function","title":"Nostrum.Api.create_guild_sticker/6","doc":"Create a sticker in a guild.\n\nEvery guild has five free sticker slots by default, and each Boost level will\ngrant access to more slots.\n\nUploaded stickers are constrained to 5 seconds in length for animated stickers, and 320 x 320 pixels.\n\nStickers in the [Lottie file format](https://airbnb.design/lottie/) can only\nbe uploaded on guilds that have either the `VERIFIED` and/or the `PARTNERED`\nguild feature.","ref":"Nostrum.Api.html#create_guild_sticker/6"},{"type":"function","title":"Parameters - Nostrum.Api.create_guild_sticker/6","doc":"- `name`: Name of the sticker (2-30 characters)\n- `description`: Description of the sticker (2-100 characters)\n- `tags`: Autocomplete/suggestion tags for the sticker (max 200 characters)\n- `file`: A path to a file to upload or a map of `name` (file name) and `body` (file data).\n- `reason` (optional): audit log reason to attach to this event","ref":"Nostrum.Api.html#create_guild_sticker/6-parameters"},{"type":"function","title":"Returns - Nostrum.Api.create_guild_sticker/6","doc":"Returns a `t:Nostrum.Struct.Sticker.t/0` on success.","ref":"Nostrum.Api.html#create_guild_sticker/6-returns"},{"type":"function","title":"Nostrum.Api.create_interaction_response/2","doc":"Same as `create_interaction_response/3`, but directly takes the\n`t:Nostrum.Struct.Interaction.t/0` received from the gateway.","ref":"Nostrum.Api.html#create_interaction_response/2"},{"type":"function","title":"Nostrum.Api.create_interaction_response/3","doc":"Create a response to an interaction received from the gateway.","ref":"Nostrum.Api.html#create_interaction_response/3"},{"type":"function","title":"Parameters - Nostrum.Api.create_interaction_response/3","doc":"- `id`: The interaction ID to which the response should be created.\n- `token`: The interaction token.\n- `response`: An [`InteractionResponse`](https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-response-object)\n object. See the linked documentation.","ref":"Nostrum.Api.html#create_interaction_response/3-parameters"},{"type":"function","title":"Attachments - Nostrum.Api.create_interaction_response/3","doc":"To include attachments in the response, you can include a `:files` field in the response.\nThis field expects a list of attachments which can be in either of the following formats:\n- A path to the file to upload.\n- A map with the following fields:\n - `:body` The file contents.\n - `:name` The filename of the file.","ref":"Nostrum.Api.html#create_interaction_response/3-attachments"},{"type":"function","title":"Example - Nostrum.Api.create_interaction_response/3","doc":"```elixir\nresponse = %{\n type: 4,\n data: %{\n content: \"I copy and pasted this code.\"\n }\n}\nNostrum.Api.create_interaction_response(interaction, response)\n```\n\nAs an alternative to passing the interaction ID and token, the\noriginal `t:Nostrum.Struct.Interaction.t/0` can also be passed\ndirectly. See `create_interaction_response/2`.","ref":"Nostrum.Api.html#create_interaction_response/3-example"},{"type":"function","title":"Nostrum.Api.create_interaction_response!/2","doc":"Same as `create_interaction_response/2`, but raises `Nostrum.Error.ApiError` in case of failure.","ref":"Nostrum.Api.html#create_interaction_response!/2"},{"type":"function","title":"Nostrum.Api.create_interaction_response!/3","doc":"","ref":"Nostrum.Api.html#create_interaction_response!/3"},{"type":"function","title":"Nostrum.Api.create_message/2","doc":"Posts a message to a guild text or DM channel.\n\nThis endpoint requires the `VIEW_CHANNEL` and `SEND_MESSAGES` permissions. It\nmay situationally need the `SEND_MESSAGES_TTS` permission. It fires the\n`t:Nostrum.Consumer.message_create/0` event.\n\nIf `options` is a string, `options` will be used as the message's content.\n\nIf successful, returns `{:ok, message}`. Otherwise, returns a `t:Nostrum.Api.error/0`.","ref":"Nostrum.Api.html#create_message/2"},{"type":"function","title":"Options - Nostrum.Api.create_message/2","doc":"* `:content` (string) - the message contents (up to 2000 characters)\n * `:nonce` (`t:Nostrum.Snowflake.t/0`) - a nonce that can be used for\n optimistic message sending\n * `:tts` (boolean) - true if this is a TTS message\n * `:file` (`t:Path.t/0` | map) - the path of the file being sent, or a map with the following keys\n if sending a binary from memory\n * `:name` (string) - the name of the file\n * `:body` (string) - binary you wish to send\n * `:files` - a list of files where each element is the same format as the `:file` option. If both\n `:file` and `:files` are specified, `:file` will be prepended to the `:files` list.\n * `:embeds` (`t:Nostrum.Struct.Embed.t/0`) - a list of embedded rich content\n * `:allowed_mentions` (`t:allowed_mentions/0`) - see the allowed mentions type documentation\n * `:message_reference` (`map`) - See \"Message references\" below\n * `:poll` (`t:Nostrum.Struct.Message.Poll.t/0`) - A poll object to send with the message\n\n At least one of the following is required: `:content`, `:file`, `:embeds`, `:poll`.","ref":"Nostrum.Api.html#create_message/2-options"},{"type":"function","title":"Message reference - Nostrum.Api.create_message/2","doc":"You can create a reply to another message on guilds using this option, given\nthat you have the ``VIEW_MESSAGE_HISTORY`` permission. To do so, include the\n``message_reference`` field in your call. The complete structure\ndocumentation can be found [on the Discord Developer\nPortal](https://discord.com/developers/docs/resources/channel#message-object-message-reference-structure),\nbut simply passing ``message_id`` will suffice:\n\n```elixir\ndef my_command(msg) do\n # Reply to the author - ``msg`` is a ``Nostrum.Struct.Message``\n Nostrum.Api.create_message(\n msg.channel_id,\n content: \"Hello\",\n message_reference: %{message_id: msg.id}\n )\nend\n```\n\nPassing a list will merge the settings provided","ref":"Nostrum.Api.html#create_message/2-message-reference"},{"type":"function","title":"Examples - Nostrum.Api.create_message/2","doc":"```elixir\nNostrum.Api.create_message(43189401384091, content: \"hello world!\")\n\nNostrum.Api.create_message(43189401384091, \"hello world!\")\n\nimport Nostrum.Struct.Embed\nembed =\n %Nostrum.Struct.Embed{}\n |> put_title(\"embed\")\n |> put_description(\"new desc\")\nNostrum.Api.create_message(43189401384091, embeds: [embed])\n\nNostrum.Api.create_message(43189401384091, file: \"/path/to/file.txt\")\n\nNostrum.Api.create_message(43189401384091, content: \"hello world!\", embeds: [embed], file: \"/path/to/file.txt\")\n\nNostrum.Api.create_message(43189401384091, content: \"Hello @everyone\", allowed_mentions: :none)\n```","ref":"Nostrum.Api.html#create_message/2-examples"},{"type":"function","title":"Nostrum.Api.create_message!/2","doc":"Same as `create_message/2`, but raises `Nostrum.Error.ApiError` in case of failure.","ref":"Nostrum.Api.html#create_message!/2"},{"type":"function","title":"Nostrum.Api.create_reaction/3","doc":"Creates a reaction for a message.\n\nThis endpoint requires the `VIEW_CHANNEL` and `READ_MESSAGE_HISTORY`\npermissions. Additionally, if nobody else has reacted to the message with\nthe `emoji`, this endpoint requires the `ADD_REACTIONS` permission. It\nfires a `t:Nostrum.Consumer.message_reaction_add/0` event.\n\nIf successful, returns `{:ok}`. Otherwise, returns `t:Nostrum.Api.error/0`.","ref":"Nostrum.Api.html#create_reaction/3"},{"type":"function","title":"Examples - Nostrum.Api.create_reaction/3","doc":"```elixir\n# Using a Nostrum.Struct.Emoji.\nemoji = %Nostrum.Struct.Emoji{id: 43819043108, name: \"foxbot\"}\nNostrum.Api.create_reaction(123123123123, 321321321321, emoji)\n\n# Using a base 16 emoji string.\nNostrum.Api.create_reaction(123123123123, 321321321321, \"\\xF0\\x9F\\x98\\x81\")\n\n```\n\nFor other emoji string examples, see `t:Nostrum.Struct.Emoji.api_name/0`.","ref":"Nostrum.Api.html#create_reaction/3-examples"},{"type":"function","title":"Nostrum.Api.create_reaction!/3","doc":"Same as `create_reaction/3`, but raises `Nostrum.Error.ApiError` in case of failure.","ref":"Nostrum.Api.html#create_reaction!/3"},{"type":"function","title":"Nostrum.Api.create_webhook/3","doc":"Creates a webhook.","ref":"Nostrum.Api.html#create_webhook/3"},{"type":"function","title":"Parameters - Nostrum.Api.create_webhook/3","doc":"- `channel_id` - Id of the channel to send the message to.\n - `args` - Map with the following **required** keys:\n - `name` - Name of the webhook.\n - `avatar` - Base64 128x128 jpeg image for the default avatar.\n - `reason` - An optional reason for the guild audit log.","ref":"Nostrum.Api.html#create_webhook/3-parameters"},{"type":"function","title":"Nostrum.Api.delete_all_reactions/2","doc":"Deletes all reactions from a message.\n\nThis endpoint requires the `VIEW_CHANNEL`, `READ_MESSAGE_HISTORY`, and\n`MANAGE_MESSAGES` permissions. It fires a `t:Nostrum.Consumer.message_reaction_remove_all/0` event.\n\nIf successful, returns `{:ok}`. Otherwise, return `t:Nostrum.Api.error/0`.","ref":"Nostrum.Api.html#delete_all_reactions/2"},{"type":"function","title":"Nostrum.Api.delete_all_reactions!/2","doc":"Same as `delete_all_reactions/2`, but raises `Nostrum.Error.ApiError` in case of failure.","ref":"Nostrum.Api.html#delete_all_reactions!/2"},{"type":"function","title":"Nostrum.Api.delete_channel/2","doc":"Deletes a channel.\n\nAn optional `reason` can be provided for the guild audit log.\n\nIf deleting a `t:Nostrum.Struct.Channel.guild_channel/0`, this endpoint requires\nthe `MANAGE_CHANNELS` permission. It fires a\n`t:Nostrum.Consumer.channel_delete/0`. If a `t:Nostrum.Struct.Channel.guild_category_channel/0`\nis deleted, then a `t:Nostrum.Consumer.channel_update/0` event will fire\nfor each channel under the category.\n\nIf successful, returns `{:ok, channel}`. Otherwise, returns a `t:Nostrum.Api.error/0`.","ref":"Nostrum.Api.html#delete_channel/2"},{"type":"function","title":"Examples - Nostrum.Api.delete_channel/2","doc":"```elixir\nNostrum.Api.delete_channel(421533712753360896)\n{:ok, %Nostrum.Struct.Channel{id: 421533712753360896}}\n```","ref":"Nostrum.Api.html#delete_channel/2-examples"},{"type":"function","title":"Nostrum.Api.delete_channel!/2","doc":"Same as `delete_channel/1`, but raises `Nostrum.Error.ApiError` in case of failure.","ref":"Nostrum.Api.html#delete_channel!/2"},{"type":"function","title":"Nostrum.Api.delete_channel_permissions/3","doc":"Delete a channel permission for a user or role.\n\nRole or user overwrite to delete is specified by `channel_id` and `overwrite_id`.\nAn optional `reason` can be given for the audit log.","ref":"Nostrum.Api.html#delete_channel_permissions/3"},{"type":"function","title":"Nostrum.Api.delete_global_application_command/2","doc":"Delete an existing global application command.","ref":"Nostrum.Api.html#delete_global_application_command/2"},{"type":"function","title":"Parameters - Nostrum.Api.delete_global_application_command/2","doc":"- `application_id`: Application ID for which to create the command.\n If not given, this will be fetched from `Me`.\n- `command_id`: The current snowflake of the command.","ref":"Nostrum.Api.html#delete_global_application_command/2-parameters"},{"type":"function","title":"Nostrum.Api.delete_guild/1","doc":"Deletes a guild.\n\nThis endpoint requires that the current user is the owner of the guild.\nIt fires the `t:Nostrum.Consumer.guild_delete/0` event.\n\nIf successful, returns `{:ok}`. Otherwise, returns a `t:Nostrum.Api.error/0`.","ref":"Nostrum.Api.html#delete_guild/1"},{"type":"function","title":"Examples - Nostrum.Api.delete_guild/1","doc":"```elixir\nNostrum.Api.delete_guild(81384788765712384)\n{:ok}\n```","ref":"Nostrum.Api.html#delete_guild/1-examples"},{"type":"function","title":"Nostrum.Api.delete_guild!/1","doc":"Same as `delete_guild/1`, but raises `Nostrum.Error.ApiError` in case of failure.","ref":"Nostrum.Api.html#delete_guild!/1"},{"type":"function","title":"Nostrum.Api.delete_guild_application_command/3","doc":"Delete an existing guild application command.","ref":"Nostrum.Api.html#delete_guild_application_command/3"},{"type":"function","title":"Parameters - Nostrum.Api.delete_guild_application_command/3","doc":"- `application_id`: Application ID for which to create the command.\n If not given, this will be fetched from `Me`.\n- `guild_id`: The guild on which the command exists.\n- `command_id`: The current snowflake of the command.","ref":"Nostrum.Api.html#delete_guild_application_command/3-parameters"},{"type":"function","title":"Nostrum.Api.delete_guild_auto_moderation_rule/2","doc":"Delete an auto-moderation rule for a guild.","ref":"Nostrum.Api.html#delete_guild_auto_moderation_rule/2"},{"type":"function","title":"Nostrum.Api.delete_guild_emoji/3","doc":"Deletes the given emoji.\n\nAn optional `reason` can be provided for the audit log.\n\nThis endpoint requires the `MANAGE_EMOJIS` permission. It fires a\n`t:Nostrum.Consumer.guild_emojis_update/0` event.\n\nIf successful, returns `{:ok}`. Otherwise, returns `t:Nostrum.Api.error/0`.","ref":"Nostrum.Api.html#delete_guild_emoji/3"},{"type":"function","title":"Nostrum.Api.delete_guild_emoji!/3","doc":"Same as `delete_guild_emoji/2`, but raises `Nostrum.Error.ApiError` in case of failure.","ref":"Nostrum.Api.html#delete_guild_emoji!/3"},{"type":"function","title":"Nostrum.Api.delete_guild_integrations/2","doc":"Deletes a guild integeration.\n\nIntegration to delete is specified by `guild_id` and `integeration_id`.","ref":"Nostrum.Api.html#delete_guild_integrations/2"},{"type":"function","title":"Nostrum.Api.delete_guild_role/3","doc":"Deletes a role from a guild.\n\nAn optional `reason` can be specified for the audit log.\n\nThis endpoint requires the `MANAGE_ROLES` permission. It fires a\n`t:Nostrum.Consumer.guild_role_delete/0` event.\n\nIf successful, returns `{:ok}`. Otherwise, returns a `t:Nostrum.Api.error/0`.","ref":"Nostrum.Api.html#delete_guild_role/3"},{"type":"function","title":"Examples - Nostrum.Api.delete_guild_role/3","doc":"```elixir\nNostrum.Api.delete_guild_role(41771983423143937, 392817238471936)\n```","ref":"Nostrum.Api.html#delete_guild_role/3-examples"},{"type":"function","title":"Nostrum.Api.delete_guild_role!/3","doc":"Same as `delete_guild_role/2`, but raises `Nostrum.Error.ApiError` in case of failure.","ref":"Nostrum.Api.html#delete_guild_role!/3"},{"type":"function","title":"Nostrum.Api.delete_guild_scheduled_event/2","doc":"Delete a scheduled event for a guild.","ref":"Nostrum.Api.html#delete_guild_scheduled_event/2"},{"type":"function","title":"Nostrum.Api.delete_guild_sticker/2","doc":"Delete a guild sticker with the specified ID.","ref":"Nostrum.Api.html#delete_guild_sticker/2"},{"type":"function","title":"Nostrum.Api.delete_interaction_followup_message/3","doc":"Delete a followup message for an interaction.","ref":"Nostrum.Api.html#delete_interaction_followup_message/3"},{"type":"function","title":"Parameters - Nostrum.Api.delete_interaction_followup_message/3","doc":"- `application_id`: Application ID for which to create the command.\n If not given, this will be fetched from `Me`.\n- `token`: Interaction token.\n- `message_id`: Followup message ID.","ref":"Nostrum.Api.html#delete_interaction_followup_message/3-parameters"},{"type":"function","title":"Nostrum.Api.delete_interaction_followup_message!/3","doc":"Same as `delete_interaction_followup_message/3`, but raises `Nostrum.Error.ApiError` in case of failure.","ref":"Nostrum.Api.html#delete_interaction_followup_message!/3"},{"type":"function","title":"Nostrum.Api.delete_interaction_response/1","doc":"Same as `delete_interaction_response/3`, but directly takes the\n`t:Nostrum.Struct.Interaction.t/0` received from the gateway.","ref":"Nostrum.Api.html#delete_interaction_response/1"},{"type":"function","title":"Nostrum.Api.delete_interaction_response/2","doc":"Deletes the original interaction response.","ref":"Nostrum.Api.html#delete_interaction_response/2"},{"type":"function","title":"Nostrum.Api.delete_interaction_response!/1","doc":"","ref":"Nostrum.Api.html#delete_interaction_response!/1"},{"type":"function","title":"Nostrum.Api.delete_interaction_response!/2","doc":"Same as `delete_interaction_response/2`, but raises `Nostrum.Error.ApiError` in case of failure.","ref":"Nostrum.Api.html#delete_interaction_response!/2"},{"type":"function","title":"Nostrum.Api.delete_invite/1","doc":"Deletes an invite by its `invite_code`.\n\nThis endpoint requires the `MANAGE_CHANNELS` permission.\n\nIf successful, returns `{:ok, invite}`. Otherwise, returns a\n`t:Nostrum.Api.error/0`.","ref":"Nostrum.Api.html#delete_invite/1"},{"type":"function","title":"Examples - Nostrum.Api.delete_invite/1","doc":"```elixir\nNostrum.Api.delete_invite(\"zsjUsC\")\n```","ref":"Nostrum.Api.html#delete_invite/1-examples"},{"type":"function","title":"Nostrum.Api.delete_invite!/1","doc":"Same as `delete_invite/1`, but raises `Nostrum.Error.ApiError` in case of failure.","ref":"Nostrum.Api.html#delete_invite!/1"},{"type":"function","title":"Nostrum.Api.delete_message/1","doc":"Same as `delete_message/2`, but takes a `Nostrum.Struct.Message` instead of a\n`channel_id` and `message_id`.","ref":"Nostrum.Api.html#delete_message/1"},{"type":"function","title":"Nostrum.Api.delete_message/2","doc":"Deletes a message.\n\nThis endpoint requires the 'VIEW_CHANNEL' and 'MANAGE_MESSAGES' permission. It\nfires the `MESSAGE_DELETE` event.\n\nIf successful, returns `{:ok}`. Otherwise, returns a `t:Nostrum.Api.error/0`.","ref":"Nostrum.Api.html#delete_message/2"},{"type":"function","title":"Examples - Nostrum.Api.delete_message/2","doc":"```elixir\nNostrum.Api.delete_message(43189401384091, 43189401384091)\n```","ref":"Nostrum.Api.html#delete_message/2-examples"},{"type":"function","title":"Nostrum.Api.delete_message!/1","doc":"Same as `delete_message/1`, but raises `Nostrum.Error.ApiError` in case of failure.","ref":"Nostrum.Api.html#delete_message!/1"},{"type":"function","title":"Nostrum.Api.delete_message!/2","doc":"Same as `delete_message/2`, but raises `Nostrum.Error.ApiError` in case of failure.","ref":"Nostrum.Api.html#delete_message!/2"},{"type":"function","title":"Nostrum.Api.delete_own_reaction/3","doc":"Deletes a reaction the current user has made for the message.\n\nThis endpoint requires the `VIEW_CHANNEL` and `READ_MESSAGE_HISTORY`\npermissions. It fires a `t:Nostrum.Consumer.message_reaction_remove/0` event.\n\nIf successful, returns `{:ok}`. Otherwise, returns `t:Nostrum.Api.error/0`.\n\nSee `create_reaction/3` for similar examples.","ref":"Nostrum.Api.html#delete_own_reaction/3"},{"type":"function","title":"Nostrum.Api.delete_own_reaction!/3","doc":"Same as `delete_own_reaction/3`, but raises `Nostrum.Error.ApiError` in case of failure.","ref":"Nostrum.Api.html#delete_own_reaction!/3"},{"type":"function","title":"Nostrum.Api.delete_pinned_channel_message/2","doc":"Unpins a message in a channel.\n\nThis endpoint requires the 'VIEW_CHANNEL', 'READ_MESSAGE_HISTORY', and\n'MANAGE_MESSAGES' permissions. It fires the\n`t:Nostrum.Consumer.message_update/0` and\n`t:Nostrum.Consumer.channel_pins_update/0` events.\n\nReturns `{:ok}` if successful. `error` otherwise.","ref":"Nostrum.Api.html#delete_pinned_channel_message/2"},{"type":"function","title":"Nostrum.Api.delete_pinned_channel_message!/2","doc":"Same as `delete_pinned_channel_message/2`, but raises `Nostrum.Error.ApiError` in case of failure.","ref":"Nostrum.Api.html#delete_pinned_channel_message!/2"},{"type":"function","title":"Nostrum.Api.delete_reaction/3","doc":"Deletes all reactions of a given emoji from a message.\n\nThis endpoint requires the `MANAGE_MESSAGES` permissions. It fires a `t:Nostrum.Consumer.message_reaction_remove_emoji/0` event.\n\nIf successful, returns `{:ok}`. Otherwise, returns `t:Nostrum.Api.error/0`.\n\nSee `create_reaction/3` for similar examples.","ref":"Nostrum.Api.html#delete_reaction/3"},{"type":"function","title":"Nostrum.Api.delete_reaction!/3","doc":"Same as `delete_reaction/3`, but raises `Nostrum.Error.ApiError` in case of failure.","ref":"Nostrum.Api.html#delete_reaction!/3"},{"type":"function","title":"Nostrum.Api.delete_user_reaction/4","doc":"Deletes another user's reaction from a message.\n\nThis endpoint requires the `VIEW_CHANNEL`, `READ_MESSAGE_HISTORY`, and\n`MANAGE_MESSAGES` permissions. It fires a `t:Nostrum.Consumer.message_reaction_remove/0` event.\n\nIf successful, returns `{:ok}`. Otherwise, returns `t:Nostrum.Api.error/0`.\n\nSee `create_reaction/3` for similar examples.","ref":"Nostrum.Api.html#delete_user_reaction/4"},{"type":"function","title":"Nostrum.Api.delete_user_reaction!/4","doc":"Same as `delete_user_reaction/4`, but raises `Nostrum.Error.ApiError` in case of failure.","ref":"Nostrum.Api.html#delete_user_reaction!/4"},{"type":"function","title":"Nostrum.Api.delete_webhook/2","doc":"Deletes a webhook.","ref":"Nostrum.Api.html#delete_webhook/2"},{"type":"function","title":"Parameters - Nostrum.Api.delete_webhook/2","doc":"- `webhook_id` - Id of webhook to delete.\n - `reason` - An optional reason for the guild audit log.","ref":"Nostrum.Api.html#delete_webhook/2-parameters"},{"type":"function","title":"Nostrum.Api.edit_application_command_permissions/4","doc":"Edits command permissions for a specific command for your application in a guild. You can only add up to 10 permission overwrites for a command.","ref":"Nostrum.Api.html#edit_application_command_permissions/4"},{"type":"function","title":"Parameters - Nostrum.Api.edit_application_command_permissions/4","doc":"- `application_id`: Application ID commands are registered under.\n If not given, this will be fetched from `Me`.\n- `guild_id`: Guild ID to fetch command permissions from.\n- `command_id`: Command ID to fetch permissions for.\n- `permissions`: List of [application command permissions](https://discord.com/developers/docs/interactions/application-commands#application-command-permissions-object-application-command-permissions-structure)","ref":"Nostrum.Api.html#edit_application_command_permissions/4-parameters"},{"type":"function","title":"Return value - Nostrum.Api.edit_application_command_permissions/4","doc":"This method returns a guild application command permission object, see all available values on the [Discord API docs](https://discord.com/developers/docs/interactions/application-commands#application-command-permissions-object-guild-application-command-permissions-structure).","ref":"Nostrum.Api.html#edit_application_command_permissions/4-return-value"},{"type":"function","title":"Nostrum.Api.edit_channel_permissions/4","doc":"Edit the permission overwrites for a user or role.\n\nRole or user to overwrite is specified by `overwrite_id`.\n\n`permission_info` is a map with the following keys:\n * `type` - Required; `member` if editing a user, `role` if editing a role.\n * `allow` - Bitwise value of allowed permissions.\n * `deny` - Bitwise value of denied permissions.\n * `type` - `member` if editing a user, `role` if editing a role.\n\nAn optional `reason` can be provided for the audit log.\n\n `allow` and `deny` are defaulted to `0`, meaning that even if you don't\n specify them, they will override their respective former values in an\n existing overwrite.","ref":"Nostrum.Api.html#edit_channel_permissions/4"},{"type":"function","title":"Nostrum.Api.edit_channel_permissions!/4","doc":"Same as `edit_channel_permissions/3`, but raises `Nostrum.Error.ApiError` in case of failure.","ref":"Nostrum.Api.html#edit_channel_permissions!/4"},{"type":"function","title":"Nostrum.Api.edit_global_application_command/3","doc":"Update an existing global application command.\n\nThe updated command will be available on all guilds in around an hour.","ref":"Nostrum.Api.html#edit_global_application_command/3"},{"type":"function","title":"Parameters - Nostrum.Api.edit_global_application_command/3","doc":"- `application_id`: Application ID for which to edit the command.\n If not given, this will be fetched from `Me`.\n- `command_id`: The current snowflake of the command.\n- `command`: Command configuration, see the linked API documentation for reference.","ref":"Nostrum.Api.html#edit_global_application_command/3-parameters"},{"type":"function","title":"Return value - Nostrum.Api.edit_global_application_command/3","doc":"The updated command. See the official reference:\nhttps://discord.com/developers/docs/interactions/application-commands#edit-global-application-command","ref":"Nostrum.Api.html#edit_global_application_command/3-return-value"},{"type":"function","title":"Nostrum.Api.edit_guild_application_command/4","doc":"Update an existing guild application command.\n\nThe updated command will be available immediately.","ref":"Nostrum.Api.html#edit_guild_application_command/4"},{"type":"function","title":"Parameters - Nostrum.Api.edit_guild_application_command/4","doc":"- `application_id`: Application ID for which to edit the command.\n If not given, this will be fetched from `Me`.\n- `guild_id`: Guild for which to update the command.\n- `command_id`: The current snowflake of the command.\n- `command`: Command configuration, see the linked API documentation for reference.","ref":"Nostrum.Api.html#edit_guild_application_command/4-parameters"},{"type":"function","title":"Return value - Nostrum.Api.edit_guild_application_command/4","doc":"The updated command. See the official reference:\nhttps://discord.com/developers/docs/interactions/application-commands#edit-guild-application-command","ref":"Nostrum.Api.html#edit_guild_application_command/4-return-value"},{"type":"function","title":"Nostrum.Api.edit_interaction_response/2","doc":"Same as `edit_interaction_response/3`, but directly takes the\n`t:Nostrum.Struct.Interaction.t/0` received from the gateway.","ref":"Nostrum.Api.html#edit_interaction_response/2"},{"type":"function","title":"Nostrum.Api.edit_interaction_response/3","doc":"Edits the original interaction response.\n\nFunctions the same as `edit_webhook_message/3`","ref":"Nostrum.Api.html#edit_interaction_response/3"},{"type":"function","title":"Nostrum.Api.edit_interaction_response!/2","doc":"Same as `edit_interaction_response/2`, but raises `Nostrum.Error.ApiError` in case of failure.","ref":"Nostrum.Api.html#edit_interaction_response!/2"},{"type":"function","title":"Nostrum.Api.edit_interaction_response!/3","doc":"Same as `edit_interaction_response/3`, but raises `Nostrum.Error.ApiError` in case of failure.","ref":"Nostrum.Api.html#edit_interaction_response!/3"},{"type":"function","title":"Nostrum.Api.edit_message/2","doc":"Same as `edit_message/3`, but takes a `Nostrum.Struct.Message` instead of a\n`channel_id` and `message_id`.","ref":"Nostrum.Api.html#edit_message/2"},{"type":"function","title":"Nostrum.Api.edit_message/3","doc":"Edits a previously sent message in a channel.\n\nThis endpoint requires the `VIEW_CHANNEL` permission. It fires the\n`t:Nostrum.Consumer.message_update/0` event.\n\nIf `options` is a string, `options` will be used as the message's content.\n\nIf successful, returns `{:ok, message}`. Otherwise, returns a `t:Nostrum.Api.error/0`.","ref":"Nostrum.Api.html#edit_message/3"},{"type":"function","title":"Options - Nostrum.Api.edit_message/3","doc":"* `:content` (string) - the message contents (up to 2000 characters)\n* `:embeds` (`t:Nostrum.Struct.Embed.t/0`) - a list of embedded rich content\n* `:files` - a list of files where each element is the same format as the\n`:file` option. If both `:file` and `:files` are specified, `:file` will be\nprepended to the `:files` list. See `create_message/2` for more information.\n\nNote that if you edit a message with attachments, all attachments that should\nbe present after edit **must** be included in your request body. This\nincludes attachments that were sent in the original request.","ref":"Nostrum.Api.html#edit_message/3-options"},{"type":"function","title":"Examples - Nostrum.Api.edit_message/3","doc":"```elixir\nNostrum.Api.edit_message(43189401384091, 1894013840914098, content: \"hello world!\")\n\nNostrum.Api.edit_message(43189401384091, 1894013840914098, \"hello world!\")\n\nimport Nostrum.Struct.Embed\nembed =\n %Nostrum.Struct.Embed{}\n |> put_title(\"embed\")\n |> put_description(\"new desc\")\nNostrum.Api.edit_message(43189401384091, 1894013840914098, embeds: [embed])\n\nNostrum.Api.edit_message(43189401384091, 1894013840914098, content: \"hello world!\", embeds: [embed])\n```","ref":"Nostrum.Api.html#edit_message/3-examples"},{"type":"function","title":"Nostrum.Api.edit_message!/2","doc":"Same as `edit_message/2`, but raises `Nostrum.Error.ApiError` in case of failure.","ref":"Nostrum.Api.html#edit_message!/2"},{"type":"function","title":"Nostrum.Api.edit_message!/3","doc":"Same as `edit_message/3`, but raises `Nostrum.Error.ApiError` in case of failure.","ref":"Nostrum.Api.html#edit_message!/3"},{"type":"function","title":"Nostrum.Api.edit_webhook_message/4","doc":"Edits a message previously created by the same webhook,\nargs are the same as `execute_webhook/3`,\nhowever all fields are optional.","ref":"Nostrum.Api.html#edit_webhook_message/4"},{"type":"function","title":"Nostrum.Api.execute_git_webhook/3","doc":"Executes a git webhook.","ref":"Nostrum.Api.html#execute_git_webhook/3"},{"type":"function","title":"Parameters - Nostrum.Api.execute_git_webhook/3","doc":"- `webhook_id` - Id of the webhook to execute.\n - `webhook_token` - Token of the webhook to execute.","ref":"Nostrum.Api.html#execute_git_webhook/3-parameters"},{"type":"function","title":"Nostrum.Api.execute_slack_webhook/3","doc":"Executes a slack webhook.","ref":"Nostrum.Api.html#execute_slack_webhook/3"},{"type":"function","title":"Parameters - Nostrum.Api.execute_slack_webhook/3","doc":"- `webhook_id` - Id of the webhook to execute.\n - `webhook_token` - Token of the webhook to execute.","ref":"Nostrum.Api.html#execute_slack_webhook/3-parameters"},{"type":"function","title":"Nostrum.Api.execute_webhook/4","doc":"Executes a webhook.","ref":"Nostrum.Api.html#execute_webhook/4"},{"type":"function","title":"Parameters - Nostrum.Api.execute_webhook/4","doc":"- `webhook_id` - Id of the webhook to execute.\n- `webhook_token` - Token of the webhook to execute.\n- `args` - Map with the following allowed keys:\n - `content` - Message content.\n - `files` - List of Files to send.\n - `embeds` - List of embeds to send.\n - `username` - Overrides the default name of the webhook.\n - `avatar_url` - Overrides the default avatar of the webhook.\n - `tts` - Whether the message should be read over text to speech.\n - `flags` - Bitwise flags.\n - `thread_id` - Send a message to the specified thread within the webhook's channel.\n - `allowed_mentions` - Mentions to allow in the webhook message\n- `wait` - Whether to return an error or not. Defaults to `false`.\n\n**Note**: If `wait` is `true`, this method will return a `Message.t()` on success.\n\nAt least one of `content`, `files` or `embeds` should be supplied in the `args` parameter.","ref":"Nostrum.Api.html#execute_webhook/4-parameters"},{"type":"function","title":"Nostrum.Api.expire_poll/2","doc":"Expire (close voting on) a poll before the scheduled end time.\n\nReturns the original message containing the poll.","ref":"Nostrum.Api.html#expire_poll/2"},{"type":"function","title":"Nostrum.Api.expire_poll!/2","doc":"Same as `expire_poll/2`, but raises `Nostrum.Error.ApiError` in case of failure.","ref":"Nostrum.Api.html#expire_poll!/2"},{"type":"function","title":"Nostrum.Api.get_application_command_permissions/3","doc":"Fetches command permissions for a specific command for your application in a guild.","ref":"Nostrum.Api.html#get_application_command_permissions/3"},{"type":"function","title":"Parameters - Nostrum.Api.get_application_command_permissions/3","doc":"- `application_id`: Application ID commands are registered under.\n If not given, this will be fetched from `Me`.\n- `guild_id`: Guild ID to fetch command permissions from.\n- `command_id`: Command ID to fetch permissions for.","ref":"Nostrum.Api.html#get_application_command_permissions/3-parameters"},{"type":"function","title":"Return value - Nostrum.Api.get_application_command_permissions/3","doc":"This method returns a single guild application command permission object, see all available values on the [Discord API docs](https://discord.com/developers/docs/interactions/application-commands#application-command-permissions-object-guild-application-command-permissions-structure).","ref":"Nostrum.Api.html#get_application_command_permissions/3-return-value"},{"type":"function","title":"Nostrum.Api.get_application_information/0","doc":"Gets the bot's OAuth2 application info.","ref":"Nostrum.Api.html#get_application_information/0"},{"type":"function","title":"Example - Nostrum.Api.get_application_information/0","doc":"```elixir\nNostrum.Api.get_application_information\n{:ok,\n%{\n bot_public: false,\n bot_require_code_grant: false,\n description: \"Test\",\n icon: nil,\n id: \"172150183260323840\",\n name: \"Baba O-Riley\",\n owner: %{\n avatar: nil,\n discriminator: \"0042\",\n id: \"172150183260323840\",\n username: \"i own a bot\"\n },\n}}\n```","ref":"Nostrum.Api.html#get_application_information/0-example"},{"type":"function","title":"Nostrum.Api.get_channel/1","doc":"Gets a channel.\n\nIf successful, returns `{:ok, channel}`. Otherwise, returns a `t:Nostrum.Api.error/0`.","ref":"Nostrum.Api.html#get_channel/1"},{"type":"function","title":"Examples - Nostrum.Api.get_channel/1","doc":"```elixir\nNostrum.Api.get_channel(381889573426429952)\n{:ok, %Nostrum.Struct.Channel{id: 381889573426429952}}\n```","ref":"Nostrum.Api.html#get_channel/1-examples"},{"type":"function","title":"Nostrum.Api.get_channel!/1","doc":"Same as `get_channel/1`, but raises `Nostrum.Error.ApiError` in case of failure.","ref":"Nostrum.Api.html#get_channel!/1"},{"type":"function","title":"Nostrum.Api.get_channel_invites/1","doc":"Gets a list of invites for a channel.\n\nThis endpoint requires the 'VIEW_CHANNEL' and 'MANAGE_CHANNELS' permissions.\n\nIf successful, returns `{:ok, invite}`. Otherwise, returns a\n`t:Nostrum.Api.error/0`.","ref":"Nostrum.Api.html#get_channel_invites/1"},{"type":"function","title":"Examples - Nostrum.Api.get_channel_invites/1","doc":"```elixir\nNostrum.Api.get_channel_invites(43189401384091)\n{:ok, [%Nostrum.Struct.Invite{} | _]}\n```","ref":"Nostrum.Api.html#get_channel_invites/1-examples"},{"type":"function","title":"Nostrum.Api.get_channel_invites!/1","doc":"Same as `get_channel_invites/1`, but raises `Nostrum.Error.ApiError` in case of failure.","ref":"Nostrum.Api.html#get_channel_invites!/1"},{"type":"function","title":"Nostrum.Api.get_channel_message/2","doc":"Retrieves a message from a channel.\n\nThis endpoint requires the 'VIEW_CHANNEL' and 'READ_MESSAGE_HISTORY' permissions.\n\nIf successful, returns `{:ok, message}`. Otherwise, returns a `t:Nostrum.Api.error/0`.","ref":"Nostrum.Api.html#get_channel_message/2"},{"type":"function","title":"Examples - Nostrum.Api.get_channel_message/2","doc":"```elixir\nNostrum.Api.get_channel_message(43189401384091, 198238475613443)\n```","ref":"Nostrum.Api.html#get_channel_message/2-examples"},{"type":"function","title":"Nostrum.Api.get_channel_message!/2","doc":"Same as `get_channel_message/2`, but raises `Nostrum.Error.ApiError` in case of failure.","ref":"Nostrum.Api.html#get_channel_message!/2"},{"type":"function","title":"Nostrum.Api.get_channel_messages/3","doc":"Retrieves a channel's messages around a `locator` up to a `limit`.\n\nThis endpoint requires the 'VIEW_CHANNEL' permission. If the current user\nis missing the 'READ_MESSAGE_HISTORY' permission, then this function will\nreturn no messages.\n\nIf successful, returns `{:ok, messages}`. Otherwise, returns a `t:Nostrum.Api.error/0`.","ref":"Nostrum.Api.html#get_channel_messages/3"},{"type":"function","title":"Examples - Nostrum.Api.get_channel_messages/3","doc":"```elixir\nNostrum.Api.get_channel_messages(43189401384091, 5, {:before, 130230401384})\n```","ref":"Nostrum.Api.html#get_channel_messages/3-examples"},{"type":"function","title":"Nostrum.Api.get_channel_messages!/3","doc":"Same as `get_channel_messages/3`, but raises `Nostrum.Error.ApiError` in case of failure.","ref":"Nostrum.Api.html#get_channel_messages!/3"},{"type":"function","title":"Nostrum.Api.get_channel_webhooks/1","doc":"Gets a list of webhooks for a channel.","ref":"Nostrum.Api.html#get_channel_webhooks/1"},{"type":"function","title":"Parameters - Nostrum.Api.get_channel_webhooks/1","doc":"- `channel_id` - Channel to get webhooks for.","ref":"Nostrum.Api.html#get_channel_webhooks/1-parameters"},{"type":"function","title":"Nostrum.Api.get_current_user/0","doc":"Gets info on the current user.\n\nIf nostrum's caching is enabled, it is recommended to use `Me.get/0`\ninstead of this function. This is because sending out an API request is much slower\nthan pulling from our cache.\n\nIf the request is successful, this function returns `{:ok, user}`, where\n`user` is nostrum's `Nostrum.Struct.User`. Otherwise, returns `{:error, reason}`.","ref":"Nostrum.Api.html#get_current_user/0"},{"type":"function","title":"Nostrum.Api.get_current_user!/0","doc":"Same as `get_current_user/0`, but raises `Nostrum.Error.ApiError` in case of failure.","ref":"Nostrum.Api.html#get_current_user!/0"},{"type":"function","title":"Nostrum.Api.get_current_user_guilds/1","doc":"Gets a list of guilds the user is currently in.\n\nThis endpoint requires the `guilds` OAuth2 scope.\n\nIf successful, returns `{:ok, guilds}`. Otherwise, returns a `t:Nostrum.Api.error/0`.","ref":"Nostrum.Api.html#get_current_user_guilds/1"},{"type":"function","title":"Options - Nostrum.Api.get_current_user_guilds/1","doc":"* `:before` (`t:Nostrum.Snowflake.t/0`) - get guilds before this\n guild ID\n * `:after` (`t:Nostrum.Snowflake.t/0`) - get guilds after this guild\n ID\n * `:limit` (integer) - max number of guilds to return (1-100)","ref":"Nostrum.Api.html#get_current_user_guilds/1-options"},{"type":"function","title":"Examples - Nostrum.Api.get_current_user_guilds/1","doc":"```elixir\niex> Nostrum.Api.get_current_user_guilds(limit: 1)\n{:ok, [%Nostrum.Struct.Guild{}]}\n```","ref":"Nostrum.Api.html#get_current_user_guilds/1-examples"},{"type":"function","title":"Nostrum.Api.get_current_user_guilds!/1","doc":"Same as `get_current_user_guilds/1`, but raises `Nostrum.Error.ApiError` in case of failure.","ref":"Nostrum.Api.html#get_current_user_guilds!/1"},{"type":"function","title":"Nostrum.Api.get_global_application_commands/1","doc":"Fetch all global commands.","ref":"Nostrum.Api.html#get_global_application_commands/1"},{"type":"function","title":"Parameters - Nostrum.Api.get_global_application_commands/1","doc":"- `application_id`: Application ID for which to search commands.\n If not given, this will be fetched from `Me`.","ref":"Nostrum.Api.html#get_global_application_commands/1-parameters"},{"type":"function","title":"Return value - Nostrum.Api.get_global_application_commands/1","doc":"A list of ``ApplicationCommand``s on success. See the official reference:\nhttps://discord.com/developers/docs/interactions/application-commands#application-command-object-application-command-structure","ref":"Nostrum.Api.html#get_global_application_commands/1-return-value"},{"type":"function","title":"Example - Nostrum.Api.get_global_application_commands/1","doc":"```elixir\niex> Nostrum.Api.get_global_application_commands\n{:ok,\n [\n %{\n application_id: \"455589479713865749\",\n description: \"ed, man! man, ed\",\n id: \"789841753196331029\",\n name: \"edit\"\n }\n ]}\n```","ref":"Nostrum.Api.html#get_global_application_commands/1-example"},{"type":"function","title":"Nostrum.Api.get_guild/1","doc":"Gets a guild.\n\nIf successful, returns `{:ok, guild}`. Otherwise, returns a `t:Nostrum.Api.error/0`.","ref":"Nostrum.Api.html#get_guild/1"},{"type":"function","title":"Examples - Nostrum.Api.get_guild/1","doc":"```elixir\nNostrum.Api.get_guild(81384788765712384)\n{:ok, %Nostrum.Struct.Guild{id: 81384788765712384}}\n```","ref":"Nostrum.Api.html#get_guild/1-examples"},{"type":"function","title":"Nostrum.Api.get_guild!/1","doc":"Same as `get_guild/1`, but raises `Nostrum.Error.ApiError` in case of failure.","ref":"Nostrum.Api.html#get_guild!/1"},{"type":"function","title":"Nostrum.Api.get_guild_application_command_permissions/2","doc":"Fetches command permissions for all commands for your application in a guild.","ref":"Nostrum.Api.html#get_guild_application_command_permissions/2"},{"type":"function","title":"Parameters - Nostrum.Api.get_guild_application_command_permissions/2","doc":"- `application_id`: Application ID commands are registered under.\n If not given, this will be fetched from `Me`.\n- `guild_id`: Guild ID to fetch command permissions from.","ref":"Nostrum.Api.html#get_guild_application_command_permissions/2-parameters"},{"type":"function","title":"Return value - Nostrum.Api.get_guild_application_command_permissions/2","doc":"This method returns a list of guild application command permission objects, see all available values on the [Discord API docs](https://discord.com/developers/docs/interactions/application-commands#application-command-permissions-object-guild-application-command-permissions-structure).","ref":"Nostrum.Api.html#get_guild_application_command_permissions/2-return-value"},{"type":"function","title":"Nostrum.Api.get_guild_application_commands/2","doc":"Fetch all guild application commands for the given guild.","ref":"Nostrum.Api.html#get_guild_application_commands/2"},{"type":"function","title":"Parameters - Nostrum.Api.get_guild_application_commands/2","doc":"- `application_id`: Application ID for which to fetch commands.\n If not given, this will be fetched from `Me`.\n- `guild_id`: The guild ID for which guild application commands\n should be requested.","ref":"Nostrum.Api.html#get_guild_application_commands/2-parameters"},{"type":"function","title":"Return value - Nostrum.Api.get_guild_application_commands/2","doc":"A list of ``ApplicationCommand``s on success. See the official reference:\nhttps://discord.com/developers/docs/interactions/application-commands#application-command-object-application-command-structure","ref":"Nostrum.Api.html#get_guild_application_commands/2-return-value"},{"type":"function","title":"Nostrum.Api.get_guild_audit_log/2","doc":"Get the `t:Nostrum.Struct.Guild.AuditLog.t/0` for the given `guild_id`.","ref":"Nostrum.Api.html#get_guild_audit_log/2"},{"type":"function","title":"Options - Nostrum.Api.get_guild_audit_log/2","doc":"* `:user_id` (`t:Nostrum.Struct.User.id/0`) - filter the log for a user ID\n * `:action_type` (`t:integer/0`) - filter the log by audit log type, see [Audit Log Events](https://discord.com/developers/docs/resources/audit-log#audit-log-entry-object-audit-log-events)\n * `:before` (`t:Nostrum.Struct.Snowflake.t/0`) - filter the log before a certain entry ID\n * `:limit` (`t:pos_integer/0`) - how many entries are returned (default 50, minimum 1, maximum 100)","ref":"Nostrum.Api.html#get_guild_audit_log/2-options"},{"type":"function","title":"Nostrum.Api.get_guild_auto_moderation_rule/2","doc":"Get a single auto-moderation rule for a guild.","ref":"Nostrum.Api.html#get_guild_auto_moderation_rule/2"},{"type":"function","title":"Nostrum.Api.get_guild_auto_moderation_rules/1","doc":"Get a list of all auto-moderation rules for a guild.","ref":"Nostrum.Api.html#get_guild_auto_moderation_rules/1"},{"type":"function","title":"Nostrum.Api.get_guild_ban/2","doc":"Gets a ban object for the given user from a guild.","ref":"Nostrum.Api.html#get_guild_ban/2"},{"type":"function","title":"Nostrum.Api.get_guild_bans/1","doc":"Gets a list of users banned from a guild.\n\nGuild to get bans for is specified by `guild_id`.","ref":"Nostrum.Api.html#get_guild_bans/1"},{"type":"function","title":"Nostrum.Api.get_guild_channels/1","doc":"Gets a list of guild channels.\n\nIf successful, returns `{:ok, channels}`. Otherwise, returns a `t:Nostrum.Api.error/0`.","ref":"Nostrum.Api.html#get_guild_channels/1"},{"type":"function","title":"Examples - Nostrum.Api.get_guild_channels/1","doc":"```elixir\nNostrum.Api.get_guild_channels(81384788765712384)\n{:ok, [%Nostrum.Struct.Channel{guild_id: 81384788765712384} | _]}\n```","ref":"Nostrum.Api.html#get_guild_channels/1-examples"},{"type":"function","title":"Nostrum.Api.get_guild_channels!/1","doc":"Same as `get_guild_channels/1`, but raises `Nostrum.Error.ApiError` in case of failure.","ref":"Nostrum.Api.html#get_guild_channels!/1"},{"type":"function","title":"Nostrum.Api.get_guild_emoji/2","doc":"Gets an emoji for the given guild and emoji ids.\n\nThis endpoint requires the `MANAGE_EMOJIS` permission.\n\nIf successful, returns `{:ok, emoji}`. Otherwise, returns `t:Nostrum.Api.error/0`.","ref":"Nostrum.Api.html#get_guild_emoji/2"},{"type":"function","title":"Nostrum.Api.get_guild_emoji!/2","doc":"Same as `get_guild_emoji/2`, but raises `Nostrum.Error.ApiError` in case of failure.","ref":"Nostrum.Api.html#get_guild_emoji!/2"},{"type":"function","title":"Nostrum.Api.get_guild_integrations/1","doc":"Gets a list of guild integerations.\n\nGuild to get integrations for is specified by `guild_id`.","ref":"Nostrum.Api.html#get_guild_integrations/1"},{"type":"function","title":"Nostrum.Api.get_guild_invites/1","doc":"Gets a list of invites for a guild.\n\nThis endpoint requires the `MANAGE_GUILD` permission.\n\nIf successful, returns `{:ok, invites}`. Otherwise, returns a `t:Nostrum.Api.error/0`.","ref":"Nostrum.Api.html#get_guild_invites/1"},{"type":"function","title":"Examples - Nostrum.Api.get_guild_invites/1","doc":"```elixir\nNostrum.Api.get_guild_invites(81384788765712384)\n{:ok, [%Nostrum.Struct.Invite{} | _]}\n```","ref":"Nostrum.Api.html#get_guild_invites/1-examples"},{"type":"function","title":"Nostrum.Api.get_guild_invites!/1","doc":"Same as `get_guild_invites/1`, but raises `Nostrum.Error.ApiError` in case of failure.","ref":"Nostrum.Api.html#get_guild_invites!/1"},{"type":"function","title":"Nostrum.Api.get_guild_member/2","doc":"Gets a guild member.\n\nIf successful, returns `{:ok, member}`. Otherwise, returns a `t:Nostrum.Api.error/0`.","ref":"Nostrum.Api.html#get_guild_member/2"},{"type":"function","title":"Examples - Nostrum.Api.get_guild_member/2","doc":"```elixir\nNostrum.Api.get_guild_member(4019283754613, 184937267485)\n```","ref":"Nostrum.Api.html#get_guild_member/2-examples"},{"type":"function","title":"Nostrum.Api.get_guild_member!/2","doc":"Same as `get_guild_member/2`, but raises `Nostrum.Error.ApiError` in case of failure.","ref":"Nostrum.Api.html#get_guild_member!/2"},{"type":"function","title":"Nostrum.Api.get_guild_prune_count/2","doc":"Gets the number of members that would be removed in a prune given `days`.\n\nThis endpoint requires the `KICK_MEMBERS` permission.\n\nIf successful, returns `{:ok, %{pruned: pruned}}`. Otherwise, returns a `t:Nostrum.Api.error/0`.","ref":"Nostrum.Api.html#get_guild_prune_count/2"},{"type":"function","title":"Examples - Nostrum.Api.get_guild_prune_count/2","doc":"```elixir\nNostrum.Api.get_guild_prune_count(81384788765712384, 1)\n{:ok, %{pruned: 0}}\n```","ref":"Nostrum.Api.html#get_guild_prune_count/2-examples"},{"type":"function","title":"Nostrum.Api.get_guild_prune_count!/2","doc":"Same as `get_guild_prune_count/2`, but raises `Nostrum.Error.ApiError` in case of failure.","ref":"Nostrum.Api.html#get_guild_prune_count!/2"},{"type":"function","title":"Nostrum.Api.get_guild_roles/1","doc":"Gets a guild's roles.\n\nIf successful, returns `{:ok, roles}`. Otherwise, returns a `t:Nostrum.Api.error/0`.","ref":"Nostrum.Api.html#get_guild_roles/1"},{"type":"function","title":"Examples - Nostrum.Api.get_guild_roles/1","doc":"```elixir\nNostrum.Api.get_guild_roles(147362948571673)\n```","ref":"Nostrum.Api.html#get_guild_roles/1-examples"},{"type":"function","title":"Nostrum.Api.get_guild_roles!/1","doc":"Same as `get_guild_roles/1`, but raises `Nostrum.Error.ApiError` in case of failure.","ref":"Nostrum.Api.html#get_guild_roles!/1"},{"type":"function","title":"Nostrum.Api.get_guild_scheduled_event/2","doc":"Get a scheduled event for a guild.","ref":"Nostrum.Api.html#get_guild_scheduled_event/2"},{"type":"function","title":"Nostrum.Api.get_guild_scheduled_event_users/3","doc":"Get a list of users who have subscribed to an event.","ref":"Nostrum.Api.html#get_guild_scheduled_event_users/3"},{"type":"function","title":"Options - Nostrum.Api.get_guild_scheduled_event_users/3","doc":"All are optional, with their default values listed.\n* `:limit` (integer) maximum number of users to return, defaults to `100`\n* `:with_member` (boolean) whether to include the member object for each user, defaults to `false`\n* `:before` (`t:Nostrum.Snowflake.t/0`) return only users before this user id, defaults to `nil`\n* `:after` (`t:Nostrum.Snowflake.t/0`) return only users after this user id, defaults to `nil`","ref":"Nostrum.Api.html#get_guild_scheduled_event_users/3-options"},{"type":"function","title":"Nostrum.Api.get_guild_scheduled_events/1","doc":"Get a list of scheduled events for a guild.","ref":"Nostrum.Api.html#get_guild_scheduled_events/1"},{"type":"function","title":"Nostrum.Api.get_guild_sticker/2","doc":"Return the specified sticker from the specified guild.\n\nReturns a `t:Nostrum.Struct.Sticker.t/0`.","ref":"Nostrum.Api.html#get_guild_sticker/2"},{"type":"function","title":"Nostrum.Api.get_guild_webhooks/1","doc":"Gets a list of webhooks for a guild.","ref":"Nostrum.Api.html#get_guild_webhooks/1"},{"type":"function","title":"Parameters - Nostrum.Api.get_guild_webhooks/1","doc":"- `guild_id` - Guild to get webhooks for.","ref":"Nostrum.Api.html#get_guild_webhooks/1-parameters"},{"type":"function","title":"Nostrum.Api.get_guild_widget/1","doc":"Gets a guild embed.","ref":"Nostrum.Api.html#get_guild_widget/1"},{"type":"function","title":"Nostrum.Api.get_invite/2","doc":"Gets an invite by its `invite_code`.\n\nIf successful, returns `{:ok, invite}`. Otherwise, returns a\n`t:Nostrum.Api.error/0`.","ref":"Nostrum.Api.html#get_invite/2"},{"type":"function","title":"Options - Nostrum.Api.get_invite/2","doc":"* `:with_counts` (boolean) - whether to include member count fields","ref":"Nostrum.Api.html#get_invite/2-options"},{"type":"function","title":"Examples - Nostrum.Api.get_invite/2","doc":"```elixir\nNostrum.Api.get_invite(\"zsjUsC\")\n\nNostrum.Api.get_invite(\"zsjUsC\", with_counts: true)\n```","ref":"Nostrum.Api.html#get_invite/2-examples"},{"type":"function","title":"Nostrum.Api.get_invite!/2","doc":"Same as `get_invite/1`, but raises `Nostrum.Error.ApiError` in case of failure.","ref":"Nostrum.Api.html#get_invite!/2"},{"type":"function","title":"Nostrum.Api.get_original_interaction_response/1","doc":"Retrieves the original message of an interaction.","ref":"Nostrum.Api.html#get_original_interaction_response/1"},{"type":"function","title":"Nostrum.Api.get_pinned_messages/1","doc":"Retrieves all pinned messages from a channel.\n\nThis endpoint requires the 'VIEW_CHANNEL' and 'READ_MESSAGE_HISTORY' permissions.\n\nIf successful, returns `{:ok, messages}`. Otherwise, returns a `t:Nostrum.Api.error/0`.","ref":"Nostrum.Api.html#get_pinned_messages/1"},{"type":"function","title":"Examples - Nostrum.Api.get_pinned_messages/1","doc":"```elixir\nNostrum.Api.get_pinned_messages(43189401384091)\n```","ref":"Nostrum.Api.html#get_pinned_messages/1-examples"},{"type":"function","title":"Nostrum.Api.get_pinned_messages!/1","doc":"Same as `get_pinned_messages/1`, but raises `Nostrum.Error.ApiError` in case of failure.","ref":"Nostrum.Api.html#get_pinned_messages!/1"},{"type":"function","title":"Nostrum.Api.get_poll_answer_voters/4","doc":"Get voters for the provided answer on the poll attached to the provided message.\n\nIf successful, returns `{:ok, users}`. Otherwise, returns `t:Nostrum.Api.error/0`.\n\nThe optional `params` are `after`, the user ID to query after, absent by default,\nand `limit`, the max number of users to return, 1-100, 25 by default. Results are\nsorted by Discord user snowflake (ID) in ascending order.","ref":"Nostrum.Api.html#get_poll_answer_voters/4"},{"type":"function","title":"Nostrum.Api.get_poll_answer_voters!/4","doc":"Same as `get_poll_answer_voters/4`, but raises `Nostrum.Error.ApiError` in case of failure.","ref":"Nostrum.Api.html#get_poll_answer_voters!/4"},{"type":"function","title":"Nostrum.Api.get_reactions/4","doc":"Gets all users who reacted with an emoji.\n\nThis endpoint requires the `VIEW_CHANNEL` and `READ_MESSAGE_HISTORY` permissions.\n\nIf successful, returns `{:ok, users}`. Otherwise, returns `t:Nostrum.Api.error/0`.\n\nThe optional `params` are `after`, the user ID to query after, absent by default,\nand `limit`, the max number of users to return, 1-100, 25 by default.\n\nSee `create_reaction/3` for similar examples.","ref":"Nostrum.Api.html#get_reactions/4"},{"type":"function","title":"Nostrum.Api.get_reactions!/4","doc":"Same as `get_reactions/4`, but raises `Nostrum.Error.ApiError` in case of failure.","ref":"Nostrum.Api.html#get_reactions!/4"},{"type":"function","title":"Nostrum.Api.get_sticker/1","doc":"Fetch a sticker with the provided ID.\n\nReturns a `t:Nostrum.Struct.Sticker.t/0`.","ref":"Nostrum.Api.html#get_sticker/1"},{"type":"function","title":"Nostrum.Api.get_sticker_packs/0","doc":"Get a list of available sticker packs.","ref":"Nostrum.Api.html#get_sticker_packs/0"},{"type":"function","title":"Nostrum.Api.get_thread_member/2","doc":"Returns a thread member object for the specified user if they are a member of the thread","ref":"Nostrum.Api.html#get_thread_member/2"},{"type":"function","title":"Nostrum.Api.get_thread_members/1","doc":"Returns a list of thread members for the specified thread.\n\nThis endpoint is restricted according to whether the `GUILD_MEMBERS` privileged intent is enabled.","ref":"Nostrum.Api.html#get_thread_members/1"},{"type":"function","title":"Nostrum.Api.get_user/1","doc":"Gets a user by its `t:Nostrum.Struct.User.id/0`.\n\nIf the request is successful, this function returns `{:ok, user}`, where\n`user` is a `Nostrum.Struct.User`. Otherwise, returns `{:error, reason}`.","ref":"Nostrum.Api.html#get_user/1"},{"type":"function","title":"Nostrum.Api.get_user!/1","doc":"Same as `get_user/1`, but raises `Nostrum.Error.ApiError` in case of failure.","ref":"Nostrum.Api.html#get_user!/1"},{"type":"function","title":"Nostrum.Api.get_user_connections/0","doc":"Gets a list of user connections.","ref":"Nostrum.Api.html#get_user_connections/0"},{"type":"function","title":"Nostrum.Api.get_user_dms/0","doc":"Gets a list of our user's DM channels.\n\nIf successful, returns `{:ok, dm_channels}`. Otherwise, returns a `t:Nostrum.Api.error/0`.","ref":"Nostrum.Api.html#get_user_dms/0"},{"type":"function","title":"Examples - Nostrum.Api.get_user_dms/0","doc":"```elixir\nNostrum.Api.get_user_dms()\n{:ok, [%Nostrum.Struct.Channel{type: 1} | _]}\n```","ref":"Nostrum.Api.html#get_user_dms/0-examples"},{"type":"function","title":"Nostrum.Api.get_user_dms!/0","doc":"Same as `get_user_dms/0`, but raises `Nostrum.Error.ApiError` in case of failure.","ref":"Nostrum.Api.html#get_user_dms!/0"},{"type":"function","title":"Nostrum.Api.get_voice_region/1","doc":"Gets a list of voice regions for the guild.\n\nGuild to get voice regions for is specified by `guild_id`.","ref":"Nostrum.Api.html#get_voice_region/1"},{"type":"function","title":"Nostrum.Api.get_webhook/1","doc":"Gets a webhook by id.","ref":"Nostrum.Api.html#get_webhook/1"},{"type":"function","title":"Parameters - Nostrum.Api.get_webhook/1","doc":"- `webhook_id` - Id of the webhook to get.","ref":"Nostrum.Api.html#get_webhook/1-parameters"},{"type":"function","title":"Nostrum.Api.get_webhook_message/2","doc":"Retrieves the original message of a webhook.","ref":"Nostrum.Api.html#get_webhook_message/2"},{"type":"function","title":"Nostrum.Api.get_webhook_with_token/2","doc":"Gets a webhook by id and token.\n\nThis method is exactly like `get_webhook/1` but does not require\nauthentication.","ref":"Nostrum.Api.html#get_webhook_with_token/2"},{"type":"function","title":"Parameters - Nostrum.Api.get_webhook_with_token/2","doc":"- `webhook_id` - Id of the webhook to get.\n - `webhook_token` - Token of the webhook to get.","ref":"Nostrum.Api.html#get_webhook_with_token/2-parameters"},{"type":"function","title":"Nostrum.Api.join_thread/1","doc":"Join an existing thread, requires that the thread is not archived.","ref":"Nostrum.Api.html#join_thread/1"},{"type":"function","title":"Nostrum.Api.leave_guild/1","doc":"Leaves a guild.\n\nGuild to leave is specified by `guild_id`.","ref":"Nostrum.Api.html#leave_guild/1"},{"type":"function","title":"Nostrum.Api.leave_thread/1","doc":"Leave a thread, requires that the thread is not archived.","ref":"Nostrum.Api.html#leave_thread/1"},{"type":"function","title":"Nostrum.Api.list_guild_emojis/1","doc":"Gets a list of emojis for a given guild.\n\nThis endpoint requires the `MANAGE_EMOJIS` permission.\n\nIf successful, returns `{:ok, emojis}`. Otherwise, returns `t:Nostrum.Api.error/0`.","ref":"Nostrum.Api.html#list_guild_emojis/1"},{"type":"function","title":"Nostrum.Api.list_guild_emojis!/1","doc":"Same as `list_guild_emojis/1`, but raises `Nostrum.Error.ApiError` in case of failure.","ref":"Nostrum.Api.html#list_guild_emojis!/1"},{"type":"function","title":"Nostrum.Api.list_guild_members/2","doc":"Gets a list of a guild's members.\n\nIf successful, returns `{:ok, members}`. Otherwise, returns a `t:Nostrum.Api.error/0`.","ref":"Nostrum.Api.html#list_guild_members/2"},{"type":"function","title":"Options - Nostrum.Api.list_guild_members/2","doc":"* `:limit` (integer) - max number of members to return (1-1000) (default: 1)\n * `:after` (`t:Nostrum.Struct.User.id/0`) - the highest user id in the previous page (default: 0)","ref":"Nostrum.Api.html#list_guild_members/2-options"},{"type":"function","title":"Examples - Nostrum.Api.list_guild_members/2","doc":"```elixir\nNostrum.Api.list_guild_members(41771983423143937, limit: 1)\n```","ref":"Nostrum.Api.html#list_guild_members/2-examples"},{"type":"function","title":"Nostrum.Api.list_guild_members!/2","doc":"Same as `list_guild_members/2`, but raises `Nostrum.Error.ApiError` in case of failure.","ref":"Nostrum.Api.html#list_guild_members!/2"},{"type":"function","title":"Nostrum.Api.list_guild_stickers/1","doc":"List all stickers in the provided guild.\n\nReturns a list of `t:Nostrum.Struct.Sticker.t/0`.","ref":"Nostrum.Api.html#list_guild_stickers/1"},{"type":"function","title":"Nostrum.Api.list_guild_threads/1","doc":"Return all active threads for the current guild.\n\nResponse body is a map with the following keys:\n- `threads`: A list of channel objects.\n- `members`: A list of `ThreadMember` objects, one for each returned thread the current user has joined.","ref":"Nostrum.Api.html#list_guild_threads/1"},{"type":"function","title":"Nostrum.Api.list_joined_private_archived_threads/2","doc":"Same as `list_public_archived_threads/2`, but only returns private threads that the current user has joined.","ref":"Nostrum.Api.html#list_joined_private_archived_threads/2"},{"type":"function","title":"Nostrum.Api.list_private_archived_threads/2","doc":"Same as `list_public_archived_threads/2`, but for private threads instead of public.","ref":"Nostrum.Api.html#list_private_archived_threads/2"},{"type":"function","title":"Nostrum.Api.list_public_archived_threads/2","doc":"Returns a list of archived threads for a given channel.\n\nThreads are sorted by the `archive_timestamp` field, in descending order.","ref":"Nostrum.Api.html#list_public_archived_threads/2"},{"type":"function","title":"Response body - Nostrum.Api.list_public_archived_threads/2","doc":"Response body is a map with the following keys:\n- `threads`: A list of channel objects.\n- `members`: A list of `ThreadMember` objects, one for each returned thread the current user has joined.\n- `has_more`: A boolean indicating whether there are more archived threads that can be fetched.","ref":"Nostrum.Api.html#list_public_archived_threads/2-response-body"},{"type":"function","title":"Options - Nostrum.Api.list_public_archived_threads/2","doc":"- `before`: Returns threads before this timestamp, can be either a `DateTime` or [ISO8601 timestamp](`DateTime.to_iso8601/3`).\n- `limit`: Optional maximum number of threads to return.","ref":"Nostrum.Api.html#list_public_archived_threads/2-options"},{"type":"function","title":"Nostrum.Api.list_voice_regions/0","doc":"Gets a list of voice regions.","ref":"Nostrum.Api.html#list_voice_regions/0"},{"type":"function","title":"Nostrum.Api.modify_channel/3","doc":"Modifies a channel's settings.\n\nAn optional `reason` can be given for the guild audit log.\n\nIf a `t:Nostrum.Struct.Channel.guild_channel/0` is being modified, this\nendpoint requires the `MANAGE_CHANNEL` permission. It fires a\n`t:Nostrum.Consumer.channel_update/0` event. If a\n`t:Nostrum.Struct.Channel.guild_category_channel/0` is being modified, then this\nendpoint fires multiple `t:Nostrum.Consumer.channel_update/0` events.\n\nIf successful, returns `{:ok, channel}`. Otherwise, returns a `t:Nostrum.Api.error/0`.","ref":"Nostrum.Api.html#modify_channel/3"},{"type":"function","title":"Options - Nostrum.Api.modify_channel/3","doc":"* `:name` (string) - 2-100 character channel name\n * `:position` (integer) - the position of the channel in the left-hand listing\n * `:topic` (string) (`t:Nostrum.Struct.Channel.text_channel/0` only) -\n 0-1024 character channel topic\n * `:nsfw` (boolean) (`t:Nostrum.Struct.Channel.text_channel/0` only) -\n if the channel is nsfw\n * `:bitrate` (integer) (`t:Nostrum.Struct.Channel.voice_channel/0` only) -\n the bitrate (in bits) of the voice channel; 8000 to 96000 (128000 for VIP servers)\n * `:user_limit` (integer) (`t:Nostrum.Struct.Channel.voice_channel/0` only) -\n the user limit of the voice channel; 0 refers to no limit, 1 to 99 refers to a user limit\n * `:permission_overwrites` (list of `t:Nostrum.Struct.Overwrite.t/0` or equivalent map) -\n channel or category-specific permissions\n * `:parent_id` (`t:Nostrum.Struct.Channel.id/0`) (`t:Nostrum.Struct.Channel.guild_channel/0` only) -\n id of the new parent category for a channel","ref":"Nostrum.Api.html#modify_channel/3-options"},{"type":"function","title":"Examples - Nostrum.Api.modify_channel/3","doc":"```elixir\nNostrum.Api.modify_channel(41771983423143933, name: \"elixir-nostrum\", topic: \"nostrum discussion\")\n{:ok, %Nostrum.Struct.Channel{id: 41771983423143933, name: \"elixir-nostrum\", topic: \"nostrum discussion\"}}\n\nNostrum.Api.modify_channel(41771983423143933)\n{:ok, %Nostrum.Struct.Channel{id: 41771983423143933}}\n```","ref":"Nostrum.Api.html#modify_channel/3-examples"},{"type":"function","title":"Nostrum.Api.modify_channel!/3","doc":"Same as `modify_channel/2`, but raises `Nostrum.Error.ApiError` in case of failure.","ref":"Nostrum.Api.html#modify_channel!/3"},{"type":"function","title":"Nostrum.Api.modify_current_user/1","doc":"Changes the username or avatar of the current user.","ref":"Nostrum.Api.html#modify_current_user/1"},{"type":"function","title":"Options - Nostrum.Api.modify_current_user/1","doc":"* `:username` (string) - new username\n * `:avatar` (string) - the user's avatar as [avatar data](https://discord.com/developers/docs/resources/user#avatar-data)","ref":"Nostrum.Api.html#modify_current_user/1-options"},{"type":"function","title":"Examples - Nostrum.Api.modify_current_user/1","doc":"```elixir\nNostrum.Api.modify_current_user(avatar: \"data:image/jpeg;base64,YXl5IGJieSB1IGx1a2luIDQgc3VtIGZ1az8=\")\n```","ref":"Nostrum.Api.html#modify_current_user/1-examples"},{"type":"function","title":"Nostrum.Api.modify_current_user!/1","doc":"Same as `modify_current_user/1`, but raises `Nostrum.Error.ApiError` in case of failure.","ref":"Nostrum.Api.html#modify_current_user!/1"},{"type":"function","title":"Nostrum.Api.modify_current_user_nick/2","doc":"Modifies the nickname of the current user in a guild.\n\nIf successful, returns `{:ok, %{nick: nick}}`. Otherwise, returns a `t:Nostrum.Api.error/0`.","ref":"Nostrum.Api.html#modify_current_user_nick/2"},{"type":"function","title":"Options - Nostrum.Api.modify_current_user_nick/2","doc":"* `:nick` (string) - value to set users nickname to","ref":"Nostrum.Api.html#modify_current_user_nick/2-options"},{"type":"function","title":"Examples - Nostrum.Api.modify_current_user_nick/2","doc":"```elixir\nNostrum.Api.modify_current_user_nick(41771983423143937, nick: \"Nostrum\")\n{:ok, %{nick: \"Nostrum\"}}\n```","ref":"Nostrum.Api.html#modify_current_user_nick/2-examples"},{"type":"function","title":"Nostrum.Api.modify_current_user_nick!/2","doc":"Same as `modify_current_user_nick/2`, but raises `Nostrum.Error.ApiError` in case of failure.","ref":"Nostrum.Api.html#modify_current_user_nick!/2"},{"type":"function","title":"Nostrum.Api.modify_guild/3","doc":"Modifies a guild's settings.\n\nThis endpoint requires the `MANAGE_GUILD` permission. It fires the\n`t:Nostrum.Consumer.guild_update/0` event.\n\nAn optional `reason` can be provided for the audit log.\n\nIf successful, returns `{:ok, guild}`. Otherwise, returns a `t:Nostrum.Api.error/0`.","ref":"Nostrum.Api.html#modify_guild/3"},{"type":"function","title":"Options - Nostrum.Api.modify_guild/3","doc":"* `:name` (string) - guild name\n * `:region` (string) - guild voice region id\n * `:verification_level` (integer) - verification level\n * `:default_message_notifications` (integer) - default message\n notification level\n * `:explicit_content_filter` (integer) - explicit content filter level\n * `:afk_channel_id` (`t:Nostrum.Snowflake.t/0`) - id for afk channel\n * `:afk_timeout` (integer) - afk timeout in seconds\n * `:icon` (base64 data URI) - 128x128 jpeg image for the guild icon\n * `:owner_id` (`t:Nostrum.Snowflake.t/0`) - user id to transfer\n guild ownership to (must be owner)\n * `:splash` (base64 data URI) - 128x128 jpeg image for the guild splash\n (VIP only)\n * `:system_channel_id` (`t:Nostrum.Snowflake.t/0`) - the id of the\n channel to which system messages are sent\n * `:rules_channel_id` (`t:Nostrum.Snowflake.t/0`) - the id of the channel that\n is used for rules in public guilds\n * `:public_updates_channel_id` (`t:Nostrum.Snowflake.t/0`) - the id of the channel\n where admins and moderators receive notices from Discord in public guilds","ref":"Nostrum.Api.html#modify_guild/3-options"},{"type":"function","title":"Examples - Nostrum.Api.modify_guild/3","doc":"```elixir\nNostrum.Api.modify_guild(451824027976073216, name: \"Nose Drum\")\n{:ok, %Nostrum.Struct.Guild{id: 451824027976073216, name: \"Nose Drum\", ...}}\n```","ref":"Nostrum.Api.html#modify_guild/3-examples"},{"type":"function","title":"Nostrum.Api.modify_guild!/2","doc":"Same as `modify_guild/2`, but raises `Nostrum.Error.ApiError` in case of failure.","ref":"Nostrum.Api.html#modify_guild!/2"},{"type":"function","title":"Nostrum.Api.modify_guild_auto_moderation_rule/3","doc":"Modify an auto-moderation rule for a guild.\n\nTakes the same options as `create_guild_auto_moderation_rule/2`, however all fields are optional.","ref":"Nostrum.Api.html#modify_guild_auto_moderation_rule/3"},{"type":"function","title":"Nostrum.Api.modify_guild_channel_positions/2","doc":"Reorders a guild's channels.\n\nThis endpoint requires the `MANAGE_CHANNELS` permission. It fires multiple\n`t:Nostrum.Consumer.channel_update/0` events.\n\nIf successful, returns `{:ok, channels}`. Otherwise, returns a `t:Nostrum.Api.error/0`.\n\n`positions` is a list of maps that each map a channel id with a position.","ref":"Nostrum.Api.html#modify_guild_channel_positions/2"},{"type":"function","title":"Examples - Nostrum.Api.modify_guild_channel_positions/2","doc":"```elixir\nNostrum.Api.modify_guild_channel_positions(279093381723062272, [%{id: 351500354581692420, position: 2}])\n{:ok}\n```","ref":"Nostrum.Api.html#modify_guild_channel_positions/2-examples"},{"type":"function","title":"Nostrum.Api.modify_guild_channel_positions!/2","doc":"Same as `modify_guild_channel_positions/2`, but raises `Nostrum.Error.ApiError` in case of failure.","ref":"Nostrum.Api.html#modify_guild_channel_positions!/2"},{"type":"function","title":"Nostrum.Api.modify_guild_emoji/4","doc":"Modify the given emoji.\n\nThis endpoint requires the `MANAGE_EMOJIS` permission. It fires a\n`t:Nostrum.Consumer.guild_emojis_update/0` event.\n\nAn optional `reason` can be provided for the audit log.\n\nIf successful, returns `{:ok, emoji}`. Otherwise, returns `t:Nostrum.Api.error/0`.","ref":"Nostrum.Api.html#modify_guild_emoji/4"},{"type":"function","title":"Options - Nostrum.Api.modify_guild_emoji/4","doc":"* `:name` (string) - name of the emoji\n * `:roles` (list of `t:Nostrum.Snowflake.t/0`) - roles to which this emoji will be whitelisted","ref":"Nostrum.Api.html#modify_guild_emoji/4-options"},{"type":"function","title":"Examples - Nostrum.Api.modify_guild_emoji/4","doc":"```elixir\nNostrum.Api.modify_guild_emoji(43189401384091, 4314301984301, name: \"elixir\", roles: [])\n```","ref":"Nostrum.Api.html#modify_guild_emoji/4-examples"},{"type":"function","title":"Nostrum.Api.modify_guild_emoji!/4","doc":"Same as `modify_guild_emoji/3`, but raises `Nostrum.Error.ApiError` in case of failure.","ref":"Nostrum.Api.html#modify_guild_emoji!/4"},{"type":"function","title":"Nostrum.Api.modify_guild_integrations/3","doc":"Changes the settings and behaviours for a guild integeration.\n\nIntegration to modify is specified by `guild_id` and `integeration_id`.\n\n`options` is a map with the following keys:\n * `expire_behavior` - Expiry behavior.\n * `expire_grace_period` - Period where the integration will ignore elapsed subs.\n * `enable_emoticons` - Whether emoticons should be synced.","ref":"Nostrum.Api.html#modify_guild_integrations/3"},{"type":"function","title":"Nostrum.Api.modify_guild_member/4","doc":"Modifies a guild member's attributes.\n\nThis endpoint fires the `t:Nostrum.Consumer.guild_member_update/0` event.\nIt situationally requires the `MANAGE_NICKNAMES`, `MANAGE_ROLES`,\n`MUTE_MEMBERS`, `DEAFEN_MEMBERS`, and `MOVE_MEMBERS` permissions.\n\nIf successful, returns `{:ok, member}`. Otherwise, returns a `t:Nostrum.Api.error/0`.\n\nAn optional `reason` argument can be given for the audit log.","ref":"Nostrum.Api.html#modify_guild_member/4"},{"type":"function","title":"Options - Nostrum.Api.modify_guild_member/4","doc":"* `:nick` (string) - value to set users nickname to\n * `:roles` (list of `t:Nostrum.Snowflake.t/0`) - array of role ids the member is assigned\n * `:mute` (boolean) - if the user is muted\n * `:deaf` (boolean) - if the user is deafened\n * `:channel_id` (`t:Nostrum.Snowflake.t/0`) - id of channel to move user to (if they are connected to voice)\n * `:communication_disabled_until` (`t:DateTime.t/0` or `nil`) - datetime to disable user communication (timeout) until, or `nil` to remove timeout.","ref":"Nostrum.Api.html#modify_guild_member/4-options"},{"type":"function","title":"Examples - Nostrum.Api.modify_guild_member/4","doc":"```elixir\nNostrum.Api.modify_guild_member(41771983423143937, 637162356451, nick: \"Nostrum\")\n{:ok, %Nostrum.Struct.Member{}}\n```","ref":"Nostrum.Api.html#modify_guild_member/4-examples"},{"type":"function","title":"Nostrum.Api.modify_guild_member!/4","doc":"Same as `modify_guild_member/3`, but raises `Nostrum.Error.ApiError` in case of failure.","ref":"Nostrum.Api.html#modify_guild_member!/4"},{"type":"function","title":"Nostrum.Api.modify_guild_role/4","doc":"Modifies a guild role.\n\nThis endpoint requires the `MANAGE_ROLES` permission. It fires a\n`t:Nostrum.Consumer.guild_role_update/0` event.\n\nAn optional `reason` can be specified for the audit log.\n\nIf successful, returns `{:ok, role}`. Otherwise, returns a `t:Nostrum.Api.error/0`.","ref":"Nostrum.Api.html#modify_guild_role/4"},{"type":"function","title":"Options - Nostrum.Api.modify_guild_role/4","doc":"* `:name` (string) - name of the role\n * `:permissions` (integer) - bitwise of the enabled/disabled permissions\n * `:color` (integer) - RGB color value (default: 0)\n * `:hoist` (boolean) - whether the role should be displayed separately in the sidebar\n * `:mentionable` (boolean) - whether the role should be mentionable","ref":"Nostrum.Api.html#modify_guild_role/4-options"},{"type":"function","title":"Examples - Nostrum.Api.modify_guild_role/4","doc":"```elixir\nNostrum.Api.modify_guild_role(41771983423143937, 392817238471936, hoist: false, name: \"foo-bar\")\n```","ref":"Nostrum.Api.html#modify_guild_role/4-examples"},{"type":"function","title":"Nostrum.Api.modify_guild_role!/4","doc":"Same as `modify_guild_role/3`, but raises `Nostrum.Error.ApiError` in case of failure.","ref":"Nostrum.Api.html#modify_guild_role!/4"},{"type":"function","title":"Nostrum.Api.modify_guild_role_positions/3","doc":"Reorders a guild's roles.\n\nThis endpoint requires the `MANAGE_ROLES` permission. It fires multiple\n`t:Nostrum.Consumer.guild_role_update/0` events.\n\nIf successful, returns `{:ok, roles}`. Otherwise, returns a `t:Nostrum.Api.error/0`.\n\n`positions` is a list of maps that each map a role id with a position.","ref":"Nostrum.Api.html#modify_guild_role_positions/3"},{"type":"function","title":"Examples - Nostrum.Api.modify_guild_role_positions/3","doc":"```elixir\nNostrum.Api.modify_guild_role_positions(41771983423143937, [%{id: 41771983423143936, position: 2}])\n```","ref":"Nostrum.Api.html#modify_guild_role_positions/3-examples"},{"type":"function","title":"Nostrum.Api.modify_guild_role_positions!/3","doc":"Same as `modify_guild_role_positions/2`, but raises `Nostrum.Error.ApiError` in case of failure.","ref":"Nostrum.Api.html#modify_guild_role_positions!/3"},{"type":"function","title":"Nostrum.Api.modify_guild_scheduled_event/4","doc":"Modify a scheduled event for a guild.\n\nOptions are the same as for `create_guild_scheduled_event/2` except all fields are optional,\nwith the additional optional integer field `:status` which can be one of:\n\n * `1` - `SCHEDULED`\n * `2` - `ACTIVE`\n * `3` - `COMPLETED`\n * `4` - `CANCELLED`\n\nCopied from the official documentation:\n* If updating entity_type to `EXTERNAL`:\n * `channel_id` is required and must be set to null\n * `entity_metadata` with a `location` field must be provided\n * `scheduled_end_time` must be provided","ref":"Nostrum.Api.html#modify_guild_scheduled_event/4"},{"type":"function","title":"Nostrum.Api.modify_guild_sticker/3","doc":"Modify a guild sticker with the specified ID.\n\nPass in a map of properties to update, with any of the following keys:\n\n- `name`: Name of the sticker (2-30 characters)\n- `description`: Description of the sticker (2-100 characters)\n- `tags`: Autocomplete/suggestion tags for the sticker (max 200 characters)\n\nReturns an updated sticker on update completion.","ref":"Nostrum.Api.html#modify_guild_sticker/3"},{"type":"function","title":"Nostrum.Api.modify_guild_widget/2","doc":"Modifies a guild embed.","ref":"Nostrum.Api.html#modify_guild_widget/2"},{"type":"function","title":"Nostrum.Api.modify_webhook/3","doc":"Modifies a webhook.","ref":"Nostrum.Api.html#modify_webhook/3"},{"type":"function","title":"Parameters - Nostrum.Api.modify_webhook/3","doc":"- `webhook_id` - Id of the webhook to modify.\n - `args` - Map with the following *optional* keys:\n - `name` - Name of the webhook.\n - `avatar` - Base64 128x128 jpeg image for the default avatar.\n - `reason` - An optional reason for the guild audit log.","ref":"Nostrum.Api.html#modify_webhook/3-parameters"},{"type":"function","title":"Nostrum.Api.modify_webhook_with_token/4","doc":"Modifies a webhook with a token.\n\nThis method is exactly like `modify_webhook/1` but does not require\nauthentication.","ref":"Nostrum.Api.html#modify_webhook_with_token/4"},{"type":"function","title":"Parameters - Nostrum.Api.modify_webhook_with_token/4","doc":"- `webhook_id` - Id of the webhook to modify.\n - `webhook_token` - Token of the webhook to get.\n - `args` - Map with the following *optional* keys:\n - `name` - Name of the webhook.\n - `avatar` - Base64 128x128 jpeg image for the default avatar.\n - `reason` - An optional reason for the guild audit log.","ref":"Nostrum.Api.html#modify_webhook_with_token/4-parameters"},{"type":"function","title":"Nostrum.Api.remove_guild_ban/3","doc":"Removes a ban for a user.\n\nUser to unban is specified by `guild_id` and `user_id`.\nAn optional `reason` can be specified for the audit log.","ref":"Nostrum.Api.html#remove_guild_ban/3"},{"type":"function","title":"Nostrum.Api.remove_guild_member/3","doc":"Removes a member from a guild.\n\nThis event requires the `KICK_MEMBERS` permission. It fires a\n`t:Nostrum.Consumer.guild_member_remove/0` event.\n\nAn optional reason can be provided for the audit log with `reason`.\n\nIf successful, returns `{:ok}`. Otherwise, returns a `t:Nostrum.Api.error/0`.","ref":"Nostrum.Api.html#remove_guild_member/3"},{"type":"function","title":"Examples - Nostrum.Api.remove_guild_member/3","doc":"```elixir\nNostrum.Api.remove_guild_member(1453827904102291, 18739485766253)\n{:ok}\n```","ref":"Nostrum.Api.html#remove_guild_member/3-examples"},{"type":"function","title":"Nostrum.Api.remove_guild_member!/3","doc":"Same as `remove_guild_member/2`, but raises `Nostrum.Error.ApiError` in case of failure.","ref":"Nostrum.Api.html#remove_guild_member!/3"},{"type":"function","title":"Nostrum.Api.remove_guild_member_role/4","doc":"Removes a role from a member.\n\nRole to remove is specified by `role_id`.\nUser to remove role from is specified by `guild_id` and `user_id`.\nAn optional `reason` can be given for the audit log.","ref":"Nostrum.Api.html#remove_guild_member_role/4"},{"type":"function","title":"Nostrum.Api.remove_thread_member/2","doc":"Removes another user from a thread, requires that the thread is not archived.\n\nAlso requires the `MANAGE_THREADS` permission, or the creator of the thread if the thread is private.","ref":"Nostrum.Api.html#remove_thread_member/2"},{"type":"function","title":"Nostrum.Api.request/1","doc":"","ref":"Nostrum.Api.html#request/1"},{"type":"function","title":"Nostrum.Api.request/4","doc":"","ref":"Nostrum.Api.html#request/4"},{"type":"function","title":"Nostrum.Api.request_multipart/4","doc":"","ref":"Nostrum.Api.html#request_multipart/4"},{"type":"function","title":"Nostrum.Api.start_thread/3","doc":"Create a thread on a channel without an associated message.\n\nIf successful, returns `{:ok, Channel}`. Otherwise returns a `t:Nostrum.Api.error/0`.\n\nAn optional `reason` argument can be given for the audit log.","ref":"Nostrum.Api.html#start_thread/3"},{"type":"function","title":"Options - Nostrum.Api.start_thread/3","doc":"- `name`: Name of the thread, max 100 characters.\n- `type`: Type of thread, can be either 11 (`GUILD_PUBLIC_THREAD`) or 12 (`GUILD_PRIVATE_THREAD`).\n- `auto_archive_duration`: Duration in minutes to auto-archive the thread after it has been inactive, can be set to 60, 1440, 4320, or 10080.\n- `invitable`: whether non-moderators can add other non-moderators to a thread; only available when creating a private thread defaults to `false`.\n- `rate_limit_per_user`: Rate limit per user in seconds, can be set to any value in `0..21600`.","ref":"Nostrum.Api.html#start_thread/3-options"},{"type":"function","title":"Nostrum.Api.start_thread_in_forum_channel/3","doc":"Create a new thread in a forum channel.\n\nIf successful, returns `{:ok, Channel}`. Otherwise returns a `t:Nostrum.Api.error/0`.\n\nAn optional `reason` argument can be given for the audit log.","ref":"Nostrum.Api.html#start_thread_in_forum_channel/3"},{"type":"function","title":"Options - Nostrum.Api.start_thread_in_forum_channel/3","doc":"- `name`: Name of the thread, max 100 characters.\n- `auto_archive_duration`: Duration in minutes to auto-archive the thread after it has been inactive, can be set to 60, 1440, 4320, or 10080.\n- `rate_limit_per_user`: Rate limit per user in seconds, can be set to any value in `0..21600`.\n- `applied_tags`: An array of tag ids to apply to the thread.\n- `message`: The first message in the created thread.","ref":"Nostrum.Api.html#start_thread_in_forum_channel/3-options"},{"type":"function","title":"Thread Message Options - Nostrum.Api.start_thread_in_forum_channel/3","doc":"- `content`: The content of the message.\n- `embeds`: A list of embeds.\n- `allowed_mentions`: Allowed mentions object.\n- `components`: A list of components.\n- `sticker_ids`: A list of sticker ids.\n- `:files` - a list of files where each element is the same format as the `:file` option. If both\n `:file` and `:files` are specified, `:file` will be prepended to the `:files` list.\n\nAt least one of `content`, `embeds`, `sticker_ids`, or `files` must be specified.","ref":"Nostrum.Api.html#start_thread_in_forum_channel/3-thread-message-options"},{"type":"function","title":"Nostrum.Api.start_thread_with_message/4","doc":"Create a thread on a channel message.\n\nThe `thread_id` will be the same as the id of the message, as such no message can have more than one thread.\n\nIf successful, returns `{:ok, Channel}`. Otherwise returns a `t:Nostrum.Api.error/0`.\n\nAn optional `reason` argument can be given for the audit log.","ref":"Nostrum.Api.html#start_thread_with_message/4"},{"type":"function","title":"Options - Nostrum.Api.start_thread_with_message/4","doc":"- `name`: Name of the thread, max 100 characters.\n- `auto_archive_duration`: Duration in minutes to auto-archive the thread after it has been inactive, can be set to 60, 1440, 4320, or 10080.\n- `rate_limit_per_user`: Rate limit per user in seconds, can be set to any value in `0..21600`.","ref":"Nostrum.Api.html#start_thread_with_message/4-options"},{"type":"function","title":"Nostrum.Api.start_typing/1","doc":"Triggers the typing indicator.\n\nTriggers the typing indicator in the channel specified by `channel_id`.\nThe typing indicator lasts for about 8 seconds and then automatically stops.\n\nReturns `{:ok}` if successful. `error` otherwise.","ref":"Nostrum.Api.html#start_typing/1"},{"type":"function","title":"Nostrum.Api.start_typing!/1","doc":"Same as `start_typing/1`, but raises `Nostrum.Error.ApiError` in case of failure.","ref":"Nostrum.Api.html#start_typing!/1"},{"type":"function","title":"Nostrum.Api.sync_guild_integrations/2","doc":"Syncs a guild integration.\n\nIntegration to sync is specified by `guild_id` and `integeration_id`.","ref":"Nostrum.Api.html#sync_guild_integrations/2"},{"type":"function","title":"Nostrum.Api.update_shard_status/5","doc":"Updates the status of the bot for a certain shard.","ref":"Nostrum.Api.html#update_shard_status/5"},{"type":"function","title":"Parameters - Nostrum.Api.update_shard_status/5","doc":"- `pid` - Pid of the shard.\n - `status` - Status of the bot.\n - `game` - The 'playing' text of the bot. Empty will clear.\n - `type` - The type of status to show. 0 (Playing) | 1 (Streaming) | 2 (Listening) | 3 (Watching)\n - `stream` - URL of twitch.tv stream","ref":"Nostrum.Api.html#update_shard_status/5-parameters"},{"type":"function","title":"Nostrum.Api.update_status/4","doc":"Updates the status of the bot for all shards.\n\nSee `update_shard_status/5` for usage.","ref":"Nostrum.Api.html#update_status/4"},{"type":"function","title":"Nostrum.Api.update_voice_state/4","doc":"Joins, moves, or disconnects the bot from a voice channel.\n\nThe correct shard to send the update to will be inferred from the\n`guild_id`. If a corresponding `guild_id` is not found a cache error will be\nraised.\n\nTo disconnect from a channel, `channel_id` should be set to `nil`.","ref":"Nostrum.Api.html#update_voice_state/4"},{"type":"type","title":"Nostrum.Api.allowed_mention/0","doc":"Represents which mentions to allow in a message.\n\nThis can be sent on its own or in a list to allow multiple types of\nmentions in a message, see `t:allowed_mentions/0` for details.","ref":"Nostrum.Api.html#t:allowed_mention/0"},{"type":"type","title":"Nostrum.Api.allowed_mentions/0","doc":"Represents mentions to allow in a message.\n\nWith this option you can control when content from a message should trigger a ping.\nConsider using this option when you are going to display user generated content.","ref":"Nostrum.Api.html#t:allowed_mentions/0"},{"type":"type","title":"Allowed values - Nostrum.Api.allowed_mentions/0","doc":"* `:all` (default) - Ping everything as usual\n * `:none` - Nobody will be pinged\n * `:everyone` - Allows to ping @here and @everyone\n * `:users` - Allows to ping users\n * `:roles` - Allows to ping roles\n * `{:users, list}` - Allows to ping list of users. Can contain up to 100 ids of users.\n * `{:roles, list}` - Allows to ping list of roles. Can contain up to 100 ids of roles.\n * list - a list containing the values above.","ref":"Nostrum.Api.html#t:allowed_mentions/0-allowed-values"},{"type":"type","title":"Nostrum.Api.emoji/0","doc":"Represents an emoji for interacting with reaction endpoints.","ref":"Nostrum.Api.html#t:emoji/0"},{"type":"type","title":"Nostrum.Api.error/0","doc":"Represents a failed response from the API.\n\nThis occurs when `:gun` fails, or when the API doesn't respond with `200` or `204`.","ref":"Nostrum.Api.html#t:error/0"},{"type":"type","title":"Nostrum.Api.limit/0","doc":"Represents a limit used to retrieve messages.\n\nInteger number of messages, or :infinity to retrieve all messages.","ref":"Nostrum.Api.html#t:limit/0"},{"type":"type","title":"Nostrum.Api.locator/0","doc":"Represents a tuple used to locate messages.\n\nThe first element of the tuple is an atom.\nThe second element will be a message_id as an integer.\nThe tuple can also be empty to search from the most recent message in the channel","ref":"Nostrum.Api.html#t:locator/0"},{"type":"type","title":"Nostrum.Api.matrix/0","doc":"","ref":"Nostrum.Api.html#t:matrix/0"},{"type":"type","title":"Nostrum.Api.options/0","doc":"Represents optional parameters for Api functions.\n\nEach function has documentation regarding what parameters it\nsupports or needs.","ref":"Nostrum.Api.html#t:options/0"},{"type":"type","title":"Nostrum.Api.status/0","doc":"Represents different statuses the bot can have.\n\n - `:dnd` - Red circle.\n - `:idle` - Yellow circle.\n - `:online` - Green circle.\n - `:invisible` - The bot will appear offline.","ref":"Nostrum.Api.html#t:status/0"},{"type":"type","title":"Nostrum.Api.thread_with_message_params/0","doc":"","ref":"Nostrum.Api.html#t:thread_with_message_params/0"},{"type":"type","title":"Nostrum.Api.thread_without_message_params/0","doc":"","ref":"Nostrum.Api.html#t:thread_without_message_params/0"},{"type":"behaviour","title":"Nostrum.Consumer","doc":"Consumer process for gateway event handling.","ref":"Nostrum.Consumer.html"},{"type":"behaviour","title":"Consuming gateway events - Nostrum.Consumer","doc":"Events are first ingested by nostrum's cache. Afterwards, they are sent to\nany subscribed consumers via `Nostrum.ConsumerGroup`.\n\nBy default, nostrum will start a process for each event. This gives us free\nparallelism and isolation. You therefore do not need to start more than one\nconsumer in your supervision tree. If you want to override this behaviour,\nimplement the `handle_info/2` function in your consumer. For reference, this\nis the default implementation:\n\n```elixir\n def handle_info({:event, event}, state) do\n Task.start_link(fn ->\n __MODULE__.handle_event(event)\n end)\n\n {:noreply, state}\n end\n```","ref":"Nostrum.Consumer.html#module-consuming-gateway-events"},{"type":"behaviour","title":"Running multiple consumers - Nostrum.Consumer","doc":"**Every process that is in a `Nostrum.ConsumerGroup` receives every event**:\nit is therefore not recommended to create multiple consumers if a single one\ncould accomplish the job.","ref":"Nostrum.Consumer.html#module-running-multiple-consumers"},{"type":"behaviour","title":"Example consumer - Nostrum.Consumer","doc":"An example consumer could look as follows:\n\n```elixir\n# Sourced from examples/event_consumer.ex\ndefmodule ExampleSupervisor do\n use Supervisor\n\n def start_link(args) do\n Supervisor.start_link(__MODULE__, args, name: __MODULE__)\n end\n\n @impl true\n def init(_init_arg) do\n children = [ExampleConsumer]\n\n Supervisor.init(children, strategy: :one_for_one)\n end\nend\n\ndefmodule ExampleConsumer do\n use Nostrum.Consumer\n\n alias Nostrum.Api\n\n def handle_event({:MESSAGE_CREATE, msg, _ws_state}) do\n case msg.content do\n \"!sleep\" ->\n Api.create_message(msg.channel_id, \"Going to sleep...\")\n # This won't stop other events from being handled.\n Process.sleep(3000)\n\n \"!ping\" ->\n Api.create_message(msg.channel_id, \"pyongyang!\")\n\n \"!raise\" ->\n # This won't crash the entire Consumer.\n raise \"No problems here!\"\n\n _ ->\n :ignore\n end\n end\nend\n\n```\n\n> ### `use Nostrum.Consumer` {: .info}\n>\n> Using `Nostrum.Consumer` will:\n>\n> - `use GenServer` (as the consumer is built on `GenServer`)\n> - set the behaviour to `Nostrum.Consumer`\n> - define `child_spec/1`, `start_link/1` and `init/1` for the `GenServer` to\n> automatically join the `Nostrum.ConsumerGroup` on boot\n> - define `handle_info/2` to automatically dispatch any events to your\n> `c:handle_event/1` via a `Task`\n> - inject a default `handle_event/1` clause to ignore any unhandled events.","ref":"Nostrum.Consumer.html#module-example-consumer"},{"type":"callback","title":"Nostrum.Consumer.handle_event/1","doc":"Callback used to handle events.","ref":"Nostrum.Consumer.html#c:handle_event/1"},{"type":"callback","title":"Event - Nostrum.Consumer.handle_event/1","doc":"`event` is a tuple describing the event. The tuple will include information in\nthe following format:\n```elixir\n{event_name, {event_payload(s)}, WSState.t}\n```\n\nFor example, a message create will look like this\n```elixir\n{:MESSAGE_CREATE, Nostrum.Struct.Message.t, WSState.t}\n```\n\nIn some cases there will be multiple payloads when something is updated, so as\nto include the new and the old versions. In the event of there being two payloads,\nthe old payload will always be first, followed by the new payload.\n```elixir\n{:USER_UPDATE, {old_user :: Nostrum.Struct.User.t, new_user :: Nostrum.Struct.User.t}, WSState.t()}\n```\n\nFor a full listing of events, please see `t:Nostrum.Consumer.event/0`.","ref":"Nostrum.Consumer.html#c:handle_event/1-event"},{"type":"type","title":"Nostrum.Consumer.auto_moderation_rule_create/0","doc":"","ref":"Nostrum.Consumer.html#t:auto_moderation_rule_create/0"},{"type":"type","title":"Nostrum.Consumer.auto_moderation_rule_delete/0","doc":"","ref":"Nostrum.Consumer.html#t:auto_moderation_rule_delete/0"},{"type":"type","title":"Nostrum.Consumer.auto_moderation_rule_execute/0","doc":"","ref":"Nostrum.Consumer.html#t:auto_moderation_rule_execute/0"},{"type":"type","title":"Nostrum.Consumer.auto_moderation_rule_update/0","doc":"","ref":"Nostrum.Consumer.html#t:auto_moderation_rule_update/0"},{"type":"type","title":"Nostrum.Consumer.channel_create/0","doc":"Dispatched when a channel is created.\n\nStarting from [API and Gateway V8](https://discord.com/developers/docs/change-log#api-and-gateway-v8),\nthis will never be sent for a DM.","ref":"Nostrum.Consumer.html#t:channel_create/0"},{"type":"type","title":"Nostrum.Consumer.channel_delete/0","doc":"","ref":"Nostrum.Consumer.html#t:channel_delete/0"},{"type":"type","title":"Nostrum.Consumer.channel_pins_ack/0","doc":"","ref":"Nostrum.Consumer.html#t:channel_pins_ack/0"},{"type":"type","title":"Nostrum.Consumer.channel_pins_update/0","doc":"","ref":"Nostrum.Consumer.html#t:channel_pins_update/0"},{"type":"type","title":"Nostrum.Consumer.channel_update/0","doc":"Dispatched when a channel is updated.\n\n`old_channel` will be `nil` when the pre-update channel could not be fetched from the cache.","ref":"Nostrum.Consumer.html#t:channel_update/0"},{"type":"type","title":"Nostrum.Consumer.event/0","doc":"","ref":"Nostrum.Consumer.html#t:event/0"},{"type":"type","title":"Nostrum.Consumer.guild_audit_log_entry_create/0","doc":"","ref":"Nostrum.Consumer.html#t:guild_audit_log_entry_create/0"},{"type":"type","title":"Nostrum.Consumer.guild_available/0","doc":"","ref":"Nostrum.Consumer.html#t:guild_available/0"},{"type":"type","title":"Nostrum.Consumer.guild_ban_add/0","doc":"","ref":"Nostrum.Consumer.html#t:guild_ban_add/0"},{"type":"type","title":"Nostrum.Consumer.guild_ban_remove/0","doc":"","ref":"Nostrum.Consumer.html#t:guild_ban_remove/0"},{"type":"type","title":"Nostrum.Consumer.guild_create/0","doc":"","ref":"Nostrum.Consumer.html#t:guild_create/0"},{"type":"type","title":"Nostrum.Consumer.guild_delete/0","doc":"","ref":"Nostrum.Consumer.html#t:guild_delete/0"},{"type":"type","title":"Nostrum.Consumer.guild_emojis_update/0","doc":"","ref":"Nostrum.Consumer.html#t:guild_emojis_update/0"},{"type":"type","title":"Nostrum.Consumer.guild_integrations_update/0","doc":"","ref":"Nostrum.Consumer.html#t:guild_integrations_update/0"},{"type":"type","title":"Nostrum.Consumer.guild_member_add/0","doc":"","ref":"Nostrum.Consumer.html#t:guild_member_add/0"},{"type":"type","title":"Nostrum.Consumer.guild_member_remove/0","doc":"Dispatched when somebody leaves a guild.\n\nIn case the guild member intent is enabled but not the guild intent,\nnostrum may not cache the actual guild, and thus be unable to provide\nfull information about members leaving guilds. In that case, this event\nreceives the guild ID and a partial member object with the leaving user as\nprovided by Discord, but no information about the user's state on the guild.","ref":"Nostrum.Consumer.html#t:guild_member_remove/0"},{"type":"type","title":"Nostrum.Consumer.guild_member_update/0","doc":"Dispatched when a guild member is updated.\n\n`old_member` will be `nil` when the pre-update member could not be fetched from the cache.","ref":"Nostrum.Consumer.html#t:guild_member_update/0"},{"type":"type","title":"Nostrum.Consumer.guild_members_chunk/0","doc":"","ref":"Nostrum.Consumer.html#t:guild_members_chunk/0"},{"type":"type","title":"Nostrum.Consumer.guild_role_create/0","doc":"","ref":"Nostrum.Consumer.html#t:guild_role_create/0"},{"type":"type","title":"Nostrum.Consumer.guild_role_delete/0","doc":"","ref":"Nostrum.Consumer.html#t:guild_role_delete/0"},{"type":"type","title":"Nostrum.Consumer.guild_role_update/0","doc":"Dispatched when a role on a guild is updated.\n\n`old_role` will be `nil` when the pre-update role could not be fetched from the cache.","ref":"Nostrum.Consumer.html#t:guild_role_update/0"},{"type":"type","title":"Nostrum.Consumer.guild_scheduled_event_create/0","doc":"","ref":"Nostrum.Consumer.html#t:guild_scheduled_event_create/0"},{"type":"type","title":"Nostrum.Consumer.guild_scheduled_event_delete/0","doc":"","ref":"Nostrum.Consumer.html#t:guild_scheduled_event_delete/0"},{"type":"type","title":"Nostrum.Consumer.guild_scheduled_event_update/0","doc":"","ref":"Nostrum.Consumer.html#t:guild_scheduled_event_update/0"},{"type":"type","title":"Nostrum.Consumer.guild_scheduled_event_user_add/0","doc":"","ref":"Nostrum.Consumer.html#t:guild_scheduled_event_user_add/0"},{"type":"type","title":"Nostrum.Consumer.guild_scheduled_event_user_remove/0","doc":"","ref":"Nostrum.Consumer.html#t:guild_scheduled_event_user_remove/0"},{"type":"type","title":"Nostrum.Consumer.guild_stickers_update/0","doc":"","ref":"Nostrum.Consumer.html#t:guild_stickers_update/0"},{"type":"type","title":"Nostrum.Consumer.guild_unavailable/0","doc":"","ref":"Nostrum.Consumer.html#t:guild_unavailable/0"},{"type":"type","title":"Nostrum.Consumer.guild_update/0","doc":"","ref":"Nostrum.Consumer.html#t:guild_update/0"},{"type":"type","title":"Nostrum.Consumer.integration_create/0","doc":"","ref":"Nostrum.Consumer.html#t:integration_create/0"},{"type":"type","title":"Nostrum.Consumer.integration_delete/0","doc":"","ref":"Nostrum.Consumer.html#t:integration_delete/0"},{"type":"type","title":"Nostrum.Consumer.integration_update/0","doc":"Different from `t:guild_integrations_update/0` in that more than only the `guild_id` is provided","ref":"Nostrum.Consumer.html#t:integration_update/0"},{"type":"type","title":"Nostrum.Consumer.interaction_create/0","doc":"","ref":"Nostrum.Consumer.html#t:interaction_create/0"},{"type":"type","title":"Nostrum.Consumer.message_ack/0","doc":"","ref":"Nostrum.Consumer.html#t:message_ack/0"},{"type":"type","title":"Nostrum.Consumer.message_create/0","doc":"","ref":"Nostrum.Consumer.html#t:message_create/0"},{"type":"type","title":"Nostrum.Consumer.message_delete/0","doc":"","ref":"Nostrum.Consumer.html#t:message_delete/0"},{"type":"type","title":"Nostrum.Consumer.message_delete_bulk/0","doc":"","ref":"Nostrum.Consumer.html#t:message_delete_bulk/0"},{"type":"type","title":"Nostrum.Consumer.message_poll_vote_add/0","doc":"Dispatched when a user adds a vote to a poll.","ref":"Nostrum.Consumer.html#t:message_poll_vote_add/0"},{"type":"type","title":"Nostrum.Consumer.message_poll_vote_remove/0","doc":"Dispatched when a user removes a vote from a poll.","ref":"Nostrum.Consumer.html#t:message_poll_vote_remove/0"},{"type":"type","title":"Nostrum.Consumer.message_reaction_add/0","doc":"","ref":"Nostrum.Consumer.html#t:message_reaction_add/0"},{"type":"type","title":"Nostrum.Consumer.message_reaction_remove/0","doc":"","ref":"Nostrum.Consumer.html#t:message_reaction_remove/0"},{"type":"type","title":"Nostrum.Consumer.message_reaction_remove_all/0","doc":"","ref":"Nostrum.Consumer.html#t:message_reaction_remove_all/0"},{"type":"type","title":"Nostrum.Consumer.message_reaction_remove_emoji/0","doc":"","ref":"Nostrum.Consumer.html#t:message_reaction_remove_emoji/0"},{"type":"type","title":"Nostrum.Consumer.message_update/0","doc":"","ref":"Nostrum.Consumer.html#t:message_update/0"},{"type":"type","title":"Nostrum.Consumer.presence_update/0","doc":"Dispatched when a user's presence is updated.\n\n`old_presence` will be `nil` when the pre-update presence could not be fetched from the cache.","ref":"Nostrum.Consumer.html#t:presence_update/0"},{"type":"type","title":"Nostrum.Consumer.ready/0","doc":"","ref":"Nostrum.Consumer.html#t:ready/0"},{"type":"type","title":"Nostrum.Consumer.resumed/0","doc":"","ref":"Nostrum.Consumer.html#t:resumed/0"},{"type":"type","title":"Nostrum.Consumer.thread_create/0","doc":"Dispatched when a thread is created or when added to a private thread","ref":"Nostrum.Consumer.html#t:thread_create/0"},{"type":"type","title":"Nostrum.Consumer.thread_delete/0","doc":"Dispatched when a thread is deleted, if the thread was cached, contains the original thread, otherwise contains `:noop`","ref":"Nostrum.Consumer.html#t:thread_delete/0"},{"type":"type","title":"Nostrum.Consumer.thread_list_sync/0","doc":"Dispatched when gaining access to a channel","ref":"Nostrum.Consumer.html#t:thread_list_sync/0"},{"type":"type","title":"Nostrum.Consumer.thread_member_update/0","doc":"Dispatched when a `ThreadMember` for the current user is updated","ref":"Nostrum.Consumer.html#t:thread_member_update/0"},{"type":"type","title":"Nostrum.Consumer.thread_members_update/0","doc":"Dispatched when member(s) are added or removed from a thread","ref":"Nostrum.Consumer.html#t:thread_members_update/0"},{"type":"type","title":"Nostrum.Consumer.thread_update/0","doc":"","ref":"Nostrum.Consumer.html#t:thread_update/0"},{"type":"type","title":"Nostrum.Consumer.typing_start/0","doc":"","ref":"Nostrum.Consumer.html#t:typing_start/0"},{"type":"type","title":"Nostrum.Consumer.user_settings_update/0","doc":"","ref":"Nostrum.Consumer.html#t:user_settings_update/0"},{"type":"type","title":"Nostrum.Consumer.user_update/0","doc":"Dispatched when a user is updated.\n\n`old_user` will be `nil` when the pre-update user could not be fetched from the cache.","ref":"Nostrum.Consumer.html#t:user_update/0"},{"type":"type","title":"Nostrum.Consumer.voice_incoming_packet/0","doc":"Dispatched when async listening is enabled and another user is actively speaking\n\nThe second tuple element is an `t:Nostrum.Voice.rtp_opus/0`, which is a tuple with\nRTP header information and an opus packet. While someone is actively talking, you can\nexpect about 50 events per second per speaking user.\n\nNote that the third tuple element is of type `t:Nostrum.Struct.VoiceWSState.t/0` instead of `t:Nostrum.Struct.WSState.t/0`.\nThat struct contains a `t:Nostrum.Struct.VoiceWSState.ssrc_map/0` that can determine the speaking user based\non the SSRC.","ref":"Nostrum.Consumer.html#t:voice_incoming_packet/0"},{"type":"type","title":"Nostrum.Consumer.voice_ready/0","doc":"Dispatched when the bot is ready to begin sending audio after joining a voice channel\n\nNote that the third tuple element is of type `t:Nostrum.Struct.VoiceWSState.t/0` instead of `t:Nostrum.Struct.WSState.t/0`.","ref":"Nostrum.Consumer.html#t:voice_ready/0"},{"type":"type","title":"Nostrum.Consumer.voice_server_update/0","doc":"","ref":"Nostrum.Consumer.html#t:voice_server_update/0"},{"type":"type","title":"Nostrum.Consumer.voice_speaking_update/0","doc":"Dispatched when the bot starts or stops speaking\n\nNote that the third tuple element is of type `t:Nostrum.Struct.VoiceWSState.t/0` instead of `t:Nostrum.Struct.WSState.t/0`.","ref":"Nostrum.Consumer.html#t:voice_speaking_update/0"},{"type":"type","title":"Nostrum.Consumer.voice_state_update/0","doc":"","ref":"Nostrum.Consumer.html#t:voice_state_update/0"},{"type":"type","title":"Nostrum.Consumer.webhooks_update/0","doc":"","ref":"Nostrum.Consumer.html#t:webhooks_update/0"},{"type":"module","title":"Nostrum.ConsumerGroup","doc":"Registers consumers and handles event dispatch.","ref":"Nostrum.ConsumerGroup.html"},{"type":"function","title":"Nostrum.ConsumerGroup.child_spec/1","doc":"","ref":"Nostrum.ConsumerGroup.html#child_spec/1"},{"type":"function","title":"Nostrum.ConsumerGroup.demonitor/1","doc":"Stop monitoring the given reference.","ref":"Nostrum.ConsumerGroup.html#demonitor/1"},{"type":"function","title":"Nostrum.ConsumerGroup.dispatch/1","doc":"Dispatch the given event(s) to all consumers.\n\nThis is called by nostrum internally, you likely won't need to call this\nmanually.","ref":"Nostrum.ConsumerGroup.html#dispatch/1"},{"type":"function","title":"Nostrum.ConsumerGroup.join/0","doc":"Equivalent to `ConsumerGroup.join(self())`. See `join/1`.","ref":"Nostrum.ConsumerGroup.html#join/0"},{"type":"function","title":"Nostrum.ConsumerGroup.join/1","doc":"Join the given process to the consumers.\n\nIf no process is given, joins the current process to the consumers. This can\nbe used for subscribing to gateway events and awaiting them inline.\n\nAfter the process has joined, it will receive any events sent by nostrum's\ngateway dispatch. These events are sent as messages `{:event,\nt:Consumer.Event.t/0}`. The given `pid` is automatically unsubscribed when it\nterminates.\n\nNote that there is currently no filtering done. If the gateway sends a lot of\nmessages and the event subscriber does not terminate swiftly, its message\nqueue will keep growing.","ref":"Nostrum.ConsumerGroup.html#join/1"},{"type":"function","title":"Example - Nostrum.ConsumerGroup.join/1","doc":"The following example illustrates how to use this to implement inline event\nawaiting:\n\n```elixir\ndefmodule MyBot.Command\n alias Nostrum.Api\n alias Nostrum.ConsumerGroup\n alias Nostrum.Struct.Message\n alias Nostrum.Struct.User\n\n def command(%Message{author: %User{id: author_id}}) do\n Api.create_message!(msg, \"Reply 'y' in 5 seconds to confirm ordering a large burger menu.\")\n ConsumerGroup.join()\n receive do\n {:event, {:MESSAGE_CREATE, %Message{author: %User{id: author_id}, content: \"y\"}, _}} ->\n Api.create_message!(msg, \"The large burger menu is coming.\")\n after\n 5_000 ->\n Api.create_message!(msg, \"Too slow!\")\n end\n end\nend\n```","ref":"Nostrum.ConsumerGroup.html#join/1-example"},{"type":"function","title":"Nostrum.ConsumerGroup.monitor/0","doc":"Monitor the consumer group for changes.\n\nReturn the initial state of the group on first call. Further updates are\ndelivered as messages to the calling process, see `:pg.monitor/2` for\ndetails. The returned `t:reference/0` must be saved for later calls to\n`demonitor/1`.","ref":"Nostrum.ConsumerGroup.html#monitor/0"},{"type":"function","title":"Nostrum.ConsumerGroup.start_link/1","doc":"","ref":"Nostrum.ConsumerGroup.html#start_link/1"},{"type":"module","title":"Nostrum.Permission","doc":"Functions that work on permissions.\n\nSome functions return a list of permissions. You can use enumerable functions\nto work with permissions:\n\n```elixir\nalias Nostrum.Cache.GuildCache\nalias Nostrum.Struct.Guild.Member\n\nguild = GuildCache.get!(279093381723062272)\nmember = Map.get(guild.members, 177888205536886784)\nmember_perms = Member.guild_permissions(member, guild)\n\nif :administrator in member_perms do\n IO.puts(\"This user has the administrator permission.\")\nend\n```","ref":"Nostrum.Permission.html"},{"type":"function","title":"Nostrum.Permission.all/0","doc":"Returns a list of all permissions.","ref":"Nostrum.Permission.html#all/0"},{"type":"function","title":"Nostrum.Permission.from_bit/1","doc":"Converts the given bit to a permission.\n\nThis function returns `:error` if `bit` does not map to a permission.","ref":"Nostrum.Permission.html#from_bit/1"},{"type":"function","title":"Examples - Nostrum.Permission.from_bit/1","doc":"```elixir\niex> Nostrum.Permission.from_bit(0x04000000)\n{:ok, :change_nickname}\n\niex> Nostrum.Permission.from_bit(0)\n:error\n```","ref":"Nostrum.Permission.html#from_bit/1-examples"},{"type":"function","title":"Nostrum.Permission.from_bit!/1","doc":"Same as `from_bit/1`, but raises `ArgumentError` in case of failure.","ref":"Nostrum.Permission.html#from_bit!/1"},{"type":"function","title":"Examples - Nostrum.Permission.from_bit!/1","doc":"```elixir\niex> Nostrum.Permission.from_bit!(0x04000000)\n:change_nickname\n\niex> Nostrum.Permission.from_bit!(0)\n** (ArgumentError) expected a valid bit, got: `0`\n```","ref":"Nostrum.Permission.html#from_bit!/1-examples"},{"type":"function","title":"Nostrum.Permission.from_bitset/1","doc":"Converts the given bitset to a list of permissions.\n\nIf invalid bits are given they will be omitted from the results.","ref":"Nostrum.Permission.html#from_bitset/1"},{"type":"function","title":"Examples - Nostrum.Permission.from_bitset/1","doc":"```elixir\niex> Nostrum.Permission.from_bitset(0x08000002)\n[:manage_nicknames, :kick_members]\n\niex> Nostrum.Permission.from_bitset(0x4000000000000)\n[]\n```","ref":"Nostrum.Permission.html#from_bitset/1-examples"},{"type":"macro","title":"Nostrum.Permission.is_permission/1","doc":"Returns `true` if `term` is a permission; otherwise returns `false`.","ref":"Nostrum.Permission.html#is_permission/1"},{"type":"macro","title":"Examples - Nostrum.Permission.is_permission/1","doc":"```elixir\niex> Nostrum.Permission.is_permission(:administrator)\ntrue\n\niex> Nostrum.Permission.is_permission(:not_a_permission)\nfalse\n```","ref":"Nostrum.Permission.html#is_permission/1-examples"},{"type":"function","title":"Nostrum.Permission.to_bit/1","doc":"Converts the given permission to a bit.","ref":"Nostrum.Permission.html#to_bit/1"},{"type":"function","title":"Examples - Nostrum.Permission.to_bit/1","doc":"```elixir\niex> Nostrum.Permission.to_bit(:administrator)\n8\n```","ref":"Nostrum.Permission.html#to_bit/1-examples"},{"type":"function","title":"Nostrum.Permission.to_bitset/1","doc":"Converts the given enumerable of permissions to a bitset.","ref":"Nostrum.Permission.html#to_bitset/1"},{"type":"function","title":"Examples - Nostrum.Permission.to_bitset/1","doc":"```elixir\niex> Nostrum.Permission.to_bitset([:administrator, :create_instant_invite])\n9\n```","ref":"Nostrum.Permission.html#to_bitset/1-examples"},{"type":"type","title":"Nostrum.Permission.bit/0","doc":"Represents a single permission as a bitvalue.","ref":"Nostrum.Permission.html#t:bit/0"},{"type":"type","title":"Nostrum.Permission.bitset/0","doc":"Represents a set of permissions as a bitvalue.","ref":"Nostrum.Permission.html#t:bitset/0"},{"type":"type","title":"Nostrum.Permission.general_permission/0","doc":"","ref":"Nostrum.Permission.html#t:general_permission/0"},{"type":"type","title":"Nostrum.Permission.t/0","doc":"","ref":"Nostrum.Permission.html#t:t/0"},{"type":"type","title":"Nostrum.Permission.text_permission/0","doc":"","ref":"Nostrum.Permission.html#t:text_permission/0"},{"type":"type","title":"Nostrum.Permission.voice_permission/0","doc":"","ref":"Nostrum.Permission.html#t:voice_permission/0"},{"type":"module","title":"Nostrum.Voice","doc":"Interface for playing and listening to audio through Discord's voice channels.\n\n# Using Discord Voice Channels\nTo play sound in Discord with Nostrum, you'll need `ffmpeg` to be installed.\nIf you don't have the executable `ffmpeg` in the path, the absolute path may\nbe configured through config keys `:nostrum, :ffmpeg`. If you don't want to use\nffmpeg, read on to the next section.\n\nA bot may be connected to at most one voice channel per guild. For this reason,\nmost of the functions in this module take a guild id, and the resulting action\nwill be performed in the given guild's voice channel that the bot is connected to.\n\nThe primary Discord gateway responsible for all text based communication relies on\none websocket connection per shard, where small bots typically only have one shard.\nThe Discord voice gateways work by establishing a websocket connection per guild/channel.\nAfter some handshaking on this connection, audio data can be sent over UDP/RTP. Behind\nthe scenes the voice websocket connections are implemented nearly the same way the main\nshard websocket connections are, and require no developer intervention.\n\nIn addition to playing audio, listening to incoming audio is supported through the\nfunctions `listen/3` and `start_listen_async/1`.","ref":"Nostrum.Voice.html"},{"type":"module","title":"Voice Without FFmpeg - Nostrum.Voice","doc":"If you wish to BYOE (Bring Your Own Encoder), there are a few options.\n - Use `:raw` as `type` for `play/4`\n - Provide the complete list of opus frames as the input\n - Use `:raw_s` as `type` for `play/4`\n - Provide a stateful enumerable of opus frames as input (think GenServer wrapped in `Stream.unfold/2`)\n - Use lower level functions to send opus frames at your leisure\n - Send packets on your own time using `send_frames/2`","ref":"Nostrum.Voice.html#module-voice-without-ffmpeg"},{"type":"function","title":"Nostrum.Voice.child_spec/1","doc":"Returns a specification to start this module under a supervisor.\n\nSee `Supervisor`.","ref":"Nostrum.Voice.html#child_spec/1"},{"type":"function","title":"Nostrum.Voice.connect_to_gateway/1","doc":"Low-level. Manually connect to voice websockets gateway.\n\nThis function should only be called if config option `:voice_auto_connect` is set to `false`.\nBy default Nostrum will automatically create a voice gateway when joining a channel.","ref":"Nostrum.Voice.html#connect_to_gateway/1"},{"type":"function","title":"Nostrum.Voice.create_ogg_bitstream/1","doc":"Create a complete Ogg logical bitstream from a list of Opus packets.\n\nThis function takes a list of opus packets and returns a list of Ogg\nencapsulated Opus pages for a single Ogg logical bitstream.\n\nIt is highly recommended to learn about the Ogg container format to\nunderstand how to use the data.\n\nTo get started, assuming you have a list of evenly temporally spaced\nand consecutive opus packets from a single source that you want written\nto a file, you can run the following:\n\n```elixir\nbitstream =\n opus_packets\n |> create_ogg_bitstream()\n |> :binary.list_to_bin()\n\nFile.write!(\"my_recording.ogg\", bitstream)\n```\n\nWhen creating a logical bitstream, ensure that the packets are all from a single SSRC.\nWhen listening in a channel with multiple speakers, you should be storing the received\npackets in unique buckets for each SSRC so that the multiple audio sources don't become\njumbled. A single logical bitstream should represent audio data from a single speaker.\nAn Ogg physical bitstream (e.g. a file) may be composed of multiple interleaved Ogg\nlogical bitstreams as each logical bitstream and its constituent pages contain a unique\nand randomly generated bitstream serial number, but this is a story for another time.\n\nAssuming you have a list of `t:rtp_opus/0` packets that are not separated by ssrc, you\nmay do the following:\n\n```elixir\njumbled_packets\n|> Stream.filter(fn {{_seq, _time, ssrc}, _opus} -> ssrc == particular_ssrc end)\n|> Enum.map(fn {{_seq, _time, _ssrc}, opus} -> opus end)\n|> create_ogg_bitstream()\n```","ref":"Nostrum.Voice.html#create_ogg_bitstream/1"},{"type":"function","title":"Nostrum.Voice.extract_opus_packet/1","doc":"Extract the opus packet from the RTP packet received from Discord.\n\nIncoming voice RTP packets contain a fixed length RTP header and an optional\nRTP header extension, which must be stripped to retrieve the underlying opus packet.","ref":"Nostrum.Voice.html#extract_opus_packet/1"},{"type":"function","title":"Nostrum.Voice.get_channel_id/1","doc":"Gets the id of the voice channel that the bot is connected to.","ref":"Nostrum.Voice.html#get_channel_id/1"},{"type":"function","title":"Parameters - Nostrum.Voice.get_channel_id/1","doc":"- `guild_id` - ID of guild that the resultant channel belongs to.\n\nReturns the `channel_id` for the channel the bot is connected to, otherwise `nil`.","ref":"Nostrum.Voice.html#get_channel_id/1-parameters"},{"type":"function","title":"Examples - Nostrum.Voice.get_channel_id/1","doc":"```elixir\niex> Nostrum.Voice.join_channel(123456789, 420691337)\n\niex> Nostrum.Voice.get_channel(123456789)\n420691337\n\niex> Nostrum.Voice.leave_channel(123456789)\n\niex> Nostrum.Voice.get_channel(123456789)\nnil\n```","ref":"Nostrum.Voice.html#get_channel_id/1-examples"},{"type":"function","title":"Nostrum.Voice.get_current_url/1","doc":"Gets the current URL being played.\n\nIf `play/4` was invoked with type `:url`, `:ytdl`, or `:stream`, this function will return\nthe URL given as input last time it was called.\n\nIf `play/4` was invoked with type `:pipe`, `:raw`, or `:raw_s`, this will return `nil`\nas the input is raw audio data, not be a readable URL string.","ref":"Nostrum.Voice.html#get_current_url/1"},{"type":"function","title":"Nostrum.Voice.get_ssrc_map/1","doc":"Gets a map of RTP SSRC to user id.\n\nWithin a voice channel, an SSRC (synchronization source) will uniquely map to a\nuser id of a user who is speaking.\n\nIf listening to incoming voice packets asynchronously, this function will not be\nneeded as the `t:Nostrum.Struct.VoiceWSState.ssrc_map/0` will be available with every event.\nIf listening with `listen/3`, this function may be used. It is recommended to\ncache the result of this function and only call it again when you encounter an\nSSRC that is not present in the cached result. This is to reduce excess load on the\nvoice websocket and voice state processes.","ref":"Nostrum.Voice.html#get_ssrc_map/1"},{"type":"function","title":"Nostrum.Voice.join_channel/5","doc":"Joins or moves the bot to a voice channel.\n\nThis function calls `Nostrum.Api.update_voice_state/4`.\n\nThe fifth argument `persist` defaults to `true`. When true, if calling `join_channel/5`\nwhile already in a different channel in the same guild, the audio source will be persisted\nin the new channel. If the audio is actively playing at the time of changing channels,\nit will resume playing automatically upon joining. If there is an active audio source\nthat has been paused before changing channels, the audio will be able to be resumed manually if\n`resume/1` is called.\n\nIf `persist` is set to false, the audio source will be destroyed before changing channels.\nThe same effect is achieved by calling `stop/1` or `leave_channel/1` before `join_channel/5`","ref":"Nostrum.Voice.html#join_channel/5"},{"type":"function","title":"Nostrum.Voice.leave_channel/1","doc":"Leaves the voice channel of the given guild id.\n\nThis function is equivalent to calling `Nostrum.Api.update_voice_state(guild_id, nil)`.","ref":"Nostrum.Voice.html#leave_channel/1"},{"type":"function","title":"Nostrum.Voice.listen/3","doc":"Listen for incoming voice RTP packets.","ref":"Nostrum.Voice.html#listen/3"},{"type":"function","title":"Parameters - Nostrum.Voice.listen/3","doc":"- `guild_id` - ID of guild that the bot is listening to.\n - `num_packets` - Number of packets to wait for.\n - `raw_rtp` - Whether to return raw RTP packets. Defaults to `false`.\n\nReturns a list of tuples of type `t:rtp_opus/0`.\n\nThe inner tuple contains fields from the RTP header and can be matched against\nto retrieve information about the packet such as the SSRC, which identifies the source.\nNote that RTP timestamps are completely unrelated to Unix timestamps.\n\nIf `raw_rtp` is set to `true`, a list of raw RTP packets is returned instead.\nTo extract an opus packet from an RTP packet, see `extract_opus_packet/1`.\n\nThis function will block until the specified number of packets is received.","ref":"Nostrum.Voice.html#listen/3-parameters"},{"type":"function","title":"Nostrum.Voice.pad_opus/1","doc":"Pad discontinuous chunks of opus audio with silence.\n\nThis function takes a list of `t:rtp_opus/0`, which is a tuple containing RTP bits and\nopus audio data. It returns a list of opus audio packets. The reason the input has to be in\nthe `t:rtp_opus/0` tuple format returned by `listen/3` and async listen events is that the\nRTP packet header contains info on the relative timestamps of incoming packets; the opus\npackets themselves don't contain information relating to timing.\n\nThe Discord client will continue to internally increment the `t:rtp_timestamp()` when the\nuser is not speaking such that the duration of pauses can be determined from the RTP packets.\nBots will typically not behave this way, so if you call this function on audio produced by\na bot it is very likely that no silence will be inserted.\n\nThe use case of this function is as follows:\nConsider a user speaks for two seconds, pauses for ten seconds, then speaks for another two\nseconds. During the pause, no RTP packets will be received, so if you create a bitstream from\nit, the resulting audio will be both two-second speaking segments consecutively without the\nlong pause in the middle. If you wish to preserve the timing of the speaking and include the\npause, calling this function will interleave the appropriate amount of opus silence packets\nto maintain temporal fidelity.\n\nNote that the Discord client currently sends about 10 silence packets (200 ms) each time it\ndetects end of speech, so creating a bitstream without first padding your audio with this\nfunction will maintain short silences between speech segments.\n\n*This function should only be called on a collection of RTP packets from a single SSRC*","ref":"Nostrum.Voice.html#pad_opus/1"},{"type":"function","title":"Nostrum.Voice.pause/1","doc":"Pauses the current sound being played in a voice channel.\n\nThe bot must be connected to a voice channel in the guild specified.","ref":"Nostrum.Voice.html#pause/1"},{"type":"function","title":"Parameters - Nostrum.Voice.pause/1","doc":"- `guild_id` - ID of guild whose voice channel the sound will be paused in.\n\nReturns `{:error, reason}` if unable to pause or no sound is playing, else `:ok`.\n\nThis function is similar to `stop/1`, except that the sound may be\nresumed after being paused.","ref":"Nostrum.Voice.html#pause/1-parameters"},{"type":"function","title":"Examples - Nostrum.Voice.pause/1","doc":"```elixir\niex> Nostrum.Voice.join_channel(123456789, 420691337)\n\niex> Nostrum.Voice.play(123456789, \"~/files/twelve_hour_loop_of_waterfall_sounds.mp3\")\n\niex> Nostrum.Voice.pause(123456789)\n```","ref":"Nostrum.Voice.html#pause/1-examples"},{"type":"function","title":"Nostrum.Voice.play/4","doc":"Plays sound in the voice channel the bot is in.\n\nThe bot must be connected to a voice channel in the guild specified.","ref":"Nostrum.Voice.html#play/4"},{"type":"function","title":"Parameters - Nostrum.Voice.play/4","doc":"- `guild_id` - ID of guild whose voice channel the sound will be played in.\n - `input` - Audio to be played, `t:play_input/0`. Input type determined by `type` parameter.\n - `type` - Type of input, `t:play_type/0` (defaults to `:url`).\n - `:url` Input will be [any url that `ffmpeg` can read](https://www.ffmpeg.org/ffmpeg-protocols.html).\n - `:pipe` Input will be data that is piped to stdin of `ffmpeg`.\n - `:ytdl` Input will be url for `youtube-dl`, which gets automatically piped to `ffmpeg`.\n - `:stream` Input will be livestream url for `streamlink`, which gets automatically piped to `ffmpeg`.\n - `:raw` Input will be an enumerable of raw opus packets. This bypasses `ffmpeg` and all options.\n - `:raw_s` Same as `:raw` but input must be stateful, i.e. calling `Enum.take/2` on `input` is not idempotent.\n - `options` - See options section below.\n\n\nReturns `{:error, reason}` if unable to play or a sound is playing, else `:ok`.","ref":"Nostrum.Voice.html#play/4-parameters"},{"type":"function","title":"Options - Nostrum.Voice.play/4","doc":"- `:start_pos` (string) - The start position of the audio to be played. Defaults to beginning.\n - `:duration` (string) - The duration to of the audio to be played. Defaults to entire duration.\n - `:realtime` (boolean) - Make ffmpeg process the input in realtime instead of as fast as possible. Defaults to true.\n - `:volume` (number) - The output volume of the audio. Default volume is 1.0.\n - `:filter` (string) - Filter(s) to be applied to the audio. No filters applied by default.\n\n The values of `:start_pos` and `:duration` can be [any time duration that ffmpeg can read](https://ffmpeg.org/ffmpeg-utils.html#Time-duration).\n The `:filter` can be used multiple times in a single call (see examples).\n The values of `:filter` can be [any audio filters that ffmpeg can read](https://ffmpeg.org/ffmpeg-filters.html#Audio-Filters).\n Filters will be applied in order and can be as complex as you want. The world is your oyster!\n\n Note that using the `:volume` option is shortcut for the \"volume\" filter, and will be added to the end of the filter chain, acting as a master volume.\n Volume values between `0.0` and `1.0` act as standard operating range where `0` is off and `1` is max.\n Values greater than `1.0` will add saturation and distortion to the audio.\n Negative values act the same as their position but reverse the polarity of the waveform.\n\n Having all the ffmpeg audio filters available is *extremely powerful* so it may be worth learning some of them for your use cases.\n If you use any filters to *increase* the playback speed of your audio, it's recommended to set the `:realtime` option to `false`\n because realtime processing is relative to the original playback speed.","ref":"Nostrum.Voice.html#play/4-options"},{"type":"function","title":"Examples - Nostrum.Voice.play/4","doc":"```elixir\niex> Nostrum.Voice.join_channel(123456789, 420691337)\n\niex> Nostrum.Voice.play(123456789, \"~/music/FavoriteSong.mp3\", :url)\n\niex> Nostrum.Voice.play(123456789, \"~/music/NotFavoriteButStillGoodSong.mp3\", :url, volume: 0.5)\n\niex> Nostrum.Voice.play(123456789, \"~/music/ThisWillBeHeavilyDistorted.mp3\", :url, volume: 1000)\n```\n```elixir\niex> Nostrum.Voice.join_channel(123456789, 420691337)\n\niex> raw_data = File.read!(\"~/music/sound_effect.wav\")\n\niex> Nostrum.Voice.play(123456789, raw_data, :pipe)\n```\n```elixir\niex> Nostrum.Voice.join_channel(123456789, 420691337)\n\niex> Nostrum.Voice.play(123456789, \"https://www.youtube.com/watch?v=b4RJ-QGOtw4\", :ytdl,\n...> realtime: true, start_pos: \"0:17\", duration: \"30\")\n\niex> Nostrum.Voice.play(123456789, \"https://www.youtube.com/watch?v=0ngcL_5ekXo\", :ytdl,\n...> filter: \"lowpass=f=1200\", filter: \"highpass=f=300\", filter: \"asetrate=44100*0.5\")\n```\n```elixir\niex> Nostrum.Voice.join_channel(123456789, 420691337)\n\niex> Nostrum.Voice.play(123456789, \"https://www.twitch.tv/pestily\", :stream)\n\niex> Nostrum.Voice.play(123456789, \"https://youtu.be/LN4r-K8ZP5Q\", :stream)\n```","ref":"Nostrum.Voice.html#play/4-examples"},{"type":"function","title":"Nostrum.Voice.playing?/1","doc":"Checks if the bot is playing sound in a voice channel.","ref":"Nostrum.Voice.html#playing?/1"},{"type":"function","title":"Parameters - Nostrum.Voice.playing?/1","doc":"- `guild_id` - ID of guild to check if audio being played.\n\nReturns `true` if the bot is currently being played in a voice channel, otherwise `false`.","ref":"Nostrum.Voice.html#playing?/1-parameters"},{"type":"function","title":"Examples - Nostrum.Voice.playing?/1","doc":"```elixir\niex> Nostrum.Voice.join_channel(123456789, 420691337)\n\niex> Nostrum.Voice.play(123456789, \"https://a-real-site.biz/RickRoll.m4a\")\n\niex> Nostrum.Voice.playing?(123456789)\ntrue\n\niex> Nostrum.Voice.pause(123456789)\n\niex> Nostrum.Voice.playing?(123456789)\nfalse\n```","ref":"Nostrum.Voice.html#playing?/1-examples"},{"type":"function","title":"Nostrum.Voice.ready?/1","doc":"Checks if the connection is up and ready to play audio.","ref":"Nostrum.Voice.html#ready?/1"},{"type":"function","title":"Parameters - Nostrum.Voice.ready?/1","doc":"- `guild_id` - ID of guild to check if voice connection is up.\n\nReturns `true` if the bot is connected to a voice channel, otherwise `false`.\n\nThis function does not check if audio is already playing. For that, use `playing?/1`.","ref":"Nostrum.Voice.html#ready?/1-parameters"},{"type":"function","title":"Examples - Nostrum.Voice.ready?/1","doc":"```elixir\niex> Nostrum.Voice.join_channel(123456789, 420691337)\n\niex> Nostrum.Voice.ready?(123456789)\ntrue\n\niex> Nostrum.Voice.leave_channel(123456789)\n\niex> Nostrum.Voice.ready?(123456789)\nfalse\n```","ref":"Nostrum.Voice.html#ready?/1-examples"},{"type":"function","title":"Nostrum.Voice.resume/1","doc":"Resumes playing the current paused sound in a voice channel.\n\nThe bot must be connected to a voice channel in the guild specified.","ref":"Nostrum.Voice.html#resume/1"},{"type":"function","title":"Parameters - Nostrum.Voice.resume/1","doc":"- `guild_id` - ID of guild whose voice channel the sound will be resumed in.\n\nReturns `{:error, reason}` if unable to resume or no sound has been paused, otherwise returns `:ok`.\n\nThis function is used to resume a sound that had previously been paused.","ref":"Nostrum.Voice.html#resume/1-parameters"},{"type":"function","title":"Examples - Nostrum.Voice.resume/1","doc":"```elixir\niex> Nostrum.Voice.join_channel(123456789, 420691337)\n\niex> Nostrum.Voice.play(123456789, \"~/stuff/Toto - Africa (Bass Boosted)\")\n\niex> Nostrum.Voice.pause(123456789)\n\niex> Nostrum.Voice.resume(123456789)\n```","ref":"Nostrum.Voice.html#resume/1-examples"},{"type":"function","title":"Nostrum.Voice.send_frames/2","doc":"Low-level. Send pre-encoded audio packets directly.\n\nSpeaking should be set to true via `Nostrum.Voice.set_is_speaking/2` before sending frames.\n\nOpus frames will be encrypted and prefixed with the appropriate RTP header and sent immediately.\nThe length of `frames` depends on how often you wish to send a sequence of frames.\nA single frame contains 20ms of audio. Sending more than 50 frames (1 second of audio)\nin a single function call may result in inconsistent playback rates.\n\n`Nostrum.Voice.playing?/1` will not return accurate values when using `send_frames/2`\ninstead of `Nostrum.Voice.play/4`","ref":"Nostrum.Voice.html#send_frames/2"},{"type":"function","title":"Nostrum.Voice.set_is_speaking/2","doc":"Low-level. Set speaking flag in voice channel.\n\nThis function does not need to be called unless you are sending audio frames\ndirectly using `Nostrum.Voice.send_frames/2`.","ref":"Nostrum.Voice.html#set_is_speaking/2"},{"type":"function","title":"Nostrum.Voice.start_listen_async/1","doc":"Start asynchronously receiving events for incoming RTP packets for an active voice session.\n\nThis is an alternative to the blocking `listen/3`. Events will be generated asynchronously\nwhen a user is speaking. See `t:Nostrum.Consumer.voice_incoming_packet/0` for more info.","ref":"Nostrum.Voice.html#start_listen_async/1"},{"type":"function","title":"Nostrum.Voice.stop/1","doc":"Stops the current sound being played in a voice channel.\n\nThe bot must be connected to a voice channel in the guild specified.","ref":"Nostrum.Voice.html#stop/1"},{"type":"function","title":"Parameters - Nostrum.Voice.stop/1","doc":"- `guild_id` - ID of guild whose voice channel the sound will be stopped in.\n\nReturns `{:error, reason}` if unable to stop or no sound is playing, else `:ok`.\n\nIf a sound has finished playing, this function does not need to be called to start\nplaying another sound.","ref":"Nostrum.Voice.html#stop/1-parameters"},{"type":"function","title":"Examples - Nostrum.Voice.stop/1","doc":"```elixir\niex> Nostrum.Voice.join_channel(123456789, 420691337)\n\niex> Nostrum.Voice.play(123456789, \"http://brandthill.com/files/weird_dubstep_noises.mp3\")\n\niex> Nostrum.Voice.stop(123456789)\n```","ref":"Nostrum.Voice.html#stop/1-examples"},{"type":"function","title":"Nostrum.Voice.stop_listen_async/1","doc":"Stop asynchronously receiving events for incoming RTP packets for an active voice session.","ref":"Nostrum.Voice.html#stop_listen_async/1"},{"type":"type","title":"Nostrum.Voice.opus_packet/0","doc":"Opus packet","ref":"Nostrum.Voice.html#t:opus_packet/0"},{"type":"type","title":"Nostrum.Voice.play_input/0","doc":"The play input\n\nThe input given to `play/4`, either a compatible URL or binary audio data.\nSee `play/4` for more information.","ref":"Nostrum.Voice.html#t:play_input/0"},{"type":"type","title":"Nostrum.Voice.play_type/0","doc":"The type of play input\n\nThe type given to `play/4` determines how the input parameter is interpreted.\nSee `play/4` for more information.","ref":"Nostrum.Voice.html#t:play_type/0"},{"type":"type","title":"Nostrum.Voice.rtp_opus/0","doc":"Tuple with RTP header elements and opus packet","ref":"Nostrum.Voice.html#t:rtp_opus/0"},{"type":"type","title":"Nostrum.Voice.rtp_sequence/0","doc":"RTP sequence","ref":"Nostrum.Voice.html#t:rtp_sequence/0"},{"type":"type","title":"Nostrum.Voice.rtp_ssrc/0","doc":"RTP SSRC","ref":"Nostrum.Voice.html#t:rtp_ssrc/0"},{"type":"type","title":"Nostrum.Voice.rtp_timestamp/0","doc":"RTP timestamp","ref":"Nostrum.Voice.html#t:rtp_timestamp/0"},{"type":"module","title":"Nostrum.Voice.Crypto.Aes","doc":"Handles encryption and decryption of outgoing and incoming voice data when an AES encryption mode is selected\n\n>","ref":"Nostrum.Voice.Crypto.Aes.html"},{"type":"module","title":"Internal module {: .info} - Nostrum.Voice.Crypto.Aes","doc":">\n> This module is intended for exclusive usage inside of nostrum, and is\n> documented for completeness and curious cryptographic cats.","ref":"Nostrum.Voice.Crypto.Aes.html#module-internal-module-info"},{"type":"module","title":"Purpose - Nostrum.Voice.Crypto.Aes","doc":"AES is fully supported by the erlang `:crypto` module, so this module\njust provides a convenient wrapper around it for encryption and decryption.","ref":"Nostrum.Voice.Crypto.Aes.html#module-purpose"},{"type":"module","title":"Implementation - Nostrum.Voice.Crypto.Aes","doc":"Internally the functions `:crypto.crypto_one_time_aead/6` and `:crypto.crypto_one_time_aead/7` are\ncalled with the cipher argument set to `:aes_256_gcm`. Because these functions are implemented as\nNIFs with OpenSSL bindings, they faster than anything written in pure erlang/elixir.\n\nBecause the crypto function returns a tuple with the cipher text and tag (MAC) separately, the return\nvalue is an iolist with them in the order that Discord expects. This is done to reduce binary copies\nas the functions ingesting the encrypted messages all support iodata.\n\nReaders are encouraged to read more about the [erlang crypto module](https://www.erlang.org/doc/man/crypto).","ref":"Nostrum.Voice.Crypto.Aes.html#module-implementation"},{"type":"module","title":"Performance considerations - Nostrum.Voice.Crypto.Aes","doc":"AES is a well-established cipher and many modern CPUs have AES instruction sets to accelerate\nAES operations. While the Salsa20 and ChaCha20 stream ciphers are typically faster with pure\nsoftware implementations, hardware acceleration will typically give AES the leg up for performance.","ref":"Nostrum.Voice.Crypto.Aes.html#module-performance-considerations"},{"type":"function","title":"Nostrum.Voice.Crypto.Aes.decrypt/5","doc":"","ref":"Nostrum.Voice.Crypto.Aes.html#decrypt/5"},{"type":"function","title":"Nostrum.Voice.Crypto.Aes.encrypt/4","doc":"","ref":"Nostrum.Voice.Crypto.Aes.html#encrypt/4"},{"type":"module","title":"Nostrum.Voice.Crypto.Chacha","doc":"Handles encryption and decryption of outgoing and incoming voice data when a ChaCha encryption mode is selected\n\n>","ref":"Nostrum.Voice.Crypto.Chacha.html"},{"type":"module","title":"Internal module {: .info} - Nostrum.Voice.Crypto.Chacha","doc":">\n> This module is intended for exclusive usage inside of nostrum, and is\n> documented for completeness and curious cryptographic cats.","ref":"Nostrum.Voice.Crypto.Chacha.html#module-internal-module-info"},{"type":"module","title":"Purpose - Nostrum.Voice.Crypto.Chacha","doc":"Erlang's `:crypto` module supports the chacha20_poly1305 AEAD stream cipher.\nAnalogously to Salsa20 and XSalsa20, XChaCha20 is a way to use 192-bit nonces\nwith ChaCha20 by hashing the key and part of the extended nonce to generate a\nsub-key, which is used as the input key for ChaCha20.\n\nTo leverage the crypto module, we had to implement the HChaCha20 hash function\nin elixir to then pass the resulting sub-key to the `crypto_one_time_aead`.","ref":"Nostrum.Voice.Crypto.Chacha.html#module-purpose"},{"type":"module","title":"Implementation - Nostrum.Voice.Crypto.Chacha","doc":"The HChaCha20 function takes the first 16-bytes of the extended 24-byte XChaCha20 nonce,\nexpands the key and the 16-byte nonce slice into a block in place of the block count and\nusual smaller nonce. That block has 20 rounds of mutation, and instead of summing the block\nwith its starting state as is done with keystream generation, 8 of the 16 bytes are taken\nand used as the sub-key, which is the input key for the standard chacha20 cipher.\n\nEven though we've implemented the bulk of what's needed to generate chacha20 key streams\nfor encryption and decryption, we're only using this module to generate the inputs to\nuse the :crypto module's chacha20_poly1305 functionality in the capacity of xchacha20\nas is required by Discord with that encryption mode selected.\n\nThis is all in service of leveraging the performance benefits of the the NIF crypto\nfunctions, which are necessarily going to be more performant than anything implemented\nin pure elixir/erlang like the `:kcl` package.\n\n*ChaCha20 is a variant of the Salsa20 cipher. I will discuss in greater detail the implementation\nin the `Nostrum.Voice.Crypto.Salsa` module, where much is applicable here.*\n\nReferences for Salsa family of ciphers\n- https://cr.yp.to/snuffle/spec.pdf\n- https://cr.yp.to/chacha/chacha-20080128.pdf\n- https://cr.yp.to/snuffle/xsalsa-20110204.pdf\n- https://datatracker.ietf.org/doc/html/rfc7539\n- https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-xchacha","ref":"Nostrum.Voice.Crypto.Chacha.html#module-implementation"},{"type":"module","title":"Performance considerations - Nostrum.Voice.Crypto.Chacha","doc":"After the XChaCha20 sub-key is generated in elixir, the crypto NIF function performs the\nheavy lifting. If your bot is running on a machine without AES hardware acceleration, you\nmay find that using the chacha encryption mode yields better performance.","ref":"Nostrum.Voice.Crypto.Chacha.html#module-performance-considerations"},{"type":"function","title":"Nostrum.Voice.Crypto.Chacha.decrypt/5","doc":"","ref":"Nostrum.Voice.Crypto.Chacha.html#decrypt/5"},{"type":"function","title":"Nostrum.Voice.Crypto.Chacha.encrypt/4","doc":"","ref":"Nostrum.Voice.Crypto.Chacha.html#encrypt/4"},{"type":"module","title":"Nostrum.Voice.Crypto.Salsa","doc":"Handles encryption and decryption of outgoing and incoming voice data when a ChaCha encryption mode is selected\n\n>","ref":"Nostrum.Voice.Crypto.Salsa.html"},{"type":"module","title":"Internal module {: .info} - Nostrum.Voice.Crypto.Salsa","doc":">\n> This module is intended for exclusive usage inside of nostrum, and is\n> documented for completeness and curious cryptographic cats.","ref":"Nostrum.Voice.Crypto.Salsa.html#module-internal-module-info"},{"type":"module","title":"Purpose - Nostrum.Voice.Crypto.Salsa","doc":"To support xsalsa20_poly1305 without a NIF, we have to implement the\nSalsa20 cipher and HSalsa20 hash function to use 192-bit nonces in the capacity\nof XSalsa20.\n\nAlong with leveraging the :crypto module to perform the poly1305 MAC function\nand xor'ing arbitrary-length binaries, by being more thoughtful and explicit\nwith our implementation, we should be able to eek out better performance\nthan the `:kcl` package provides.","ref":"Nostrum.Voice.Crypto.Salsa.html#module-purpose"},{"type":"module","title":"Implementation - Nostrum.Voice.Crypto.Salsa","doc":"The `:kcl` package is an impressive pure-elixir NaCl/libsodium compatible library\nthat Nostrum previously used for voice encryption. For our usage with Discord voice,\nwe only need the ability to encrypt and decrypt with 32-byte keys using 24-byte\nXSalsa20 nonces.\n\nSome of the key differences in our implementation compared to Kcl\n- Heavy use of explicit binary pattern matching instead of more traditional implicit enumeration\n- Intermediate block state stored in a 16-element tuple that is mutated during the 20-round hot loop instead of lists\n- Minimized the number binary copies, returning iolists when appropriate, instead of concatenating binaries\n- XOR whole keystream and message blocks instead of XOR'ing one byte at a time\n- Poly1305 MAC handled by crypto module instead of implemented in elixir\n- Only support 32-byte keys and 24-byte nonces (XSalsa20) instead of full NaCl/libsodium\n\nAdditionally there appears to be a bug in how the 16-byte block count is serialized during key expansion:\nIt's supposed to be little endian, and it happens to be for blocks 0-255, but for larger block counts,\nKcl may become incompatible with NaCl/libsodium-type libraries. For Discord's use case of encrypting short\n20 millisecond compressed audio packets, block counts were well-below this suspected problem threshold.\n\nThe cipher functions were implemented in the order they're defined in the original Salsa specification,\nand though it's using a lot of explicit binary pattern matching, it turned out to be quite legible.\nIn a single statement of binary pattern matching, the 512-bit initial block state is cast into 16\nlittle-endian 32-bit words. Standard elixir patterns might have you iterate through the binary until the\nend was reached, but matching and casting all sixteen block elements in a single statement then returning\na tuple is explicit, clear, and simple to understand when referenced against the spec.\n\nReaders interested in cryptography are encouraged to read more about the Salsa20/ChaCha20 ciphers.\n\nReferences for Salsa family of ciphers\n- https://cr.yp.to/snuffle/spec.pdf\n- https://cr.yp.to/chacha/chacha-20080128.pdf\n- https://cr.yp.to/snuffle/xsalsa-20110204.pdf\n- https://datatracker.ietf.org/doc/html/rfc7539\n- https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-xchacha","ref":"Nostrum.Voice.Crypto.Salsa.html#module-implementation"},{"type":"module","title":"Performance considerations - Nostrum.Voice.Crypto.Salsa","doc":"The entire keystream generation and xor'ing the message with the stream is done in elixir,\nonly performing the Poly1305 MAC function through the crypto module. Although it was implemented\nas thoughtfully and explicitly as possible with memory usage and performance in mind, using any\nof the Salsa modes will likely be less performant than ChaCha or AES.","ref":"Nostrum.Voice.Crypto.Salsa.html#module-performance-considerations"},{"type":"function","title":"Nostrum.Voice.Crypto.Salsa.block_binary_to_tuple/1","doc":"","ref":"Nostrum.Voice.Crypto.Salsa.html#block_binary_to_tuple/1"},{"type":"function","title":"Nostrum.Voice.Crypto.Salsa.decrypt/3","doc":"","ref":"Nostrum.Voice.Crypto.Salsa.html#decrypt/3"},{"type":"function","title":"Nostrum.Voice.Crypto.Salsa.encrypt/3","doc":"","ref":"Nostrum.Voice.Crypto.Salsa.html#encrypt/3"},{"type":"module","title":"Nostrum.Cache.CacheSupervisor","doc":"Supervises caches for nostrum structures.\n\nSee the documentation for the relevant submodules for details:\n\n- `Nostrum.Cache.GuildCache`\n- `Nostrum.Cache.Me`\n- `Nostrum.Cache.MemberCache`\n- `Nostrum.Cache.PresenceCache`\n- `Nostrum.Cache.UserCache`","ref":"Nostrum.Cache.CacheSupervisor.html"},{"type":"function","title":"Nostrum.Cache.CacheSupervisor.child_spec/1","doc":"Returns a specification to start this module under a supervisor.\n\nSee `Supervisor`.","ref":"Nostrum.Cache.CacheSupervisor.html#child_spec/1"},{"type":"function","title":"Nostrum.Cache.CacheSupervisor.init/1","doc":"","ref":"Nostrum.Cache.CacheSupervisor.html#init/1"},{"type":"function","title":"Nostrum.Cache.CacheSupervisor.start_link/1","doc":"","ref":"Nostrum.Cache.CacheSupervisor.html#start_link/1"},{"type":"behaviour","title":"Nostrum.Cache.ChannelGuildMapping","doc":"Cache behaviour & dispatcher for mapping channel IDs to their respective guilds.","ref":"Nostrum.Cache.ChannelGuildMapping.html"},{"type":"behaviour","title":"Purpose - Nostrum.Cache.ChannelGuildMapping","doc":"While retrieving the channels on a specific guild is trivial as they are\nstored on the guild, retrieving the guild a given channel belongs to is not\npossible with the regular data mode of channels. This module allows to\nretrieve guilds associated with a channel via `get/1`.","ref":"Nostrum.Cache.ChannelGuildMapping.html#module-purpose"},{"type":"behaviour","title":"Configuration - Nostrum.Cache.ChannelGuildMapping","doc":"By default, nostrum will use `Elixir.Nostrum.Cache.ChannelGuildMapping.ETS` to store the\nmapping. To override this, set the `[:caches, :channel_guild_mapping]`\nsetting on nostrum's application configuration:\n\n```elixir\nconfig :nostrum,\n caches: %{\n channel_guild_mapping: MyBot.Nostrum.Cache.ChannelGuildMapping\n }\n```\n\nThis setting must be set at compile time.","ref":"Nostrum.Cache.ChannelGuildMapping.html#module-configuration"},{"type":"callback","title":"Nostrum.Cache.ChannelGuildMapping.child_spec/1","doc":"Retrieve the child specification for starting this mapping under a supervisor.","ref":"Nostrum.Cache.ChannelGuildMapping.html#c:child_spec/1"},{"type":"function","title":"Nostrum.Cache.ChannelGuildMapping.create/2","doc":"","ref":"Nostrum.Cache.ChannelGuildMapping.html#create/2"},{"type":"callback","title":"Nostrum.Cache.ChannelGuildMapping.create/2","doc":"Create a mapping of the given channel to the given guild.","ref":"Nostrum.Cache.ChannelGuildMapping.html#c:create/2"},{"type":"function","title":"Nostrum.Cache.ChannelGuildMapping.delete/1","doc":"","ref":"Nostrum.Cache.ChannelGuildMapping.html#delete/1"},{"type":"callback","title":"Nostrum.Cache.ChannelGuildMapping.delete/1","doc":"Remove any mapping associated with the given channel.","ref":"Nostrum.Cache.ChannelGuildMapping.html#c:delete/1"},{"type":"function","title":"Nostrum.Cache.ChannelGuildMapping.get/1","doc":"","ref":"Nostrum.Cache.ChannelGuildMapping.html#get/1"},{"type":"callback","title":"Nostrum.Cache.ChannelGuildMapping.get/1","doc":"Retrieve the guild ID for the given channel ID, if present.","ref":"Nostrum.Cache.ChannelGuildMapping.html#c:get/1"},{"type":"behaviour","title":"Nostrum.Cache.GuildCache","doc":"Cache behaviour & dispatcher for guilds.\n\nYou can call the functions provided by this module independent of which cache\nis configured, and it will dispatch to the configured cache implementation.\n\nBy default, Elixir.Nostrum.Cache.GuildCache.ETS will be used for caching guilds.\nYou can override this in the `:caches` option of the `:nostrum` application\nby setting the `:guilds` field to a different module implementing the\n`Nostrum.Cache.GuildCache` behaviour. Any module below\n`Nostrum.Cache.GuildCache` can be used as a cache.","ref":"Nostrum.Cache.GuildCache.html"},{"type":"behaviour","title":"Writing your own guild cache - Nostrum.Cache.GuildCache","doc":"As with the other caches, the guild cache API consists of two parts:\n\n- The functions that nostrum calls, such as `c:create/1` or `c:update/1`.\nThese **do not create any objects in the Discord API**, they are purely\ncreated to update the cached data from data that Discord sends us. If you\nwant to create objects on Discord, use the functions exposed by `Nostrum.Api`\ninstead.\n\n- the QLC query handle for read operations, `c:query_handle/0`, and\n\n- the `c:child_spec/1` callback for starting the cache under a supervisor.\n\nYou need to implement all of them for nostrum to work with your custom\ncache.\n\nThe \"upstream data\" wording in this module references the fact that the\ndata that the guild cache (and other caches) retrieves represents the raw\ndata we receive from the upstream connection, no attempt is made by nostrum\nto sanitize the data before it enters the cache. Caching implementations\nneed to cast the data to the resulting type themselves. A possible future\nimprovement would be moving the data casting into this module before the\nbacking cache implementation is called.","ref":"Nostrum.Cache.GuildCache.html#module-writing-your-own-guild-cache"},{"type":"callback","title":"Nostrum.Cache.GuildCache.channel_create/2","doc":"Create a channel for the guild from upstream data.\n\nReturn the adapted `t:Nostrum.Struct.Channel.t/0` structure.","ref":"Nostrum.Cache.GuildCache.html#c:channel_create/2"},{"type":"callback","title":"Nostrum.Cache.GuildCache.channel_delete/2","doc":"Delete the given channel from the guild.\n\nIf the channel was cached, return the original channel. Return `:noop`\notherwise.","ref":"Nostrum.Cache.GuildCache.html#c:channel_delete/2"},{"type":"callback","title":"Nostrum.Cache.GuildCache.channel_update/2","doc":"Update the given channel on the given guild from upstream data.\n\nReturn the original channel before the update if known, and the updated\nchannel.","ref":"Nostrum.Cache.GuildCache.html#c:channel_update/2"},{"type":"callback","title":"Nostrum.Cache.GuildCache.child_spec/1","doc":"Retrieve the child specification for starting this mapping under a supervisor.","ref":"Nostrum.Cache.GuildCache.html#c:child_spec/1"},{"type":"callback","title":"Nostrum.Cache.GuildCache.create/1","doc":"Create a guild in the cache.","ref":"Nostrum.Cache.GuildCache.html#c:create/1"},{"type":"callback","title":"Nostrum.Cache.GuildCache.delete/1","doc":"Delete a guild from the cache.\n\nReturn the old guild if it was cached, or `nil` otherwise.","ref":"Nostrum.Cache.GuildCache.html#c:delete/1"},{"type":"callback","title":"Nostrum.Cache.GuildCache.emoji_update/2","doc":"Update the emoji list of the given guild from upstream data.\n\nDiscord sends us the complete emoji list on an update, which is passed here.\n\nReturn the old list of emojis before the update, and the updated list of\nemojis.","ref":"Nostrum.Cache.GuildCache.html#c:emoji_update/2"},{"type":"function","title":"Nostrum.Cache.GuildCache.fold/3","doc":"Fold (reduce) over all guilds in the cache.","ref":"Nostrum.Cache.GuildCache.html#fold/3"},{"type":"function","title":"Parameters - Nostrum.Cache.GuildCache.fold/3","doc":"- `acc`: The initial accumulator. Also returned if no guilds are cached.\n- `fun`: Called for every guild in the result. Takes a pair in the form\n`(guild, acc)`, and must return the updated accumulator.\n- `cache` (optional): The cache to use. nostrum will use the cache configured\nat compile time by default.","ref":"Nostrum.Cache.GuildCache.html#fold/3-parameters"},{"type":"function","title":"Nostrum.Cache.GuildCache.get/2","doc":"Retrieves a single `Nostrum.Struct.Guild` from the cache via its `id`.\n\nReturns `{:error, :not_found}` if no result was found.","ref":"Nostrum.Cache.GuildCache.html#get/2"},{"type":"function","title":"Nostrum.Cache.GuildCache.get!/1","doc":"Same as `get/1`, but raises `Nostrum.Error.CacheError` in case of failure.","ref":"Nostrum.Cache.GuildCache.html#get!/1"},{"type":"callback","title":"Nostrum.Cache.GuildCache.member_count_down/1","doc":"Decrement the member count for this guild by one.","ref":"Nostrum.Cache.GuildCache.html#c:member_count_down/1"},{"type":"callback","title":"Nostrum.Cache.GuildCache.member_count_up/1","doc":"Increment the member count for this guild by one.","ref":"Nostrum.Cache.GuildCache.html#c:member_count_up/1"},{"type":"function","title":"Nostrum.Cache.GuildCache.query_handle/0","doc":"Return the QLC handle of the configured cache.","ref":"Nostrum.Cache.GuildCache.html#query_handle/0"},{"type":"callback","title":"Nostrum.Cache.GuildCache.query_handle/0","doc":"Return a QLC query handle for cache read operations.\n\nThis is used by nostrum to provide any read operations on the cache. Write\noperations still need to be implemented separately.\n\nThe Erlang manual on [Implementing a QLC\nTable](https://www.erlang.org/doc/man/qlc.html#implementing_a_qlc_table)\ncontains examples for implementation. To prevent full table scans, accept\nmatch specifications in your `TraverseFun` and implement a `LookupFun` as\ndocumented.\n\nThe query handle must return items in the form `{guild_id, guild}`, where:\n- `guild_id` is a `t:Nostrum.Struct.Guild.id/0`, and\n- `guild` is a `t:Nostrum.Struct.Guild.t/0`.\n\nIf your cache needs some form of setup or teardown for QLC queries (such as\nopening connections), see `c:wrap_qlc/1`.","ref":"Nostrum.Cache.GuildCache.html#c:query_handle/0"},{"type":"callback","title":"Nostrum.Cache.GuildCache.role_create/2","doc":"Create a role on the given guild from upstream data.\n\nReturn the casted role.","ref":"Nostrum.Cache.GuildCache.html#c:role_create/2"},{"type":"callback","title":"Nostrum.Cache.GuildCache.role_delete/2","doc":"Delete the given role on the given guild.\n\nReturn the guild and the old role if it was cached, or `:noop` otherwise.","ref":"Nostrum.Cache.GuildCache.html#c:role_delete/2"},{"type":"callback","title":"Nostrum.Cache.GuildCache.role_update/2","doc":"Update a role on the given guild from upstream data.\n\nReturn the old role before the update and the updated role.","ref":"Nostrum.Cache.GuildCache.html#c:role_update/2"},{"type":"callback","title":"Nostrum.Cache.GuildCache.stickers_update/2","doc":"Update the sticker list of the given guild from upstream data.\n\nDiscord sends us a complete list of stickers on an update, which is passed here.\n\nReturn the old list of stickers before the update, and the updated list of stickers.","ref":"Nostrum.Cache.GuildCache.html#c:stickers_update/2"},{"type":"callback","title":"Nostrum.Cache.GuildCache.update/1","doc":"Update a guild from upstream data.\n\nReturn the original guild before the update (if it was cached) and the\nupdated guild.","ref":"Nostrum.Cache.GuildCache.html#c:update/1"},{"type":"callback","title":"Nostrum.Cache.GuildCache.voice_state_update/2","doc":"Update the voice state of the given guild from upstream data.\n\nNote that it is recommended to drop the `:member` / `\"member\"` keys of\nthe supplied upstream data, as these would otherwise duplicate the data\nthat is being kept in the guild cache already.\n\nReturn the guild ID and the updated voice states of the guild.","ref":"Nostrum.Cache.GuildCache.html#c:voice_state_update/2"},{"type":"callback","title":"Nostrum.Cache.GuildCache.wrap_qlc/1","doc":"A function that should wrap any `:qlc` operations.\n\nIf you implement a cache that is backed by a database and want to perform\ncleanup and teardown actions such as opening and closing connections,\nmanaging transactions and so on, you want to implement this function. nostrum\nwill then effectively call `wrap_qlc(fn -> :qlc.e(...) end)`.\n\nIf your cache does not need any wrapping, you can omit this.","ref":"Nostrum.Cache.GuildCache.html#c:wrap_qlc/1"},{"type":"function","title":"Nostrum.Cache.GuildCache.wrap_qlc/2","doc":"Call `c:wrap_qlc/1` on the given cache, if implemented.\n\nIf no cache is given, calls out to the default cache.","ref":"Nostrum.Cache.GuildCache.html#wrap_qlc/2"},{"type":"module","title":"Nostrum.Cache.Me","doc":"Simple cache that stores information for the current user.","ref":"Nostrum.Cache.Me.html"},{"type":"function","title":"Nostrum.Cache.Me.child_spec/1","doc":"Returns a specification to start this module under a supervisor.\n\nSee `Supervisor`.","ref":"Nostrum.Cache.Me.html#child_spec/1"},{"type":"function","title":"Nostrum.Cache.Me.get/0","doc":"Returns the current user's state.","ref":"Nostrum.Cache.Me.html#get/0"},{"type":"function","title":"Nostrum.Cache.Me.start_link/1","doc":"","ref":"Nostrum.Cache.Me.html#start_link/1"},{"type":"behaviour","title":"Nostrum.Cache.MemberCache","doc":"Cache behaviour & dispatcher for guild members.\n\nYou can call the functions provided by this module independent of which cache\nis configured, and it will dispatch to the configured cache implementation.\n\nBy default, Elixir.Nostrum.Cache.MemberCache.ETS will be used for caching\nmembers. You can override this in the `:caches` option of the `:nostrum`\napplication by setting the `:members` field to a different module\nimplementing the behaviour defined by this module.\n\nThe user-facing functions of this module can be called with a custom cache as\nthe final argument. This is mainly useful if you want to test the cache: by\ndefault, nostrum will use Elixir.Nostrum.Cache.MemberCache.ETS.","ref":"Nostrum.Cache.MemberCache.html"},{"type":"callback","title":"Nostrum.Cache.MemberCache.bulk_create/2","doc":"Bulk create multiple members in the cache from upstream data.\n\nReturn value is unused, as we currently do not dispatch a gateway for this.","ref":"Nostrum.Cache.MemberCache.html#c:bulk_create/2"},{"type":"callback","title":"Nostrum.Cache.MemberCache.child_spec/1","doc":"Retrieve the child specification for starting this mapping under a supervisor.","ref":"Nostrum.Cache.MemberCache.html#c:child_spec/1"},{"type":"callback","title":"Nostrum.Cache.MemberCache.create/2","doc":"Add the member for the given guild from upstream data.\n\nReturn the casted member structure.","ref":"Nostrum.Cache.MemberCache.html#c:create/2"},{"type":"callback","title":"Nostrum.Cache.MemberCache.delete/2","doc":"Remove the given user for the given guild.\n\nReturn the guild ID and old member if the member was cached. Otherwise,\nreturn `:noop`.","ref":"Nostrum.Cache.MemberCache.html#c:delete/2"},{"type":"function","title":"Nostrum.Cache.MemberCache.fold/4","doc":"Fold (reduce) over members for the given guild ID.","ref":"Nostrum.Cache.MemberCache.html#fold/4"},{"type":"function","title":"Parameters - Nostrum.Cache.MemberCache.fold/4","doc":"- `acc`: The initial accumulator. Also returned if no guild members were found.\n- `guild_id`: The guild for which to reduce members.\n- `fun`: Called for every element in the result. Takes a pair\nin the form `(member, acc)`, and must return the updated accumulator.","ref":"Nostrum.Cache.MemberCache.html#fold/4-parameters"},{"type":"function","title":"Return value - Nostrum.Cache.MemberCache.fold/4","doc":"Returns the resulting accumulator via `fun`. Returns `acc` unchanged if no\nresults were found.","ref":"Nostrum.Cache.MemberCache.html#fold/4-return-value"},{"type":"function","title":"Nostrum.Cache.MemberCache.fold_by_user/4","doc":"Reduce over all members cached for the given user ID.\n\nThe members will be returned alongside their guild ID as a pair in the\nformat `{guild_id, member}`.","ref":"Nostrum.Cache.MemberCache.html#fold_by_user/4"},{"type":"function","title":"Nostrum.Cache.MemberCache.fold_with_users/4","doc":"Calls `fun` on each member and its user on the given guild ID, with the given\naccumulator.","ref":"Nostrum.Cache.MemberCache.html#fold_with_users/4"},{"type":"function","title":"Parameters - Nostrum.Cache.MemberCache.fold_with_users/4","doc":"- `acc` (`term()`): The initial accumulator. Also returned if no guild\nmembers were found.\n- `guild_id` (`t:Nostrum.Struct.Guild.id/0`): The guild for which to reduce members.\n- `fun` (`function()`): Called for every element in the result. Takes a pair\nin the form `({member, user}, acc)`, and must return the updated accumulator.","ref":"Nostrum.Cache.MemberCache.html#fold_with_users/4-parameters"},{"type":"function","title":"Return value - Nostrum.Cache.MemberCache.fold_with_users/4","doc":"Returns the resulting accumulator via `fun`. Returns `acc` unchanged if no\nresults were found.\n\nIf the user for a guild member is not found, the member _and_ user won't be\npresent in the result. Barring a bug in nostrum's caching, this should never\nhappen in practice.","ref":"Nostrum.Cache.MemberCache.html#fold_with_users/4-return-value"},{"type":"function","title":"Nostrum.Cache.MemberCache.get/3","doc":"Get a single member on the given guild ID.","ref":"Nostrum.Cache.MemberCache.html#get/3"},{"type":"function","title":"Nostrum.Cache.MemberCache.get_with_user/3","doc":"Return a member together with its user via the user cache.","ref":"Nostrum.Cache.MemberCache.html#get_with_user/3"},{"type":"function","title":"Nostrum.Cache.MemberCache.query_handle/0","doc":"Return the QLC handle of the configured cache.","ref":"Nostrum.Cache.MemberCache.html#query_handle/0"},{"type":"callback","title":"Nostrum.Cache.MemberCache.query_handle/0","doc":"Return a QLC query handle for cache read operations.\n\nThis is used by nostrum to provide any read operations on the cache. Write\noperations still need to be implemented separately.\n\nThe Erlang manual on [Implementing a QLC\nTable](https://www.erlang.org/doc/man/qlc.html#implementing_a_qlc_table)\ncontains examples for implementation. To prevent full table scans, accept\nmatch specifications in your `TraverseFun` and implement a `LookupFun` as\ndocumented.\n\nThe query handle must return items in the form `{guild_id, user_id,\nmember}`, where:\n- `guild_id` is a `t:Nostrum.Struct.Guild.id/0`,\n- `user_id` is a `t:Nostrum.Struct.User.id/0`, and\n- `member` is a `t:Nostrum.Struct.Guild.Member.t/0`.\n\nIf your cache needs some form of setup or teardown for QLC queries (such as\nopening connections), see `c:wrap_qlc/1`.","ref":"Nostrum.Cache.MemberCache.html#c:query_handle/0"},{"type":"callback","title":"Nostrum.Cache.MemberCache.update/2","doc":"Update the given member for the given guild from upstream data.\n\nReturn the guild ID that was updated, the old cached member (if the member\nwas known to the cache), and the updated member.","ref":"Nostrum.Cache.MemberCache.html#c:update/2"},{"type":"callback","title":"Note regarding intents - Nostrum.Cache.MemberCache.update/2","doc":"Even if the required intents to receive `GUILD_MEMBER_UPDATE` events are\ndisabled to a point where we do not receive guild creation events, it is\nstill possible to receive the event for our own user. An example of this can\nbe found in [issue\n#293](https://github.com/Kraigie/nostrum/issues/293). Note that the issue\npredates the modern nostrum caching infrastructure.","ref":"Nostrum.Cache.MemberCache.html#c:update/2-note-regarding-intents"},{"type":"callback","title":"Nostrum.Cache.MemberCache.wrap_qlc/1","doc":"A function that should wrap any `:qlc` operations.\n\nIf you implement a cache that is backed by a database and want to perform\ncleanup and teardown actions such as opening and closing connections,\nmanaging transactions and so on, you want to implement this function. nostrum\nwill then effectively call `wrap_qlc(fn -> :qlc.e(...) end)`.\n\nIf your cache does not need any wrapping, you can omit this.","ref":"Nostrum.Cache.MemberCache.html#c:wrap_qlc/1"},{"type":"function","title":"Nostrum.Cache.MemberCache.wrap_qlc/2","doc":"Call `c:wrap_qlc/1` on the given cache, if implemented.\n\nIf no cache is given, calls out to the default cache.","ref":"Nostrum.Cache.MemberCache.html#wrap_qlc/2"},{"type":"behaviour","title":"Nostrum.Cache.MessageCache","doc":"Cache behaviour & dispatcher for Discord messages.\n\nBy default, Elixir.Nostrum.Cache.MessageCache.Noop will be used for caching\nmessages. You can override this in the `:caches` option of the `nostrum`\napplication by setting the `:messages` field to a different module, or\nto the tuple `{module, config}` where `module` is the module to use and\n`config` is any compile-time configuration to pass to the module.\n\nUnlike the other caches, the default is a no-op cache, as messages take\nup a lot of memory and most bots do not need messages to be cached.\nIf you would like to cache messages, you can change the cache implementation\nto one of the provided modules under `Nostrum.Cache.MessageCache`\nor write your own.","ref":"Nostrum.Cache.MessageCache.html"},{"type":"behaviour","title":"Writing your own message cache - Nostrum.Cache.MessageCache","doc":"As with the other caches, the message cache API consists of two parts:\n\n- The functions that nostrum calls, such as `c:create/1` or `c:update/1`.\nThese **do not create any objects in the Discord API**, they are purely\ncreated to update the cached data from data that Discord sends us. If you\nwant to create objects on Discord, use the functions exposed by `Nostrum.Api` instead.\n\n- the `c:child_spec/1` callback for starting the cache under a supervisor.\n\nYou need to implement both of them for nostrum to work with your custom\ncache.","ref":"Nostrum.Cache.MessageCache.html#module-writing-your-own-message-cache"},{"type":"callback","title":"Nostrum.Cache.MessageCache.bulk_delete/2","doc":"Deletes multiple messages from the cache, any message IDs given\nwill always be for the same channel.\n\nReturns a list of the deleted messages.\nNote that if a message was not found in the cache, it will\nnot be included in the returned list.","ref":"Nostrum.Cache.MessageCache.html#c:bulk_delete/2"},{"type":"callback","title":"Nostrum.Cache.MessageCache.channel_delete/1","doc":"Called when a channel is deleted.\n\nAny messages in the cache for the channel should be removed.","ref":"Nostrum.Cache.MessageCache.html#c:channel_delete/1"},{"type":"callback","title":"Nostrum.Cache.MessageCache.child_spec/1","doc":"Retrieve the child spec for starting the cache under a supervisor.\n\nThis callback is optional, and if not implemented, the cache will not be\nstarted under a supervisor.","ref":"Nostrum.Cache.MessageCache.html#c:child_spec/1"},{"type":"callback","title":"Nostrum.Cache.MessageCache.create/1","doc":"Creates a message in the cache.\n\nThe argument given is the raw message payload from Discord's gateway.","ref":"Nostrum.Cache.MessageCache.html#c:create/1"},{"type":"callback","title":"Nostrum.Cache.MessageCache.delete/2","doc":"Deletes a message from the cache.\n\nExpects the deleted message to be returned if it was found.","ref":"Nostrum.Cache.MessageCache.html#c:delete/2"},{"type":"function","title":"Nostrum.Cache.MessageCache.get/1","doc":"Retrieve a message from the cache by channel and message id.","ref":"Nostrum.Cache.MessageCache.html#get/1"},{"type":"callback","title":"Nostrum.Cache.MessageCache.get/1","doc":"Retrieve a single `Nostrum.Struct.Message` from the cache by its ID.","ref":"Nostrum.Cache.MessageCache.html#c:get/1"},{"type":"function","title":"Nostrum.Cache.MessageCache.get_by_author/4","doc":"Retrieve a list of messages from the cache with a given author ID,\noptionally after a given date, and before a given date.\n\nIntegers are treated as snowflakes, and the atom `:infinity` when given\nas a before date will be treated as the maximum possible date.","ref":"Nostrum.Cache.MessageCache.html#get_by_author/4"},{"type":"function","title":"Nostrum.Cache.MessageCache.get_by_channel/4","doc":"Retrieve a list of messages from the cache with a given channel ID,\nafter a given date, and before a given date.\n\nIntegers are treated as snowflakes, and the atom `:infinity` when given\nas a before date will be treated as the maximum possible date.","ref":"Nostrum.Cache.MessageCache.html#get_by_channel/4"},{"type":"function","title":"Nostrum.Cache.MessageCache.get_by_channel_and_author/5","doc":"Retrieve a list of messages from the cache with a given channel ID and author ID,\noptionally after a given date, and before a given date.","ref":"Nostrum.Cache.MessageCache.html#get_by_channel_and_author/5"},{"type":"function","title":"Nostrum.Cache.MessageCache.query_handle/0","doc":"Return the QLC handle of the configured cache.","ref":"Nostrum.Cache.MessageCache.html#query_handle/0"},{"type":"callback","title":"Nostrum.Cache.MessageCache.query_handle/0","doc":"Return a QLC query handle for the cache for read operations.\n\nThis is used by nostrum to provide any read operations on the cache. Write\noperations still need to be implemented separately.\n\nThe Erlang manual on [Implementing a QLC\nTable](https://www.erlang.org/doc/man/qlc.html#implementing_a_qlc_table)\ncontains examples for implementation. To prevent full table scans, accept\nmatch specifications in your `TraverseFun` and implement a `LookupFun` as\ndocumented.\n\nThe query handle must return items in the form `{message_id, message}`, where:\n- `message_id` is a `t:Nostrum.Struct.Message.id/0`\n- `message` is a `t:Nostrum.Struct.Message.t/0`\n\nIf your cache needs some form of setup or teardown for QLC queries (such as\nopening connections), see `c:wrap_qlc/1`.","ref":"Nostrum.Cache.MessageCache.html#c:query_handle/0"},{"type":"callback","title":"Nostrum.Cache.MessageCache.update/1","doc":"Updates a message in the cache.\n\nThe argument given is the raw message payload from Discord's gateway,\nand the return value is a tuple of the updated message and the old message if\nit was found in the cache, otherwise `nil`.","ref":"Nostrum.Cache.MessageCache.html#c:update/1"},{"type":"callback","title":"Nostrum.Cache.MessageCache.wrap_qlc/1","doc":"A function that should wrap any `:qlc` operations.\n\nIf you implement a cache that is backed by a database and want to perform\ncleanup and teardown actions such as opening and closing connections,\nmanaging transactions and so on, you want to implement this function. nostrum\nwill then effectively call `wrap_qlc(fn -> :qlc.e(...) end)`.\n\nIf your cache does not need any wrapping, you can omit this.","ref":"Nostrum.Cache.MessageCache.html#c:wrap_qlc/1"},{"type":"function","title":"Nostrum.Cache.MessageCache.wrap_qlc/2","doc":"Call `c:wrap_qlc/1` on the given cache, if implemented.\n\nIf no cache is given, calls out to the default cache.","ref":"Nostrum.Cache.MessageCache.html#wrap_qlc/2"},{"type":"type","title":"Nostrum.Cache.MessageCache.timestamp_like/0","doc":"Used to constrain the return values of functions that can return\na list of messages from the cache.","ref":"Nostrum.Cache.MessageCache.html#t:timestamp_like/0"},{"type":"behaviour","title":"Nostrum.Cache.PresenceCache","doc":"Cache behaviour & dispatcher for Discord presences.\n\nBy default, `Elixir.Nostrum.Cache.PresenceCache.ETS` will be use for caching\npresences. You can override this in the `:caches` option of the `nostrum`\napplication by setting the `:presences` fields to a different module\nimplementing the `Nostrum.Cache.PresenceCache` behaviour. Any module below\n`Nostrum.Cache.PresenceCache` implements this behaviour and can be used as a\ncache.","ref":"Nostrum.Cache.PresenceCache.html"},{"type":"behaviour","title":"Writing your own presence cache - Nostrum.Cache.PresenceCache","doc":"As with the other caches, the presence cache API consists of two parts:\n\n- The functions that nostrum calls, such as `c:create/1` or `c:update/1`.\nThese **do not create any objects in the Discord API**, they are purely\ncreated to update the cached data from data that Discord sends us. If you\nwant to create objects on Discord, use the functions exposed by `Nostrum.Api`\ninstead.\n\n- the QLC query handle for read operations, `c:query_handle/0`, and\n\n- the `c:child_spec/1` callback for starting the cache under a supervisor.\n\nYou need to implement both of them for nostrum to work with your custom\ncache.","ref":"Nostrum.Cache.PresenceCache.html#module-writing-your-own-presence-cache"},{"type":"callback","title":"Nostrum.Cache.PresenceCache.bulk_create/2","doc":"Bulk create multiple presences for the given guild in the cache.","ref":"Nostrum.Cache.PresenceCache.html#c:bulk_create/2"},{"type":"callback","title":"Nostrum.Cache.PresenceCache.child_spec/1","doc":"Retrieve the child specification for starting this mapping under a supervisor.","ref":"Nostrum.Cache.PresenceCache.html#c:child_spec/1"},{"type":"callback","title":"Nostrum.Cache.PresenceCache.create/1","doc":"Create a presence in the cache.","ref":"Nostrum.Cache.PresenceCache.html#c:create/1"},{"type":"function","title":"Nostrum.Cache.PresenceCache.get/3","doc":"Retrieves a presence for a user from the cache by guild and id.\n\nIf successful, returns `{:ok, presence}`. Otherwise returns `{:error, reason}`.","ref":"Nostrum.Cache.PresenceCache.html#get/3"},{"type":"function","title":"Example - Nostrum.Cache.PresenceCache.get/3","doc":"```elixir\ncase Nostrum.Cache.PresenceCache.get(111133335555, 222244446666) do\n {:ok, presence} ->\n \"They're #{presence.status}\"\n {:error, _reason} ->\n \"They're dead Jim\"\nend\n```","ref":"Nostrum.Cache.PresenceCache.html#get/3-example"},{"type":"function","title":"Nostrum.Cache.PresenceCache.get!/3","doc":"Same as `get/1`, but raise `Nostrum.Error.CacheError` in case of a failure.","ref":"Nostrum.Cache.PresenceCache.html#get!/3"},{"type":"function","title":"Nostrum.Cache.PresenceCache.query_handle/0","doc":"Return the QLC handle of the configured cache.","ref":"Nostrum.Cache.PresenceCache.html#query_handle/0"},{"type":"callback","title":"Nostrum.Cache.PresenceCache.query_handle/0","doc":"Return a QLC query handle for cache read operations.\n\nThis is used by nostrum to provide any read operations on the cache. Write\noperations still need to be implemented separately.\n\nThe Erlang manual on [Implementing a QLC\nTable](https://www.erlang.org/doc/man/qlc.html#implementing_a_qlc_table)\ncontains examples for implementation. To prevent full table scans, accept\nmatch specifications in your `TraverseFun` and implement a `LookupFun` as\ndocumented.\n\nThe query handle must return items in the form `{{guild_id, user_id}, presence}`, where:\n- `guild_id` is a `t:Nostrum.Struct.Guild.id/0`, and\n- `user_id` is a `t:Nostrum.Struct.User.id/0`, and\n- `presence` is a `t:presence/0`.\n\nIf your cache needs some form of setup or teardown for QLC queries (such as\nopening connections), see `c:wrap_qlc/1`.","ref":"Nostrum.Cache.PresenceCache.html#c:query_handle/0"},{"type":"callback","title":"Nostrum.Cache.PresenceCache.update/1","doc":"Update the given presence in the cache from upstream data.","ref":"Nostrum.Cache.PresenceCache.html#c:update/1"},{"type":"callback","title":"Return value - Nostrum.Cache.PresenceCache.update/1","doc":"Return the guild ID along with the old presence (if it was cached, otherwise\n`nil`) and the updated presence structure. If the `:activities` or `:status`\nfields of the presence did not change, return `:noop`.","ref":"Nostrum.Cache.PresenceCache.html#c:update/1-return-value"},{"type":"callback","title":"Nostrum.Cache.PresenceCache.wrap_qlc/1","doc":"A function that should wrap any `:qlc` operations.\n\nIf you implement a cache that is backed by a database and want to perform\ncleanup and teardown actions such as opening and closing connections,\nmanaging transactions and so on, you want to implement this function. nostrum\nwill then effectively call `wrap_qlc(fn -> :qlc.e(...) end)`.\n\nIf your cache does not need any wrapping, you can omit this.","ref":"Nostrum.Cache.PresenceCache.html#c:wrap_qlc/1"},{"type":"function","title":"Nostrum.Cache.PresenceCache.wrap_qlc/2","doc":"Call `c:wrap_qlc/1` on the given cache, if implemented.\n\nIf no cache is given, calls out to the default cache.","ref":"Nostrum.Cache.PresenceCache.html#wrap_qlc/2"},{"type":"opaque","title":"Nostrum.Cache.PresenceCache.presence/0","doc":"Represents a presence as received from Discord.\nSee [Presence Update](https://discord.com/developers/docs/topics/gateway#presence-update).","ref":"Nostrum.Cache.PresenceCache.html#t:presence/0"},{"type":"behaviour","title":"Nostrum.Cache.UserCache","doc":"Cache behaviour & dispatcher for users.\n\nYou can call the functions provided by this module independent of which cache\nis configured, and it will dispatch to the configured cache implementation.\n\nBy default, Elixir.Nostrum.Cache.UserCache.ETS will be used for caching users.\nYou can override this in the `:caches` option of the `:nostrum` application\nby setting the `:users` field to a different module implementing the behaviour\ndefined by this module.\n\nSee the documentation for the `Nostrum.Cache.GuildCache` module for more details.","ref":"Nostrum.Cache.UserCache.html"},{"type":"callback","title":"Nostrum.Cache.UserCache.bulk_create/1","doc":"Bulk add multiple users to the cache at once.\n\nReturns `:ok`.","ref":"Nostrum.Cache.UserCache.html#c:bulk_create/1"},{"type":"callback","title":"Nostrum.Cache.UserCache.child_spec/1","doc":"Retrieve the child specification for starting this mapping under a supervisor.","ref":"Nostrum.Cache.UserCache.html#c:child_spec/1"},{"type":"callback","title":"Nostrum.Cache.UserCache.create/1","doc":"Add a new user to the cache based on the Discord Gateway payload.\n\nReturns a `t:Nostrum.Struct.User.t/0` struct representing the created user.","ref":"Nostrum.Cache.UserCache.html#c:create/1"},{"type":"callback","title":"Nostrum.Cache.UserCache.delete/1","doc":"Delete a user by ID.\n\nReturns the deleted user if present in the cache, or\n`:noop` if the user was not cached.","ref":"Nostrum.Cache.UserCache.html#c:delete/1"},{"type":"function","title":"Nostrum.Cache.UserCache.get/2","doc":"Retrieves a user from the cache by id.\n\nThis function can be called with the cache to use as an optional argument. By\ndefault, the cache configured at compile time is used.","ref":"Nostrum.Cache.UserCache.html#get/2"},{"type":"function","title":"Example - Nostrum.Cache.UserCache.get/2","doc":"```elixir\ncase Nostrum.Cache.UserCache.get(1111222233334444) do\n {:ok, user} ->\n \"We found \" <> user.username\n {:error, _reason} ->\n \"No es bueno\"\nend\n```","ref":"Nostrum.Cache.UserCache.html#get/2-example"},{"type":"function","title":"Nostrum.Cache.UserCache.get!/1","doc":"Same as `get/1`, but raises `Nostrum.Error.CacheError` in case of a failure.","ref":"Nostrum.Cache.UserCache.html#get!/1"},{"type":"function","title":"Nostrum.Cache.UserCache.query_handle/0","doc":"Call `c:query_handle/0` on the configured cache.","ref":"Nostrum.Cache.UserCache.html#query_handle/0"},{"type":"callback","title":"Nostrum.Cache.UserCache.query_handle/0","doc":"Return a query handle for usage with `:qlc`.\n\nThis is used by nostrum to provide automatic joins between the member and the\nuser cache, and may be used for other functions in the future.\n\nThe Erlang manual on [Implementing a QLC\nTable](https://www.erlang.org/doc/man/qlc.html#implementing_a_qlc_table)\ncontains examples for implementation.\n\nThe query handle must return items in the form `{user_id, user}`, where\n`user_id` is a `t:Nostrum.Struct.User.id/0` and `user` is a\n`t:Nostrum.Struct.User.t/0`.","ref":"Nostrum.Cache.UserCache.html#c:query_handle/0"},{"type":"callback","title":"Nostrum.Cache.UserCache.update/1","doc":"Update a user in the cache based on payload sent via the Gateway.\n\nReturns `:noop` if the user has not been updated in the cache, or\n`{old_user, new_user}` is the user has been written to the cache.","ref":"Nostrum.Cache.UserCache.html#c:update/1"},{"type":"callback","title":"Nostrum.Cache.UserCache.wrap_qlc/1","doc":"A function that should wrap any `:qlc` operations.\n\nIf you implement a cache that is backed by a database and want to perform\ncleanup and teardown actions such as opening and closing connections,\nmanaging transactions and so on, you want to implement this function. Nostrum\nwill then effectively call `wrap_qlc(fn -> :qlc.e(...) end)`.\n\nIf your cache does not need any wrapping, you can omit this.","ref":"Nostrum.Cache.UserCache.html#c:wrap_qlc/1"},{"type":"function","title":"Nostrum.Cache.UserCache.wrap_qlc/2","doc":"Call `c:wrap_qlc/1` on the given cache, if implemented.\n\nIf no cache is given, calls out to the default cache.","ref":"Nostrum.Cache.UserCache.html#wrap_qlc/2"},{"type":"module","title":"Nostrum.Struct.ApplicationCommand","doc":"Typespecs for creating Application Commands\n\nOfficial reference:\nhttps://discord.com/developers/docs/interactions/application-commands","ref":"Nostrum.Struct.ApplicationCommand.html"},{"type":"type","title":"Nostrum.Struct.ApplicationCommand.application_command_edit_map/0","doc":"When editing an existing application command, only the following fields may be updated,\nmissing fields will remain unchanged.","ref":"Nostrum.Struct.ApplicationCommand.html#t:application_command_edit_map/0"},{"type":"type","title":"Nostrum.Struct.ApplicationCommand.application_command_map/0","doc":"This defines the map for creating an application command.\n\n`:default_permission` is for if the command is enabled for all users by default\n\nFor more information see [the official documentation](https://discord.com/developers/docs/interactions/application-commands)","ref":"Nostrum.Struct.ApplicationCommand.html#t:application_command_map/0"},{"type":"type","title":"Nostrum.Struct.ApplicationCommand.application_command_permission_type/0","doc":"- `1` for `ROLE`\n- `2` for `USER`\n- `3` for `CHANNEL`\n\nYou can use one of the `Nostrum.Constants.ApplicationCommandPermissionType` methods.","ref":"Nostrum.Struct.ApplicationCommand.html#t:application_command_permission_type/0"},{"type":"type","title":"Nostrum.Struct.ApplicationCommand.application_command_permissions/0","doc":"For editing the permissions for an application command\n - `:id` is the id of the role or user\n - `:type` is the type of the id, either `role` or `user`\n - `:allow` is whether the role or user should be allowed to use the command","ref":"Nostrum.Struct.ApplicationCommand.html#t:application_command_permissions/0"},{"type":"type","title":"Nostrum.Struct.ApplicationCommand.command_choice/0","doc":"If you specify choices for a command those become the only valid options for the user to select from.","ref":"Nostrum.Struct.ApplicationCommand.html#t:command_choice/0"},{"type":"type","title":"Nostrum.Struct.ApplicationCommand.command_description/0","doc":"The description of the command, subcommand, or command_option.\nFor `CHAT_INPUT` commands, it must be between 1 and 100 characters in length.\nFor `USER` and `MESSAGE` commands it must be an empty string.","ref":"Nostrum.Struct.ApplicationCommand.html#t:command_description/0"},{"type":"type","title":"Nostrum.Struct.ApplicationCommand.command_name/0","doc":"The name of the command, subcommand, or command_option.\nIt must be between 1 and 32 characters in length and match the following regex: `^[w-]{1,32}$`.\nOnly `USER` and `MESSAGE` commands may include uppercase letters and spaces.","ref":"Nostrum.Struct.ApplicationCommand.html#t:command_name/0"},{"type":"type","title":"Nostrum.Struct.ApplicationCommand.command_option/0","doc":"This defines a command's parameters. Only valid for `CHAT_INPUT` commands.","ref":"Nostrum.Struct.ApplicationCommand.html#t:command_option/0"},{"type":"type","title":"Notes - Nostrum.Struct.ApplicationCommand.command_option/0","doc":"- required parameters on a command must precede optional ones\n - for subcommands and subcommand groups, `:options` are its parameters\n - `:options` and `:choices` are mutually exclusive\n - `:autocomplete` must not be set to true if `:choices` is present\n - if `:type` is 7 then `:channel_types` can be a list of allowed [channel types](https://discord.com/developers/docs/resources/channel#channel-object-channel-types)","ref":"Nostrum.Struct.ApplicationCommand.html#t:command_option/0-notes"},{"type":"type","title":"Nostrum.Struct.ApplicationCommand.command_option_type/0","doc":"Indicates what type of argument the command expects.\n\n- `1` for `SUB_COMMAND`\n- `2` for `SUB_COMMAND_GROUP`\n- `3` for `​STRING`\n- `4` for `​INTEGER` *Note*: due to API limitations they can only be between -2^53 and 2^53\n- `5` for `BOOLEAN`\n- `6` for `USER`\n- `7` for `CHANNEL`\n- `8` for `ROLE`\n- `9` for `MENTIONABLE` *Note*: Includes users and roles\n- `10` for `NUMBER` *Note*: This has the same limitations as `​INTEGER`\n\nYou may use one of the `Nostrum.Constants.ApplicationCommandOptionType` methods.","ref":"Nostrum.Struct.ApplicationCommand.html#t:command_option_type/0"},{"type":"type","title":"Nostrum.Struct.ApplicationCommand.command_type/0","doc":"The type of application command you wish to create\n- `1` for `CHAT_INPUT`, regular slash commands (default)\n- `2` for `USER`, right-click menu commands on a specific user\n- `3` for `MESSAGE`, right-click menu commands on a specific message\n\nYou may use one of the `Nostrum.Constants.ApplicationCommandType` methods.","ref":"Nostrum.Struct.ApplicationCommand.html#t:command_type/0"},{"type":"module","title":"Nostrum.Struct.ApplicationCommandInteractionData","doc":"Struct for interaction data.","ref":"Nostrum.Struct.ApplicationCommandInteractionData.html"},{"type":"type","title":"Nostrum.Struct.ApplicationCommandInteractionData.component_type/0","doc":"For components, the ``type`` of the component","ref":"Nostrum.Struct.ApplicationCommandInteractionData.html#t:component_type/0"},{"type":"type","title":"Nostrum.Struct.ApplicationCommandInteractionData.components/0","doc":"For Modal Sumbit interactions, this will contain the values the user submitted.","ref":"Nostrum.Struct.ApplicationCommandInteractionData.html#t:components/0"},{"type":"type","title":"Nostrum.Struct.ApplicationCommandInteractionData.custom_id/0","doc":"For components, the ``custom_id`` of the component","ref":"Nostrum.Struct.ApplicationCommandInteractionData.html#t:custom_id/0"},{"type":"type","title":"Nostrum.Struct.ApplicationCommandInteractionData.id/0","doc":"ID of the invoked command","ref":"Nostrum.Struct.ApplicationCommandInteractionData.html#t:id/0"},{"type":"type","title":"Nostrum.Struct.ApplicationCommandInteractionData.interaction_type/0","doc":"The type of application command invoked.\nOfficial reference:\nhttps://discord.com/developers/docs/interactions/application-commands#application-command-object-application-command-types","ref":"Nostrum.Struct.ApplicationCommandInteractionData.html#t:interaction_type/0"},{"type":"type","title":"Nostrum.Struct.ApplicationCommandInteractionData.name/0","doc":"Name of the invoked command","ref":"Nostrum.Struct.ApplicationCommandInteractionData.html#t:name/0"},{"type":"type","title":"Nostrum.Struct.ApplicationCommandInteractionData.options/0","doc":"Parameters and values supplied by the user, if applicable","ref":"Nostrum.Struct.ApplicationCommandInteractionData.html#t:options/0"},{"type":"type","title":"Nostrum.Struct.ApplicationCommandInteractionData.resolved/0","doc":"Converted users & roles & channels","ref":"Nostrum.Struct.ApplicationCommandInteractionData.html#t:resolved/0"},{"type":"type","title":"Nostrum.Struct.ApplicationCommandInteractionData.select_values/0","doc":"For select menu components, this will be a list of the values the user selected.","ref":"Nostrum.Struct.ApplicationCommandInteractionData.html#t:select_values/0"},{"type":"type","title":"Nostrum.Struct.ApplicationCommandInteractionData.t/0","doc":"Command interaction data for slash commands.\n\nUsed as part of `t:Nostrum.Struct.Interaction.t/0`.\n\nOfficial reference:\nhttps://discord.com/developers/docs/interactions/receiving-and-responding#interaction-object","ref":"Nostrum.Struct.ApplicationCommandInteractionData.html#t:t/0"},{"type":"type","title":"Nostrum.Struct.ApplicationCommandInteractionData.target_id/0","doc":"ID of the user or message targeted by a context menu command","ref":"Nostrum.Struct.ApplicationCommandInteractionData.html#t:target_id/0"},{"type":"module","title":"Nostrum.Struct.ApplicationCommandInteractionDataOption","doc":"Struct for command invocation arguments.","ref":"Nostrum.Struct.ApplicationCommandInteractionDataOption.html"},{"type":"type","title":"Nostrum.Struct.ApplicationCommandInteractionDataOption.focused/0","doc":"Whether this parameter is focused for `autocomplete` interactions.","ref":"Nostrum.Struct.ApplicationCommandInteractionDataOption.html#t:focused/0"},{"type":"type","title":"Nostrum.Struct.ApplicationCommandInteractionDataOption.name/0","doc":"Parameter name","ref":"Nostrum.Struct.ApplicationCommandInteractionDataOption.html#t:name/0"},{"type":"type","title":"Nostrum.Struct.ApplicationCommandInteractionDataOption.options/0","doc":"Parameter options for subcommands.\n\nMutually exclusive with `value`.","ref":"Nostrum.Struct.ApplicationCommandInteractionDataOption.html#t:options/0"},{"type":"type","title":"Nostrum.Struct.ApplicationCommandInteractionDataOption.t/0","doc":"Command interaction data struct","ref":"Nostrum.Struct.ApplicationCommandInteractionDataOption.html#t:t/0"},{"type":"type","title":"Nostrum.Struct.ApplicationCommandInteractionDataOption.type/0","doc":"The application command option type.\n\nSee https://discord.com/developers/docs/interactions/application-commands#application-command-object-application-command-option-type\nfor more details.\n\nYou can use one of the `Nostrum.Constants.ApplicationCommandOptionType` methods.","ref":"Nostrum.Struct.ApplicationCommandInteractionDataOption.html#t:type/0"},{"type":"type","title":"Nostrum.Struct.ApplicationCommandInteractionDataOption.value/0","doc":"Parameter value.\n\nThe type of this depends on the `t:type/0`:\n\n- For `t:type/0` of `3`, this will be a `t:String.t/0`.\n- For `t:type/0` of `4`, this will be a `t:integer/0`.\n- For `t:type/0` of `5`, this will be a `t:boolean/0`.\n- For `t:type/0` of `6`, this will be a `t:Nostrum.Struct.User.id/0`. The\n corresponding guild member _and_ user can be looked up in\n `t:Nostrum.Struct.ApplicationCommandInteractionData.resolved/0`.\n- For `t:type/0` of `7`, this will be a `t:Nostrum.Struct.Channel.id/0`. The\n corresponding channel can be looked up in\n `t:Nostrum.Struct.ApplicationCommandInteractionData.resolved/0`.\n- For `t:type/0` of `8`, this will be a `t:Nostrum.Struct.Guild.Role.id/0`. The\n corresponding role can be looked up in\n `t:Nostrum.Struct.ApplicationCommandInteractionData.resolved/0`.\n- For `t:type/0` of `9`, this will be a `t:Nostrum.Struct.User.id/0` or `t:Nostrum.Struct.Guild.Role.id/0`. The\n corresponding user or role can be looked up in\n `t:Nostrum.Struct.ApplicationCommandInteractionData.resolved/0`.\n- For `t:type/0` of `10`, this will be a `t:number/0`.\n\nMutually exclusive with `options`. If `options` is not `nil`, this will be `nil`.","ref":"Nostrum.Struct.ApplicationCommandInteractionDataOption.html#t:value/0"},{"type":"module","title":"Nostrum.Struct.ApplicationCommandInteractionDataResolved","doc":"Converted interaction payload.","ref":"Nostrum.Struct.ApplicationCommandInteractionDataResolved.html"},{"type":"type","title":"Nostrum.Struct.ApplicationCommandInteractionDataResolved.attachments/0","doc":"Attachments sent along with the interaction.","ref":"Nostrum.Struct.ApplicationCommandInteractionDataResolved.html#t:attachments/0"},{"type":"type","title":"Nostrum.Struct.ApplicationCommandInteractionDataResolved.channels/0","doc":"IDs and corresponding partial channels.\n\nThe channels in this map *only* have the following keys set:\n\n- ``id``\n- ``name``\n- ``type``\n- ``permissions``","ref":"Nostrum.Struct.ApplicationCommandInteractionDataResolved.html#t:channels/0"},{"type":"type","title":"Nostrum.Struct.ApplicationCommandInteractionDataResolved.members/0","doc":"IDs and corresponding partial members.\n\nThese members are *missing* values on the following fields:\n\n- ``user``\n- ``deaf``\n- ``mute``\n\nThe corresponding user data can be looked up in ``users``. For members that\nare part of this map, data for the corresponding user will always be included.","ref":"Nostrum.Struct.ApplicationCommandInteractionDataResolved.html#t:members/0"},{"type":"type","title":"Nostrum.Struct.ApplicationCommandInteractionDataResolved.messages/0","doc":"The IDs and corresponding messages.","ref":"Nostrum.Struct.ApplicationCommandInteractionDataResolved.html#t:messages/0"},{"type":"type","title":"Nostrum.Struct.ApplicationCommandInteractionDataResolved.roles/0","doc":"IDs and corresponding roles","ref":"Nostrum.Struct.ApplicationCommandInteractionDataResolved.html#t:roles/0"},{"type":"type","title":"Nostrum.Struct.ApplicationCommandInteractionDataResolved.t/0","doc":"Resolved interaction data","ref":"Nostrum.Struct.ApplicationCommandInteractionDataResolved.html#t:t/0"},{"type":"type","title":"Nostrum.Struct.ApplicationCommandInteractionDataResolved.users/0","doc":"IDs and corresponding users","ref":"Nostrum.Struct.ApplicationCommandInteractionDataResolved.html#t:users/0"},{"type":"module","title":"Nostrum.Struct.AutoModerationRule","doc":"Struct representing an auto-moderation rule.","ref":"Nostrum.Struct.AutoModerationRule.html"},{"type":"type","title":"Nostrum.Struct.AutoModerationRule.actions/0","doc":"A list of Actions which will be performed when the rule is triggered.","ref":"Nostrum.Struct.AutoModerationRule.html#t:actions/0"},{"type":"type","title":"Nostrum.Struct.AutoModerationRule.creator_id/0","doc":"The id of the user who created the rule","ref":"Nostrum.Struct.AutoModerationRule.html#t:creator_id/0"},{"type":"type","title":"Nostrum.Struct.AutoModerationRule.enabled/0","doc":"If the rule is enabled or not.","ref":"Nostrum.Struct.AutoModerationRule.html#t:enabled/0"},{"type":"type","title":"Nostrum.Struct.AutoModerationRule.event_type/0","doc":"Indicates in what event context a rule should be checked\n\n| value | type | description\n| ---- | ---- | -----------\n|`1` | `MESSAGE_SEND` | when a member sends or edits a message in a guild","ref":"Nostrum.Struct.AutoModerationRule.html#t:event_type/0"},{"type":"type","title":"Nostrum.Struct.AutoModerationRule.exempt_channels/0","doc":"A list of channels that are exempt from the rule","ref":"Nostrum.Struct.AutoModerationRule.html#t:exempt_channels/0"},{"type":"type","title":"Nostrum.Struct.AutoModerationRule.exempt_roles/0","doc":"A list of roles that are exempt from the rule.","ref":"Nostrum.Struct.AutoModerationRule.html#t:exempt_roles/0"},{"type":"type","title":"Nostrum.Struct.AutoModerationRule.guild_id/0","doc":"The id of the guild the rule belongs to","ref":"Nostrum.Struct.AutoModerationRule.html#t:guild_id/0"},{"type":"type","title":"Nostrum.Struct.AutoModerationRule.id/0","doc":"The id of the auto-moderation rule","ref":"Nostrum.Struct.AutoModerationRule.html#t:id/0"},{"type":"type","title":"Nostrum.Struct.AutoModerationRule.name/0","doc":"The name of the rule","ref":"Nostrum.Struct.AutoModerationRule.html#t:name/0"},{"type":"type","title":"Nostrum.Struct.AutoModerationRule.preset_values/0","doc":"Values which represent the different presets defined by Discord\n\n| value | type | description\n| ---- | ---- | -----------\n|`1` | `PROFANITY` | Words which may be considered profane\n| `2` | `HARMFUL_LINK` | Words that refer to sexually explicit behavior or activity\n| `3` | `SLURS` | Personal insults or words that may be considered hate speech","ref":"Nostrum.Struct.AutoModerationRule.html#t:preset_values/0"},{"type":"type","title":"Nostrum.Struct.AutoModerationRule.t/0","doc":"","ref":"Nostrum.Struct.AutoModerationRule.html#t:t/0"},{"type":"type","title":"Nostrum.Struct.AutoModerationRule.trigger_metadata/0","doc":"Additional data used to determine if the rule should triggered.\n\nThe `t:trigger_type/0` field will determine which of the following fields are present.\n\n| key | associated `trigger_type`\n| ---- | -----------\n| `keywords` | `​KEYWORD`\n| `preset` | `KEYWORD_PRESET`","ref":"Nostrum.Struct.AutoModerationRule.html#t:trigger_metadata/0"},{"type":"type","title":"Nostrum.Struct.AutoModerationRule.trigger_type/0","doc":"Characters the type of content which triggered the rule\n\n| value | type | max per guild | description\n| ---- | ---- | ----- | -----------\n|`1` | `​KEYWORD` | 3 | check if content contains words from a user defined list of keywords\n| `2` | `HARMFUL_LINK` | 1 | check if the content contains any harmful links\n| `3` | `SPAM` | 1 | check if the content represents generic spam\n| `4` | `KEYWORD_PRESET `| 1 | check if the content contains a list of discord defined keywords\n\nnote: `HARMFUL_LINK` and `SPAM` are not yet offically released at the time of this writing.","ref":"Nostrum.Struct.AutoModerationRule.html#t:trigger_type/0"},{"type":"module","title":"Nostrum.Struct.AutoModerationRule.Action","doc":"Defines an action to be taken when a rule is triggered.","ref":"Nostrum.Struct.AutoModerationRule.Action.html"},{"type":"type","title":"Nostrum.Struct.AutoModerationRule.Action.action_type/0","doc":"The type of action to be taken.\n\n| value | action | description\n| ---- | ---- | -----------\n|`1` | `BLOCK_MESSAGE` | Blocks the message from being created\n| `2` | `SEND_ALERT_MESSAGE` | Logs the content of the message in the specified channel\n| `3` | `TIMEOUT` | timeout a user for a specified duration","ref":"Nostrum.Struct.AutoModerationRule.Action.html#t:action_type/0"},{"type":"type","title":"Nostrum.Struct.AutoModerationRule.Action.metadata/0","doc":"","ref":"Nostrum.Struct.AutoModerationRule.Action.html#t:metadata/0"},{"type":"type","title":"Nostrum.Struct.AutoModerationRule.Action.t/0","doc":"","ref":"Nostrum.Struct.AutoModerationRule.Action.html#t:t/0"},{"type":"module","title":"Nostrum.Struct.AutoModerationRule.ActionMetadata","doc":"Struct representing any additional data used when an action is taken.","ref":"Nostrum.Struct.AutoModerationRule.ActionMetadata.html"},{"type":"type","title":"Nostrum.Struct.AutoModerationRule.ActionMetadata.send_alert_message_metadata/0","doc":"The id of the channel to send an alert message to.","ref":"Nostrum.Struct.AutoModerationRule.ActionMetadata.html#t:send_alert_message_metadata/0"},{"type":"type","title":"Nostrum.Struct.AutoModerationRule.ActionMetadata.t/0","doc":"The type of metadata present depends on the action type.\n\n| value | type\n| ---- | ----\n| `channel_id` | `SEND_ALERT_MESSAGE`\n| `duration_seconds` | `TIMEOUT`","ref":"Nostrum.Struct.AutoModerationRule.ActionMetadata.html#t:t/0"},{"type":"type","title":"Nostrum.Struct.AutoModerationRule.ActionMetadata.timeout_metadata/0","doc":"The number of seconds to timeout the user for,\nhas a maximum of 2419200 seconds (4 weeks).","ref":"Nostrum.Struct.AutoModerationRule.ActionMetadata.html#t:timeout_metadata/0"},{"type":"module","title":"Nostrum.Struct.AutoModerationRule.TriggerMetadata","doc":"Struct representing the metadata of a trigger.","ref":"Nostrum.Struct.AutoModerationRule.TriggerMetadata.html"},{"type":"type","title":"Nostrum.Struct.AutoModerationRule.TriggerMetadata.keyword_metadata/0","doc":"Contains the list of keywords to that will trigger the rule.","ref":"Nostrum.Struct.AutoModerationRule.TriggerMetadata.html#t:keyword_metadata/0"},{"type":"type","title":"Nostrum.Struct.AutoModerationRule.TriggerMetadata.preset_value_metadata/0","doc":"A list of Values which represent the different presets defined by Discord\n\n| value | type | description\n| ---- | ---- | -----------\n| `1` | `PROFANITY` | Words which may be considered profane\n| `2` | `HARMFUL_LINK` | Words that refer to sexually explicit behavior or activity\n| `3` | `SLURS` | Personal insults or words that may be considered hate speech","ref":"Nostrum.Struct.AutoModerationRule.TriggerMetadata.html#t:preset_value_metadata/0"},{"type":"type","title":"Nostrum.Struct.AutoModerationRule.TriggerMetadata.t/0","doc":"Additional data used to determine if the rule should triggered.\n\nThe `t:Nostrum.Struct.AutoModerationRule.trigger_type/0` of the parent struct determine which of the following fields are not `nil`.\n\n| key | associated `trigger_type`\n| ---- | -----------\n| `keywords` | `​KEYWORD`\n| `preset` | `KEYWORD_PRESET`","ref":"Nostrum.Struct.AutoModerationRule.TriggerMetadata.html#t:t/0"},{"type":"module","title":"Nostrum.Struct.Channel","doc":"Struct and helper functions for working with channels.","ref":"Nostrum.Struct.Channel.html"},{"type":"module","title":"Channel Struct - Nostrum.Struct.Channel","doc":"The channel struct is used by Nostrum to represent a _Discord Channel Object_. More information can be found on the [Discord API Channel Documentation](https://discord.com/developers/docs/resources/channel#channels-resource).\n\nThe struct can have one of several forms depending on the type of channel. You can read more about the individual channel types [below](#module-channel-types).\n\nA typical channel would appear as:\n\n```elixir\n%Nostrum.Struct.Channel{\n guild_id: 766435015768539156,\n id: 827333533688397865,\n name: \"announcements\",\n nsfw: false,\n permission_overwrites: [],\n position: 1,\n type: 5,\n}\n```\n\nThe channel struct implements `String.Chars` protocol through the `mention/1` function. This example uses our channel from the previous code block.\n\n```elixir\nchannel |> to_string()\n\"<#766435015768539156>\"\n```","ref":"Nostrum.Struct.Channel.html#module-channel-struct"},{"type":"module","title":"Channel Caching - Nostrum.Struct.Channel","doc":"Channels are cached within the guild object they are a member of. To fetch a cached channel you should use the `Nostrum.Cache.ChannelGuildMapping` cache to map a cache to a guild ID.\n\nOnce you have a guild ID, you can use the `Nostrum.Cache.GuildCache` to fetch the guild and all channels, then use the `t:Nostrum.Struct.Guild.channels/0` field to find the channel.\n\n> #### Note on DM Channels {: .tip}\n>\n> The `Nostrum.Cache.ChannelGuildMapping` by design only caches a mapping of channels to their respective guilds, and the stored channel object sits within the `Nostrum.Cache.GuildCache`.\n>\n> Due to how Direct Message channels work (no `CHANNEL_CREATE` events, not sent in any gateway events, etc.), we make no attempt to store direct message channels within any of the\n> built-in Nostrum caching adapters.\n>\n> If you wish to implement this functionality yourself, you will have to fetch the channel details from the API by looking at the `channel_id` field of received message objects,\n> you can then store these details in your own choice of caching system (ETS, Mnesia, etc.).","ref":"Nostrum.Struct.Channel.html#module-channel-caching"},{"type":"module","title":"Example - Nostrum.Struct.Channel","doc":"```elixir\n> guild_id = Nostrum.Cache.ChannelGuildMapping.get(1229955694258684005)\n1226944827137069107\n> {:ok, guild} = Nostrum.Cache.GuildCache.get(guild_id)\n{:ok,\n %Nostrum.Struct.Guild{\n id: 1226944827137069107,\n name: \"Craig Cat Zone\",\n ...\n}}\n> guild.channels[channel_id].name\n\"cat-general\"\n```","ref":"Nostrum.Struct.Channel.html#module-example"},{"type":"module","title":"Helper Functions - Nostrum.Struct.Channel","doc":"This module contains two functions for assisting with channel structs. `mention/1` to convert the channel into a mention as a string, and `link/1` to convert the channel into a hyperlink as a string. Further details and examples are detailed in the [Functions section of this module.](#functions)","ref":"Nostrum.Struct.Channel.html#module-helper-functions"},{"type":"module","title":"Api Functions - Nostrum.Struct.Channel","doc":"The Nostrum Api contains numerous functions related to channels. Notable functions relating to channels are shown below.\n\n- `Nostrum.Api.create_guild_channel/2`\n- `Nostrum.Api.get_channel/1`\n- `Nostrum.Api.modify_channel/3`\n- `Nostrum.Api.delete_channel/2`\n- `Nostrum.Api.add_pinned_channel_message/2`\n- `Nostrum.Api.create_channel_invite/3`\n- `Nostrum.Api.get_guild_channels/1`\n- `Nostrum.Api.modify_guild_channel_positions/2`\n\n> Note: This is not an exhaustive list, for full details please see the `Nostrum.Api` module documentation.","ref":"Nostrum.Struct.Channel.html#module-api-functions"},{"type":"module","title":"Channel Types - Nostrum.Struct.Channel","doc":"Channels take the shape of various types depending on their use and not all fields are always used. The currently implemented channel types are detailed below. The type of channel is determined by the `:type` field.\n\nThis diagram represents the regular channel types `0`, `2`, `5` and `13`.\n\n ![Discord Channels](./assets/channel_types.png)\n\n The currently implemented channel types are:\n\n| |Channel Type | |\n|---- |-------------------- |--------------------------------------------------------------- |\n|`0` |[`GUILD_TEXT`](`t:guild_text_channel/0`) |_A text channel within a server_ |\n|`1` |[`DM`](`t:dm_channel/0`) |_A direct message between users_ |\n|`2` |[`GUILD_VOICE`](`t:guild_voice_channel/0`) |_A voice channel within a server_ |\n|`3` |[`GROUP_DM`](`t:group_dm_channel/0`) |_A direct message between multiple users_ |\n|`4` |[`GUILD_CATEGORY`](`t:guild_category_channel/0`) |_A category that contains up to 50 channels_ |\n|`5` |[`GUILD_NEWS`](`t:guild_news_channel/0`) |_A channel that users can follow and crosspost_ |\n|`6` |[`GUILD_STORE`](`t:guild_store_channel/0`) |_A channel to sell games on Discord_ |\n|`10` |[`GUILD_NEWS_THREAD`](`t:guild_news_thread_channel/0`) |_A temporary sub-channel within a news channel_ |\n|`11` |[`GUILD_PUBLIC_THREAD`](`t:guild_public_thread_channel/0`) |_A temporary sub-channel within a text channel_ |\n|`12` |[`GUILD_PRIVATE_THREAD`](`t:guild_private_thread_channel/0`) |_A temporary private sub-channel within a text channel_ |\n|`13` |[`GUILD_STAGE_VOICE`](`t:guild_stage_voice_channel/0`) |_A voice channel for hosting events with an audience_ |\n|`15` |[`GUILD_FORUM`](`t:guild_forum_channel/0`) |_A channel that can only contain threads |\n\nYou can use one of the `Nostrum.Constants.ChannelType` methods.\n\nMore information about _Discord Channel Types_ can be found on the [Discord API Channel Type Documentation](https://discord.com/developers/docs/resources/channel#channel-object-channel-types).","ref":"Nostrum.Struct.Channel.html#module-channel-types"},{"type":"function","title":"Nostrum.Struct.Channel.mention/1","doc":"Convert a channel into a mention.\n\nHandles the conversion of a `Nostrum.Struct.Channel` into the required format to _mention_ the channel within a message. Mentioning the channel will provide a clickable link to take the user to the channel.","ref":"Nostrum.Struct.Channel.html#mention/1"},{"type":"function","title":"Parameters - Nostrum.Struct.Channel.mention/1","doc":"- channel: `t:Nostrum.Struct.Channel.t/0`","ref":"Nostrum.Struct.Channel.html#mention/1-parameters"},{"type":"function","title":"Examples - Nostrum.Struct.Channel.mention/1","doc":"```elixir\nchannel\n|> Nostrum.Struct.Channel.mention()\n\"<#381889573426429952>\"\n\n```","ref":"Nostrum.Struct.Channel.html#mention/1-examples"},{"type":"type","title":"Nostrum.Struct.Channel.application_id/0","doc":"The id of the application that created a group direct message or thread.\n\nThis applies to bot created channels.","ref":"Nostrum.Struct.Channel.html#t:application_id/0"},{"type":"type","title":"Nostrum.Struct.Channel.applied_tags/0","doc":"","ref":"Nostrum.Struct.Channel.html#t:applied_tags/0"},{"type":"type","title":"Nostrum.Struct.Channel.archive_timestamp/0","doc":"When the thread was archived.","ref":"Nostrum.Struct.Channel.html#t:archive_timestamp/0"},{"type":"type","title":"Nostrum.Struct.Channel.archived/0","doc":"The threads archived status.","ref":"Nostrum.Struct.Channel.html#t:archived/0"},{"type":"type","title":"Nostrum.Struct.Channel.auto_archive_duration/0","doc":"Archive duration for the thread in minutes.\n\n- 60, 1 hour\n- 1440, 24 hours\n- 4320, 3 days\n- 10080, 7 days","ref":"Nostrum.Struct.Channel.html#t:auto_archive_duration/0"},{"type":"type","title":"Nostrum.Struct.Channel.bitrate/0","doc":"The bitate of the voice channel.","ref":"Nostrum.Struct.Channel.html#t:bitrate/0"},{"type":"type","title":"Nostrum.Struct.Channel.channel_mention/0","doc":"A partial channel object representing a channel mention.\n\nMore information about the _Discord Channel Mention Object_ can be found at the [Discord API Channel Mention Object\nDocumentation](https://discord.com/developers/docs/resources/channel#channel-mention-object).","ref":"Nostrum.Struct.Channel.html#t:channel_mention/0"},{"type":"type","title":"Nostrum.Struct.Channel.default_auto_archive_duration/0","doc":"Default duration for newly created threads in minutes.\n\n- 60, 1 hour\n- 1440, 24 hours\n- 4320, 3 days\n- 10080, 7 days","ref":"Nostrum.Struct.Channel.html#t:default_auto_archive_duration/0"},{"type":"type","title":"Nostrum.Struct.Channel.default_reaction_emoji/0","doc":"An object that specifies the emoji to use as the default way to react to a forum post.\n\n`:emoji_id` and `:emoji_name` are mutually exclusive","ref":"Nostrum.Struct.Channel.html#t:default_reaction_emoji/0"},{"type":"type","title":"Nostrum.Struct.Channel.default_thread_rate_limit_per_user/0","doc":"The `:rate_limit_per_user` which will be applied to threads created in the channel, in seconds.","ref":"Nostrum.Struct.Channel.html#t:default_thread_rate_limit_per_user/0"},{"type":"type","title":"Nostrum.Struct.Channel.dm_channel/0","doc":"Type 1 partial channel object representing a direct message.","ref":"Nostrum.Struct.Channel.html#t:dm_channel/0"},{"type":"type","title":"Nostrum.Struct.Channel.flags/0","doc":"User thread settings, currently only used for notifications.","ref":"Nostrum.Struct.Channel.html#t:flags/0"},{"type":"type","title":"Nostrum.Struct.Channel.forum_tag/0","doc":"A map representing a tag for use in forum channels.\n\n`:moderated` indicates whether the tag can only be added or removed by moderators.\n`:emoji_id` and `:emoji_name` are mutually exclusive and indicate the emoji used to represent the tag.","ref":"Nostrum.Struct.Channel.html#t:forum_tag/0"},{"type":"type","title":"Nostrum.Struct.Channel.group_dm_channel/0","doc":"Type 3 partial channel object representing a group direct message.","ref":"Nostrum.Struct.Channel.html#t:group_dm_channel/0"},{"type":"type","title":"Nostrum.Struct.Channel.guild_category_channel/0","doc":"Type 4 partial channel object representing a channel category.\n\n> Note: Other channels `parent_id` field refers to this type of object.","ref":"Nostrum.Struct.Channel.html#t:guild_category_channel/0"},{"type":"type","title":"Nostrum.Struct.Channel.guild_channel/0","doc":"Guild channel types","ref":"Nostrum.Struct.Channel.html#t:guild_channel/0"},{"type":"type","title":"Nostrum.Struct.Channel.guild_forum_channel/0","doc":"Type 15 a guild forum channel.","ref":"Nostrum.Struct.Channel.html#t:guild_forum_channel/0"},{"type":"type","title":"Nostrum.Struct.Channel.guild_id/0","doc":"The id of the guild the channel is located in.","ref":"Nostrum.Struct.Channel.html#t:guild_id/0"},{"type":"type","title":"Nostrum.Struct.Channel.guild_news_channel/0","doc":"Type 5 partial channel object representing a news channel.","ref":"Nostrum.Struct.Channel.html#t:guild_news_channel/0"},{"type":"type","title":"Nostrum.Struct.Channel.guild_news_thread_channel/0","doc":"Type 10 partial channel object representing a news thread.","ref":"Nostrum.Struct.Channel.html#t:guild_news_thread_channel/0"},{"type":"type","title":"Nostrum.Struct.Channel.guild_private_thread_channel/0","doc":"Type 12 partial channel object representing a private thread.","ref":"Nostrum.Struct.Channel.html#t:guild_private_thread_channel/0"},{"type":"type","title":"Nostrum.Struct.Channel.guild_public_thread_channel/0","doc":"Type 11 partial channel object representing a standard thread.","ref":"Nostrum.Struct.Channel.html#t:guild_public_thread_channel/0"},{"type":"type","title":"Nostrum.Struct.Channel.guild_stage_voice_channel/0","doc":"Type 13 channel object representing a stage channel.","ref":"Nostrum.Struct.Channel.html#t:guild_stage_voice_channel/0"},{"type":"type","title":"Nostrum.Struct.Channel.guild_store_channel/0","doc":"Type 6 partial channel object representing a store channel.","ref":"Nostrum.Struct.Channel.html#t:guild_store_channel/0"},{"type":"type","title":"Nostrum.Struct.Channel.guild_text_channel/0","doc":"Type 0 partial channel object representing a text channel within a guild.","ref":"Nostrum.Struct.Channel.html#t:guild_text_channel/0"},{"type":"type","title":"Nostrum.Struct.Channel.guild_voice_channel/0","doc":"Type 2 partial channel object representing an audio channel within a guild.","ref":"Nostrum.Struct.Channel.html#t:guild_voice_channel/0"},{"type":"type","title":"Nostrum.Struct.Channel.icon/0","doc":"The hash of the channels icon.","ref":"Nostrum.Struct.Channel.html#t:icon/0"},{"type":"type","title":"Nostrum.Struct.Channel.id/0","doc":"The id of the channel object.","ref":"Nostrum.Struct.Channel.html#t:id/0"},{"type":"type","title":"Nostrum.Struct.Channel.join_timestamp/0","doc":"When the user joined the thread.","ref":"Nostrum.Struct.Channel.html#t:join_timestamp/0"},{"type":"type","title":"Nostrum.Struct.Channel.last_message_id/0","doc":"The id of the last message sent in the channel.\n\nFor `GUILD_FORUM` channels, this is the last thread created in the channel.","ref":"Nostrum.Struct.Channel.html#t:last_message_id/0"},{"type":"type","title":"Nostrum.Struct.Channel.last_pin_timestamp/0","doc":"Timestamp for the last pinned message.","ref":"Nostrum.Struct.Channel.html#t:last_pin_timestamp/0"},{"type":"type","title":"Nostrum.Struct.Channel.locked/0","doc":"The threads locked status.","ref":"Nostrum.Struct.Channel.html#t:locked/0"},{"type":"type","title":"Nostrum.Struct.Channel.member/0","doc":"Present when the bot joins a thread.\n\nNote: This is omitted on threads that the bot can immediately access on `:GUILD_CREATE` events received.","ref":"Nostrum.Struct.Channel.html#t:member/0"},{"type":"type","title":"Nostrum.Struct.Channel.member_count/0","doc":"Approximate count of members in a thread, capped at 50.","ref":"Nostrum.Struct.Channel.html#t:member_count/0"},{"type":"type","title":"Nostrum.Struct.Channel.message_count/0","doc":"Approximate count of messages in a thread, capped at 50.","ref":"Nostrum.Struct.Channel.html#t:message_count/0"},{"type":"type","title":"Nostrum.Struct.Channel.name/0","doc":"The name of the channel.","ref":"Nostrum.Struct.Channel.html#t:name/0"},{"type":"type","title":"Nostrum.Struct.Channel.newly_created/0","doc":"Included only in the `THREAD_CREATE` event.","ref":"Nostrum.Struct.Channel.html#t:newly_created/0"},{"type":"type","title":"Nostrum.Struct.Channel.nsfw/0","doc":"Whether the NSFW setting is enabled for this channel.","ref":"Nostrum.Struct.Channel.html#t:nsfw/0"},{"type":"type","title":"Nostrum.Struct.Channel.owner_id/0","doc":"The id of the user of a group direct message or thread.\n\nThis applies to user created channels.","ref":"Nostrum.Struct.Channel.html#t:owner_id/0"},{"type":"type","title":"Nostrum.Struct.Channel.parent_id/0","doc":"The id of the parent channel that this channel is located under.\n\nFor threads, that is the channel that contains the thread. For regular channels, it is the category that the channel is located under.","ref":"Nostrum.Struct.Channel.html#t:parent_id/0"},{"type":"type","title":"Nostrum.Struct.Channel.permission_overwrites/0","doc":"A list of permission overwrites applied to the channel.","ref":"Nostrum.Struct.Channel.html#t:permission_overwrites/0"},{"type":"type","title":"Nostrum.Struct.Channel.permissions/0","doc":"Computed permissions of the invoking user.\n\nPermissions for the invoking user in the channel, including overwrites, only included when part of the resolved data received on a slash command interaction","ref":"Nostrum.Struct.Channel.html#t:permissions/0"},{"type":"type","title":"Nostrum.Struct.Channel.position/0","doc":"The position of the channel in the sidebar of the guild.","ref":"Nostrum.Struct.Channel.html#t:position/0"},{"type":"type","title":"Nostrum.Struct.Channel.rate_limit_per_user/0","doc":"The users rate limit.\n\nAmount of seconds a user has to wait before sending another message (0-21600); bots, as well as users with the permission manage_messages or manage_channel, are unaffected","ref":"Nostrum.Struct.Channel.html#t:rate_limit_per_user/0"},{"type":"type","title":"Nostrum.Struct.Channel.recipients/0","doc":"A list of users in a group DM.","ref":"Nostrum.Struct.Channel.html#t:recipients/0"},{"type":"type","title":"Nostrum.Struct.Channel.rtc_region/0","doc":"Region id for the channel.\n\nMore information about _region ids_ can be found on the [Discord API Voice Region Object Documentation](https://discord.com/developers/docs/resources/voice#voice-region-object).","ref":"Nostrum.Struct.Channel.html#t:rtc_region/0"},{"type":"type","title":"Nostrum.Struct.Channel.t/0","doc":"All valid channel types.","ref":"Nostrum.Struct.Channel.html#t:t/0"},{"type":"type","title":"Nostrum.Struct.Channel.text_channel/0","doc":"All valid text channels.","ref":"Nostrum.Struct.Channel.html#t:text_channel/0"},{"type":"type","title":"Nostrum.Struct.Channel.thread_metadata/0","doc":"Thread-specific fields not needed by other channels.","ref":"Nostrum.Struct.Channel.html#t:thread_metadata/0"},{"type":"type","title":"Nostrum.Struct.Channel.topic/0","doc":"The topic of the channel.","ref":"Nostrum.Struct.Channel.html#t:topic/0"},{"type":"type","title":"Nostrum.Struct.Channel.type/0","doc":"The type of channel.\n\nMore information about _Discord Channel Types_ can be found under the [`types`](#module-channel-types) on the [Discord API Channel Type Documentation](https://discord.com/developers/docs/resources/channel#channel-object-channel-types).","ref":"Nostrum.Struct.Channel.html#t:type/0"},{"type":"type","title":"Nostrum.Struct.Channel.user_id/0","doc":"User id of the threads creator.","ref":"Nostrum.Struct.Channel.html#t:user_id/0"},{"type":"type","title":"Nostrum.Struct.Channel.user_limit/0","doc":"The user limit of a voice channel.","ref":"Nostrum.Struct.Channel.html#t:user_limit/0"},{"type":"type","title":"Nostrum.Struct.Channel.video_quality_mode/0","doc":"The video quality mode of the channel.\n\nMore information about _video quality modes_ can be found on the [Discord API Video Quality Mode Documentation](https://discord.com/developers/docs/resources/channel#channel-object-video-quality-modes).","ref":"Nostrum.Struct.Channel.html#t:video_quality_mode/0"},{"type":"type","title":"Nostrum.Struct.Channel.voice_channel/0","doc":"A `Nostrum.Struct.Channel` that represents a voice channel","ref":"Nostrum.Struct.Channel.html#t:voice_channel/0"},{"type":"behaviour","title":"Nostrum.Struct.Component","doc":"Components are a framework for adding interactive elements to the messages your app or bot sends. They're accessible, customizable, and easy to use. There are several different types of components; this documentation will outline the basics of this new framework and each example.\n\n> Components have been broken out into individual modules for easy distinction between them and to separate helper functions and individual type checking between component types - especially as more components are added by Discord.\n\nEach of the components are provided all of the valid types through this module to avoid repetition and allow new components to be added quicker and easier.","ref":"Nostrum.Struct.Component.html"},{"type":"behaviour","title":"Action Row - Nostrum.Struct.Component","doc":"An Action Row is a non-interactive container component for other types of components. It has a `type: 1` and a sub-array of `components` of other types.\n\n- You can have up to 5 Action Rows per message\n- An Action Row cannot contain another Action Row\n- An Action Row containing buttons cannot also contain a select menu","ref":"Nostrum.Struct.Component.html#module-action-row"},{"type":"behaviour","title":"Buttons - Nostrum.Struct.Component","doc":"Buttons are interactive components that render on messages. They have a `type: 2`, They can be clicked by users. Buttons in Nostrum are further separated into two types, detailed below. Only the [Interaction Button](#module-interaction-buttons-non-link-buttons) will fire a `Nostrum.Struct.Interaction` when pressed.\n\n![Discord Buttons](./assets/buttons.png)\n\n- Buttons must exist inside an Action Row\n- An Action Row can contain up to 5 buttons\n- An Action Row containing buttons cannot also contain a select menu\n\nFor more information check out the [Discord API Button Styles](https://discord.com/developers/docs/interactions/message-components#button-object-button-styles) for more information.","ref":"Nostrum.Struct.Component.html#module-buttons"},{"type":"behaviour","title":"Link Buttons - Nostrum.Struct.Component","doc":"- Link buttons **do not** send an `interaction` to your app when clicked\n- Link buttons **must** have a `url`, and **cannot** have a `custom_id`\n- Link buttons will **always** use `style: 5`\n\n#### Link `style: 5`\n![Link Button](./assets/secondary_button.png)","ref":"Nostrum.Struct.Component.html#module-link-buttons"},{"type":"behaviour","title":"Interaction Buttons ( Non-link Buttons ) - Nostrum.Struct.Component","doc":"> Discord calls these buttons \"Non-link Buttons\" due to the fact that they do not contain a url. However it would be more accurate to call them an \"Interaction Button\" as they **do** fire an interaction when clicked which is far more useful for your applications interactivity. As such they are referred to as \"Interaction Button\" throughout the rest of this module.\n\n- Interaction buttons **must** have a `custom_id`, and **cannot** have a `url`\n- Can have one of the below `:style` applied.\n\n#### Primary `style: 1`\n![Primary](./assets/primary_button.png)\n\n#### Secondary `style: 2`\n![Secondary](./assets/secondary_button.png)\n\n#### Success `style: 3`\n![Success](./assets/success_button.png)\n\n#### Danger `style: 4`\n![Danger (1)](./assets/danger_button.png)","ref":"Nostrum.Struct.Component.html#module-interaction-buttons-non-link-buttons"},{"type":"behaviour","title":"🐼 ~~Emoji Buttons~~ - Nostrum.Struct.Component","doc":"> Note: The discord documentation and marketing material in relation to buttons indicates that there are three kinds of buttons: 🐼 **Emoji Buttons**, **Link Buttons** & **Non-Link Buttons**. When in fact all buttons can contain an emoji. Because of this reason 🐼 **Emoji Buttons** are not included as a separate type. Emojis will be instead handled by the two included ( superior ) button types.\n\n![emoji buttons in action](./assets/emoji_button.png)\n\n> The field requirements are already becoming convoluted especially considering everything so far is all still a \"Component\". Using the sub types and helper functions will ensure all of the rules are followed when creating components.","ref":"Nostrum.Struct.Component.html#module-emoji-buttons"},{"type":"behaviour","title":"Select Menu - Nostrum.Struct.Component","doc":"Select menus are another interactive component that renders on messages. On desktop, clicking on a select menu opens a dropdown-style UI; on mobile, tapping a select menu opens up a half-sheet with the options.\n\n![Discord Selects](./assets/select_menu.png)\n\nSelect menus support single-select and multi-select behavior, meaning you can prompt a user to choose just one item from a list, or multiple. When a user finishes making their choice by clicking out of the dropdown or closing the half-sheet, your app will receive an interaction.\n- Select menus **must** be sent inside an Action Row\n- An Action Row can contain **only one** select menu\n- An Action Row containing a select menu **cannot** also contain buttons","ref":"Nostrum.Struct.Component.html#module-select-menu"},{"type":"behaviour","title":"Text Input - Nostrum.Struct.Component","doc":"Text inputs are an interactive component that render on modals. They can be used to collect short-form or long-form text.\n- Text inputs **must** be sent inside an Action Row\n- An Action Row can contain **only one** text input\n- An Action Row containing a text input **cannot** also contain buttons or a select menu\n\nCan be used to collect short-form or long-form text.\n- For short-form text, use `style: 1`\n- For long-form text, use `style: 2`\n\nText inputs are only allowed to be sent as part of an Interaction response that opens a MODAL.","ref":"Nostrum.Struct.Component.html#module-text-input"},{"type":"callback","title":"Nostrum.Struct.Component.new/1","doc":"Create a component from the given keyword list of options\n\n> Note: While using this function directly, you are not guaranteed to produce a valid component and it is the responsibility of the user to ensure they are passing a valid combination of component attributes. eg. if you pass a button component both a `custom_id`, and a `url`, the component is invalid as only one of these fields is allowed.","ref":"Nostrum.Struct.Component.html#c:new/1"},{"type":"function","title":"Nostrum.Struct.Component.to_struct/1","doc":"","ref":"Nostrum.Struct.Component.html#to_struct/1"},{"type":"callback","title":"Nostrum.Struct.Component.update/2","doc":"Updates a component with the parameters provided.\n\n> Note: While using this function directly, you are not guaranteed to produce a valid component and it is the responsibility of the user to ensure they are passing a valid combination of component attributes. eg. if you pass a button component both a `custom_id`, and a `url`, the component is invalid as only one of these fields is allowed.","ref":"Nostrum.Struct.Component.html#c:update/2"},{"type":"type","title":"Nostrum.Struct.Component.components/0","doc":"A list of components to place inside an action row.\n\nDue to constraints of action rows, this can either be a list of up to five buttons, a single select menu, or a single text input.\n\nValid for [Action Row](#module-action-row).","ref":"Nostrum.Struct.Component.html#t:components/0"},{"type":"type","title":"Nostrum.Struct.Component.custom_id/0","doc":"Used to identify the component when the interaction is sent to you from the user.\n\nValid for [Interaction Buttons](#module-interaction-button), [Select Menus](#module-select-menu), and [Text Input](#module-text-input).","ref":"Nostrum.Struct.Component.html#t:custom_id/0"},{"type":"type","title":"Nostrum.Struct.Component.disabled/0","doc":"Indicates if the component is disabled or not.\n\nValid for [Buttons](#module-buttons) & [Select Menus](#module-select-menu).","ref":"Nostrum.Struct.Component.html#t:disabled/0"},{"type":"type","title":"Nostrum.Struct.Component.emoji/0","doc":"A partial emoji to display on the object.\n\nValid for [Buttons](#module-buttons)","ref":"Nostrum.Struct.Component.html#t:emoji/0"},{"type":"type","title":"Nostrum.Struct.Component.label/0","doc":"A string that appears on the button, max 80 characters.\n\nValid for [Buttons](#module-buttons)","ref":"Nostrum.Struct.Component.html#t:label/0"},{"type":"type","title":"Nostrum.Struct.Component.max_length/0","doc":"The maximum length of the text input. Minimum value 1, max 4000.\n\nValid for [Text Input](#module-text-input).","ref":"Nostrum.Struct.Component.html#t:max_length/0"},{"type":"type","title":"Nostrum.Struct.Component.max_values/0","doc":"The maximum number of permitted selections. Minimum value 0, max 25.\n\nValid for [Select Menus](#module-select-menu).","ref":"Nostrum.Struct.Component.html#t:max_values/0"},{"type":"type","title":"Nostrum.Struct.Component.min_length/0","doc":"The minimum length of the text input. Minimum value 0, max 4000.\n\nValid for [Text Input](#module-text-input).","ref":"Nostrum.Struct.Component.html#t:min_length/0"},{"type":"type","title":"Nostrum.Struct.Component.min_values/0","doc":"The minimum number of permitted selections. Minimum value 0, max 25.\n\nValid for [Select Menus](#module-select-menu).","ref":"Nostrum.Struct.Component.html#t:min_values/0"},{"type":"type","title":"Nostrum.Struct.Component.options/0","doc":"A list of options for select menus, max 25.\n\nValid for [Select Menus](#module-select-menu).","ref":"Nostrum.Struct.Component.html#t:options/0"},{"type":"type","title":"Nostrum.Struct.Component.placeholder/0","doc":"Placeholder text if nothing is selected, max 100 characters\n\nValid for [Select Menus](#module-select-menu) and [Text Input](#module-text-input).","ref":"Nostrum.Struct.Component.html#t:placeholder/0"},{"type":"type","title":"Nostrum.Struct.Component.required/0","doc":"Indicates if the text input is required.\n\nValid for [Text Input](#module-text-input).","ref":"Nostrum.Struct.Component.html#t:required/0"},{"type":"type","title":"Nostrum.Struct.Component.style/0","doc":"Indicates the style.\n\nYou can use one of the `Nostrum.Constants.ButtonStyle` methods.\n\nValid for Valid for [Interaction Buttons](#module-interaction-button) and [Text Input](#module-text-input).","ref":"Nostrum.Struct.Component.html#t:style/0"},{"type":"type","title":"Nostrum.Struct.Component.t/0","doc":"The currently valid component types.","ref":"Nostrum.Struct.Component.html#t:t/0"},{"type":"type","title":"Nostrum.Struct.Component.type/0","doc":"The type of component.\n\nValid for All Types.\n\n| | Component Types |\n|------|-----|\n| `1` | Action Row |\n| `2` | Button |\n| `3` | SelectMenu |\n| `4` | TextInput |\n\nYou can use one of the `Nostrum.Constants.ComponentType` methods.\n\nCheck out the [Discord API Message Component Types](https://discord.com/developers/docs/interactions/message-components#component-object-component-types) for more information.","ref":"Nostrum.Struct.Component.html#t:type/0"},{"type":"type","title":"Nostrum.Struct.Component.url/0","doc":"A url for link buttons.\n\nValid for: [Buttons](#module-buttons)","ref":"Nostrum.Struct.Component.html#t:url/0"},{"type":"type","title":"Nostrum.Struct.Component.value/0","doc":"A pre-filled value for the text input, max 4000 characters.\n\nValid for [Text Input](#module-text-input).","ref":"Nostrum.Struct.Component.html#t:value/0"},{"type":"module","title":"Nostrum.Struct.Component.ActionRow","doc":"Action Rows.","ref":"Nostrum.Struct.Component.ActionRow.html"},{"type":"function","title":"Nostrum.Struct.Component.ActionRow.action_row/1","doc":"Create an empty action row.\n\nOptions can be passed as a keyword list. The only supported option is a list of inner components","ref":"Nostrum.Struct.Component.ActionRow.html#action_row/1"},{"type":"function","title":"Nostrum.Struct.Component.ActionRow.append/2","doc":"Appends a button to the action row.\n\nReturns the action row unchanged if there are already 5 buttons or if the action row contains a select menu or text input.","ref":"Nostrum.Struct.Component.ActionRow.html#append/2"},{"type":"function","title":"Nostrum.Struct.Component.ActionRow.append_lazy/2","doc":"Lazily appends a button to the action row.\n\nIf there are already 5 buttons, the first one will be dropped.","ref":"Nostrum.Struct.Component.ActionRow.html#append_lazy/2"},{"type":"function","title":"Nostrum.Struct.Component.ActionRow.flatten/1","doc":"","ref":"Nostrum.Struct.Component.ActionRow.html#flatten/1"},{"type":"function","title":"Nostrum.Struct.Component.ActionRow.put/2","doc":"Puts the given component into the action row, any existing components are discarded.","ref":"Nostrum.Struct.Component.ActionRow.html#put/2"},{"type":"function","title":"Nostrum.Struct.Component.ActionRow.put_new/2","doc":"Puts the components into the action row unless a list of inner components already exists.","ref":"Nostrum.Struct.Component.ActionRow.html#put_new/2"},{"type":"type","title":"Nostrum.Struct.Component.ActionRow.t/0","doc":"","ref":"Nostrum.Struct.Component.ActionRow.html#t:t/0"},{"type":"module","title":"Nostrum.Struct.Component.Button","doc":"Helpers for dealing with Button Components","ref":"Nostrum.Struct.Component.Button.html"},{"type":"function","title":"Nostrum.Struct.Component.Button.button/1","doc":"Create a button.\n\nThis function provides direct access to the `new/1` callback.\n\n> Note: While using this function directly you are **not** guaranteed to return a valid button, providing a valid combination of options becomes the responsibility of the reader. It is instead recommended to use the helper functions provided below.","ref":"Nostrum.Struct.Component.Button.html#button/1"},{"type":"function","title":"Nostrum.Struct.Component.Button.disable/2","doc":"Disables the button when `disabled` is true. Enables it otherwise.","ref":"Nostrum.Struct.Component.Button.html#disable/2"},{"type":"function","title":"Nostrum.Struct.Component.Button.flatten/1","doc":"","ref":"Nostrum.Struct.Component.Button.html#flatten/1"},{"type":"function","title":"Nostrum.Struct.Component.Button.interaction_button/3","doc":"Create an interaction button.\n\nRead more about interaction buttons in the `Nostrum.Struct.Component` documentation.","ref":"Nostrum.Struct.Component.Button.html#interaction_button/3"},{"type":"function","title":"Nostrum.Struct.Component.Button.link_button/3","doc":"Create a link button.\n\nRead more about link buttons in the `Nostrum.Struct.Component` documentation.","ref":"Nostrum.Struct.Component.Button.html#link_button/3"},{"type":"function","title":"Nostrum.Struct.Component.Button.put_style/2","doc":"Changes the style of the button.","ref":"Nostrum.Struct.Component.Button.html#put_style/2"},{"type":"function","title":"Nostrum.Struct.Component.Button.toggle/1","doc":"Toggle the buttons disabled state.","ref":"Nostrum.Struct.Component.Button.html#toggle/1"},{"type":"type","title":"Nostrum.Struct.Component.Button.interaction_button/0","doc":"","ref":"Nostrum.Struct.Component.Button.html#t:interaction_button/0"},{"type":"type","title":"Nostrum.Struct.Component.Button.link_button/0","doc":"","ref":"Nostrum.Struct.Component.Button.html#t:link_button/0"},{"type":"type","title":"Nostrum.Struct.Component.Button.opt/0","doc":"","ref":"Nostrum.Struct.Component.Button.html#t:opt/0"},{"type":"type","title":"Nostrum.Struct.Component.Button.opts/0","doc":"","ref":"Nostrum.Struct.Component.Button.html#t:opts/0"},{"type":"type","title":"Nostrum.Struct.Component.Button.t/0","doc":"","ref":"Nostrum.Struct.Component.Button.html#t:t/0"},{"type":"module","title":"Nostrum.Struct.Component.Option","doc":"Component Options","ref":"Nostrum.Struct.Component.Option.html"},{"type":"type","title":"Nostrum.Struct.Component.Option.default/0","doc":"If this option is selected by default.","ref":"Nostrum.Struct.Component.Option.html#t:default/0"},{"type":"type","title":"Nostrum.Struct.Component.Option.description/0","doc":"An optional description of the option. Max length is 100 characters.","ref":"Nostrum.Struct.Component.Option.html#t:description/0"},{"type":"type","title":"Nostrum.Struct.Component.Option.emoji/0","doc":"","ref":"Nostrum.Struct.Component.Option.html#t:emoji/0"},{"type":"type","title":"Nostrum.Struct.Component.Option.label/0","doc":"The user-facing name of the option.","ref":"Nostrum.Struct.Component.Option.html#t:label/0"},{"type":"type","title":"Nostrum.Struct.Component.Option.t/0","doc":"","ref":"Nostrum.Struct.Component.Option.html#t:t/0"},{"type":"type","title":"Nostrum.Struct.Component.Option.value/0","doc":"The developer defined value of the option.","ref":"Nostrum.Struct.Component.Option.html#t:value/0"},{"type":"module","title":"Nostrum.Struct.Component.SelectMenu","doc":"Select Menu","ref":"Nostrum.Struct.Component.SelectMenu.html"},{"type":"function","title":"Nostrum.Struct.Component.SelectMenu.flatten/1","doc":"","ref":"Nostrum.Struct.Component.SelectMenu.html#flatten/1"},{"type":"function","title":"Nostrum.Struct.Component.SelectMenu.select_menu/2","doc":"Creates a select menu that can be used inside an action row.\n\nOptions can be passed as a keyword list.","ref":"Nostrum.Struct.Component.SelectMenu.html#select_menu/2"},{"type":"function","title":"Parameters - Nostrum.Struct.Component.SelectMenu.select_menu/2","doc":"- `custom_id` - lower case string, used for matching against when your application receives an interaction.","ref":"Nostrum.Struct.Component.SelectMenu.html#select_menu/2-parameters"},{"type":"function","title":"Options - Nostrum.Struct.Component.SelectMenu.select_menu/2","doc":"- `disabled` - If the select should be disabled\n- `options` - A list of options for the select menu, see `Nostrum.Struct.Component.Option`\n- `placeholder` - Value to be shown before anything is selected\n- `min_values` - minimum number of values the user must select, between 0 and 25, default is 1\n- `max_values` - maximum number of values the user must select, between 0 and 25, default is 1","ref":"Nostrum.Struct.Component.SelectMenu.html#select_menu/2-options"},{"type":"type","title":"Nostrum.Struct.Component.SelectMenu.opt/0","doc":"","ref":"Nostrum.Struct.Component.SelectMenu.html#t:opt/0"},{"type":"type","title":"Nostrum.Struct.Component.SelectMenu.opts/0","doc":"","ref":"Nostrum.Struct.Component.SelectMenu.html#t:opts/0"},{"type":"type","title":"Nostrum.Struct.Component.SelectMenu.t/0","doc":"","ref":"Nostrum.Struct.Component.SelectMenu.html#t:t/0"},{"type":"module","title":"Nostrum.Struct.Component.TextInput","doc":"Text Input.","ref":"Nostrum.Struct.Component.TextInput.html"},{"type":"function","title":"Nostrum.Struct.Component.TextInput.flatten/1","doc":"","ref":"Nostrum.Struct.Component.TextInput.html#flatten/1"},{"type":"function","title":"Nostrum.Struct.Component.TextInput.put_style/2","doc":"","ref":"Nostrum.Struct.Component.TextInput.html#put_style/2"},{"type":"function","title":"Nostrum.Struct.Component.TextInput.text_input/3","doc":"Create a text input component.","ref":"Nostrum.Struct.Component.TextInput.html#text_input/3"},{"type":"type","title":"Nostrum.Struct.Component.TextInput.opt/0","doc":"","ref":"Nostrum.Struct.Component.TextInput.html#t:opt/0"},{"type":"type","title":"Nostrum.Struct.Component.TextInput.opts/0","doc":"","ref":"Nostrum.Struct.Component.TextInput.html#t:opts/0"},{"type":"type","title":"Nostrum.Struct.Component.TextInput.t/0","doc":"","ref":"Nostrum.Struct.Component.TextInput.html#t:t/0"},{"type":"behaviour","title":"Nostrum.Struct.Embed","doc":"Functions that work on Discord embeds.","ref":"Nostrum.Struct.Embed.html"},{"type":"behaviour","title":"Building Embeds - Nostrum.Struct.Embed","doc":"`Nostrum.Struct.Embed`s can be built using this module's builder functions\nor standard `Map` syntax:\n\n```elixir\niex> import Nostrum.Struct.Embed\n...> embed =\n...> %Nostrum.Struct.Embed{}\n...> |> put_title(\"craig\")\n...> |> put_description(\"nostrum\")\n...> |> put_url(\"https://google.com/\")\n...> |> put_timestamp(\"2016-05-05T21:04:13.203Z\")\n...> |> put_color(431_948)\n...> |> put_field(\"Field 1\", \"Test\")\n...> |> put_field(\"Field 2\", \"More test\", true)\n...> embed\n%Nostrum.Struct.Embed{\n title: \"craig\",\n description: \"nostrum\",\n url: \"https://google.com/\",\n timestamp: \"2016-05-05T21:04:13.203Z\",\n color: 431_948,\n fields: [\n %Nostrum.Struct.Embed.Field{name: \"Field 1\", value: \"Test\"},\n %Nostrum.Struct.Embed.Field{name: \"Field 2\", value: \"More test\", inline: true}\n ]\n}\n```","ref":"Nostrum.Struct.Embed.html#module-building-embeds"},{"type":"behaviour","title":"Using structs - Nostrum.Struct.Embed","doc":"You can also create `Nostrum.Struct.Embed`s from structs, by using the\n`Nostrum.Struct.Embed` module. Here's how the example above could be build using structs\n\n```elixir\n defmodule MyApp.MyStruct do\n use Nostrum.Struct.Embed\n\n defstruct []\n\n def title(_), do: \"craig\"\n def description(_), do: \"nostrum\"\n def url(_), do: \"https://google.com/\"\n def timestamp(_), do: \"2016-05-05T21:04:13.203Z\"\n def color(_), do: 431_948\n\n def fields(_) do\n [\n %Nostrum.Struct.Embed.Field{name: \"Field 1\", value: \"Test\"},\n %Nostrum.Struct.Embed.Field{name: \"Field 2\", value: \"More test\", inline: true}\n ]\n end\n end\n\niex> Nostrum.Struct.Embed.from(%MyApp.MyStruct{})\n%Nostrum.Struct.Embed{\n title: \"craig\",\n description: \"nostrum\",\n url: \"https://google.com/\",\n timestamp: \"2016-05-05T21:04:13.203Z\",\n color: 431_948,\n fields: [\n %Nostrum.Struct.Embed.Field{name: \"Field 1\", value: \"Test\"},\n %Nostrum.Struct.Embed.Field{name: \"Field 2\", value: \"More test\", inline: true}\n ]\n}\n```\nSee this modules callbacks for a list of all the functions that can be implemented.\n\nThe implementation of these callbacks is optional. Not implemented functions will simply\nbe ignored.","ref":"Nostrum.Struct.Embed.html#module-using-structs"},{"type":"callback","title":"Nostrum.Struct.Embed.author/1","doc":"","ref":"Nostrum.Struct.Embed.html#c:author/1"},{"type":"callback","title":"Nostrum.Struct.Embed.color/1","doc":"","ref":"Nostrum.Struct.Embed.html#c:color/1"},{"type":"callback","title":"Nostrum.Struct.Embed.description/1","doc":"","ref":"Nostrum.Struct.Embed.html#c:description/1"},{"type":"callback","title":"Nostrum.Struct.Embed.fields/1","doc":"","ref":"Nostrum.Struct.Embed.html#c:fields/1"},{"type":"callback","title":"Nostrum.Struct.Embed.footer/1","doc":"","ref":"Nostrum.Struct.Embed.html#c:footer/1"},{"type":"function","title":"Nostrum.Struct.Embed.from/1","doc":"Create an embed from a struct that implements the `Nostrum.Struct.Embed` behaviour","ref":"Nostrum.Struct.Embed.html#from/1"},{"type":"callback","title":"Nostrum.Struct.Embed.image/1","doc":"","ref":"Nostrum.Struct.Embed.html#c:image/1"},{"type":"function","title":"Nostrum.Struct.Embed.put_author/4","doc":"Puts a `Nostrum.Struct.Embed.Author` under `:author` in `embed`.","ref":"Nostrum.Struct.Embed.html#put_author/4"},{"type":"function","title":"Examples - Nostrum.Struct.Embed.put_author/4","doc":"```elixir\niex> embed = %Nostrum.Struct.Embed{}\n...> Nostrum.Struct.Embed.put_author(embed, \"skippi\", \"https://github.com/skippi\", nil)\n%Nostrum.Struct.Embed{\n author: %Nostrum.Struct.Embed.Author{\n name: \"skippi\",\n url: \"https://github.com/skippi\",\n icon_url: nil\n }\n}\n```","ref":"Nostrum.Struct.Embed.html#put_author/4-examples"},{"type":"function","title":"Nostrum.Struct.Embed.put_color/2","doc":"Puts the given `value` under `:color` in `embed`.","ref":"Nostrum.Struct.Embed.html#put_color/2"},{"type":"function","title":"Examples - Nostrum.Struct.Embed.put_color/2","doc":"```elixir\niex> embed = %Nostrum.Struct.Embed{}\n...> Nostrum.Struct.Embed.put_color(embed, 431948)\n%Nostrum.Struct.Embed{color: 431948}\n```","ref":"Nostrum.Struct.Embed.html#put_color/2-examples"},{"type":"function","title":"Nostrum.Struct.Embed.put_description/2","doc":"Puts the given `value` under `:description` in `embed`.","ref":"Nostrum.Struct.Embed.html#put_description/2"},{"type":"function","title":"Examples - Nostrum.Struct.Embed.put_description/2","doc":"```elixir\niex> embed = %Nostrum.Struct.Embed{}\n...> Nostrum.Struct.Embed.put_description(embed, \"An elixir library for the discord API.\")\n%Nostrum.Struct.Embed{description: \"An elixir library for the discord API.\"}\n```","ref":"Nostrum.Struct.Embed.html#put_description/2-examples"},{"type":"function","title":"Nostrum.Struct.Embed.put_field/4","doc":"Adds a `Nostrum.Struct.Embed.Field` under `:fields` in `embed`.","ref":"Nostrum.Struct.Embed.html#put_field/4"},{"type":"function","title":"Examples - Nostrum.Struct.Embed.put_field/4","doc":"```elixir\niex> embed = %Nostrum.Struct.Embed{}\n...> Nostrum.Struct.Embed.put_field(embed, \"First User\", \"b1nzy\")\n%Nostrum.Struct.Embed{\n fields: [\n %Nostrum.Struct.Embed.Field{name: \"First User\", value: \"b1nzy\"}\n ]\n}\n\niex> embed = %Nostrum.Struct.Embed{\n...> fields: [\n...> %Nostrum.Struct.Embed.Field{name: \"First User\", value: \"b1nzy\"}\n...> ]\n...> }\n...> Nostrum.Struct.Embed.put_field(embed, \"Second User\", \"Danny\")\n%Nostrum.Struct.Embed{\n fields: [\n %Nostrum.Struct.Embed.Field{name: \"First User\", value: \"b1nzy\"},\n %Nostrum.Struct.Embed.Field{name: \"Second User\", value: \"Danny\"}\n ]\n}\n```","ref":"Nostrum.Struct.Embed.html#put_field/4-examples"},{"type":"function","title":"Nostrum.Struct.Embed.put_footer/3","doc":"Puts a `Nostrum.Struct.Embed.Footer` under `:footer` in `embed`.","ref":"Nostrum.Struct.Embed.html#put_footer/3"},{"type":"function","title":"Examples - Nostrum.Struct.Embed.put_footer/3","doc":"```elixir\niex> embed = %Nostrum.Struct.Embed{}\n...> Nostrum.Struct.Embed.put_footer(embed, \"Discord API\", nil)\n%Nostrum.Struct.Embed{\n footer: %Nostrum.Struct.Embed.Footer{\n text: \"Discord API\",\n icon_url: nil\n }\n}\n\niex> embed = %Nostrum.Struct.Embed{}\n...> Nostrum.Struct.Embed.put_footer(embed, \"nostrum footer\", \"https://discord.com/assets/53ef346458017da2062aca5c7955946b.svg\")\n%Nostrum.Struct.Embed{\n footer: %Nostrum.Struct.Embed.Footer{\n text: \"nostrum footer\",\n icon_url: \"https://discord.com/assets/53ef346458017da2062aca5c7955946b.svg\"\n }\n}\n```","ref":"Nostrum.Struct.Embed.html#put_footer/3-examples"},{"type":"function","title":"Nostrum.Struct.Embed.put_image/2","doc":"Puts a `Nostrum.Struct.Embed.Image` under `:image` in `embed`.","ref":"Nostrum.Struct.Embed.html#put_image/2"},{"type":"function","title":"Examples - Nostrum.Struct.Embed.put_image/2","doc":"```elixir\niex> embed = %Nostrum.Struct.Embed{}\n...> Nostrum.Struct.Embed.put_image(embed, \"https://discord.com/assets/af92e60c16b7019f34a467383b31490a.svg\")\n%Nostrum.Struct.Embed{\n image: %Nostrum.Struct.Embed.Image{\n url: \"https://discord.com/assets/af92e60c16b7019f34a467383b31490a.svg\"\n }\n}\n```","ref":"Nostrum.Struct.Embed.html#put_image/2-examples"},{"type":"function","title":"Nostrum.Struct.Embed.put_thumbnail/2","doc":"Puts a `Nostrum.Struct.Embed.Thumbnail` under `:thumbnail` in `embed`.","ref":"Nostrum.Struct.Embed.html#put_thumbnail/2"},{"type":"function","title":"Examples - Nostrum.Struct.Embed.put_thumbnail/2","doc":"```elixir\niex> embed = %Nostrum.Struct.Embed{}\n...> Nostrum.Struct.Embed.put_thumbnail(embed, \"https://discord.com/assets/af92e60c16b7019f34a467383b31490a.svg\")\n%Nostrum.Struct.Embed{\n thumbnail: %Nostrum.Struct.Embed.Thumbnail{\n url: \"https://discord.com/assets/af92e60c16b7019f34a467383b31490a.svg\"\n }\n}\n```","ref":"Nostrum.Struct.Embed.html#put_thumbnail/2-examples"},{"type":"function","title":"Nostrum.Struct.Embed.put_timestamp/2","doc":"Puts the given `value` under `:timestamp` in `embed`.","ref":"Nostrum.Struct.Embed.html#put_timestamp/2"},{"type":"function","title":"Examples - Nostrum.Struct.Embed.put_timestamp/2","doc":"```elixir\niex> embed = %Nostrum.Struct.Embed{}\n...> Nostrum.Struct.Embed.put_timestamp(embed, \"2018-04-21T17:33:51.893000Z\")\n%Nostrum.Struct.Embed{timestamp: \"2018-04-21T17:33:51.893000Z\"}\n```","ref":"Nostrum.Struct.Embed.html#put_timestamp/2-examples"},{"type":"function","title":"Nostrum.Struct.Embed.put_title/2","doc":"Puts the given `value` under `:title` in `embed`.","ref":"Nostrum.Struct.Embed.html#put_title/2"},{"type":"function","title":"Examples - Nostrum.Struct.Embed.put_title/2","doc":"```elixir\niex> embed = %Nostrum.Struct.Embed{}\n...> Nostrum.Struct.Embed.put_title(embed, \"nostrum\")\n%Nostrum.Struct.Embed{title: \"nostrum\"}\n```","ref":"Nostrum.Struct.Embed.html#put_title/2-examples"},{"type":"function","title":"Nostrum.Struct.Embed.put_url/2","doc":"Puts the given `value` under `:url` in `embed`.","ref":"Nostrum.Struct.Embed.html#put_url/2"},{"type":"function","title":"Examples - Nostrum.Struct.Embed.put_url/2","doc":"```elixir\niex> embed = %Nostrum.Struct.Embed{}\n...> Nostrum.Struct.Embed.put_url(embed, \"https://github.com/Kraigie/nostrum\")\n%Nostrum.Struct.Embed{url: \"https://github.com/Kraigie/nostrum\"}\n```","ref":"Nostrum.Struct.Embed.html#put_url/2-examples"},{"type":"callback","title":"Nostrum.Struct.Embed.thumbnail/1","doc":"","ref":"Nostrum.Struct.Embed.html#c:thumbnail/1"},{"type":"callback","title":"Nostrum.Struct.Embed.timestamp/1","doc":"","ref":"Nostrum.Struct.Embed.html#c:timestamp/1"},{"type":"callback","title":"Nostrum.Struct.Embed.title/1","doc":"","ref":"Nostrum.Struct.Embed.html#c:title/1"},{"type":"callback","title":"Nostrum.Struct.Embed.url/1","doc":"","ref":"Nostrum.Struct.Embed.html#c:url/1"},{"type":"type","title":"Nostrum.Struct.Embed.author/0","doc":"Author information","ref":"Nostrum.Struct.Embed.html#t:author/0"},{"type":"type","title":"Nostrum.Struct.Embed.color/0","doc":"Color code of the embed","ref":"Nostrum.Struct.Embed.html#t:color/0"},{"type":"type","title":"Nostrum.Struct.Embed.description/0","doc":"Description of the embed","ref":"Nostrum.Struct.Embed.html#t:description/0"},{"type":"type","title":"Nostrum.Struct.Embed.fields/0","doc":"Fields information","ref":"Nostrum.Struct.Embed.html#t:fields/0"},{"type":"type","title":"Nostrum.Struct.Embed.footer/0","doc":"Footer information","ref":"Nostrum.Struct.Embed.html#t:footer/0"},{"type":"type","title":"Nostrum.Struct.Embed.image/0","doc":"Image information","ref":"Nostrum.Struct.Embed.html#t:image/0"},{"type":"type","title":"Nostrum.Struct.Embed.provider/0","doc":"Provider information","ref":"Nostrum.Struct.Embed.html#t:provider/0"},{"type":"type","title":"Nostrum.Struct.Embed.t/0","doc":"","ref":"Nostrum.Struct.Embed.html#t:t/0"},{"type":"type","title":"Nostrum.Struct.Embed.thumbnail/0","doc":"Thumbnail information","ref":"Nostrum.Struct.Embed.html#t:thumbnail/0"},{"type":"type","title":"Nostrum.Struct.Embed.timestamp/0","doc":"Timestamp of embed content","ref":"Nostrum.Struct.Embed.html#t:timestamp/0"},{"type":"type","title":"Nostrum.Struct.Embed.title/0","doc":"Title of the embed","ref":"Nostrum.Struct.Embed.html#t:title/0"},{"type":"type","title":"Nostrum.Struct.Embed.type/0","doc":"Type of the embed","ref":"Nostrum.Struct.Embed.html#t:type/0"},{"type":"type","title":"Nostrum.Struct.Embed.url/0","doc":"Url of the embed","ref":"Nostrum.Struct.Embed.html#t:url/0"},{"type":"type","title":"Nostrum.Struct.Embed.video/0","doc":"Video information","ref":"Nostrum.Struct.Embed.html#t:video/0"},{"type":"module","title":"Nostrum.Struct.Embed.Author","doc":"Struct representing a Discord embed author.","ref":"Nostrum.Struct.Embed.Author.html"},{"type":"type","title":"Nostrum.Struct.Embed.Author.icon_url/0","doc":"URL of the author icon","ref":"Nostrum.Struct.Embed.Author.html#t:icon_url/0"},{"type":"type","title":"Nostrum.Struct.Embed.Author.name/0","doc":"Name of the author","ref":"Nostrum.Struct.Embed.Author.html#t:name/0"},{"type":"type","title":"Nostrum.Struct.Embed.Author.proxy_icon_url/0","doc":"Proxied URL of author icon","ref":"Nostrum.Struct.Embed.Author.html#t:proxy_icon_url/0"},{"type":"type","title":"Nostrum.Struct.Embed.Author.t/0","doc":"","ref":"Nostrum.Struct.Embed.Author.html#t:t/0"},{"type":"type","title":"Nostrum.Struct.Embed.Author.url/0","doc":"URL of the author","ref":"Nostrum.Struct.Embed.Author.html#t:url/0"},{"type":"module","title":"Nostrum.Struct.Embed.Field","doc":"Struct representing a Discord embed field.","ref":"Nostrum.Struct.Embed.Field.html"},{"type":"type","title":"Nostrum.Struct.Embed.Field.inline/0","doc":"Whether the field should display as inline","ref":"Nostrum.Struct.Embed.Field.html#t:inline/0"},{"type":"type","title":"Nostrum.Struct.Embed.Field.name/0","doc":"Name of the field","ref":"Nostrum.Struct.Embed.Field.html#t:name/0"},{"type":"type","title":"Nostrum.Struct.Embed.Field.t/0","doc":"","ref":"Nostrum.Struct.Embed.Field.html#t:t/0"},{"type":"type","title":"Nostrum.Struct.Embed.Field.value/0","doc":"Value of the field","ref":"Nostrum.Struct.Embed.Field.html#t:value/0"},{"type":"module","title":"Nostrum.Struct.Embed.Footer","doc":"Struct representing a Discord embed footer.","ref":"Nostrum.Struct.Embed.Footer.html"},{"type":"type","title":"Nostrum.Struct.Embed.Footer.icon_url/0","doc":"URL of footer icon","ref":"Nostrum.Struct.Embed.Footer.html#t:icon_url/0"},{"type":"type","title":"Nostrum.Struct.Embed.Footer.proxy_icon_url/0","doc":"Proxied URL of footer icon","ref":"Nostrum.Struct.Embed.Footer.html#t:proxy_icon_url/0"},{"type":"type","title":"Nostrum.Struct.Embed.Footer.t/0","doc":"","ref":"Nostrum.Struct.Embed.Footer.html#t:t/0"},{"type":"type","title":"Nostrum.Struct.Embed.Footer.text/0","doc":"Footer text","ref":"Nostrum.Struct.Embed.Footer.html#t:text/0"},{"type":"module","title":"Nostrum.Struct.Embed.Image","doc":"Struct representing a Discord embed image.","ref":"Nostrum.Struct.Embed.Image.html"},{"type":"type","title":"Nostrum.Struct.Embed.Image.height/0","doc":"Height of the image","ref":"Nostrum.Struct.Embed.Image.html#t:height/0"},{"type":"type","title":"Nostrum.Struct.Embed.Image.proxy_url/0","doc":"URL of image icon","ref":"Nostrum.Struct.Embed.Image.html#t:proxy_url/0"},{"type":"type","title":"Nostrum.Struct.Embed.Image.t/0","doc":"","ref":"Nostrum.Struct.Embed.Image.html#t:t/0"},{"type":"type","title":"Nostrum.Struct.Embed.Image.url/0","doc":"Image text","ref":"Nostrum.Struct.Embed.Image.html#t:url/0"},{"type":"type","title":"Nostrum.Struct.Embed.Image.width/0","doc":"Width of the image","ref":"Nostrum.Struct.Embed.Image.html#t:width/0"},{"type":"module","title":"Nostrum.Struct.Embed.Provider","doc":"Struct representing a Discord embed provider.","ref":"Nostrum.Struct.Embed.Provider.html"},{"type":"type","title":"Nostrum.Struct.Embed.Provider.name/0","doc":"Name of the provider","ref":"Nostrum.Struct.Embed.Provider.html#t:name/0"},{"type":"type","title":"Nostrum.Struct.Embed.Provider.t/0","doc":"","ref":"Nostrum.Struct.Embed.Provider.html#t:t/0"},{"type":"type","title":"Nostrum.Struct.Embed.Provider.url/0","doc":"URL of provider","ref":"Nostrum.Struct.Embed.Provider.html#t:url/0"},{"type":"module","title":"Nostrum.Struct.Embed.Thumbnail","doc":"Struct representing a Discord embed thumbnail.","ref":"Nostrum.Struct.Embed.Thumbnail.html"},{"type":"type","title":"Nostrum.Struct.Embed.Thumbnail.height/0","doc":"Height of the thumbnail","ref":"Nostrum.Struct.Embed.Thumbnail.html#t:height/0"},{"type":"type","title":"Nostrum.Struct.Embed.Thumbnail.proxy_url/0","doc":"URL of thumbnail icon","ref":"Nostrum.Struct.Embed.Thumbnail.html#t:proxy_url/0"},{"type":"type","title":"Nostrum.Struct.Embed.Thumbnail.t/0","doc":"","ref":"Nostrum.Struct.Embed.Thumbnail.html#t:t/0"},{"type":"type","title":"Nostrum.Struct.Embed.Thumbnail.url/0","doc":"Source URL of the thumbnail","ref":"Nostrum.Struct.Embed.Thumbnail.html#t:url/0"},{"type":"type","title":"Nostrum.Struct.Embed.Thumbnail.width/0","doc":"Width of the thumbnail","ref":"Nostrum.Struct.Embed.Thumbnail.html#t:width/0"},{"type":"module","title":"Nostrum.Struct.Embed.Video","doc":"Struct representing a Discord embed video.","ref":"Nostrum.Struct.Embed.Video.html"},{"type":"type","title":"Nostrum.Struct.Embed.Video.height/0","doc":"Height of the video","ref":"Nostrum.Struct.Embed.Video.html#t:height/0"},{"type":"type","title":"Nostrum.Struct.Embed.Video.t/0","doc":"","ref":"Nostrum.Struct.Embed.Video.html#t:t/0"},{"type":"type","title":"Nostrum.Struct.Embed.Video.url/0","doc":"Source URL of the video","ref":"Nostrum.Struct.Embed.Video.html#t:url/0"},{"type":"type","title":"Nostrum.Struct.Embed.Video.width/0","doc":"Width of the video","ref":"Nostrum.Struct.Embed.Video.html#t:width/0"},{"type":"module","title":"Nostrum.Struct.Emoji","doc":"Struct representing a Discord emoji.","ref":"Nostrum.Struct.Emoji.html"},{"type":"module","title":"Mentioning Emojis in Messages - Nostrum.Struct.Emoji","doc":"A `Nostrum.Struct.Emoji` can be mentioned in message content using the `String.Chars`\nprotocol or `mention/1`.\n\n```elixir\nemoji = %Nostrum.Struct.Emoji{id: 437093487582642177, name: \"foxbot\"}\nNostrum.Api.create_message!(184046599834435585, \"#{emoji}\")\n%Nostrum.Struct.Message{content: \"<:foxbot:437093487582642177>\"}\n\nemoji = %Nostrum.Struct.Emoji{id: 436885297037312001, name: \"tealixir\"}\nNostrum.Api.create_message!(280085880452939778, \"#{Nostrum.Struct.Emoji.mention(emoji)}\")\n%Nostrum.Struct.Message{content: \"<:tealixir:436885297037312001>\"}\n```","ref":"Nostrum.Struct.Emoji.html#module-mentioning-emojis-in-messages"},{"type":"module","title":"Using Emojis in the Api - Nostrum.Struct.Emoji","doc":"A `Nostrum.Struct.Emoji` can be used in `Nostrum.Api` by using its api name\nor the struct itself.\n\n```elixir\nemoji = %Nostrum.Struct.Emoji{id: 436885297037312001, name: \"tealixir\"}\nNostrum.Api.create_reaction(381889573426429952, 436247584349356032, Nostrum.Struct.Emoji.api_name(emoji))\n{:ok}\n\nemoji = %Nostrum.Struct.Emoji{id: 436189601820966923, name: \"elixir\"}\nNostrum.Api.create_reaction(381889573426429952, 436247584349356032, emoji)\n{:ok}\n```\n\nSee `t:Nostrum.Struct.Emoji.api_name/0` for more information.","ref":"Nostrum.Struct.Emoji.html#module-using-emojis-in-the-api"},{"type":"function","title":"Nostrum.Struct.Emoji.api_name/1","doc":"Formats an emoji struct into its `t:Nostrum.Struct.Emoji.api_name/0`.","ref":"Nostrum.Struct.Emoji.html#api_name/1"},{"type":"function","title":"Examples - Nostrum.Struct.Emoji.api_name/1","doc":"```elixir\niex> emoji = %Nostrum.Struct.Emoji{name: \"Γ¡É\"}\n...> Nostrum.Struct.Emoji.api_name(emoji)\n\"Γ¡É\"\n\niex> emoji = %Nostrum.Struct.Emoji{id: 437093487582642177, name: \"foxbot\"}\n...> Nostrum.Struct.Emoji.api_name(emoji)\n\"foxbot:437093487582642177\"\n```","ref":"Nostrum.Struct.Emoji.html#api_name/1-examples"},{"type":"function","title":"Nostrum.Struct.Emoji.image_url/1","doc":"Returns the url of a custom emoji's image. If the emoji is not a custom one,\nreturns `nil`.","ref":"Nostrum.Struct.Emoji.html#image_url/1"},{"type":"function","title":"Examples - Nostrum.Struct.Emoji.image_url/1","doc":"```elixir\niex> emoji = %Nostrum.Struct.Emoji{id: 450225070569291776}\niex> Nostrum.Struct.Emoji.image_url(emoji)\n\"https://cdn.discordapp.com/emojis/450225070569291776.png\"\n\niex> emoji = %Nostrum.Struct.Emoji{id: 406140226998894614, animated: true}\niex> Nostrum.Struct.Emoji.image_url(emoji)\n\"https://cdn.discordapp.com/emojis/406140226998894614.gif\"\n\niex> emoji = %Nostrum.Struct.Emoji{id: nil, name: \"Γ¡É\"}\niex> Nostrum.Struct.Emoji.image_url(emoji)\nnil\n```","ref":"Nostrum.Struct.Emoji.html#image_url/1-examples"},{"type":"function","title":"Nostrum.Struct.Emoji.mention/1","doc":"Formats an `Nostrum.Struct.Emoji` into a mention.","ref":"Nostrum.Struct.Emoji.html#mention/1"},{"type":"function","title":"Examples - Nostrum.Struct.Emoji.mention/1","doc":"```elixir\niex> emoji = %Nostrum.Struct.Emoji{name: \"≡ƒæì\"}\n...> Nostrum.Struct.Emoji.mention(emoji)\n\"≡ƒæì\"\n\niex> emoji = %Nostrum.Struct.Emoji{id: 436885297037312001, name: \"tealixir\"}\n...> Nostrum.Struct.Emoji.mention(emoji)\n\"<:tealixir:436885297037312001>\"\n\niex> emoji = %Nostrum.Struct.Emoji{id: 437016804309860372, name: \"blobseizure\", animated: true}\n...> Nostrum.Struct.Emoji.mention(emoji)\n\" \"\n```","ref":"Nostrum.Struct.Emoji.html#mention/1-examples"},{"type":"type","title":"Nostrum.Struct.Emoji.animated/0","doc":"Whether this emoji is animated","ref":"Nostrum.Struct.Emoji.html#t:animated/0"},{"type":"type","title":"Nostrum.Struct.Emoji.api_name/0","doc":"Emoji string to be used with the Discord API.\n\nSome API endpoints take an `emoji`. If it is a custom emoji, it must be\nstructured as `\"id:name\"`. If it is an unicode emoji, it can be structured\nas any of the following:\n\n * `\"name\"`\n * A base 16 unicode emoji string.\n\n`api_name/1` is a convenience function that returns a `Nostrum.Struct.Emoji`'s\napi name.","ref":"Nostrum.Struct.Emoji.html#t:api_name/0"},{"type":"type","title":"Examples - Nostrum.Struct.Emoji.api_name/0","doc":"```elixir\n# Custom Emojis\n\"nostrum:431890438091489\"\n\n# Unicode Emojis\n\"≡ƒæì\"\n\"\\xF0\\x9F\\x98\\x81\"\n\"\\u2b50\"\n```","ref":"Nostrum.Struct.Emoji.html#t:api_name/0-examples"},{"type":"type","title":"Nostrum.Struct.Emoji.id/0","doc":"Id of the emoji","ref":"Nostrum.Struct.Emoji.html#t:id/0"},{"type":"type","title":"Nostrum.Struct.Emoji.managed/0","doc":"Whether this emoji is managed","ref":"Nostrum.Struct.Emoji.html#t:managed/0"},{"type":"type","title":"Nostrum.Struct.Emoji.name/0","doc":"Name of the emoji","ref":"Nostrum.Struct.Emoji.html#t:name/0"},{"type":"type","title":"Nostrum.Struct.Emoji.require_colons/0","doc":"Whether this emoji must be wrapped in colons","ref":"Nostrum.Struct.Emoji.html#t:require_colons/0"},{"type":"type","title":"Nostrum.Struct.Emoji.roles/0","doc":"Roles this emoji is whitelisted to","ref":"Nostrum.Struct.Emoji.html#t:roles/0"},{"type":"type","title":"Nostrum.Struct.Emoji.t/0","doc":"","ref":"Nostrum.Struct.Emoji.html#t:t/0"},{"type":"type","title":"Nostrum.Struct.Emoji.user/0","doc":"User that created this emoji","ref":"Nostrum.Struct.Emoji.html#t:user/0"},{"type":"module","title":"Nostrum.Struct.Guild","doc":"Struct representing a Discord guild.","ref":"Nostrum.Struct.Guild.html"},{"type":"function","title":"Nostrum.Struct.Guild.banner_url/2","doc":"Returns the URL of the guild's banner, or `nil` if no guild banner has been set.\n\nSupported image formats are PNG, GIF, JPEG and WebP.","ref":"Nostrum.Struct.Guild.html#banner_url/2"},{"type":"function","title":"Examples - Nostrum.Struct.Guild.banner_url/2","doc":"```elixir\niex> guild = %Nostrum.Struct.Guild{banner: \"656477617264736e6f7764656e\",\n...> id: 112233445566778899}\niex> Nostrum.Struct.Guild.banner_url(guild)\n\"https://cdn.discordapp.com/banners/112233445566778899/656477617264736e6f7764656e.webp\"\niex> Nostrum.Struct.Guild.banner_url(guild, \"png\")\n\"https://cdn.discordapp.com/banners/112233445566778899/656477617264736e6f7764656e.png\"\n```","ref":"Nostrum.Struct.Guild.html#banner_url/2-examples"},{"type":"function","title":"Nostrum.Struct.Guild.discovery_splash_url/2","doc":"Returns the URL of the guild's discovery splash, or `nil` if no discovery splash.\n\nSupported image formats are PNG, JPEG and WebP.","ref":"Nostrum.Struct.Guild.html#discovery_splash_url/2"},{"type":"function","title":"Examples - Nostrum.Struct.Guild.discovery_splash_url/2","doc":"```elixir\niex> guild = %Nostrum.Struct.Guild{discovery_splash: \"656477617264736e6f7764656e\",\n...> id: 112233445566778899}\niex> Nostrum.Struct.Guild.discovery_splash_url(guild)\n\"https://cdn.discordapp.com/discovery-splashes/112233445566778899/656477617264736e6f7764656e.webp\"\niex> Nostrum.Struct.Guild.discovery_splash_url(guild, \"png\")\n\"https://cdn.discordapp.com/discovery-splashes/112233445566778899/656477617264736e6f7764656e.png\"\n```","ref":"Nostrum.Struct.Guild.html#discovery_splash_url/2-examples"},{"type":"function","title":"Nostrum.Struct.Guild.icon_url/2","doc":"Returns the URL of a guild's icon, or `nil` if there is no icon.\n\nSupported image formats are PNG, JPEG, and WebP.","ref":"Nostrum.Struct.Guild.html#icon_url/2"},{"type":"function","title":"Examples - Nostrum.Struct.Guild.icon_url/2","doc":"```elixir\niex> guild = %Nostrum.Struct.Guild{icon: \"86e39f7ae3307e811784e2ffd11a7310\",\n...> id: 41771983423143937}\niex> Nostrum.Struct.Guild.icon_url(guild)\n\"https://cdn.discordapp.com/icons/41771983423143937/86e39f7ae3307e811784e2ffd11a7310.webp\"\niex> Nostrum.Struct.Guild.icon_url(guild, \"png\")\n\"https://cdn.discordapp.com/icons/41771983423143937/86e39f7ae3307e811784e2ffd11a7310.png\"\n\niex> guild = %Nostrum.Struct.Guild{icon: nil}\niex> Nostrum.Struct.Guild.icon_url(guild)\nnil\n```","ref":"Nostrum.Struct.Guild.html#icon_url/2-examples"},{"type":"function","title":"Nostrum.Struct.Guild.splash_url/2","doc":"Returns the URL of a guild's splash, or `nil` if there is no splash.\n\nSupported image formats are PNG, JPEG, and WebP.","ref":"Nostrum.Struct.Guild.html#splash_url/2"},{"type":"function","title":"Examples - Nostrum.Struct.Guild.splash_url/2","doc":"```elixir\niex> guild = %Nostrum.Struct.Guild{splash: \"86e39f7ae3307e811784e2ffd11a7310\",\n...> id: 41771983423143937}\niex> Nostrum.Struct.Guild.splash_url(guild)\n\"https://cdn.discordapp.com/splashes/41771983423143937/86e39f7ae3307e811784e2ffd11a7310.webp\"\niex> Nostrum.Struct.Guild.splash_url(guild, \"png\")\n\"https://cdn.discordapp.com/splashes/41771983423143937/86e39f7ae3307e811784e2ffd11a7310.png\"\n\niex> guild = %Nostrum.Struct.Guild{splash: nil}\niex> Nostrum.Struct.Guild.splash_url(guild)\nnil\n```","ref":"Nostrum.Struct.Guild.html#splash_url/2-examples"},{"type":"type","title":"Nostrum.Struct.Guild.afk_channel_id/0","doc":"The id of the guild's afk channel","ref":"Nostrum.Struct.Guild.html#t:afk_channel_id/0"},{"type":"type","title":"Nostrum.Struct.Guild.afk_timeout/0","doc":"The time someone must be afk before being moved","ref":"Nostrum.Struct.Guild.html#t:afk_timeout/0"},{"type":"type","title":"Nostrum.Struct.Guild.application_id/0","doc":"Application id of the guild creator if it is bot created.","ref":"Nostrum.Struct.Guild.html#t:application_id/0"},{"type":"type","title":"Nostrum.Struct.Guild.available_guild/0","doc":"A `Nostrum.Struct.Guild` that is fully available.","ref":"Nostrum.Struct.Guild.html#t:available_guild/0"},{"type":"type","title":"Nostrum.Struct.Guild.banner/0","doc":"Banner hash for the guild, if prefixed with `a_` an animated GIF is available.","ref":"Nostrum.Struct.Guild.html#t:banner/0"},{"type":"type","title":"Nostrum.Struct.Guild.channels/0","doc":"List of channels","ref":"Nostrum.Struct.Guild.html#t:channels/0"},{"type":"type","title":"Nostrum.Struct.Guild.default_message_notifications/0","doc":"Default message notifications level.","ref":"Nostrum.Struct.Guild.html#t:default_message_notifications/0"},{"type":"type","title":"Nostrum.Struct.Guild.description/0","doc":"User-set description of the guild","ref":"Nostrum.Struct.Guild.html#t:description/0"},{"type":"type","title":"Nostrum.Struct.Guild.discovery_splash/0","doc":"Hash of the Discovery splash screen","ref":"Nostrum.Struct.Guild.html#t:discovery_splash/0"},{"type":"type","title":"Nostrum.Struct.Guild.emojis/0","doc":"List of emojis","ref":"Nostrum.Struct.Guild.html#t:emojis/0"},{"type":"type","title":"Nostrum.Struct.Guild.explicit_content_filter/0","doc":"Explicit content filter level.","ref":"Nostrum.Struct.Guild.html#t:explicit_content_filter/0"},{"type":"type","title":"Nostrum.Struct.Guild.features/0","doc":"List of guild features","ref":"Nostrum.Struct.Guild.html#t:features/0"},{"type":"type","title":"Nostrum.Struct.Guild.guild_scheduled_events/0","doc":"List of scheduled events","ref":"Nostrum.Struct.Guild.html#t:guild_scheduled_events/0"},{"type":"type","title":"Nostrum.Struct.Guild.icon/0","doc":"The hash of the guild's icon","ref":"Nostrum.Struct.Guild.html#t:icon/0"},{"type":"type","title":"Nostrum.Struct.Guild.id/0","doc":"The guild's id","ref":"Nostrum.Struct.Guild.html#t:id/0"},{"type":"type","title":"Nostrum.Struct.Guild.joined_at/0","doc":"Date the bot user joined the guild","ref":"Nostrum.Struct.Guild.html#t:joined_at/0"},{"type":"type","title":"Nostrum.Struct.Guild.large/0","doc":"Whether the guild is considered 'large'","ref":"Nostrum.Struct.Guild.html#t:large/0"},{"type":"type","title":"Nostrum.Struct.Guild.max_members/0","doc":"Maximum members for the guild","ref":"Nostrum.Struct.Guild.html#t:max_members/0"},{"type":"type","title":"Nostrum.Struct.Guild.max_presences/0","doc":"Maximum number of presences for the guild.\n\nThis will be unset for most guilds, except for in Discord's terms, the\n\"largest of guilds\", where the field will be set to the maximum number of\nonline (gateway connected) members.","ref":"Nostrum.Struct.Guild.html#t:max_presences/0"},{"type":"type","title":"Nostrum.Struct.Guild.max_stage_video_channel_users/0","doc":"The maximum amount of users in a stage video channel","ref":"Nostrum.Struct.Guild.html#t:max_stage_video_channel_users/0"},{"type":"type","title":"Nostrum.Struct.Guild.max_video_channel_users/0","doc":"The maximum amount of users in a video channel","ref":"Nostrum.Struct.Guild.html#t:max_video_channel_users/0"},{"type":"type","title":"Nostrum.Struct.Guild.member_count/0","doc":"Total number of members in the guild","ref":"Nostrum.Struct.Guild.html#t:member_count/0"},{"type":"type","title":"Nostrum.Struct.Guild.mfa_level/0","doc":"Required MFA level of the guild","ref":"Nostrum.Struct.Guild.html#t:mfa_level/0"},{"type":"type","title":"Nostrum.Struct.Guild.name/0","doc":"The name of the guild.","ref":"Nostrum.Struct.Guild.html#t:name/0"},{"type":"type","title":"Nostrum.Struct.Guild.nsfw_level/0","doc":"NSFW level for the guild, unrated guilds have `:default`","ref":"Nostrum.Struct.Guild.html#t:nsfw_level/0"},{"type":"type","title":"Nostrum.Struct.Guild.owner_id/0","doc":"The id of the guild owner","ref":"Nostrum.Struct.Guild.html#t:owner_id/0"},{"type":"type","title":"Nostrum.Struct.Guild.preferred_locale/0","doc":"Preferred locale for the guild, set by the user","ref":"Nostrum.Struct.Guild.html#t:preferred_locale/0"},{"type":"type","title":"Nostrum.Struct.Guild.premium_progress_bar_enabled/0","doc":"Whether the guild has the boost progress bar enabled","ref":"Nostrum.Struct.Guild.html#t:premium_progress_bar_enabled/0"},{"type":"type","title":"Nostrum.Struct.Guild.premium_subscription_count/0","doc":"Number of boosts received by the guild","ref":"Nostrum.Struct.Guild.html#t:premium_subscription_count/0"},{"type":"type","title":"Nostrum.Struct.Guild.premium_tier/0","doc":"Premium tier of the guild (0-3)","ref":"Nostrum.Struct.Guild.html#t:premium_tier/0"},{"type":"type","title":"Nostrum.Struct.Guild.public_updates_channel_id/0","doc":"The id of the channel where admins and moderators receive notices from Discord. This\nis only available to guilds that contain ``PUBLIC`` in `t:features/0`.","ref":"Nostrum.Struct.Guild.html#t:public_updates_channel_id/0"},{"type":"type","title":"Nostrum.Struct.Guild.region/0","doc":"The id of the voice region","ref":"Nostrum.Struct.Guild.html#t:region/0"},{"type":"type","title":"Nostrum.Struct.Guild.rest_guild/0","doc":"A `Nostrum.Struct.Guild` that is sent on guild-specific rest endpoints.","ref":"Nostrum.Struct.Guild.html#t:rest_guild/0"},{"type":"type","title":"Nostrum.Struct.Guild.roles/0","doc":"List of roles","ref":"Nostrum.Struct.Guild.html#t:roles/0"},{"type":"type","title":"Nostrum.Struct.Guild.rules_channel_id/0","doc":"The id of the channel that is used for rules. This is only available to guilds that\ncontain ``PUBLIC`` in `t:features/0`.","ref":"Nostrum.Struct.Guild.html#t:rules_channel_id/0"},{"type":"type","title":"Nostrum.Struct.Guild.safety_alerts_channel_id/0","doc":"The id of the channel where admins and moderators of Community guilds receive safety alerts from Discord","ref":"Nostrum.Struct.Guild.html#t:safety_alerts_channel_id/0"},{"type":"type","title":"Nostrum.Struct.Guild.splash/0","doc":"The hash of the guild's splash","ref":"Nostrum.Struct.Guild.html#t:splash/0"},{"type":"type","title":"Nostrum.Struct.Guild.stickers/0","doc":"Custom stickers registered to the guild","ref":"Nostrum.Struct.Guild.html#t:stickers/0"},{"type":"type","title":"Nostrum.Struct.Guild.system_channel_flags/0","doc":"Bitset representing the system channel flags\n\nSee `Nostrum.Struct.Guild.SystemChannelFlags` for more information on the flag\ncontents as well as methods to parse and create your own values for this\nfield.","ref":"Nostrum.Struct.Guild.html#t:system_channel_flags/0"},{"type":"type","title":"Nostrum.Struct.Guild.system_channel_id/0","doc":"The id of the channel to which system messages are sent.","ref":"Nostrum.Struct.Guild.html#t:system_channel_id/0"},{"type":"type","title":"Nostrum.Struct.Guild.t/0","doc":"","ref":"Nostrum.Struct.Guild.html#t:t/0"},{"type":"type","title":"Nostrum.Struct.Guild.threads/0","doc":"All active threads in the guild that the current user has permission to view","ref":"Nostrum.Struct.Guild.html#t:threads/0"},{"type":"type","title":"Nostrum.Struct.Guild.unavailable/0","doc":"Whether the guild is available","ref":"Nostrum.Struct.Guild.html#t:unavailable/0"},{"type":"type","title":"Nostrum.Struct.Guild.unavailable_guild/0","doc":"A `Nostrum.Struct.Guild` that is unavailable.","ref":"Nostrum.Struct.Guild.html#t:unavailable_guild/0"},{"type":"type","title":"Nostrum.Struct.Guild.user_guild/0","doc":"A `Nostrum.Struct.Guild` that is sent on user-specific rest endpoints.","ref":"Nostrum.Struct.Guild.html#t:user_guild/0"},{"type":"type","title":"Nostrum.Struct.Guild.vanity_url_code/0","doc":"Guild invite vanity URL","ref":"Nostrum.Struct.Guild.html#t:vanity_url_code/0"},{"type":"type","title":"Nostrum.Struct.Guild.verification_level/0","doc":"The level of verification","ref":"Nostrum.Struct.Guild.html#t:verification_level/0"},{"type":"type","title":"Nostrum.Struct.Guild.voice_states/0","doc":"List of voice states as maps","ref":"Nostrum.Struct.Guild.html#t:voice_states/0"},{"type":"type","title":"Nostrum.Struct.Guild.welcome_screen/0","doc":"The welcome screen of a Community guild, shown to new members, returned in an Invite's guild object","ref":"Nostrum.Struct.Guild.html#t:welcome_screen/0"},{"type":"type","title":"Nostrum.Struct.Guild.widget_channel_id/0","doc":"The channel id for the server widget.","ref":"Nostrum.Struct.Guild.html#t:widget_channel_id/0"},{"type":"type","title":"Nostrum.Struct.Guild.widget_enabled/0","doc":"Whether or not the server widget is enabled.","ref":"Nostrum.Struct.Guild.html#t:widget_enabled/0"},{"type":"module","title":"Nostrum.Struct.Guild.AuditLog","doc":"Represents a guild's audit log.","ref":"Nostrum.Struct.Guild.AuditLog.html"},{"type":"type","title":"Nostrum.Struct.Guild.AuditLog.entries/0","doc":"Entries of this guild's audit log","ref":"Nostrum.Struct.Guild.AuditLog.html#t:entries/0"},{"type":"type","title":"Nostrum.Struct.Guild.AuditLog.t/0","doc":"","ref":"Nostrum.Struct.Guild.AuditLog.html#t:t/0"},{"type":"type","title":"Nostrum.Struct.Guild.AuditLog.users/0","doc":"Users found in the audit log","ref":"Nostrum.Struct.Guild.AuditLog.html#t:users/0"},{"type":"type","title":"Nostrum.Struct.Guild.AuditLog.webhooks/0","doc":"Webhooks found in the audit log","ref":"Nostrum.Struct.Guild.AuditLog.html#t:webhooks/0"},{"type":"module","title":"Nostrum.Struct.Guild.AuditLogEntry","doc":"Represents a single entry in the guild's audit log.","ref":"Nostrum.Struct.Guild.AuditLogEntry.html"},{"type":"type","title":"Nostrum.Struct.Guild.AuditLogEntry.action_type/0","doc":"An audit log event identifier. See [Audit log events](https://discord.com/developers/docs/resources/audit-log#audit-log-entry-object-audit-log-events)","ref":"Nostrum.Struct.Guild.AuditLogEntry.html#t:action_type/0"},{"type":"type","title":"Nostrum.Struct.Guild.AuditLogEntry.changes/0","doc":"Individual changes of this audit log entry.\nChange keys are documented [here](https://discord.com/developers/docs/resources/audit-log#audit-log-change-object-audit-log-change-key)","ref":"Nostrum.Struct.Guild.AuditLogEntry.html#t:changes/0"},{"type":"type","title":"Nostrum.Struct.Guild.AuditLogEntry.id/0","doc":"The ID of this entry","ref":"Nostrum.Struct.Guild.AuditLogEntry.html#t:id/0"},{"type":"type","title":"Nostrum.Struct.Guild.AuditLogEntry.options/0","doc":"[Optional audit entry info](https://discord.com/developers/docs/resources/audit-log#audit-log-entry-object-optional-audit-entry-info)","ref":"Nostrum.Struct.Guild.AuditLogEntry.html#t:options/0"},{"type":"type","title":"Nostrum.Struct.Guild.AuditLogEntry.reason/0","doc":"The reason for this change, if applicable","ref":"Nostrum.Struct.Guild.AuditLogEntry.html#t:reason/0"},{"type":"type","title":"Nostrum.Struct.Guild.AuditLogEntry.t/0","doc":"","ref":"Nostrum.Struct.Guild.AuditLogEntry.html#t:t/0"},{"type":"type","title":"Nostrum.Struct.Guild.AuditLogEntry.target_id/0","doc":"The ID of the affected entity","ref":"Nostrum.Struct.Guild.AuditLogEntry.html#t:target_id/0"},{"type":"type","title":"Nostrum.Struct.Guild.AuditLogEntry.user_id/0","doc":"The user who made the changes","ref":"Nostrum.Struct.Guild.AuditLogEntry.html#t:user_id/0"},{"type":"module","title":"Nostrum.Struct.Guild.Ban","doc":"Represents a guild ban.","ref":"Nostrum.Struct.Guild.Ban.html"},{"type":"type","title":"Nostrum.Struct.Guild.Ban.reason/0","doc":"The reason for the ban","ref":"Nostrum.Struct.Guild.Ban.html#t:reason/0"},{"type":"type","title":"Nostrum.Struct.Guild.Ban.t/0","doc":"","ref":"Nostrum.Struct.Guild.Ban.html#t:t/0"},{"type":"type","title":"Nostrum.Struct.Guild.Ban.user/0","doc":"The banned user","ref":"Nostrum.Struct.Guild.Ban.html#t:user/0"},{"type":"module","title":"Nostrum.Struct.Guild.Integration","doc":"Struct representing a Discord guild integration.\n\nThe struct defined here only has the fields provided for Discord Bot\nintegrations available. If you use Nostrum in a non-bot application, feel\nfree to open an issue to add it.","ref":"Nostrum.Struct.Guild.Integration.html"},{"type":"module","title":"References - Nostrum.Struct.Guild.Integration","doc":"- https://discord.com/developers/docs/resources/guild#integration-object","ref":"Nostrum.Struct.Guild.Integration.html#module-references"},{"type":"type","title":"Nostrum.Struct.Guild.Integration.account/0","doc":"The integration account.","ref":"Nostrum.Struct.Guild.Integration.html#t:account/0"},{"type":"type","title":"Nostrum.Struct.Guild.Integration.application/0","doc":"The bot/OAuth2 application for discord integrations","ref":"Nostrum.Struct.Guild.Integration.html#t:application/0"},{"type":"type","title":"Nostrum.Struct.Guild.Integration.enabled/0","doc":"Whether this integration is enabled","ref":"Nostrum.Struct.Guild.Integration.html#t:enabled/0"},{"type":"type","title":"Nostrum.Struct.Guild.Integration.guild_id/0","doc":"The id of the guild this integration is for.\n\nOnly included when the Integration is sent via the gateway.","ref":"Nostrum.Struct.Guild.Integration.html#t:guild_id/0"},{"type":"type","title":"Nostrum.Struct.Guild.Integration.id/0","doc":"Snowflake ID of the integration","ref":"Nostrum.Struct.Guild.Integration.html#t:id/0"},{"type":"type","title":"Nostrum.Struct.Guild.Integration.name/0","doc":"Name of the integration","ref":"Nostrum.Struct.Guild.Integration.html#t:name/0"},{"type":"type","title":"Nostrum.Struct.Guild.Integration.t/0","doc":"Represents a Guild integration","ref":"Nostrum.Struct.Guild.Integration.html#t:t/0"},{"type":"type","title":"Nostrum.Struct.Guild.Integration.type/0","doc":"Integration type (Twitch, YouTube or Discord)","ref":"Nostrum.Struct.Guild.Integration.html#t:type/0"},{"type":"module","title":"Nostrum.Struct.Guild.Integration.Account","doc":"Struct representing a Discord guild's integration account.","ref":"Nostrum.Struct.Guild.Integration.Account.html"},{"type":"type","title":"Nostrum.Struct.Guild.Integration.Account.id/0","doc":"The id of the account","ref":"Nostrum.Struct.Guild.Integration.Account.html#t:id/0"},{"type":"type","title":"Nostrum.Struct.Guild.Integration.Account.name/0","doc":"The name of the account","ref":"Nostrum.Struct.Guild.Integration.Account.html#t:name/0"},{"type":"type","title":"Nostrum.Struct.Guild.Integration.Account.t/0","doc":"","ref":"Nostrum.Struct.Guild.Integration.Account.html#t:t/0"},{"type":"module","title":"Nostrum.Struct.Guild.Integration.Application","doc":"Struct representing a Discord Guild Integration Application.","ref":"Nostrum.Struct.Guild.Integration.Application.html"},{"type":"type","title":"Nostrum.Struct.Guild.Integration.Application.bot/0","doc":"The bot associated with the application.","ref":"Nostrum.Struct.Guild.Integration.Application.html#t:bot/0"},{"type":"type","title":"Nostrum.Struct.Guild.Integration.Application.description/0","doc":"The description of the application.","ref":"Nostrum.Struct.Guild.Integration.Application.html#t:description/0"},{"type":"type","title":"Nostrum.Struct.Guild.Integration.Application.icon/0","doc":"The icon hash of the application.","ref":"Nostrum.Struct.Guild.Integration.Application.html#t:icon/0"},{"type":"type","title":"Nostrum.Struct.Guild.Integration.Application.id/0","doc":"The id of the application.","ref":"Nostrum.Struct.Guild.Integration.Application.html#t:id/0"},{"type":"type","title":"Nostrum.Struct.Guild.Integration.Application.name/0","doc":"The name of the application.","ref":"Nostrum.Struct.Guild.Integration.Application.html#t:name/0"},{"type":"type","title":"Nostrum.Struct.Guild.Integration.Application.summary/0","doc":"The summary of the application.","ref":"Nostrum.Struct.Guild.Integration.Application.html#t:summary/0"},{"type":"type","title":"Nostrum.Struct.Guild.Integration.Application.t/0","doc":"","ref":"Nostrum.Struct.Guild.Integration.Application.html#t:t/0"},{"type":"module","title":"Nostrum.Struct.Guild.Member","doc":"Struct representing a Discord guild member.\n\nA `Nostrum.Struct.Guild.Member` stores a `Nostrum.Struct.User`'s properties\npertaining to a specific `Nostrum.Struct.Guild`.","ref":"Nostrum.Struct.Guild.Member.html"},{"type":"module","title":"Mentioning Members in Messages - Nostrum.Struct.Guild.Member","doc":"A `Nostrum.Struct.Guild.Member` can be mentioned in message content using the `String.Chars`\nprotocol or `mention/1`.\n\n```elixir\nmember = %Nostrum.Struct.Guild.Member{user_id: 120571255635181568}\nNostrum.Api.create_message!(184046599834435585, \"#{member}\")\n%Nostrum.Struct.Message{content: \"<@120571255635181568>\"}\n\nmember = %Nostrum.Struct.Guild.Member{user_id: 89918932789497856}\nNostrum.Api.create_message!(280085880452939778, \"#{Nostrum.Struct.Guild.Member.mention(member)}\")\n%Nostrum.Struct.Message{content: \"<@89918932789497856>\"}\n```","ref":"Nostrum.Struct.Guild.Member.html#module-mentioning-members-in-messages"},{"type":"function","title":"Nostrum.Struct.Guild.Member.avatar_url/3","doc":"Returns a guild-specific avatar URL for a `Nostrum.Struct.Guild.Member`.\n\nSupported formats are `png` (default), `jpg`, `webp` and `gif`.\n\nAs mentioned in the avatar hash typedoc, if the avatar hash begins with `a_`, the\navatar is animated and can be returned as a gif.","ref":"Nostrum.Struct.Guild.Member.html#avatar_url/3"},{"type":"function","title":"Examples - Nostrum.Struct.Guild.Member.avatar_url/3","doc":"```elixir\niex> member = %Nostrum.Struct.Guild.Member{\n...> user_id: 165023948638126080,\n...> avatar: \"4c8319db8ea745275a1399f8f8aa74ab\"\n...> }\niex> guild_id = 1226944827137069107\niex> Nostrum.Struct.Guild.Member.avatar_url(member, guild_id)\n\"https://cdn.discordapp.com/guilds/1226944827137069107/users/165023948638126080/avatars/4c8319db8ea745275a1399f8f8aa74ab.png\"\n```","ref":"Nostrum.Struct.Guild.Member.html#avatar_url/3-examples"},{"type":"function","title":"Nostrum.Struct.Guild.Member.guild_channel_permissions/3","doc":"Returns a member's permissions in a guild channel, based on its `Nostrum.Struct.Overwrite`s.","ref":"Nostrum.Struct.Guild.Member.html#guild_channel_permissions/3"},{"type":"function","title":"Examples - Nostrum.Struct.Guild.Member.guild_channel_permissions/3","doc":"```elixir\nguild = Nostrum.Cache.GuildCache.get!(279093381723062272)\nmember = Map.get(guild.members, 177888205536886784)\nchannel_id = 381889573426429952\nNostrum.Struct.Guild.Member.guild_channel_permissions(member, guild, channel_id)\n#=> [:manage_messages]\n```","ref":"Nostrum.Struct.Guild.Member.html#guild_channel_permissions/3-examples"},{"type":"function","title":"Nostrum.Struct.Guild.Member.guild_permissions/2","doc":"Returns a member's guild permissions.","ref":"Nostrum.Struct.Guild.Member.html#guild_permissions/2"},{"type":"function","title":"Examples - Nostrum.Struct.Guild.Member.guild_permissions/2","doc":"```elixir\nguild = Nostrum.Cache.GuildCache.get!(279093381723062272)\nmember = Map.get(guild.members, 177888205536886784)\nNostrum.Struct.Guild.Member.guild_permissions(member, guild)\n#=> [:administrator]\n```","ref":"Nostrum.Struct.Guild.Member.html#guild_permissions/2-examples"},{"type":"function","title":"Nostrum.Struct.Guild.Member.mention/1","doc":"Formats a `Nostrum.Struct.Guild.Member` into a mention.","ref":"Nostrum.Struct.Guild.Member.html#mention/1"},{"type":"function","title":"Examples - Nostrum.Struct.Guild.Member.mention/1","doc":"```elixir\niex> member = %Nostrum.Struct.Guild.Member{user_id: 177888205536886784}\n...> Nostrum.Struct.Guild.Member.mention(member)\n\"<@177888205536886784>\"\n```","ref":"Nostrum.Struct.Guild.Member.html#mention/1-examples"},{"type":"function","title":"Nostrum.Struct.Guild.Member.top_role/2","doc":"Return the topmost role of the given member on the given guild.\n\nThe topmost role is determined via `t:Nostrum.Struct.Guild.Role.position`.","ref":"Nostrum.Struct.Guild.Member.html#top_role/2"},{"type":"function","title":"Parameters - Nostrum.Struct.Guild.Member.top_role/2","doc":"- `member`: The member whose top role to return.\n- `guild`: The guild which the member belongs to.","ref":"Nostrum.Struct.Guild.Member.html#top_role/2-parameters"},{"type":"function","title":"Return value - Nostrum.Struct.Guild.Member.top_role/2","doc":"The topmost role of the member on the given guild, if the member has roles\nassigned. Otherwise, `nil` is returned.","ref":"Nostrum.Struct.Guild.Member.html#top_role/2-return-value"},{"type":"type","title":"Nostrum.Struct.Guild.Member.avatar/0","doc":"Avatar hash of the custom avatar set by the user in the guild.\n\nIf animated, this is prefixed with `a_`.\n\nYou can use `avatar_url/3` to fetch a full-formed URL of this asset.","ref":"Nostrum.Struct.Guild.Member.html#t:avatar/0"},{"type":"type","title":"Nostrum.Struct.Guild.Member.communication_disabled_until/0","doc":"Current timeout status of the member.\n\nIf member is currently timed out this will be a `t:DateTime.t/0` of the\nunmute time, it will be `nil` or a date in the past if the member is not\ncurrently timed out.","ref":"Nostrum.Struct.Guild.Member.html#t:communication_disabled_until/0"},{"type":"type","title":"Nostrum.Struct.Guild.Member.deaf/0","doc":"Whether the member is deafened.\nIf you dont request offline guild members this field will be `nil` for any members that come online.","ref":"Nostrum.Struct.Guild.Member.html#t:deaf/0"},{"type":"type","title":"Nostrum.Struct.Guild.Member.flags/0","doc":"Guild member flags represented as a bitset.\n\nLook at the `Nostrum.Struct.Guild.Member.Flags` module for guidance parsing this value.","ref":"Nostrum.Struct.Guild.Member.html#t:flags/0"},{"type":"type","title":"Nostrum.Struct.Guild.Member.joined_at/0","doc":"Date the member joined the guild, as a unix timestamp.\nIf you dont request offline guild members this field will be `nil` for any members that come online.","ref":"Nostrum.Struct.Guild.Member.html#t:joined_at/0"},{"type":"type","title":"Nostrum.Struct.Guild.Member.mute/0","doc":"Whether the member is muted.\nIf you dont request offline guild members this field will be `nil` for any members that come online.","ref":"Nostrum.Struct.Guild.Member.html#t:mute/0"},{"type":"type","title":"Nostrum.Struct.Guild.Member.nick/0","doc":"The nickname of the member","ref":"Nostrum.Struct.Guild.Member.html#t:nick/0"},{"type":"type","title":"Nostrum.Struct.Guild.Member.pending/0","doc":"Current guild member gate status. `false` if user has yet to pass the membership screening\nconfiguration for the guild, `true` if the member has passed.","ref":"Nostrum.Struct.Guild.Member.html#t:pending/0"},{"type":"type","title":"Nostrum.Struct.Guild.Member.premium_since/0","doc":"Current guild booster status of the member.\n\nIf member is currently boosting a guild this will be a `t:DateTime.t/0` since\nthe start of the boosting, it will be `nil` if the member is not currently\nboosting the guild.","ref":"Nostrum.Struct.Guild.Member.html#t:premium_since/0"},{"type":"type","title":"Nostrum.Struct.Guild.Member.roles/0","doc":"A list of role ids","ref":"Nostrum.Struct.Guild.Member.html#t:roles/0"},{"type":"type","title":"Nostrum.Struct.Guild.Member.t/0","doc":"","ref":"Nostrum.Struct.Guild.Member.html#t:t/0"},{"type":"type","title":"Nostrum.Struct.Guild.Member.user_id/0","doc":"The user ID.\n\nThis field can be `nil` if the Member struct came as a partial Member object\nincluded in a message received from a guild channel. To retrieve the user\nobject, use `Nostrum.Cache.UserCache`.","ref":"Nostrum.Struct.Guild.Member.html#t:user_id/0"},{"type":"module","title":"Nostrum.Struct.Guild.Member.Flags","doc":"Struct representing the flags a guild member can have.","ref":"Nostrum.Struct.Guild.Member.Flags.html"},{"type":"function","title":"Nostrum.Struct.Guild.Member.Flags.from_integer/1","doc":"Constructs a flag struct based on an integer from the Discord API, normally from `t:Nostrum.Struct.Guild.Member.flags/0`.","ref":"Nostrum.Struct.Guild.Member.Flags.html#from_integer/1"},{"type":"function","title":"Examples - Nostrum.Struct.Guild.Member.Flags.from_integer/1","doc":"```elixir\niex> Nostrum.Struct.Guild.Member.Flags.from_integer(9)\n%Nostrum.Struct.Guild.Member.Flags{\n did_rejoin: true,\n completed_onboarding: false,\n bypasses_verification: false,\n started_onboarding: true\n}\n```","ref":"Nostrum.Struct.Guild.Member.Flags.html#from_integer/1-examples"},{"type":"function","title":"Nostrum.Struct.Guild.Member.Flags.to_integer/1","doc":"Convert a flag struct to an integer value.","ref":"Nostrum.Struct.Guild.Member.Flags.html#to_integer/1"},{"type":"function","title":"Examples - Nostrum.Struct.Guild.Member.Flags.to_integer/1","doc":"```elixir\niex> my_flags = %Nostrum.Struct.Guild.Member.Flags{\n...> did_rejoin: true,\n...> completed_onboarding: false,\n...> bypasses_verification: false,\n...> started_onboarding: true\n...> }\niex> Nostrum.Struct.Guild.Member.Flags.to_integer(my_flags)\n9\n```","ref":"Nostrum.Struct.Guild.Member.Flags.html#to_integer/1-examples"},{"type":"type","title":"Nostrum.Struct.Guild.Member.Flags.bypasses_verification/0","doc":"Member is exempt from guild verification requirements","ref":"Nostrum.Struct.Guild.Member.Flags.html#t:bypasses_verification/0"},{"type":"type","title":"Nostrum.Struct.Guild.Member.Flags.completed_onboarding/0","doc":"Member has completed onboarding","ref":"Nostrum.Struct.Guild.Member.Flags.html#t:completed_onboarding/0"},{"type":"type","title":"Nostrum.Struct.Guild.Member.Flags.did_rejoin/0","doc":"Member has left and rejoined the guild","ref":"Nostrum.Struct.Guild.Member.Flags.html#t:did_rejoin/0"},{"type":"type","title":"Nostrum.Struct.Guild.Member.Flags.flags/0","doc":"","ref":"Nostrum.Struct.Guild.Member.Flags.html#t:flags/0"},{"type":"type","title":"Nostrum.Struct.Guild.Member.Flags.started_onboarding/0","doc":"Member has started onboarding","ref":"Nostrum.Struct.Guild.Member.Flags.html#t:started_onboarding/0"},{"type":"type","title":"Nostrum.Struct.Guild.Member.Flags.t/0","doc":"","ref":"Nostrum.Struct.Guild.Member.Flags.html#t:t/0"},{"type":"module","title":"Nostrum.Struct.Guild.Role","doc":"Struct representing a Discord role.","ref":"Nostrum.Struct.Guild.Role.html"},{"type":"module","title":"Mentioning Roles in Messages - Nostrum.Struct.Guild.Role","doc":"A `Nostrum.Struct.Guild.Role` can be mentioned in message content using the `String.Chars`\nprotocol or `mention/1`.\n\n```elixir\nrole = %Nostrum.Struct.Guild.Role{id: 431886897539973131}\nNostrum.Api.create_message!(184046599834435585, \"#{role}\")\n%Nostrum.Struct.Message{}\n\nrole = %Nostrum.Struct.Guild.Role{id: 431884023535632398}\nNostrum.Api.create_message!(280085880452939778, \"#{Nostrum.Struct.Guild.Role.mention(role)}\")\n%Nostrum.Struct.Message{}\n```","ref":"Nostrum.Struct.Guild.Role.html#module-mentioning-roles-in-messages"},{"type":"function","title":"Nostrum.Struct.Guild.Role.mention/1","doc":"Formats an `Nostrum.Struct.Role` into a mention.","ref":"Nostrum.Struct.Guild.Role.html#mention/1"},{"type":"function","title":"Examples - Nostrum.Struct.Guild.Role.mention/1","doc":"```elixir\niex> role = %Nostrum.Struct.Guild.Role{id: 431886639627763722}\n...> Nostrum.Struct.Guild.Role.mention(role)\n\"<@&431886639627763722>\"\n```","ref":"Nostrum.Struct.Guild.Role.html#mention/1-examples"},{"type":"type","title":"Nostrum.Struct.Guild.Role.color/0","doc":"The hexadecimal color code","ref":"Nostrum.Struct.Guild.Role.html#t:color/0"},{"type":"type","title":"Nostrum.Struct.Guild.Role.hoist/0","doc":"Whether the role is pinned in the user listing","ref":"Nostrum.Struct.Guild.Role.html#t:hoist/0"},{"type":"type","title":"Nostrum.Struct.Guild.Role.icon/0","doc":"The hash of the role icon","ref":"Nostrum.Struct.Guild.Role.html#t:icon/0"},{"type":"type","title":"Nostrum.Struct.Guild.Role.id/0","doc":"The id of the role","ref":"Nostrum.Struct.Guild.Role.html#t:id/0"},{"type":"type","title":"Nostrum.Struct.Guild.Role.managed/0","doc":"Whether the role is managed by an integration","ref":"Nostrum.Struct.Guild.Role.html#t:managed/0"},{"type":"type","title":"Nostrum.Struct.Guild.Role.mentionable/0","doc":"Whether the role is mentionable","ref":"Nostrum.Struct.Guild.Role.html#t:mentionable/0"},{"type":"type","title":"Nostrum.Struct.Guild.Role.name/0","doc":"The name of the role","ref":"Nostrum.Struct.Guild.Role.html#t:name/0"},{"type":"type","title":"Nostrum.Struct.Guild.Role.permissions/0","doc":"The permission bit set","ref":"Nostrum.Struct.Guild.Role.html#t:permissions/0"},{"type":"type","title":"Nostrum.Struct.Guild.Role.position/0","doc":"The position of the role","ref":"Nostrum.Struct.Guild.Role.html#t:position/0"},{"type":"type","title":"Nostrum.Struct.Guild.Role.t/0","doc":"","ref":"Nostrum.Struct.Guild.Role.html#t:t/0"},{"type":"type","title":"Nostrum.Struct.Guild.Role.unicode_emoji/0","doc":"The standard unicode character emoji icon for the role","ref":"Nostrum.Struct.Guild.Role.html#t:unicode_emoji/0"},{"type":"module","title":"Nostrum.Struct.Guild.ScheduledEvent","doc":"Struct representing a scheduled event in a guild.","ref":"Nostrum.Struct.Guild.ScheduledEvent.html"},{"type":"function","title":"Nostrum.Struct.Guild.ScheduledEvent.to_struct/1","doc":"","ref":"Nostrum.Struct.Guild.ScheduledEvent.html#to_struct/1"},{"type":"type","title":"Nostrum.Struct.Guild.ScheduledEvent.channel_id/0","doc":"The id of the channel the scheduled event is in.\nWill be `nil` if `entity_type` is `EXTERNAL`","ref":"Nostrum.Struct.Guild.ScheduledEvent.html#t:channel_id/0"},{"type":"type","title":"Nostrum.Struct.Guild.ScheduledEvent.creator/0","doc":"The user who created the scheduled event. Only present when retrieving the event from the API.\n\nnote: This will be `nil` for events created before October 25th, 2021.","ref":"Nostrum.Struct.Guild.ScheduledEvent.html#t:creator/0"},{"type":"type","title":"Nostrum.Struct.Guild.ScheduledEvent.creator_id/0","doc":"The id of the user who created the scheduled event.\n\nnote: This will be `nil` only for events created before October 25th, 2021.","ref":"Nostrum.Struct.Guild.ScheduledEvent.html#t:creator_id/0"},{"type":"type","title":"Nostrum.Struct.Guild.ScheduledEvent.description/0","doc":"The description of the scheduled event.","ref":"Nostrum.Struct.Guild.ScheduledEvent.html#t:description/0"},{"type":"type","title":"Nostrum.Struct.Guild.ScheduledEvent.entity_id/0","doc":"the id of an entity associated with a guild scheduled event.","ref":"Nostrum.Struct.Guild.ScheduledEvent.html#t:entity_id/0"},{"type":"type","title":"Nostrum.Struct.Guild.ScheduledEvent.entity_metadata/0","doc":"Holds additional metadata associated with a scheduled event.","ref":"Nostrum.Struct.Guild.ScheduledEvent.html#t:entity_metadata/0"},{"type":"type","title":"Nostrum.Struct.Guild.ScheduledEvent.entity_type/0","doc":"The type of entity the scheduled event is for.\n\n`1` - `STAGE_INSTANCE`\n`2` - `VOICE`\n`3` - `EXTERNAL`","ref":"Nostrum.Struct.Guild.ScheduledEvent.html#t:entity_type/0"},{"type":"type","title":"Nostrum.Struct.Guild.ScheduledEvent.guild_id/0","doc":"The id of the guild the scheduled event is in.","ref":"Nostrum.Struct.Guild.ScheduledEvent.html#t:guild_id/0"},{"type":"type","title":"Nostrum.Struct.Guild.ScheduledEvent.id/0","doc":"The id of the scheduled event.","ref":"Nostrum.Struct.Guild.ScheduledEvent.html#t:id/0"},{"type":"type","title":"Nostrum.Struct.Guild.ScheduledEvent.name/0","doc":"The name of the scheduled event.","ref":"Nostrum.Struct.Guild.ScheduledEvent.html#t:name/0"},{"type":"type","title":"Nostrum.Struct.Guild.ScheduledEvent.privacy_level/0","doc":"The privacy level of the scheduled event.\nAt the time of writing, this is always `2` for `GUILD_ONLY`","ref":"Nostrum.Struct.Guild.ScheduledEvent.html#t:privacy_level/0"},{"type":"type","title":"Nostrum.Struct.Guild.ScheduledEvent.scheduled_end_time/0","doc":"The time the scheduled event ends as an ISO8601 timestamp.\nOnly required if `entity_type` is `EXTERNAL`","ref":"Nostrum.Struct.Guild.ScheduledEvent.html#t:scheduled_end_time/0"},{"type":"type","title":"Nostrum.Struct.Guild.ScheduledEvent.scheduled_start_time/0","doc":"The time the scheduled event starts.","ref":"Nostrum.Struct.Guild.ScheduledEvent.html#t:scheduled_start_time/0"},{"type":"type","title":"Nostrum.Struct.Guild.ScheduledEvent.status/0","doc":"The status of the scheduled event.\n\n`1` - `SCHEDULED`\n`2` - `ACTIVE`\n`3` - `COMPLETED`\n`4` - `CANCELLED`\n\nnote: Once status is set to Completed or Cancelled it can no longer be updated.","ref":"Nostrum.Struct.Guild.ScheduledEvent.html#t:status/0"},{"type":"type","title":"Nostrum.Struct.Guild.ScheduledEvent.t/0","doc":"","ref":"Nostrum.Struct.Guild.ScheduledEvent.html#t:t/0"},{"type":"type","title":"Nostrum.Struct.Guild.ScheduledEvent.user_count/0","doc":"The number of users who have subscribed to the scheduled event.","ref":"Nostrum.Struct.Guild.ScheduledEvent.html#t:user_count/0"},{"type":"module","title":"Nostrum.Struct.Guild.ScheduledEvent.EntityMetadata","doc":"Struct representing any additional metadata associated with a Guild Event.","ref":"Nostrum.Struct.Guild.ScheduledEvent.EntityMetadata.html"},{"type":"type","title":"Nostrum.Struct.Guild.ScheduledEvent.EntityMetadata.location/0","doc":"The location of the event, 1-100 characters.\n\nRequired for events with `entity_type` of `EXTERNAL`.","ref":"Nostrum.Struct.Guild.ScheduledEvent.EntityMetadata.html#t:location/0"},{"type":"type","title":"Nostrum.Struct.Guild.ScheduledEvent.EntityMetadata.t/0","doc":"","ref":"Nostrum.Struct.Guild.ScheduledEvent.EntityMetadata.html#t:t/0"},{"type":"module","title":"Nostrum.Struct.Guild.ScheduledEvent.User","doc":"Struct representing a user in a guild's scheduled event.","ref":"Nostrum.Struct.Guild.ScheduledEvent.User.html"},{"type":"function","title":"Nostrum.Struct.Guild.ScheduledEvent.User.to_struct/1","doc":"","ref":"Nostrum.Struct.Guild.ScheduledEvent.User.html#to_struct/1"},{"type":"type","title":"Nostrum.Struct.Guild.ScheduledEvent.User.event_id/0","doc":"The ID of the guild scheduled event.","ref":"Nostrum.Struct.Guild.ScheduledEvent.User.html#t:event_id/0"},{"type":"type","title":"Nostrum.Struct.Guild.ScheduledEvent.User.member/0","doc":"The guild member for the event","ref":"Nostrum.Struct.Guild.ScheduledEvent.User.html#t:member/0"},{"type":"type","title":"Nostrum.Struct.Guild.ScheduledEvent.User.t/0","doc":"","ref":"Nostrum.Struct.Guild.ScheduledEvent.User.html#t:t/0"},{"type":"type","title":"Nostrum.Struct.Guild.ScheduledEvent.User.user/0","doc":"The user which is subscribed to the event.","ref":"Nostrum.Struct.Guild.ScheduledEvent.User.html#t:user/0"},{"type":"module","title":"Nostrum.Struct.Guild.SystemChannelFlags","doc":"Struct representing the flags on a guild's system channel","ref":"Nostrum.Struct.Guild.SystemChannelFlags.html"},{"type":"function","title":"Nostrum.Struct.Guild.SystemChannelFlags.from_integer/1","doc":"Constructs a flag struct based on an integer from the Discord API, normally from `t:Nostrum.Struct.Guild.Member.flags/0`.","ref":"Nostrum.Struct.Guild.SystemChannelFlags.html#from_integer/1"},{"type":"function","title":"Examples - Nostrum.Struct.Guild.SystemChannelFlags.from_integer/1","doc":"```elixir\niex> Nostrum.Struct.Guild.SystemChannelFlags.from_integer(3)\n%Nostrum.Struct.Guild.SystemChannelFlags{\n suppress_guild_reminder_notifications: false,\n suppress_join_notification_replies: false,\n suppress_join_notifications: true,\n suppress_premium_subscriptions: true,\n suppress_role_subscription_purchase_notification_replies: false,\n suppress_role_subscription_purchase_notifications: false\n}\n```","ref":"Nostrum.Struct.Guild.SystemChannelFlags.html#from_integer/1-examples"},{"type":"function","title":"Nostrum.Struct.Guild.SystemChannelFlags.to_integer/1","doc":"Convert a flag struct to an integer value.","ref":"Nostrum.Struct.Guild.SystemChannelFlags.html#to_integer/1"},{"type":"function","title":"Examples - Nostrum.Struct.Guild.SystemChannelFlags.to_integer/1","doc":"```elixir\niex> my_flags = %Nostrum.Struct.Guild.SystemChannelFlags{\n...> suppress_join_notifications: true,\n...> suppress_join_notification_replies: true\n...> }\niex> Nostrum.Struct.Guild.SystemChannelFlags.to_integer(my_flags)\n9\n```","ref":"Nostrum.Struct.Guild.SystemChannelFlags.html#to_integer/1-examples"},{"type":"type","title":"Nostrum.Struct.Guild.SystemChannelFlags.flags/0","doc":"","ref":"Nostrum.Struct.Guild.SystemChannelFlags.html#t:flags/0"},{"type":"type","title":"Nostrum.Struct.Guild.SystemChannelFlags.suppress_guild_reminder_notifications/0","doc":"Suppress server setup tips","ref":"Nostrum.Struct.Guild.SystemChannelFlags.html#t:suppress_guild_reminder_notifications/0"},{"type":"type","title":"Nostrum.Struct.Guild.SystemChannelFlags.suppress_join_notification_replies/0","doc":"Hide member join sticker reply buttons","ref":"Nostrum.Struct.Guild.SystemChannelFlags.html#t:suppress_join_notification_replies/0"},{"type":"type","title":"Nostrum.Struct.Guild.SystemChannelFlags.suppress_join_notifications/0","doc":"Suppress member join notifications","ref":"Nostrum.Struct.Guild.SystemChannelFlags.html#t:suppress_join_notifications/0"},{"type":"type","title":"Nostrum.Struct.Guild.SystemChannelFlags.suppress_premium_subscriptions/0","doc":"Suppress server boost notifications","ref":"Nostrum.Struct.Guild.SystemChannelFlags.html#t:suppress_premium_subscriptions/0"},{"type":"type","title":"Nostrum.Struct.Guild.SystemChannelFlags.suppress_role_subscription_purchase_notifications/0","doc":"Suppress role subscription purchase and renewal notifications","ref":"Nostrum.Struct.Guild.SystemChannelFlags.html#t:suppress_role_subscription_purchase_notifications/0"},{"type":"type","title":"Nostrum.Struct.Guild.SystemChannelFlags.suppress_role_subscription_purchase_notifications_replies/0","doc":"Hide role subscription sticker reply buttons","ref":"Nostrum.Struct.Guild.SystemChannelFlags.html#t:suppress_role_subscription_purchase_notifications_replies/0"},{"type":"type","title":"Nostrum.Struct.Guild.SystemChannelFlags.t/0","doc":"","ref":"Nostrum.Struct.Guild.SystemChannelFlags.html#t:t/0"},{"type":"module","title":"Nostrum.Struct.Guild.UnavailableGuild","doc":"Struct representing an unavailable Discord guild.","ref":"Nostrum.Struct.Guild.UnavailableGuild.html"},{"type":"function","title":"Nostrum.Struct.Guild.UnavailableGuild.to_struct/1","doc":"","ref":"Nostrum.Struct.Guild.UnavailableGuild.html#to_struct/1"},{"type":"type","title":"Nostrum.Struct.Guild.UnavailableGuild.id/0","doc":"The guild's id","ref":"Nostrum.Struct.Guild.UnavailableGuild.html#t:id/0"},{"type":"type","title":"Nostrum.Struct.Guild.UnavailableGuild.t/0","doc":"","ref":"Nostrum.Struct.Guild.UnavailableGuild.html#t:t/0"},{"type":"type","title":"Nostrum.Struct.Guild.UnavailableGuild.unavailable/0","doc":"Whether the guild is available","ref":"Nostrum.Struct.Guild.UnavailableGuild.html#t:unavailable/0"},{"type":"module","title":"Nostrum.Struct.Interaction","doc":"Application command and Component invocation struct.","ref":"Nostrum.Struct.Interaction.html"},{"type":"type","title":"Nostrum.Struct.Interaction.application_id/0","doc":"ID of the application that this interaction is for\n\nWill be `nil` if the interaction was part of a message struct.","ref":"Nostrum.Struct.Interaction.html#t:application_id/0"},{"type":"type","title":"Nostrum.Struct.Interaction.channel/0","doc":"PartialChannel object for the channel where the command was invoked\n\nAt the time of writing, only the fields `:type` and `:id` are guaranteed to be present.","ref":"Nostrum.Struct.Interaction.html#t:channel/0"},{"type":"type","title":"Nostrum.Struct.Interaction.channel_id/0","doc":"ID of the channel where the command was invoked","ref":"Nostrum.Struct.Interaction.html#t:channel_id/0"},{"type":"type","title":"Nostrum.Struct.Interaction.data/0","doc":"Invocation data.\n\nOnly present for *ApplicationCommand* and *MessageComponent* interactions, that is, `type=2` or `type=3`.","ref":"Nostrum.Struct.Interaction.html#t:data/0"},{"type":"type","title":"Nostrum.Struct.Interaction.guild_id/0","doc":"ID of the guild where the command was invoked","ref":"Nostrum.Struct.Interaction.html#t:guild_id/0"},{"type":"type","title":"Nostrum.Struct.Interaction.guild_locale/0","doc":"The guild's preferred locale, if invoked in a guild.","ref":"Nostrum.Struct.Interaction.html#t:guild_locale/0"},{"type":"type","title":"Nostrum.Struct.Interaction.id/0","doc":"Interaction identifier","ref":"Nostrum.Struct.Interaction.html#t:id/0"},{"type":"type","title":"Nostrum.Struct.Interaction.locale/0","doc":"The selected langauge of the invoking user.\n\nAvailable on all interaction types except for *PING*","ref":"Nostrum.Struct.Interaction.html#t:locale/0"},{"type":"type","title":"Nostrum.Struct.Interaction.member/0","doc":"Member information about the invoker, if invoked on a guild","ref":"Nostrum.Struct.Interaction.html#t:member/0"},{"type":"type","title":"Nostrum.Struct.Interaction.message/0","doc":"For components, the message they were attached to","ref":"Nostrum.Struct.Interaction.html#t:message/0"},{"type":"type","title":"Nostrum.Struct.Interaction.t/0","doc":"A command invocation for Application Commands or Components.\n\nOfficial reference:\nhttps://discord.com/developers/docs/interactions/application-commands","ref":"Nostrum.Struct.Interaction.html#t:t/0"},{"type":"type","title":"Nostrum.Struct.Interaction.token/0","doc":"Continuation token for responses\n\nWill be `nil` if this interaction is part of a message struct.","ref":"Nostrum.Struct.Interaction.html#t:token/0"},{"type":"type","title":"Nostrum.Struct.Interaction.type/0","doc":"Interaction kind.\n\n- `1` for *Ping*\n- `2` for *ApplicationCommand*\n- `3` for *MessageComponent*\n- `4` for *ApplicationCommandAutocomplete*\n- `5` for *ModalSubmit*","ref":"Nostrum.Struct.Interaction.html#t:type/0"},{"type":"type","title":"Nostrum.Struct.Interaction.user/0","doc":"User object for the invoking user, will be a copy of `member.user` if invoked in a guild","ref":"Nostrum.Struct.Interaction.html#t:user/0"},{"type":"type","title":"Nostrum.Struct.Interaction.version/0","doc":"Version identifier, always `1`\n\nWill be `nil` if this interaction is part of a message struct.","ref":"Nostrum.Struct.Interaction.html#t:version/0"},{"type":"module","title":"Nostrum.Struct.Invite","doc":"Struct representing a Discord invite.","ref":"Nostrum.Struct.Invite.html"},{"type":"type","title":"Nostrum.Struct.Invite.approximate_member_count/0","doc":"Approximate total member count of the guild this invite is for.","ref":"Nostrum.Struct.Invite.html#t:approximate_member_count/0"},{"type":"type","title":"Nostrum.Struct.Invite.approximate_presence_count/0","doc":"Approximate online member count of the guild this invite is for.","ref":"Nostrum.Struct.Invite.html#t:approximate_presence_count/0"},{"type":"type","title":"Nostrum.Struct.Invite.channel/0","doc":"The channel this invite is for.","ref":"Nostrum.Struct.Invite.html#t:channel/0"},{"type":"type","title":"Nostrum.Struct.Invite.code/0","doc":"The invite code (unique ID).","ref":"Nostrum.Struct.Invite.html#t:code/0"},{"type":"type","title":"Nostrum.Struct.Invite.created_at/0","doc":"When this invite was created.","ref":"Nostrum.Struct.Invite.html#t:created_at/0"},{"type":"type","title":"Nostrum.Struct.Invite.detailed_invite/0","doc":"An invite with metadata.","ref":"Nostrum.Struct.Invite.html#t:detailed_invite/0"},{"type":"type","title":"Nostrum.Struct.Invite.guild/0","doc":"Partially populated guild struct of the guild this invite is for.","ref":"Nostrum.Struct.Invite.html#t:guild/0"},{"type":"type","title":"Nostrum.Struct.Invite.inviter/0","doc":"The user who created this invite.","ref":"Nostrum.Struct.Invite.html#t:inviter/0"},{"type":"type","title":"Nostrum.Struct.Invite.max_age/0","doc":"Duration (in seconds) after which the invite expires.","ref":"Nostrum.Struct.Invite.html#t:max_age/0"},{"type":"type","title":"Nostrum.Struct.Invite.max_uses/0","doc":"Max number of times this invite can be used.","ref":"Nostrum.Struct.Invite.html#t:max_uses/0"},{"type":"type","title":"Nostrum.Struct.Invite.simple_invite/0","doc":"An invite without metadata.","ref":"Nostrum.Struct.Invite.html#t:simple_invite/0"},{"type":"type","title":"Nostrum.Struct.Invite.t/0","doc":"","ref":"Nostrum.Struct.Invite.html#t:t/0"},{"type":"type","title":"Nostrum.Struct.Invite.target_user/0","doc":"Partially populated user struct of the target user for this invite.","ref":"Nostrum.Struct.Invite.html#t:target_user/0"},{"type":"type","title":"Nostrum.Struct.Invite.target_user_type/0","doc":"The type of user target for this invite.","ref":"Nostrum.Struct.Invite.html#t:target_user_type/0"},{"type":"type","title":"Nostrum.Struct.Invite.temporary/0","doc":"Whether this invite only grants temporary membership.","ref":"Nostrum.Struct.Invite.html#t:temporary/0"},{"type":"type","title":"Nostrum.Struct.Invite.uses/0","doc":"Number of times this invite has been used.","ref":"Nostrum.Struct.Invite.html#t:uses/0"},{"type":"module","title":"Nostrum.Struct.Message","doc":"A `Nostrum.Struct.Message` represents a message.\n\nMore information can be found on the\n[Discord API Message Object Documentation](https://discord.com/developers/docs/resources/channel#message-object).","ref":"Nostrum.Struct.Message.html"},{"type":"function","title":"Nostrum.Struct.Message.to_url/1","doc":"Takes the message and produces a URL that, when clicked from the user client, will\njump them to that message, assuming they have access to the message and the message\nis valid.","ref":"Nostrum.Struct.Message.html#to_url/1"},{"type":"type","title":"Nostrum.Struct.Message.activity/0","doc":"The activity of the message. Sent with Rich Presence-related chat embeds","ref":"Nostrum.Struct.Message.html#t:activity/0"},{"type":"type","title":"Nostrum.Struct.Message.application/0","doc":"The application of the message. Sent with Rich Presence-related chat embeds","ref":"Nostrum.Struct.Message.html#t:application/0"},{"type":"type","title":"Nostrum.Struct.Message.application_id/0","doc":"if the message is a response to an interaction, this is the ID of the interaction's application","ref":"Nostrum.Struct.Message.html#t:application_id/0"},{"type":"type","title":"Nostrum.Struct.Message.attachments/0","doc":"List of attached files in the message","ref":"Nostrum.Struct.Message.html#t:attachments/0"},{"type":"type","title":"Nostrum.Struct.Message.author/0","doc":"The user struct of the author","ref":"Nostrum.Struct.Message.html#t:author/0"},{"type":"type","title":"Nostrum.Struct.Message.channel_id/0","doc":"The id of the channel","ref":"Nostrum.Struct.Message.html#t:channel_id/0"},{"type":"type","title":"Nostrum.Struct.Message.components/0","doc":"List of Message Components","ref":"Nostrum.Struct.Message.html#t:components/0"},{"type":"type","title":"Nostrum.Struct.Message.content/0","doc":"The content of the message","ref":"Nostrum.Struct.Message.html#t:content/0"},{"type":"type","title":"Nostrum.Struct.Message.edited_timestamp/0","doc":"When the message was edited","ref":"Nostrum.Struct.Message.html#t:edited_timestamp/0"},{"type":"type","title":"Nostrum.Struct.Message.embeds/0","doc":"List of embedded content in the message","ref":"Nostrum.Struct.Message.html#t:embeds/0"},{"type":"type","title":"Nostrum.Struct.Message.guild_id/0","doc":"The id of the guild","ref":"Nostrum.Struct.Message.html#t:guild_id/0"},{"type":"type","title":"Nostrum.Struct.Message.id/0","doc":"The id of the message","ref":"Nostrum.Struct.Message.html#t:id/0"},{"type":"type","title":"Nostrum.Struct.Message.interaction/0","doc":"Message interaction object","ref":"Nostrum.Struct.Message.html#t:interaction/0"},{"type":"type","title":"Nostrum.Struct.Message.member/0","doc":"Partial Guild Member object received with the Message Create event if message came from a guild channel","ref":"Nostrum.Struct.Message.html#t:member/0"},{"type":"type","title":"Nostrum.Struct.Message.mention_channels/0","doc":"List of channels mentioned in the message\n\n[Discord API Channel Mention Object Documentation](https://discord.com/developers/docs/resources/channel#channel-mention-object-channel-mention-structure)","ref":"Nostrum.Struct.Message.html#t:mention_channels/0"},{"type":"type","title":"Nostrum.Struct.Message.mention_everyone/0","doc":"Whether this message mentions everyone","ref":"Nostrum.Struct.Message.html#t:mention_everyone/0"},{"type":"type","title":"Nostrum.Struct.Message.mention_roles/0","doc":"List of roles ids mentioned in the message","ref":"Nostrum.Struct.Message.html#t:mention_roles/0"},{"type":"type","title":"Nostrum.Struct.Message.mentions/0","doc":"List of users mentioned in the message","ref":"Nostrum.Struct.Message.html#t:mentions/0"},{"type":"type","title":"Nostrum.Struct.Message.message_reference/0","doc":"Reference data sent with crossposted messages and replies.\n\nFor `THREAD_STARTER_MESSAGE` messages, this field points to the message that the thread was started from.","ref":"Nostrum.Struct.Message.html#t:message_reference/0"},{"type":"type","title":"Nostrum.Struct.Message.nonce/0","doc":"Validates if a message was sent","ref":"Nostrum.Struct.Message.html#t:nonce/0"},{"type":"type","title":"Nostrum.Struct.Message.pinned/0","doc":"Whether this message is pinned","ref":"Nostrum.Struct.Message.html#t:pinned/0"},{"type":"type","title":"Nostrum.Struct.Message.poll/0","doc":"The poll object attached to the message","ref":"Nostrum.Struct.Message.html#t:poll/0"},{"type":"type","title":"Nostrum.Struct.Message.reactions/0","doc":"Reactions to the message.","ref":"Nostrum.Struct.Message.html#t:reactions/0"},{"type":"type","title":"Nostrum.Struct.Message.referenced_message/0","doc":"The message associated with the `:message_reference`\n\nThis field is only returned for messages with a `type: 19` (Reply). If the message is a reply but the`:referenced_message` field is not present, the backend did not attempt to fetch the message that was being replied to,so its state is unknown. If the field exists but is `nil`, the referenced message was deleted.","ref":"Nostrum.Struct.Message.html#t:referenced_message/0"},{"type":"type","title":"Nostrum.Struct.Message.sticker_items/0","doc":"Array of Message Sticker Item Objects","ref":"Nostrum.Struct.Message.html#t:sticker_items/0"},{"type":"type","title":"Nostrum.Struct.Message.t/0","doc":"","ref":"Nostrum.Struct.Message.html#t:t/0"},{"type":"type","title":"Nostrum.Struct.Message.thread/0","doc":"The thread that was started from this message, includes a thread member object","ref":"Nostrum.Struct.Message.html#t:thread/0"},{"type":"type","title":"Nostrum.Struct.Message.timestamp/0","doc":"When the message was sent","ref":"Nostrum.Struct.Message.html#t:timestamp/0"},{"type":"type","title":"Nostrum.Struct.Message.tts/0","doc":"Whether this was a TTS message","ref":"Nostrum.Struct.Message.html#t:tts/0"},{"type":"type","title":"Nostrum.Struct.Message.type/0","doc":"[Discord API Message Object Type Documentation](https://discord.com/developers/docs/resources/channel#message-object-message-types)\n\n- `0` - `DEFAULT`\n- `1` - `RECIPIENT_ADD`\n- `2` - `RECIPIENT_REMOVE`\n- `3` - `CALL`\n- `4` - `CHANNEL_NAME_CHANGE`\n- `5` - `CHANNEL_ICON_CHANGE`\n- `6` - `CHANNEL_PINNED_MESSAGE`\n- `7` - `GUILD_MEMBER_JOIN`\n- `8` - `USER_PREMIUM_GUILD_SUBSCRIPTION`\n- `9` - `USER_PREMIUM_GUILD_SUBSCRIPTION_TIER_1`\n- `10` - `USER_PREMIUM_GUILD_SUBSCRIPTION_TIER_2`\n- `11` - `USER_PREMIUM_GUILD_SUBSCRIPTION_TIER_3`\n- `12` - `CHANNEL_FOLLOW_ADD`\n- `14` - `GUILD_DISCOVERY_DISQUALIFIED`\n- `15` - `GUILD_DISCOVERY_REQUALIFIED`\n- `16` - `GUILD_DISCOVERY_GRACE_PERIOD_INITIAL_WARNING`\n- `17` - `GUILD_DISCOVERY_GRACE_PERIOD_FINAL_WARNING`\n- `18` - `THREAD_CREATED`\n- `19` - `REPLY`\n- `20` - `APPLICATION_COMMAND`\n- `21` - `THREAD_STARTER_MESSAGE`\n- `22` - `GUILD_INVITE_REMINDER`","ref":"Nostrum.Struct.Message.html#t:type/0"},{"type":"type","title":"Nostrum.Struct.Message.webhook_id/0","doc":"If the message is generated by a webhook, this is the webhook's id","ref":"Nostrum.Struct.Message.html#t:webhook_id/0"},{"type":"module","title":"Nostrum.Struct.Message.Activity","doc":"Struct representing a Discord message activity.","ref":"Nostrum.Struct.Message.Activity.html"},{"type":"type","title":"Nostrum.Struct.Message.Activity.party_id/0","doc":"The party id from a [rich presence event](https://discord.com/developers/docs/rich-presence/how-to).","ref":"Nostrum.Struct.Message.Activity.html#t:party_id/0"},{"type":"type","title":"Nostrum.Struct.Message.Activity.t/0","doc":"","ref":"Nostrum.Struct.Message.Activity.html#t:t/0"},{"type":"type","title":"Nostrum.Struct.Message.Activity.type/0","doc":"[Type of message activity](https://discord.com/developers/docs/resources/channel#message-object-message-activity-types).","ref":"Nostrum.Struct.Message.Activity.html#t:type/0"},{"type":"module","title":"Nostrum.Struct.Message.Application","doc":"Struct representing a Discord message application.","ref":"Nostrum.Struct.Message.Application.html"},{"type":"type","title":"Nostrum.Struct.Message.Application.cover_image/0","doc":"Id of the embed's image asset","ref":"Nostrum.Struct.Message.Application.html#t:cover_image/0"},{"type":"type","title":"Nostrum.Struct.Message.Application.description/0","doc":"Application's description","ref":"Nostrum.Struct.Message.Application.html#t:description/0"},{"type":"type","title":"Nostrum.Struct.Message.Application.icon/0","doc":"Id of the application's icon","ref":"Nostrum.Struct.Message.Application.html#t:icon/0"},{"type":"type","title":"Nostrum.Struct.Message.Application.id/0","doc":"Id of the application","ref":"Nostrum.Struct.Message.Application.html#t:id/0"},{"type":"type","title":"Nostrum.Struct.Message.Application.name/0","doc":"Name of the application","ref":"Nostrum.Struct.Message.Application.html#t:name/0"},{"type":"type","title":"Nostrum.Struct.Message.Application.t/0","doc":"","ref":"Nostrum.Struct.Message.Application.html#t:t/0"},{"type":"module","title":"Nostrum.Struct.Message.Attachment","doc":"Struct representing a Discord message attachment.","ref":"Nostrum.Struct.Message.Attachment.html"},{"type":"type","title":"Nostrum.Struct.Message.Attachment.filename/0","doc":"Name of attached file","ref":"Nostrum.Struct.Message.Attachment.html#t:filename/0"},{"type":"type","title":"Nostrum.Struct.Message.Attachment.height/0","doc":"Height of the file (if image)","ref":"Nostrum.Struct.Message.Attachment.html#t:height/0"},{"type":"type","title":"Nostrum.Struct.Message.Attachment.id/0","doc":"Attachment id","ref":"Nostrum.Struct.Message.Attachment.html#t:id/0"},{"type":"type","title":"Nostrum.Struct.Message.Attachment.proxy_url/0","doc":"Proxy url of the file","ref":"Nostrum.Struct.Message.Attachment.html#t:proxy_url/0"},{"type":"type","title":"Nostrum.Struct.Message.Attachment.size/0","doc":"Size of the file in bytes","ref":"Nostrum.Struct.Message.Attachment.html#t:size/0"},{"type":"type","title":"Nostrum.Struct.Message.Attachment.t/0","doc":"","ref":"Nostrum.Struct.Message.Attachment.html#t:t/0"},{"type":"type","title":"Nostrum.Struct.Message.Attachment.url/0","doc":"Source url of the file","ref":"Nostrum.Struct.Message.Attachment.html#t:url/0"},{"type":"type","title":"Nostrum.Struct.Message.Attachment.width/0","doc":"Width of the file (if image)","ref":"Nostrum.Struct.Message.Attachment.html#t:width/0"},{"type":"module","title":"Nostrum.Struct.Message.Component","doc":"A component attached to a message.\n\nNote that the fields present depend on the `t:type/0` of the component object.\n\nSee the [Discord API Component Object\nDocumentation](https://discord.com/developers/docs/interactions/message-components#component-object)\nfor more information.","ref":"Nostrum.Struct.Message.Component.html"},{"type":"type","title":"Nostrum.Struct.Message.Component.components/0","doc":"Child components for action rows.\n\nOnly present for action rows.","ref":"Nostrum.Struct.Message.Component.html#t:components/0"},{"type":"type","title":"Nostrum.Struct.Message.Component.custom_id/0","doc":"A developer-defined identifier for the component.\n\nMaximum of 100 characters. Only present for buttons and select menus.","ref":"Nostrum.Struct.Message.Component.html#t:custom_id/0"},{"type":"type","title":"Nostrum.Struct.Message.Component.disabled/0","doc":"Whether the component is disabled.\n\nOnly present for buttons and select menus.","ref":"Nostrum.Struct.Message.Component.html#t:disabled/0"},{"type":"type","title":"Nostrum.Struct.Message.Component.emoji/0","doc":"Partial emoji of the button.\n\nOnly present for buttons. The following fields are set:\n\n- ``name``\n- ``id``\n- ``animated``","ref":"Nostrum.Struct.Message.Component.html#t:emoji/0"},{"type":"type","title":"Nostrum.Struct.Message.Component.label/0","doc":"Text that appears on the button, or above the text input.\n\nMaximum of 80 characters. Only present for buttons and text input.","ref":"Nostrum.Struct.Message.Component.html#t:label/0"},{"type":"type","title":"Nostrum.Struct.Message.Component.max_length/0","doc":"Maximum length of the input text.\n\nDefaults to ``1``. Maximum of ``4000``. Only present for text inputs.","ref":"Nostrum.Struct.Message.Component.html#t:max_length/0"},{"type":"type","title":"Nostrum.Struct.Message.Component.max_values/0","doc":"Maximum number of items that must be chosen.\n\nDefaults to ``1``. Maximum of ``25``. Only present for select menus.","ref":"Nostrum.Struct.Message.Component.html#t:max_values/0"},{"type":"type","title":"Nostrum.Struct.Message.Component.min_length/0","doc":"Minimum length of the input text.\n\nDefaults to ``0``. Maximum of ``4000``. Only present for text inputs.","ref":"Nostrum.Struct.Message.Component.html#t:min_length/0"},{"type":"type","title":"Nostrum.Struct.Message.Component.min_values/0","doc":"Minimum number of items that must be chosen.\n\nDefaults to ``1``. Minimum of ``0``. Maximum of ``25``. Only present for select menus.","ref":"Nostrum.Struct.Message.Component.html#t:min_values/0"},{"type":"type","title":"Nostrum.Struct.Message.Component.options/0","doc":"Choices of the select menu.\n\nMaximum of 25 options. Only present for select menus.","ref":"Nostrum.Struct.Message.Component.html#t:options/0"},{"type":"type","title":"References - Nostrum.Struct.Message.Component.options/0","doc":"See [Discord Developer Portal: Select Option\nStructure](https://discord.com/developers/docs/interactions/message-components#select-menu-object-select-option-structure).","ref":"Nostrum.Struct.Message.Component.html#t:options/0-references"},{"type":"type","title":"Nostrum.Struct.Message.Component.placeholder/0","doc":"Custom placeholder text if nothing is selected.\n\nMaximum of 100 characters. Only present for select menus and text inputs.","ref":"Nostrum.Struct.Message.Component.html#t:placeholder/0"},{"type":"type","title":"Nostrum.Struct.Message.Component.required/0","doc":"Whether the component is required to be filled, defaults to `false`.\n\nOnly present for text inputs.","ref":"Nostrum.Struct.Message.Component.html#t:required/0"},{"type":"type","title":"Nostrum.Struct.Message.Component.style/0","doc":"An integer representing the style of the button or text input.\n\nOnly present for buttons and text input.","ref":"Nostrum.Struct.Message.Component.html#t:style/0"},{"type":"type","title":"Values (Button) - Nostrum.Struct.Message.Component.style/0","doc":"- ``1``: Primary - blurple, ``custom_id`` required.\n- ``2``: Secondary - grey, ``custom_id`` required.\n- ``3``: Success - green, ``custom_id`` required.\n- ``4``: Danger - red, ``custom_id`` required.\n- ``5``: Link - grey, ``url`` required, navigates to the URL.","ref":"Nostrum.Struct.Message.Component.html#t:style/0-values-button"},{"type":"type","title":"Values (Text Input) - Nostrum.Struct.Message.Component.style/0","doc":"- ``1``: Short - A single line text input.\n- ``2``: Paragraph - A multi-line text input.","ref":"Nostrum.Struct.Message.Component.html#t:style/0-values-text-input"},{"type":"type","title":"References - Nostrum.Struct.Message.Component.style/0","doc":"See [Discord Developer Portal: Button\nStyles](https://discord.com/developers/docs/interactions/message-components#button-object-button-styles).","ref":"Nostrum.Struct.Message.Component.html#t:style/0-references"},{"type":"type","title":"Nostrum.Struct.Message.Component.t/0","doc":"Represents a message component.","ref":"Nostrum.Struct.Message.Component.html#t:t/0"},{"type":"type","title":"Nostrum.Struct.Message.Component.type/0","doc":"Component type.\n\nThis field is always set.","ref":"Nostrum.Struct.Message.Component.html#t:type/0"},{"type":"type","title":"Values - Nostrum.Struct.Message.Component.type/0","doc":"- ``1``: Action Row - A container for other components.\n- ``2``: Button - A button object.\n- ``3``: Select Menu - A select menu for picking from choices.\n- ``4``: Text Input - A text input field.","ref":"Nostrum.Struct.Message.Component.html#t:type/0-values"},{"type":"type","title":"References - Nostrum.Struct.Message.Component.type/0","doc":"See [Discord Developer Portal: Component\nTypes](https://discord.com/developers/docs/interactions/message-components#component-object-component-types).","ref":"Nostrum.Struct.Message.Component.html#t:type/0-references"},{"type":"type","title":"Nostrum.Struct.Message.Component.url/0","doc":"URL for link-style buttons.\n\nOnly present for buttons.","ref":"Nostrum.Struct.Message.Component.html#t:url/0"},{"type":"type","title":"Nostrum.Struct.Message.Component.value/0","doc":"The current value of the component.\n\nWhen creating a new component, this will be its pre-filled value if present.\nOnly present for text inputs.","ref":"Nostrum.Struct.Message.Component.html#t:value/0"},{"type":"module","title":"Nostrum.Struct.Message.Poll","doc":"Struct representing a poll in a Discord chat.\n\nThere are various helper methods on this structure to create new poll, see `create_poll/2` and `put_answer/2` & `put_answer/3` for code samples.","ref":"Nostrum.Struct.Message.Poll.html"},{"type":"function","title":"Nostrum.Struct.Message.Poll.create_poll/2","doc":"Create a new poll struct.\n\nUse `Nostrum.Api.create_message` to send it once you've populated it.\n\nAccepts a `question_text` parameter which is the string to use as the poll title.\n\nKeyword arguments:\n- `duration`: duration (in hours) the poll should be open for\n- `allow_multiselect`: whether users should be able to select multiple answers\n\nYou can also pass an `answers` key with answers, though `put_answer/2` and `put_answer/3` are advised.","ref":"Nostrum.Struct.Message.Poll.html#create_poll/2"},{"type":"function","title":"Examples - Nostrum.Struct.Message.Poll.create_poll/2","doc":"```elixir\npoll = Poll.create_poll(\"Do you enjoy pineapple on pizza?\", duration: 2, allow_multiselect: false)\n |> Poll.put_answer(\"Yes!\", default_emoji: \"\\u2705\") # check mark emoji\n |> Poll.put_answer(\"No!\", default_emoji: \"\\u274C\") # cross emoji\n\nApi.create_message(channel_id, poll: poll)\n```","ref":"Nostrum.Struct.Message.Poll.html#create_poll/2-examples"},{"type":"function","title":"Nostrum.Struct.Message.Poll.put_answer/2","doc":"Add an answer to the provided poll.\n\nSee `create_poll/2` for a code sample of this function.\n\nTakes a required \"answer\" text field, as well as either of the optional arguments:\n- `custom_emoji`: An integer representing the snowflake of an emoji to display with the option\n- `default_emoji`: A default platform emoji represented as a unicode character","ref":"Nostrum.Struct.Message.Poll.html#put_answer/2"},{"type":"function","title":"Nostrum.Struct.Message.Poll.put_answer/3","doc":"","ref":"Nostrum.Struct.Message.Poll.html#put_answer/3"},{"type":"type","title":"Nostrum.Struct.Message.Poll.allow_multiselect/0","doc":"Whether the poll allows selection of multiple answers","ref":"Nostrum.Struct.Message.Poll.html#t:allow_multiselect/0"},{"type":"type","title":"Nostrum.Struct.Message.Poll.answers/0","doc":"List of potential answers for the poll","ref":"Nostrum.Struct.Message.Poll.html#t:answers/0"},{"type":"type","title":"Nostrum.Struct.Message.Poll.duration/0","doc":"Duration of poll in hours","ref":"Nostrum.Struct.Message.Poll.html#t:duration/0"},{"type":"type","title":"Nostrum.Struct.Message.Poll.expiry/0","doc":"Expiry time of the poll","ref":"Nostrum.Struct.Message.Poll.html#t:expiry/0"},{"type":"type","title":"Nostrum.Struct.Message.Poll.layout_type/0","doc":"Layout type for the poll, currently only 1 (`DEFAULT`) is supported here.\n\nIf set to `nil`, the value will default to `1` at the Discord API.","ref":"Nostrum.Struct.Message.Poll.html#t:layout_type/0"},{"type":"type","title":"Nostrum.Struct.Message.Poll.question/0","doc":"Question for the poll","ref":"Nostrum.Struct.Message.Poll.html#t:question/0"},{"type":"type","title":"Nostrum.Struct.Message.Poll.results/0","doc":"Result counts of a poll that has been voted on.\n\nThis field is only present for poll objects received over the gateway or Discord API.\n\nAs mentioned in the `Nostrum.Struct.Message.Poll.Results` documentation, if an answer has not been voted on it\nwill not be in this object.","ref":"Nostrum.Struct.Message.Poll.html#t:results/0"},{"type":"type","title":"Nostrum.Struct.Message.Poll.t/0","doc":"","ref":"Nostrum.Struct.Message.Poll.html#t:t/0"},{"type":"module","title":"Nostrum.Struct.Message.Poll.Answer","doc":"A struct representing a poll answer.","ref":"Nostrum.Struct.Message.Poll.Answer.html"},{"type":"type","title":"Nostrum.Struct.Message.Poll.Answer.answer_id/0","doc":"ID of the answer, this is only sent *from* the gateway, you do not need to send this to the gateway.","ref":"Nostrum.Struct.Message.Poll.Answer.html#t:answer_id/0"},{"type":"type","title":"Nostrum.Struct.Message.Poll.Answer.poll_media/0","doc":"Object representing how the answer is displayed visually, with the text and optional emojis.","ref":"Nostrum.Struct.Message.Poll.Answer.html#t:poll_media/0"},{"type":"type","title":"Nostrum.Struct.Message.Poll.Answer.t/0","doc":"","ref":"Nostrum.Struct.Message.Poll.Answer.html#t:t/0"},{"type":"module","title":"Nostrum.Struct.Message.Poll.MediaObject","doc":"A struct representing a media item of a poll (e.g. a question or answer)","ref":"Nostrum.Struct.Message.Poll.MediaObject.html"},{"type":"type","title":"Nostrum.Struct.Message.Poll.MediaObject.emoji/0","doc":"A partial emoji (only supported for answers).\n\nFor a custom emoji, only the `id` field needs to be sent, for a default emoji, only the\n`name` field needs to be sent (with the Unicode emoji).","ref":"Nostrum.Struct.Message.Poll.MediaObject.html#t:emoji/0"},{"type":"type","title":"Nostrum.Struct.Message.Poll.MediaObject.t/0","doc":"","ref":"Nostrum.Struct.Message.Poll.MediaObject.html#t:t/0"},{"type":"type","title":"Nostrum.Struct.Message.Poll.MediaObject.text/0","doc":"Text of the poll media object, either the question or answer text.","ref":"Nostrum.Struct.Message.Poll.MediaObject.html#t:text/0"},{"type":"module","title":"Nostrum.Struct.Message.Poll.Results","doc":"A struct representing the results of a poll.","ref":"Nostrum.Struct.Message.Poll.Results.html"},{"type":"type","title":"Nostrum.Struct.Message.Poll.Results.answer_counts/0","doc":"A list of objects representing the counts for each of the potential answers in the poll.\n\nThe `id` property of each item corresponds to the `answer_id`\nof the poll answers. If an option is not present in this list, then\nthere were no votes for that answer.","ref":"Nostrum.Struct.Message.Poll.Results.html#t:answer_counts/0"},{"type":"type","title":"Nostrum.Struct.Message.Poll.Results.is_finalized/0","doc":"A flag on whether the poll has finished counting.\n\nIf this is set to true, the counts are guaranteed to be accurate from Discord.","ref":"Nostrum.Struct.Message.Poll.Results.html#t:is_finalized/0"},{"type":"type","title":"Nostrum.Struct.Message.Poll.Results.t/0","doc":"","ref":"Nostrum.Struct.Message.Poll.Results.html#t:t/0"},{"type":"module","title":"Nostrum.Struct.Message.Reaction","doc":"Struct representing a Discord message reaction.","ref":"Nostrum.Struct.Message.Reaction.html"},{"type":"type","title":"Nostrum.Struct.Message.Reaction.count/0","doc":"Times this emoji has been used to react","ref":"Nostrum.Struct.Message.Reaction.html#t:count/0"},{"type":"type","title":"Nostrum.Struct.Message.Reaction.emoji/0","doc":"Emoji information","ref":"Nostrum.Struct.Message.Reaction.html#t:emoji/0"},{"type":"type","title":"Nostrum.Struct.Message.Reaction.me/0","doc":"Whether the current user is the one who reacted","ref":"Nostrum.Struct.Message.Reaction.html#t:me/0"},{"type":"type","title":"Nostrum.Struct.Message.Reaction.t/0","doc":"","ref":"Nostrum.Struct.Message.Reaction.html#t:t/0"},{"type":"module","title":"Nostrum.Struct.Message.Reference","doc":"Struct representing a discord message reference.","ref":"Nostrum.Struct.Message.Reference.html"},{"type":"type","title":"Nostrum.Struct.Message.Reference.channel_id/0","doc":"Id of the originating message's channel","ref":"Nostrum.Struct.Message.Reference.html#t:channel_id/0"},{"type":"type","title":"Nostrum.Struct.Message.Reference.guild_id/0","doc":"Id of the originating message's guild","ref":"Nostrum.Struct.Message.Reference.html#t:guild_id/0"},{"type":"type","title":"Nostrum.Struct.Message.Reference.message_id/0","doc":"Id of the originating message","ref":"Nostrum.Struct.Message.Reference.html#t:message_id/0"},{"type":"type","title":"Nostrum.Struct.Message.Reference.t/0","doc":"","ref":"Nostrum.Struct.Message.Reference.html#t:t/0"},{"type":"module","title":"Nostrum.Struct.Overwrite","doc":"Struct representing a Discord overwrite.","ref":"Nostrum.Struct.Overwrite.html"},{"type":"type","title":"Nostrum.Struct.Overwrite.allow/0","doc":"Permission bit set","ref":"Nostrum.Struct.Overwrite.html#t:allow/0"},{"type":"type","title":"Nostrum.Struct.Overwrite.deny/0","doc":"Permission bit set","ref":"Nostrum.Struct.Overwrite.html#t:deny/0"},{"type":"type","title":"Nostrum.Struct.Overwrite.id/0","doc":"Role or User id","ref":"Nostrum.Struct.Overwrite.html#t:id/0"},{"type":"type","title":"Nostrum.Struct.Overwrite.t/0","doc":"","ref":"Nostrum.Struct.Overwrite.html#t:t/0"},{"type":"type","title":"Nostrum.Struct.Overwrite.type/0","doc":"Either ``0`` (role) or ``1`` (member)","ref":"Nostrum.Struct.Overwrite.html#t:type/0"},{"type":"module","title":"Nostrum.Struct.Sticker","doc":"A `Nostrum.Struct.Sticker` represents a sticker that can be sent inside a\n`Nostrum.Struct.Message`.","ref":"Nostrum.Struct.Sticker.html"},{"type":"function","title":"Nostrum.Struct.Sticker.cdn_url/1","doc":"Fetch a CDN URL for the sticker object.\n\n`:png` and `:apng` stickers will return a `.png` URL, `:gif` will return a\n`.gif` URL and `:lottie` will return a `.json` URL.","ref":"Nostrum.Struct.Sticker.html#cdn_url/1"},{"type":"function","title":"Examples - Nostrum.Struct.Sticker.cdn_url/1","doc":"```elixir\niex> sticker = %Nostrum.Struct.Sticker{format_type: :gif, id: 112233445566778899}\niex> Nostrum.Struct.Sticker.cdn_url sticker\n\"https://media.discordapp.net/stickers/112233445566778899.gif\"\n```\n\n```elixir\niex> sticker = %Nostrum.Struct.Sticker{format_type: :apng, id: 998877665544332211}\niex> Nostrum.Struct.Sticker.cdn_url sticker\n\"https://cdn.discordapp.com/stickers/998877665544332211.png\"\n```","ref":"Nostrum.Struct.Sticker.html#cdn_url/1-examples"},{"type":"type","title":"Nostrum.Struct.Sticker.available/0","doc":"Whether this guild sticker can be used.\n\nMay be false due to loss of Server Boosts","ref":"Nostrum.Struct.Sticker.html#t:available/0"},{"type":"type","title":"Nostrum.Struct.Sticker.description/0","doc":"Description of the sticker","ref":"Nostrum.Struct.Sticker.html#t:description/0"},{"type":"type","title":"Nostrum.Struct.Sticker.format_type/0","doc":"Format of the sticker.\n\nThis field is used to determine the return URL in `cdn_url/1`.","ref":"Nostrum.Struct.Sticker.html#t:format_type/0"},{"type":"type","title":"Nostrum.Struct.Sticker.guild_id/0","doc":"ID of the guild that owns this sticker.\n\n`nil` if the sticker is a built-in (type `:standard`) sticker.","ref":"Nostrum.Struct.Sticker.html#t:guild_id/0"},{"type":"type","title":"Nostrum.Struct.Sticker.id/0","doc":"ID of the sticker","ref":"Nostrum.Struct.Sticker.html#t:id/0"},{"type":"type","title":"Nostrum.Struct.Sticker.name/0","doc":"Name of the sticker","ref":"Nostrum.Struct.Sticker.html#t:name/0"},{"type":"type","title":"Nostrum.Struct.Sticker.pack_id/0","doc":"ID of the pack the sticker is from","ref":"Nostrum.Struct.Sticker.html#t:pack_id/0"},{"type":"type","title":"Nostrum.Struct.Sticker.sort_value/0","doc":"The sticker's sort order within its pack.\n\nSometimes provided for stickers with type `:standard` that are in a pack.","ref":"Nostrum.Struct.Sticker.html#t:sort_value/0"},{"type":"type","title":"Nostrum.Struct.Sticker.t/0","doc":"","ref":"Nostrum.Struct.Sticker.html#t:t/0"},{"type":"type","title":"Nostrum.Struct.Sticker.tags/0","doc":"Tags used by the Discord client to auto-complete a sticker.\n\nFor default sticker packs, this is a comma-separated list. For guild stickers,\nthis is the name of the unicode emoji associated by the sticker creator with\nthe sticker.\n\nThis is technically a free-text field so consistency in formatting is not guaranteed.","ref":"Nostrum.Struct.Sticker.html#t:tags/0"},{"type":"type","title":"Nostrum.Struct.Sticker.type/0","doc":"Whether the sticker is a standard (platform made) sticker or a custom guild sticker.","ref":"Nostrum.Struct.Sticker.html#t:type/0"},{"type":"type","title":"Nostrum.Struct.Sticker.user/0","doc":"User that uploaded the guild sticker.\n\n`nil` if the sticker is a built-in (type `:standard`) sticker.","ref":"Nostrum.Struct.Sticker.html#t:user/0"},{"type":"module","title":"Nostrum.Struct.Sticker.Pack","doc":"Represents a platform-curated sticker pack on Discord","ref":"Nostrum.Struct.Sticker.Pack.html"},{"type":"function","title":"Nostrum.Struct.Sticker.Pack.banner_url/1","doc":"Return the banner pack URL for a given sticker pack.\n\nThis is a marketing banner provided by Discord for their platform curated sticker packs.","ref":"Nostrum.Struct.Sticker.Pack.html#banner_url/1"},{"type":"function","title":"Examples - Nostrum.Struct.Sticker.Pack.banner_url/1","doc":"```elixir\niex> pack = %Nostrum.Struct.Sticker.Pack{banner_asset_id: 112233445566778899}\niex> Nostrum.Struct.Sticker.Pack.banner_url pack\n\"https://cdn.discordapp.com/app-assets/710982414301790216/store/112233445566778899.png\"\n```","ref":"Nostrum.Struct.Sticker.Pack.html#banner_url/1-examples"},{"type":"type","title":"Nostrum.Struct.Sticker.Pack.banner_asset_id/0","doc":"Asset ID of the banner for this sticker pack.","ref":"Nostrum.Struct.Sticker.Pack.html#t:banner_asset_id/0"},{"type":"type","title":"Nostrum.Struct.Sticker.Pack.cover_sticker_id/0","doc":"ID of a sticker contained within the pack that should be the cover.","ref":"Nostrum.Struct.Sticker.Pack.html#t:cover_sticker_id/0"},{"type":"type","title":"Nostrum.Struct.Sticker.Pack.description/0","doc":"Marketing description of the sticker pack.","ref":"Nostrum.Struct.Sticker.Pack.html#t:description/0"},{"type":"type","title":"Nostrum.Struct.Sticker.Pack.id/0","doc":"ID of the sticker pack.","ref":"Nostrum.Struct.Sticker.Pack.html#t:id/0"},{"type":"type","title":"Nostrum.Struct.Sticker.Pack.name/0","doc":"Name of the pack.","ref":"Nostrum.Struct.Sticker.Pack.html#t:name/0"},{"type":"type","title":"Nostrum.Struct.Sticker.Pack.sku_id/0","doc":"SKU ID of the sticker pack.","ref":"Nostrum.Struct.Sticker.Pack.html#t:sku_id/0"},{"type":"type","title":"Nostrum.Struct.Sticker.Pack.stickers/0","doc":"A list of stickers contained within the pack.","ref":"Nostrum.Struct.Sticker.Pack.html#t:stickers/0"},{"type":"type","title":"Nostrum.Struct.Sticker.Pack.t/0","doc":"","ref":"Nostrum.Struct.Sticker.Pack.html#t:t/0"},{"type":"module","title":"Nostrum.Struct.ThreadMember","doc":"Struct representing a thread member object","ref":"Nostrum.Struct.ThreadMember.html"},{"type":"type","title":"Nostrum.Struct.ThreadMember.flags/0","doc":"Any user-thread settings","ref":"Nostrum.Struct.ThreadMember.html#t:flags/0"},{"type":"type","title":"Nostrum.Struct.ThreadMember.guild_id/0","doc":"The id of the guild the thread is in.\n\nOnly present within `THREAD_MEMBER_UPDATE` events","ref":"Nostrum.Struct.ThreadMember.html#t:guild_id/0"},{"type":"type","title":"Nostrum.Struct.ThreadMember.id/0","doc":"The id of the thread, omitted within `GUILD_CREATE` events","ref":"Nostrum.Struct.ThreadMember.html#t:id/0"},{"type":"type","title":"Nostrum.Struct.ThreadMember.join_timestamp/0","doc":"The timestamp of when the user last joined the thread","ref":"Nostrum.Struct.ThreadMember.html#t:join_timestamp/0"},{"type":"type","title":"Nostrum.Struct.ThreadMember.t/0","doc":"","ref":"Nostrum.Struct.ThreadMember.html#t:t/0"},{"type":"type","title":"Nostrum.Struct.ThreadMember.user_id/0","doc":"The id of the user, omitted within `GUILD_CREATE` events","ref":"Nostrum.Struct.ThreadMember.html#t:user_id/0"},{"type":"module","title":"Nostrum.Struct.User","doc":"Struct representing a Discord user.","ref":"Nostrum.Struct.User.html"},{"type":"module","title":"Mentioning Users in Messages - Nostrum.Struct.User","doc":"A `Nostrum.Struct.User` can be mentioned in message content using the `String.Chars`\nprotocol or `mention/1`.\n\n```elixir\nuser = %Nostrum.Struct.User{id: 120571255635181568}\nNostrum.Api.create_message!(184046599834435585, \"#{user}\")\n%Nostrum.Struct.Message{content: \"<@120571255635181568>\"}\n\nuser = %Nostrum.Struct.User{id: 89918932789497856}\nNostrum.Api.create_message!(280085880452939778, \"#{Nostrum.Struct.User.mention(user)}\")\n%Nostrum.Struct.Message{content: \"<@89918932789497856>\"}\n```","ref":"Nostrum.Struct.User.html#module-mentioning-users-in-messages"},{"type":"module","title":"User vs. Member - Nostrum.Struct.User","doc":"A `user` contains only general information about that user such as a `username` and an `avatar`.\nA `member` has everything that a `user` has, but also additional information on a per guild basis. This includes things like a `nickname` and a list of `roles`.","ref":"Nostrum.Struct.User.html#module-user-vs-member"},{"type":"function","title":"Nostrum.Struct.User.avatar_url/2","doc":"Returns the URL of a user's display avatar.\n\nIf `:avatar` is `nil`, the default avatar url is returned.\n\nSupported image formats are PNG, JPEG, WebP, and GIF.","ref":"Nostrum.Struct.User.html#avatar_url/2"},{"type":"function","title":"Examples - Nostrum.Struct.User.avatar_url/2","doc":"```elixir\niex> user = %Nostrum.Struct.User{avatar: \"8342729096ea3675442027381ff50dfe\",\n...> id: 80351110224678912}\niex> Nostrum.Struct.User.avatar_url(user)\n\"https://cdn.discordapp.com/avatars/80351110224678912/8342729096ea3675442027381ff50dfe.webp\"\niex> Nostrum.Struct.User.avatar_url(user, \"png\")\n\"https://cdn.discordapp.com/avatars/80351110224678912/8342729096ea3675442027381ff50dfe.png\"\n\niex> user = %Nostrum.Struct.User{avatar: nil,\n...> id: 80351110224678912,\n...> discriminator: \"0\"}\niex> Nostrum.Struct.User.avatar_url(user)\n\"https://cdn.discordapp.com/embed/avatars/5.png\"\n\niex> user = %Nostrum.Struct.User{avatar: nil,\n...> discriminator: \"1337\"}\niex> Nostrum.Struct.User.avatar_url(user)\n\"https://cdn.discordapp.com/embed/avatars/2.png\"\n```","ref":"Nostrum.Struct.User.html#avatar_url/2-examples"},{"type":"function","title":"Nostrum.Struct.User.full_name/1","doc":"Returns a user's `:global_name` if present, otherwise returns their\n`:username` and `:discriminator` separated by a hashtag.","ref":"Nostrum.Struct.User.html#full_name/1"},{"type":"function","title":"Examples - Nostrum.Struct.User.full_name/1","doc":"```elixir\niex> user = %Nostrum.Struct.User{global_name: \"TheRealJason\",\n...> username: \"therealjason\",\n...> discriminator: \"0\"}\niex> Nostrum.Struct.User.full_name(user)\n\"TheRealJason\"\n```\n\n```elixir\niex> user = %Nostrum.Struct.User{username: \"b1nzy\",\n...> discriminator: \"0852\"}\niex> Nostrum.Struct.User.full_name(user)\n\"b1nzy#0852\"\n```","ref":"Nostrum.Struct.User.html#full_name/1-examples"},{"type":"function","title":"Nostrum.Struct.User.mention/1","doc":"Formats an `Nostrum.Struct.User` into a mention.","ref":"Nostrum.Struct.User.html#mention/1"},{"type":"function","title":"Examples - Nostrum.Struct.User.mention/1","doc":"```elixir\niex> user = %Nostrum.Struct.User{id: 177888205536886784}\n...> Nostrum.Struct.User.mention(user)\n\"<@177888205536886784>\"\n```","ref":"Nostrum.Struct.User.html#mention/1-examples"},{"type":"type","title":"Nostrum.Struct.User.avatar/0","doc":"User's avatar hash","ref":"Nostrum.Struct.User.html#t:avatar/0"},{"type":"type","title":"Nostrum.Struct.User.bot/0","doc":"Whether the user is a bot","ref":"Nostrum.Struct.User.html#t:bot/0"},{"type":"type","title":"Nostrum.Struct.User.discriminator/0","doc":"The user's 4--digit discord-tag","ref":"Nostrum.Struct.User.html#t:discriminator/0"},{"type":"type","title":"Nostrum.Struct.User.global_name/0","doc":"The user's display name, if it is set","ref":"Nostrum.Struct.User.html#t:global_name/0"},{"type":"type","title":"Nostrum.Struct.User.id/0","doc":"The user's id","ref":"Nostrum.Struct.User.html#t:id/0"},{"type":"type","title":"Nostrum.Struct.User.public_flags/0","doc":"The user's public flags, as a bitset.\n\nTo parse these, use `Nostrum.Struct.User.Flags.from_integer/1`.","ref":"Nostrum.Struct.User.html#t:public_flags/0"},{"type":"type","title":"Nostrum.Struct.User.t/0","doc":"","ref":"Nostrum.Struct.User.html#t:t/0"},{"type":"type","title":"Nostrum.Struct.User.username/0","doc":"The user's username","ref":"Nostrum.Struct.User.html#t:username/0"},{"type":"module","title":"Nostrum.Struct.User.Connection","doc":"Struct representing a Discord User's connections","ref":"Nostrum.Struct.User.Connection.html"},{"type":"module","title":"Nostrum.Struct.User.Flags","doc":"Struct representing the flags a user account can have","ref":"Nostrum.Struct.User.Flags.html"},{"type":"function","title":"Nostrum.Struct.User.Flags.from_integer/1","doc":"Constructs a flag struct based on an integer from the Discord API (either public_flags or flags).","ref":"Nostrum.Struct.User.Flags.html#from_integer/1"},{"type":"function","title":"Examples - Nostrum.Struct.User.Flags.from_integer/1","doc":"```elixir\niex> Nostrum.Struct.User.Flags.from_integer(131842)\n%Nostrum.Struct.User.Flags{\n bug_hunter_level_1: false,\n bug_hunter_level_2: false,\n early_supporter: true,\n hypesquad_balance: true,\n hypesquad_bravery: false,\n hypesquad_brilliance: false,\n hypesquad_events: false,\n partner: true,\n staff: false,\n system: false,\n team_user: false,\n verified_bot: false,\n verified_developer: true\n}\n```","ref":"Nostrum.Struct.User.Flags.html#from_integer/1-examples"},{"type":"function","title":"Nostrum.Struct.User.Flags.to_integer/1","doc":"Convert a flag struct to an integer value.","ref":"Nostrum.Struct.User.Flags.html#to_integer/1"},{"type":"function","title":"Examples - Nostrum.Struct.User.Flags.to_integer/1","doc":"```elixir\niex> my_flags = %Nostrum.Struct.User.Flags{\n...> bug_hunter_level_1: false,\n...> bug_hunter_level_2: false,\n...> early_supporter: true,\n...> hypesquad_balance: true,\n...> hypesquad_bravery: false,\n...> hypesquad_brilliance: false,\n...> hypesquad_events: false,\n...> partner: true,\n...> staff: false,\n...> system: false,\n...> team_user: false,\n...> verified_bot: false,\n...> verified_developer: true\n...> }\niex> Nostrum.Struct.User.Flags.to_integer(my_flags)\n131842\n```","ref":"Nostrum.Struct.User.Flags.html#to_integer/1-examples"},{"type":"type","title":"Nostrum.Struct.User.Flags.bug_hunter_level_1/0","doc":"Bug Hunter (Level 1)","ref":"Nostrum.Struct.User.Flags.html#t:bug_hunter_level_1/0"},{"type":"type","title":"Nostrum.Struct.User.Flags.bug_hunter_level_2/0","doc":"Bug Hunter (Level 2)","ref":"Nostrum.Struct.User.Flags.html#t:bug_hunter_level_2/0"},{"type":"type","title":"Nostrum.Struct.User.Flags.early_supporter/0","doc":"Early Supporter","ref":"Nostrum.Struct.User.Flags.html#t:early_supporter/0"},{"type":"type","title":"Nostrum.Struct.User.Flags.flags/0","doc":"","ref":"Nostrum.Struct.User.Flags.html#t:flags/0"},{"type":"type","title":"Nostrum.Struct.User.Flags.hypesquad_balance/0","doc":"HypeSquad Balance","ref":"Nostrum.Struct.User.Flags.html#t:hypesquad_balance/0"},{"type":"type","title":"Nostrum.Struct.User.Flags.hypesquad_bravery/0","doc":"HypeSquad Bravery","ref":"Nostrum.Struct.User.Flags.html#t:hypesquad_bravery/0"},{"type":"type","title":"Nostrum.Struct.User.Flags.hypesquad_brilliance/0","doc":"HypeSquad Brilliance","ref":"Nostrum.Struct.User.Flags.html#t:hypesquad_brilliance/0"},{"type":"type","title":"Nostrum.Struct.User.Flags.hypesquad_events/0","doc":"HypeSquad Events","ref":"Nostrum.Struct.User.Flags.html#t:hypesquad_events/0"},{"type":"type","title":"Nostrum.Struct.User.Flags.partner/0","doc":"Discord Partner","ref":"Nostrum.Struct.User.Flags.html#t:partner/0"},{"type":"type","title":"Nostrum.Struct.User.Flags.raw_flags/0","doc":"Raw user flags as sent by the Discord API","ref":"Nostrum.Struct.User.Flags.html#t:raw_flags/0"},{"type":"type","title":"Nostrum.Struct.User.Flags.staff/0","doc":"Discord Employee","ref":"Nostrum.Struct.User.Flags.html#t:staff/0"},{"type":"type","title":"Nostrum.Struct.User.Flags.system/0","doc":"System user","ref":"Nostrum.Struct.User.Flags.html#t:system/0"},{"type":"type","title":"Nostrum.Struct.User.Flags.t/0","doc":"","ref":"Nostrum.Struct.User.Flags.html#t:t/0"},{"type":"type","title":"Nostrum.Struct.User.Flags.team_user/0","doc":"Team User","ref":"Nostrum.Struct.User.Flags.html#t:team_user/0"},{"type":"type","title":"Nostrum.Struct.User.Flags.verified_bot/0","doc":"Verified bot","ref":"Nostrum.Struct.User.Flags.html#t:verified_bot/0"},{"type":"type","title":"Nostrum.Struct.User.Flags.verified_developer/0","doc":"Verified developer","ref":"Nostrum.Struct.User.Flags.html#t:verified_developer/0"},{"type":"module","title":"Nostrum.Struct.VoiceRegion","doc":"Struct representing a Discord voice region.","ref":"Nostrum.Struct.VoiceRegion.html"},{"type":"type","title":"Nostrum.Struct.VoiceRegion.t/0","doc":"","ref":"Nostrum.Struct.VoiceRegion.html#t:t/0"},{"type":"module","title":"Nostrum.Struct.VoiceWSState","doc":"Struct representing the current Voice WS state.","ref":"Nostrum.Struct.VoiceWSState.html"},{"type":"type","title":"Nostrum.Struct.VoiceWSState.channel_id/0","doc":"The channel id that this voice websocket state applies to","ref":"Nostrum.Struct.VoiceWSState.html#t:channel_id/0"},{"type":"type","title":"Nostrum.Struct.VoiceWSState.conn/0","doc":"PID of the `:gun` worker connected to the websocket","ref":"Nostrum.Struct.VoiceWSState.html#t:conn/0"},{"type":"type","title":"Nostrum.Struct.VoiceWSState.conn_pid/0","doc":"PID of the connection process","ref":"Nostrum.Struct.VoiceWSState.html#t:conn_pid/0"},{"type":"type","title":"Nostrum.Struct.VoiceWSState.gateway/0","doc":"Gateway URL","ref":"Nostrum.Struct.VoiceWSState.html#t:gateway/0"},{"type":"type","title":"Nostrum.Struct.VoiceWSState.guild_id/0","doc":"The guild id that this voice websocket state applies to","ref":"Nostrum.Struct.VoiceWSState.html#t:guild_id/0"},{"type":"type","title":"Nostrum.Struct.VoiceWSState.heartbeat_ack/0","doc":"Whether or not the last heartbeat sent was ACK'd","ref":"Nostrum.Struct.VoiceWSState.html#t:heartbeat_ack/0"},{"type":"type","title":"Nostrum.Struct.VoiceWSState.heartbeat_interval/0","doc":"Interval at which heartbeats are sent","ref":"Nostrum.Struct.VoiceWSState.html#t:heartbeat_interval/0"},{"type":"type","title":"Nostrum.Struct.VoiceWSState.heartbeat_ref/0","doc":"Time ref for the heartbeat","ref":"Nostrum.Struct.VoiceWSState.html#t:heartbeat_ref/0"},{"type":"type","title":"Nostrum.Struct.VoiceWSState.identified/0","doc":"Whether the session has been identified","ref":"Nostrum.Struct.VoiceWSState.html#t:identified/0"},{"type":"type","title":"Nostrum.Struct.VoiceWSState.last_heartbeat_ack/0","doc":"The time the last heartbeat was acknowledged, will be nil if a heartbeat\nhasn't been ACK'd yet","ref":"Nostrum.Struct.VoiceWSState.html#t:last_heartbeat_ack/0"},{"type":"type","title":"Nostrum.Struct.VoiceWSState.last_heartbeat_send/0","doc":"The time the last heartbeat was sent, if a heartbeat hasn't been sent it\nwill be the time the websocket process was started","ref":"Nostrum.Struct.VoiceWSState.html#t:last_heartbeat_send/0"},{"type":"type","title":"Nostrum.Struct.VoiceWSState.secret_key/0","doc":"The secret key for audio encryption","ref":"Nostrum.Struct.VoiceWSState.html#t:secret_key/0"},{"type":"type","title":"Nostrum.Struct.VoiceWSState.session/0","doc":"The session id","ref":"Nostrum.Struct.VoiceWSState.html#t:session/0"},{"type":"type","title":"Nostrum.Struct.VoiceWSState.ssrc_map/0","doc":"A mapping of RTP SSRC (synchronization source) to user id\n\nThis map can be used to identify the user who generated the incoming\naudio data when an RTP packet is received.","ref":"Nostrum.Struct.VoiceWSState.html#t:ssrc_map/0"},{"type":"type","title":"Nostrum.Struct.VoiceWSState.stream/0","doc":"Stream reference for `:gun`","ref":"Nostrum.Struct.VoiceWSState.html#t:stream/0"},{"type":"type","title":"Nostrum.Struct.VoiceWSState.t/0","doc":"","ref":"Nostrum.Struct.VoiceWSState.html#t:t/0"},{"type":"type","title":"Nostrum.Struct.VoiceWSState.token/0","doc":"The session token","ref":"Nostrum.Struct.VoiceWSState.html#t:token/0"},{"type":"module","title":"Nostrum.Struct.WSState","doc":"Struct representing the current WS state.","ref":"Nostrum.Struct.WSState.html"},{"type":"type","title":"Nostrum.Struct.WSState.compress_ctx/0","doc":"Reference to the current compression context","ref":"Nostrum.Struct.WSState.html#t:compress_ctx/0"},{"type":"type","title":"Nostrum.Struct.WSState.conn/0","doc":"PID of the `:gun` worker connected to the websocket","ref":"Nostrum.Struct.WSState.html#t:conn/0"},{"type":"type","title":"Nostrum.Struct.WSState.conn_pid/0","doc":"PID of the connection process","ref":"Nostrum.Struct.WSState.html#t:conn_pid/0"},{"type":"type","title":"Nostrum.Struct.WSState.gateway/0","doc":"Gateway URL","ref":"Nostrum.Struct.WSState.html#t:gateway/0"},{"type":"type","title":"Nostrum.Struct.WSState.heartbeat_ack/0","doc":"Whether or not the last hearbeat sent was ACK'd","ref":"Nostrum.Struct.WSState.html#t:heartbeat_ack/0"},{"type":"type","title":"Nostrum.Struct.WSState.heartbeat_interval/0","doc":"Interval at which heartbeats are sent","ref":"Nostrum.Struct.WSState.html#t:heartbeat_interval/0"},{"type":"type","title":"Nostrum.Struct.WSState.last_heartbeat_ack/0","doc":"The time the last heartbeat was acknowledged, will be nil if a heartbeat\nhasn't been ACK'd yet","ref":"Nostrum.Struct.WSState.html#t:last_heartbeat_ack/0"},{"type":"type","title":"Nostrum.Struct.WSState.last_heartbeat_send/0","doc":"The time the last heartbeat was sent, if a heartbeat hasn't been sent it\nwill be the time the websocket process was started","ref":"Nostrum.Struct.WSState.html#t:last_heartbeat_send/0"},{"type":"type","title":"Nostrum.Struct.WSState.resume_gateway/0","doc":"Gateway URL to use for resuming.","ref":"Nostrum.Struct.WSState.html#t:resume_gateway/0"},{"type":"type","title":"Nostrum.Struct.WSState.seq/0","doc":"The sequence number of the last event","ref":"Nostrum.Struct.WSState.html#t:seq/0"},{"type":"type","title":"Nostrum.Struct.WSState.session/0","doc":"The session id","ref":"Nostrum.Struct.WSState.html#t:session/0"},{"type":"type","title":"Nostrum.Struct.WSState.shard_num/0","doc":"The shard number","ref":"Nostrum.Struct.WSState.html#t:shard_num/0"},{"type":"type","title":"Nostrum.Struct.WSState.stream/0","doc":"Stream reference for `:gun`","ref":"Nostrum.Struct.WSState.html#t:stream/0"},{"type":"type","title":"Nostrum.Struct.WSState.t/0","doc":"","ref":"Nostrum.Struct.WSState.html#t:t/0"},{"type":"type","title":"Nostrum.Struct.WSState.total_shards/0","doc":"The highest shard number for this bot.\n\nThis may not be started locally, it is just used by nostrum to inform the\ngateway which events we are interested in.","ref":"Nostrum.Struct.WSState.html#t:total_shards/0"},{"type":"module","title":"Nostrum.Struct.Webhook","doc":"Struct representing a Discord webhook.","ref":"Nostrum.Struct.Webhook.html"},{"type":"type","title":"Nostrum.Struct.Webhook.avatar/0","doc":"Default avatar of the webhook","ref":"Nostrum.Struct.Webhook.html#t:avatar/0"},{"type":"type","title":"Nostrum.Struct.Webhook.channel_id/0","doc":"Channel the webhook is for","ref":"Nostrum.Struct.Webhook.html#t:channel_id/0"},{"type":"type","title":"Nostrum.Struct.Webhook.guild_id/0","doc":"Guild the webhook is for","ref":"Nostrum.Struct.Webhook.html#t:guild_id/0"},{"type":"type","title":"Nostrum.Struct.Webhook.id/0","doc":"Id of the webhook","ref":"Nostrum.Struct.Webhook.html#t:id/0"},{"type":"type","title":"Nostrum.Struct.Webhook.name/0","doc":"Default name of the webhook","ref":"Nostrum.Struct.Webhook.html#t:name/0"},{"type":"type","title":"Nostrum.Struct.Webhook.t/0","doc":"","ref":"Nostrum.Struct.Webhook.html#t:t/0"},{"type":"type","title":"Nostrum.Struct.Webhook.token/0","doc":"Secure token of the webhook","ref":"Nostrum.Struct.Webhook.html#t:token/0"},{"type":"type","title":"Nostrum.Struct.Webhook.user/0","doc":"User who created the webhook","ref":"Nostrum.Struct.Webhook.html#t:user/0"},{"type":"module","title":"Nostrum.Struct.Event.AutoModerationRuleExecute","doc":"Sent when an auto-moderation rule executes.\n(e.g. message is blocked).","ref":"Nostrum.Struct.Event.AutoModerationRuleExecute.html"},{"type":"type","title":"Nostrum.Struct.Event.AutoModerationRuleExecute.action/0","doc":"The action that was executed","ref":"Nostrum.Struct.Event.AutoModerationRuleExecute.html#t:action/0"},{"type":"type","title":"Nostrum.Struct.Event.AutoModerationRuleExecute.alert_system_message_id/0","doc":"The id of any system message that was generated as a result of the action\n\nnote: will not exist if the event does not correspond to an action that generates a system message","ref":"Nostrum.Struct.Event.AutoModerationRuleExecute.html#t:alert_system_message_id/0"},{"type":"type","title":"Nostrum.Struct.Event.AutoModerationRuleExecute.channel_id/0","doc":"The id of the channel in which the content was posted\n\nnote: this field may not exist if the content was blocked from being created","ref":"Nostrum.Struct.Event.AutoModerationRuleExecute.html#t:channel_id/0"},{"type":"type","title":"Nostrum.Struct.Event.AutoModerationRuleExecute.content/0","doc":"The content of the message which triggered the rule","ref":"Nostrum.Struct.Event.AutoModerationRuleExecute.html#t:content/0"},{"type":"type","title":"Nostrum.Struct.Event.AutoModerationRuleExecute.guild_id/0","doc":"The id of the guild in which the action was executed","ref":"Nostrum.Struct.Event.AutoModerationRuleExecute.html#t:guild_id/0"},{"type":"type","title":"Nostrum.Struct.Event.AutoModerationRuleExecute.matched_content/0","doc":"The substring which matched the content","ref":"Nostrum.Struct.Event.AutoModerationRuleExecute.html#t:matched_content/0"},{"type":"type","title":"Nostrum.Struct.Event.AutoModerationRuleExecute.matched_keyword/0","doc":"The keyword that was matched in the content","ref":"Nostrum.Struct.Event.AutoModerationRuleExecute.html#t:matched_keyword/0"},{"type":"type","title":"Nostrum.Struct.Event.AutoModerationRuleExecute.message_id/0","doc":"The id of the message which was posted\n\nnote: this field will not exist if the content was blocked from being created","ref":"Nostrum.Struct.Event.AutoModerationRuleExecute.html#t:message_id/0"},{"type":"type","title":"Nostrum.Struct.Event.AutoModerationRuleExecute.rule_id/0","doc":"The id of the rule that was executed","ref":"Nostrum.Struct.Event.AutoModerationRuleExecute.html#t:rule_id/0"},{"type":"type","title":"Nostrum.Struct.Event.AutoModerationRuleExecute.rule_trigger_type/0","doc":"The type of the rule that was executed","ref":"Nostrum.Struct.Event.AutoModerationRuleExecute.html#t:rule_trigger_type/0"},{"type":"type","title":"Nostrum.Struct.Event.AutoModerationRuleExecute.t/0","doc":"","ref":"Nostrum.Struct.Event.AutoModerationRuleExecute.html#t:t/0"},{"type":"type","title":"Nostrum.Struct.Event.AutoModerationRuleExecute.user_id/0","doc":"The id of the user which generated the content which triggered the rule","ref":"Nostrum.Struct.Event.AutoModerationRuleExecute.html#t:user_id/0"},{"type":"module","title":"Nostrum.Struct.Event.ChannelPinsUpdate","doc":"Represents an update to channel pins.","ref":"Nostrum.Struct.Event.ChannelPinsUpdate.html"},{"type":"type","title":"Nostrum.Struct.Event.ChannelPinsUpdate.channel_id/0","doc":"The ID of the channel","ref":"Nostrum.Struct.Event.ChannelPinsUpdate.html#t:channel_id/0"},{"type":"type","title":"Nostrum.Struct.Event.ChannelPinsUpdate.guild_id/0","doc":"The ID of the guild, if the pin update was on a guild","ref":"Nostrum.Struct.Event.ChannelPinsUpdate.html#t:guild_id/0"},{"type":"type","title":"Nostrum.Struct.Event.ChannelPinsUpdate.last_pin_timestamp/0","doc":"The time at which the most recent pinned message was pinned","ref":"Nostrum.Struct.Event.ChannelPinsUpdate.html#t:last_pin_timestamp/0"},{"type":"type","title":"Nostrum.Struct.Event.ChannelPinsUpdate.t/0","doc":"Event sent when a message is pinned or unpinned in a text channel","ref":"Nostrum.Struct.Event.ChannelPinsUpdate.html#t:t/0"},{"type":"module","title":"Nostrum.Struct.Event.GuildBanAdd","doc":"Sent when a user is banned from a guild","ref":"Nostrum.Struct.Event.GuildBanAdd.html"},{"type":"type","title":"Nostrum.Struct.Event.GuildBanAdd.guild_id/0","doc":"ID of the guild","ref":"Nostrum.Struct.Event.GuildBanAdd.html#t:guild_id/0"},{"type":"type","title":"Nostrum.Struct.Event.GuildBanAdd.t/0","doc":"Event sent when a user is banned from a guild","ref":"Nostrum.Struct.Event.GuildBanAdd.html#t:t/0"},{"type":"type","title":"Nostrum.Struct.Event.GuildBanAdd.user/0","doc":"Banned user","ref":"Nostrum.Struct.Event.GuildBanAdd.html#t:user/0"},{"type":"module","title":"Nostrum.Struct.Event.GuildBanRemove","doc":"Sent when a user is unbanned from a guild","ref":"Nostrum.Struct.Event.GuildBanRemove.html"},{"type":"type","title":"Nostrum.Struct.Event.GuildBanRemove.guild_id/0","doc":"ID of the guild","ref":"Nostrum.Struct.Event.GuildBanRemove.html#t:guild_id/0"},{"type":"type","title":"Nostrum.Struct.Event.GuildBanRemove.t/0","doc":"Event sent when a user is unbanned from a guild","ref":"Nostrum.Struct.Event.GuildBanRemove.html#t:t/0"},{"type":"type","title":"Nostrum.Struct.Event.GuildBanRemove.user/0","doc":"Unbanned user","ref":"Nostrum.Struct.Event.GuildBanRemove.html#t:user/0"},{"type":"module","title":"Nostrum.Struct.Event.GuildIntegrationDelete","doc":"Event fired when a guild integration is deleted.","ref":"Nostrum.Struct.Event.GuildIntegrationDelete.html"},{"type":"type","title":"Nostrum.Struct.Event.GuildIntegrationDelete.application_id/0","doc":"id of the bot/OAuth2 application for this discord integration","ref":"Nostrum.Struct.Event.GuildIntegrationDelete.html#t:application_id/0"},{"type":"type","title":"Nostrum.Struct.Event.GuildIntegrationDelete.guild_id/0","doc":"The id of the guild the integration is in.","ref":"Nostrum.Struct.Event.GuildIntegrationDelete.html#t:guild_id/0"},{"type":"type","title":"Nostrum.Struct.Event.GuildIntegrationDelete.id/0","doc":"The id of the deleted integration.","ref":"Nostrum.Struct.Event.GuildIntegrationDelete.html#t:id/0"},{"type":"type","title":"Nostrum.Struct.Event.GuildIntegrationDelete.t/0","doc":"","ref":"Nostrum.Struct.Event.GuildIntegrationDelete.html#t:t/0"},{"type":"module","title":"Nostrum.Struct.Event.GuildIntegrationsUpdate","doc":"Sent when a guild integration is updated","ref":"Nostrum.Struct.Event.GuildIntegrationsUpdate.html"},{"type":"type","title":"Nostrum.Struct.Event.GuildIntegrationsUpdate.guild_id/0","doc":"ID of the guild whose integrations were updated","ref":"Nostrum.Struct.Event.GuildIntegrationsUpdate.html#t:guild_id/0"},{"type":"type","title":"Nostrum.Struct.Event.GuildIntegrationsUpdate.t/0","doc":"Event sent when a guild integration is updated","ref":"Nostrum.Struct.Event.GuildIntegrationsUpdate.html#t:t/0"},{"type":"module","title":"Nostrum.Struct.Event.GuildScheduledEventUserAdd","doc":"Struct representing a guild scheduled event user add event.","ref":"Nostrum.Struct.Event.GuildScheduledEventUserAdd.html"},{"type":"type","title":"Nostrum.Struct.Event.GuildScheduledEventUserAdd.guild_id/0","doc":"The id of the guild the event is scheduled for.","ref":"Nostrum.Struct.Event.GuildScheduledEventUserAdd.html#t:guild_id/0"},{"type":"type","title":"Nostrum.Struct.Event.GuildScheduledEventUserAdd.guild_scheduled_event_id/0","doc":"The id of the scheduled event.","ref":"Nostrum.Struct.Event.GuildScheduledEventUserAdd.html#t:guild_scheduled_event_id/0"},{"type":"type","title":"Nostrum.Struct.Event.GuildScheduledEventUserAdd.t/0","doc":"","ref":"Nostrum.Struct.Event.GuildScheduledEventUserAdd.html#t:t/0"},{"type":"type","title":"Nostrum.Struct.Event.GuildScheduledEventUserAdd.user_id/0","doc":"The id of the user that subscribed to the scheduled event.","ref":"Nostrum.Struct.Event.GuildScheduledEventUserAdd.html#t:user_id/0"},{"type":"module","title":"Nostrum.Struct.Event.GuildScheduledEventUserRemove","doc":"Struct representing a guild scheduled event user remove event.","ref":"Nostrum.Struct.Event.GuildScheduledEventUserRemove.html"},{"type":"type","title":"Nostrum.Struct.Event.GuildScheduledEventUserRemove.guild_id/0","doc":"The id of the guild the event is scheduled for.","ref":"Nostrum.Struct.Event.GuildScheduledEventUserRemove.html#t:guild_id/0"},{"type":"type","title":"Nostrum.Struct.Event.GuildScheduledEventUserRemove.guild_scheduled_event_id/0","doc":"The id of the scheduled event.","ref":"Nostrum.Struct.Event.GuildScheduledEventUserRemove.html#t:guild_scheduled_event_id/0"},{"type":"type","title":"Nostrum.Struct.Event.GuildScheduledEventUserRemove.t/0","doc":"","ref":"Nostrum.Struct.Event.GuildScheduledEventUserRemove.html#t:t/0"},{"type":"type","title":"Nostrum.Struct.Event.GuildScheduledEventUserRemove.user_id/0","doc":"The id of the user that unsubscribed to the scheduled event.","ref":"Nostrum.Struct.Event.GuildScheduledEventUserRemove.html#t:user_id/0"},{"type":"module","title":"Nostrum.Struct.Event.InviteCreate","doc":"Struct representing an Invite Create event","ref":"Nostrum.Struct.Event.InviteCreate.html"},{"type":"type","title":"Nostrum.Struct.Event.InviteCreate.channel_id/0","doc":"Channel id of the channel this invite is for.","ref":"Nostrum.Struct.Event.InviteCreate.html#t:channel_id/0"},{"type":"type","title":"Nostrum.Struct.Event.InviteCreate.code/0","doc":"The unique invite code.","ref":"Nostrum.Struct.Event.InviteCreate.html#t:code/0"},{"type":"type","title":"Nostrum.Struct.Event.InviteCreate.created_at/0","doc":"The time at which the invite was created.","ref":"Nostrum.Struct.Event.InviteCreate.html#t:created_at/0"},{"type":"type","title":"Nostrum.Struct.Event.InviteCreate.guild_id/0","doc":"Guild id of the guild this invite is for.","ref":"Nostrum.Struct.Event.InviteCreate.html#t:guild_id/0"},{"type":"type","title":"Nostrum.Struct.Event.InviteCreate.inviter/0","doc":"The user that created the invite.","ref":"Nostrum.Struct.Event.InviteCreate.html#t:inviter/0"},{"type":"type","title":"Nostrum.Struct.Event.InviteCreate.max_age/0","doc":"Duration (in seconds) after which the invite expires.","ref":"Nostrum.Struct.Event.InviteCreate.html#t:max_age/0"},{"type":"type","title":"Nostrum.Struct.Event.InviteCreate.max_uses/0","doc":"Max number of times this invite can be used.","ref":"Nostrum.Struct.Event.InviteCreate.html#t:max_uses/0"},{"type":"type","title":"Nostrum.Struct.Event.InviteCreate.t/0","doc":"","ref":"Nostrum.Struct.Event.InviteCreate.html#t:t/0"},{"type":"type","title":"Nostrum.Struct.Event.InviteCreate.target_user/0","doc":"Partially populated user struct of the target user for this invite.","ref":"Nostrum.Struct.Event.InviteCreate.html#t:target_user/0"},{"type":"type","title":"Nostrum.Struct.Event.InviteCreate.target_user_type/0","doc":"The type of user target for this invite.","ref":"Nostrum.Struct.Event.InviteCreate.html#t:target_user_type/0"},{"type":"type","title":"Nostrum.Struct.Event.InviteCreate.temporary/0","doc":"Whether this invite only grants temporary membership.","ref":"Nostrum.Struct.Event.InviteCreate.html#t:temporary/0"},{"type":"type","title":"Nostrum.Struct.Event.InviteCreate.uses/0","doc":"Number of times this invite has been used.","ref":"Nostrum.Struct.Event.InviteCreate.html#t:uses/0"},{"type":"module","title":"Nostrum.Struct.Event.InviteDelete","doc":"Struct representing an Invite Delete event","ref":"Nostrum.Struct.Event.InviteDelete.html"},{"type":"type","title":"Nostrum.Struct.Event.InviteDelete.channel_id/0","doc":"Channel id of the channel this invite is for.","ref":"Nostrum.Struct.Event.InviteDelete.html#t:channel_id/0"},{"type":"type","title":"Nostrum.Struct.Event.InviteDelete.code/0","doc":"The unique invite code.","ref":"Nostrum.Struct.Event.InviteDelete.html#t:code/0"},{"type":"type","title":"Nostrum.Struct.Event.InviteDelete.guild_id/0","doc":"Guild id of the guild this invite is for.","ref":"Nostrum.Struct.Event.InviteDelete.html#t:guild_id/0"},{"type":"type","title":"Nostrum.Struct.Event.InviteDelete.t/0","doc":"","ref":"Nostrum.Struct.Event.InviteDelete.html#t:t/0"},{"type":"module","title":"Nostrum.Struct.Event.MessageDelete","doc":"Struct representing a Message Delete event","ref":"Nostrum.Struct.Event.MessageDelete.html"},{"type":"type","title":"Nostrum.Struct.Event.MessageDelete.channel_id/0","doc":"Channel id of the deleted message","ref":"Nostrum.Struct.Event.MessageDelete.html#t:channel_id/0"},{"type":"type","title":"Nostrum.Struct.Event.MessageDelete.deleted_message/0","doc":"The deleted message, if it was found\nin the message cache.","ref":"Nostrum.Struct.Event.MessageDelete.html#t:deleted_message/0"},{"type":"type","title":"Nostrum.Struct.Event.MessageDelete.guild_id/0","doc":"Guild id of the deleted message\n\n`nil` if a non-guild message was deleted.","ref":"Nostrum.Struct.Event.MessageDelete.html#t:guild_id/0"},{"type":"type","title":"Nostrum.Struct.Event.MessageDelete.id/0","doc":"Id of the deleted message","ref":"Nostrum.Struct.Event.MessageDelete.html#t:id/0"},{"type":"type","title":"Nostrum.Struct.Event.MessageDelete.t/0","doc":"","ref":"Nostrum.Struct.Event.MessageDelete.html#t:t/0"},{"type":"module","title":"Nostrum.Struct.Event.MessageDeleteBulk","doc":"Struct representing a Message Delete Bulk event","ref":"Nostrum.Struct.Event.MessageDeleteBulk.html"},{"type":"type","title":"Nostrum.Struct.Event.MessageDeleteBulk.channel_id/0","doc":"Channel id of the deleted message","ref":"Nostrum.Struct.Event.MessageDeleteBulk.html#t:channel_id/0"},{"type":"type","title":"Nostrum.Struct.Event.MessageDeleteBulk.deleted_messages/0","doc":"The deleted messages, if any were not found\nin the message cache they will only have the id and channel_id set.","ref":"Nostrum.Struct.Event.MessageDeleteBulk.html#t:deleted_messages/0"},{"type":"type","title":"Nostrum.Struct.Event.MessageDeleteBulk.guild_id/0","doc":"Guild id of the deleted message\n\n`nil` if a non-guild message was deleted.","ref":"Nostrum.Struct.Event.MessageDeleteBulk.html#t:guild_id/0"},{"type":"type","title":"Nostrum.Struct.Event.MessageDeleteBulk.ids/0","doc":"Ids of the deleted messages","ref":"Nostrum.Struct.Event.MessageDeleteBulk.html#t:ids/0"},{"type":"type","title":"Nostrum.Struct.Event.MessageDeleteBulk.t/0","doc":"","ref":"Nostrum.Struct.Event.MessageDeleteBulk.html#t:t/0"},{"type":"module","title":"Nostrum.Struct.Event.MessageReactionAdd","doc":"Sent when a user adds a reaction to a message","ref":"Nostrum.Struct.Event.MessageReactionAdd.html"},{"type":"type","title":"Nostrum.Struct.Event.MessageReactionAdd.channel_id/0","doc":"Channel in which the reaction was added","ref":"Nostrum.Struct.Event.MessageReactionAdd.html#t:channel_id/0"},{"type":"type","title":"Nostrum.Struct.Event.MessageReactionAdd.emoji/0","doc":"The (partial) emoji used to react","ref":"Nostrum.Struct.Event.MessageReactionAdd.html#t:emoji/0"},{"type":"type","title":"Nostrum.Struct.Event.MessageReactionAdd.guild_id/0","doc":"Guild ID in which the reaction was added, if applicable","ref":"Nostrum.Struct.Event.MessageReactionAdd.html#t:guild_id/0"},{"type":"type","title":"Nostrum.Struct.Event.MessageReactionAdd.member/0","doc":"The member who reacted, if this happened on a guild","ref":"Nostrum.Struct.Event.MessageReactionAdd.html#t:member/0"},{"type":"type","title":"Nostrum.Struct.Event.MessageReactionAdd.message_id/0","doc":"Message to which the reaction was added","ref":"Nostrum.Struct.Event.MessageReactionAdd.html#t:message_id/0"},{"type":"type","title":"Nostrum.Struct.Event.MessageReactionAdd.t/0","doc":"Event sent when a user adds a reaction to a message","ref":"Nostrum.Struct.Event.MessageReactionAdd.html#t:t/0"},{"type":"type","title":"Nostrum.Struct.Event.MessageReactionAdd.user_id/0","doc":"ID of the user who added the reaction","ref":"Nostrum.Struct.Event.MessageReactionAdd.html#t:user_id/0"},{"type":"module","title":"Nostrum.Struct.Event.MessageReactionRemove","doc":"Sent when a user removes a reaction from a message","ref":"Nostrum.Struct.Event.MessageReactionRemove.html"},{"type":"type","title":"Nostrum.Struct.Event.MessageReactionRemove.channel_id/0","doc":"ID of the channel in which the reaction was created","ref":"Nostrum.Struct.Event.MessageReactionRemove.html#t:channel_id/0"},{"type":"type","title":"Nostrum.Struct.Event.MessageReactionRemove.emoji/0","doc":"Partial emoji object that was removed","ref":"Nostrum.Struct.Event.MessageReactionRemove.html#t:emoji/0"},{"type":"type","title":"Nostrum.Struct.Event.MessageReactionRemove.guild_id/0","doc":"ID of the guild on which the message lives, if applicable","ref":"Nostrum.Struct.Event.MessageReactionRemove.html#t:guild_id/0"},{"type":"type","title":"Nostrum.Struct.Event.MessageReactionRemove.message_id/0","doc":"ID of the message to which the reaction was attached","ref":"Nostrum.Struct.Event.MessageReactionRemove.html#t:message_id/0"},{"type":"type","title":"Nostrum.Struct.Event.MessageReactionRemove.t/0","doc":"Event sent when a user removes a reaction from a message","ref":"Nostrum.Struct.Event.MessageReactionRemove.html#t:t/0"},{"type":"type","title":"Nostrum.Struct.Event.MessageReactionRemove.user_id/0","doc":"Author of the reaction","ref":"Nostrum.Struct.Event.MessageReactionRemove.html#t:user_id/0"},{"type":"module","title":"Nostrum.Struct.Event.MessageReactionRemoveAll","doc":"Sent when a user explicitly removes all reactions from a message","ref":"Nostrum.Struct.Event.MessageReactionRemoveAll.html"},{"type":"type","title":"Nostrum.Struct.Event.MessageReactionRemoveAll.channel_id/0","doc":"ID of the channel in which the message resides.","ref":"Nostrum.Struct.Event.MessageReactionRemoveAll.html#t:channel_id/0"},{"type":"type","title":"Nostrum.Struct.Event.MessageReactionRemoveAll.guild_id/0","doc":"ID of the guild for the message, if applicable.","ref":"Nostrum.Struct.Event.MessageReactionRemoveAll.html#t:guild_id/0"},{"type":"type","title":"Nostrum.Struct.Event.MessageReactionRemoveAll.message_id/0","doc":"ID of the message from which all reactions were removed.","ref":"Nostrum.Struct.Event.MessageReactionRemoveAll.html#t:message_id/0"},{"type":"type","title":"Nostrum.Struct.Event.MessageReactionRemoveAll.t/0","doc":"Event sent when a user explicitly removes all reactions from a message","ref":"Nostrum.Struct.Event.MessageReactionRemoveAll.html#t:t/0"},{"type":"module","title":"Nostrum.Struct.Event.MessageReactionRemoveEmoji","doc":"Sent when a bot removes all instances of a given emoji from the reactions of a message","ref":"Nostrum.Struct.Event.MessageReactionRemoveEmoji.html"},{"type":"type","title":"Nostrum.Struct.Event.MessageReactionRemoveEmoji.channel_id/0","doc":"Channel in which the message resides.","ref":"Nostrum.Struct.Event.MessageReactionRemoveEmoji.html#t:channel_id/0"},{"type":"type","title":"Nostrum.Struct.Event.MessageReactionRemoveEmoji.emoji/0","doc":"The (partial) emoji that was removed.","ref":"Nostrum.Struct.Event.MessageReactionRemoveEmoji.html#t:emoji/0"},{"type":"type","title":"Nostrum.Struct.Event.MessageReactionRemoveEmoji.guild_id/0","doc":"Guild on which the message resides, if applicable.","ref":"Nostrum.Struct.Event.MessageReactionRemoveEmoji.html#t:guild_id/0"},{"type":"type","title":"Nostrum.Struct.Event.MessageReactionRemoveEmoji.message_id/0","doc":"Message from which the emoji was removed.","ref":"Nostrum.Struct.Event.MessageReactionRemoveEmoji.html#t:message_id/0"},{"type":"type","title":"Nostrum.Struct.Event.MessageReactionRemoveEmoji.t/0","doc":"Event sent when a bot removes all instances of a given emoji from the reactions of a message","ref":"Nostrum.Struct.Event.MessageReactionRemoveEmoji.html#t:t/0"},{"type":"module","title":"Nostrum.Struct.Event.PartialApplication","doc":"Sent on `READY`","ref":"Nostrum.Struct.Event.PartialApplication.html"},{"type":"type","title":"Nostrum.Struct.Event.PartialApplication.flags/0","doc":"Public flags of the application.\n\nSee https://discord.com/developers/docs/resources/application#application-object-application-flags","ref":"Nostrum.Struct.Event.PartialApplication.html#t:flags/0"},{"type":"type","title":"Nostrum.Struct.Event.PartialApplication.id/0","doc":"ID of the application","ref":"Nostrum.Struct.Event.PartialApplication.html#t:id/0"},{"type":"type","title":"Nostrum.Struct.Event.PartialApplication.t/0","doc":"Event sent as part of the `READY` payload.","ref":"Nostrum.Struct.Event.PartialApplication.html#t:t/0"},{"type":"module","title":"Nostrum.Struct.Event.PollVoteChange","doc":"Represents an addition or removal of a vote from a Discord poll.\n\nFor polls where multiple answers were selected, one of these events will be fired for each vote.","ref":"Nostrum.Struct.Event.PollVoteChange.html"},{"type":"type","title":"Nostrum.Struct.Event.PollVoteChange.answer_id/0","doc":"ID corresponding to the answer_id in the `t:Nostrum.Struct.Message.Poll.answers/0` list","ref":"Nostrum.Struct.Event.PollVoteChange.html#t:answer_id/0"},{"type":"type","title":"Nostrum.Struct.Event.PollVoteChange.channel_id/0","doc":"ID of the channel the vote took place in","ref":"Nostrum.Struct.Event.PollVoteChange.html#t:channel_id/0"},{"type":"type","title":"Nostrum.Struct.Event.PollVoteChange.guild_id/0","doc":"ID of the guild the poll is in (unless it is a private channel)","ref":"Nostrum.Struct.Event.PollVoteChange.html#t:guild_id/0"},{"type":"type","title":"Nostrum.Struct.Event.PollVoteChange.message_id/0","doc":"ID of the message the poll was attached to","ref":"Nostrum.Struct.Event.PollVoteChange.html#t:message_id/0"},{"type":"type","title":"Nostrum.Struct.Event.PollVoteChange.t/0","doc":"Event representing a addition or removal of a vote from a poll","ref":"Nostrum.Struct.Event.PollVoteChange.html#t:t/0"},{"type":"type","title":"Nostrum.Struct.Event.PollVoteChange.type/0","doc":"Whether the vote was an addition or removal for a vote of the option","ref":"Nostrum.Struct.Event.PollVoteChange.html#t:type/0"},{"type":"type","title":"Nostrum.Struct.Event.PollVoteChange.user_id/0","doc":"ID of the user that has voted","ref":"Nostrum.Struct.Event.PollVoteChange.html#t:user_id/0"},{"type":"module","title":"Nostrum.Struct.Event.Ready","doc":"Sent after initial handshake with the gateway","ref":"Nostrum.Struct.Event.Ready.html"},{"type":"type","title":"Nostrum.Struct.Event.Ready.application/0","doc":"Partial application object with `id` and `flags`","ref":"Nostrum.Struct.Event.Ready.html#t:application/0"},{"type":"type","title":"Nostrum.Struct.Event.Ready.guilds/0","doc":"The guilds that the bot user is in","ref":"Nostrum.Struct.Event.Ready.html#t:guilds/0"},{"type":"type","title":"Nostrum.Struct.Event.Ready.resume_gateway_url/0","doc":"Similar to `t:session_id/0`, this is the URL that Discord has requested\nreconnection attempts to be made against.\n\nNostrum stores and handles this for you, this value is provided for\ndebugging purposes.","ref":"Nostrum.Struct.Event.Ready.html#t:resume_gateway_url/0"},{"type":"type","title":"Nostrum.Struct.Event.Ready.session_id/0","doc":"Used for resuming connections.\n\nIf you are wondering whether you need to use this, you probably don't.\nNostrum handles reconnections for you.","ref":"Nostrum.Struct.Event.Ready.html#t:session_id/0"},{"type":"type","title":"Nostrum.Struct.Event.Ready.shard/0","doc":"A pair of two integers ``{shard_id, num_shards}``.\n\nFor more information, see\nhttps://discord.com/developers/docs/topics/gateway#sharding.","ref":"Nostrum.Struct.Event.Ready.html#t:shard/0"},{"type":"type","title":"Nostrum.Struct.Event.Ready.t/0","doc":"Event sent after initial handshake with the gateway","ref":"Nostrum.Struct.Event.Ready.html#t:t/0"},{"type":"type","title":"Nostrum.Struct.Event.Ready.user/0","doc":"Information about the bot user","ref":"Nostrum.Struct.Event.Ready.html#t:user/0"},{"type":"type","title":"Nostrum.Struct.Event.Ready.v/0","doc":"Gateway version.\nSee https://discord.com/developers/docs/topics/gateway#gateways-gateway-versions","ref":"Nostrum.Struct.Event.Ready.html#t:v/0"},{"type":"module","title":"Nostrum.Struct.Event.SpeakingUpdate","doc":"Struct representing a Nostrum-generated Speaking Update event\n\nNostrum will generate this event when the bot starts or stops playing audio.","ref":"Nostrum.Struct.Event.SpeakingUpdate.html"},{"type":"type","title":"Nostrum.Struct.Event.SpeakingUpdate.channel_id/0","doc":"Id of the channel this speaking update is occurring in.","ref":"Nostrum.Struct.Event.SpeakingUpdate.html#t:channel_id/0"},{"type":"type","title":"Nostrum.Struct.Event.SpeakingUpdate.current_url/0","doc":"Current URL being played if a readable format.","ref":"Nostrum.Struct.Event.SpeakingUpdate.html#t:current_url/0"},{"type":"type","title":"Nostrum.Struct.Event.SpeakingUpdate.guild_id/0","doc":"Id of the guild this speaking update is occurring in.","ref":"Nostrum.Struct.Event.SpeakingUpdate.html#t:guild_id/0"},{"type":"type","title":"Nostrum.Struct.Event.SpeakingUpdate.speaking/0","doc":"Boolean representing if bot has started or stopped speaking.","ref":"Nostrum.Struct.Event.SpeakingUpdate.html#t:speaking/0"},{"type":"type","title":"Nostrum.Struct.Event.SpeakingUpdate.t/0","doc":"","ref":"Nostrum.Struct.Event.SpeakingUpdate.html#t:t/0"},{"type":"type","title":"Nostrum.Struct.Event.SpeakingUpdate.timed_out/0","doc":"Boolean representing if speaking update was caused by an audio timeout.","ref":"Nostrum.Struct.Event.SpeakingUpdate.html#t:timed_out/0"},{"type":"module","title":"Nostrum.Struct.Event.ThreadListSync","doc":"Struct representing a Thread List Sync event.\n\nThis event is sent when the user gains access to a channel.","ref":"Nostrum.Struct.Event.ThreadListSync.html"},{"type":"type","title":"Nostrum.Struct.Event.ThreadListSync.channel_ids/0","doc":"The parent channel ids whose threads are being synced.\nIf omitted, all threads were synced for the entire guild.","ref":"Nostrum.Struct.Event.ThreadListSync.html#t:channel_ids/0"},{"type":"type","title":"Nostrum.Struct.Event.ThreadListSync.guid_id/0","doc":"The id of the guild.","ref":"Nostrum.Struct.Event.ThreadListSync.html#t:guid_id/0"},{"type":"type","title":"Nostrum.Struct.Event.ThreadListSync.members/0","doc":"All thread member objects from the synced threads for the current user,\nindicating which threads the user has been added to.","ref":"Nostrum.Struct.Event.ThreadListSync.html#t:members/0"},{"type":"type","title":"Nostrum.Struct.Event.ThreadListSync.t/0","doc":"","ref":"Nostrum.Struct.Event.ThreadListSync.html#t:t/0"},{"type":"type","title":"Nostrum.Struct.Event.ThreadListSync.threads/0","doc":"All active threads in the given channels that the user can access.","ref":"Nostrum.Struct.Event.ThreadListSync.html#t:threads/0"},{"type":"module","title":"Nostrum.Struct.Event.ThreadMembersUpdate","doc":"Struct representing a thread members update event.\n\nThis event is sent whenever a user is added or removed from a thread.\n\nIf the current user does not have the `GUILD_MEMBERS` intent,\nthis event will only be sent when the current user is added to or removed from a thread.","ref":"Nostrum.Struct.Event.ThreadMembersUpdate.html"},{"type":"type","title":"Nostrum.Struct.Event.ThreadMembersUpdate.added_members/0","doc":"The members that were added to the thread.","ref":"Nostrum.Struct.Event.ThreadMembersUpdate.html#t:added_members/0"},{"type":"type","title":"Nostrum.Struct.Event.ThreadMembersUpdate.guild_id/0","doc":"The id of the guild the thread is in.","ref":"Nostrum.Struct.Event.ThreadMembersUpdate.html#t:guild_id/0"},{"type":"type","title":"Nostrum.Struct.Event.ThreadMembersUpdate.id/0","doc":"The id of the thread.","ref":"Nostrum.Struct.Event.ThreadMembersUpdate.html#t:id/0"},{"type":"type","title":"Nostrum.Struct.Event.ThreadMembersUpdate.member_count/0","doc":"The approximate number of members in the thread.\n\nThis number is capped at 50, though there can be more members in the thread.","ref":"Nostrum.Struct.Event.ThreadMembersUpdate.html#t:member_count/0"},{"type":"type","title":"Nostrum.Struct.Event.ThreadMembersUpdate.removed_member_ids/0","doc":"The ids of the members that were removed from the thread.","ref":"Nostrum.Struct.Event.ThreadMembersUpdate.html#t:removed_member_ids/0"},{"type":"type","title":"Nostrum.Struct.Event.ThreadMembersUpdate.t/0","doc":"","ref":"Nostrum.Struct.Event.ThreadMembersUpdate.html#t:t/0"},{"type":"module","title":"Nostrum.Struct.Event.TypingStart","doc":"Sent when a user starts typing in a channel","ref":"Nostrum.Struct.Event.TypingStart.html"},{"type":"type","title":"Nostrum.Struct.Event.TypingStart.channel_id/0","doc":"Channel in which the user started typing","ref":"Nostrum.Struct.Event.TypingStart.html#t:channel_id/0"},{"type":"type","title":"Nostrum.Struct.Event.TypingStart.guild_id/0","doc":"ID of the guild where the user started typing, if applicable","ref":"Nostrum.Struct.Event.TypingStart.html#t:guild_id/0"},{"type":"type","title":"Nostrum.Struct.Event.TypingStart.member/0","doc":"The member who started typing if this happened in a guild","ref":"Nostrum.Struct.Event.TypingStart.html#t:member/0"},{"type":"type","title":"Nostrum.Struct.Event.TypingStart.t/0","doc":"Event sent when a user starts typing in a channel","ref":"Nostrum.Struct.Event.TypingStart.html#t:t/0"},{"type":"type","title":"Nostrum.Struct.Event.TypingStart.timestamp/0","doc":"When the user started typing","ref":"Nostrum.Struct.Event.TypingStart.html#t:timestamp/0"},{"type":"type","title":"Nostrum.Struct.Event.TypingStart.user_id/0","doc":"ID of the user who started typing","ref":"Nostrum.Struct.Event.TypingStart.html#t:user_id/0"},{"type":"module","title":"Nostrum.Struct.Event.VoiceReady","doc":"Struct representing a Nostrum-generated Voice Ready event\n\nNostrum will generate this event when the bot joins a voice channel\nand is ready to play audio.\n\nListening to this event may be used for bots that begin playing audio\ndirectly after joining a voice channel as an alternative to waiting\nuntil `Nostrum.Voice.ready?/1` returns `true`.","ref":"Nostrum.Struct.Event.VoiceReady.html"},{"type":"type","title":"Nostrum.Struct.Event.VoiceReady.channel_id/0","doc":"Id of the channel that voice is ready in.","ref":"Nostrum.Struct.Event.VoiceReady.html#t:channel_id/0"},{"type":"type","title":"Nostrum.Struct.Event.VoiceReady.guild_id/0","doc":"Id of the guild that voice is ready in.","ref":"Nostrum.Struct.Event.VoiceReady.html#t:guild_id/0"},{"type":"type","title":"Nostrum.Struct.Event.VoiceReady.t/0","doc":"","ref":"Nostrum.Struct.Event.VoiceReady.html#t:t/0"},{"type":"module","title":"Nostrum.Struct.Event.VoiceServerUpdate","doc":"Sent when a guild's voice server is updated","ref":"Nostrum.Struct.Event.VoiceServerUpdate.html"},{"type":"type","title":"Nostrum.Struct.Event.VoiceServerUpdate.endpoint/0","doc":"The voice server host","ref":"Nostrum.Struct.Event.VoiceServerUpdate.html#t:endpoint/0"},{"type":"type","title":"Nostrum.Struct.Event.VoiceServerUpdate.guild_id/0","doc":"Guild this voice server update is for","ref":"Nostrum.Struct.Event.VoiceServerUpdate.html#t:guild_id/0"},{"type":"type","title":"Nostrum.Struct.Event.VoiceServerUpdate.t/0","doc":"Event sent when a guild's voice server is updated","ref":"Nostrum.Struct.Event.VoiceServerUpdate.html#t:t/0"},{"type":"type","title":"Nostrum.Struct.Event.VoiceServerUpdate.token/0","doc":"Voice connection token","ref":"Nostrum.Struct.Event.VoiceServerUpdate.html#t:token/0"},{"type":"module","title":"Nostrum.Struct.Event.VoiceState","doc":"Represents a user's voice connection status","ref":"Nostrum.Struct.Event.VoiceState.html"},{"type":"type","title":"Nostrum.Struct.Event.VoiceState.channel_id/0","doc":"Channel ID this voice state is for","ref":"Nostrum.Struct.Event.VoiceState.html#t:channel_id/0"},{"type":"type","title":"Nostrum.Struct.Event.VoiceState.deaf/0","doc":"Whether this user is deafened by the server","ref":"Nostrum.Struct.Event.VoiceState.html#t:deaf/0"},{"type":"type","title":"Nostrum.Struct.Event.VoiceState.guild_id/0","doc":"Guild ID this voice state is for, if applicable","ref":"Nostrum.Struct.Event.VoiceState.html#t:guild_id/0"},{"type":"type","title":"Nostrum.Struct.Event.VoiceState.member/0","doc":"Guild member this voice state is for, if applicable","ref":"Nostrum.Struct.Event.VoiceState.html#t:member/0"},{"type":"type","title":"Nostrum.Struct.Event.VoiceState.mute/0","doc":"Whether this user is muteened by the server","ref":"Nostrum.Struct.Event.VoiceState.html#t:mute/0"},{"type":"type","title":"Nostrum.Struct.Event.VoiceState.request_to_speak_timestamp/0","doc":"Time at which the user requested to speak, if applicable","ref":"Nostrum.Struct.Event.VoiceState.html#t:request_to_speak_timestamp/0"},{"type":"type","title":"Nostrum.Struct.Event.VoiceState.self_deaf/0","doc":"Whether this user is locally deafened","ref":"Nostrum.Struct.Event.VoiceState.html#t:self_deaf/0"},{"type":"type","title":"Nostrum.Struct.Event.VoiceState.self_mute/0","doc":"Whether this user is locally muted","ref":"Nostrum.Struct.Event.VoiceState.html#t:self_mute/0"},{"type":"type","title":"Nostrum.Struct.Event.VoiceState.self_stream/0","doc":"Whether the user is streaming using \"Go Live\"","ref":"Nostrum.Struct.Event.VoiceState.html#t:self_stream/0"},{"type":"type","title":"Nostrum.Struct.Event.VoiceState.self_video/0","doc":"Whether this user's camera is enabled","ref":"Nostrum.Struct.Event.VoiceState.html#t:self_video/0"},{"type":"type","title":"Nostrum.Struct.Event.VoiceState.session_id/0","doc":"Session ID for this voice state","ref":"Nostrum.Struct.Event.VoiceState.html#t:session_id/0"},{"type":"type","title":"Nostrum.Struct.Event.VoiceState.suppress/0","doc":"Whether this user is muted by the current user","ref":"Nostrum.Struct.Event.VoiceState.html#t:suppress/0"},{"type":"type","title":"Nostrum.Struct.Event.VoiceState.t/0","doc":"Event sent when a user's voice status is updated","ref":"Nostrum.Struct.Event.VoiceState.html#t:t/0"},{"type":"type","title":"Nostrum.Struct.Event.VoiceState.user_id/0","doc":"User this voice state is for","ref":"Nostrum.Struct.Event.VoiceState.html#t:user_id/0"},{"type":"module","title":"Nostrum.Constants.ApplicationCommandOptionType","doc":"Defines available types used for defining application command option types for passed options\nFor more info please refer to https://discord.com/developers/docs/interactions/application-commands#application-command-object-application-command-option-type","ref":"Nostrum.Constants.ApplicationCommandOptionType.html"},{"type":"function","title":"Nostrum.Constants.ApplicationCommandOptionType.attachment/0","doc":"","ref":"Nostrum.Constants.ApplicationCommandOptionType.html#attachment/0"},{"type":"function","title":"Nostrum.Constants.ApplicationCommandOptionType.boolean/0","doc":"","ref":"Nostrum.Constants.ApplicationCommandOptionType.html#boolean/0"},{"type":"function","title":"Nostrum.Constants.ApplicationCommandOptionType.channel/0","doc":"","ref":"Nostrum.Constants.ApplicationCommandOptionType.html#channel/0"},{"type":"function","title":"Nostrum.Constants.ApplicationCommandOptionType.integer/0","doc":"","ref":"Nostrum.Constants.ApplicationCommandOptionType.html#integer/0"},{"type":"function","title":"Nostrum.Constants.ApplicationCommandOptionType.mentionable/0","doc":"","ref":"Nostrum.Constants.ApplicationCommandOptionType.html#mentionable/0"},{"type":"function","title":"Nostrum.Constants.ApplicationCommandOptionType.number/0","doc":"","ref":"Nostrum.Constants.ApplicationCommandOptionType.html#number/0"},{"type":"function","title":"Nostrum.Constants.ApplicationCommandOptionType.role/0","doc":"","ref":"Nostrum.Constants.ApplicationCommandOptionType.html#role/0"},{"type":"function","title":"Nostrum.Constants.ApplicationCommandOptionType.string/0","doc":"","ref":"Nostrum.Constants.ApplicationCommandOptionType.html#string/0"},{"type":"function","title":"Nostrum.Constants.ApplicationCommandOptionType.sub_command/0","doc":"","ref":"Nostrum.Constants.ApplicationCommandOptionType.html#sub_command/0"},{"type":"function","title":"Nostrum.Constants.ApplicationCommandOptionType.sub_command_group/0","doc":"","ref":"Nostrum.Constants.ApplicationCommandOptionType.html#sub_command_group/0"},{"type":"function","title":"Nostrum.Constants.ApplicationCommandOptionType.user/0","doc":"","ref":"Nostrum.Constants.ApplicationCommandOptionType.html#user/0"},{"type":"module","title":"Nostrum.Constants.ApplicationCommandPermissionType","doc":"Defines available types for application command permissions\nFor more info please refer to https://discord.com/developers/docs/interactions/application-commands#application-command-permissions-object-application-command-permission-type","ref":"Nostrum.Constants.ApplicationCommandPermissionType.html"},{"type":"function","title":"Nostrum.Constants.ApplicationCommandPermissionType.channel/0","doc":"","ref":"Nostrum.Constants.ApplicationCommandPermissionType.html#channel/0"},{"type":"function","title":"Nostrum.Constants.ApplicationCommandPermissionType.role/0","doc":"","ref":"Nostrum.Constants.ApplicationCommandPermissionType.html#role/0"},{"type":"function","title":"Nostrum.Constants.ApplicationCommandPermissionType.user/0","doc":"","ref":"Nostrum.Constants.ApplicationCommandPermissionType.html#user/0"},{"type":"module","title":"Nostrum.Constants.ApplicationCommandType","doc":"Defines available types used for selecting application command types\nFor more info please refer to https://discord.com/developers/docs/interactions/application-commands#application-command-object-application-command-types","ref":"Nostrum.Constants.ApplicationCommandType.html"},{"type":"function","title":"Nostrum.Constants.ApplicationCommandType.chat_input/0","doc":"","ref":"Nostrum.Constants.ApplicationCommandType.html#chat_input/0"},{"type":"function","title":"Nostrum.Constants.ApplicationCommandType.message/0","doc":"","ref":"Nostrum.Constants.ApplicationCommandType.html#message/0"},{"type":"function","title":"Nostrum.Constants.ApplicationCommandType.user/0","doc":"","ref":"Nostrum.Constants.ApplicationCommandType.html#user/0"},{"type":"module","title":"Nostrum.Constants.ButtonStyle","doc":"Defines available styles for button message components\nFor more info please refer to https://discord.com/developers/docs/interactions/message-components#button-object-button-styles","ref":"Nostrum.Constants.ButtonStyle.html"},{"type":"function","title":"Nostrum.Constants.ButtonStyle.danger/0","doc":"","ref":"Nostrum.Constants.ButtonStyle.html#danger/0"},{"type":"function","title":"Nostrum.Constants.ButtonStyle.link/0","doc":"","ref":"Nostrum.Constants.ButtonStyle.html#link/0"},{"type":"function","title":"Nostrum.Constants.ButtonStyle.primary/0","doc":"","ref":"Nostrum.Constants.ButtonStyle.html#primary/0"},{"type":"function","title":"Nostrum.Constants.ButtonStyle.secondary/0","doc":"","ref":"Nostrum.Constants.ButtonStyle.html#secondary/0"},{"type":"function","title":"Nostrum.Constants.ButtonStyle.success/0","doc":"","ref":"Nostrum.Constants.ButtonStyle.html#success/0"},{"type":"module","title":"Nostrum.Constants.ChannelType","doc":"Defines available types for channels\nFor more info please refer to https://discord.com/developers/docs/resources/channel#channel-object-channel-types","ref":"Nostrum.Constants.ChannelType.html"},{"type":"function","title":"Nostrum.Constants.ChannelType.announcement_thread/0","doc":"","ref":"Nostrum.Constants.ChannelType.html#announcement_thread/0"},{"type":"function","title":"Nostrum.Constants.ChannelType.dm/0","doc":"","ref":"Nostrum.Constants.ChannelType.html#dm/0"},{"type":"function","title":"Nostrum.Constants.ChannelType.group_db/0","doc":"","ref":"Nostrum.Constants.ChannelType.html#group_db/0"},{"type":"function","title":"Nostrum.Constants.ChannelType.guild_announcement/0","doc":"","ref":"Nostrum.Constants.ChannelType.html#guild_announcement/0"},{"type":"function","title":"Nostrum.Constants.ChannelType.guild_category/0","doc":"","ref":"Nostrum.Constants.ChannelType.html#guild_category/0"},{"type":"function","title":"Nostrum.Constants.ChannelType.guild_directory/0","doc":"","ref":"Nostrum.Constants.ChannelType.html#guild_directory/0"},{"type":"function","title":"Nostrum.Constants.ChannelType.guild_forum/0","doc":"","ref":"Nostrum.Constants.ChannelType.html#guild_forum/0"},{"type":"function","title":"Nostrum.Constants.ChannelType.guild_text/0","doc":"","ref":"Nostrum.Constants.ChannelType.html#guild_text/0"},{"type":"function","title":"Nostrum.Constants.ChannelType.guild_voice/0","doc":"","ref":"Nostrum.Constants.ChannelType.html#guild_voice/0"},{"type":"function","title":"Nostrum.Constants.ChannelType.private_thread/0","doc":"","ref":"Nostrum.Constants.ChannelType.html#private_thread/0"},{"type":"function","title":"Nostrum.Constants.ChannelType.public_thread/0","doc":"","ref":"Nostrum.Constants.ChannelType.html#public_thread/0"},{"type":"module","title":"Nostrum.Constants.ComponentType","doc":"Defines available types for message components\nFor more info please refer to https://discord.com/developers/docs/interactions/message-components#component-object-component-types","ref":"Nostrum.Constants.ComponentType.html"},{"type":"function","title":"Nostrum.Constants.ComponentType.action_row/0","doc":"Container for other components","ref":"Nostrum.Constants.ComponentType.html#action_row/0"},{"type":"function","title":"Nostrum.Constants.ComponentType.button/0","doc":"Button object","ref":"Nostrum.Constants.ComponentType.html#button/0"},{"type":"function","title":"Nostrum.Constants.ComponentType.channel_select/0","doc":"Select menu for channels","ref":"Nostrum.Constants.ComponentType.html#channel_select/0"},{"type":"function","title":"Nostrum.Constants.ComponentType.mentionable_select/0","doc":"Select menu for mentionables (users and roles)","ref":"Nostrum.Constants.ComponentType.html#mentionable_select/0"},{"type":"function","title":"Nostrum.Constants.ComponentType.role_select/0","doc":"Select menu for roles","ref":"Nostrum.Constants.ComponentType.html#role_select/0"},{"type":"function","title":"Nostrum.Constants.ComponentType.string_select/0","doc":"Select menu for picking from defined text options","ref":"Nostrum.Constants.ComponentType.html#string_select/0"},{"type":"function","title":"Nostrum.Constants.ComponentType.text_input/0","doc":"Text input object","ref":"Nostrum.Constants.ComponentType.html#text_input/0"},{"type":"function","title":"Nostrum.Constants.ComponentType.user_select/0","doc":"Select menu for users","ref":"Nostrum.Constants.ComponentType.html#user_select/0"},{"type":"module","title":"Nostrum.Constants.InteractionCallbackType","doc":"Defines available types for interaction callbacks\nFor more info please refer to https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-response-object-interaction-callback-type","ref":"Nostrum.Constants.InteractionCallbackType.html"},{"type":"function","title":"Nostrum.Constants.InteractionCallbackType.application_command_autocomplete_result/0","doc":"","ref":"Nostrum.Constants.InteractionCallbackType.html#application_command_autocomplete_result/0"},{"type":"function","title":"Nostrum.Constants.InteractionCallbackType.channel_message_with_source/0","doc":"","ref":"Nostrum.Constants.InteractionCallbackType.html#channel_message_with_source/0"},{"type":"function","title":"Nostrum.Constants.InteractionCallbackType.deferred_channel_message_with_source/0","doc":"","ref":"Nostrum.Constants.InteractionCallbackType.html#deferred_channel_message_with_source/0"},{"type":"function","title":"Nostrum.Constants.InteractionCallbackType.deferred_update_message/0","doc":"","ref":"Nostrum.Constants.InteractionCallbackType.html#deferred_update_message/0"},{"type":"function","title":"Nostrum.Constants.InteractionCallbackType.modal/0","doc":"","ref":"Nostrum.Constants.InteractionCallbackType.html#modal/0"},{"type":"function","title":"Nostrum.Constants.InteractionCallbackType.pong/0","doc":"","ref":"Nostrum.Constants.InteractionCallbackType.html#pong/0"},{"type":"function","title":"Nostrum.Constants.InteractionCallbackType.update_message/0","doc":"","ref":"Nostrum.Constants.InteractionCallbackType.html#update_message/0"},{"type":"module","title":"Nostrum.Constants.InteractionType","doc":"Defines available types for interactions\nFor more info please refer to https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-object-interaction-type","ref":"Nostrum.Constants.InteractionType.html"},{"type":"function","title":"Nostrum.Constants.InteractionType.application_command/0","doc":"","ref":"Nostrum.Constants.InteractionType.html#application_command/0"},{"type":"function","title":"Nostrum.Constants.InteractionType.application_command_autocomplete/0","doc":"","ref":"Nostrum.Constants.InteractionType.html#application_command_autocomplete/0"},{"type":"function","title":"Nostrum.Constants.InteractionType.message_component/0","doc":"","ref":"Nostrum.Constants.InteractionType.html#message_component/0"},{"type":"function","title":"Nostrum.Constants.InteractionType.modal_submit/0","doc":"","ref":"Nostrum.Constants.InteractionType.html#modal_submit/0"},{"type":"function","title":"Nostrum.Constants.InteractionType.ping/0","doc":"","ref":"Nostrum.Constants.InteractionType.html#ping/0"},{"type":"module","title":"Nostrum.Constants.TextInputStyle","doc":"Defines available styles for modal text inputs\nFor more info please refer to https://discord.com/developers/docs/interactions/message-components#text-inputs-text-input-styles","ref":"Nostrum.Constants.TextInputStyle.html"},{"type":"function","title":"Nostrum.Constants.TextInputStyle.paragraph/0","doc":"","ref":"Nostrum.Constants.TextInputStyle.html#paragraph/0"},{"type":"function","title":"Nostrum.Constants.TextInputStyle.short/0","doc":"","ref":"Nostrum.Constants.TextInputStyle.html#short/0"},{"type":"module","title":"Nostrum.Constants.WebhookType","doc":"Defines available types for channels\nFor more info please refer to https://discord.com/developers/docs/resources/webhook#webhook-object-webhook-types","ref":"Nostrum.Constants.WebhookType.html"},{"type":"function","title":"Nostrum.Constants.WebhookType.application/0","doc":"","ref":"Nostrum.Constants.WebhookType.html#application/0"},{"type":"function","title":"Nostrum.Constants.WebhookType.channel_follower/0","doc":"","ref":"Nostrum.Constants.WebhookType.html#channel_follower/0"},{"type":"function","title":"Nostrum.Constants.WebhookType.incoming/0","doc":"","ref":"Nostrum.Constants.WebhookType.html#incoming/0"},{"type":"module","title":"Nostrum.Snowflake","doc":"Functions that work on Snowflakes.","ref":"Nostrum.Snowflake.html"},{"type":"function","title":"Nostrum.Snowflake.cast/1","doc":"Attempts to convert a term into a snowflake.","ref":"Nostrum.Snowflake.html#cast/1"},{"type":"function","title":"Examples - Nostrum.Snowflake.cast/1","doc":"```elixir\niex> Nostrum.Snowflake.cast(200317799350927360)\n{:ok, 200317799350927360}\n\niex> Nostrum.Snowflake.cast(\"200317799350927360\")\n{:ok, 200317799350927360}\n\niex> Nostrum.Snowflake.cast(nil)\n{:ok, nil}\n\niex> Nostrum.Snowflake.cast(true)\n:error\n\niex> Nostrum.Snowflake.cast(-1)\n:error\n```","ref":"Nostrum.Snowflake.html#cast/1-examples"},{"type":"function","title":"Nostrum.Snowflake.cast!/1","doc":"Same as `cast/1`, except it raises an `ArgumentError` on failure.","ref":"Nostrum.Snowflake.html#cast!/1"},{"type":"function","title":"Nostrum.Snowflake.creation_time/1","doc":"Returns the creation time of the snowflake.","ref":"Nostrum.Snowflake.html#creation_time/1"},{"type":"function","title":"Examples - Nostrum.Snowflake.creation_time/1","doc":"```elixir\niex> Nostrum.Snowflake.creation_time(177888205536886784)\n~U[2016-05-05 21:04:13.203Z]\n```","ref":"Nostrum.Snowflake.html#creation_time/1-examples"},{"type":"function","title":"Nostrum.Snowflake.dump/1","doc":"Convert a snowflake into its external representation.","ref":"Nostrum.Snowflake.html#dump/1"},{"type":"function","title":"Examples - Nostrum.Snowflake.dump/1","doc":"```elixir\niex> Nostrum.Snowflake.dump(109112383011581952)\n\"109112383011581952\"\n```","ref":"Nostrum.Snowflake.html#dump/1-examples"},{"type":"function","title":"Nostrum.Snowflake.from_datetime/1","doc":"Converts the given `datetime` into a snowflake.\n\nIf `datetime` occurred before the discord epoch, the function will return\n`:error`.\n\nThe converted snowflake's last 22 bits will be zeroed out due to missing data.","ref":"Nostrum.Snowflake.html#from_datetime/1"},{"type":"function","title":"Examples - Nostrum.Snowflake.from_datetime/1","doc":"```elixir\niex> {:ok, dt, _} = DateTime.from_iso8601(\"2016-05-05T21:04:13.203Z\")\niex> Nostrum.Snowflake.from_datetime(dt)\n{:ok, 177888205536755712}\n\niex> {:ok, dt, _} = DateTime.from_iso8601(\"1998-12-25T00:00:00.000Z\")\niex> Nostrum.Snowflake.from_datetime(dt)\n:error\n```","ref":"Nostrum.Snowflake.html#from_datetime/1-examples"},{"type":"function","title":"Nostrum.Snowflake.from_datetime!/1","doc":"Same as `from_datetime/1`, except it raises an `ArgumentError` on failure.","ref":"Nostrum.Snowflake.html#from_datetime!/1"},{"type":"macro","title":"Nostrum.Snowflake.is_snowflake/1","doc":"Returns `true` if `term` is a snowflake; otherwise returns `false`.","ref":"Nostrum.Snowflake.html#is_snowflake/1"},{"type":"macro","title":"Examples - Nostrum.Snowflake.is_snowflake/1","doc":"```elixir\niex> Nostrum.Snowflake.is_snowflake(89918932789497856)\ntrue\n\niex> Nostrum.Snowflake.is_snowflake(-1)\nfalse\n\niex> Nostrum.Snowflake.is_snowflake(0xFFFFFFFFFFFFFFFF + 1)\nfalse\n\niex> Nostrum.Snowflake.is_snowflake(\"117789813427535878\")\nfalse\n```","ref":"Nostrum.Snowflake.html#is_snowflake/1-examples"},{"type":"type","title":"Nostrum.Snowflake.external_snowflake/0","doc":"The type that represents snowflakes in JSON.\n\nIn JSON, Snowflakes are typically represented as strings due\nto some languages not being able to represent such a large number.","ref":"Nostrum.Snowflake.html#t:external_snowflake/0"},{"type":"type","title":"Nostrum.Snowflake.t/0","doc":"The snowflake type.\n\nSnowflakes are 64-bit unsigned integers used to represent discord\nobject ids.","ref":"Nostrum.Snowflake.html#t:t/0"},{"type":"module","title":"Nostrum.Token","doc":"A helper module for verifying the Discord bot token.\n\nThe token can be generated in the \"Bot\" tab of your Application the [Discord Developer Portal](https://discord.com/developers/applications) and\ncan be configured in your config file.\n\n```elixir\nconfig :nostrum,\n token: \"666\" # The token of your bot as a string\n```","ref":"Nostrum.Token.html"},{"type":"function","title":"Nostrum.Token.check_token!/0","doc":"Checks if the Discord bot token has the correct format.\n\nWe check if the token is a binary followed by splitting it into 3 parts separated by a dot `\".\"`.\nThe first part is the Base64 encoded user_id which we decode and parse into as integer.\nThe second part is an encoded timestamp, and the last part an arbitrary cryptographic signature.\n\nRaises on failure.","ref":"Nostrum.Token.html#check_token!/0"},{"type":"function","title":"Examples - Nostrum.Token.check_token!/0","doc":"iex> token = \"OTY4NTU2MzQ4MzkwMzkxODU5.G49NjP.pD8PLpKp-Xx8sr-8m1DCxSPTJZdcpcJZOExc1c\"\n iex> Nostrum.Token.check_token!(token)\n :ok\n\n iex> token = \"ODY4MDcxODUzMDMyMzU3OTc4.YPqU6Q.jNJcq1daGG3otexX3c1LcxCpgpQ\"\n iex> Nostrum.Token.check_token!(token)\n :ok","ref":"Nostrum.Token.html#check_token!/0-examples"},{"type":"function","title":"Nostrum.Token.check_token!/1","doc":"","ref":"Nostrum.Token.html#check_token!/1"},{"type":"module","title":"Nostrum.Util","doc":"Utility functions","ref":"Nostrum.Util.html"},{"type":"function","title":"Nostrum.Util.enum_to_struct/2","doc":"","ref":"Nostrum.Util.html#enum_to_struct/2"},{"type":"function","title":"Nostrum.Util.gateway/0","doc":"Returns the gateway url and shard count for current websocket connections.\n\nIf by chance no gateway connection has been made, will fetch the url to use and store it\nfor future use.","ref":"Nostrum.Util.html#gateway/0"},{"type":"function","title":"Nostrum.Util.get_all_shard_latencies/0","doc":"Gets the latencies of all shard connections.\n\nCalls `get_shard_latency/1` on all shards and returns a map whose keys are\nshard nums and whose values are latencies in milliseconds.","ref":"Nostrum.Util.html#get_all_shard_latencies/0"},{"type":"function","title":"Nostrum.Util.get_shard_latency/1","doc":"Gets the latency of the shard connection from a `Nostrum.Struct.WSState.t()` struct.\n\nReturns the latency in milliseconds as an integer, returning nil if unknown.","ref":"Nostrum.Util.html#get_shard_latency/1"},{"type":"function","title":"Nostrum.Util.map_update_if_present/3","doc":"Updates a map with a new value if the key is present.\nOtherwise, returns the map unchanged.","ref":"Nostrum.Util.html#map_update_if_present/3"},{"type":"function","title":"Nostrum.Util.maybe_to_atom/1","doc":"Attempts to convert a string to an atom.\n\nBinary `token`s that consist of digits are assumed to be snowflakes, and will\nbe parsed as such.\n\nSome maps sent from Discord are integer-indexed, for these we just return the integer\nprovided.\n\nIf atom does not currently exist, will warn that we're doing an unsafe conversion.","ref":"Nostrum.Util.html#maybe_to_atom/1"},{"type":"function","title":"Nostrum.Util.maybe_to_datetime/1","doc":"Converts possibly nil ISO8601 timestamp to a `DateTime`.\n\nIf a `DateTime` is provided, return it as-is.","ref":"Nostrum.Util.html#maybe_to_datetime/1"},{"type":"function","title":"Nostrum.Util.maybe_to_unixtime/1","doc":"Converts possibly nil ISO8601 timestamp to unix time.","ref":"Nostrum.Util.html#maybe_to_unixtime/1"},{"type":"function","title":"Nostrum.Util.now/0","doc":"Returns the number of milliseconds since unix epoch.","ref":"Nostrum.Util.html#now/0"},{"type":"function","title":"Nostrum.Util.now_iso/0","doc":"Returns the current date as an ISO formatted string.","ref":"Nostrum.Util.html#now_iso/0"},{"type":"function","title":"Nostrum.Util.num_shards/0","doc":"Returns the total amount of shards as per the configuration.","ref":"Nostrum.Util.html#num_shards/0"},{"type":"function","title":"Return value - Nostrum.Util.num_shards/0","doc":"- If you specified your shards as `:auto`, the return value will be the\nrecommended number of shards as given by the gateway.\n\n- If you explicitly specified your shard numbers as an integer, it will be\nthe given number.\n\n- If you specified your shards in the form `{lowest, highest, total}` to\nstart a specific range of the total shards you want to start, this will be\nthe `total` value.\n\nShould Discord not supply us with any shard information, this will return\n`1`.\n\nNote that this is not the number of currently active shards, but the number\nof shards specified in your config.","ref":"Nostrum.Util.html#num_shards/0-return-value"},{"type":"function","title":"Nostrum.Util.safe_atom_map/1","doc":"Converts a map into an atom-keyed map.\n\nGiven a map with variable type keys, returns the same map with all keys as `atoms`.\nTo support maps keyed with integers (such as in Discord's interaction data),\nbinaries that appear to be integers will be parsed as such.\n\nThis function will attempt to convert keys to an existing atom, and if that fails will default to\ncreating a new atom while displaying a warning. The idea here is that we should be able to see\nif any results from Discord are giving variable keys. Since we *will* define all\ntypes of objects returned by Discord, the amount of new atoms created *SHOULD* be 0. 👀","ref":"Nostrum.Util.html#safe_atom_map/1"},{"type":"function","title":"Nostrum.Util.unused_atoms/0","doc":"Since we're being sacrilegious and converting strings to atoms from the WS, there will be some\natoms that we see that aren't defined in any Discord structs. This method mainly serves as a\nmeans to define those atoms once so the user isn't warned about them in the\n`Nostrum.Util.maybe_to_atom/1` function when they are in fact harmless.\n\nThe function is public to prevent it from being optimized out at compile time.","ref":"Nostrum.Util.html#unused_atoms/0"},{"type":"function","title":"Nostrum.Util.usec_now/0","doc":"Returns the number of microseconds since unix epoch.","ref":"Nostrum.Util.html#usec_now/0"},{"type":"behaviour","title":"Nostrum.Store.GuildShardMapping","doc":"Behaviour & dispatcher for storing guild to shard mappings.","ref":"Nostrum.Store.GuildShardMapping.html"},{"type":"behaviour","title":"Purpose - Nostrum.Store.GuildShardMapping","doc":"When nostrum needs to run API calls over the gateway and multiple shards are\nused, it needs to determine which shard process will run the request. This\nmodule stores a mapping of guild IDs to their respective shard numbers. It is\nunlikely you need to use this module directly yourself.","ref":"Nostrum.Store.GuildShardMapping.html#module-purpose"},{"type":"behaviour","title":"Configuration - Nostrum.Store.GuildShardMapping","doc":"By default, nostrum will use `Elixir.Nostrum.Store.GuildShardMapping.ETS` to store the\nmapping. To override this, set the `[:stores, :guild_shard_mapping]` setting\non nostrum's application configuration:\n\n```elixir\nconfig :nostrum,\n stores: %{\n guild_shard_mapping: MyBot.Nostrum.Store.GuildShardMapping\n }\n```\n\nThis setting must be set at compile time.","ref":"Nostrum.Store.GuildShardMapping.html#module-configuration"},{"type":"callback","title":"Nostrum.Store.GuildShardMapping.child_spec/1","doc":"Retrieve the child specification for starting this mapping under a supervisor.","ref":"Nostrum.Store.GuildShardMapping.html#c:child_spec/1"},{"type":"function","title":"Nostrum.Store.GuildShardMapping.create/2","doc":"","ref":"Nostrum.Store.GuildShardMapping.html#create/2"},{"type":"callback","title":"Nostrum.Store.GuildShardMapping.create/2","doc":"Create a new mapping for the given guild ID to the given shard ID.","ref":"Nostrum.Store.GuildShardMapping.html#c:create/2"},{"type":"function","title":"Nostrum.Store.GuildShardMapping.delete/1","doc":"","ref":"Nostrum.Store.GuildShardMapping.html#delete/1"},{"type":"callback","title":"Nostrum.Store.GuildShardMapping.delete/1","doc":"Delete any stored mapping for the given guild ID.","ref":"Nostrum.Store.GuildShardMapping.html#c:delete/1"},{"type":"function","title":"Nostrum.Store.GuildShardMapping.get/1","doc":"","ref":"Nostrum.Store.GuildShardMapping.html#get/1"},{"type":"callback","title":"Nostrum.Store.GuildShardMapping.get/1","doc":"Retrieve the shard number for the given guild ID.\n\nReturns `nil` if no associated shard number was found.","ref":"Nostrum.Store.GuildShardMapping.html#c:get/1"},{"type":"module","title":"Nostrum.Store.Supervisor","doc":"Supervises processes managing nostrum's internal state.\n\nPlease see the following modules for more details:\n- `Nostrum.Store.GuildShardMapping`\n- `Nostrum.Store.UnavailableGuild`","ref":"Nostrum.Store.Supervisor.html"},{"type":"function","title":"Nostrum.Store.Supervisor.child_spec/1","doc":"Returns a specification to start this module under a supervisor.\n\nSee `Supervisor`.","ref":"Nostrum.Store.Supervisor.html#child_spec/1"},{"type":"function","title":"Nostrum.Store.Supervisor.init/1","doc":"","ref":"Nostrum.Store.Supervisor.html#init/1"},{"type":"function","title":"Nostrum.Store.Supervisor.start_link/1","doc":"","ref":"Nostrum.Store.Supervisor.html#start_link/1"},{"type":"behaviour","title":"Nostrum.Store.UnavailableGuild","doc":"Behaviour & dispatcher for storing unavailable guilds.","ref":"Nostrum.Store.UnavailableGuild.html"},{"type":"behaviour","title":"Purpose - Nostrum.Store.UnavailableGuild","doc":"The `GUILD_CREATE` gateway event on its own provides no means to determine\nwhether the guild we receive is a guild that the bot joined, or a guild that\nhas just become available over the gateway. To work around this, this store\nkeeps track of unavailable guilds we received to determine whether a guild\nsent over this event is unavailable or new. It is therefore unlikely this\nmodule needs to be used outside of nostrum.","ref":"Nostrum.Store.UnavailableGuild.html#module-purpose"},{"type":"behaviour","title":"Configuration - Nostrum.Store.UnavailableGuild","doc":"By default, nostrum will use `Elixir.Nostrum.Store.UnavailableGuild.ETS` to store\nunavailable guilds. To override this, set the `[:stores,\n:unavailable_guilds]` setting on nostrum's application configuration:\n\n```elixir\nconfig :nostrum,\n stores: %{\n unavailable_guilds: MyBot.Nostrum.Store.UnavailableGuild\n }\n```\n\nThis setting must be set at compile time.","ref":"Nostrum.Store.UnavailableGuild.html#module-configuration"},{"type":"behaviour","title":"Implementation - Nostrum.Store.UnavailableGuild","doc":"If implementing your own unavailable guild store, in addition to the\ncallbacks of this module, you must also provide the function `child_spec/1`.\nThe recommended approach is to spawn a `Supervisor` to manage your store.","ref":"Nostrum.Store.UnavailableGuild.html#module-implementation"},{"type":"callback","title":"Nostrum.Store.UnavailableGuild.child_spec/1","doc":"Retrieve the child specification for starting this mapping under a supervisor.","ref":"Nostrum.Store.UnavailableGuild.html#c:child_spec/1"},{"type":"function","title":"Nostrum.Store.UnavailableGuild.create/1","doc":"","ref":"Nostrum.Store.UnavailableGuild.html#create/1"},{"type":"callback","title":"Nostrum.Store.UnavailableGuild.create/1","doc":"Mark the given guild as unavailable.","ref":"Nostrum.Store.UnavailableGuild.html#c:create/1"},{"type":"function","title":"Nostrum.Store.UnavailableGuild.is?/1","doc":"","ref":"Nostrum.Store.UnavailableGuild.html#is?/1"},{"type":"callback","title":"Nostrum.Store.UnavailableGuild.is?/1","doc":"Return whether the guild is unavailable.","ref":"Nostrum.Store.UnavailableGuild.html#c:is?/1"},{"type":"module","title":"Nostrum.Cache.MessageCache.Mnesia","doc":"An Mnesia-based cache for messages.\n\nPlease note that this module is only compiled if Mnesia is available on\nyour system. See the Mnesia section of the [State](functionality/state.md)\ndocumentation for more information.\n\nTo retrieve the table name used by this cache, use `table/0`.\n\n\nBy default, the cache will store up to `10_000` messages,\nand will evict the `100` oldest messages when the limit is reached.\n\nThe reason for the eviction count is that with mnesia it is more efficient to\nfind X oldest records and delete them all at once than to find the oldest\nrecord and delete it each time a new record is added.\n\nThe Mnesia cache supports the following configuration options:\n- `size_limit`: The maximum number of messages to store in the cache.\ndefault: `10_000`\n- `eviction_count`: The number of messages to evict when the cache is full.\ndefault: `100`\n- `table_name`: The name of the Mnesia table to use for the cache.\ndefault: `:nostrum_messages`\n- `compressed`: Whether to use compressed in memory storage for the table.\ndefault: `false`\n- `type`: Sets the type of Mnesia table created to cache messages.\nCan be either `:set` or `:ordered_set`, by choosing `:ordered_set` the\neviction of the oldest messages will be more efficient, however it means\nthat the table cannot be changed to only store its contents on disk later.\ndefault: `:ordered_set`\n\nTo change this configuration, you can add the following to your\n`config.exs`:\n\n```elixir\nconfig :nostrum,\n caches: %{\n messages: {Nostrum.Cache.MessageCache.Mnesia,\n size_limit: 1000, eviction_count: 50,\n table_name: :my_custom_messages_table_name,\n compressed: true, type: :set}\n }\n```\n\nYou can also change the table name used by the cache by setting the\n`table_name` field in the configuration for the `messages` cache.","ref":"Nostrum.Cache.MessageCache.Mnesia.html"},{"type":"function","title":"Nostrum.Cache.MessageCache.Mnesia.bulk_delete/2","doc":"Removes and returns a list of messages from the cache.\nMessages not found in the cache will not be included in the returned list.","ref":"Nostrum.Cache.MessageCache.Mnesia.html#bulk_delete/2"},{"type":"function","title":"Nostrum.Cache.MessageCache.Mnesia.channel_delete/1","doc":"Removes all messages for a channel which was deleted.","ref":"Nostrum.Cache.MessageCache.Mnesia.html#channel_delete/1"},{"type":"function","title":"Nostrum.Cache.MessageCache.Mnesia.child_spec/1","doc":"Returns a specification to start this module under a supervisor.\n\nSee `Supervisor`.","ref":"Nostrum.Cache.MessageCache.Mnesia.html#child_spec/1"},{"type":"function","title":"Nostrum.Cache.MessageCache.Mnesia.clear/0","doc":"Clear any objects in the cache.","ref":"Nostrum.Cache.MessageCache.Mnesia.html#clear/0"},{"type":"function","title":"Nostrum.Cache.MessageCache.Mnesia.create/1","doc":"Adds a message to the cache.","ref":"Nostrum.Cache.MessageCache.Mnesia.html#create/1"},{"type":"function","title":"Nostrum.Cache.MessageCache.Mnesia.delete/2","doc":"Removes a message from the cache.","ref":"Nostrum.Cache.MessageCache.Mnesia.html#delete/2"},{"type":"function","title":"Nostrum.Cache.MessageCache.Mnesia.get/1","doc":"Retrieve a single message from the cache by id.","ref":"Nostrum.Cache.MessageCache.Mnesia.html#get/1"},{"type":"function","title":"Nostrum.Cache.MessageCache.Mnesia.init/1","doc":"Set up the cache's Mnesia table.","ref":"Nostrum.Cache.MessageCache.Mnesia.html#init/1"},{"type":"function","title":"Nostrum.Cache.MessageCache.Mnesia.query_handle/0","doc":"Return a QLC query handle for the cache for read operations.","ref":"Nostrum.Cache.MessageCache.Mnesia.html#query_handle/0"},{"type":"function","title":"Nostrum.Cache.MessageCache.Mnesia.start_link/1","doc":"Start the supervisor.","ref":"Nostrum.Cache.MessageCache.Mnesia.html#start_link/1"},{"type":"function","title":"Nostrum.Cache.MessageCache.Mnesia.table/0","doc":"Retrieve the Mnesia table name used for the cache.","ref":"Nostrum.Cache.MessageCache.Mnesia.html#table/0"},{"type":"function","title":"Nostrum.Cache.MessageCache.Mnesia.teardown/0","doc":"Drop the table used for caching.","ref":"Nostrum.Cache.MessageCache.Mnesia.html#teardown/0"},{"type":"function","title":"Nostrum.Cache.MessageCache.Mnesia.update/1","doc":"Updates a message in the cache.","ref":"Nostrum.Cache.MessageCache.Mnesia.html#update/1"},{"type":"function","title":"Nostrum.Cache.MessageCache.Mnesia.wrap_qlc/1","doc":"Wrap QLC operations in a transaction","ref":"Nostrum.Cache.MessageCache.Mnesia.html#wrap_qlc/1"},{"type":"module","title":"Nostrum.Cache.MessageCache.Noop","doc":"A no-op message cache.\n\nThis cache does not store any messages and always returns `{:error, :not_found}`\nfor any operation.","ref":"Nostrum.Cache.MessageCache.Noop.html"},{"type":"function","title":"Nostrum.Cache.MessageCache.Noop.child_spec/1","doc":"Returns a specification to start this module under a supervisor.\n\nSee `Supervisor`.","ref":"Nostrum.Cache.MessageCache.Noop.html#child_spec/1"},{"type":"function","title":"Nostrum.Cache.MessageCache.Noop.start_link/1","doc":"Start the supervisor.","ref":"Nostrum.Cache.MessageCache.Noop.html#start_link/1"},{"type":"module","title":"Nostrum.Cache.ChannelGuildMapping.ETS","doc":"Maps channels to guilds via `:ets`.\n\nPlease use the function `table/0` for retrieving a reference to the table\nused by nostrum.","ref":"Nostrum.Cache.ChannelGuildMapping.ETS.html"},{"type":"function","title":"Nostrum.Cache.ChannelGuildMapping.ETS.child_spec/1","doc":"Returns a specification to start this module under a supervisor.\n\nSee `Supervisor`.","ref":"Nostrum.Cache.ChannelGuildMapping.ETS.html#child_spec/1"},{"type":"function","title":"Nostrum.Cache.ChannelGuildMapping.ETS.create/2","doc":"Create a mapping of the given channel to the given guild.","ref":"Nostrum.Cache.ChannelGuildMapping.ETS.html#create/2"},{"type":"function","title":"Nostrum.Cache.ChannelGuildMapping.ETS.delete/1","doc":"Remove any mapping associated with the given channel.","ref":"Nostrum.Cache.ChannelGuildMapping.ETS.html#delete/1"},{"type":"function","title":"Nostrum.Cache.ChannelGuildMapping.ETS.get/1","doc":"Retrieve the guild ID for the given channel ID, if present.","ref":"Nostrum.Cache.ChannelGuildMapping.ETS.html#get/1"},{"type":"function","title":"Nostrum.Cache.ChannelGuildMapping.ETS.init/1","doc":"Set up the ETS table.","ref":"Nostrum.Cache.ChannelGuildMapping.ETS.html#init/1"},{"type":"function","title":"Nostrum.Cache.ChannelGuildMapping.ETS.start_link/1","doc":"Start the supervisor.","ref":"Nostrum.Cache.ChannelGuildMapping.ETS.html#start_link/1"},{"type":"function","title":"Nostrum.Cache.ChannelGuildMapping.ETS.table/0","doc":"Retrieve the table used by this module.","ref":"Nostrum.Cache.ChannelGuildMapping.ETS.html#table/0"},{"type":"module","title":"Nostrum.Cache.ChannelGuildMapping.Mnesia","doc":"An Mnesia-based mapping between channel and guild IDs.\n\nPlease note that this module is only compiled if Mnesia is available on\nyour system. See the Mnesia section of the [State](functionality/state.md)\ndocumentation for more information.\n\nTo retrieve the table name used by this cache, use `table/0`.","ref":"Nostrum.Cache.ChannelGuildMapping.Mnesia.html"},{"type":"function","title":"Nostrum.Cache.ChannelGuildMapping.Mnesia.child_spec/1","doc":"Returns a specification to start this module under a supervisor.\n\nSee `Supervisor`.","ref":"Nostrum.Cache.ChannelGuildMapping.Mnesia.html#child_spec/1"},{"type":"function","title":"Nostrum.Cache.ChannelGuildMapping.Mnesia.create/2","doc":"Create a mapping of the given channel to the given guild.","ref":"Nostrum.Cache.ChannelGuildMapping.Mnesia.html#create/2"},{"type":"function","title":"Nostrum.Cache.ChannelGuildMapping.Mnesia.delete/1","doc":"Remove any mapping associated with the given channel.","ref":"Nostrum.Cache.ChannelGuildMapping.Mnesia.html#delete/1"},{"type":"function","title":"Nostrum.Cache.ChannelGuildMapping.Mnesia.get/1","doc":"Retrieve the guild ID for the given channel ID, if present.","ref":"Nostrum.Cache.ChannelGuildMapping.Mnesia.html#get/1"},{"type":"function","title":"Nostrum.Cache.ChannelGuildMapping.Mnesia.init/1","doc":"Set up the ETS table.","ref":"Nostrum.Cache.ChannelGuildMapping.Mnesia.html#init/1"},{"type":"function","title":"Nostrum.Cache.ChannelGuildMapping.Mnesia.start_link/1","doc":"Start the supervisor.","ref":"Nostrum.Cache.ChannelGuildMapping.Mnesia.html#start_link/1"},{"type":"function","title":"Nostrum.Cache.ChannelGuildMapping.Mnesia.table/0","doc":"Retrieve the table used by this module.","ref":"Nostrum.Cache.ChannelGuildMapping.Mnesia.html#table/0"},{"type":"function","title":"Nostrum.Cache.ChannelGuildMapping.Mnesia.teardown/0","doc":"Drop the table used for caching.","ref":"Nostrum.Cache.ChannelGuildMapping.Mnesia.html#teardown/0"},{"type":"module","title":"Nostrum.Cache.ChannelGuildMapping.NoOp","doc":"NoOp implementation for the Channel Guild map","ref":"Nostrum.Cache.ChannelGuildMapping.NoOp.html"},{"type":"function","title":"Nostrum.Cache.ChannelGuildMapping.NoOp.child_spec/1","doc":"Returns a specification to start this module under a supervisor.\n\nSee `Supervisor`.","ref":"Nostrum.Cache.ChannelGuildMapping.NoOp.html#child_spec/1"},{"type":"function","title":"Nostrum.Cache.ChannelGuildMapping.NoOp.start_link/1","doc":"Start the supervisor.","ref":"Nostrum.Cache.ChannelGuildMapping.NoOp.html#start_link/1"},{"type":"module","title":"Nostrum.Cache.GuildCache.ETS","doc":"An ETS-based cache for guilds.\n\nThe supervisor defined by this module will set up the ETS table associated\nwith it.\n\nThe default table name under which guilds are cached is `nostrum_guilds`.\nIn addition to the cache behaviour implementations provided by this module,\nyou can also call regular ETS table methods on it, such as `:ets.info`.\n\nNote that users should not call the functions not related to this specific\nimplementation of the cache directly. Instead, call the functions of\n`Nostrum.Cache.GuildCache` directly, which will dispatch to the configured\ncache.","ref":"Nostrum.Cache.GuildCache.ETS.html"},{"type":"function","title":"Nostrum.Cache.GuildCache.ETS.channel_create/2","doc":"Create the given channel for the given guild in the cache.","ref":"Nostrum.Cache.GuildCache.ETS.html#channel_create/2"},{"type":"function","title":"Nostrum.Cache.GuildCache.ETS.channel_delete/2","doc":"Delete the channel from the given guild in the cache.","ref":"Nostrum.Cache.GuildCache.ETS.html#channel_delete/2"},{"type":"function","title":"Nostrum.Cache.GuildCache.ETS.channel_update/2","doc":"Update the channel on the given guild in the cache.","ref":"Nostrum.Cache.GuildCache.ETS.html#channel_update/2"},{"type":"function","title":"Nostrum.Cache.GuildCache.ETS.child_spec/1","doc":"Returns a specification to start this module under a supervisor.\n\nSee `Supervisor`.","ref":"Nostrum.Cache.GuildCache.ETS.html#child_spec/1"},{"type":"function","title":"Nostrum.Cache.GuildCache.ETS.create/1","doc":"Create the given guild in the cache.","ref":"Nostrum.Cache.GuildCache.ETS.html#create/1"},{"type":"function","title":"Nostrum.Cache.GuildCache.ETS.delete/1","doc":"Delete the given guild from the cache.","ref":"Nostrum.Cache.GuildCache.ETS.html#delete/1"},{"type":"function","title":"Nostrum.Cache.GuildCache.ETS.emoji_update/2","doc":"Update the emoji list for the given guild in the cache.","ref":"Nostrum.Cache.GuildCache.ETS.html#emoji_update/2"},{"type":"function","title":"Nostrum.Cache.GuildCache.ETS.init/1","doc":"Set up the cache's ETS table.","ref":"Nostrum.Cache.GuildCache.ETS.html#init/1"},{"type":"function","title":"Nostrum.Cache.GuildCache.ETS.member_count_down/1","doc":"Decrement the guild member count by one.","ref":"Nostrum.Cache.GuildCache.ETS.html#member_count_down/1"},{"type":"function","title":"Nostrum.Cache.GuildCache.ETS.member_count_up/1","doc":"Increment the guild member count by one.","ref":"Nostrum.Cache.GuildCache.ETS.html#member_count_up/1"},{"type":"function","title":"Nostrum.Cache.GuildCache.ETS.query_handle/0","doc":"Get a QLC query handle for the guild cache.","ref":"Nostrum.Cache.GuildCache.ETS.html#query_handle/0"},{"type":"function","title":"Nostrum.Cache.GuildCache.ETS.role_create/2","doc":"Create the given role in the given guild in the cache.","ref":"Nostrum.Cache.GuildCache.ETS.html#role_create/2"},{"type":"function","title":"Nostrum.Cache.GuildCache.ETS.role_delete/2","doc":"Delete the given role from the given guild in the cache.","ref":"Nostrum.Cache.GuildCache.ETS.html#role_delete/2"},{"type":"function","title":"Nostrum.Cache.GuildCache.ETS.role_update/2","doc":"Update the given role in the given guild in the cache.","ref":"Nostrum.Cache.GuildCache.ETS.html#role_update/2"},{"type":"function","title":"Nostrum.Cache.GuildCache.ETS.start_link/1","doc":"Start the supervisor.","ref":"Nostrum.Cache.GuildCache.ETS.html#start_link/1"},{"type":"function","title":"Nostrum.Cache.GuildCache.ETS.stickers_update/2","doc":"Update the sticker list for the given guild in the cache.","ref":"Nostrum.Cache.GuildCache.ETS.html#stickers_update/2"},{"type":"function","title":"Nostrum.Cache.GuildCache.ETS.tabname/0","doc":"Retrieve the ETS table name used for the cache.","ref":"Nostrum.Cache.GuildCache.ETS.html#tabname/0"},{"type":"function","title":"Nostrum.Cache.GuildCache.ETS.update/1","doc":"Update the given guild in the cache.","ref":"Nostrum.Cache.GuildCache.ETS.html#update/1"},{"type":"function","title":"Nostrum.Cache.GuildCache.ETS.voice_state_update/2","doc":"Update guild voice states with the given voice state in the cache.","ref":"Nostrum.Cache.GuildCache.ETS.html#voice_state_update/2"},{"type":"module","title":"Nostrum.Cache.GuildCache.Mnesia","doc":"An Mnesia-based cache for guilds.\n\nPlease note that this module is only compiled if Mnesia is available on\nyour system. See the Mnesia section of the [State](functionality/state.md)\ndocumentation for more information.\n\nTo retrieve the table name used by this cache, use `table/0`.","ref":"Nostrum.Cache.GuildCache.Mnesia.html"},{"type":"function","title":"Nostrum.Cache.GuildCache.Mnesia.channel_create/2","doc":"Create the given channel for the given guild in the cache.","ref":"Nostrum.Cache.GuildCache.Mnesia.html#channel_create/2"},{"type":"function","title":"Nostrum.Cache.GuildCache.Mnesia.channel_delete/2","doc":"Delete the channel from the given guild in the cache.","ref":"Nostrum.Cache.GuildCache.Mnesia.html#channel_delete/2"},{"type":"function","title":"Nostrum.Cache.GuildCache.Mnesia.channel_update/2","doc":"Update the channel on the given guild in the cache.","ref":"Nostrum.Cache.GuildCache.Mnesia.html#channel_update/2"},{"type":"function","title":"Nostrum.Cache.GuildCache.Mnesia.child_spec/1","doc":"Returns a specification to start this module under a supervisor.\n\nSee `Supervisor`.","ref":"Nostrum.Cache.GuildCache.Mnesia.html#child_spec/1"},{"type":"function","title":"Nostrum.Cache.GuildCache.Mnesia.clear/0","doc":"Clear any objects in the cache.","ref":"Nostrum.Cache.GuildCache.Mnesia.html#clear/0"},{"type":"function","title":"Nostrum.Cache.GuildCache.Mnesia.create/1","doc":"Create a guild from upstream data.","ref":"Nostrum.Cache.GuildCache.Mnesia.html#create/1"},{"type":"function","title":"Nostrum.Cache.GuildCache.Mnesia.delete/1","doc":"Remove the given guild from the cache.","ref":"Nostrum.Cache.GuildCache.Mnesia.html#delete/1"},{"type":"function","title":"Nostrum.Cache.GuildCache.Mnesia.emoji_update/2","doc":"Update the emoji list for the given guild in the cache.","ref":"Nostrum.Cache.GuildCache.Mnesia.html#emoji_update/2"},{"type":"function","title":"Nostrum.Cache.GuildCache.Mnesia.init/1","doc":"Set up the cache's Mnesia table.","ref":"Nostrum.Cache.GuildCache.Mnesia.html#init/1"},{"type":"function","title":"Nostrum.Cache.GuildCache.Mnesia.member_count_down/1","doc":"Decrement the guild member count by one.","ref":"Nostrum.Cache.GuildCache.Mnesia.html#member_count_down/1"},{"type":"function","title":"Nostrum.Cache.GuildCache.Mnesia.member_count_up/1","doc":"Increment the guild member count by one.","ref":"Nostrum.Cache.GuildCache.Mnesia.html#member_count_up/1"},{"type":"function","title":"Nostrum.Cache.GuildCache.Mnesia.query_handle/0","doc":"Get a QLC handle for the guild cache.","ref":"Nostrum.Cache.GuildCache.Mnesia.html#query_handle/0"},{"type":"function","title":"Nostrum.Cache.GuildCache.Mnesia.role_create/2","doc":"Create the given role in the given guild in the cache.","ref":"Nostrum.Cache.GuildCache.Mnesia.html#role_create/2"},{"type":"function","title":"Nostrum.Cache.GuildCache.Mnesia.role_delete/2","doc":"Delete the given role from the given guild in the cache.","ref":"Nostrum.Cache.GuildCache.Mnesia.html#role_delete/2"},{"type":"function","title":"Nostrum.Cache.GuildCache.Mnesia.role_update/2","doc":"Update the given role in the given guild in the cache.","ref":"Nostrum.Cache.GuildCache.Mnesia.html#role_update/2"},{"type":"function","title":"Nostrum.Cache.GuildCache.Mnesia.start_link/1","doc":"Start the supervisor.","ref":"Nostrum.Cache.GuildCache.Mnesia.html#start_link/1"},{"type":"function","title":"Nostrum.Cache.GuildCache.Mnesia.stickers_update/2","doc":"Update the sticker list for the given guild in the cache.","ref":"Nostrum.Cache.GuildCache.Mnesia.html#stickers_update/2"},{"type":"function","title":"Nostrum.Cache.GuildCache.Mnesia.table/0","doc":"Retrieve the Mnesia table name used for the cache.","ref":"Nostrum.Cache.GuildCache.Mnesia.html#table/0"},{"type":"function","title":"Nostrum.Cache.GuildCache.Mnesia.teardown/0","doc":"Drop the table used for caching.","ref":"Nostrum.Cache.GuildCache.Mnesia.html#teardown/0"},{"type":"function","title":"Nostrum.Cache.GuildCache.Mnesia.update/1","doc":"Update the given guild in the cache.","ref":"Nostrum.Cache.GuildCache.Mnesia.html#update/1"},{"type":"function","title":"Nostrum.Cache.GuildCache.Mnesia.voice_state_update/2","doc":"Update guild voice states with the given voice state in the cache.","ref":"Nostrum.Cache.GuildCache.Mnesia.html#voice_state_update/2"},{"type":"function","title":"Nostrum.Cache.GuildCache.Mnesia.wrap_qlc/1","doc":"Wrap QLC operations in a transaction.","ref":"Nostrum.Cache.GuildCache.Mnesia.html#wrap_qlc/1"},{"type":"module","title":"Nostrum.Cache.GuildCache.NoOp","doc":"A cache module that does nothing.\n\nUseful for bots that don't need to cache guilds.","ref":"Nostrum.Cache.GuildCache.NoOp.html"},{"type":"function","title":"Nostrum.Cache.GuildCache.NoOp.child_spec/1","doc":"Returns a specification to start this module under a supervisor.\n\nSee `Supervisor`.","ref":"Nostrum.Cache.GuildCache.NoOp.html#child_spec/1"},{"type":"function","title":"Nostrum.Cache.GuildCache.NoOp.init/1","doc":"Start up the cache supervisor.","ref":"Nostrum.Cache.GuildCache.NoOp.html#init/1"},{"type":"function","title":"Nostrum.Cache.GuildCache.NoOp.start_link/1","doc":"Start the supervisor.","ref":"Nostrum.Cache.GuildCache.NoOp.html#start_link/1"},{"type":"module","title":"Nostrum.Cache.MemberCache.ETS","doc":"An ETS-based cache for members.\n\nIf you need to get the table reference for the table used by this module,\nplease use the `table/0` function.","ref":"Nostrum.Cache.MemberCache.ETS.html"},{"type":"function","title":"Nostrum.Cache.MemberCache.ETS.bulk_create/2","doc":"Bulk create a chunk of members for the given guild in the cache.","ref":"Nostrum.Cache.MemberCache.ETS.html#bulk_create/2"},{"type":"function","title":"Nostrum.Cache.MemberCache.ETS.child_spec/1","doc":"Returns a specification to start this module under a supervisor.\n\nSee `Supervisor`.","ref":"Nostrum.Cache.MemberCache.ETS.html#child_spec/1"},{"type":"function","title":"Nostrum.Cache.MemberCache.ETS.clear/0","doc":"Clear any objects in the cache.","ref":"Nostrum.Cache.MemberCache.ETS.html#clear/0"},{"type":"function","title":"Nostrum.Cache.MemberCache.ETS.create/2","doc":"Add the given member to the given guild in the cache.","ref":"Nostrum.Cache.MemberCache.ETS.html#create/2"},{"type":"function","title":"Nostrum.Cache.MemberCache.ETS.delete/2","doc":"Remove the given member from the given guild in the cache.","ref":"Nostrum.Cache.MemberCache.ETS.html#delete/2"},{"type":"function","title":"Nostrum.Cache.MemberCache.ETS.init/1","doc":"Set up the cache's ETS table.","ref":"Nostrum.Cache.MemberCache.ETS.html#init/1"},{"type":"function","title":"Nostrum.Cache.MemberCache.ETS.query_handle/0","doc":"Get a QLC query handle for the member cache.","ref":"Nostrum.Cache.MemberCache.ETS.html#query_handle/0"},{"type":"function","title":"Nostrum.Cache.MemberCache.ETS.start_link/1","doc":"Start the supervisor.","ref":"Nostrum.Cache.MemberCache.ETS.html#start_link/1"},{"type":"function","title":"Nostrum.Cache.MemberCache.ETS.table/0","doc":"Retrieve the ETS table reference used for the cache.","ref":"Nostrum.Cache.MemberCache.ETS.html#table/0"},{"type":"function","title":"Nostrum.Cache.MemberCache.ETS.update/2","doc":"Update the given member for the given guild in the cache.","ref":"Nostrum.Cache.MemberCache.ETS.html#update/2"},{"type":"function","title":"Nostrum.Cache.MemberCache.ETS.wrap_qlc/1","doc":"Wrap QLC operations.","ref":"Nostrum.Cache.MemberCache.ETS.html#wrap_qlc/1"},{"type":"function","title":"Safety {: .note} - Nostrum.Cache.MemberCache.ETS.wrap_qlc/1","doc":"Any QLC operations are surrounded by `:ets.safe_fixtable`. It is therefore\nrecommended to finish your read quickly.","ref":"Nostrum.Cache.MemberCache.ETS.html#wrap_qlc/1-safety-note"},{"type":"module","title":"Nostrum.Cache.MemberCache.Mnesia","doc":"An Mnesia-based cache for guild members.\n\nPlease note that this module is only compiled if Mnesia is available on\nyour system. See the Mnesia section of the [State](functionality/state.md)\ndocumentation for more information.\n\nTo retrieve the table name used by this cache, use `table/0`.","ref":"Nostrum.Cache.MemberCache.Mnesia.html"},{"type":"function","title":"Nostrum.Cache.MemberCache.Mnesia.bulk_create/2","doc":"Bulk create a chunk of members for the given guild in the cache.","ref":"Nostrum.Cache.MemberCache.Mnesia.html#bulk_create/2"},{"type":"function","title":"Nostrum.Cache.MemberCache.Mnesia.child_spec/1","doc":"Returns a specification to start this module under a supervisor.\n\nSee `Supervisor`.","ref":"Nostrum.Cache.MemberCache.Mnesia.html#child_spec/1"},{"type":"function","title":"Nostrum.Cache.MemberCache.Mnesia.clear/0","doc":"Clear any objects in the cache.","ref":"Nostrum.Cache.MemberCache.Mnesia.html#clear/0"},{"type":"function","title":"Nostrum.Cache.MemberCache.Mnesia.create/2","doc":"Add the given member to the given guild in the cache.","ref":"Nostrum.Cache.MemberCache.Mnesia.html#create/2"},{"type":"function","title":"Nostrum.Cache.MemberCache.Mnesia.delete/2","doc":"Remove the given member from the given guild in the cache.","ref":"Nostrum.Cache.MemberCache.Mnesia.html#delete/2"},{"type":"function","title":"Nostrum.Cache.MemberCache.Mnesia.init/1","doc":"Set up the cache's Mnesia table.","ref":"Nostrum.Cache.MemberCache.Mnesia.html#init/1"},{"type":"function","title":"Nostrum.Cache.MemberCache.Mnesia.query_handle/0","doc":"Get a QLC query handle for the member cache.","ref":"Nostrum.Cache.MemberCache.Mnesia.html#query_handle/0"},{"type":"function","title":"Nostrum.Cache.MemberCache.Mnesia.start_link/1","doc":"Start the supervisor.","ref":"Nostrum.Cache.MemberCache.Mnesia.html#start_link/1"},{"type":"function","title":"Nostrum.Cache.MemberCache.Mnesia.table/0","doc":"Retrieve the Mnesia table name used for the cache.","ref":"Nostrum.Cache.MemberCache.Mnesia.html#table/0"},{"type":"function","title":"Nostrum.Cache.MemberCache.Mnesia.teardown/0","doc":"Drop the table used for caching.","ref":"Nostrum.Cache.MemberCache.Mnesia.html#teardown/0"},{"type":"function","title":"Nostrum.Cache.MemberCache.Mnesia.update/2","doc":"Update the given member for the given guild in the cache.","ref":"Nostrum.Cache.MemberCache.Mnesia.html#update/2"},{"type":"function","title":"Nostrum.Cache.MemberCache.Mnesia.wrap_qlc/1","doc":"Wrap QLC operations in a transaction.","ref":"Nostrum.Cache.MemberCache.Mnesia.html#wrap_qlc/1"},{"type":"module","title":"Nostrum.Cache.MemberCache.NoOp","doc":"A NoOp implementation for the MemberCache\n\nThis cache does nothing, enable it if you dont need to cache members","ref":"Nostrum.Cache.MemberCache.NoOp.html"},{"type":"function","title":"Nostrum.Cache.MemberCache.NoOp.child_spec/1","doc":"Returns a specification to start this module under a supervisor.\n\nSee `Supervisor`.","ref":"Nostrum.Cache.MemberCache.NoOp.html#child_spec/1"},{"type":"function","title":"Nostrum.Cache.MemberCache.NoOp.start_link/1","doc":"Start the supervisor.","ref":"Nostrum.Cache.MemberCache.NoOp.html#start_link/1"},{"type":"module","title":"Nostrum.Cache.PresenceCache.ETS","doc":"ETS-based cache for user presences.\n\nIf you need to get the table reference for the table used by this module,\nplease use the `table/0` function.","ref":"Nostrum.Cache.PresenceCache.ETS.html"},{"type":"function","title":"Nostrum.Cache.PresenceCache.ETS.bulk_create/2","doc":"Bulk create multiple presences in the cache.","ref":"Nostrum.Cache.PresenceCache.ETS.html#bulk_create/2"},{"type":"function","title":"Nostrum.Cache.PresenceCache.ETS.child_spec/1","doc":"Returns a specification to start this module under a supervisor.\n\nSee `Supervisor`.","ref":"Nostrum.Cache.PresenceCache.ETS.html#child_spec/1"},{"type":"function","title":"Nostrum.Cache.PresenceCache.ETS.create/1","doc":"Add the given presence data to the cache.","ref":"Nostrum.Cache.PresenceCache.ETS.html#create/1"},{"type":"function","title":"Nostrum.Cache.PresenceCache.ETS.init/1","doc":"Set up the cache's ETS table.","ref":"Nostrum.Cache.PresenceCache.ETS.html#init/1"},{"type":"function","title":"Nostrum.Cache.PresenceCache.ETS.query_handle/0","doc":"Retrieve a query handle for QLC queries.","ref":"Nostrum.Cache.PresenceCache.ETS.html#query_handle/0"},{"type":"function","title":"Nostrum.Cache.PresenceCache.ETS.start_link/1","doc":"Start the supervisor.","ref":"Nostrum.Cache.PresenceCache.ETS.html#start_link/1"},{"type":"function","title":"Nostrum.Cache.PresenceCache.ETS.table/0","doc":"Retrieve the ETS table reference used for the cache.","ref":"Nostrum.Cache.PresenceCache.ETS.html#table/0"},{"type":"function","title":"Nostrum.Cache.PresenceCache.ETS.update/1","doc":"Update the given presence data in the cache.","ref":"Nostrum.Cache.PresenceCache.ETS.html#update/1"},{"type":"module","title":"Nostrum.Cache.PresenceCache.Mnesia","doc":"An Mnesia-based cache for presences.\n\nPlease note that this module is only compiled if Mnesia is available on\nyour system. See the Mnesia section of the [State](functionality/state.md)\ndocumentation for more information.\n\nTo retrieve the table name used by this cache, use `table/0`.","ref":"Nostrum.Cache.PresenceCache.Mnesia.html"},{"type":"function","title":"Nostrum.Cache.PresenceCache.Mnesia.bulk_create/2","doc":"Bulk create a chunk of presences for the given guild in the cache.","ref":"Nostrum.Cache.PresenceCache.Mnesia.html#bulk_create/2"},{"type":"function","title":"Nostrum.Cache.PresenceCache.Mnesia.child_spec/1","doc":"Returns a specification to start this module under a supervisor.\n\nSee `Supervisor`.","ref":"Nostrum.Cache.PresenceCache.Mnesia.html#child_spec/1"},{"type":"function","title":"Nostrum.Cache.PresenceCache.Mnesia.clear/0","doc":"Clear any objects in the cache.","ref":"Nostrum.Cache.PresenceCache.Mnesia.html#clear/0"},{"type":"function","title":"Nostrum.Cache.PresenceCache.Mnesia.create/1","doc":"Add the given presence to the cache.","ref":"Nostrum.Cache.PresenceCache.Mnesia.html#create/1"},{"type":"function","title":"Nostrum.Cache.PresenceCache.Mnesia.init/1","doc":"Set up the cache's Mnesia table.","ref":"Nostrum.Cache.PresenceCache.Mnesia.html#init/1"},{"type":"function","title":"Nostrum.Cache.PresenceCache.Mnesia.query_handle/0","doc":"Retrieve a query handle for the table.","ref":"Nostrum.Cache.PresenceCache.Mnesia.html#query_handle/0"},{"type":"function","title":"Nostrum.Cache.PresenceCache.Mnesia.start_link/1","doc":"Start the supervisor.","ref":"Nostrum.Cache.PresenceCache.Mnesia.html#start_link/1"},{"type":"function","title":"Nostrum.Cache.PresenceCache.Mnesia.table/0","doc":"Retrieve the table name used by the cache.","ref":"Nostrum.Cache.PresenceCache.Mnesia.html#table/0"},{"type":"function","title":"Nostrum.Cache.PresenceCache.Mnesia.teardown/0","doc":"Drop the table used for caching.","ref":"Nostrum.Cache.PresenceCache.Mnesia.html#teardown/0"},{"type":"function","title":"Nostrum.Cache.PresenceCache.Mnesia.update/1","doc":"Update the given presence in the cache.","ref":"Nostrum.Cache.PresenceCache.Mnesia.html#update/1"},{"type":"function","title":"Nostrum.Cache.PresenceCache.Mnesia.wrap_qlc/1","doc":"Wrap QLC operations in a transaction.","ref":"Nostrum.Cache.PresenceCache.Mnesia.html#wrap_qlc/1"},{"type":"module","title":"Nostrum.Cache.PresenceCache.NoOp","doc":"A cache module that does not cache anything.\n\nUseful for bots that do not need presence caching.","ref":"Nostrum.Cache.PresenceCache.NoOp.html"},{"type":"function","title":"Nostrum.Cache.PresenceCache.NoOp.child_spec/1","doc":"Returns a specification to start this module under a supervisor.\n\nSee `Supervisor`.","ref":"Nostrum.Cache.PresenceCache.NoOp.html#child_spec/1"},{"type":"function","title":"Nostrum.Cache.PresenceCache.NoOp.init/1","doc":"Start up the cache supervisor.","ref":"Nostrum.Cache.PresenceCache.NoOp.html#init/1"},{"type":"function","title":"Nostrum.Cache.PresenceCache.NoOp.start_link/1","doc":"Start the supervisor.","ref":"Nostrum.Cache.PresenceCache.NoOp.html#start_link/1"},{"type":"module","title":"Nostrum.Cache.UserCache.ETS","doc":"An ETS-based cache for users.\n\nIf you need to get the table reference for the table used by this module,\nplease use the `table/0` function.","ref":"Nostrum.Cache.UserCache.ETS.html"},{"type":"function","title":"Nostrum.Cache.UserCache.ETS.bulk_create/1","doc":"Bulk create a list of users from upstream data.","ref":"Nostrum.Cache.UserCache.ETS.html#bulk_create/1"},{"type":"function","title":"Nostrum.Cache.UserCache.ETS.child_spec/1","doc":"Returns a specification to start this module under a supervisor.\n\nSee `Supervisor`.","ref":"Nostrum.Cache.UserCache.ETS.html#child_spec/1"},{"type":"function","title":"Nostrum.Cache.UserCache.ETS.create/1","doc":"Create a user from upstream data.","ref":"Nostrum.Cache.UserCache.ETS.html#create/1"},{"type":"function","title":"Nostrum.Cache.UserCache.ETS.init/1","doc":"Set up the ETS table.","ref":"Nostrum.Cache.UserCache.ETS.html#init/1"},{"type":"function","title":"Nostrum.Cache.UserCache.ETS.query_handle/0","doc":"Get a QLC query handle for the user cache.","ref":"Nostrum.Cache.UserCache.ETS.html#query_handle/0"},{"type":"function","title":"Nostrum.Cache.UserCache.ETS.start_link/1","doc":"Start the supervisor.","ref":"Nostrum.Cache.UserCache.ETS.html#start_link/1"},{"type":"function","title":"Nostrum.Cache.UserCache.ETS.table/0","doc":"Retrieve the ETS table reference used for the cache.","ref":"Nostrum.Cache.UserCache.ETS.html#table/0"},{"type":"function","title":"Nostrum.Cache.UserCache.ETS.update/1","doc":"Update a user from upstream data.","ref":"Nostrum.Cache.UserCache.ETS.html#update/1"},{"type":"module","title":"Nostrum.Cache.UserCache.Mnesia","doc":"An Mnesia-based cache for users.\n\nPlease note that this module is only compiled if Mnesia is available on\nyour system. See the Mnesia section of the [State](functionality/state.md)\ndocumentation for more information.\n\nTo retrieve the table name used by this cache, use `table/0`.","ref":"Nostrum.Cache.UserCache.Mnesia.html"},{"type":"function","title":"Nostrum.Cache.UserCache.Mnesia.bulk_create/1","doc":"Bulk create a chunk of users in the cache.","ref":"Nostrum.Cache.UserCache.Mnesia.html#bulk_create/1"},{"type":"function","title":"Nostrum.Cache.UserCache.Mnesia.child_spec/1","doc":"Returns a specification to start this module under a supervisor.\n\nSee `Supervisor`.","ref":"Nostrum.Cache.UserCache.Mnesia.html#child_spec/1"},{"type":"function","title":"Nostrum.Cache.UserCache.Mnesia.clear/0","doc":"Clear any objects in the cache.","ref":"Nostrum.Cache.UserCache.Mnesia.html#clear/0"},{"type":"function","title":"Nostrum.Cache.UserCache.Mnesia.create/1","doc":"Create a user from upstream data.","ref":"Nostrum.Cache.UserCache.Mnesia.html#create/1"},{"type":"function","title":"Nostrum.Cache.UserCache.Mnesia.delete/1","doc":"Remove the given user from cache.","ref":"Nostrum.Cache.UserCache.Mnesia.html#delete/1"},{"type":"function","title":"Nostrum.Cache.UserCache.Mnesia.init/1","doc":"Set up the cache's Mnesia table.","ref":"Nostrum.Cache.UserCache.Mnesia.html#init/1"},{"type":"function","title":"Nostrum.Cache.UserCache.Mnesia.query_handle/0","doc":"Get a QLC query handle for the user cache.","ref":"Nostrum.Cache.UserCache.Mnesia.html#query_handle/0"},{"type":"function","title":"Nostrum.Cache.UserCache.Mnesia.start_link/1","doc":"Start the supervisor.","ref":"Nostrum.Cache.UserCache.Mnesia.html#start_link/1"},{"type":"function","title":"Nostrum.Cache.UserCache.Mnesia.table/0","doc":"Retrieve the Mnesia table name used for the cache.","ref":"Nostrum.Cache.UserCache.Mnesia.html#table/0"},{"type":"function","title":"Nostrum.Cache.UserCache.Mnesia.teardown/0","doc":"Drop the table used for caching.","ref":"Nostrum.Cache.UserCache.Mnesia.html#teardown/0"},{"type":"function","title":"Nostrum.Cache.UserCache.Mnesia.update/1","doc":"Update a User if it exists in the cache.","ref":"Nostrum.Cache.UserCache.Mnesia.html#update/1"},{"type":"function","title":"Nostrum.Cache.UserCache.Mnesia.wrap_qlc/1","doc":"Wrap QLC operations in a transaction.","ref":"Nostrum.Cache.UserCache.Mnesia.html#wrap_qlc/1"},{"type":"module","title":"Nostrum.Cache.UserCache.NoOp","doc":"A NoOp implementation for the UserCache\n\nThis cache does nothing, enable it if you dont need to cache users","ref":"Nostrum.Cache.UserCache.NoOp.html"},{"type":"function","title":"Nostrum.Cache.UserCache.NoOp.child_spec/1","doc":"Returns a specification to start this module under a supervisor.\n\nSee `Supervisor`.","ref":"Nostrum.Cache.UserCache.NoOp.html#child_spec/1"},{"type":"function","title":"Nostrum.Cache.UserCache.NoOp.start_link/1","doc":"Start the supervisor.","ref":"Nostrum.Cache.UserCache.NoOp.html#start_link/1"},{"type":"module","title":"Nostrum.Store.GuildShardMapping.ETS","doc":"Maintains a mapping of guild IDs to their shard numbers using `:ets`.\n\nIf programmatic access to the ETS table is needed, please use the `table/0`\nfunction.\n\nPlease do not use this module directly, apart from special functions such as\n`table/0`. Use `Nostrum.Store.GuildShardMapping` to call the configured\nmapping instead.","ref":"Nostrum.Store.GuildShardMapping.ETS.html"},{"type":"function","title":"Nostrum.Store.GuildShardMapping.ETS.child_spec/1","doc":"Returns a specification to start this module under a supervisor.\n\nSee `Supervisor`.","ref":"Nostrum.Store.GuildShardMapping.ETS.html#child_spec/1"},{"type":"function","title":"Nostrum.Store.GuildShardMapping.ETS.create/2","doc":"Create a new mapping for the given guild ID to the given shard ID.","ref":"Nostrum.Store.GuildShardMapping.ETS.html#create/2"},{"type":"function","title":"Nostrum.Store.GuildShardMapping.ETS.delete/1","doc":"Delete any stored mapping for the given guild ID.","ref":"Nostrum.Store.GuildShardMapping.ETS.html#delete/1"},{"type":"function","title":"Nostrum.Store.GuildShardMapping.ETS.get/1","doc":"Get the shard number for the given guild ID.","ref":"Nostrum.Store.GuildShardMapping.ETS.html#get/1"},{"type":"function","title":"Nostrum.Store.GuildShardMapping.ETS.init/1","doc":"Set up the store's ETS table.","ref":"Nostrum.Store.GuildShardMapping.ETS.html#init/1"},{"type":"function","title":"Nostrum.Store.GuildShardMapping.ETS.start_link/1","doc":"Start the supervisor.","ref":"Nostrum.Store.GuildShardMapping.ETS.html#start_link/1"},{"type":"function","title":"Nostrum.Store.GuildShardMapping.ETS.table/0","doc":"Retrieve the ETS table reference used for the store.","ref":"Nostrum.Store.GuildShardMapping.ETS.html#table/0"},{"type":"module","title":"Nostrum.Store.GuildShardMapping.Mnesia","doc":"Maintains a mapping of guild IDs to their shard numbers using Mnesia.\n\nPlease note that this module is only compiled if Mnesia is available on\nyour system. See the Mnesia section of the [State](functionality/state.md)\ndocumentation for more information.\n\nTo retrieve the table name used by this cache, use `table/0`.","ref":"Nostrum.Store.GuildShardMapping.Mnesia.html"},{"type":"function","title":"Nostrum.Store.GuildShardMapping.Mnesia.child_spec/1","doc":"Returns a specification to start this module under a supervisor.\n\nSee `Supervisor`.","ref":"Nostrum.Store.GuildShardMapping.Mnesia.html#child_spec/1"},{"type":"function","title":"Nostrum.Store.GuildShardMapping.Mnesia.create/2","doc":"Create a new mapping for the given guild ID to the given shard ID.","ref":"Nostrum.Store.GuildShardMapping.Mnesia.html#create/2"},{"type":"function","title":"Nostrum.Store.GuildShardMapping.Mnesia.delete/1","doc":"Delete any stored mapping for the given guild ID.","ref":"Nostrum.Store.GuildShardMapping.Mnesia.html#delete/1"},{"type":"function","title":"Nostrum.Store.GuildShardMapping.Mnesia.get/1","doc":"Get the shard number for the given guild ID.","ref":"Nostrum.Store.GuildShardMapping.Mnesia.html#get/1"},{"type":"function","title":"Nostrum.Store.GuildShardMapping.Mnesia.init/1","doc":"Set up the store's Mnesia table.","ref":"Nostrum.Store.GuildShardMapping.Mnesia.html#init/1"},{"type":"function","title":"Nostrum.Store.GuildShardMapping.Mnesia.start_link/1","doc":"Start the supervisor.","ref":"Nostrum.Store.GuildShardMapping.Mnesia.html#start_link/1"},{"type":"function","title":"Nostrum.Store.GuildShardMapping.Mnesia.table/0","doc":"Retrieve the Mnesia table name used for the store.","ref":"Nostrum.Store.GuildShardMapping.Mnesia.html#table/0"},{"type":"function","title":"Nostrum.Store.GuildShardMapping.Mnesia.teardown/0","doc":"Drop the table used for the store.","ref":"Nostrum.Store.GuildShardMapping.Mnesia.html#teardown/0"},{"type":"module","title":"Nostrum.Store.UnavailableGuild.ETS","doc":"Stores guilds that are currently unavailable using `:ets`.\n\nIf programmatic access to the ETS table is needed, please use the `table/0`\nfunction.\n\nPlease do not use this module directly, apart from special functions such as\n`tabname/0`. Use `Nostrum.Store.UnavailableGuild` to call the configured\nmapping instead.","ref":"Nostrum.Store.UnavailableGuild.ETS.html"},{"type":"function","title":"Nostrum.Store.UnavailableGuild.ETS.child_spec/1","doc":"Returns a specification to start this module under a supervisor.\n\nSee `Supervisor`.","ref":"Nostrum.Store.UnavailableGuild.ETS.html#child_spec/1"},{"type":"function","title":"Nostrum.Store.UnavailableGuild.ETS.create/1","doc":"Create the given guild as an unavailable guild.","ref":"Nostrum.Store.UnavailableGuild.ETS.html#create/1"},{"type":"function","title":"Nostrum.Store.UnavailableGuild.ETS.init/1","doc":"Set up the store's ETS table.","ref":"Nostrum.Store.UnavailableGuild.ETS.html#init/1"},{"type":"function","title":"Nostrum.Store.UnavailableGuild.ETS.is?/1","doc":"Return whether the given guild is unavailable.","ref":"Nostrum.Store.UnavailableGuild.ETS.html#is?/1"},{"type":"function","title":"Nostrum.Store.UnavailableGuild.ETS.start_link/1","doc":"Start the supervisor.","ref":"Nostrum.Store.UnavailableGuild.ETS.html#start_link/1"},{"type":"function","title":"Nostrum.Store.UnavailableGuild.ETS.table/0","doc":"Retrieve the ETS table reference used for the store.","ref":"Nostrum.Store.UnavailableGuild.ETS.html#table/0"},{"type":"module","title":"Nostrum.Store.UnavailableGuild.Mnesia","doc":"Keeps track of unavailable guilds.\n\nPlease note that this module is only compiled if Mnesia is available on\nyour system. See the Mnesia section of the [State](functionality/state.md)\ndocumentation for more information.\n\nTo retrieve the table name used by this cache, use `table/0`.","ref":"Nostrum.Store.UnavailableGuild.Mnesia.html"},{"type":"function","title":"Nostrum.Store.UnavailableGuild.Mnesia.child_spec/1","doc":"Returns a specification to start this module under a supervisor.\n\nSee `Supervisor`.","ref":"Nostrum.Store.UnavailableGuild.Mnesia.html#child_spec/1"},{"type":"function","title":"Nostrum.Store.UnavailableGuild.Mnesia.create/1","doc":"Create the given guild as an unavailable guild.","ref":"Nostrum.Store.UnavailableGuild.Mnesia.html#create/1"},{"type":"function","title":"Nostrum.Store.UnavailableGuild.Mnesia.init/1","doc":"Set up the store's Mnesia table.","ref":"Nostrum.Store.UnavailableGuild.Mnesia.html#init/1"},{"type":"function","title":"Nostrum.Store.UnavailableGuild.Mnesia.is?/1","doc":"Return whether the given guild is unavailable.","ref":"Nostrum.Store.UnavailableGuild.Mnesia.html#is?/1"},{"type":"function","title":"Nostrum.Store.UnavailableGuild.Mnesia.start_link/1","doc":"Start the supervisor.","ref":"Nostrum.Store.UnavailableGuild.Mnesia.html#start_link/1"},{"type":"function","title":"Nostrum.Store.UnavailableGuild.Mnesia.table/0","doc":"Retrieve the Mnesia table name used for the store.","ref":"Nostrum.Store.UnavailableGuild.Mnesia.html#table/0"},{"type":"function","title":"Nostrum.Store.UnavailableGuild.Mnesia.teardown/0","doc":"Drop the table used for the store.","ref":"Nostrum.Store.UnavailableGuild.Mnesia.html#teardown/0"},{"type":"module","title":"Nostrum.Api.Ratelimiter","doc":"Handles REST calls to the Discord API while respecting ratelimits.","ref":"Nostrum.Api.Ratelimiter.html"},{"type":"module","title":"Purpose - Nostrum.Api.Ratelimiter","doc":"Discord's API returns information about ratelimits that we must respect. This\nmodule performs serialization of these requests through a single process,\nthus preventing concurrency issues from arising if two processes make a\nremote API call at the same time.\n\n\n>","ref":"Nostrum.Api.Ratelimiter.html#module-purpose"},{"type":"module","title":"Internal module {: .info} - Nostrum.Api.Ratelimiter","doc":">\n> This module is intended for exclusive usage inside of nostrum, and is\n> documented for completeness and people curious to look behind the covers.","ref":"Nostrum.Api.Ratelimiter.html#module-internal-module-info"},{"type":"module","title":"Asynchronous requests - Nostrum.Api.Ratelimiter","doc":"The ratelimiter is fully asynchronous internally. In theory, it also supports\nqueueing requests in an asynchronous manner. However, support for this is\ncurrently not implemented in `Nostrum.Api`.\n\nIf you want to make one or multiple asynchronous requests manually, you can\nuse the following pattern:\n\n```elixir\nreq = :gen_statem.send_request(Nostrum.Api.Ratelimiter, {:queue, request})\n# ...\nresponse = :gen_statem.receive_response(req, timeout)\n```\n\nwhere `request` is a map describing the request to run - see `Nostrum.Api`\nfor more information. You can also send multiple requests at the same time\nand wait for their response: see `:gen_statem.reqids_add/3` and\n`:gen_statem.wait_response/3` for more information.","ref":"Nostrum.Api.Ratelimiter.html#module-asynchronous-requests"},{"type":"module","title":"Multi-node - Nostrum.Api.Ratelimiter","doc":"If a single global process is desired to handle all ratelimiting, the\nratelimiter can theoretically be adjusted to start registered via `:global`.\nIn practice, it may be more beneficial to have a local ratelimiter process on\neach node and either using the local one for any API calls, or using a\nconsistent hash mechanism to distribute API requests around the cluster as\nneeded. **Do note that the API enforces a global user ratelimit across all\nrequests**. With a single process, the ratelimiter can track this without\nhitting 429s at all, with multiple ratelimiters, the built-in requeue\nfunctionality may or may not help.","ref":"Nostrum.Api.Ratelimiter.html#module-multi-node"},{"type":"module","title":"Inner workings - Nostrum.Api.Ratelimiter","doc":"When a client process wants to perform some request on the Discord API, it\nsends a request to the `:gen_statem` behind this module to ask it to `:queue`\nthe incoming request.","ref":"Nostrum.Api.Ratelimiter.html#module-inner-workings"},{"type":"module","title":"Connection setup - Nostrum.Api.Ratelimiter","doc":"If the state machine is not connected to the HTTP endpoint, it will\ntransition to the `:connecting` state and try to open the connection. If this\nsucceeds, it transitions to the `:connected` state.","ref":"Nostrum.Api.Ratelimiter.html#module-connection-setup"},{"type":"module","title":"Queueing requests - Nostrum.Api.Ratelimiter","doc":"The state machine associates a `t::queue.queue/1` of `t:queued_request/0` to\neach individual bucket, together with an internal count of remaining calls.\nWhen queueing requests, the following cases occur:\n\n- If there are no remaining calls in the bot's global ratelimit bucket or\nthere are no remaining calls in the bucket, the request is put into the\nbucket's queue.\n\n- If there is an `:initial` running request to the bucket, the request is put\ninto the bucket's queue.\n\n- If there are more than 0 remaining calls on both the request-specific\nbucket and the global bucket, the request is started right away. This allows\nnostrum to dispatch multiple requests to the same endpoint as soon as\npossible as long as calls remain.\n\n- If no ratelimit information is known for the bucket and remaining calls on\nthe global bucket, the request is sent out as the \"pioneer\" request that will\nretrieve how many calls we have for this bucket (`:initial`, see above).\n\n- If none of the above is true, a new queue is created and the pending\nrqeuest marked as the `:initial` request. It will be run as soon as the bot's\nglobal limit limit expires.\n\nThe request starting function, `:next`, will start new requests from the\nqueue as long as more calls are possible in the timeframe. Any requests are\nthen started asynchronously. Bookkeeping is set up to associate the resulting\n`t::gun.stream_ref/0` with the original client along with its request and the\nratelimiter bucket.\n\nResults from the HTTP connection are delivered non-blocking: simple responses\nwith purely status codes and no body (code `204`) will be sent in a single\nmessage, other requests will be sent to us incrementally. To finally deliver\nthe full response body to the client with the final package, an internal\nbuffer of the body is kept. A possible future optimization could be having a\nway for `:gun` to only send the ratelimiter state machine the initial\n`:gun_response` and forward any item of the body directly to the client.\n\nWhen the headers for a request have been received, the ratelimiter parses the\nratelimit information and starts off an internal timer expiring when the\nratelimits expire. It will also reschedule calls with the `:next` internal\nevent for as many remaining calls as it knows about. Once the timer expires\nfor the current bucket, two cases can happen:\n\n- The queue has items: Schedule all items and repeat this later.\n\n- The queue is empty: Delete the queue and remaining calls from the\noutstanding buckets.\n\nIn practice, this means that we never store more information than we need,\nand removes the previous regular bucket sweeping functionality that the\nratelimit buckets required.\n\n**Global ratelimits** (note this is a distinct ratelimit from the bot's\n\"global\", per-user ratelimit) are handled with the special `global_limit`\nstate. This state is entered for exactly the the `X-Ratelimit-Reset-After`\ntime provided in the global ratelimit response. This state does nothing apart\nfrom postponing any events it receives and returning to the previous state\n(`:connected`) once the global timeout is gone. Requests that failed because\nof the global ratelimit are requeued after returning back into the regular\nstate: a warning is logged to inform you of this.","ref":"Nostrum.Api.Ratelimiter.html#module-queueing-requests"},{"type":"module","title":"Failure modes - Nostrum.Api.Ratelimiter","doc":"#### HTTP connection death\n\nIf the HTTP connection dies, the ratelimiter will inform each affected client\nby replying with `{:error, {:connection_died, reason}}`, where `reason` is\nthe reason as provided by the `:gun_down` event. It will then transition to\n`:disconnected` state. If no requests were running at time the connection was\nshut down - for instance, because we simply reached the maximum idle time on\nthe HTTP/2 connection - we will simply move on.\n\n#### Upstream errors\n\nThe ratelimiter works by queueing requests aggressively as soon as it has\nratelimit information to do so. If no ratelimit information is available, for\ninstance, because Discord returned us a 502 status code, the ratelimiter will\nnot automatically kick the queue to start further running requests.\n\n#### Other internal issues\n\nAny other internal problems that are not handled appropriately in the\nratelimiter will crash it, effectively resulting in the complete loss of any\nqueued requests.","ref":"Nostrum.Api.Ratelimiter.html#module-failure-modes"},{"type":"module","title":"Implementation benefits & drawbacks - Nostrum.Api.Ratelimiter","doc":"#### A history of ratelimiting\n\nFirst, it is important to give a short history of nostrum's ratelimiting: pre\n`0.8`, nostrum used to use a `GenServer` that would call out to ETS tables to\nlook up ratelimiting buckets for requests. If it needed to sleep before\nissuing a request due to the bucket being exhausted, it would do so in the\nserver process and block other callers.\n\nIn nostrum 0.8, the existing ratelimiter bucket storage architecture was\nrefactored to be based around the [pluggable caching\nfunctionality](../advanced/pluggable_caching.md), and buckets with no\nremaining calls were adjusted to be slept out on the client-side by having\nthe `GenServer` respond to the client with `{:error, {:retry_after, millis}}`\nand the client trying again and again to schedule its requests. This allowed\nusers to distribute their ratelimit buckets around however they wish, out of\nthe box, nostrum shipped with an ETS and a Mnesia-based ratelimit bucket\nstore.\n\n\n#### Problems we solved\n\nThe approach above still came with a few problems:\n\n- Requests were still being done synchronously in the ratelimiter, and it was\nblocked from anything else whilst running the requests, even though we are\ntheoretically free to start requests for other buckets while one is still\nrunning.\n\n- The ratelimiter itself was half working on its own, but half required the\nexternal storage mechanisms, which made the code hard to follow and required\nregular automatic pruning because the store had no idea when a bucket was no\nlonger relevant on its own.\n\n- Requests would not be pipelined to run as soon as ideally possible.\n\n- The ratelimiter did not inform clients if their request died in-flight.\n\n- If the client disconnected before we returned the response, we had to\nhandle this explicitly via `handle_info`.\n\nThe new state machine-based ratelimiter solves these problems.","ref":"Nostrum.Api.Ratelimiter.html#module-implementation-benefits-drawbacks"},{"type":"function","title":"Nostrum.Api.Ratelimiter.callback_mode/0","doc":"","ref":"Nostrum.Api.Ratelimiter.html#callback_mode/0"},{"type":"function","title":"Nostrum.Api.Ratelimiter.child_spec/1","doc":"","ref":"Nostrum.Api.Ratelimiter.html#child_spec/1"},{"type":"function","title":"Nostrum.Api.Ratelimiter.code_change/4","doc":"","ref":"Nostrum.Api.Ratelimiter.html#code_change/4"},{"type":"function","title":"Nostrum.Api.Ratelimiter.connected/3","doc":"","ref":"Nostrum.Api.Ratelimiter.html#connected/3"},{"type":"function","title":"Nostrum.Api.Ratelimiter.connecting/3","doc":"","ref":"Nostrum.Api.Ratelimiter.html#connecting/3"},{"type":"function","title":"Nostrum.Api.Ratelimiter.disconnected/3","doc":"","ref":"Nostrum.Api.Ratelimiter.html#disconnected/3"},{"type":"function","title":"Nostrum.Api.Ratelimiter.get_endpoint/2","doc":"Retrieves a proper ratelimit endpoint from a given route and url.","ref":"Nostrum.Api.Ratelimiter.html#get_endpoint/2"},{"type":"function","title":"Nostrum.Api.Ratelimiter.global_limit/3","doc":"","ref":"Nostrum.Api.Ratelimiter.html#global_limit/3"},{"type":"function","title":"Nostrum.Api.Ratelimiter.init/1","doc":"","ref":"Nostrum.Api.Ratelimiter.html#init/1"},{"type":"function","title":"Nostrum.Api.Ratelimiter.queue/1","doc":"Queue the given request and wait for the response synchronously.\n\nRatelimits on the endpoint are handled by the ratelimiter. Global ratelimits\nwill cause this to return an error.","ref":"Nostrum.Api.Ratelimiter.html#queue/1"},{"type":"function","title":"Nostrum.Api.Ratelimiter.start_link/1","doc":"Starts the ratelimiter.","ref":"Nostrum.Api.Ratelimiter.html#start_link/1"},{"type":"type","title":"Nostrum.Api.Ratelimiter.bucket/0","doc":"A bucket for endpoints unter the same ratelimit.","ref":"Nostrum.Api.Ratelimiter.html#t:bucket/0"},{"type":"type","title":"Nostrum.Api.Ratelimiter.queued_request/0","doc":"A bucket-specific request waiting to be queued, alongside its client.","ref":"Nostrum.Api.Ratelimiter.html#t:queued_request/0"},{"type":"type","title":"Nostrum.Api.Ratelimiter.remaining/0","doc":"Remaining calls on a route, as provided by the API response.\n\nThe ratelimiter internally counts the remaining calls per route to dispatch\nnew requests as soon as it's capable of doing so, but this is only possible\nif the API already provided us with ratelimit information for an endpoint.\n\nTherefore, if the initial call on an endpoint is made, the special `:initial`\nvalue is specified. This is used by the limit parsing function to set the\nremaining calls if and only if it is the response for the initial call -\notherwise, the value won't represent the truth anymore.","ref":"Nostrum.Api.Ratelimiter.html#t:remaining/0"},{"type":"type","title":"Nostrum.Api.Ratelimiter.request/0","doc":"A request to make in the ratelimiter.","ref":"Nostrum.Api.Ratelimiter.html#t:request/0"},{"type":"type","title":"Nostrum.Api.Ratelimiter.state/0","doc":"The state of the ratelimiter.\n\nWhile this has no public use, it is still documented here to provide help\nwhen tracing the ratelimiter via `:sys.trace/2` or other means.","ref":"Nostrum.Api.Ratelimiter.html#t:state/0"},{"type":"type","title":"Fields - Nostrum.Api.Ratelimiter.state/0","doc":"- `:outstanding`: Outstanding (unqueued) requests per bucket alongside with\nthe remaining calls that may be made on said bucket.\n\n- `:running`: Requests that have been sent off. Used to associate back the\nclient with a request when the response comes in.\n\n- `:inflight`: Requests for which we have started getting a response, but we\nhave not fully received it yet. For responses that have a body, this will\nbuffer their body until we can send it back to the client.\n\n- `:conn`: The `:gun` connection backing the server. Used for making new\nrequests, and updated as the state changes.\n\n- `:remaining_in_window`: How many calls we may still make to the API during\nthis time window. Reset automatically via timeouts.\n\n- `:wrapped_token`: An anonymous function that is internally used to retrieve\nthe token. This is wrapped to ensure that it is not accidentally exposed in\nstacktraces.","ref":"Nostrum.Api.Ratelimiter.html#t:state/0-fields"},{"type":"module","title":"Nostrum.Shard.Session","doc":"Manages a single shard's gateway connection.","ref":"Nostrum.Shard.Session.html"},{"type":"module","title":"Purpose - Nostrum.Shard.Session","doc":"Discord's gateway sends us events over websocket. The shard session state\nmachine concerns it self with parsing these events and dispatching them to\nclients as appropriate.\n\n\n>","ref":"Nostrum.Shard.Session.html#module-purpose"},{"type":"module","title":"Internal module {: .info} - Nostrum.Shard.Session","doc":">\n> This module is intended for exclusive usage inside of nostrum, and is\n> documented for completeness and people curious to look behind the covers.","ref":"Nostrum.Shard.Session.html#module-internal-module-info"},{"type":"module","title":"Inner workings - Nostrum.Shard.Session","doc":"The session is implemented via `:gen_statem` and can be in one of the\nfollowing states:\n\n- `disconnected`: when no connection is up at all. On initial connection of\nthe session (e.g. no `seq` field is available), this will block if we need to\nwait a moment to respect the session startup concurrency limits. Afterwards,\nit will transition to `connecting_http`.\n\n- `connecting_http`: We are setting up a HTTP connection to the API. This\nmeans that no connection was available previously at all, and we need to open\nit from scratch. Used for gateway-initiated reconnect requests (\"Cloudflare\nWebsocket proxy restarting\") and on `:gun_down` notifications for the\nconnection in connected state. Once `:gun` notifies us that the connection is\nup, we transition to the `connecting_ws` state.\n\n- `connecting_ws`: We are turning the HTTP connection into a WebSocket\nconnection. If this succeeds, we head into the `connected` state.\n\n- `connected`: The WebSocket connection is up. This state actively deals with\nnew data from the gateway, and takes care of heartbeating. If Discord fails\nto respond to our heartbeats, we close down the full connection and attempt\nto re-establish and resume events.","ref":"Nostrum.Shard.Session.html#module-inner-workings"},{"type":"function","title":"Nostrum.Shard.Session.callback_mode/0","doc":"","ref":"Nostrum.Shard.Session.html#callback_mode/0"},{"type":"function","title":"Nostrum.Shard.Session.child_spec/1","doc":"","ref":"Nostrum.Shard.Session.html#child_spec/1"},{"type":"function","title":"Nostrum.Shard.Session.connected/3","doc":"","ref":"Nostrum.Shard.Session.html#connected/3"},{"type":"function","title":"Nostrum.Shard.Session.connecting_http/3","doc":"","ref":"Nostrum.Shard.Session.html#connecting_http/3"},{"type":"function","title":"Nostrum.Shard.Session.connecting_ws/3","doc":"","ref":"Nostrum.Shard.Session.html#connecting_ws/3"},{"type":"function","title":"Nostrum.Shard.Session.disconnect/1","doc":"","ref":"Nostrum.Shard.Session.html#disconnect/1"},{"type":"function","title":"Nostrum.Shard.Session.disconnect/2","doc":"","ref":"Nostrum.Shard.Session.html#disconnect/2"},{"type":"function","title":"Nostrum.Shard.Session.disconnected/3","doc":"","ref":"Nostrum.Shard.Session.html#disconnected/3"},{"type":"function","title":"Nostrum.Shard.Session.format_status/1","doc":"","ref":"Nostrum.Shard.Session.html#format_status/1"},{"type":"function","title":"Nostrum.Shard.Session.get_ws_state/1","doc":"","ref":"Nostrum.Shard.Session.html#get_ws_state/1"},{"type":"function","title":"Nostrum.Shard.Session.init/1","doc":"","ref":"Nostrum.Shard.Session.html#init/1"},{"type":"function","title":"Nostrum.Shard.Session.request_guild_members/3","doc":"","ref":"Nostrum.Shard.Session.html#request_guild_members/3"},{"type":"function","title":"Nostrum.Shard.Session.start_link/2","doc":"","ref":"Nostrum.Shard.Session.html#start_link/2"},{"type":"function","title":"Nostrum.Shard.Session.update_status/5","doc":"","ref":"Nostrum.Shard.Session.html#update_status/5"},{"type":"function","title":"Nostrum.Shard.Session.update_voice_state/5","doc":"","ref":"Nostrum.Shard.Session.html#update_voice_state/5"},{"type":"behaviour","title":"Nostrum.Shard.Session.Compression","doc":"A behaviour for compression methods supported by the Discord gateway to implement.\n\nSee the modules nested under this behaviour for reference implementations.\n\n>","ref":"Nostrum.Shard.Session.Compression.html"},{"type":"behaviour","title":"Internal module {: .info} - Nostrum.Shard.Session.Compression","doc":">\n> This module is intended for exclusive usage inside of nostrum, and is\n> documented for completeness and people curious to look behind the covers.","ref":"Nostrum.Shard.Session.Compression.html#module-internal-module-info"},{"type":"callback","title":"Nostrum.Shard.Session.Compression.create_context/0","doc":"Create a new compression context that can be passed as an argument to other\nmethods within the behaviour to inflate data or reset the context to a\nblank state.","ref":"Nostrum.Shard.Session.Compression.html#c:create_context/0"},{"type":"callback","title":"Nostrum.Shard.Session.Compression.inflate/2","doc":"Decompress a frame received from Discord over the gateway. Should return an\niolist of the decompressed data.","ref":"Nostrum.Shard.Session.Compression.html#c:inflate/2"},{"type":"callback","title":"Nostrum.Shard.Session.Compression.reset_context/1","doc":"Reset a decompression context to a blank slate, this is useful after a websocket\nresume has taken place or something similar requiring the reset of the state\nfor a shard.","ref":"Nostrum.Shard.Session.Compression.html#c:reset_context/1"},{"type":"module","title":"Nostrum.Shard.Session.Compression.Zlib","doc":"Implementation of compression methods for the `zlib` compression algorithm.\n\n>","ref":"Nostrum.Shard.Session.Compression.Zlib.html"},{"type":"module","title":"Internal module {: .info} - Nostrum.Shard.Session.Compression.Zlib","doc":">\n> This module is intended for exclusive usage inside of nostrum, and is\n> documented for completeness and people curious to look behind the covers.","ref":"Nostrum.Shard.Session.Compression.Zlib.html#module-internal-module-info"},{"type":"function","title":"Nostrum.Shard.Session.Compression.Zlib.create_context/0","doc":"","ref":"Nostrum.Shard.Session.Compression.Zlib.html#create_context/0"},{"type":"function","title":"Nostrum.Shard.Session.Compression.Zlib.inflate/2","doc":"","ref":"Nostrum.Shard.Session.Compression.Zlib.html#inflate/2"},{"type":"function","title":"Nostrum.Shard.Session.Compression.Zlib.reset_context/1","doc":"","ref":"Nostrum.Shard.Session.Compression.Zlib.html#reset_context/1"},{"type":"module","title":"Nostrum.Shard.Session.Compression.Zstd","doc":"Implementation of compression methods for the `zstd` compression algorithm.\n\n>","ref":"Nostrum.Shard.Session.Compression.Zstd.html"},{"type":"module","title":"Internal module {: .info} - Nostrum.Shard.Session.Compression.Zstd","doc":">\n> This module is intended for exclusive usage inside of nostrum, and is\n> documented for completeness and people curious to look behind the covers.","ref":"Nostrum.Shard.Session.Compression.Zstd.html#module-internal-module-info"},{"type":"function","title":"Nostrum.Shard.Session.Compression.Zstd.check_available!/0","doc":"","ref":"Nostrum.Shard.Session.Compression.Zstd.html#check_available!/0"},{"type":"function","title":"Nostrum.Shard.Session.Compression.Zstd.create_context/0","doc":"","ref":"Nostrum.Shard.Session.Compression.Zstd.html#create_context/0"},{"type":"function","title":"Nostrum.Shard.Session.Compression.Zstd.inflate/2","doc":"","ref":"Nostrum.Shard.Session.Compression.Zstd.html#inflate/2"},{"type":"function","title":"Nostrum.Shard.Session.Compression.Zstd.reset_context/1","doc":"","ref":"Nostrum.Shard.Session.Compression.Zstd.html#reset_context/1"},{"type":"module","title":"Nostrum.Shard.Supervisor","doc":"Supervises shard processes.","ref":"Nostrum.Shard.Supervisor.html"},{"type":"module","title":"Implementation - Nostrum.Shard.Supervisor","doc":"As events are sent to the shard, the following happens:\n\n1. Shard looks to see what type of event it is, only dispatch events are sent\n to the producer.\n\n2. If the event is a `Dispatch`, the payload is converted to an atom-keyed map.\n This is done because over ETF (which Nostrum uses), map keys are sometimes\n binaries and sometimes strings, making it a real headache. Additionally,\n with atom keys, we can use the `Map.key` notation. This is normally\n considered unsafe but a debug messages will be emitted if a key is unsafely\n converted to an atom. In this way we can ensure that our atom table is not\n growing unbounded.\n\n3. The payload is then written to the cache. To make sure we're not overrunning\n the cache, especially at startup with `request_guild_members` or other heavy\n payloads, this is done in the shard itself.\n\n4. The cache updates itself from the new data. In some cases, such as update or\n delete events, it may send out a second \"old\" object as well, that helps the\n library user to determine what changed.\n\n5. After writing to the cache, the shard `send`s out the event after going\n through the cache to all subscribed processes. In general, the payload will\n often match the payload described by the official Discord API documentation.\n\n6. The shard instructs the websocket client that it's ready to read more data.\n This prevents flooding the shard with messages that it may not be able to\n handle yet, thus growing the message queue and the memory usage.","ref":"Nostrum.Shard.Supervisor.html#module-implementation"},{"type":"function","title":"Nostrum.Shard.Supervisor.child_spec/1","doc":"Returns a specification to start this module under a supervisor.\n\nSee `Supervisor`.","ref":"Nostrum.Shard.Supervisor.html#child_spec/1"},{"type":"function","title":"Nostrum.Shard.Supervisor.connect/2","doc":"Spawns a shard with the specified number and connects it to the discord gateway.","ref":"Nostrum.Shard.Supervisor.html#connect/2"},{"type":"function","title":"Nostrum.Shard.Supervisor.disconnect/1","doc":"Disconnects the shard with the given shard number from the Gateway.\n\nThis function returns `t:resume_information/0` which can be provided\nto `reconnect/1` to reconnect a shard to the gateway and (attempt) to\ncatch up on any missed events.","ref":"Nostrum.Shard.Supervisor.html#disconnect/1"},{"type":"function","title":"Examples - Nostrum.Shard.Supervisor.disconnect/1","doc":"```elixir\niex> Nostrum.Shard.Supervisor.disconnect(4)\n%{shard_num: 4, ...}\n```","ref":"Nostrum.Shard.Supervisor.html#disconnect/1-examples"},{"type":"function","title":"Nostrum.Shard.Supervisor.reconnect/1","doc":"Reconnect to the gateway using the provided `t:resume_information/0`.\n\nResuming is performed by the gateway on a best effort basis, it is not\nguaranteed that a resume will work (though Nostrum will handle failed attempts\nat a resumption). If a reconnect is successful, any events received during the\nreconnection period should be received. If the reconnect fails, events\nreceived between the disconnect and re-authentication may be lost.\n\nFor more information about resuming sessions, visit\n[the Discord Developer Portal](https://discord.com/developers/docs/topics/gateway#resuming).","ref":"Nostrum.Shard.Supervisor.html#reconnect/1"},{"type":"function","title":"Examples - Nostrum.Shard.Supervisor.reconnect/1","doc":"```elixir\niex> resume = Nostrum.Shard.Supervisor.disconnect(4)\n%{shard_num: 4, ...}\niex> Nostrum.Shard.Supervisor.reconnect(resume)\n```","ref":"Nostrum.Shard.Supervisor.html#reconnect/1-examples"},{"type":"function","title":"Nostrum.Shard.Supervisor.start_link/1","doc":"","ref":"Nostrum.Shard.Supervisor.html#start_link/1"},{"type":"function","title":"Nostrum.Shard.Supervisor.update_status/4","doc":"","ref":"Nostrum.Shard.Supervisor.html#update_status/4"},{"type":"function","title":"Nostrum.Shard.Supervisor.update_voice_state/4","doc":"","ref":"Nostrum.Shard.Supervisor.html#update_voice_state/4"},{"type":"type","title":"Nostrum.Shard.Supervisor.resume_information/0","doc":"Represents gateway resume information.","ref":"Nostrum.Shard.Supervisor.html#t:resume_information/0"},{"type":"type","title":"Nostrum.Shard.Supervisor.shard_num/0","doc":"Shard number(`shard_id`). Range is `0..total_shards-1`.","ref":"Nostrum.Shard.Supervisor.html#t:shard_num/0"},{"type":"type","title":"Nostrum.Shard.Supervisor.total_shards/0","doc":"Total shard count(`num_shards`).","ref":"Nostrum.Shard.Supervisor.html#t:total_shards/0"},{"type":"module","title":"Nostrum.StateMachineTranslator","doc":"Translate error reports for `:gen_statem` modules in Elixir.\n\n>","ref":"Nostrum.StateMachineTranslator.html"},{"type":"module","title":"Internal module {: .info} - Nostrum.StateMachineTranslator","doc":">\n> This module is intended for exclusive usage inside of nostrum, and is\n> documented for completeness and people curious to look behind the covers.","ref":"Nostrum.StateMachineTranslator.html#module-internal-module-info"},{"type":"module","title":"Reasoning - Nostrum.StateMachineTranslator","doc":"By default, Elixir will ignore these messages altogether, see [this\nElixirForum\npost](https://elixirforum.com/t/why-does-logger-translator-ignore-gen-statem-reports/37418).\nA possible workaround seems to be using the `gen_state_machine` library, but\npulling in a library purely to have error reporting for something built-in to\nOTP seems pretty strange to me.","ref":"Nostrum.StateMachineTranslator.html#module-reasoning"},{"type":"function","title":"Nostrum.StateMachineTranslator.translate/4","doc":"","ref":"Nostrum.StateMachineTranslator.html#translate/4"},{"type":"exception","title":"Nostrum.Error.ApiError","doc":"Represents a failed response from the API.\n\nThis occurs when `:gun` fails, or when the API doesn't respond with `200` or `204`.\nThis should only be raised explicitly when using the banged API methods.","ref":"Nostrum.Error.ApiError.html"},{"type":"type","title":"Nostrum.Error.ApiError.detailed_error/0","doc":"","ref":"Nostrum.Error.ApiError.html#t:detailed_error/0"},{"type":"type","title":"Nostrum.Error.ApiError.discord_status_code/0","doc":"","ref":"Nostrum.Error.ApiError.html#t:discord_status_code/0"},{"type":"type","title":"Nostrum.Error.ApiError.error/0","doc":"","ref":"Nostrum.Error.ApiError.html#t:error/0"},{"type":"type","title":"Nostrum.Error.ApiError.error_list_map/0","doc":"","ref":"Nostrum.Error.ApiError.html#t:error_list_map/0"},{"type":"type","title":"Nostrum.Error.ApiError.errors/0","doc":"","ref":"Nostrum.Error.ApiError.html#t:errors/0"},{"type":"type","title":"Nostrum.Error.ApiError.response/0","doc":"","ref":"Nostrum.Error.ApiError.html#t:response/0"},{"type":"type","title":"Nostrum.Error.ApiError.status_code/0","doc":"","ref":"Nostrum.Error.ApiError.html#t:status_code/0"},{"type":"type","title":"Nostrum.Error.ApiError.t/0","doc":"","ref":"Nostrum.Error.ApiError.html#t:t/0"},{"type":"exception","title":"Nostrum.Error.CacheError","doc":"Represents an error when interacting with the cache.\n\nThis likely occurs because a specified item could not be found in the cache,\nor your were searching for something invalid.\nThis should only occur when using the banged cache methods.","ref":"Nostrum.Error.CacheError.html"},{"type":"exception","title":"Nostrum.Error.VoiceError","doc":"Represents an error when playing sound through voice channels.\n\nThis occurs when attempting to play audio and the file can't be found\nfor the ffmpeg, youtube-dl, or streamlink executables.","ref":"Nostrum.Error.VoiceError.html"},{"type":"extras","title":"Introduction","doc":"# Introduction\n\nnostrum is an Elixir library that can be used to interact with Discord.\n\nTo see documentation about a specific part of the library, please visit one of\nthe following:\n\n* [API](api-1.html) - Methods to interact with the RESTful API (and some other goodies).\n* [State](state.html) - Caches that keep information from Discord fresh at your disposal.\n* [Events](event_handling.html) - Handling events from Discord as they come in.\n* [Voice](voice-2.html) - Playing audio through Discord voice channels.","ref":"intro.html"},{"type":"extras","title":"Setup - Introduction","doc":"There are two versions of nostrum, a stable version released on Hex and a dev\nversion on GitHub. The dev version will be more up to date but will likely\nhave more errors.\n\n```elixir\ndef deps do\n [{:nostrum, \"~> 0.10\"}]\n # Or, for bleeding edge changes:\n # [{:nostrum, github: \"Kraigie/nostrum\"}]\nend\n```\n\nNext up, you need to configure nostrum. The most basic configuration is simply\nsetting a token to log in with:\n\n```elixir\nconfig :nostrum,\n token: \"666\" # The token of your bot as a string\n```","ref":"intro.html#setup"},{"type":"extras","title":"Configuration options - Introduction","doc":"Apart from the `token` field mentioned above, the following fields are also supported:\n\n- `num_shards` - the amount of shards to run. Can be one of the following:\n - `:auto`: use the suggested amount of shards as provided by Discord.\n - *`num`*: a number of shards to run. nostrum will warn if this is not the\n recommended amount.\n - `{lowest, highest, total}`: start shards `lowest` to `highest`. `total`\n should contain the total amount of shards that your bot is expected to have.\n Useful for splitting a single bot across multiple servers, but see also [the\n multi-node documentation](../advanced/multi_node.md).\n - `:manual`: nostrum does not automatically spawn shards. See the [Manual\n Sharding](../advanced/manual_sharding.md) guide for more information.\n- `gateway_intents` - a list of atoms representing gateway intents for Nostrum\n to subscribe to from the Discord API. More information can be found in the\n [gateway intents](./gateway_intents.md) documentation page.\n- `request_guild_members` - perform member chunking to retrieve a complete list\n of members for all guilds at startup. Depending on your [cache\n backend](../advanced/pluggable_caching.md), this may increase startup time\n and memory usage by quite a bit. Defaults to `false`.\n- `gateway_compression` - use either `:zlib` (default) or `:zstd` for compression\n of messages from the Discord gateway. See the documentation on\n [Gateway Compression](../advanced/gateway_compression.md) for more information.","ref":"intro.html#configuration-options"},{"type":"extras","title":"Voice-specific - Introduction","doc":"- `ffmpeg` - Specifies the path to the `ffmpeg` executable for playing audio.\n Defaults to `\"ffmpeg\"`.\n- `youtubedl` - Specifies the path to the `youtube-dl` executable for playing\n audio with youtube-dl support. Defaults to `\"youtube-dl\"`.\n- `streamlink` - Specifies the path to the `streamlink` executable for playing\n livestream audio with streamlink support. Defaults to `\"streamlink\"`.\n- `audio_timeout` - Milliseconds that input must begin generating audio by\n upon invoking `play`. More information about this option can be found in the\n [voice](./voice-2.html) documentation page. Defaults to `20_000` (20s).\n- `audio_frames_per_burst` - Number of opus frames to send at a time while\n playing audio. More information about this option can be found in the\n [voice](./voice-2.html) documentation page. Defaults to `10`.\n- `voice_auto_connect` - This will determine if Nostrum automatically connects\n to voice websockets gateways upon joining voice channels. If set to `false`\n but you still wish to connect to the voice gateway, you can do so manually\n by calling `Nostrum.Voice.connect_to_gateway/1` after joining a voice\n channel. Defaults to `true`.\n- `voice_encryption_mode` - Defaults to `:aes256_gcm`. More information about this\n option can be found [here](./voice-2.html#encryption-modes).","ref":"intro.html#voice-specific"},{"type":"extras","title":"Development & debugging - Introduction","doc":"- `log_full_events` - This will log the full payload received over the\n websocket. Defaults to `false`.\n- `log_dispatch_events` - This will log dispatch events as they are received\n from the gateway. Defaults to `false`.\n- `fullsweep_after_default` - Sets the `fullsweep_after` flag for processes\n that can have irregularly high memory usage due to Discord payloads. This\n options will dramatically reduce the amount of memory used by some processes\n at the cost of increased CPU usage. This is useful if you're running your\n application under a memory constrained environment. This comes at the cost\n of increased CPU usage. By default, this option will only affect some\n processes. You can set this flag for *all* processes using environment\n variables or by [setting the system flag\n yourself](http://erlang.org/doc/man/erlang.html#system_flag-2). Defaults to\n whatever your system recommends, which is probably `65535`.\n- `force_http1` - Set to `true` if you wish to disable automatic use of HTTP 2\n or newer HTTP versions for API requests to Discord. Useful to diagnose issues\n with ratelimiter connections during abnormal network conditions.","ref":"intro.html#development-debugging"},{"type":"extras","title":"Internal options - Introduction","doc":"The following options are only used for testing nostrum itself.\n\n- `dev` - This is added to enable Nostrum to be run completely stand alone for\n development purposes. `true` will cause Nostrum to spawn its own event\n consumers. If you have the dev flag set to true while running Nostrum\n alongside your application some of your events will be consumed. Defaults to\n `false`.","ref":"intro.html#internal-options"},{"type":"extras","title":"Logging - Introduction","doc":"nostrum uses Elixir's standard logger to inform you about regular and irregular\nevents. Normal messages include Discord-requested shard reconnections and the\n`IDENTIFY` and `READY` events.\n\nThe following metadata fields through logger:\n\n - `shard` - Id of the shard on which the event occurred\n - `guild` - Name of the guild on which the voice connection event occurred\n - `channel` - Name of the channel on which the voice connection event occurred\n\nTo enable this metadata, logger can be configured as such:\n```elixir\nconfig :logger, :console,\n metadata: [:shard, :guild, :channel]\n``` \n\nFor more information on how this works, and how to change the logging\nconfiguration for nostrum on its own, please see the [Logger\ndocumentation](https://hexdocs.pm/logger/Logger.html)","ref":"intro.html#logging"},{"type":"extras","title":"Why Elixir? - Introduction","doc":"From the Elixir website -\n\n> Elixir is a dynamic, functional language designed for building scalable and\n> maintainable applications.\n\n> Elixir leverages the Erlang VM, known for running low-latency, distributed\n> and fault-tolerant systems, while also being successfully used in web\n> development and the embedded software domain.\n\n**How does Nostrum leverage these benefits?**\n\n- **Fault tolerance**: nostrum attempts, where reasonable, to allow for\n different parts of the application to fail with minimal harm. Supervisors are\n used heavily to ensure that anything that breaks will be restarted. Nostrum\n attempts to avoid most errors, but if they do occur (*and they will!*) it\n shouldn't be the end of the world.\n\n- **Concurrency** - Concurrency is considered to be a first class citizen in\n Elixir. Through the use of SMP and processes, information should travel\n through the application quickly.\n\n- **Distributed**: nostrum does not currently support full distribution of all\n components out of the box - that would fall out of the scope of the library.\n However, see the [multi-node](../advanced/multi_node.md) document for\n provided functionality.","ref":"intro.html#why-elixir"},{"type":"extras","title":"Example bots - Introduction","doc":"- A simple bot that consumes events from the gateway can be found [at\n `examples/event_consumer.ex`](https://github.com/Kraigie/nostrum/blob/master/examples/event_consumer.ex).\n\n- An example bot that plays audio through voice channels can be found [at\n `examples/audio_player_example.ex`](https://github.com/Kraigie/nostrum/blob/master/examples/audio_player_example.ex).\n\n- A properly structured bot with commands utilizing\n [nosedrum](https://github.com/jchristgit/nosedrum) can be found [in this\n GitHub repository](https://github.com/kshannoninnes/sample_bot)\n\n- A rather large and complex bot, bolt, can be found\n [here](https://github.com/jchristgit/bolt).\n\n\n\n","ref":"intro.html#example-bots"},{"type":"extras","title":"API","doc":"# API\n\nnostrum includes a complete implementation of the endpoints supported by\nDiscord's API. Method names are copied closely from the documentation to\neliminate any confusion about what a method does, as well as to allow users to\neasily lookup the endpoints in the official API documentation.\n\nFor a full listing of method definitions, please see the `Nostrum.Api` module.","ref":"api-4.html"},{"type":"extras","title":"Banged (`!`) API methods - API","doc":"A lot of methods have a `banged` version of themselves. This is a common Elixir\nidiom hailing from Elixir's style of failing fast.\n\nBy default, the API method will return a tuple like one of the following:\n\n```elixir\n# Success\n{:ok, msg} = Nostrum.Api.create_message(179679229036724225, \"456\")\n\n# Failure\n{:error, reason} = Nostrum.Api.create_message(123, \"eat my shorts api\")\n```\n\nA banged method, instead of returning an `error` tuple, will throw an error. If\nsuccessful, it will directly return the response with no `:ok` tuple.\n\n```elixir\n# Success\nmsg = Nostrum.Api.create_message!(179679229036724225, \"456\")\n\n# Failure - Throws an error\nNostrum.Api.create_message!(123, \"eat my shorts api\")\n```","ref":"api-4.html#banged-api-methods"},{"type":"extras","title":"Abstractions - API","doc":"When appropriate, some helpers are defined to make interacting with the API\nsimpler. An example of this is `Nostrum.Api.get_channel_messages/3`. By default\nthis endpoint only allows the retrieval of `100` messages at a time. A general\nuse case will have a user wanting more messages than that, thus nostrum handles\nthe retrieval of any number of messages for the user.\n\nThere are other endpoints that could use grooming like above, feel free to\nsuggest an interface and implementation for these methods.","ref":"api-4.html#abstractions"},{"type":"extras","title":"Ratelimiting - API","doc":"Ratelimiting is handled internally by nostrum, so long as you use the methods\nsupplied in the `Nostrum.Api` module. This means either calling the methods as\nthey're given or using `Nostrum.Api.request/4` to call an endpoint.\n\nTo ensure that every request is handled properly, no matter if they're called\nasynchronously or not, nostrum funnels all requests through the\n`Nostrum.Api.Ratelimiter` state machine.","ref":"api-4.html#ratelimiting"},{"type":"extras","title":"REST-only - API","doc":"If you only want to use the REST portion of the provided API, the only process\nneeded is the ratelimiter, which can be manually started by calling\n`Nostrum.Api.Ratelimiter.start_link/1`. \n\nIf you don't want to start nostrum, you can add `runtime: false` to the\ndependency options. If you're using `mix release`, all `runtime: false` deps\nwill be excluded from the build, so you'll also need to add `:nostrum` app to\n`mix.exs` in `:included_applications` application option or in the `releases`\nproject option.\n\n","ref":"api-4.html#rest-only"},{"type":"extras","title":"Application commands","doc":"# Application commands\n\nDiscord allows you to create commands for your bot that work within the slash\ncommand menu or via the context menu.\n\nUsing nostrum, you can create, receive, and respond to application commands invoked\nby Discord users.","ref":"application_commands.html"},{"type":"extras","title":"Permissions required - Application commands","doc":"Quoting the [official Discord\ndocumentation](https://discord.com/developers/docs/interactions/application-commands#authorizing-your-application):\n\n> In order to make Commands work within a guild, the guild must authorize\n> your application with the `applications.commands` scope. The `bot` scope is not\n> enough.","ref":"application_commands.html#permissions-required"},{"type":"extras","title":"Getting started - Application commands","doc":"Discord differentiates between **global** and **guild-specific** slash\ncommands. Global commands will be distributed across all guilds that your bot\nis in within an hour. Guild-specific commands slash commands will be available\ninstantly, which is why we will use guild-specific commands for testing.\n\nWe will create a command that will allow the user to assign or remove a role of\nchoice. The `guild_id` parameter is the ID of the guild on which the command\nwill be created.\n\nOur command definition looks as follows:\n\n```elixir\ncommand = %{\n name: \"role\",\n description: \"assign or remove a role\",\n options: [\n %{\n # ApplicationCommandType::ROLE\n type: 8,\n name: \"name\",\n description: \"role to assign or remove\",\n required: true\n },\n %{\n # ApplicationCommandType::STRING\n type: 3,\n name: \"action\",\n description: \"whether to assign or remove the role\",\n required: true,\n choices: [\n %{\n name: \"assign\",\n value: \"assign\"\n },\n %{\n name: \"remove\",\n value: \"remove\"\n }\n ]\n }\n ]\n}\n```\n\nTo register this command on the guild, we simply pass it to\n`Nostrum.Api.create_guild_application_command/2`:\n\n```elixir\nNostrum.Api.create_guild_application_command(guild_id, command)\n```\n\nYou can register the command in the ``:READY`` gateway event handler.","ref":"application_commands.html#getting-started"},{"type":"extras","title":"Receiving interactions - Application commands","doc":"Set up a gateway event handler for ``:INTERACTION_CREATE``. On command\ninvocation the interaction payload will look something like the following:\n\n```elixir\n%Nostrum.Struct.Interaction{\n channel_id: 474025345243414539,\n data: %{\n id: 793152718839087135,\n name: \"role\",\n options: [\n %{name: \"name\", value: \"458692275199803406\"},\n %{name: \"action\", value: \"assign\"}\n ]\n },\n # ...\n```\n\nNote that Discord already converted the user-supplied role to a snowflake.\nConvenient!\n\nLet's match on the retrieved event and create two function heads for the\nseparate operation modes:\n\n```elixir\nalias Nostrum.Api\nalias Nostrum.Struct.Interaction\n\ndefp manage_role(%Interaction{data: %{options: [%{value: role_id}, %{value: \"assign\"}]}} = interaction) do\n Api.add_guild_member_role(interaction.guild_id, interaction.member.user_id, role_id)\nend\n\ndefp manage_role(%Interaction{data: %{options: [%{value: role_id}, %{value: \"remove\"}]}} = interaction) do\n Api.remove_guild_member_role(interaction.guild_id, interaction.member.user_id, role_id)\nend\n\ndef handle_event({:INTERACTION_CREATE, %Interaction{data: %{name: \"role\"}} = interaction, _ws_state}) do\n manage_role(interaction)\nend\n```\n\nOkay, we now have our handling code done. This is pretty much the same code\nthat you would use for regular commands.","ref":"application_commands.html#receiving-interactions"},{"type":"extras","title":"Responding to interactions - Application commands","doc":"To respond to interactions, use ``Nostrum.Api.create_interaction_response/2``:\n\n```elixir\ndefp manage_role(%Interaction{data: %{options: [%{value: role_id}, %{value: \"assign\"}]}} = interaction) do\n Api.add_guild_member_role(interaction.guild_id, interaction.member.user_id, role_id)\n response = %{\n type: 4, # ChannelMessageWithSource\n data: %{\n content: \"role assigned\"\n }\n }\n Api.create_interaction_response(interaction, response)\nend\n```\n\nWe have now built a simple command using slash commands, with argument\nconversion delegated to Discords side of things. Further actions on the\ncommand, such as checking permissions, author roles, and more - are left as an\nexercise to the reader.","ref":"application_commands.html#responding-to-interactions"},{"type":"extras","title":"Gateway Intents","doc":"# Gateway Intents\n\nThe Discord API allows you to fine tune the payloads that are received by your bot through gateway intents.\n\nWhen connecting to Discord you can instruct Discord on which events you want to receive (i.e. messages, user presences, etc.).\n\nNostrum allows you to set these intents within your configuration, **by default all non-privileged intents are enabled**.\n\nTo pass intents you should use the following configuration:\n```elixir\nconfig :nostrum,\n token: \"bot_token\",\n gateway_intents: [\n :guilds,\n # other gateway intents\n ]\n```\n\nPossible intents (and the gateway events they correspond to) are:\n\n```\nguilds:\n - GUILD_CREATE\n - GUILD_UPDATE\n - GUILD_DELETE\n - GUILD_ROLE_CREATE\n - GUILD_ROLE_UPDATE\n - GUILD_ROLE_DELETE\n - CHANNEL_CREATE\n - CHANNEL_UPDATE\n - CHANNEL_DELETE\n - CHANNEL_PINS_UPDATE\n\nguild_members*:\n - GUILD_MEMBER_ADD\n - GUILD_MEMBER_UPDATE\n - GUILD_MEMBER_REMOVE\n\nguild_moderation:\n - GUILD_AUDIT_LOG_ENTRY_CREATE\n - GUILD_BAN_ADD\n - GUILD_BAN_REMOVE\n\nguild_emojis:\n - GUILD_EMOJIS_UPDATE\n\nguild_integrations:\n - GUILD_INTEGRATIONS_UPDATE\n\nguild_webhooks:\n - WEBHOOKS_UPDATE\n\nguild_invites:\n - INVITE_CREATE\n - INVITE_DELETE\n\nguild_voice_states:\n - VOICE_STATE_UPDATE\n\nguild_presences*:\n - PRESENCE_UPDATE\n\nguild_messages:\n - MESSAGE_CREATE\n - MESSAGE_UPDATE\n - MESSAGE_DELETE\n - MESSAGE_DELETE_BULK\n\nguild_message_reactions:\n - MESSAGE_REACTION_ADD\n - MESSAGE_REACTION_REMOVE\n - MESSAGE_REACTION_REMOVE_ALL\n - MESSAGE_REACTION_REMOVE_EMOJI\n\nguild_message_typing:\n - TYPING_START\n\ndirect_messages:\n - MESSAGE_CREATE\n - MESSAGE_UPDATE\n - MESSAGE_DELETE\n - CHANNEL_PINS_UPDATE\n\ndirect_message_reactions:\n - MESSAGE_REACTION_ADD\n - MESSAGE_REACTION_REMOVE\n - MESSAGE_REACTION_REMOVE_ALL\n - MESSAGE_REACTION_REMOVE_EMOJI\n\ndirect_message_typing:\n - TYPING_START\n\nmessage_content*:\n - MESSAGE_CONTENT\n\nguild_scheduled_events:\n - GUILD_SCHEDULED_EVENT_CREATE\n - GUILD_SCHEDULED_EVENT_UPDATE\n - GUILD_SCHEDULED_EVENT_DELETE\n - GUILD_SCHEDULED_EVENT_USER_ADD\n - GUILD_SCHEDULED_EVENT_USER_REMOVE\n\nauto_moderation_configuration:\n - AUTO_MODERATION_RULE_CREATE\n - AUTO_MODERATION_RULE_DELETE\n - AUTO_MODERATION_RULE_UPDATE\n\nauto_moderation_execution:\n - AUTO_MODERATION_RULE_EXECUTION\n\nguild_message_polls:\n - MESSAGE_POLL_VOTE_ADD\n - MESSAGE_POLL_VOTE_REMOVE\n\ndirect_message_polls:\n - MESSAGE_POLL_VOTE_ADD\n - MESSAGE_POLL_VOTE_REMOVE\n```\n\nBesides an explicit list of atoms, acceptable configuration values are `:all` and `:nonprivileged`.\n\nNote that intents marked with `*` are **privileged** intents. You must enable these intents by visiting the Discord Developer portal.\n\nOnce your bot passes 100 servers Discord will force you to **verify your bot**. If you require privileged intents you may need to write additional information on your usage of them.\n\nNostrum's default value for `gateway_intents` is `:nonprivileged`, which enables all non-privileged intents.\nThis is equivalent to setting `gateway_intents` to the above list without the **privileged** intents.\nIf you require all intents, including privileged ones, set `gateway_intents` to `:all`.\n\nMore information on gateway intents can be found in the [Discord Developer documentation](https://discord.com/developers/docs/topics/gateway#gateway-intents).","ref":"gateway_intents.html"},{"type":"extras","title":"Event handling","doc":"# Event handling\n\nEvent handling is how your bot application will interact with the information\nsent from Discord over a websocket connection. By defining an event handler for\nan event, when something like a message is created or a channel is deleted, your\napplication can perform an action as a result of that event.\n\nNostrum uses [Erlang's `:pg` module](https://www.erlang.org/doc/man/pg.html) to\ndetermine which consumers are interested in events, via\n`Nostrum.ConsumerGroup`. This allows dynamic subscriptions at runtime, even\nacross nodes. Events are dispatched to group members as they appear from the\nDiscord Gateway after ingestion into the cache.\n\nTo see the documentation on handling events of provided consumers, please see\n`Nostrum.Consumer`.\n\n\n","ref":"event_handling.html"},{"type":"extras","title":"State","doc":"# State\n\nNostrum keeps track of the state that your bot can see, which is updated based\non events from the WS connection. We differentiate between _caches_, which are\noptional and are used to provide your bot with fresh data, and _state_, which is\nmandatory state that we must track internally.","ref":"state.html"},{"type":"extras","title":"Caches - State","doc":"Caching will by default use Erlang's ETS tables. Abstractions are provided for\ncommon operations. If you feel the caches are missing some abstraction, feel\nfree to suggest it [on GitHub](https://github.com/Kraigie/nostrum/issues).\n\nShould the default ETS-based caching not be enough for you - for instance, you\nwant to integrate to some external caching mechanism or want to distribute your\nbot across multiple nodes, please see the [pluggable\ncaching](../advanced/pluggable_caching.md) documentation.","ref":"state.html#caches"},{"type":"extras","title":"Query list comprehensions - State","doc":"nostrum's built-in functions to query the cache should be sufficient to cover\ncommon use cases. If you need more involved queries, it is recommended to use\nnostrum's [qlc](https://www.erlang.org/doc/man/qlc.html) support.","ref":"state.html#query-list-comprehensions"},{"type":"extras","title":"Examples - State","doc":"Below you can find some example queries using QLC.\n\n```erl\n% src/nostrum_queries.erl\n\n-module(nostrum_queries).\n-export([find_role_users/4, find_large_communities/2]).\n\n-include_lib(\"stdlib/include/qlc.hrl\").\n\n% Find the Nostrum.Struct.User and Member objects of all members in a specific guild role.\nfind_role_users(RequestedGuildId, RoleId, MemberCache, UserCache) ->\n qlc:q([{User, Member} || {{GuildId, MemberId}, Member} <- MemberCache:query_handle(),\n % Filter to member objects of the selected guild\n GuildId =:= RequestedGuildId,\n % Filter to members of the provided role\n lists:member(RoleId, map_get(roles, Member)),\n % Get a handle on the UserCache table\n {UserId, User} <- UserCache:query_handle(),\n % Find the User struct that matches the found Member\n MemberId =:= UserId]).\n\n% Find all communities in the Guild cache with the COMMUNITY guild feature\n% that are over a certain threshold in user size\nfind_large_communities(Threshold, GuildCache) ->\n qlc:q([Guild || {_, Guild} <- GuildCache:query_handle(),\n % Filter for guilds that are over the provided size\n map_get(member_count, Guild) > Threshold,\n % Filter for guilds that have COMMUNITY in the features field\n lists:member(<<\"COMMUNITY\">>, map_get(features, Guild))]).\n```\n\n`nostrum_queries:find_role_users/4` fetches all users in the specified guild\n(`RequestedGuildId`) with the role `RoleId`. The code is annotated, but\nstep-by-step the flow is: the member cache is filtered down to all members in\nthe guild, then using `lists:member/2` we check for role membership, and finally\nwe join against the user cache to return full user objects in the result.\n\n`nostrum_queries:find_large_communities/2` fetches all guilds in the guild cache\nthat meet the criteria of having at least `Threshold` members *and* having the\n`COMMUNITY` guild feature set to true in the Discord UI. It is easy to follow\nthe flow of this query by the annotations, with only some minor things to note\nsuch as needing to use `<<\"bitstring\">>` bit syntax to represent the strings,\nwhich is implicit in Elixir.\n\nIn Elixir, you can call these queries like so using `:qlc.eval/1`:\n\n```elixir\nmatching_guilds = :qlc.eval(:nostrum_queries.find_large_communities(50, Nostrum.Cache.GuildCache))\n```","ref":"state.html#examples"},{"type":"extras","title":"Implementing your own queries and caches - State","doc":"By [implementing a QLC\ntable](https://www.erlang.org/doc/man/qlc.html#implementing_a_qlc_table), all\nread operations from nostrum will be performed over your QLC table\nimplementation alone, and nostrum's dispatcher modules can easily be expanded\nfor more queries in the future. If you've never heard of QLC before, the\n[`beam-lazy` repository](https://github.com/savonarola/beam-lazy) contains a\ngood introduction.\n\nUsing QLC bring a plethora of benefits. Implementation of a QLC table is\nrelatively simple, and gives us compile-time query optimization and compilation\nin native Erlang list comprehension syntax. Furthermore, should you wish to\nperform queries on your caches beyond what nostrum offers out of the box, you\ncan write your queries using the `query_handle/0` functions on our caches,\nwithout having to investigate their exact API.\n\nThere is one caveat to be aware of when writing cache adapters in Elixir that\nbuild on this functionality: While Erlang's QLC can perform intelligent query\noptimization, a lot of it is implemented via a parse transform and thus only\navailable at compile time in Erlang modules. It is therefore recommended to\nwrite your QLC queries in Erlang modules: in Mix projects this can be achieved\neasily via the `src/` directory. Read the [QLC module\ndocumentation](https://www.erlang.org/doc/man/qlc.html) for more details on the\noptimizations done.\n\nThe reason why QLC is being used as opposed to the Elixir-traditional stream API\nis that the stream API does not support a number of features we are using here.\nApart from that, nostrum's previous API (`select` and friends) gave users a\nfalse impression that nostrum was doing an efficient iteration under the hood,\nwhich caused issues for large bots.","ref":"state.html#implementing-your-own-queries-and-caches"},{"type":"extras","title":"Internal state - State","doc":"In addition to the optional caching, nostrum also needs to keep track of\ninternal state so it functions properly. State follows the same pattern as the\npluggable caching functionality described above, but disabling state storage via\n`NoOp` as with caching is not possible.\n\nThe modules under `Nostrum.Store` are used for this functionality.\n\n\n\n","ref":"state.html#internal-state"},{"type":"extras","title":"Voice","doc":"# Voice","ref":"voice-3.html"},{"type":"extras","title":"Voice channels - Voice","doc":"Discord voice channels allow audio data to be sent to the voice servers over UDP.\nA bot is able to connect to up to one voice channel per guild. One websocket\nconnection will be opened and maintained for each voice channel the bot joins.\nThe websocket connection should reconnect automatically the same way that the \nmain Discord gateway websocket connections do. For available voice functions and\nusage see the `Nostrum.Voice` module.","ref":"voice-3.html#voice-channels"},{"type":"extras","title":"FFmpeg - Voice","doc":"Nostrum uses the powerful [ffmpeg](https://ffmpeg.org/) command line utility to\nencode any audio (or video) file for sending to Discord's voice servers.\nBy default Nostrum will look for the executable `ffmpeg` in the system path.\nIf the executable is elsewhere, the path may be configured via\n`config :nostrum, :ffmpeg, \"/path/to/ffmpeg\"`.\nThe function `Nostrum.Voice.play/4` allows sound to played via files, local or \nremote, or via raw data that gets piped to `stdin` of the `ffmpeg` process.\nWhen playing from a url, the url can be a name of a file on the filesystem or a url\nof file on a remote server - [ffmpeg supports a ton of protocols](https://www.ffmpeg.org/ffmpeg-protocols.html),\nthe most common of which are probably `http` or simply reading a file from the filesystem.\nIt is also possible to send raw opus frames, bypassing ffmpeg, if desired.","ref":"voice-3.html#ffmpeg"},{"type":"extras","title":"youtube-dl - Voice","doc":"With only `ffmpeg` installed, Nostrum supports playing audio/video files or raw, piped\ndata as discussed in the section above. Nostrum also has support for `youtube-dl`, another\npowerful command line utility for downloading audio/video from online video services.\nAlthough the name implies support for Youtube, `youtube-dl` supports downloading from\n[an immense list of sites](https://github.com/ytdl-org/youtube-dl/blob/master/docs/supportedsites.md).\nBy default Nostrum will look for the executable `youtube-dl` in the system path. If the\nexecutable is elsewhere, the path may be configured via `config :nostrum, :youtubedl, \"/path/to/youtube-dl\"`.\nWhen `Nostrum.Voice.play/4` is called with `:ytdl` for the `type` parameter, `youtube-dl` will be\nrun with options `-f bestaudio -q -o -`, which will attempt to download the audio at the given url and pipe it to `ffmpeg`.\n\n> #### Forks {: .warning}\n> The `youtube-dl` project has not been regularly maintained, and the latest release is not presently compatible with YouTube.\n> The use of the `yt-dlp` fork is recommended in its place.\n>\n> ```elixir\n> config :nostrum, :youtubedl, \"yt-dlp\"\n> ```","ref":"voice-3.html#youtube-dl"},{"type":"extras","title":"streamlink - Voice","doc":"Nostrum also has support for `streamlink`, yet another powerful command line utility \nfor downloading live streams from online video streaming services.\nBy default Nostrum will look for the executable `streamlink` in the system path. \nIf the executable is elsewhere, the path may be configured via `config :nostrum, :streamlink, \"/path/to/streamlink\"`.\nWhen `Nostrum.Voice.play/4` is called with `:stream` for the `type` parameter, `streamlink` \nwill attempt to download the live stream content and pipe it to `ffmpeg`.\nIt's recommended to use the most up-to-date version of `streamlink` to properly\nplay human-readable URLs from services such as Youtube and Twitch. Version 3.x.x\ncurrently works with both of these services. If the short, human-readable url of the streaming service\ndoesn't work with `streamlink` out of the box, you may have more luck extracting the underlying raw stream url.\nThese are typically long URLs that end in `.m3u8` or `.hls`. If you have `youtube-dl` installed,\nyou can attempt to get this URL by running the following:\n\n```elixir\n{raw_url, 0} = System.cmd(\"youtube-dl\", [\"-f\", \"best\", \"-g\", url])\nraw_url = raw_url |> String.trim()\n```","ref":"voice-3.html#streamlink"},{"type":"extras","title":"Audio Timeout - Voice","doc":"Upon invoking `Nostrum.Voice.play/4`, the player process has a large configurable initial window\n(`20_000` milliseconds by default) that it must generate audio within before timing out. This is done to allow\nample time for slow networks to download large audio/video files. This configurable timeout only applies to when\n`play` is initially invoked; once audio has begun transmitting, the timeout drops to `500` milliseconds.\nBecause the `ffmpeg` process doesn't close when its input device is `stdin`, which is the case\nwhen `type` is set to `:pipe`, `:ytdl`, or `:stream` the timeout is necessary to promptly detect end of input.\nIf the audio process times out within the initial window, the `Nostrum.Struct.Event.SpeakingUpdate`\nthat is generated will have its `timed_out` field set to `true`. It will be `false` in all other cases.\nIf your use case does not include large, slow downloads and you wish to more quickly be notified\nof timeouts or errors, you may consider setting `audio_timeout` to a lower value.\nHowever, `youtube-dl` typically takes at least 2.5 seconds to begin outputting audio data,\neven on a fast connection.\nIf your use case involves playing large files at a timestamp several hours in like this,\n`play(guild_id, url, :ytdl, start_time: \"2:37:56\")`, you may consider setting the timeout to a higher value,\nas downloading a large youtube video and having `ffmpeg` seek through several hours\nof audio may take 15-20 seconds, even with a fast network connection.","ref":"voice-3.html#audio-timeout"},{"type":"extras","title":"Audio Frames Per Burst - Voice","doc":"The value `:audio_frames_per_burst` represents the number of consecutive packets to send before resting.\nWhen using `Nostrum.Voice.play/4` to play audio, Nostrum collects a number of opus frames from the \naudio input source before sending them all to Discord as a \"burst\" of ordered frames. \nThis is done to reduce the overhead of process-sleeping and setup.\nFor reference, a single opus frame is 20 milliseconds of audio (at least for the format that Discord uses).\nBy default, the `:audio_frames_per_burst` is set to `10`, equivalent to 200 milliseconds of audio.\n\nUnder normal circumstances, there's no reason to change this value. However, if you attempt to play a very short\npiece of audio that's less than `10` frames (200ms) in length, it will time out (after the configured \n`:audio_timeout` duration has passed) as it waits to collect `10` frames to send. For those cases, configure the\nvalue to *at most* the minimum frame length of the audio you intend to play, or simply `1`. Setting the value to `1`\nmeans that each opus frame from your audio source will be taken individually and be sent in its own \"burst\" with the \nplayer process sleeping between each; you likely won't notice a difference in audio playback quality compared to the \ndefault value of `10` other than that your sub-200ms audio files will play as expected.","ref":"voice-3.html#audio-frames-per-burst"},{"type":"extras","title":"Voice Events - Voice","doc":"There are a few voice related events that bots can consume with a `Nostrum.Consumer` process:\n - `t:Nostrum.Consumer.voice_state_update/0`\n - `t:Nostrum.Consumer.voice_server_update/0`\n - `t:Nostrum.Consumer.voice_speaking_update/0`\n - `t:Nostrum.Consumer.voice_ready/0`\n - `t:Nostrum.Consumer.voice_incoming_packet/0`\n\nBoth `t:Nostrum.Consumer.voice_state_update/0` and `t:Nostrum.Consumer.voice_server_update/0` \nare sent by the shard gateway session when a bot joins a voice channel. The receipt of both of \nthese events is required for a voice gateway session to begin, and it happens automatically when \njoining a channel. The `t:Nostrum.Consumer.voice_state_update/0` event is also sent every time \nany user joins or leaves a voice channel, and `t:Nostrum.Struct.Guild.voice_states/0` is \nautomatically updated within the guild cache to reflect current state of voice channels.\n\nA use case for listening to both `t:Nostrum.Consumer.voice_state_update/0` and \n`t:Nostrum.Consumer.voice_server_update/0` events would be to outsource voice connections to \nan application outside of Nostrum. This can be done by setting the config option \n`:voice_auto_connect` to `false` and taking the session and token information \nfrom both of the events and passing them to your external voice app. \nOutside of this niche use case, another use case for listening solely to the\n`t:Nostrum.Consumer.voice_state_update/0` event would be to detect when users join or leave \nvoice channels.\n\nThe `t:Nostrum.Consumer.voice_speaking_update/0` event is generated by Nostrum for convenience. It is \nsent every time the bot starts or stops speaking/sending audio. A use case for this event is if \nyou have a queue of URLs to play, listening to the `t:Nostrum.Consumer.voice_speaking_update/0` \nwill let the bot know when the current URL has finished playing and that it should begin playing \nthe next one in the queue. The alternative approach for this use case that is not event-driven \nis to periodically call `Nostrum.Voice.playing?/1` and wait for it to return `false` as the \ntrigger to play the next URL. Note that the third element in the event is of type\n`t:Nostrum.Struct.VoiceWSState.t/0` and not `t:Nostrum.Struct.WSState.t/0`.\n\nThe `t:Nostrum.Consumer.voice_ready/0` event is generated by Nostrum for convenience. It is sent\nwhen the bot is ready to begin sending audio data upon joining a voice channel. From the moment\nthe bot joins a voice channel, Nostrum handles the multi-step handshaking process that is \nrequired before any audio packets can be sent or received. It is a common use case for bots to\nimmediately begin playing audio upon joining a voice channel. Calling `Nostrum.Voice.play/4`\ndirectly after calling `Nostrum.Voice.join_channel/4` will always return an error as several\nnetwork actions must take place before playing audio is possible. Listening for the\n`t:Nostrum.Consumer.voice_ready/0` event can be used by the bot to begin playing audio as soon \nas it is able to. The alternative approach for this use case that is not event-driven is to \nperiodically call `Nostrum.Voice.ready?/1` and wait for it to return `true` as the trigger to\nbegin playing. Another common approach is to define a `try_play` function as follows:\n```elixir\ndef try_play(guild_id, url, type, opts \\\\ []) do\n case Nostrum.Voice.play(guild_id, url, type, opts) do\n {:error, _msg} ->\n Process.sleep(100)\n try_play(guild_id, url, type, opts)\n\n _ ->\n :ok\n end\nend\n```\nNote that the third element in the event is of type `t:Nostrum.Struct.VoiceWSState.t/0` and \nnot `t:Nostrum.Struct.WSState.t/0`.\n\nThe `t:Nostrum.Consumer.voice_incoming_packet/0` event is generated by Nostrum. None will be generated\nby default. You must first be connected to a voice channel, call the `Nostrum.Voice.start_listen_async/1`\nfunction, then have another user in the same voice channel speak. If these conditions are met, an event\nwill be received for each RTP packet the bot receives; 50 packets per 1 second for each user that is\nactively speaking. These events are only useful if you intend to listen to incoming audio and are disabled\nby default. An alternative approach to listening to incoming audio that is not event driven is to call\n`Nostrum.Voice.listen/3`. This function blocks until the specified number of RTP packets is received.\n`Nostrum.Voice.listen/3` has the additional features of removing duplicate RTP packets within the set of\npackets returned per invocation and the option to return the raw RTP packet. In practice these features\nlikely won't be missed when consuming incoming voice packets asynchronously.\nNote that the third element in the event is of type\n`t:Nostrum.Struct.VoiceWSState.t/0` and not `t:Nostrum.Struct.WSState.t/0`.","ref":"voice-3.html#voice-events"},{"type":"extras","title":"Encryption Modes - Voice","doc":"Nostrum supports all of Discord's available encryption modes for voice channels.\nThe encryption mode is invisible to the user, and you will likely never need to touch it.\n\nDifferent encryption modes may have different performance characteristics depending on the\nhardware architecture your bot is running on. If you're interested, keep reading.\n\n#### Encryption Mode Configuration Options\n\nThis is a compile-time configuration option, so should you wish to set it,\ndo it in `config.exs` or one of its imported config files, *not* `runtime.exs`.\n\n```elixir\nconfig :nostrum, :voice_encryption_mode, :aes256_gcm # Default\n```\n\nAvailable configuration options are as follows:\n- `:xsalsa20_poly1305`\n- `:xsalsa20_poly1305_suffix`\n- `:xsalsa20_poly1305_lite`\n- `:xsalsa20_poly1305_lite_rtpsize` *(not yet documented by Discord)*\n- `:aead_xchacha20_poly1305_rtpsize` *(not yet documented by Discord)*\n- `:aead_aes256_gcm` *(not yet documented by Discord)*\n- `:aead_aes256_gcm_rtpsize` *(not yet documented by Discord)*\n- `:xchacha20_poly1305` (alias for `:aead_xchacha20_poly1305_rtpsize`)\n- `:aes256_gcm` (alias for `:aead_aes256_gcm_rtpsize`)\n\nThe first seven are Discord's available options, while the last two are shorter aliases.\n\nThe latter four of Discord's seven modes are not yet documented, but [will be soon](https://github.com/discord/discord-api-docs/pull/6801).\n\n#### Implementation Details\n\nOf the seven supported modes, three different ciphers are used. The remaining differences\nare variations in how the nonce is determined and where the encrypted portion of the RTP packet begins.\n\nErlang's `:crypto` module is leveraged as much as possible as the ciphers are NIFs.\n\n##### xsalsa20_poly1305\n\nThe entire Salsa20/XSalsa20 cipher is implemented in elixir. The poly1305 MAC function is handled by the `:crypto` module.\nAs a result, xsalsa_poly1305 modes will likely have the slowest performance.\n\n##### xchacha20_poly1305\n\nThe `:crypto` module supports the `chacha20_poly1305` AEAD cipher. The only thing implemented in elixir \nis the HChaCha20 hash function that generates a sub-key from the key and the longer nonce that XChaCha20 \nspecifies, which is then passed to the `chacha20_poly1305` cipher.\nIf your hardware doesn't have AES hardware acceleration, the `chacha` option may perform\nthe best for you.\n\n##### aes256_gcm\n\nThe `:crypto` module completely supports AES256 in GCM mode requiring no implementation in elixir. \nMany CPUs have hardware acceleration specifically for AES. For these reasons, Nostrum defaults to `aes256_gcm`.","ref":"voice-3.html#encryption-modes"},{"type":"extras","title":"Gateway Compression","doc":"# Gateway Compression\n\nNostrum supports either the `zlib-stream` or `zstd-stream` gateway compression\nmethods, as documented\n[here](https://discord.com/developers/docs/topics/gateway#encoding-and-compression)\n\nMost users are fine to leave the `gateway_compression` configuration option set\nto `:zlib` (default), but users looking for a potential reduction in payload\nsizes from the Discord gateway can optionally set `:zstd` here.","ref":"gateway_compression.html"},{"type":"extras","title":"Using `:zstd` compression - Gateway Compression","doc":"Using `:zstd` depends on the [`:ezstd`](https://hex.pm/packages/ezstd) library,\nso you will have to add this dependency to your `mix.exs` file:\n\n```elixir\n defp deps do\n [\n {:nostrum, ...},\n {:ezstd, \"~> 1.1\"} # new dependency\n ]\n end\n```\n\n\n> #### `:ezstd` NIFs {: .info}\n>\n> Some functionality of `:ezstd` depends on Erlang NIFs (Natively Implemented\n> Functions). This means that a proper compiler installation as well as other\n> build tools like `git` may be necessary at the stage where you compile your\n> dependencies.\n>\n> It may be useful to run `mix deps.compile` in any build systems to ensure that\n> your application does not need build utilities in the built application image.\n\nOnce you have this additional dependency installed in your project, set the\n`:nostrum`, `:gateway_compression` configuration option to `:zstd` and Nostrum\nshould pick up on it.\n\nYou will need to run `mix deps.get` and `mix deps.compile` to install and\ncompile the new `:ezstd` dependency.\n\n> #### Nostrum detection of `:ezstd` {: .tip}\n>\n> Since the check for `:ezstd` takes place when you compile Nostrum, you might\n> need to run `mix deps.compile --force nostrum` to ensure that Nostrum is\n> recompiled and recognises the newly installed `:ezstd` dependency.\n>\n> Not doing this may mean that your compiled Nostrum version is still using\n> dummy handlers that will error out even when `:ezstd` is installed.","ref":"gateway_compression.html#using-zstd-compression"},{"type":"extras","title":"Hot code upgrade","doc":"# Hot code upgrade\n\nFor the library users whose Discord bot can afford absolutely no downtime due to\nrestarts, nostrum ships with [`appup`\nfiles](https://www.erlang.org/doc/man/appup.html) via the\n[`castle`](https://github.com/ausimian/castle) library.\n\n\n>","ref":"hot_code_upgrade.html"},{"type":"extras","title":"Maintenance {: .info} - Hot code upgrade","doc":"> \n> The appups are maintained on a best-effort basis. While they are expected to\n> work and be present and documented as such, no guarantee can be made that they\n> will choose the most optimal path to upgrade and downgrade releases.\n> Contributions in this regard are welcome.","ref":"hot_code_upgrade.html#maintenance-info"},{"type":"extras","title":"Usage - Hot code upgrade","doc":"To make use of nostrum's hot code upgrade support, please follow the\ninstructions to install the [`castle`](https://github.com/ausimian/castle)\nlibrary in order to configure your release appropriately. Outside of shipping\nthe appup, nostrum does not provide further functionality to facilitate this.","ref":"hot_code_upgrade.html#usage"},{"type":"extras","title":"nostrum as included application - Hot code upgrade","doc":"When nostrum is run as an included application as documented in [the\nmulti-node support document](./multi_node.md), nostrum's default appup won't\nbe read on generation of the release upgrade file.\n\nPlease see the OTP documentation on [Changing Included\nApplications](https://www.erlang.org/doc/design_principles/appup_cookbook.html#changing-included-applications)\nfor information on how to deal with upgrades in this case.\n\n\n","ref":"hot_code_upgrade.html#nostrum-as-included-application"},{"type":"extras","title":"Manual Sharding","doc":"# Manual Sharding\n\nAdvanced users can use methods located in the `Nostrum.Shard.Supervisor` module\nto manually connect shards to the gateway as well as initiate manual disconnect\nand reconnects (attempting to `RESUME` sessions where possible).\n\nYou can set the `num_shards` option in your `nostrum` application config to\n`:manual` to prevent Nostrum from automatically starting shards. You should use\nthe methods in the shard supervisor such as `Nostrum.Shard.Supervisor.connect/2`\nto manually start shards if using this configuration option.","ref":"manual_sharding.html"},{"type":"extras","title":"Reconnection example - Manual Sharding","doc":"```elixir\n# On Node A\niex> Nostrum.Shard.Supervisor.connect(0, 1)\niex> resume_info = Nostrum.Shard.Supervisor.disconnect(0)\n%{shard_num: 0, ...}\n\n# On another node\niex> Nostrum.Shard.Supervisor.reconnect(resume_info)\n```\n\nDiscord will perform a best effort attempt to resume the gateway from the time\nof disconnection, relaying any missed events. Resumption is not guaranteed to\nwork, in the event it fails Nostrum will reconnect the shard from scratch,\nthough this may mean some events are missed.","ref":"manual_sharding.html#reconnection-example"},{"type":"extras","title":"Multi-node","doc":"# Multi-node\n\nAt the moment, you can run nostrum in highly available mode across multiple\nnodes via OTP's distributed application support, see below. Support for properly\ndistributing nostrum across multiple nodes and using them as one big entity is\nnot supported (yet).\n\nAs a general rule: if you are running distributed Erlang over the internet, make\nsure to secure it with [a solid VPN](https://www.wireguard.com) and / or by\n[using TLS for Erlang\ndistribution](https://www.erlang.org/doc/apps/ssl/ssl_distribution.html).","ref":"multi_node.html"},{"type":"extras","title":"High availability - Multi-node","doc":"Running using OTP's [distributed\napplications](https://www.erlang.org/doc/design_principles/distributed_applications.html)\nallows us to connect multiple nodes together and have your app and nostrum\nrescheduled on another node when things go south. Let's see how we can configure\nit. In this example, we will make use of three nodes, and all of them will be\nrun from your bot's directory. The only difference on their command line is the\n`--sname` / `--name` you specify. We'll use `--sname`s for testing here, for\nproper fault tolerance you will want to use multiple hosts with `--name`. Let's\nassume we name our nodes `joe`, `robert`, and `mike`.","ref":"multi_node.html#high-availability"},{"type":"extras","title":"Bundling nostrum with our app - Multi-node","doc":"We want to colocate nostrum with our app to allow it to move around as our\napplication is moved around. For this, utilize OTP's [included\napplications](https://www.erlang.org/doc/design_principles/included_applications.html)\nfeature to include nostrum into our supervision tree. You also need to\nexplicitly include nostrum's dependencies to ensure they are started, as the\nregular nostrum application startup won't handle it for you. This can be done by\nchanging your application definition in `mix.exs` as follows:\n\n```elixir\n def application do\n [\n mod: {MyBot.Application, []},\n included_applications: [:nostrum],\n # You can see this with `mix app.tree nostrum`\n extra_applications: [:certifi, :gun, :inets, :jason, :mime]\n # ...\n ]\n end\n```\n\nYou also need to set `runtime: false` for `:nostrum` itself in your\ndependencies, and any dependencies of your app that depend on `:nostrum`, such\nas command frameworks like `:nosedrum`:\n\n```elixir\n defp deps do\n [\n {:nostrum, \"~> 0.10\", runtime: false},\n # {:nosedrum, \"~> 0.6\", runtime: false},\n ]\n end\n```\n\nYou now need to add nostrum to your applications' children to start it as part\nof your app:\n\n```elixir\n def start(type, args) do\n children = [\n Nostrum.Application,\n # ...\n ]\n end\n```\n\nIf you want to run some logic ahead of starting nostrum, you can naturally also\nput it later into the list.\n\nYou can start your bot now, and it's going to run. If you look at your\nbot's application in `:observer`, you will see that nostrum has now become one\nwith your bot. We call that integration engineering.\n\nNow that our app bundles everything it needs with itself, this means starting\nour app will also starting nostrum, and stopping will also stop nostrum. We need\nthis for step two.","ref":"multi_node.html#bundling-nostrum-with-our-app"},{"type":"extras","title":"Setting up distribution - Multi-node","doc":"The avid reader will probably know that starting with the same `--cookie` and\n`--sname` / `--name` is only step one, the nodes need to connect to each other\nas well.\n\nTo be able to test this in interactive mode we will configure the settings in\nErlang configuration files, for releases you can use your regular\n`config/prod.exs`. We will set up the following:\n\n- Instruct OTP that our app, `:mybot` is a distributed app, and give it the\n hosts to run it on.\n\n- On startup, tell OTP it should wait for the other nodes to become available.\n\nWith the Erlang configuration files, this can be done as follows:\n\n```erl\n% mybot_joe.config\n[{kernel,\n [{distributed, [{mybot, 5000, [joe@HOSTNAME, {mike@HOSTNAME, robert@HOSTNAME}]}]},\n {sync_nodes_mandatory, [mike@HOSTNAME, robert@HOSTNAME]},\n {sync_nodes_timeout, 30000}]}].\n```\n```erl\n% mybot_robert.config\n[{kernel,\n [{distributed, [{mybot, 5000, [joe@HOSTNAME, {mike@HOSTNAME, robert@HOSTNAME}]}]},\n {sync_nodes_mandatory, [joe@HOSTNAME, mike@HOSTNAME]},\n {sync_nodes_timeout, 30000}]}].\n```\n```erl\n% mybot_mike.config\n[{kernel,\n [{distributed, [{mybot, 5000, [joe@HOSTNAME, {mike@HOSTNAME, robert@HOSTNAME}]}]},\n {sync_nodes_mandatory, [joe@HOSTNAME, robert@HOSTNAME]},\n {sync_nodes_timeout, 30000}]}].\n```\n\nNote the only thing that changes is the `sync_node_mandatory` setting, which\ninstructs OTP which hosts to wait for on startup. The other settings must match.\nThese options instructs OTP that our app `:mybot` is distributed and should be\nstarted at `:joe@HOSTNAME` first. If that fails, it moves to `:robert@HOSTNAME`\nor `:mike@HOSTNAME`.\n\nFor details on the options, please see the [kernel reference\nmanual](https://www.erlang.org/doc/man/kernel_app.html).","ref":"multi_node.html#setting-up-distribution"},{"type":"extras","title":"Playtest - Multi-node","doc":"In three distinct windows, run the following:\n\n1. `iex --sname joe --cookie foo --erl-config myapp_joe.config -S mix`\n2. `iex --sname robert --cookie foo --erl-config myapp_robert.config -S mix`\n3. `iex --sname mike --cookie foo --erl-config myapp_mike.config -S mix`\n\nIf you have some other application that breaks on startup now - like monitoring\nexporters that bind to specific ports, or similar things - this is when they\nwill blow up. Decide whether you want to run this on every node indeed or\ninclude it with your app as shown above.\n\nYou now have three instances of the VM running. `:joe@HOSTNAME` runs your bot\nright now. If you stop that node, one of the other two nodes will start running\nyour app. High availability complete.","ref":"multi_node.html#playtest"},{"type":"extras","title":"Being informed about takeover - Multi-node","doc":"Your application's `def start` function takes a `type` argument. In this case,\non the node that now runs your application, that `type` was `{:failover,\n:joe@HOSTNAME}`. If you start `:joe@HOSTNAME` back up, `:joe@HOSTNAME` is\nstarted with `{:takeover, source_node}`, where `source_node` is the node that it\ntook over from.","ref":"multi_node.html#being-informed-about-takeover"},{"type":"extras","title":"Manual takeover - Multi-node","doc":"If you want to move your app around manually, you can use\n`:application.takeover`, for example `:application.takeover(:mybot,\n:permanent)`.","ref":"multi_node.html#manual-takeover"},{"type":"extras","title":"Final thoughts - Multi-node","doc":"At present, nostrum can not perform any state synchronization between nodes, it\nis an effective restart from scratch. For most bots, this type of failover will\nbe sufficient.\n\n\n","ref":"multi_node.html#final-thoughts"},{"type":"extras","title":"Pluggable caching","doc":"# Pluggable caching\n\nThe default ETS-based caches supplied by nostrum should work for most of your\nneeds, but all of the caches can be exchanged for your own implementations. For\nthis, implement the behaviours exported by the cache modules under\n`Nostrum.Cache`.\n\n>","ref":"pluggable_caching.html"},{"type":"extras","title":"Exception {: .info} - Pluggable caching","doc":">\n> The exception to the above is the `Nostrum.Cache.MessageCache`, which does not\n> include an ETS-based implementation, and defaults to a NoOp cache. This is\n> an intentional design decision because caching messages consumes a\n> lot more memory than other objects, and is often not needed by most users.\n\nUse the `[:nostrum, :caches]` configuration for configuring which cache\nimplementation you want to use. This can only be set at dependency compilation\ntime. A common situation is that you don't want to cache presences in your bot,\nmost likely you don't care about user's status, so you can disable it altogether\nby using the `NoOp` presence cache:\n\n```elixir\nconfig :nostrum,\n caches: %{\n presences: Nostrum.Cache.PresenceCache.NoOp\n }\n```\n\nIn addition to regular caches that associate Discord snowflakes with the proper\n\"full\" object, nostrum also maintains junction table-like mappings that allow\nyou to find the matching object from one cache in another. One example for this\nis `Nostrum.Cache.ChannelGuildMapping`.\n\nNostrum also ships with Mnesia-based caches. **These are only compiled in when\nmnesia is available**: they may not be available on Nerves or when Mnesia was\nnot installed with OTP.","ref":"pluggable_caching.html#exception-info"},{"type":"extras","title":"Implementations - Pluggable caching","doc":"","ref":"pluggable_caching.html#implementations"},{"type":"extras","title":"ETS caching - Pluggable caching","doc":"Caching based on `:ets` is used by default. No configuration is required. Fast,\nlight on memory, but does not support any form of distribution or secondary\nindexing: queries such as fetching all guild members for a guild by its ID will\nperform a full table scan. For smaller bots, this is perfectly acceptable.","ref":"pluggable_caching.html#ets-caching"},{"type":"extras","title":"Mnesia caching - Pluggable caching","doc":"Mnesia-based caching is mainly suggested for larger bots that require\nfeatures such as cache distribution, fragmentation, secondary indexing and more.\n\nThe caches will attempt to create their tables automatically at startup:\ntherefore, Mnesia must be started ahead of nostrum. Caches expose a function\n`table/0` that can be called to retrieve the table name used by the cache and\nperform schema operations on it, such as adding replicas or fragmenting them.\n\n\n\nAccess to Mnesia is presently done in `sync_transaction` mode for best\nconsistency. If needed, a compile-time configuration option for the cache to\nswitch this can be added.\n\nMnesia-based caching assumes the user is familar with usage and\nmaintenance of Mnesia: the [Mnesia User's\nGuide](https://www.erlang.org/doc/apps/mnesia/mnesia_chap1.html) is a good\nstarting point.","ref":"pluggable_caching.html#mnesia-caching"},{"type":"extras","title":"NoOp caching - Pluggable caching","doc":"The NoOp cache adapters are supplied for the case where you do not want to cache\nspecific data from Discord at all.","ref":"pluggable_caching.html#noop-caching"},{"type":"extras","title":"Cache invalidation - Pluggable caching","doc":"Nostrum does not invalidate most caches in any special way: it will maintain it in\nresponse to gateway events (for instance by deleting a guild and its members\nupon leaving it), but won't regularly prune caches or associate expiration times\nwith entries. For volatile (RAM-based) caches this is perfectly fine, however,\nwhen implementing your own cache backend that persists to disk in some way, you\nneed to take care of this yourself.\n\nThe exception to this is the `Nostrum.Cache.MessageCache.Mnesia` module, which has a\ndefault size limit of 10,000 and will automatically remove the 100 oldest\nmessages when this limit is reached as well as delete all cached messages for a\nchannel when the channel is deleted.","ref":"pluggable_caching.html#cache-invalidation"},{"type":"extras","title":"Cache performance - Pluggable caching","doc":"nostrum strives to provide the most performant caches on the Discord bot caching\nmarket. If you run into performance issues with caches that you feel are not\nadequately documented as such, please feel free to open an issue.\n\nBenchmarks for caches can be found in the [`benchmarks/`\ndirectory](https://github.com/Kraigie/nostrum/tree/master/benchmarks) of the\nsource code tree. If you want to get a feeling for how the caches perform or\nimplement optimizations, check them out.","ref":"pluggable_caching.html#cache-performance"},{"type":"extras","title":"API Usage","doc":"# API Usage\n\nThis cheat sheet covers basic use of the Discord API through the `Nostrum.Api` module.","ref":"api-1.html"},{"type":"extras","title":"Messages - API Usage","doc":"{: .col-2}","ref":"api-1.html#messages"},{"type":"extras","title":"Sending a message - API Usage","doc":"```elixir\nutc_now = DateTime.utc_now\natom_count = :erlang.system_info(:atom_count)\n\ncontent = \"\"\"\nUTC time is: #{DateTime.to_iso8601(utc_now)}\nAtom table size is: #{atom_count}\n\"\"\"\n\nNostrum.Api.create_message(msg.channel_id, content)\n```","ref":"api-1.html#sending-a-message"},{"type":"extras","title":"Sending a message with an embed - API Usage","doc":"```elixir\nimport Nostrum.Struct.Embed\n\nembed =\n %Nostrum.Struct.Embed{}\n |> put_title(\"Craig's Cats\")\n |> put_description(\"nostrum\")\n |> put_url(\"https://google.com/\")\n |> put_timestamp(\"2016-05-05T21:04:13.203Z\")\n |> put_color(431_948)\n |> put_field(\"Field 1\", \"Test\")\n # set inline attribute to true\n |> put_field(\"Field 2\", \"More test\", true)\n\nNostrum.Api.create_message(msg.channel_id, embeds: [embed])\n```\n\nYou can look at the documentation in `m:Nostrum.Struct.Embed#module-using-structs` for more advanced usage.","ref":"api-1.html#sending-a-message-with-an-embed"},{"type":"extras","title":"Upload an attachment - API Usage","doc":"```elixir\nNostrum.Api.create_message(\n msg.channel_id,\n files: [\n # file from filesystem\n \"/path/to/file.txt\",\n # file from memory\n %{body: \"test file\", name: \"example.txt\"}\n ]\n)\n```","ref":"api-1.html#upload-an-attachment"},{"type":"extras","title":"Reply to a message - API Usage","doc":"With a mention:\n\n```elixir\nNostrum.Api.create_message(\n msg.channel_id,\n content: \"Hello!\",\n message_reference: %{message_id: msg.id}\n)\n```\n\nWithout a mention:\n\n```elixir\nNostrum.Api.create_message(\n msg.channel_id,\n content: \"Hello!\",\n message_reference: %{message_id: msg.id},\n allowed_mentions: :none\n)\n```","ref":"api-1.html#reply-to-a-message"},{"type":"extras","title":"Send a poll - API Usage","doc":"```elixir\npoll = Poll.create_poll(\n \"Do you enjoy pineapple on pizza?\",\n duration: 2,\n allow_multiselect: false\n)\n|> Poll.put_answer(\"Yes!\", default_emoji: \"\\u2705\")\n|> Poll.put_answer(\"No!\", default_emoji: \"\\u274C\")\n\nApi.create_message(channel_id, poll: poll)\n```","ref":"api-1.html#send-a-poll"},{"type":"extras","title":"React to a message - API Usage","doc":"Using a default emoji (unicode representation):\n```elixir\nNostrum.Api.create_reaction(\n msg.channel_id,\n msg.id,\n \"👾\"\n)\n```\n\nUsing a custom Discord emoji:\n```elixir\nemoji = %Nostrum.Struct.Emoji{\n name: \"emojiname\",\n id: 1228698654022434866\n}\n\nNostrum.Api.create_reaction(msg.channel_id, msg.id, emoji)\n```","ref":"api-1.html#react-to-a-message"},{"type":"extras","title":"Miscellaneous - API Usage","doc":"{: .col-2}","ref":"api-1.html#miscellaneous"},{"type":"extras","title":"Update the bot status - API Usage","doc":"```elixir\nNostrum.Api.update_status(\n :dnd,\n \"craigs cats\",\n 3 # Watching status\n)\n```\nYou can also update a single shard with `Nostrum.Api.update_shard_status/5`.","ref":"api-1.html#update-the-bot-status"},{"type":"extras","title":"Create a guild emoji - API Usage","doc":"```elixir\nimage = \"data:image/png;base64,...\"\n\nNostrum.Api.create_guild_emoji(\n msg.guild_id,\n name: \"nostrum\",\n image: image\n)\n```","ref":"api-1.html#create-a-guild-emoji"},{"type":"extras","title":"QLC Usage","doc":"# QLC Usage\n\nThis cheat sheet covers some example queries using Query-List Comprehensions in Erlang, as well as some debugging tips.\n\nQLC modules must include this library include as part of their prelude:\n\n```erl\n-include_lib(\"stdlib/include/qlc.hrl\").\n```\n\nAs per the Erlang docs for QLC:\n\n> This causes a parse transform to substitute a fun for the QLC. The (compiled) fun is called when the query handle is evaluated.","ref":"qlc.html"},{"type":"extras","title":"Examples - QLC Usage","doc":"","ref":"qlc.html#examples"},{"type":"extras","title":"Fetch role members - QLC Usage","doc":"```erl\nfind_role_users(RequestedGuildId, RoleId, MemberCache) ->\n qlc:q([Member || {{GuildId, MemberId}, Member} <- MemberCache:query_handle(),\n % Filter to member objects of the selected guild\n GuildId =:= RequestedGuildId,\n % Filter to members of the provided role\n lists:member(RoleId, map_get(roles, Member))]).\n```","ref":"qlc.html#fetch-role-members"},{"type":"extras","title":"Fetch guilds over a certain size - QLC Usage","doc":"```erl\nfind_large_communities(Threshold, GuildCache) ->\n qlc:q([Guild || {_, Guild} <- GuildCache:query_handle(),\n % Filter for guilds that are over the provided size\n map_get(member_count, Guild) > Threshold]).\n```","ref":"qlc.html#fetch-guilds-over-a-certain-size"},{"type":"extras","title":"Find all online users in a guild - QLC Usage","doc":"```erl\nfind_online_users(RequestedGuildId, PresenceCache, UserCache) ->\n qlc:q([User || {{GuildId, PresenceUserId}, Presence} <- PresenceCache:query_handle(),\n % Filter to members in the requested guild ID\n GuildId =:= RequestedGuildId,\n % Fetch any members where the status is not offline\n map_get(status, Presence) /= offline,\n % Join the found users on the UserCache\n {UserId, User} <- UserCache:query_handle(),\n % Return the users that match the found presences\n UserId =:= PresenceUserId]).\n```\n\nThis depends on the guild presences intent being enabled and the bot storing received presences in the presence cache.","ref":"qlc.html#find-all-online-users-in-a-guild"},{"type":"extras","title":"Getting the largest N guilds - QLC Usage","doc":"```erl\ntop_guilds(N, GuildCache) ->\n Q = qlc:q([{MemberCount, Guild} || {_Id, #{member_count := MemberCount} = Guild} <- GuildCache:query_handle()]),\n Q2 = qlc:keysort(1, Q, [{order, descending}]),\n GuildCache:wrap_qlc(fun () ->\n C = qlc:cursor(Q2),\n R = qlc:next_answers(C, N),\n ok = qlc:delete_cursor(C),\n R\n end).\n```","ref":"qlc.html#getting-the-largest-n-guilds"},{"type":"extras","title":"Debugging QLC - QLC Usage","doc":"{: .col-2 }","ref":"qlc.html#debugging-qlc"},{"type":"extras","title":"View query info - QLC Usage","doc":"You can use `:qlc.info/1` to evaluate how Erlang will parse a query. You can read the Erlang docs for an explanation of the value returned by this call\n\n```elixir\n:qlc.info(\n :my_queries.find_users(..., Nostrum.Cache.UserCache)\n)\n```","ref":"qlc.html#view-query-info"},{"type":"extras","title":"Sampling a query - QLC Usage","doc":"You can return only X records that match a query using `:qlc.next_answers/2`, passing in the query as the first argument and the number of answers to return as the second argument.\n\n```elixir\n:qlc.next_answers(\n :my_queries.find_users(..., Nostrum.Cache.UserCache),\n 5\n)\n```","ref":"qlc.html#sampling-a-query"},{"type":"extras","title":"Voice Usage","doc":"# Voice Usage\n\nThis cheat sheet covers basic use of the Discord Voice API through the `Nostrum.Voice` module.","ref":"voice-2.html"},{"type":"extras","title":"Playing Audio - Voice Usage","doc":"{: .col-2}","ref":"voice-2.html#playing-audio"},{"type":"extras","title":"Playing immediately with a `try_play` function - Voice Usage","doc":"```elixir\ndef try_play(guild_id, url, type, opts \\\\ []) do\n case Voice.play(guild_id, url, type, opts) do\n {:error, _msg} ->\n # Wait for handshaking to complete\n Process.sleep(100)\n try_play(guild_id, url, type, opts)\n\n _ ->\n :ok\n end\nend\n```\n\n```elixir\niex> Voice.join_channel(guild_id, channel_id)\niex> try_play(guild_id, \"./song.mp3\", :url)\n```","ref":"voice-2.html#playing-immediately-with-a-try_play-function"},{"type":"extras","title":"Playing immediately using `Nostrum.Voice.ready?/1` - Voice Usage","doc":"```elixir\ndef play_when_ready(guild_id, url, type, opts \\\\ []) do\n if Voice.ready?(guild_id) do\n Voice.play(guild_id, url, type, opts)\n else\n # Wait for handshaking to complete\n Process.sleep(25)\n play_when_ready(guild_id, url, type, opts)\n end\nend\n```\n\n```elixir\niex> Voice.join_channel(guild_id, channel_id)\niex> play_when_ready(guild_id, \"https://youtu.be/b4RJ-QGOtw4\", :ytdl)\n```","ref":"voice-2.html#playing-immediately-using-nostrum-voice-ready-1"},{"type":"extras","title":"Playing immediately by using events - Voice Usage","doc":"```elixir\nalias Nostrum.Struct.Event.VoiceReady\nalias Nostrum.Voice\n\ndef handle_event({:VOICE_READY, %VoiceReady{guild_id: guild_id} = _event, _v_ws_state}) do\n Voice.play(guild_id, \"~/loud_noise.mp3\", :url, volume: 10)\nend\n```\n\nOnce the voice handshake has completed, audio will begin playing\nwithout the need for polling functions like `try_play/4` or `play_when_ready/4`\nas shown in the other examples\n\n```elixir\niex> Voice.join_channel(guild_id, channel_id)\n# Playback will start automatically when ready\n```","ref":"voice-2.html#playing-immediately-by-using-events"},{"type":"extras","title":"Audio FFmpeg options - Voice Usage","doc":"{: .col-2}","ref":"voice-2.html#audio-ffmpeg-options"},{"type":"extras","title":"Volume - Voice Usage","doc":"#### Half volume\n\n```elixir\nVoice.play(guild_id, \"~/final_mix.wav\", :url, \n volume: 0.5\n)\n```\n\n#### Extreme clipping\n\n```elixir\nVoice.play(guild_id, \"~/boost_this.m4a\", :url, \n volume: 100\n)\n```\n\n#### Normal volume with inverted phase\n\n```elixir\nVoice.play(guild_id, \"~/music.mp3\", :url, \n volume: -1.0\n)\n```","ref":"voice-2.html#volume"},{"type":"extras","title":"Start position and duration - Voice Usage","doc":"Start at 37.8 seconds\n\n```elixir\nVoice.play(guild_id, \"https://youtu.be/b4RJ-QGOtw4\", :ytdl, \n start_pos: \"0:37.8\"\n)\n```\n\nPlay the first at 15.3 seconds from the beginning\n\n```elixir\nVoice.play(guild_id, \"https://youtu.be/b4RJ-QGOtw4\", :ytdl, \n duration: \"15.3\"\n)\n```\n\nPlay for 80 seconds (equivalently 1:20) starting from 90 seconds (equivalently 1:30) in\n\n```elixir\nVoice.play(guild_id, \"~/music.mp3\", :url, \n start_pos: \"90\", \n duration: \"80\"\n)\n```","ref":"voice-2.html#start-position-and-duration"},{"type":"extras","title":"Advanced audio filtering - Voice Usage","doc":"#### Cutoff filters\n\nLow-pass filter at 1200 Hz, high-pass filter at 300 Hz\n\n```elixir\nVoice.play(guild_id, \"https://youtu.be/0ngcL_5ekXo\", :ytdl,\n filter: \"lowpass=f=1200\",\n filter: \"highpass=f=300\"\n)\n```\n\n#### Sample rate\n\nPlay at half tempo and pitch (assumes a 48kHz sample rate)\n\n```elixir\nVoice.play(guild_id, \"https://youtu.be/0ngcL_5ekXo\", :ytdl,\n filter: \"asetrate=48000*0.5\"\n)\n```\n\nPlay at 30% higher tempo and pitch. Realtime must be set to `false` for ffmpeg to keep up with faster-than-normal playback.\n\n```elixir\nVoice.play(guild_id, \"https://youtu.be/0ngcL_5ekXo\", :ytdl,\n realtime: false,\n filter: \"asetrate=48000*1.3\"\n)\n```\n\n#### Heavily distorted and effected lo-fi FX chain\n\n```elixir\nVoice.play(guild_id, \"https://youtu.be/Hd_giv-wcJU\", :ytdl,\n volume: 3,\n start_pos: \"0:55\",\n filter: \"asetrate=48000*0.73\",\n filter: \"vibrato=d=0.05:f=698.46\",\n filter: \"vibrato=f=1:d=0.8\",\n filter: \"lowpass=f=1200\",\n filter: \"aphaser=in_gain=0.4:out_gain=0.5:delay=3.0:decay=0.3:speed=0.3:type=t\"\n)\n```","ref":"voice-2.html#advanced-audio-filtering"}],"content_type":"text/markdown","producer":{"name":"ex_doc","version":[48,46,51,50,46,49]}} \ No newline at end of file diff --git a/dist/search_data-66B3A380.js b/dist/search_data-66B3A380.js new file mode 100644 index 000000000..32729c290 --- /dev/null +++ b/dist/search_data-66B3A380.js @@ -0,0 +1 @@ +searchData={"items":[{"type":"task","doc":"Task that pushes docs to gh-pages branch on Discord.","title":"mix gh.docs","ref":"Mix.Tasks.Gh.Docs.html"},{"type":"function","doc":"","title":"Mix.Tasks.Gh.Docs.run/1","ref":"Mix.Tasks.Gh.Docs.html#run/1"},{"type":"module","doc":"Interface for Discord's rest API.\n\nBy default all methods in this module are ran synchronously. If you wish to\nhave async rest operations I recommend you execute these functions inside of a\ntask.\n\n**Examples**\n```elixir\n# Async Task\nt = Task.async fn ->\n Nostrum.Api.get_channel_messages(12345678912345, :infinity, {})\nend\nmessages = Task.await t\n\n# A lot of times we don't care about the return value of the function\nTask.start fn ->\n messages = [\"in\", \"the\", \"end\", \"it\", \"doesn't\", \"even\", \"matter\"]\n Enum.each messages, &Nostrum.Api.create_message!(12345678912345, &1)\nend\n```\n\n#### A note about Strings and Ints\nCurrently, responses from the REST api will have `id` fields as `string`.\nEverything received from the WS connection will have `id` fields as `int`.\n\nIf you're processing a response from the API and trying to access something in the cache\nbased off of an `id` in the response, you will need to convert it to an `int` using\n`String.to_integer/1`. I'm open to suggestions for how this should be handled going forward.\n\n**Example**\n```elixir\nmessages = Nostrum.Api.get_pinned_messages!(12345678912345)\n\nauthors =\n Enum.map messages, fn msg ->\n author_id = String.to_integer(msg.author.id)\n Nostrum.Cache.User.get!(id: author_id)\n end\n```","title":"Nostrum.Api","ref":"Nostrum.Api.html"},{"type":"function","doc":"Puts a user in a guild.\n\nThis endpoint fires the `t:Nostrum.Consumer.guild_member_add/0` event.\nIt requires the `CREATE_INSTANT_INVITE` permission. Additionally, it\nsituationally requires the `MANAGE_NICKNAMES`, `MANAGE_ROLES`,\n`MUTE_MEMBERS`, and `DEAFEN_MEMBERS` permissions.\n\nIf successful, returns `{:ok, member}` or `{:ok}` if the user was already a member of the\nguild. Otherwise, returns a `t:Nostrum.Api.error/0`.","title":"Nostrum.Api.add_guild_member/3","ref":"Nostrum.Api.html#add_guild_member/3"},{"type":"function","doc":"* `:access_token` (string) - the user's oauth2 access token\n * `:nick` (string) - value to set users nickname to\n * `:roles` (list of `t:Nostrum.Struct.Guild.Role.id/0`) - array of role ids the member is assigned\n * `:mute` (boolean) - if the user is muted\n * `:deaf` (boolean) - if the user is deafened\n\n`:access_token` is always required.","title":"Options - Nostrum.Api.add_guild_member/3","ref":"Nostrum.Api.html#add_guild_member/3-options"},{"type":"function","doc":"```elixir\nNostrum.Api.add_guild_member(\n 41771983423143937,\n 18374719829378473,\n access_token: \"6qrZcUqja7812RVdnEKjpzOL4CvHBFG\",\n nick: \"nostrum\",\n roles: [431849301, 913809431]\n)\n```","title":"Examples - Nostrum.Api.add_guild_member/3","ref":"Nostrum.Api.html#add_guild_member/3-examples"},{"type":"function","doc":"Same as `add_guild_member/3`, but raises `Nostrum.Error.ApiError` in case of failure.","title":"Nostrum.Api.add_guild_member!/3","ref":"Nostrum.Api.html#add_guild_member!/3"},{"type":"function","doc":"Adds a role to a member.\n\nRole to add is specified by `role_id`.\nUser to add role to is specified by `guild_id` and `user_id`.\nAn optional `reason` can be given for the audit log.","title":"Nostrum.Api.add_guild_member_role/4","ref":"Nostrum.Api.html#add_guild_member_role/4"},{"type":"function","doc":"Pins a message in a channel.\n\nThis endpoint requires the 'VIEW_CHANNEL', 'READ_MESSAGE_HISTORY', and\n'MANAGE_MESSAGES' permissions. It fires the\n`t:Nostrum.Consumer.message_update/0` and\n`t:Nostrum.Consumer.channel_pins_update/0` events.\n\nIf successful, returns `{:ok}`. Otherwise, returns a `t:Nostrum.Api.error/0`.","title":"Nostrum.Api.add_pinned_channel_message/2","ref":"Nostrum.Api.html#add_pinned_channel_message/2"},{"type":"function","doc":"```elixir\nNostrum.Api.add_pinned_channel_message(43189401384091, 18743893102394)\n```","title":"Examples - Nostrum.Api.add_pinned_channel_message/2","ref":"Nostrum.Api.html#add_pinned_channel_message/2-examples"},{"type":"function","doc":"Same as `add_pinned_channel_message/2`, but raises `Nostrum.Error.ApiError` in case of failure.","title":"Nostrum.Api.add_pinned_channel_message!/2","ref":"Nostrum.Api.html#add_pinned_channel_message!/2"},{"type":"function","doc":"Add a user to a thread, requires the ability to send messages in the thread.","title":"Nostrum.Api.add_thread_member/2","ref":"Nostrum.Api.html#add_thread_member/2"},{"type":"function","doc":"Edits command permissions for a specific command for your application in a guild. You can only add up to 10 permission overwrites for a command.","title":"Nostrum.Api.batch_edit_application_command_permissions/3","ref":"Nostrum.Api.html#batch_edit_application_command_permissions/3"},{"type":"function","doc":"- `application_id`: Application ID commands are registered under.\n If not given, this will be fetched from `Me`.\n- `guild_id`: Guild ID to fetch command permissions from.\n- `command_id`: Command ID to fetch permissions for.\n- `permissions`: List of partial [guild application command permissions](hhttps://discord.com/developers/docs/interactions/application-commands#application-command-permissions-object-guild-application-command-permissions-structure) with `id` and `permissions`. You can add up to 10 overwrites per command.","title":"Parameters - Nostrum.Api.batch_edit_application_command_permissions/3","ref":"Nostrum.Api.html#batch_edit_application_command_permissions/3-parameters"},{"type":"function","doc":"This method returns a guild application command permission object, see all available values on the [Discord API docs](https://discord.com/developers/docs/interactions/application-commands#application-command-permissions-object-guild-application-command-permissions-structure).","title":"Return value - Nostrum.Api.batch_edit_application_command_permissions/3","ref":"Nostrum.Api.html#batch_edit_application_command_permissions/3-return-value"},{"type":"function","doc":"Begins a guild prune to prune members within `days`.\n\nAn optional `reason` can be provided for the guild audit log.\n\nThis endpoint requires the `KICK_MEMBERS` permission. It fires multiple\n`t:Nostrum.Consumer.guild_member_remove/0` events.\n\nIf successful, returns `{:ok, %{pruned: pruned}}`. Otherwise, returns a `t:Nostrum.Api.error/0`.","title":"Nostrum.Api.begin_guild_prune/3","ref":"Nostrum.Api.html#begin_guild_prune/3"},{"type":"function","doc":"```elixir\nNostrum.Api.begin_guild_prune(81384788765712384, 1)\n{:ok, %{pruned: 0}}\n```","title":"Examples - Nostrum.Api.begin_guild_prune/3","ref":"Nostrum.Api.html#begin_guild_prune/3-examples"},{"type":"function","doc":"Same as `begin_guild_prune/2`, but raises `Nostrum.Error.ApiError` in case of failure.","title":"Nostrum.Api.begin_guild_prune!/3","ref":"Nostrum.Api.html#begin_guild_prune!/3"},{"type":"function","doc":"Deletes multiple messages from a channel.\n\n`messages` is a list of `Nostrum.Struct.Message.id` that you wish to delete.\nWhen given more than 100 messages, this function will chunk the given message\nlist into blocks of 100 and send them off to the API. It will stop deleting\non the first error that occurs. Keep in mind that deleting thousands of\nmessages will take a pretty long time and it may be proper to just delete\nthe channel you want to bulk delete in and recreate it.\n\nThis method can only delete messages sent within the last two weeks.\n`Filter` is an optional parameter that specifies whether messages sent over\ntwo weeks ago should be filtered out; defaults to `true`.","title":"Nostrum.Api.bulk_delete_messages/3","ref":"Nostrum.Api.html#bulk_delete_messages/3"},{"type":"function","doc":"Same as `bulk_delete_messages/2`, but raises `Nostrum.Error.ApiError` in case of failure.","title":"Nostrum.Api.bulk_delete_messages!/3","ref":"Nostrum.Api.html#bulk_delete_messages!/3"},{"type":"function","doc":"Overwrite the existing global application commands.\n\nThis action will:\n- Create any command that was provided and did not already exist\n- Update any command that was provided and already existed if its configuration changed\n- Delete any command that was not provided but existed on Discord's end\n\nUpdates will be available in all guilds after 1 hour.\nCommands that do not already exist will count toward daily application command create limits.","title":"Nostrum.Api.bulk_overwrite_global_application_commands/2","ref":"Nostrum.Api.html#bulk_overwrite_global_application_commands/2"},{"type":"function","doc":"- `application_id`: Application ID for which to overwrite the commands.\n If not given, this will be fetched from `Me`.\n- `commands`: List of command configurations, see the linked API documentation for reference.","title":"Parameters - Nostrum.Api.bulk_overwrite_global_application_commands/2","ref":"Nostrum.Api.html#bulk_overwrite_global_application_commands/2-parameters"},{"type":"function","doc":"Updated list of global application commands. See the official reference:\nhttps://discord.com/developers/docs/interactions/application-commands#bulk-overwrite-global-application-commands","title":"Return value - Nostrum.Api.bulk_overwrite_global_application_commands/2","ref":"Nostrum.Api.html#bulk_overwrite_global_application_commands/2-return-value"},{"type":"function","doc":"Overwrite the existing guild application commands on the specified guild.\n\nThis action will:\n- Create any command that was provided and did not already exist\n- Update any command that was provided and already existed if its configuration changed\n- Delete any command that was not provided but existed on Discord's end","title":"Nostrum.Api.bulk_overwrite_guild_application_commands/3","ref":"Nostrum.Api.html#bulk_overwrite_guild_application_commands/3"},{"type":"function","doc":"- `application_id`: Application ID for which to overwrite the commands.\n If not given, this will be fetched from `Me`.\n- `guild_id`: Guild on which to overwrite the commands.\n- `commands`: List of command configurations, see the linked API documentation for reference.","title":"Parameters - Nostrum.Api.bulk_overwrite_guild_application_commands/3","ref":"Nostrum.Api.html#bulk_overwrite_guild_application_commands/3-parameters"},{"type":"function","doc":"Updated list of guild application commands. See the official reference:\nhttps://discord.com/developers/docs/interactions/application-commands#bulk-overwrite-guild-application-commands","title":"Return value - Nostrum.Api.bulk_overwrite_guild_application_commands/3","ref":"Nostrum.Api.html#bulk_overwrite_guild_application_commands/3-return-value"},{"type":"function","doc":"Creates an invite for a guild channel.\n\nAn optional `reason` can be provided for the audit log.\n\nThis endpoint requires the `CREATE_INSTANT_INVITE` permission.\n\nIf successful, returns `{:ok, invite}`. Otherwise, returns a `t:Nostrum.Api.error/0`.","title":"Nostrum.Api.create_channel_invite/3","ref":"Nostrum.Api.html#create_channel_invite/3"},{"type":"function","doc":"* `:max_age` (integer) - duration of invite in seconds before expiry, or 0 for never.\n (default: `86400`)\n * `:max_uses` (integer) - max number of uses or 0 for unlimited.\n (default: `0`)\n * `:temporary` (boolean) - Whether the invite should grant temporary\n membership. (default: `false`)\n * `:unique` (boolean) - used when creating unique one time use invites.\n (default: `false`)","title":"Options - Nostrum.Api.create_channel_invite/3","ref":"Nostrum.Api.html#create_channel_invite/3-options"},{"type":"function","doc":"```elixir\nNostrum.Api.create_channel_invite(41771983423143933)\n{:ok, Nostrum.Struct.Invite{}}\n\nNostrum.Api.create_channel_invite(41771983423143933, max_uses: 20)\n{:ok, %Nostrum.Struct.Invite{}}\n```","title":"Examples - Nostrum.Api.create_channel_invite/3","ref":"Nostrum.Api.html#create_channel_invite/3-examples"},{"type":"function","doc":"Same as `create_channel_invite/2`, but raises `Nostrum.Error.ApiError` in case of failure.","title":"Nostrum.Api.create_channel_invite!/3","ref":"Nostrum.Api.html#create_channel_invite!/3"},{"type":"function","doc":"Create a new DM channel with a user.\n\nIf successful, returns `{:ok, dm_channel}`. Otherwise, returns a `t:Nostrum.Api.error/0`.","title":"Nostrum.Api.create_dm/1","ref":"Nostrum.Api.html#create_dm/1"},{"type":"function","doc":"```elixir\nNostrum.Api.create_dm(150061853001777154)\n{:ok, %Nostrum.Struct.Channel{type: 1}}\n```","title":"Examples - Nostrum.Api.create_dm/1","ref":"Nostrum.Api.html#create_dm/1-examples"},{"type":"function","doc":"Same as `create_dm/1`, but raises `Nostrum.Error.ApiError` in case of failure.","title":"Nostrum.Api.create_dm!/1","ref":"Nostrum.Api.html#create_dm!/1"},{"type":"function","doc":"Create a followup message for an interaction.\n\nDelegates to ``execute_webhook/3``, see the function for more details.","title":"Nostrum.Api.create_followup_message/3","ref":"Nostrum.Api.html#create_followup_message/3"},{"type":"function","doc":"Same as `create_followup_message/3`, but raises `Nostrum.Error.ApiError` in case of failure.","title":"Nostrum.Api.create_followup_message!/3","ref":"Nostrum.Api.html#create_followup_message!/3"},{"type":"function","doc":"Create a new global application command.\n\nThe new command will be available on all guilds in around an hour.\nIf you want to test commands, use `create_guild_application_command/2` instead,\nas commands will become available instantly there.\nIf an existing command with the same name exists, it will be overwritten.","title":"Nostrum.Api.create_global_application_command/2","ref":"Nostrum.Api.html#create_global_application_command/2"},{"type":"function","doc":"- `application_id`: Application ID for which to create the command.\n If not given, this will be fetched from `Me`.\n- `command`: Command configuration, see the linked API documentation for reference.","title":"Parameters - Nostrum.Api.create_global_application_command/2","ref":"Nostrum.Api.html#create_global_application_command/2-parameters"},{"type":"function","doc":"The created command. See the official reference:\nhttps://discord.com/developers/docs/interactions/application-commands#create-global-application-command","title":"Return value - Nostrum.Api.create_global_application_command/2","ref":"Nostrum.Api.html#create_global_application_command/2-return-value"},{"type":"function","doc":"```elixir\nNostrum.Api.create_global_application_command(\n %{name: \"edit\", description: \"ed, man! man, ed\", options: []}\n)\n```","title":"Example - Nostrum.Api.create_global_application_command/2","ref":"Nostrum.Api.html#create_global_application_command/2-example"},{"type":"function","doc":"Creates a new group DM channel.\n\nIf successful, returns `{:ok, group_dm_channel}`. Otherwise, returns a `t:Nostrum.Api.error/0`.\n\n`access_tokens` are user oauth2 tokens. `nicks` is a map that maps a user id\nto a nickname.","title":"Nostrum.Api.create_group_dm/2","ref":"Nostrum.Api.html#create_group_dm/2"},{"type":"function","doc":"```elixir\nNostrum.Api.create_group_dm([\"6qrZcUqja7812RVdnEKjpzOL4CvHBFG\"], %{41771983423143937 => \"My Nickname\"})\n{:ok, %Nostrum.Struct.Channel{type: 3}}\n```","title":"Examples - Nostrum.Api.create_group_dm/2","ref":"Nostrum.Api.html#create_group_dm/2-examples"},{"type":"function","doc":"Same as `create_group_dm/2`, but raises `Nostrum.Error.ApiError` in case of failure.","title":"Nostrum.Api.create_group_dm!/2","ref":"Nostrum.Api.html#create_group_dm!/2"},{"type":"function","doc":"Create a guild application command on the specified guild.\n\nThe new command will be available immediately.","title":"Nostrum.Api.create_guild_application_command/3","ref":"Nostrum.Api.html#create_guild_application_command/3"},{"type":"function","doc":"- `application_id`: Application ID for which to create the command.\n If not given, this will be fetched from `Me`.\n- `guild_id`: Guild on which to create the command.\n- `command`: Command configuration, see the linked API documentation for reference.","title":"Parameters - Nostrum.Api.create_guild_application_command/3","ref":"Nostrum.Api.html#create_guild_application_command/3-parameters"},{"type":"function","doc":"The created command. See the official reference:\nhttps://discord.com/developers/docs/interactions/application-commands#create-guild-application-command","title":"Return value - Nostrum.Api.create_guild_application_command/3","ref":"Nostrum.Api.html#create_guild_application_command/3-return-value"},{"type":"function","doc":"Create a new auto-moderation rule for a guild.","title":"Nostrum.Api.create_guild_auto_moderation_rule/2","ref":"Nostrum.Api.html#create_guild_auto_moderation_rule/2"},{"type":"function","doc":"* `:name` (`t:String.t/0`) - The name of the rule.\n * `:event_type` (`t:AutoModerationRule.event_type/0`) - The type of event that triggers the rule.\n * `:trigger_type` (`t:AutoModerationRule.trigger_type/0`) - The type of content that triggers the rule.\n * `:trigger_metadata` (`t:AutoModerationRule.trigger_metadata/0`) - The metadata associated with the rule trigger.\n - optional, based on the `:trigger_type`.\n * `:actions` (`t:AutoModerationRule.actions/0`) - The actions to take when the rule is triggered.\n * `:enabled` (`t:AutoModerationRule.enabled/0`) - Whether the rule is enabled or not.\n - optional, defaults to `false`.\n * `:exempt_roles` - (`t:AutoModerationRule.exempt_roles/0`) - A list of role id's that are exempt from the rule.\n - optional, defaults to `[]`, maximum of 20.\n * `:exempt_channels` - (`t:AutoModerationRule.exempt_channels/0`) - A list of channel id's that are exempt from the rule.\n - optional, defaults to `[]`, maximum of 50.","title":"Options - Nostrum.Api.create_guild_auto_moderation_rule/2","ref":"Nostrum.Api.html#create_guild_auto_moderation_rule/2-options"},{"type":"function","doc":"Bans a user from a guild.\n\nUser to delete is specified by `guild_id` and `user_id`.\nAn optional `reason` can be specified for the audit log.","title":"Nostrum.Api.create_guild_ban/4","ref":"Nostrum.Api.html#create_guild_ban/4"},{"type":"function","doc":"Creates a channel for a guild.\n\nThis endpoint requires the `MANAGE_CHANNELS` permission. It fires a\n`t:Nostrum.Consumer.channel_create/0` event.\n\nIf successful, returns `{:ok, channel}`. Otherwise, returns a `t:Nostrum.Api.error/0`.","title":"Nostrum.Api.create_guild_channel/2","ref":"Nostrum.Api.html#create_guild_channel/2"},{"type":"function","doc":"* `:name` (string) - channel name (2-100 characters)\n * `:type` (integer) - the type of channel (See `Nostrum.Struct.Channel`)\n * `:topic` (string) - channel topic (0-1024 characters)\n * `:bitrate` (integer) - the bitrate (in bits) of the voice channel (voice only)\n * `:user_limit` (integer) - the user limit of the voice channel (voice only)\n * `:permission_overwrites` (list of `t:Nostrum.Struct.Overwrite.t/0` or equivalent map) -\n the channel's permission overwrites\n * `:parent_id` (`t:Nostrum.Struct.Channel.id/0`) - id of the parent category for a channel\n * `:nsfw` (boolean) - if the channel is nsfw\n\n`:name` is always required.","title":"Options - Nostrum.Api.create_guild_channel/2","ref":"Nostrum.Api.html#create_guild_channel/2-options"},{"type":"function","doc":"```elixir\nNostrum.Api.create_guild_channel(81384788765712384, name: \"elixir-nostrum\", topic: \"craig's domain\")\n{:ok, %Nostrum.Struct.Channel{guild_id: 81384788765712384}}\n```","title":"Examples - Nostrum.Api.create_guild_channel/2","ref":"Nostrum.Api.html#create_guild_channel/2-examples"},{"type":"function","doc":"Same as `create_guild_channel/2`, but raises `Nostrum.Error.ApiError` in case of failure.","title":"Nostrum.Api.create_guild_channel!/2","ref":"Nostrum.Api.html#create_guild_channel!/2"},{"type":"function","doc":"Creates a new emoji for the given guild.\n\nThis endpoint requires the `MANAGE_EMOJIS` permission. It fires a\n`t:Nostrum.Consumer.guild_emojis_update/0` event.\n\nAn optional `reason` can be provided for the audit log.\n\nIf successful, returns `{:ok, emoji}`. Otherwise, returns `t:Nostrum.Api.error/0`.","title":"Nostrum.Api.create_guild_emoji/3","ref":"Nostrum.Api.html#create_guild_emoji/3"},{"type":"function","doc":"* `:name` (string) - name of the emoji\n * `:image` (base64 data URI) - the 128x128 emoji image. Maximum size of 256kb\n * `:roles` (list of `t:Nostrum.Snowflake.t/0`) - roles for which this emoji will be whitelisted\n (default: [])\n\n`:name` and `:image` are always required.","title":"Options - Nostrum.Api.create_guild_emoji/3","ref":"Nostrum.Api.html#create_guild_emoji/3-options"},{"type":"function","doc":"```elixir\nimage = \"data:image/png;base64,YXl5IGJieSB1IGx1a2luIDQgc3VtIGZ1az8=\"\n\nNostrum.Api.create_guild_emoji(43189401384091, name: \"nostrum\", image: image, roles: [])\n```","title":"Examples - Nostrum.Api.create_guild_emoji/3","ref":"Nostrum.Api.html#create_guild_emoji/3-examples"},{"type":"function","doc":"Same as `create_guild_emoji/2`, but raises `Nostrum.Error.ApiError` in case of failure.","title":"Nostrum.Api.create_guild_emoji!/3","ref":"Nostrum.Api.html#create_guild_emoji!/3"},{"type":"function","doc":"Creates a new guild integeration.\n\nGuild to create integration with is specified by `guild_id`.\n\n`options` is a map with the following requires keys:\n * `type` - Integration type.\n * `id` - Integeration id.","title":"Nostrum.Api.create_guild_integrations/2","ref":"Nostrum.Api.html#create_guild_integrations/2"},{"type":"function","doc":"Creates a guild role.\n\nAn optional reason for the audit log can be provided via `reason`.\n\nThis endpoint requires the `MANAGE_ROLES` permission. It fires a\n`t:Nostrum.Consumer.guild_role_create/0` event.\n\nIf successful, returns `{:ok, role}`. Otherwise, returns a `t:Nostrum.Api.error/0`.","title":"Nostrum.Api.create_guild_role/3","ref":"Nostrum.Api.html#create_guild_role/3"},{"type":"function","doc":"* `:name` (string) - name of the role (default: \"new role\")\n * `:permissions` (integer) - bitwise of the enabled/disabled permissions (default: @everyone perms)\n * `:color` (integer) - RGB color value (default: 0)\n * `:hoist` (boolean) - whether the role should be displayed separately in the sidebar (default: false)\n * `:mentionable` (boolean) - whether the role should be mentionable (default: false)\n * `:icon` (string) - URL role icon (default: `nil`)\n * `:unicode_emoji` (string) - standard unicode character emoji role icon (default: `nil`)","title":"Options - Nostrum.Api.create_guild_role/3","ref":"Nostrum.Api.html#create_guild_role/3-options"},{"type":"function","doc":"```elixir\nNostrum.Api.create_guild_role(41771983423143937, name: \"nostrum-club\", hoist: true)\n```","title":"Examples - Nostrum.Api.create_guild_role/3","ref":"Nostrum.Api.html#create_guild_role/3-examples"},{"type":"function","doc":"Same as `create_guild_role/2`, but raises `Nostrum.Error.ApiError` in case of failure.","title":"Nostrum.Api.create_guild_role!/3","ref":"Nostrum.Api.html#create_guild_role!/3"},{"type":"function","doc":"Creates a new scheduled event for the guild.","title":"Nostrum.Api.create_guild_scheduled_event/3","ref":"Nostrum.Api.html#create_guild_scheduled_event/3"},{"type":"function","doc":"* `:channel_id` - (`t:Nostrum.Snowflake.t/0`) optional channel id for the event\n * `:entity_metadata` - (`t:Nostrum.Struct.Guild.ScheduledEvent.EntityMetadata.t/0`) metadata for the event\n * `:name` - (string) required name for the event\n * `:privacy_level` - (integer) at the time of writing, this must always be 2 for `GUILD_ONLY`\n * `:scheduled_start_time` - required time for the event to start as a `DateTime` or (ISO8601 timestamp)[`DateTime.to_iso8601/3`]\n * `:scheduled_end_time` - optional time for the event to end as a `DateTime` or (ISO8601 timestamp)[`DateTime.to_iso8601/3`]\n * `:description` - (string) optional description for the event\n * `:entity_type` - (integer) an integer representing the type of entity the event is for\n * `1` - `STAGE_INSTANCE`\n * `2` - `VOICE`\n * `3` - `EXTERNAL`\n\nSee the (official documentation)[https://discord.com/developers/docs/resources/guild-scheduled-event] for more information.\n\n\nAn optional `reason` can be specified for the audit log.","title":"Options - Nostrum.Api.create_guild_scheduled_event/3","ref":"Nostrum.Api.html#create_guild_scheduled_event/3-options"},{"type":"function","doc":"Create a sticker in a guild.\n\nEvery guild has five free sticker slots by default, and each Boost level will\ngrant access to more slots.\n\nUploaded stickers are constrained to 5 seconds in length for animated stickers, and 320 x 320 pixels.\n\nStickers in the [Lottie file format](https://airbnb.design/lottie/) can only\nbe uploaded on guilds that have either the `VERIFIED` and/or the `PARTNERED`\nguild feature.","title":"Nostrum.Api.create_guild_sticker/6","ref":"Nostrum.Api.html#create_guild_sticker/6"},{"type":"function","doc":"- `name`: Name of the sticker (2-30 characters)\n- `description`: Description of the sticker (2-100 characters)\n- `tags`: Autocomplete/suggestion tags for the sticker (max 200 characters)\n- `file`: A path to a file to upload or a map of `name` (file name) and `body` (file data).\n- `reason` (optional): audit log reason to attach to this event","title":"Parameters - Nostrum.Api.create_guild_sticker/6","ref":"Nostrum.Api.html#create_guild_sticker/6-parameters"},{"type":"function","doc":"Returns a `t:Nostrum.Struct.Sticker.t/0` on success.","title":"Returns - Nostrum.Api.create_guild_sticker/6","ref":"Nostrum.Api.html#create_guild_sticker/6-returns"},{"type":"function","doc":"Same as `create_interaction_response/3`, but directly takes the\n`t:Nostrum.Struct.Interaction.t/0` received from the gateway.","title":"Nostrum.Api.create_interaction_response/2","ref":"Nostrum.Api.html#create_interaction_response/2"},{"type":"function","doc":"Create a response to an interaction received from the gateway.","title":"Nostrum.Api.create_interaction_response/3","ref":"Nostrum.Api.html#create_interaction_response/3"},{"type":"function","doc":"- `id`: The interaction ID to which the response should be created.\n- `token`: The interaction token.\n- `response`: An [`InteractionResponse`](https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-response-object)\n object. See the linked documentation.","title":"Parameters - Nostrum.Api.create_interaction_response/3","ref":"Nostrum.Api.html#create_interaction_response/3-parameters"},{"type":"function","doc":"To include attachments in the response, you can include a `:files` field in the response.\nThis field expects a list of attachments which can be in either of the following formats:\n- A path to the file to upload.\n- A map with the following fields:\n - `:body` The file contents.\n - `:name` The filename of the file.","title":"Attachments - Nostrum.Api.create_interaction_response/3","ref":"Nostrum.Api.html#create_interaction_response/3-attachments"},{"type":"function","doc":"```elixir\nresponse = %{\n type: 4,\n data: %{\n content: \"I copy and pasted this code.\"\n }\n}\nNostrum.Api.create_interaction_response(interaction, response)\n```\n\nAs an alternative to passing the interaction ID and token, the\noriginal `t:Nostrum.Struct.Interaction.t/0` can also be passed\ndirectly. See `create_interaction_response/2`.","title":"Example - Nostrum.Api.create_interaction_response/3","ref":"Nostrum.Api.html#create_interaction_response/3-example"},{"type":"function","doc":"Same as `create_interaction_response/2`, but raises `Nostrum.Error.ApiError` in case of failure.","title":"Nostrum.Api.create_interaction_response!/2","ref":"Nostrum.Api.html#create_interaction_response!/2"},{"type":"function","doc":"","title":"Nostrum.Api.create_interaction_response!/3","ref":"Nostrum.Api.html#create_interaction_response!/3"},{"type":"function","doc":"Posts a message to a guild text or DM channel.\n\nThis endpoint requires the `VIEW_CHANNEL` and `SEND_MESSAGES` permissions. It\nmay situationally need the `SEND_MESSAGES_TTS` permission. It fires the\n`t:Nostrum.Consumer.message_create/0` event.\n\nIf `options` is a string, `options` will be used as the message's content.\n\nIf successful, returns `{:ok, message}`. Otherwise, returns a `t:Nostrum.Api.error/0`.","title":"Nostrum.Api.create_message/2","ref":"Nostrum.Api.html#create_message/2"},{"type":"function","doc":"* `:content` (string) - the message contents (up to 2000 characters)\n * `:nonce` (`t:Nostrum.Snowflake.t/0`) - a nonce that can be used for\n optimistic message sending\n * `:tts` (boolean) - true if this is a TTS message\n * `:file` (`t:Path.t/0` | map) - the path of the file being sent, or a map with the following keys\n if sending a binary from memory\n * `:name` (string) - the name of the file\n * `:body` (string) - binary you wish to send\n * `:files` - a list of files where each element is the same format as the `:file` option. If both\n `:file` and `:files` are specified, `:file` will be prepended to the `:files` list.\n * `:embeds` (`t:Nostrum.Struct.Embed.t/0`) - a list of embedded rich content\n * `:allowed_mentions` (`t:allowed_mentions/0`) - see the allowed mentions type documentation\n * `:message_reference` (`map`) - See \"Message references\" below\n * `:poll` (`t:Nostrum.Struct.Message.Poll.t/0`) - A poll object to send with the message\n\n At least one of the following is required: `:content`, `:file`, `:embeds`, `:poll`.","title":"Options - Nostrum.Api.create_message/2","ref":"Nostrum.Api.html#create_message/2-options"},{"type":"function","doc":"You can create a reply to another message on guilds using this option, given\nthat you have the ``VIEW_MESSAGE_HISTORY`` permission. To do so, include the\n``message_reference`` field in your call. The complete structure\ndocumentation can be found [on the Discord Developer\nPortal](https://discord.com/developers/docs/resources/channel#message-object-message-reference-structure),\nbut simply passing ``message_id`` will suffice:\n\n```elixir\ndef my_command(msg) do\n # Reply to the author - ``msg`` is a ``Nostrum.Struct.Message``\n Nostrum.Api.create_message(\n msg.channel_id,\n content: \"Hello\",\n message_reference: %{message_id: msg.id}\n )\nend\n```\n\nPassing a list will merge the settings provided","title":"Message reference - Nostrum.Api.create_message/2","ref":"Nostrum.Api.html#create_message/2-message-reference"},{"type":"function","doc":"```elixir\nNostrum.Api.create_message(43189401384091, content: \"hello world!\")\n\nNostrum.Api.create_message(43189401384091, \"hello world!\")\n\nimport Nostrum.Struct.Embed\nembed =\n %Nostrum.Struct.Embed{}\n |> put_title(\"embed\")\n |> put_description(\"new desc\")\nNostrum.Api.create_message(43189401384091, embeds: [embed])\n\nNostrum.Api.create_message(43189401384091, file: \"/path/to/file.txt\")\n\nNostrum.Api.create_message(43189401384091, content: \"hello world!\", embeds: [embed], file: \"/path/to/file.txt\")\n\nNostrum.Api.create_message(43189401384091, content: \"Hello @everyone\", allowed_mentions: :none)\n```","title":"Examples - Nostrum.Api.create_message/2","ref":"Nostrum.Api.html#create_message/2-examples"},{"type":"function","doc":"Same as `create_message/2`, but raises `Nostrum.Error.ApiError` in case of failure.","title":"Nostrum.Api.create_message!/2","ref":"Nostrum.Api.html#create_message!/2"},{"type":"function","doc":"Creates a reaction for a message.\n\nThis endpoint requires the `VIEW_CHANNEL` and `READ_MESSAGE_HISTORY`\npermissions. Additionally, if nobody else has reacted to the message with\nthe `emoji`, this endpoint requires the `ADD_REACTIONS` permission. It\nfires a `t:Nostrum.Consumer.message_reaction_add/0` event.\n\nIf successful, returns `{:ok}`. Otherwise, returns `t:Nostrum.Api.error/0`.","title":"Nostrum.Api.create_reaction/3","ref":"Nostrum.Api.html#create_reaction/3"},{"type":"function","doc":"```elixir\n# Using a Nostrum.Struct.Emoji.\nemoji = %Nostrum.Struct.Emoji{id: 43819043108, name: \"foxbot\"}\nNostrum.Api.create_reaction(123123123123, 321321321321, emoji)\n\n# Using a base 16 emoji string.\nNostrum.Api.create_reaction(123123123123, 321321321321, \"\\xF0\\x9F\\x98\\x81\")\n\n```\n\nFor other emoji string examples, see `t:Nostrum.Struct.Emoji.api_name/0`.","title":"Examples - Nostrum.Api.create_reaction/3","ref":"Nostrum.Api.html#create_reaction/3-examples"},{"type":"function","doc":"Same as `create_reaction/3`, but raises `Nostrum.Error.ApiError` in case of failure.","title":"Nostrum.Api.create_reaction!/3","ref":"Nostrum.Api.html#create_reaction!/3"},{"type":"function","doc":"Creates a webhook.","title":"Nostrum.Api.create_webhook/3","ref":"Nostrum.Api.html#create_webhook/3"},{"type":"function","doc":"- `channel_id` - Id of the channel to send the message to.\n - `args` - Map with the following **required** keys:\n - `name` - Name of the webhook.\n - `avatar` - Base64 128x128 jpeg image for the default avatar.\n - `reason` - An optional reason for the guild audit log.","title":"Parameters - Nostrum.Api.create_webhook/3","ref":"Nostrum.Api.html#create_webhook/3-parameters"},{"type":"function","doc":"Deletes all reactions from a message.\n\nThis endpoint requires the `VIEW_CHANNEL`, `READ_MESSAGE_HISTORY`, and\n`MANAGE_MESSAGES` permissions. It fires a `t:Nostrum.Consumer.message_reaction_remove_all/0` event.\n\nIf successful, returns `{:ok}`. Otherwise, return `t:Nostrum.Api.error/0`.","title":"Nostrum.Api.delete_all_reactions/2","ref":"Nostrum.Api.html#delete_all_reactions/2"},{"type":"function","doc":"Same as `delete_all_reactions/2`, but raises `Nostrum.Error.ApiError` in case of failure.","title":"Nostrum.Api.delete_all_reactions!/2","ref":"Nostrum.Api.html#delete_all_reactions!/2"},{"type":"function","doc":"Deletes a channel.\n\nAn optional `reason` can be provided for the guild audit log.\n\nIf deleting a `t:Nostrum.Struct.Channel.guild_channel/0`, this endpoint requires\nthe `MANAGE_CHANNELS` permission. It fires a\n`t:Nostrum.Consumer.channel_delete/0`. If a `t:Nostrum.Struct.Channel.guild_category_channel/0`\nis deleted, then a `t:Nostrum.Consumer.channel_update/0` event will fire\nfor each channel under the category.\n\nIf successful, returns `{:ok, channel}`. Otherwise, returns a `t:Nostrum.Api.error/0`.","title":"Nostrum.Api.delete_channel/2","ref":"Nostrum.Api.html#delete_channel/2"},{"type":"function","doc":"```elixir\nNostrum.Api.delete_channel(421533712753360896)\n{:ok, %Nostrum.Struct.Channel{id: 421533712753360896}}\n```","title":"Examples - Nostrum.Api.delete_channel/2","ref":"Nostrum.Api.html#delete_channel/2-examples"},{"type":"function","doc":"Same as `delete_channel/1`, but raises `Nostrum.Error.ApiError` in case of failure.","title":"Nostrum.Api.delete_channel!/2","ref":"Nostrum.Api.html#delete_channel!/2"},{"type":"function","doc":"Delete a channel permission for a user or role.\n\nRole or user overwrite to delete is specified by `channel_id` and `overwrite_id`.\nAn optional `reason` can be given for the audit log.","title":"Nostrum.Api.delete_channel_permissions/3","ref":"Nostrum.Api.html#delete_channel_permissions/3"},{"type":"function","doc":"Delete an existing global application command.","title":"Nostrum.Api.delete_global_application_command/2","ref":"Nostrum.Api.html#delete_global_application_command/2"},{"type":"function","doc":"- `application_id`: Application ID for which to create the command.\n If not given, this will be fetched from `Me`.\n- `command_id`: The current snowflake of the command.","title":"Parameters - Nostrum.Api.delete_global_application_command/2","ref":"Nostrum.Api.html#delete_global_application_command/2-parameters"},{"type":"function","doc":"Deletes a guild.\n\nThis endpoint requires that the current user is the owner of the guild.\nIt fires the `t:Nostrum.Consumer.guild_delete/0` event.\n\nIf successful, returns `{:ok}`. Otherwise, returns a `t:Nostrum.Api.error/0`.","title":"Nostrum.Api.delete_guild/1","ref":"Nostrum.Api.html#delete_guild/1"},{"type":"function","doc":"```elixir\nNostrum.Api.delete_guild(81384788765712384)\n{:ok}\n```","title":"Examples - Nostrum.Api.delete_guild/1","ref":"Nostrum.Api.html#delete_guild/1-examples"},{"type":"function","doc":"Same as `delete_guild/1`, but raises `Nostrum.Error.ApiError` in case of failure.","title":"Nostrum.Api.delete_guild!/1","ref":"Nostrum.Api.html#delete_guild!/1"},{"type":"function","doc":"Delete an existing guild application command.","title":"Nostrum.Api.delete_guild_application_command/3","ref":"Nostrum.Api.html#delete_guild_application_command/3"},{"type":"function","doc":"- `application_id`: Application ID for which to create the command.\n If not given, this will be fetched from `Me`.\n- `guild_id`: The guild on which the command exists.\n- `command_id`: The current snowflake of the command.","title":"Parameters - Nostrum.Api.delete_guild_application_command/3","ref":"Nostrum.Api.html#delete_guild_application_command/3-parameters"},{"type":"function","doc":"Delete an auto-moderation rule for a guild.","title":"Nostrum.Api.delete_guild_auto_moderation_rule/2","ref":"Nostrum.Api.html#delete_guild_auto_moderation_rule/2"},{"type":"function","doc":"Deletes the given emoji.\n\nAn optional `reason` can be provided for the audit log.\n\nThis endpoint requires the `MANAGE_EMOJIS` permission. It fires a\n`t:Nostrum.Consumer.guild_emojis_update/0` event.\n\nIf successful, returns `{:ok}`. Otherwise, returns `t:Nostrum.Api.error/0`.","title":"Nostrum.Api.delete_guild_emoji/3","ref":"Nostrum.Api.html#delete_guild_emoji/3"},{"type":"function","doc":"Same as `delete_guild_emoji/2`, but raises `Nostrum.Error.ApiError` in case of failure.","title":"Nostrum.Api.delete_guild_emoji!/3","ref":"Nostrum.Api.html#delete_guild_emoji!/3"},{"type":"function","doc":"Deletes a guild integeration.\n\nIntegration to delete is specified by `guild_id` and `integeration_id`.","title":"Nostrum.Api.delete_guild_integrations/2","ref":"Nostrum.Api.html#delete_guild_integrations/2"},{"type":"function","doc":"Deletes a role from a guild.\n\nAn optional `reason` can be specified for the audit log.\n\nThis endpoint requires the `MANAGE_ROLES` permission. It fires a\n`t:Nostrum.Consumer.guild_role_delete/0` event.\n\nIf successful, returns `{:ok}`. Otherwise, returns a `t:Nostrum.Api.error/0`.","title":"Nostrum.Api.delete_guild_role/3","ref":"Nostrum.Api.html#delete_guild_role/3"},{"type":"function","doc":"```elixir\nNostrum.Api.delete_guild_role(41771983423143937, 392817238471936)\n```","title":"Examples - Nostrum.Api.delete_guild_role/3","ref":"Nostrum.Api.html#delete_guild_role/3-examples"},{"type":"function","doc":"Same as `delete_guild_role/2`, but raises `Nostrum.Error.ApiError` in case of failure.","title":"Nostrum.Api.delete_guild_role!/3","ref":"Nostrum.Api.html#delete_guild_role!/3"},{"type":"function","doc":"Delete a scheduled event for a guild.","title":"Nostrum.Api.delete_guild_scheduled_event/2","ref":"Nostrum.Api.html#delete_guild_scheduled_event/2"},{"type":"function","doc":"Delete a guild sticker with the specified ID.","title":"Nostrum.Api.delete_guild_sticker/2","ref":"Nostrum.Api.html#delete_guild_sticker/2"},{"type":"function","doc":"Delete a followup message for an interaction.","title":"Nostrum.Api.delete_interaction_followup_message/3","ref":"Nostrum.Api.html#delete_interaction_followup_message/3"},{"type":"function","doc":"- `application_id`: Application ID for which to create the command.\n If not given, this will be fetched from `Me`.\n- `token`: Interaction token.\n- `message_id`: Followup message ID.","title":"Parameters - Nostrum.Api.delete_interaction_followup_message/3","ref":"Nostrum.Api.html#delete_interaction_followup_message/3-parameters"},{"type":"function","doc":"Same as `delete_interaction_followup_message/3`, but raises `Nostrum.Error.ApiError` in case of failure.","title":"Nostrum.Api.delete_interaction_followup_message!/3","ref":"Nostrum.Api.html#delete_interaction_followup_message!/3"},{"type":"function","doc":"Same as `delete_interaction_response/3`, but directly takes the\n`t:Nostrum.Struct.Interaction.t/0` received from the gateway.","title":"Nostrum.Api.delete_interaction_response/1","ref":"Nostrum.Api.html#delete_interaction_response/1"},{"type":"function","doc":"Deletes the original interaction response.","title":"Nostrum.Api.delete_interaction_response/2","ref":"Nostrum.Api.html#delete_interaction_response/2"},{"type":"function","doc":"","title":"Nostrum.Api.delete_interaction_response!/1","ref":"Nostrum.Api.html#delete_interaction_response!/1"},{"type":"function","doc":"Same as `delete_interaction_response/2`, but raises `Nostrum.Error.ApiError` in case of failure.","title":"Nostrum.Api.delete_interaction_response!/2","ref":"Nostrum.Api.html#delete_interaction_response!/2"},{"type":"function","doc":"Deletes an invite by its `invite_code`.\n\nThis endpoint requires the `MANAGE_CHANNELS` permission.\n\nIf successful, returns `{:ok, invite}`. Otherwise, returns a\n`t:Nostrum.Api.error/0`.","title":"Nostrum.Api.delete_invite/1","ref":"Nostrum.Api.html#delete_invite/1"},{"type":"function","doc":"```elixir\nNostrum.Api.delete_invite(\"zsjUsC\")\n```","title":"Examples - Nostrum.Api.delete_invite/1","ref":"Nostrum.Api.html#delete_invite/1-examples"},{"type":"function","doc":"Same as `delete_invite/1`, but raises `Nostrum.Error.ApiError` in case of failure.","title":"Nostrum.Api.delete_invite!/1","ref":"Nostrum.Api.html#delete_invite!/1"},{"type":"function","doc":"Same as `delete_message/2`, but takes a `Nostrum.Struct.Message` instead of a\n`channel_id` and `message_id`.","title":"Nostrum.Api.delete_message/1","ref":"Nostrum.Api.html#delete_message/1"},{"type":"function","doc":"Deletes a message.\n\nThis endpoint requires the 'VIEW_CHANNEL' and 'MANAGE_MESSAGES' permission. It\nfires the `MESSAGE_DELETE` event.\n\nIf successful, returns `{:ok}`. Otherwise, returns a `t:Nostrum.Api.error/0`.","title":"Nostrum.Api.delete_message/2","ref":"Nostrum.Api.html#delete_message/2"},{"type":"function","doc":"```elixir\nNostrum.Api.delete_message(43189401384091, 43189401384091)\n```","title":"Examples - Nostrum.Api.delete_message/2","ref":"Nostrum.Api.html#delete_message/2-examples"},{"type":"function","doc":"Same as `delete_message/1`, but raises `Nostrum.Error.ApiError` in case of failure.","title":"Nostrum.Api.delete_message!/1","ref":"Nostrum.Api.html#delete_message!/1"},{"type":"function","doc":"Same as `delete_message/2`, but raises `Nostrum.Error.ApiError` in case of failure.","title":"Nostrum.Api.delete_message!/2","ref":"Nostrum.Api.html#delete_message!/2"},{"type":"function","doc":"Deletes a reaction the current user has made for the message.\n\nThis endpoint requires the `VIEW_CHANNEL` and `READ_MESSAGE_HISTORY`\npermissions. It fires a `t:Nostrum.Consumer.message_reaction_remove/0` event.\n\nIf successful, returns `{:ok}`. Otherwise, returns `t:Nostrum.Api.error/0`.\n\nSee `create_reaction/3` for similar examples.","title":"Nostrum.Api.delete_own_reaction/3","ref":"Nostrum.Api.html#delete_own_reaction/3"},{"type":"function","doc":"Same as `delete_own_reaction/3`, but raises `Nostrum.Error.ApiError` in case of failure.","title":"Nostrum.Api.delete_own_reaction!/3","ref":"Nostrum.Api.html#delete_own_reaction!/3"},{"type":"function","doc":"Unpins a message in a channel.\n\nThis endpoint requires the 'VIEW_CHANNEL', 'READ_MESSAGE_HISTORY', and\n'MANAGE_MESSAGES' permissions. It fires the\n`t:Nostrum.Consumer.message_update/0` and\n`t:Nostrum.Consumer.channel_pins_update/0` events.\n\nReturns `{:ok}` if successful. `error` otherwise.","title":"Nostrum.Api.delete_pinned_channel_message/2","ref":"Nostrum.Api.html#delete_pinned_channel_message/2"},{"type":"function","doc":"Same as `delete_pinned_channel_message/2`, but raises `Nostrum.Error.ApiError` in case of failure.","title":"Nostrum.Api.delete_pinned_channel_message!/2","ref":"Nostrum.Api.html#delete_pinned_channel_message!/2"},{"type":"function","doc":"Deletes all reactions of a given emoji from a message.\n\nThis endpoint requires the `MANAGE_MESSAGES` permissions. It fires a `t:Nostrum.Consumer.message_reaction_remove_emoji/0` event.\n\nIf successful, returns `{:ok}`. Otherwise, returns `t:Nostrum.Api.error/0`.\n\nSee `create_reaction/3` for similar examples.","title":"Nostrum.Api.delete_reaction/3","ref":"Nostrum.Api.html#delete_reaction/3"},{"type":"function","doc":"Same as `delete_reaction/3`, but raises `Nostrum.Error.ApiError` in case of failure.","title":"Nostrum.Api.delete_reaction!/3","ref":"Nostrum.Api.html#delete_reaction!/3"},{"type":"function","doc":"Deletes another user's reaction from a message.\n\nThis endpoint requires the `VIEW_CHANNEL`, `READ_MESSAGE_HISTORY`, and\n`MANAGE_MESSAGES` permissions. It fires a `t:Nostrum.Consumer.message_reaction_remove/0` event.\n\nIf successful, returns `{:ok}`. Otherwise, returns `t:Nostrum.Api.error/0`.\n\nSee `create_reaction/3` for similar examples.","title":"Nostrum.Api.delete_user_reaction/4","ref":"Nostrum.Api.html#delete_user_reaction/4"},{"type":"function","doc":"Same as `delete_user_reaction/4`, but raises `Nostrum.Error.ApiError` in case of failure.","title":"Nostrum.Api.delete_user_reaction!/4","ref":"Nostrum.Api.html#delete_user_reaction!/4"},{"type":"function","doc":"Deletes a webhook.","title":"Nostrum.Api.delete_webhook/2","ref":"Nostrum.Api.html#delete_webhook/2"},{"type":"function","doc":"- `webhook_id` - Id of webhook to delete.\n - `reason` - An optional reason for the guild audit log.","title":"Parameters - Nostrum.Api.delete_webhook/2","ref":"Nostrum.Api.html#delete_webhook/2-parameters"},{"type":"function","doc":"Edits command permissions for a specific command for your application in a guild. You can only add up to 10 permission overwrites for a command.","title":"Nostrum.Api.edit_application_command_permissions/4","ref":"Nostrum.Api.html#edit_application_command_permissions/4"},{"type":"function","doc":"- `application_id`: Application ID commands are registered under.\n If not given, this will be fetched from `Me`.\n- `guild_id`: Guild ID to fetch command permissions from.\n- `command_id`: Command ID to fetch permissions for.\n- `permissions`: List of [application command permissions](https://discord.com/developers/docs/interactions/application-commands#application-command-permissions-object-application-command-permissions-structure)","title":"Parameters - Nostrum.Api.edit_application_command_permissions/4","ref":"Nostrum.Api.html#edit_application_command_permissions/4-parameters"},{"type":"function","doc":"This method returns a guild application command permission object, see all available values on the [Discord API docs](https://discord.com/developers/docs/interactions/application-commands#application-command-permissions-object-guild-application-command-permissions-structure).","title":"Return value - Nostrum.Api.edit_application_command_permissions/4","ref":"Nostrum.Api.html#edit_application_command_permissions/4-return-value"},{"type":"function","doc":"Edit the permission overwrites for a user or role.\n\nRole or user to overwrite is specified by `overwrite_id`.\n\n`permission_info` is a map with the following keys:\n * `type` - Required; `member` if editing a user, `role` if editing a role.\n * `allow` - Bitwise value of allowed permissions.\n * `deny` - Bitwise value of denied permissions.\n * `type` - `member` if editing a user, `role` if editing a role.\n\nAn optional `reason` can be provided for the audit log.\n\n `allow` and `deny` are defaulted to `0`, meaning that even if you don't\n specify them, they will override their respective former values in an\n existing overwrite.","title":"Nostrum.Api.edit_channel_permissions/4","ref":"Nostrum.Api.html#edit_channel_permissions/4"},{"type":"function","doc":"Same as `edit_channel_permissions/3`, but raises `Nostrum.Error.ApiError` in case of failure.","title":"Nostrum.Api.edit_channel_permissions!/4","ref":"Nostrum.Api.html#edit_channel_permissions!/4"},{"type":"function","doc":"Update an existing global application command.\n\nThe updated command will be available on all guilds in around an hour.","title":"Nostrum.Api.edit_global_application_command/3","ref":"Nostrum.Api.html#edit_global_application_command/3"},{"type":"function","doc":"- `application_id`: Application ID for which to edit the command.\n If not given, this will be fetched from `Me`.\n- `command_id`: The current snowflake of the command.\n- `command`: Command configuration, see the linked API documentation for reference.","title":"Parameters - Nostrum.Api.edit_global_application_command/3","ref":"Nostrum.Api.html#edit_global_application_command/3-parameters"},{"type":"function","doc":"The updated command. See the official reference:\nhttps://discord.com/developers/docs/interactions/application-commands#edit-global-application-command","title":"Return value - Nostrum.Api.edit_global_application_command/3","ref":"Nostrum.Api.html#edit_global_application_command/3-return-value"},{"type":"function","doc":"Update an existing guild application command.\n\nThe updated command will be available immediately.","title":"Nostrum.Api.edit_guild_application_command/4","ref":"Nostrum.Api.html#edit_guild_application_command/4"},{"type":"function","doc":"- `application_id`: Application ID for which to edit the command.\n If not given, this will be fetched from `Me`.\n- `guild_id`: Guild for which to update the command.\n- `command_id`: The current snowflake of the command.\n- `command`: Command configuration, see the linked API documentation for reference.","title":"Parameters - Nostrum.Api.edit_guild_application_command/4","ref":"Nostrum.Api.html#edit_guild_application_command/4-parameters"},{"type":"function","doc":"The updated command. See the official reference:\nhttps://discord.com/developers/docs/interactions/application-commands#edit-guild-application-command","title":"Return value - Nostrum.Api.edit_guild_application_command/4","ref":"Nostrum.Api.html#edit_guild_application_command/4-return-value"},{"type":"function","doc":"Same as `edit_interaction_response/3`, but directly takes the\n`t:Nostrum.Struct.Interaction.t/0` received from the gateway.","title":"Nostrum.Api.edit_interaction_response/2","ref":"Nostrum.Api.html#edit_interaction_response/2"},{"type":"function","doc":"Edits the original interaction response.\n\nFunctions the same as `edit_webhook_message/3`","title":"Nostrum.Api.edit_interaction_response/3","ref":"Nostrum.Api.html#edit_interaction_response/3"},{"type":"function","doc":"Same as `edit_interaction_response/2`, but raises `Nostrum.Error.ApiError` in case of failure.","title":"Nostrum.Api.edit_interaction_response!/2","ref":"Nostrum.Api.html#edit_interaction_response!/2"},{"type":"function","doc":"Same as `edit_interaction_response/3`, but raises `Nostrum.Error.ApiError` in case of failure.","title":"Nostrum.Api.edit_interaction_response!/3","ref":"Nostrum.Api.html#edit_interaction_response!/3"},{"type":"function","doc":"Same as `edit_message/3`, but takes a `Nostrum.Struct.Message` instead of a\n`channel_id` and `message_id`.","title":"Nostrum.Api.edit_message/2","ref":"Nostrum.Api.html#edit_message/2"},{"type":"function","doc":"Edits a previously sent message in a channel.\n\nThis endpoint requires the `VIEW_CHANNEL` permission. It fires the\n`t:Nostrum.Consumer.message_update/0` event.\n\nIf `options` is a string, `options` will be used as the message's content.\n\nIf successful, returns `{:ok, message}`. Otherwise, returns a `t:Nostrum.Api.error/0`.","title":"Nostrum.Api.edit_message/3","ref":"Nostrum.Api.html#edit_message/3"},{"type":"function","doc":"* `:content` (string) - the message contents (up to 2000 characters)\n* `:embeds` (`t:Nostrum.Struct.Embed.t/0`) - a list of embedded rich content\n* `:files` - a list of files where each element is the same format as the\n`:file` option. If both `:file` and `:files` are specified, `:file` will be\nprepended to the `:files` list. See `create_message/2` for more information.\n\nNote that if you edit a message with attachments, all attachments that should\nbe present after edit **must** be included in your request body. This\nincludes attachments that were sent in the original request.","title":"Options - Nostrum.Api.edit_message/3","ref":"Nostrum.Api.html#edit_message/3-options"},{"type":"function","doc":"```elixir\nNostrum.Api.edit_message(43189401384091, 1894013840914098, content: \"hello world!\")\n\nNostrum.Api.edit_message(43189401384091, 1894013840914098, \"hello world!\")\n\nimport Nostrum.Struct.Embed\nembed =\n %Nostrum.Struct.Embed{}\n |> put_title(\"embed\")\n |> put_description(\"new desc\")\nNostrum.Api.edit_message(43189401384091, 1894013840914098, embeds: [embed])\n\nNostrum.Api.edit_message(43189401384091, 1894013840914098, content: \"hello world!\", embeds: [embed])\n```","title":"Examples - Nostrum.Api.edit_message/3","ref":"Nostrum.Api.html#edit_message/3-examples"},{"type":"function","doc":"Same as `edit_message/2`, but raises `Nostrum.Error.ApiError` in case of failure.","title":"Nostrum.Api.edit_message!/2","ref":"Nostrum.Api.html#edit_message!/2"},{"type":"function","doc":"Same as `edit_message/3`, but raises `Nostrum.Error.ApiError` in case of failure.","title":"Nostrum.Api.edit_message!/3","ref":"Nostrum.Api.html#edit_message!/3"},{"type":"function","doc":"Edits a message previously created by the same webhook,\nargs are the same as `execute_webhook/3`,\nhowever all fields are optional.","title":"Nostrum.Api.edit_webhook_message/4","ref":"Nostrum.Api.html#edit_webhook_message/4"},{"type":"function","doc":"Executes a git webhook.","title":"Nostrum.Api.execute_git_webhook/3","ref":"Nostrum.Api.html#execute_git_webhook/3"},{"type":"function","doc":"- `webhook_id` - Id of the webhook to execute.\n - `webhook_token` - Token of the webhook to execute.","title":"Parameters - Nostrum.Api.execute_git_webhook/3","ref":"Nostrum.Api.html#execute_git_webhook/3-parameters"},{"type":"function","doc":"Executes a slack webhook.","title":"Nostrum.Api.execute_slack_webhook/3","ref":"Nostrum.Api.html#execute_slack_webhook/3"},{"type":"function","doc":"- `webhook_id` - Id of the webhook to execute.\n - `webhook_token` - Token of the webhook to execute.","title":"Parameters - Nostrum.Api.execute_slack_webhook/3","ref":"Nostrum.Api.html#execute_slack_webhook/3-parameters"},{"type":"function","doc":"Executes a webhook.","title":"Nostrum.Api.execute_webhook/4","ref":"Nostrum.Api.html#execute_webhook/4"},{"type":"function","doc":"- `webhook_id` - Id of the webhook to execute.\n- `webhook_token` - Token of the webhook to execute.\n- `args` - Map with the following allowed keys:\n - `content` - Message content.\n - `files` - List of Files to send.\n - `embeds` - List of embeds to send.\n - `username` - Overrides the default name of the webhook.\n - `avatar_url` - Overrides the default avatar of the webhook.\n - `tts` - Whether the message should be read over text to speech.\n - `flags` - Bitwise flags.\n - `thread_id` - Send a message to the specified thread within the webhook's channel.\n - `allowed_mentions` - Mentions to allow in the webhook message\n- `wait` - Whether to return an error or not. Defaults to `false`.\n\n**Note**: If `wait` is `true`, this method will return a `Message.t()` on success.\n\nAt least one of `content`, `files` or `embeds` should be supplied in the `args` parameter.","title":"Parameters - Nostrum.Api.execute_webhook/4","ref":"Nostrum.Api.html#execute_webhook/4-parameters"},{"type":"function","doc":"Expire (close voting on) a poll before the scheduled end time.\n\nReturns the original message containing the poll.","title":"Nostrum.Api.expire_poll/2","ref":"Nostrum.Api.html#expire_poll/2"},{"type":"function","doc":"Same as `expire_poll/2`, but raises `Nostrum.Error.ApiError` in case of failure.","title":"Nostrum.Api.expire_poll!/2","ref":"Nostrum.Api.html#expire_poll!/2"},{"type":"function","doc":"Fetches command permissions for a specific command for your application in a guild.","title":"Nostrum.Api.get_application_command_permissions/3","ref":"Nostrum.Api.html#get_application_command_permissions/3"},{"type":"function","doc":"- `application_id`: Application ID commands are registered under.\n If not given, this will be fetched from `Me`.\n- `guild_id`: Guild ID to fetch command permissions from.\n- `command_id`: Command ID to fetch permissions for.","title":"Parameters - Nostrum.Api.get_application_command_permissions/3","ref":"Nostrum.Api.html#get_application_command_permissions/3-parameters"},{"type":"function","doc":"This method returns a single guild application command permission object, see all available values on the [Discord API docs](https://discord.com/developers/docs/interactions/application-commands#application-command-permissions-object-guild-application-command-permissions-structure).","title":"Return value - Nostrum.Api.get_application_command_permissions/3","ref":"Nostrum.Api.html#get_application_command_permissions/3-return-value"},{"type":"function","doc":"Gets the bot's OAuth2 application info.","title":"Nostrum.Api.get_application_information/0","ref":"Nostrum.Api.html#get_application_information/0"},{"type":"function","doc":"```elixir\nNostrum.Api.get_application_information\n{:ok,\n%{\n bot_public: false,\n bot_require_code_grant: false,\n description: \"Test\",\n icon: nil,\n id: \"172150183260323840\",\n name: \"Baba O-Riley\",\n owner: %{\n avatar: nil,\n discriminator: \"0042\",\n id: \"172150183260323840\",\n username: \"i own a bot\"\n },\n}}\n```","title":"Example - Nostrum.Api.get_application_information/0","ref":"Nostrum.Api.html#get_application_information/0-example"},{"type":"function","doc":"Gets a channel.\n\nIf successful, returns `{:ok, channel}`. Otherwise, returns a `t:Nostrum.Api.error/0`.","title":"Nostrum.Api.get_channel/1","ref":"Nostrum.Api.html#get_channel/1"},{"type":"function","doc":"```elixir\nNostrum.Api.get_channel(381889573426429952)\n{:ok, %Nostrum.Struct.Channel{id: 381889573426429952}}\n```","title":"Examples - Nostrum.Api.get_channel/1","ref":"Nostrum.Api.html#get_channel/1-examples"},{"type":"function","doc":"Same as `get_channel/1`, but raises `Nostrum.Error.ApiError` in case of failure.","title":"Nostrum.Api.get_channel!/1","ref":"Nostrum.Api.html#get_channel!/1"},{"type":"function","doc":"Gets a list of invites for a channel.\n\nThis endpoint requires the 'VIEW_CHANNEL' and 'MANAGE_CHANNELS' permissions.\n\nIf successful, returns `{:ok, invite}`. Otherwise, returns a\n`t:Nostrum.Api.error/0`.","title":"Nostrum.Api.get_channel_invites/1","ref":"Nostrum.Api.html#get_channel_invites/1"},{"type":"function","doc":"```elixir\nNostrum.Api.get_channel_invites(43189401384091)\n{:ok, [%Nostrum.Struct.Invite{} | _]}\n```","title":"Examples - Nostrum.Api.get_channel_invites/1","ref":"Nostrum.Api.html#get_channel_invites/1-examples"},{"type":"function","doc":"Same as `get_channel_invites/1`, but raises `Nostrum.Error.ApiError` in case of failure.","title":"Nostrum.Api.get_channel_invites!/1","ref":"Nostrum.Api.html#get_channel_invites!/1"},{"type":"function","doc":"Retrieves a message from a channel.\n\nThis endpoint requires the 'VIEW_CHANNEL' and 'READ_MESSAGE_HISTORY' permissions.\n\nIf successful, returns `{:ok, message}`. Otherwise, returns a `t:Nostrum.Api.error/0`.","title":"Nostrum.Api.get_channel_message/2","ref":"Nostrum.Api.html#get_channel_message/2"},{"type":"function","doc":"```elixir\nNostrum.Api.get_channel_message(43189401384091, 198238475613443)\n```","title":"Examples - Nostrum.Api.get_channel_message/2","ref":"Nostrum.Api.html#get_channel_message/2-examples"},{"type":"function","doc":"Same as `get_channel_message/2`, but raises `Nostrum.Error.ApiError` in case of failure.","title":"Nostrum.Api.get_channel_message!/2","ref":"Nostrum.Api.html#get_channel_message!/2"},{"type":"function","doc":"Retrieves a channel's messages around a `locator` up to a `limit`.\n\nThis endpoint requires the 'VIEW_CHANNEL' permission. If the current user\nis missing the 'READ_MESSAGE_HISTORY' permission, then this function will\nreturn no messages.\n\nIf successful, returns `{:ok, messages}`. Otherwise, returns a `t:Nostrum.Api.error/0`.","title":"Nostrum.Api.get_channel_messages/3","ref":"Nostrum.Api.html#get_channel_messages/3"},{"type":"function","doc":"```elixir\nNostrum.Api.get_channel_messages(43189401384091, 5, {:before, 130230401384})\n```","title":"Examples - Nostrum.Api.get_channel_messages/3","ref":"Nostrum.Api.html#get_channel_messages/3-examples"},{"type":"function","doc":"Same as `get_channel_messages/3`, but raises `Nostrum.Error.ApiError` in case of failure.","title":"Nostrum.Api.get_channel_messages!/3","ref":"Nostrum.Api.html#get_channel_messages!/3"},{"type":"function","doc":"Gets a list of webhooks for a channel.","title":"Nostrum.Api.get_channel_webhooks/1","ref":"Nostrum.Api.html#get_channel_webhooks/1"},{"type":"function","doc":"- `channel_id` - Channel to get webhooks for.","title":"Parameters - Nostrum.Api.get_channel_webhooks/1","ref":"Nostrum.Api.html#get_channel_webhooks/1-parameters"},{"type":"function","doc":"Gets info on the current user.\n\nIf nostrum's caching is enabled, it is recommended to use `Me.get/0`\ninstead of this function. This is because sending out an API request is much slower\nthan pulling from our cache.\n\nIf the request is successful, this function returns `{:ok, user}`, where\n`user` is nostrum's `Nostrum.Struct.User`. Otherwise, returns `{:error, reason}`.","title":"Nostrum.Api.get_current_user/0","ref":"Nostrum.Api.html#get_current_user/0"},{"type":"function","doc":"Same as `get_current_user/0`, but raises `Nostrum.Error.ApiError` in case of failure.","title":"Nostrum.Api.get_current_user!/0","ref":"Nostrum.Api.html#get_current_user!/0"},{"type":"function","doc":"Gets a list of guilds the user is currently in.\n\nThis endpoint requires the `guilds` OAuth2 scope.\n\nIf successful, returns `{:ok, guilds}`. Otherwise, returns a `t:Nostrum.Api.error/0`.","title":"Nostrum.Api.get_current_user_guilds/1","ref":"Nostrum.Api.html#get_current_user_guilds/1"},{"type":"function","doc":"* `:before` (`t:Nostrum.Snowflake.t/0`) - get guilds before this\n guild ID\n * `:after` (`t:Nostrum.Snowflake.t/0`) - get guilds after this guild\n ID\n * `:limit` (integer) - max number of guilds to return (1-100)","title":"Options - Nostrum.Api.get_current_user_guilds/1","ref":"Nostrum.Api.html#get_current_user_guilds/1-options"},{"type":"function","doc":"```elixir\niex> Nostrum.Api.get_current_user_guilds(limit: 1)\n{:ok, [%Nostrum.Struct.Guild{}]}\n```","title":"Examples - Nostrum.Api.get_current_user_guilds/1","ref":"Nostrum.Api.html#get_current_user_guilds/1-examples"},{"type":"function","doc":"Same as `get_current_user_guilds/1`, but raises `Nostrum.Error.ApiError` in case of failure.","title":"Nostrum.Api.get_current_user_guilds!/1","ref":"Nostrum.Api.html#get_current_user_guilds!/1"},{"type":"function","doc":"Fetch all global commands.","title":"Nostrum.Api.get_global_application_commands/1","ref":"Nostrum.Api.html#get_global_application_commands/1"},{"type":"function","doc":"- `application_id`: Application ID for which to search commands.\n If not given, this will be fetched from `Me`.","title":"Parameters - Nostrum.Api.get_global_application_commands/1","ref":"Nostrum.Api.html#get_global_application_commands/1-parameters"},{"type":"function","doc":"A list of ``ApplicationCommand``s on success. See the official reference:\nhttps://discord.com/developers/docs/interactions/application-commands#application-command-object-application-command-structure","title":"Return value - Nostrum.Api.get_global_application_commands/1","ref":"Nostrum.Api.html#get_global_application_commands/1-return-value"},{"type":"function","doc":"```elixir\niex> Nostrum.Api.get_global_application_commands\n{:ok,\n [\n %{\n application_id: \"455589479713865749\",\n description: \"ed, man! man, ed\",\n id: \"789841753196331029\",\n name: \"edit\"\n }\n ]}\n```","title":"Example - Nostrum.Api.get_global_application_commands/1","ref":"Nostrum.Api.html#get_global_application_commands/1-example"},{"type":"function","doc":"Gets a guild.\n\nIf successful, returns `{:ok, guild}`. Otherwise, returns a `t:Nostrum.Api.error/0`.","title":"Nostrum.Api.get_guild/1","ref":"Nostrum.Api.html#get_guild/1"},{"type":"function","doc":"```elixir\nNostrum.Api.get_guild(81384788765712384)\n{:ok, %Nostrum.Struct.Guild{id: 81384788765712384}}\n```","title":"Examples - Nostrum.Api.get_guild/1","ref":"Nostrum.Api.html#get_guild/1-examples"},{"type":"function","doc":"Same as `get_guild/1`, but raises `Nostrum.Error.ApiError` in case of failure.","title":"Nostrum.Api.get_guild!/1","ref":"Nostrum.Api.html#get_guild!/1"},{"type":"function","doc":"Fetches command permissions for all commands for your application in a guild.","title":"Nostrum.Api.get_guild_application_command_permissions/2","ref":"Nostrum.Api.html#get_guild_application_command_permissions/2"},{"type":"function","doc":"- `application_id`: Application ID commands are registered under.\n If not given, this will be fetched from `Me`.\n- `guild_id`: Guild ID to fetch command permissions from.","title":"Parameters - Nostrum.Api.get_guild_application_command_permissions/2","ref":"Nostrum.Api.html#get_guild_application_command_permissions/2-parameters"},{"type":"function","doc":"This method returns a list of guild application command permission objects, see all available values on the [Discord API docs](https://discord.com/developers/docs/interactions/application-commands#application-command-permissions-object-guild-application-command-permissions-structure).","title":"Return value - Nostrum.Api.get_guild_application_command_permissions/2","ref":"Nostrum.Api.html#get_guild_application_command_permissions/2-return-value"},{"type":"function","doc":"Fetch all guild application commands for the given guild.","title":"Nostrum.Api.get_guild_application_commands/2","ref":"Nostrum.Api.html#get_guild_application_commands/2"},{"type":"function","doc":"- `application_id`: Application ID for which to fetch commands.\n If not given, this will be fetched from `Me`.\n- `guild_id`: The guild ID for which guild application commands\n should be requested.","title":"Parameters - Nostrum.Api.get_guild_application_commands/2","ref":"Nostrum.Api.html#get_guild_application_commands/2-parameters"},{"type":"function","doc":"A list of ``ApplicationCommand``s on success. See the official reference:\nhttps://discord.com/developers/docs/interactions/application-commands#application-command-object-application-command-structure","title":"Return value - Nostrum.Api.get_guild_application_commands/2","ref":"Nostrum.Api.html#get_guild_application_commands/2-return-value"},{"type":"function","doc":"Get the `t:Nostrum.Struct.Guild.AuditLog.t/0` for the given `guild_id`.","title":"Nostrum.Api.get_guild_audit_log/2","ref":"Nostrum.Api.html#get_guild_audit_log/2"},{"type":"function","doc":"* `:user_id` (`t:Nostrum.Struct.User.id/0`) - filter the log for a user ID\n * `:action_type` (`t:integer/0`) - filter the log by audit log type, see [Audit Log Events](https://discord.com/developers/docs/resources/audit-log#audit-log-entry-object-audit-log-events)\n * `:before` (`t:Nostrum.Struct.Snowflake.t/0`) - filter the log before a certain entry ID\n * `:limit` (`t:pos_integer/0`) - how many entries are returned (default 50, minimum 1, maximum 100)","title":"Options - Nostrum.Api.get_guild_audit_log/2","ref":"Nostrum.Api.html#get_guild_audit_log/2-options"},{"type":"function","doc":"Get a single auto-moderation rule for a guild.","title":"Nostrum.Api.get_guild_auto_moderation_rule/2","ref":"Nostrum.Api.html#get_guild_auto_moderation_rule/2"},{"type":"function","doc":"Get a list of all auto-moderation rules for a guild.","title":"Nostrum.Api.get_guild_auto_moderation_rules/1","ref":"Nostrum.Api.html#get_guild_auto_moderation_rules/1"},{"type":"function","doc":"Gets a ban object for the given user from a guild.","title":"Nostrum.Api.get_guild_ban/2","ref":"Nostrum.Api.html#get_guild_ban/2"},{"type":"function","doc":"Gets a list of users banned from a guild.\n\nGuild to get bans for is specified by `guild_id`.","title":"Nostrum.Api.get_guild_bans/1","ref":"Nostrum.Api.html#get_guild_bans/1"},{"type":"function","doc":"Gets a list of guild channels.\n\nIf successful, returns `{:ok, channels}`. Otherwise, returns a `t:Nostrum.Api.error/0`.","title":"Nostrum.Api.get_guild_channels/1","ref":"Nostrum.Api.html#get_guild_channels/1"},{"type":"function","doc":"```elixir\nNostrum.Api.get_guild_channels(81384788765712384)\n{:ok, [%Nostrum.Struct.Channel{guild_id: 81384788765712384} | _]}\n```","title":"Examples - Nostrum.Api.get_guild_channels/1","ref":"Nostrum.Api.html#get_guild_channels/1-examples"},{"type":"function","doc":"Same as `get_guild_channels/1`, but raises `Nostrum.Error.ApiError` in case of failure.","title":"Nostrum.Api.get_guild_channels!/1","ref":"Nostrum.Api.html#get_guild_channels!/1"},{"type":"function","doc":"Gets an emoji for the given guild and emoji ids.\n\nThis endpoint requires the `MANAGE_EMOJIS` permission.\n\nIf successful, returns `{:ok, emoji}`. Otherwise, returns `t:Nostrum.Api.error/0`.","title":"Nostrum.Api.get_guild_emoji/2","ref":"Nostrum.Api.html#get_guild_emoji/2"},{"type":"function","doc":"Same as `get_guild_emoji/2`, but raises `Nostrum.Error.ApiError` in case of failure.","title":"Nostrum.Api.get_guild_emoji!/2","ref":"Nostrum.Api.html#get_guild_emoji!/2"},{"type":"function","doc":"Gets a list of guild integerations.\n\nGuild to get integrations for is specified by `guild_id`.","title":"Nostrum.Api.get_guild_integrations/1","ref":"Nostrum.Api.html#get_guild_integrations/1"},{"type":"function","doc":"Gets a list of invites for a guild.\n\nThis endpoint requires the `MANAGE_GUILD` permission.\n\nIf successful, returns `{:ok, invites}`. Otherwise, returns a `t:Nostrum.Api.error/0`.","title":"Nostrum.Api.get_guild_invites/1","ref":"Nostrum.Api.html#get_guild_invites/1"},{"type":"function","doc":"```elixir\nNostrum.Api.get_guild_invites(81384788765712384)\n{:ok, [%Nostrum.Struct.Invite{} | _]}\n```","title":"Examples - Nostrum.Api.get_guild_invites/1","ref":"Nostrum.Api.html#get_guild_invites/1-examples"},{"type":"function","doc":"Same as `get_guild_invites/1`, but raises `Nostrum.Error.ApiError` in case of failure.","title":"Nostrum.Api.get_guild_invites!/1","ref":"Nostrum.Api.html#get_guild_invites!/1"},{"type":"function","doc":"Gets a guild member.\n\nIf successful, returns `{:ok, member}`. Otherwise, returns a `t:Nostrum.Api.error/0`.","title":"Nostrum.Api.get_guild_member/2","ref":"Nostrum.Api.html#get_guild_member/2"},{"type":"function","doc":"```elixir\nNostrum.Api.get_guild_member(4019283754613, 184937267485)\n```","title":"Examples - Nostrum.Api.get_guild_member/2","ref":"Nostrum.Api.html#get_guild_member/2-examples"},{"type":"function","doc":"Same as `get_guild_member/2`, but raises `Nostrum.Error.ApiError` in case of failure.","title":"Nostrum.Api.get_guild_member!/2","ref":"Nostrum.Api.html#get_guild_member!/2"},{"type":"function","doc":"Gets the number of members that would be removed in a prune given `days`.\n\nThis endpoint requires the `KICK_MEMBERS` permission.\n\nIf successful, returns `{:ok, %{pruned: pruned}}`. Otherwise, returns a `t:Nostrum.Api.error/0`.","title":"Nostrum.Api.get_guild_prune_count/2","ref":"Nostrum.Api.html#get_guild_prune_count/2"},{"type":"function","doc":"```elixir\nNostrum.Api.get_guild_prune_count(81384788765712384, 1)\n{:ok, %{pruned: 0}}\n```","title":"Examples - Nostrum.Api.get_guild_prune_count/2","ref":"Nostrum.Api.html#get_guild_prune_count/2-examples"},{"type":"function","doc":"Same as `get_guild_prune_count/2`, but raises `Nostrum.Error.ApiError` in case of failure.","title":"Nostrum.Api.get_guild_prune_count!/2","ref":"Nostrum.Api.html#get_guild_prune_count!/2"},{"type":"function","doc":"Gets a guild's roles.\n\nIf successful, returns `{:ok, roles}`. Otherwise, returns a `t:Nostrum.Api.error/0`.","title":"Nostrum.Api.get_guild_roles/1","ref":"Nostrum.Api.html#get_guild_roles/1"},{"type":"function","doc":"```elixir\nNostrum.Api.get_guild_roles(147362948571673)\n```","title":"Examples - Nostrum.Api.get_guild_roles/1","ref":"Nostrum.Api.html#get_guild_roles/1-examples"},{"type":"function","doc":"Same as `get_guild_roles/1`, but raises `Nostrum.Error.ApiError` in case of failure.","title":"Nostrum.Api.get_guild_roles!/1","ref":"Nostrum.Api.html#get_guild_roles!/1"},{"type":"function","doc":"Get a scheduled event for a guild.","title":"Nostrum.Api.get_guild_scheduled_event/2","ref":"Nostrum.Api.html#get_guild_scheduled_event/2"},{"type":"function","doc":"Get a list of users who have subscribed to an event.","title":"Nostrum.Api.get_guild_scheduled_event_users/3","ref":"Nostrum.Api.html#get_guild_scheduled_event_users/3"},{"type":"function","doc":"All are optional, with their default values listed.\n* `:limit` (integer) maximum number of users to return, defaults to `100`\n* `:with_member` (boolean) whether to include the member object for each user, defaults to `false`\n* `:before` (`t:Nostrum.Snowflake.t/0`) return only users before this user id, defaults to `nil`\n* `:after` (`t:Nostrum.Snowflake.t/0`) return only users after this user id, defaults to `nil`","title":"Options - Nostrum.Api.get_guild_scheduled_event_users/3","ref":"Nostrum.Api.html#get_guild_scheduled_event_users/3-options"},{"type":"function","doc":"Get a list of scheduled events for a guild.","title":"Nostrum.Api.get_guild_scheduled_events/1","ref":"Nostrum.Api.html#get_guild_scheduled_events/1"},{"type":"function","doc":"Return the specified sticker from the specified guild.\n\nReturns a `t:Nostrum.Struct.Sticker.t/0`.","title":"Nostrum.Api.get_guild_sticker/2","ref":"Nostrum.Api.html#get_guild_sticker/2"},{"type":"function","doc":"Gets a list of webhooks for a guild.","title":"Nostrum.Api.get_guild_webhooks/1","ref":"Nostrum.Api.html#get_guild_webhooks/1"},{"type":"function","doc":"- `guild_id` - Guild to get webhooks for.","title":"Parameters - Nostrum.Api.get_guild_webhooks/1","ref":"Nostrum.Api.html#get_guild_webhooks/1-parameters"},{"type":"function","doc":"Gets a guild embed.","title":"Nostrum.Api.get_guild_widget/1","ref":"Nostrum.Api.html#get_guild_widget/1"},{"type":"function","doc":"Gets an invite by its `invite_code`.\n\nIf successful, returns `{:ok, invite}`. Otherwise, returns a\n`t:Nostrum.Api.error/0`.","title":"Nostrum.Api.get_invite/2","ref":"Nostrum.Api.html#get_invite/2"},{"type":"function","doc":"* `:with_counts` (boolean) - whether to include member count fields","title":"Options - Nostrum.Api.get_invite/2","ref":"Nostrum.Api.html#get_invite/2-options"},{"type":"function","doc":"```elixir\nNostrum.Api.get_invite(\"zsjUsC\")\n\nNostrum.Api.get_invite(\"zsjUsC\", with_counts: true)\n```","title":"Examples - Nostrum.Api.get_invite/2","ref":"Nostrum.Api.html#get_invite/2-examples"},{"type":"function","doc":"Same as `get_invite/1`, but raises `Nostrum.Error.ApiError` in case of failure.","title":"Nostrum.Api.get_invite!/2","ref":"Nostrum.Api.html#get_invite!/2"},{"type":"function","doc":"Retrieves the original message of an interaction.","title":"Nostrum.Api.get_original_interaction_response/1","ref":"Nostrum.Api.html#get_original_interaction_response/1"},{"type":"function","doc":"Retrieves all pinned messages from a channel.\n\nThis endpoint requires the 'VIEW_CHANNEL' and 'READ_MESSAGE_HISTORY' permissions.\n\nIf successful, returns `{:ok, messages}`. Otherwise, returns a `t:Nostrum.Api.error/0`.","title":"Nostrum.Api.get_pinned_messages/1","ref":"Nostrum.Api.html#get_pinned_messages/1"},{"type":"function","doc":"```elixir\nNostrum.Api.get_pinned_messages(43189401384091)\n```","title":"Examples - Nostrum.Api.get_pinned_messages/1","ref":"Nostrum.Api.html#get_pinned_messages/1-examples"},{"type":"function","doc":"Same as `get_pinned_messages/1`, but raises `Nostrum.Error.ApiError` in case of failure.","title":"Nostrum.Api.get_pinned_messages!/1","ref":"Nostrum.Api.html#get_pinned_messages!/1"},{"type":"function","doc":"Get voters for the provided answer on the poll attached to the provided message.\n\nIf successful, returns `{:ok, users}`. Otherwise, returns `t:Nostrum.Api.error/0`.\n\nThe optional `params` are `after`, the user ID to query after, absent by default,\nand `limit`, the max number of users to return, 1-100, 25 by default. Results are\nsorted by Discord user snowflake (ID) in ascending order.","title":"Nostrum.Api.get_poll_answer_voters/4","ref":"Nostrum.Api.html#get_poll_answer_voters/4"},{"type":"function","doc":"Same as `get_poll_answer_voters/4`, but raises `Nostrum.Error.ApiError` in case of failure.","title":"Nostrum.Api.get_poll_answer_voters!/4","ref":"Nostrum.Api.html#get_poll_answer_voters!/4"},{"type":"function","doc":"Gets all users who reacted with an emoji.\n\nThis endpoint requires the `VIEW_CHANNEL` and `READ_MESSAGE_HISTORY` permissions.\n\nIf successful, returns `{:ok, users}`. Otherwise, returns `t:Nostrum.Api.error/0`.\n\nThe optional `params` are `after`, the user ID to query after, absent by default,\nand `limit`, the max number of users to return, 1-100, 25 by default.\n\nSee `create_reaction/3` for similar examples.","title":"Nostrum.Api.get_reactions/4","ref":"Nostrum.Api.html#get_reactions/4"},{"type":"function","doc":"Same as `get_reactions/4`, but raises `Nostrum.Error.ApiError` in case of failure.","title":"Nostrum.Api.get_reactions!/4","ref":"Nostrum.Api.html#get_reactions!/4"},{"type":"function","doc":"Fetch a sticker with the provided ID.\n\nReturns a `t:Nostrum.Struct.Sticker.t/0`.","title":"Nostrum.Api.get_sticker/1","ref":"Nostrum.Api.html#get_sticker/1"},{"type":"function","doc":"Get a list of available sticker packs.","title":"Nostrum.Api.get_sticker_packs/0","ref":"Nostrum.Api.html#get_sticker_packs/0"},{"type":"function","doc":"Returns a thread member object for the specified user if they are a member of the thread","title":"Nostrum.Api.get_thread_member/2","ref":"Nostrum.Api.html#get_thread_member/2"},{"type":"function","doc":"Returns a list of thread members for the specified thread.\n\nThis endpoint is restricted according to whether the `GUILD_MEMBERS` privileged intent is enabled.","title":"Nostrum.Api.get_thread_members/1","ref":"Nostrum.Api.html#get_thread_members/1"},{"type":"function","doc":"Gets a user by its `t:Nostrum.Struct.User.id/0`.\n\nIf the request is successful, this function returns `{:ok, user}`, where\n`user` is a `Nostrum.Struct.User`. Otherwise, returns `{:error, reason}`.","title":"Nostrum.Api.get_user/1","ref":"Nostrum.Api.html#get_user/1"},{"type":"function","doc":"Same as `get_user/1`, but raises `Nostrum.Error.ApiError` in case of failure.","title":"Nostrum.Api.get_user!/1","ref":"Nostrum.Api.html#get_user!/1"},{"type":"function","doc":"Gets a list of user connections.","title":"Nostrum.Api.get_user_connections/0","ref":"Nostrum.Api.html#get_user_connections/0"},{"type":"function","doc":"Gets a list of our user's DM channels.\n\nIf successful, returns `{:ok, dm_channels}`. Otherwise, returns a `t:Nostrum.Api.error/0`.","title":"Nostrum.Api.get_user_dms/0","ref":"Nostrum.Api.html#get_user_dms/0"},{"type":"function","doc":"```elixir\nNostrum.Api.get_user_dms()\n{:ok, [%Nostrum.Struct.Channel{type: 1} | _]}\n```","title":"Examples - Nostrum.Api.get_user_dms/0","ref":"Nostrum.Api.html#get_user_dms/0-examples"},{"type":"function","doc":"Same as `get_user_dms/0`, but raises `Nostrum.Error.ApiError` in case of failure.","title":"Nostrum.Api.get_user_dms!/0","ref":"Nostrum.Api.html#get_user_dms!/0"},{"type":"function","doc":"Gets a list of voice regions for the guild.\n\nGuild to get voice regions for is specified by `guild_id`.","title":"Nostrum.Api.get_voice_region/1","ref":"Nostrum.Api.html#get_voice_region/1"},{"type":"function","doc":"Gets a webhook by id.","title":"Nostrum.Api.get_webhook/1","ref":"Nostrum.Api.html#get_webhook/1"},{"type":"function","doc":"- `webhook_id` - Id of the webhook to get.","title":"Parameters - Nostrum.Api.get_webhook/1","ref":"Nostrum.Api.html#get_webhook/1-parameters"},{"type":"function","doc":"Retrieves the original message of a webhook.","title":"Nostrum.Api.get_webhook_message/2","ref":"Nostrum.Api.html#get_webhook_message/2"},{"type":"function","doc":"Gets a webhook by id and token.\n\nThis method is exactly like `get_webhook/1` but does not require\nauthentication.","title":"Nostrum.Api.get_webhook_with_token/2","ref":"Nostrum.Api.html#get_webhook_with_token/2"},{"type":"function","doc":"- `webhook_id` - Id of the webhook to get.\n - `webhook_token` - Token of the webhook to get.","title":"Parameters - Nostrum.Api.get_webhook_with_token/2","ref":"Nostrum.Api.html#get_webhook_with_token/2-parameters"},{"type":"function","doc":"Join an existing thread, requires that the thread is not archived.","title":"Nostrum.Api.join_thread/1","ref":"Nostrum.Api.html#join_thread/1"},{"type":"function","doc":"Leaves a guild.\n\nGuild to leave is specified by `guild_id`.","title":"Nostrum.Api.leave_guild/1","ref":"Nostrum.Api.html#leave_guild/1"},{"type":"function","doc":"Leave a thread, requires that the thread is not archived.","title":"Nostrum.Api.leave_thread/1","ref":"Nostrum.Api.html#leave_thread/1"},{"type":"function","doc":"Gets a list of emojis for a given guild.\n\nThis endpoint requires the `MANAGE_EMOJIS` permission.\n\nIf successful, returns `{:ok, emojis}`. Otherwise, returns `t:Nostrum.Api.error/0`.","title":"Nostrum.Api.list_guild_emojis/1","ref":"Nostrum.Api.html#list_guild_emojis/1"},{"type":"function","doc":"Same as `list_guild_emojis/1`, but raises `Nostrum.Error.ApiError` in case of failure.","title":"Nostrum.Api.list_guild_emojis!/1","ref":"Nostrum.Api.html#list_guild_emojis!/1"},{"type":"function","doc":"Gets a list of a guild's members.\n\nIf successful, returns `{:ok, members}`. Otherwise, returns a `t:Nostrum.Api.error/0`.","title":"Nostrum.Api.list_guild_members/2","ref":"Nostrum.Api.html#list_guild_members/2"},{"type":"function","doc":"* `:limit` (integer) - max number of members to return (1-1000) (default: 1)\n * `:after` (`t:Nostrum.Struct.User.id/0`) - the highest user id in the previous page (default: 0)","title":"Options - Nostrum.Api.list_guild_members/2","ref":"Nostrum.Api.html#list_guild_members/2-options"},{"type":"function","doc":"```elixir\nNostrum.Api.list_guild_members(41771983423143937, limit: 1)\n```","title":"Examples - Nostrum.Api.list_guild_members/2","ref":"Nostrum.Api.html#list_guild_members/2-examples"},{"type":"function","doc":"Same as `list_guild_members/2`, but raises `Nostrum.Error.ApiError` in case of failure.","title":"Nostrum.Api.list_guild_members!/2","ref":"Nostrum.Api.html#list_guild_members!/2"},{"type":"function","doc":"List all stickers in the provided guild.\n\nReturns a list of `t:Nostrum.Struct.Sticker.t/0`.","title":"Nostrum.Api.list_guild_stickers/1","ref":"Nostrum.Api.html#list_guild_stickers/1"},{"type":"function","doc":"Return all active threads for the current guild.\n\nResponse body is a map with the following keys:\n- `threads`: A list of channel objects.\n- `members`: A list of `ThreadMember` objects, one for each returned thread the current user has joined.","title":"Nostrum.Api.list_guild_threads/1","ref":"Nostrum.Api.html#list_guild_threads/1"},{"type":"function","doc":"Same as `list_public_archived_threads/2`, but only returns private threads that the current user has joined.","title":"Nostrum.Api.list_joined_private_archived_threads/2","ref":"Nostrum.Api.html#list_joined_private_archived_threads/2"},{"type":"function","doc":"Same as `list_public_archived_threads/2`, but for private threads instead of public.","title":"Nostrum.Api.list_private_archived_threads/2","ref":"Nostrum.Api.html#list_private_archived_threads/2"},{"type":"function","doc":"Returns a list of archived threads for a given channel.\n\nThreads are sorted by the `archive_timestamp` field, in descending order.","title":"Nostrum.Api.list_public_archived_threads/2","ref":"Nostrum.Api.html#list_public_archived_threads/2"},{"type":"function","doc":"Response body is a map with the following keys:\n- `threads`: A list of channel objects.\n- `members`: A list of `ThreadMember` objects, one for each returned thread the current user has joined.\n- `has_more`: A boolean indicating whether there are more archived threads that can be fetched.","title":"Response body - Nostrum.Api.list_public_archived_threads/2","ref":"Nostrum.Api.html#list_public_archived_threads/2-response-body"},{"type":"function","doc":"- `before`: Returns threads before this timestamp, can be either a `DateTime` or [ISO8601 timestamp](`DateTime.to_iso8601/3`).\n- `limit`: Optional maximum number of threads to return.","title":"Options - Nostrum.Api.list_public_archived_threads/2","ref":"Nostrum.Api.html#list_public_archived_threads/2-options"},{"type":"function","doc":"Gets a list of voice regions.","title":"Nostrum.Api.list_voice_regions/0","ref":"Nostrum.Api.html#list_voice_regions/0"},{"type":"function","doc":"Modifies a channel's settings.\n\nAn optional `reason` can be given for the guild audit log.\n\nIf a `t:Nostrum.Struct.Channel.guild_channel/0` is being modified, this\nendpoint requires the `MANAGE_CHANNEL` permission. It fires a\n`t:Nostrum.Consumer.channel_update/0` event. If a\n`t:Nostrum.Struct.Channel.guild_category_channel/0` is being modified, then this\nendpoint fires multiple `t:Nostrum.Consumer.channel_update/0` events.\n\nIf successful, returns `{:ok, channel}`. Otherwise, returns a `t:Nostrum.Api.error/0`.","title":"Nostrum.Api.modify_channel/3","ref":"Nostrum.Api.html#modify_channel/3"},{"type":"function","doc":"* `:name` (string) - 2-100 character channel name\n * `:position` (integer) - the position of the channel in the left-hand listing\n * `:topic` (string) (`t:Nostrum.Struct.Channel.text_channel/0` only) -\n 0-1024 character channel topic\n * `:nsfw` (boolean) (`t:Nostrum.Struct.Channel.text_channel/0` only) -\n if the channel is nsfw\n * `:bitrate` (integer) (`t:Nostrum.Struct.Channel.voice_channel/0` only) -\n the bitrate (in bits) of the voice channel; 8000 to 96000 (128000 for VIP servers)\n * `:user_limit` (integer) (`t:Nostrum.Struct.Channel.voice_channel/0` only) -\n the user limit of the voice channel; 0 refers to no limit, 1 to 99 refers to a user limit\n * `:permission_overwrites` (list of `t:Nostrum.Struct.Overwrite.t/0` or equivalent map) -\n channel or category-specific permissions\n * `:parent_id` (`t:Nostrum.Struct.Channel.id/0`) (`t:Nostrum.Struct.Channel.guild_channel/0` only) -\n id of the new parent category for a channel","title":"Options - Nostrum.Api.modify_channel/3","ref":"Nostrum.Api.html#modify_channel/3-options"},{"type":"function","doc":"```elixir\nNostrum.Api.modify_channel(41771983423143933, name: \"elixir-nostrum\", topic: \"nostrum discussion\")\n{:ok, %Nostrum.Struct.Channel{id: 41771983423143933, name: \"elixir-nostrum\", topic: \"nostrum discussion\"}}\n\nNostrum.Api.modify_channel(41771983423143933)\n{:ok, %Nostrum.Struct.Channel{id: 41771983423143933}}\n```","title":"Examples - Nostrum.Api.modify_channel/3","ref":"Nostrum.Api.html#modify_channel/3-examples"},{"type":"function","doc":"Same as `modify_channel/2`, but raises `Nostrum.Error.ApiError` in case of failure.","title":"Nostrum.Api.modify_channel!/3","ref":"Nostrum.Api.html#modify_channel!/3"},{"type":"function","doc":"Changes the username or avatar of the current user.","title":"Nostrum.Api.modify_current_user/1","ref":"Nostrum.Api.html#modify_current_user/1"},{"type":"function","doc":"* `:username` (string) - new username\n * `:avatar` (string) - the user's avatar as [avatar data](https://discord.com/developers/docs/resources/user#avatar-data)","title":"Options - Nostrum.Api.modify_current_user/1","ref":"Nostrum.Api.html#modify_current_user/1-options"},{"type":"function","doc":"```elixir\nNostrum.Api.modify_current_user(avatar: \"data:image/jpeg;base64,YXl5IGJieSB1IGx1a2luIDQgc3VtIGZ1az8=\")\n```","title":"Examples - Nostrum.Api.modify_current_user/1","ref":"Nostrum.Api.html#modify_current_user/1-examples"},{"type":"function","doc":"Same as `modify_current_user/1`, but raises `Nostrum.Error.ApiError` in case of failure.","title":"Nostrum.Api.modify_current_user!/1","ref":"Nostrum.Api.html#modify_current_user!/1"},{"type":"function","doc":"Modifies the nickname of the current user in a guild.\n\nIf successful, returns `{:ok, %{nick: nick}}`. Otherwise, returns a `t:Nostrum.Api.error/0`.","title":"Nostrum.Api.modify_current_user_nick/2","ref":"Nostrum.Api.html#modify_current_user_nick/2"},{"type":"function","doc":"* `:nick` (string) - value to set users nickname to","title":"Options - Nostrum.Api.modify_current_user_nick/2","ref":"Nostrum.Api.html#modify_current_user_nick/2-options"},{"type":"function","doc":"```elixir\nNostrum.Api.modify_current_user_nick(41771983423143937, nick: \"Nostrum\")\n{:ok, %{nick: \"Nostrum\"}}\n```","title":"Examples - Nostrum.Api.modify_current_user_nick/2","ref":"Nostrum.Api.html#modify_current_user_nick/2-examples"},{"type":"function","doc":"Same as `modify_current_user_nick/2`, but raises `Nostrum.Error.ApiError` in case of failure.","title":"Nostrum.Api.modify_current_user_nick!/2","ref":"Nostrum.Api.html#modify_current_user_nick!/2"},{"type":"function","doc":"Modifies a guild's settings.\n\nThis endpoint requires the `MANAGE_GUILD` permission. It fires the\n`t:Nostrum.Consumer.guild_update/0` event.\n\nAn optional `reason` can be provided for the audit log.\n\nIf successful, returns `{:ok, guild}`. Otherwise, returns a `t:Nostrum.Api.error/0`.","title":"Nostrum.Api.modify_guild/3","ref":"Nostrum.Api.html#modify_guild/3"},{"type":"function","doc":"* `:name` (string) - guild name\n * `:region` (string) - guild voice region id\n * `:verification_level` (integer) - verification level\n * `:default_message_notifications` (integer) - default message\n notification level\n * `:explicit_content_filter` (integer) - explicit content filter level\n * `:afk_channel_id` (`t:Nostrum.Snowflake.t/0`) - id for afk channel\n * `:afk_timeout` (integer) - afk timeout in seconds\n * `:icon` (base64 data URI) - 128x128 jpeg image for the guild icon\n * `:owner_id` (`t:Nostrum.Snowflake.t/0`) - user id to transfer\n guild ownership to (must be owner)\n * `:splash` (base64 data URI) - 128x128 jpeg image for the guild splash\n (VIP only)\n * `:system_channel_id` (`t:Nostrum.Snowflake.t/0`) - the id of the\n channel to which system messages are sent\n * `:rules_channel_id` (`t:Nostrum.Snowflake.t/0`) - the id of the channel that\n is used for rules in public guilds\n * `:public_updates_channel_id` (`t:Nostrum.Snowflake.t/0`) - the id of the channel\n where admins and moderators receive notices from Discord in public guilds","title":"Options - Nostrum.Api.modify_guild/3","ref":"Nostrum.Api.html#modify_guild/3-options"},{"type":"function","doc":"```elixir\nNostrum.Api.modify_guild(451824027976073216, name: \"Nose Drum\")\n{:ok, %Nostrum.Struct.Guild{id: 451824027976073216, name: \"Nose Drum\", ...}}\n```","title":"Examples - Nostrum.Api.modify_guild/3","ref":"Nostrum.Api.html#modify_guild/3-examples"},{"type":"function","doc":"Same as `modify_guild/2`, but raises `Nostrum.Error.ApiError` in case of failure.","title":"Nostrum.Api.modify_guild!/2","ref":"Nostrum.Api.html#modify_guild!/2"},{"type":"function","doc":"Modify an auto-moderation rule for a guild.\n\nTakes the same options as `create_guild_auto_moderation_rule/2`, however all fields are optional.","title":"Nostrum.Api.modify_guild_auto_moderation_rule/3","ref":"Nostrum.Api.html#modify_guild_auto_moderation_rule/3"},{"type":"function","doc":"Reorders a guild's channels.\n\nThis endpoint requires the `MANAGE_CHANNELS` permission. It fires multiple\n`t:Nostrum.Consumer.channel_update/0` events.\n\nIf successful, returns `{:ok, channels}`. Otherwise, returns a `t:Nostrum.Api.error/0`.\n\n`positions` is a list of maps that each map a channel id with a position.","title":"Nostrum.Api.modify_guild_channel_positions/2","ref":"Nostrum.Api.html#modify_guild_channel_positions/2"},{"type":"function","doc":"```elixir\nNostrum.Api.modify_guild_channel_positions(279093381723062272, [%{id: 351500354581692420, position: 2}])\n{:ok}\n```","title":"Examples - Nostrum.Api.modify_guild_channel_positions/2","ref":"Nostrum.Api.html#modify_guild_channel_positions/2-examples"},{"type":"function","doc":"Same as `modify_guild_channel_positions/2`, but raises `Nostrum.Error.ApiError` in case of failure.","title":"Nostrum.Api.modify_guild_channel_positions!/2","ref":"Nostrum.Api.html#modify_guild_channel_positions!/2"},{"type":"function","doc":"Modify the given emoji.\n\nThis endpoint requires the `MANAGE_EMOJIS` permission. It fires a\n`t:Nostrum.Consumer.guild_emojis_update/0` event.\n\nAn optional `reason` can be provided for the audit log.\n\nIf successful, returns `{:ok, emoji}`. Otherwise, returns `t:Nostrum.Api.error/0`.","title":"Nostrum.Api.modify_guild_emoji/4","ref":"Nostrum.Api.html#modify_guild_emoji/4"},{"type":"function","doc":"* `:name` (string) - name of the emoji\n * `:roles` (list of `t:Nostrum.Snowflake.t/0`) - roles to which this emoji will be whitelisted","title":"Options - Nostrum.Api.modify_guild_emoji/4","ref":"Nostrum.Api.html#modify_guild_emoji/4-options"},{"type":"function","doc":"```elixir\nNostrum.Api.modify_guild_emoji(43189401384091, 4314301984301, name: \"elixir\", roles: [])\n```","title":"Examples - Nostrum.Api.modify_guild_emoji/4","ref":"Nostrum.Api.html#modify_guild_emoji/4-examples"},{"type":"function","doc":"Same as `modify_guild_emoji/3`, but raises `Nostrum.Error.ApiError` in case of failure.","title":"Nostrum.Api.modify_guild_emoji!/4","ref":"Nostrum.Api.html#modify_guild_emoji!/4"},{"type":"function","doc":"Changes the settings and behaviours for a guild integeration.\n\nIntegration to modify is specified by `guild_id` and `integeration_id`.\n\n`options` is a map with the following keys:\n * `expire_behavior` - Expiry behavior.\n * `expire_grace_period` - Period where the integration will ignore elapsed subs.\n * `enable_emoticons` - Whether emoticons should be synced.","title":"Nostrum.Api.modify_guild_integrations/3","ref":"Nostrum.Api.html#modify_guild_integrations/3"},{"type":"function","doc":"Modifies a guild member's attributes.\n\nThis endpoint fires the `t:Nostrum.Consumer.guild_member_update/0` event.\nIt situationally requires the `MANAGE_NICKNAMES`, `MANAGE_ROLES`,\n`MUTE_MEMBERS`, `DEAFEN_MEMBERS`, and `MOVE_MEMBERS` permissions.\n\nIf successful, returns `{:ok, member}`. Otherwise, returns a `t:Nostrum.Api.error/0`.\n\nAn optional `reason` argument can be given for the audit log.","title":"Nostrum.Api.modify_guild_member/4","ref":"Nostrum.Api.html#modify_guild_member/4"},{"type":"function","doc":"* `:nick` (string) - value to set users nickname to\n * `:roles` (list of `t:Nostrum.Snowflake.t/0`) - array of role ids the member is assigned\n * `:mute` (boolean) - if the user is muted\n * `:deaf` (boolean) - if the user is deafened\n * `:channel_id` (`t:Nostrum.Snowflake.t/0`) - id of channel to move user to (if they are connected to voice)\n * `:communication_disabled_until` (`t:DateTime.t/0` or `nil`) - datetime to disable user communication (timeout) until, or `nil` to remove timeout.","title":"Options - Nostrum.Api.modify_guild_member/4","ref":"Nostrum.Api.html#modify_guild_member/4-options"},{"type":"function","doc":"```elixir\nNostrum.Api.modify_guild_member(41771983423143937, 637162356451, nick: \"Nostrum\")\n{:ok, %Nostrum.Struct.Member{}}\n```","title":"Examples - Nostrum.Api.modify_guild_member/4","ref":"Nostrum.Api.html#modify_guild_member/4-examples"},{"type":"function","doc":"Same as `modify_guild_member/3`, but raises `Nostrum.Error.ApiError` in case of failure.","title":"Nostrum.Api.modify_guild_member!/4","ref":"Nostrum.Api.html#modify_guild_member!/4"},{"type":"function","doc":"Modifies a guild role.\n\nThis endpoint requires the `MANAGE_ROLES` permission. It fires a\n`t:Nostrum.Consumer.guild_role_update/0` event.\n\nAn optional `reason` can be specified for the audit log.\n\nIf successful, returns `{:ok, role}`. Otherwise, returns a `t:Nostrum.Api.error/0`.","title":"Nostrum.Api.modify_guild_role/4","ref":"Nostrum.Api.html#modify_guild_role/4"},{"type":"function","doc":"* `:name` (string) - name of the role\n * `:permissions` (integer) - bitwise of the enabled/disabled permissions\n * `:color` (integer) - RGB color value (default: 0)\n * `:hoist` (boolean) - whether the role should be displayed separately in the sidebar\n * `:mentionable` (boolean) - whether the role should be mentionable","title":"Options - Nostrum.Api.modify_guild_role/4","ref":"Nostrum.Api.html#modify_guild_role/4-options"},{"type":"function","doc":"```elixir\nNostrum.Api.modify_guild_role(41771983423143937, 392817238471936, hoist: false, name: \"foo-bar\")\n```","title":"Examples - Nostrum.Api.modify_guild_role/4","ref":"Nostrum.Api.html#modify_guild_role/4-examples"},{"type":"function","doc":"Same as `modify_guild_role/3`, but raises `Nostrum.Error.ApiError` in case of failure.","title":"Nostrum.Api.modify_guild_role!/4","ref":"Nostrum.Api.html#modify_guild_role!/4"},{"type":"function","doc":"Reorders a guild's roles.\n\nThis endpoint requires the `MANAGE_ROLES` permission. It fires multiple\n`t:Nostrum.Consumer.guild_role_update/0` events.\n\nIf successful, returns `{:ok, roles}`. Otherwise, returns a `t:Nostrum.Api.error/0`.\n\n`positions` is a list of maps that each map a role id with a position.","title":"Nostrum.Api.modify_guild_role_positions/3","ref":"Nostrum.Api.html#modify_guild_role_positions/3"},{"type":"function","doc":"```elixir\nNostrum.Api.modify_guild_role_positions(41771983423143937, [%{id: 41771983423143936, position: 2}])\n```","title":"Examples - Nostrum.Api.modify_guild_role_positions/3","ref":"Nostrum.Api.html#modify_guild_role_positions/3-examples"},{"type":"function","doc":"Same as `modify_guild_role_positions/2`, but raises `Nostrum.Error.ApiError` in case of failure.","title":"Nostrum.Api.modify_guild_role_positions!/3","ref":"Nostrum.Api.html#modify_guild_role_positions!/3"},{"type":"function","doc":"Modify a scheduled event for a guild.\n\nOptions are the same as for `create_guild_scheduled_event/2` except all fields are optional,\nwith the additional optional integer field `:status` which can be one of:\n\n * `1` - `SCHEDULED`\n * `2` - `ACTIVE`\n * `3` - `COMPLETED`\n * `4` - `CANCELLED`\n\nCopied from the official documentation:\n* If updating entity_type to `EXTERNAL`:\n * `channel_id` is required and must be set to null\n * `entity_metadata` with a `location` field must be provided\n * `scheduled_end_time` must be provided","title":"Nostrum.Api.modify_guild_scheduled_event/4","ref":"Nostrum.Api.html#modify_guild_scheduled_event/4"},{"type":"function","doc":"Modify a guild sticker with the specified ID.\n\nPass in a map of properties to update, with any of the following keys:\n\n- `name`: Name of the sticker (2-30 characters)\n- `description`: Description of the sticker (2-100 characters)\n- `tags`: Autocomplete/suggestion tags for the sticker (max 200 characters)\n\nReturns an updated sticker on update completion.","title":"Nostrum.Api.modify_guild_sticker/3","ref":"Nostrum.Api.html#modify_guild_sticker/3"},{"type":"function","doc":"Modifies a guild embed.","title":"Nostrum.Api.modify_guild_widget/2","ref":"Nostrum.Api.html#modify_guild_widget/2"},{"type":"function","doc":"Modifies a webhook.","title":"Nostrum.Api.modify_webhook/3","ref":"Nostrum.Api.html#modify_webhook/3"},{"type":"function","doc":"- `webhook_id` - Id of the webhook to modify.\n - `args` - Map with the following *optional* keys:\n - `name` - Name of the webhook.\n - `avatar` - Base64 128x128 jpeg image for the default avatar.\n - `reason` - An optional reason for the guild audit log.","title":"Parameters - Nostrum.Api.modify_webhook/3","ref":"Nostrum.Api.html#modify_webhook/3-parameters"},{"type":"function","doc":"Modifies a webhook with a token.\n\nThis method is exactly like `modify_webhook/1` but does not require\nauthentication.","title":"Nostrum.Api.modify_webhook_with_token/4","ref":"Nostrum.Api.html#modify_webhook_with_token/4"},{"type":"function","doc":"- `webhook_id` - Id of the webhook to modify.\n - `webhook_token` - Token of the webhook to get.\n - `args` - Map with the following *optional* keys:\n - `name` - Name of the webhook.\n - `avatar` - Base64 128x128 jpeg image for the default avatar.\n - `reason` - An optional reason for the guild audit log.","title":"Parameters - Nostrum.Api.modify_webhook_with_token/4","ref":"Nostrum.Api.html#modify_webhook_with_token/4-parameters"},{"type":"function","doc":"Removes a ban for a user.\n\nUser to unban is specified by `guild_id` and `user_id`.\nAn optional `reason` can be specified for the audit log.","title":"Nostrum.Api.remove_guild_ban/3","ref":"Nostrum.Api.html#remove_guild_ban/3"},{"type":"function","doc":"Removes a member from a guild.\n\nThis event requires the `KICK_MEMBERS` permission. It fires a\n`t:Nostrum.Consumer.guild_member_remove/0` event.\n\nAn optional reason can be provided for the audit log with `reason`.\n\nIf successful, returns `{:ok}`. Otherwise, returns a `t:Nostrum.Api.error/0`.","title":"Nostrum.Api.remove_guild_member/3","ref":"Nostrum.Api.html#remove_guild_member/3"},{"type":"function","doc":"```elixir\nNostrum.Api.remove_guild_member(1453827904102291, 18739485766253)\n{:ok}\n```","title":"Examples - Nostrum.Api.remove_guild_member/3","ref":"Nostrum.Api.html#remove_guild_member/3-examples"},{"type":"function","doc":"Same as `remove_guild_member/2`, but raises `Nostrum.Error.ApiError` in case of failure.","title":"Nostrum.Api.remove_guild_member!/3","ref":"Nostrum.Api.html#remove_guild_member!/3"},{"type":"function","doc":"Removes a role from a member.\n\nRole to remove is specified by `role_id`.\nUser to remove role from is specified by `guild_id` and `user_id`.\nAn optional `reason` can be given for the audit log.","title":"Nostrum.Api.remove_guild_member_role/4","ref":"Nostrum.Api.html#remove_guild_member_role/4"},{"type":"function","doc":"Removes another user from a thread, requires that the thread is not archived.\n\nAlso requires the `MANAGE_THREADS` permission, or the creator of the thread if the thread is private.","title":"Nostrum.Api.remove_thread_member/2","ref":"Nostrum.Api.html#remove_thread_member/2"},{"type":"function","doc":"","title":"Nostrum.Api.request/1","ref":"Nostrum.Api.html#request/1"},{"type":"function","doc":"","title":"Nostrum.Api.request/4","ref":"Nostrum.Api.html#request/4"},{"type":"function","doc":"","title":"Nostrum.Api.request_multipart/4","ref":"Nostrum.Api.html#request_multipart/4"},{"type":"function","doc":"Create a thread on a channel without an associated message.\n\nIf successful, returns `{:ok, Channel}`. Otherwise returns a `t:Nostrum.Api.error/0`.\n\nAn optional `reason` argument can be given for the audit log.","title":"Nostrum.Api.start_thread/3","ref":"Nostrum.Api.html#start_thread/3"},{"type":"function","doc":"- `name`: Name of the thread, max 100 characters.\n- `type`: Type of thread, can be either 11 (`GUILD_PUBLIC_THREAD`) or 12 (`GUILD_PRIVATE_THREAD`).\n- `auto_archive_duration`: Duration in minutes to auto-archive the thread after it has been inactive, can be set to 60, 1440, 4320, or 10080.\n- `invitable`: whether non-moderators can add other non-moderators to a thread; only available when creating a private thread defaults to `false`.\n- `rate_limit_per_user`: Rate limit per user in seconds, can be set to any value in `0..21600`.","title":"Options - Nostrum.Api.start_thread/3","ref":"Nostrum.Api.html#start_thread/3-options"},{"type":"function","doc":"Create a new thread in a forum channel.\n\nIf successful, returns `{:ok, Channel}`. Otherwise returns a `t:Nostrum.Api.error/0`.\n\nAn optional `reason` argument can be given for the audit log.","title":"Nostrum.Api.start_thread_in_forum_channel/3","ref":"Nostrum.Api.html#start_thread_in_forum_channel/3"},{"type":"function","doc":"- `name`: Name of the thread, max 100 characters.\n- `auto_archive_duration`: Duration in minutes to auto-archive the thread after it has been inactive, can be set to 60, 1440, 4320, or 10080.\n- `rate_limit_per_user`: Rate limit per user in seconds, can be set to any value in `0..21600`.\n- `applied_tags`: An array of tag ids to apply to the thread.\n- `message`: The first message in the created thread.","title":"Options - Nostrum.Api.start_thread_in_forum_channel/3","ref":"Nostrum.Api.html#start_thread_in_forum_channel/3-options"},{"type":"function","doc":"- `content`: The content of the message.\n- `embeds`: A list of embeds.\n- `allowed_mentions`: Allowed mentions object.\n- `components`: A list of components.\n- `sticker_ids`: A list of sticker ids.\n- `:files` - a list of files where each element is the same format as the `:file` option. If both\n `:file` and `:files` are specified, `:file` will be prepended to the `:files` list.\n\nAt least one of `content`, `embeds`, `sticker_ids`, or `files` must be specified.","title":"Thread Message Options - Nostrum.Api.start_thread_in_forum_channel/3","ref":"Nostrum.Api.html#start_thread_in_forum_channel/3-thread-message-options"},{"type":"function","doc":"Create a thread on a channel message.\n\nThe `thread_id` will be the same as the id of the message, as such no message can have more than one thread.\n\nIf successful, returns `{:ok, Channel}`. Otherwise returns a `t:Nostrum.Api.error/0`.\n\nAn optional `reason` argument can be given for the audit log.","title":"Nostrum.Api.start_thread_with_message/4","ref":"Nostrum.Api.html#start_thread_with_message/4"},{"type":"function","doc":"- `name`: Name of the thread, max 100 characters.\n- `auto_archive_duration`: Duration in minutes to auto-archive the thread after it has been inactive, can be set to 60, 1440, 4320, or 10080.\n- `rate_limit_per_user`: Rate limit per user in seconds, can be set to any value in `0..21600`.","title":"Options - Nostrum.Api.start_thread_with_message/4","ref":"Nostrum.Api.html#start_thread_with_message/4-options"},{"type":"function","doc":"Triggers the typing indicator.\n\nTriggers the typing indicator in the channel specified by `channel_id`.\nThe typing indicator lasts for about 8 seconds and then automatically stops.\n\nReturns `{:ok}` if successful. `error` otherwise.","title":"Nostrum.Api.start_typing/1","ref":"Nostrum.Api.html#start_typing/1"},{"type":"function","doc":"Same as `start_typing/1`, but raises `Nostrum.Error.ApiError` in case of failure.","title":"Nostrum.Api.start_typing!/1","ref":"Nostrum.Api.html#start_typing!/1"},{"type":"function","doc":"Syncs a guild integration.\n\nIntegration to sync is specified by `guild_id` and `integeration_id`.","title":"Nostrum.Api.sync_guild_integrations/2","ref":"Nostrum.Api.html#sync_guild_integrations/2"},{"type":"function","doc":"Updates the status of the bot for a certain shard.","title":"Nostrum.Api.update_shard_status/5","ref":"Nostrum.Api.html#update_shard_status/5"},{"type":"function","doc":"- `pid` - Pid of the shard.\n - `status` - Status of the bot.\n - `game` - The 'playing' text of the bot. Empty will clear.\n - `type` - The type of status to show. 0 (Playing) | 1 (Streaming) | 2 (Listening) | 3 (Watching)\n - `stream` - URL of twitch.tv stream","title":"Parameters - Nostrum.Api.update_shard_status/5","ref":"Nostrum.Api.html#update_shard_status/5-parameters"},{"type":"function","doc":"Updates the status of the bot for all shards.\n\nSee `update_shard_status/5` for usage.","title":"Nostrum.Api.update_status/4","ref":"Nostrum.Api.html#update_status/4"},{"type":"function","doc":"Joins, moves, or disconnects the bot from a voice channel.\n\nThe correct shard to send the update to will be inferred from the\n`guild_id`. If a corresponding `guild_id` is not found a cache error will be\nraised.\n\nTo disconnect from a channel, `channel_id` should be set to `nil`.","title":"Nostrum.Api.update_voice_state/4","ref":"Nostrum.Api.html#update_voice_state/4"},{"type":"type","doc":"Represents which mentions to allow in a message.\n\nThis can be sent on its own or in a list to allow multiple types of\nmentions in a message, see `t:allowed_mentions/0` for details.","title":"Nostrum.Api.allowed_mention/0","ref":"Nostrum.Api.html#t:allowed_mention/0"},{"type":"type","doc":"Represents mentions to allow in a message.\n\nWith this option you can control when content from a message should trigger a ping.\nConsider using this option when you are going to display user generated content.","title":"Nostrum.Api.allowed_mentions/0","ref":"Nostrum.Api.html#t:allowed_mentions/0"},{"type":"type","doc":"* `:all` (default) - Ping everything as usual\n * `:none` - Nobody will be pinged\n * `:everyone` - Allows to ping @here and @everyone\n * `:users` - Allows to ping users\n * `:roles` - Allows to ping roles\n * `{:users, list}` - Allows to ping list of users. Can contain up to 100 ids of users.\n * `{:roles, list}` - Allows to ping list of roles. Can contain up to 100 ids of roles.\n * list - a list containing the values above.","title":"Allowed values - Nostrum.Api.allowed_mentions/0","ref":"Nostrum.Api.html#t:allowed_mentions/0-allowed-values"},{"type":"type","doc":"Represents an emoji for interacting with reaction endpoints.","title":"Nostrum.Api.emoji/0","ref":"Nostrum.Api.html#t:emoji/0"},{"type":"type","doc":"Represents a failed response from the API.\n\nThis occurs when `:gun` fails, or when the API doesn't respond with `200` or `204`.","title":"Nostrum.Api.error/0","ref":"Nostrum.Api.html#t:error/0"},{"type":"type","doc":"Represents a limit used to retrieve messages.\n\nInteger number of messages, or :infinity to retrieve all messages.","title":"Nostrum.Api.limit/0","ref":"Nostrum.Api.html#t:limit/0"},{"type":"type","doc":"Represents a tuple used to locate messages.\n\nThe first element of the tuple is an atom.\nThe second element will be a message_id as an integer.\nThe tuple can also be empty to search from the most recent message in the channel","title":"Nostrum.Api.locator/0","ref":"Nostrum.Api.html#t:locator/0"},{"type":"type","doc":"","title":"Nostrum.Api.matrix/0","ref":"Nostrum.Api.html#t:matrix/0"},{"type":"type","doc":"Represents optional parameters for Api functions.\n\nEach function has documentation regarding what parameters it\nsupports or needs.","title":"Nostrum.Api.options/0","ref":"Nostrum.Api.html#t:options/0"},{"type":"type","doc":"Represents different statuses the bot can have.\n\n - `:dnd` - Red circle.\n - `:idle` - Yellow circle.\n - `:online` - Green circle.\n - `:invisible` - The bot will appear offline.","title":"Nostrum.Api.status/0","ref":"Nostrum.Api.html#t:status/0"},{"type":"type","doc":"","title":"Nostrum.Api.thread_with_message_params/0","ref":"Nostrum.Api.html#t:thread_with_message_params/0"},{"type":"type","doc":"","title":"Nostrum.Api.thread_without_message_params/0","ref":"Nostrum.Api.html#t:thread_without_message_params/0"},{"type":"behaviour","doc":"Consumer process for gateway event handling.","title":"Nostrum.Consumer","ref":"Nostrum.Consumer.html"},{"type":"behaviour","doc":"Events are first ingested by nostrum's cache. Afterwards, they are sent to\nany subscribed consumers via `Nostrum.ConsumerGroup`.\n\nBy default, nostrum will start a process for each event. This gives us free\nparallelism and isolation. You therefore do not need to start more than one\nconsumer in your supervision tree. If you want to override this behaviour,\nimplement the `handle_info/2` function in your consumer. For reference, this\nis the default implementation:\n\n```elixir\n def handle_info({:event, event}, state) do\n Task.start_link(fn ->\n __MODULE__.handle_event(event)\n end)\n\n {:noreply, state}\n end\n```","title":"Consuming gateway events - Nostrum.Consumer","ref":"Nostrum.Consumer.html#module-consuming-gateway-events"},{"type":"behaviour","doc":"**Every process that is in a `Nostrum.ConsumerGroup` receives every event**:\nit is therefore not recommended to create multiple consumers if a single one\ncould accomplish the job.","title":"Running multiple consumers - Nostrum.Consumer","ref":"Nostrum.Consumer.html#module-running-multiple-consumers"},{"type":"behaviour","doc":"An example consumer could look as follows:\n\n```elixir\n# Sourced from examples/event_consumer.ex\ndefmodule ExampleSupervisor do\n use Supervisor\n\n def start_link(args) do\n Supervisor.start_link(__MODULE__, args, name: __MODULE__)\n end\n\n @impl true\n def init(_init_arg) do\n children = [ExampleConsumer]\n\n Supervisor.init(children, strategy: :one_for_one)\n end\nend\n\ndefmodule ExampleConsumer do\n use Nostrum.Consumer\n\n alias Nostrum.Api\n\n def handle_event({:MESSAGE_CREATE, msg, _ws_state}) do\n case msg.content do\n \"!sleep\" ->\n Api.create_message(msg.channel_id, \"Going to sleep...\")\n # This won't stop other events from being handled.\n Process.sleep(3000)\n\n \"!ping\" ->\n Api.create_message(msg.channel_id, \"pyongyang!\")\n\n \"!raise\" ->\n # This won't crash the entire Consumer.\n raise \"No problems here!\"\n\n _ ->\n :ignore\n end\n end\nend\n\n```\n\n> ### `use Nostrum.Consumer` {: .info}\n>\n> Using `Nostrum.Consumer` will:\n>\n> - `use GenServer` (as the consumer is built on `GenServer`)\n> - set the behaviour to `Nostrum.Consumer`\n> - define `child_spec/1`, `start_link/1` and `init/1` for the `GenServer` to\n> automatically join the `Nostrum.ConsumerGroup` on boot\n> - define `handle_info/2` to automatically dispatch any events to your\n> `c:handle_event/1` via a `Task`\n> - inject a default `handle_event/1` clause to ignore any unhandled events.","title":"Example consumer - Nostrum.Consumer","ref":"Nostrum.Consumer.html#module-example-consumer"},{"type":"callback","doc":"Callback used to handle events.","title":"Nostrum.Consumer.handle_event/1","ref":"Nostrum.Consumer.html#c:handle_event/1"},{"type":"callback","doc":"`event` is a tuple describing the event. The tuple will include information in\nthe following format:\n```elixir\n{event_name, {event_payload(s)}, WSState.t}\n```\n\nFor example, a message create will look like this\n```elixir\n{:MESSAGE_CREATE, Nostrum.Struct.Message.t, WSState.t}\n```\n\nIn some cases there will be multiple payloads when something is updated, so as\nto include the new and the old versions. In the event of there being two payloads,\nthe old payload will always be first, followed by the new payload.\n```elixir\n{:USER_UPDATE, {old_user :: Nostrum.Struct.User.t, new_user :: Nostrum.Struct.User.t}, WSState.t()}\n```\n\nFor a full listing of events, please see `t:Nostrum.Consumer.event/0`.","title":"Event - Nostrum.Consumer.handle_event/1","ref":"Nostrum.Consumer.html#c:handle_event/1-event"},{"type":"type","doc":"","title":"Nostrum.Consumer.auto_moderation_rule_create/0","ref":"Nostrum.Consumer.html#t:auto_moderation_rule_create/0"},{"type":"type","doc":"","title":"Nostrum.Consumer.auto_moderation_rule_delete/0","ref":"Nostrum.Consumer.html#t:auto_moderation_rule_delete/0"},{"type":"type","doc":"","title":"Nostrum.Consumer.auto_moderation_rule_execute/0","ref":"Nostrum.Consumer.html#t:auto_moderation_rule_execute/0"},{"type":"type","doc":"","title":"Nostrum.Consumer.auto_moderation_rule_update/0","ref":"Nostrum.Consumer.html#t:auto_moderation_rule_update/0"},{"type":"type","doc":"Dispatched when a channel is created.\n\nStarting from [API and Gateway V8](https://discord.com/developers/docs/change-log#api-and-gateway-v8),\nthis will never be sent for a DM.","title":"Nostrum.Consumer.channel_create/0","ref":"Nostrum.Consumer.html#t:channel_create/0"},{"type":"type","doc":"","title":"Nostrum.Consumer.channel_delete/0","ref":"Nostrum.Consumer.html#t:channel_delete/0"},{"type":"type","doc":"","title":"Nostrum.Consumer.channel_pins_ack/0","ref":"Nostrum.Consumer.html#t:channel_pins_ack/0"},{"type":"type","doc":"","title":"Nostrum.Consumer.channel_pins_update/0","ref":"Nostrum.Consumer.html#t:channel_pins_update/0"},{"type":"type","doc":"Dispatched when a channel is updated.\n\n`old_channel` will be `nil` when the pre-update channel could not be fetched from the cache.","title":"Nostrum.Consumer.channel_update/0","ref":"Nostrum.Consumer.html#t:channel_update/0"},{"type":"type","doc":"","title":"Nostrum.Consumer.event/0","ref":"Nostrum.Consumer.html#t:event/0"},{"type":"type","doc":"","title":"Nostrum.Consumer.guild_audit_log_entry_create/0","ref":"Nostrum.Consumer.html#t:guild_audit_log_entry_create/0"},{"type":"type","doc":"","title":"Nostrum.Consumer.guild_available/0","ref":"Nostrum.Consumer.html#t:guild_available/0"},{"type":"type","doc":"","title":"Nostrum.Consumer.guild_ban_add/0","ref":"Nostrum.Consumer.html#t:guild_ban_add/0"},{"type":"type","doc":"","title":"Nostrum.Consumer.guild_ban_remove/0","ref":"Nostrum.Consumer.html#t:guild_ban_remove/0"},{"type":"type","doc":"","title":"Nostrum.Consumer.guild_create/0","ref":"Nostrum.Consumer.html#t:guild_create/0"},{"type":"type","doc":"","title":"Nostrum.Consumer.guild_delete/0","ref":"Nostrum.Consumer.html#t:guild_delete/0"},{"type":"type","doc":"","title":"Nostrum.Consumer.guild_emojis_update/0","ref":"Nostrum.Consumer.html#t:guild_emojis_update/0"},{"type":"type","doc":"","title":"Nostrum.Consumer.guild_integrations_update/0","ref":"Nostrum.Consumer.html#t:guild_integrations_update/0"},{"type":"type","doc":"","title":"Nostrum.Consumer.guild_member_add/0","ref":"Nostrum.Consumer.html#t:guild_member_add/0"},{"type":"type","doc":"Dispatched when somebody leaves a guild.\n\nIn case the guild member intent is enabled but not the guild intent,\nnostrum may not cache the actual guild, and thus be unable to provide\nfull information about members leaving guilds. In that case, this event\nreceives the guild ID and a partial member object with the leaving user as\nprovided by Discord, but no information about the user's state on the guild.","title":"Nostrum.Consumer.guild_member_remove/0","ref":"Nostrum.Consumer.html#t:guild_member_remove/0"},{"type":"type","doc":"Dispatched when a guild member is updated.\n\n`old_member` will be `nil` when the pre-update member could not be fetched from the cache.","title":"Nostrum.Consumer.guild_member_update/0","ref":"Nostrum.Consumer.html#t:guild_member_update/0"},{"type":"type","doc":"","title":"Nostrum.Consumer.guild_members_chunk/0","ref":"Nostrum.Consumer.html#t:guild_members_chunk/0"},{"type":"type","doc":"","title":"Nostrum.Consumer.guild_role_create/0","ref":"Nostrum.Consumer.html#t:guild_role_create/0"},{"type":"type","doc":"","title":"Nostrum.Consumer.guild_role_delete/0","ref":"Nostrum.Consumer.html#t:guild_role_delete/0"},{"type":"type","doc":"Dispatched when a role on a guild is updated.\n\n`old_role` will be `nil` when the pre-update role could not be fetched from the cache.","title":"Nostrum.Consumer.guild_role_update/0","ref":"Nostrum.Consumer.html#t:guild_role_update/0"},{"type":"type","doc":"","title":"Nostrum.Consumer.guild_scheduled_event_create/0","ref":"Nostrum.Consumer.html#t:guild_scheduled_event_create/0"},{"type":"type","doc":"","title":"Nostrum.Consumer.guild_scheduled_event_delete/0","ref":"Nostrum.Consumer.html#t:guild_scheduled_event_delete/0"},{"type":"type","doc":"","title":"Nostrum.Consumer.guild_scheduled_event_update/0","ref":"Nostrum.Consumer.html#t:guild_scheduled_event_update/0"},{"type":"type","doc":"","title":"Nostrum.Consumer.guild_scheduled_event_user_add/0","ref":"Nostrum.Consumer.html#t:guild_scheduled_event_user_add/0"},{"type":"type","doc":"","title":"Nostrum.Consumer.guild_scheduled_event_user_remove/0","ref":"Nostrum.Consumer.html#t:guild_scheduled_event_user_remove/0"},{"type":"type","doc":"","title":"Nostrum.Consumer.guild_stickers_update/0","ref":"Nostrum.Consumer.html#t:guild_stickers_update/0"},{"type":"type","doc":"","title":"Nostrum.Consumer.guild_unavailable/0","ref":"Nostrum.Consumer.html#t:guild_unavailable/0"},{"type":"type","doc":"","title":"Nostrum.Consumer.guild_update/0","ref":"Nostrum.Consumer.html#t:guild_update/0"},{"type":"type","doc":"","title":"Nostrum.Consumer.integration_create/0","ref":"Nostrum.Consumer.html#t:integration_create/0"},{"type":"type","doc":"","title":"Nostrum.Consumer.integration_delete/0","ref":"Nostrum.Consumer.html#t:integration_delete/0"},{"type":"type","doc":"Different from `t:guild_integrations_update/0` in that more than only the `guild_id` is provided","title":"Nostrum.Consumer.integration_update/0","ref":"Nostrum.Consumer.html#t:integration_update/0"},{"type":"type","doc":"","title":"Nostrum.Consumer.interaction_create/0","ref":"Nostrum.Consumer.html#t:interaction_create/0"},{"type":"type","doc":"","title":"Nostrum.Consumer.message_ack/0","ref":"Nostrum.Consumer.html#t:message_ack/0"},{"type":"type","doc":"","title":"Nostrum.Consumer.message_create/0","ref":"Nostrum.Consumer.html#t:message_create/0"},{"type":"type","doc":"","title":"Nostrum.Consumer.message_delete/0","ref":"Nostrum.Consumer.html#t:message_delete/0"},{"type":"type","doc":"","title":"Nostrum.Consumer.message_delete_bulk/0","ref":"Nostrum.Consumer.html#t:message_delete_bulk/0"},{"type":"type","doc":"Dispatched when a user adds a vote to a poll.","title":"Nostrum.Consumer.message_poll_vote_add/0","ref":"Nostrum.Consumer.html#t:message_poll_vote_add/0"},{"type":"type","doc":"Dispatched when a user removes a vote from a poll.","title":"Nostrum.Consumer.message_poll_vote_remove/0","ref":"Nostrum.Consumer.html#t:message_poll_vote_remove/0"},{"type":"type","doc":"","title":"Nostrum.Consumer.message_reaction_add/0","ref":"Nostrum.Consumer.html#t:message_reaction_add/0"},{"type":"type","doc":"","title":"Nostrum.Consumer.message_reaction_remove/0","ref":"Nostrum.Consumer.html#t:message_reaction_remove/0"},{"type":"type","doc":"","title":"Nostrum.Consumer.message_reaction_remove_all/0","ref":"Nostrum.Consumer.html#t:message_reaction_remove_all/0"},{"type":"type","doc":"","title":"Nostrum.Consumer.message_reaction_remove_emoji/0","ref":"Nostrum.Consumer.html#t:message_reaction_remove_emoji/0"},{"type":"type","doc":"","title":"Nostrum.Consumer.message_update/0","ref":"Nostrum.Consumer.html#t:message_update/0"},{"type":"type","doc":"Dispatched when a user's presence is updated.\n\n`old_presence` will be `nil` when the pre-update presence could not be fetched from the cache.","title":"Nostrum.Consumer.presence_update/0","ref":"Nostrum.Consumer.html#t:presence_update/0"},{"type":"type","doc":"","title":"Nostrum.Consumer.ready/0","ref":"Nostrum.Consumer.html#t:ready/0"},{"type":"type","doc":"","title":"Nostrum.Consumer.resumed/0","ref":"Nostrum.Consumer.html#t:resumed/0"},{"type":"type","doc":"Dispatched when a thread is created or when added to a private thread","title":"Nostrum.Consumer.thread_create/0","ref":"Nostrum.Consumer.html#t:thread_create/0"},{"type":"type","doc":"Dispatched when a thread is deleted, if the thread was cached, contains the original thread, otherwise contains `:noop`","title":"Nostrum.Consumer.thread_delete/0","ref":"Nostrum.Consumer.html#t:thread_delete/0"},{"type":"type","doc":"Dispatched when gaining access to a channel","title":"Nostrum.Consumer.thread_list_sync/0","ref":"Nostrum.Consumer.html#t:thread_list_sync/0"},{"type":"type","doc":"Dispatched when a `ThreadMember` for the current user is updated","title":"Nostrum.Consumer.thread_member_update/0","ref":"Nostrum.Consumer.html#t:thread_member_update/0"},{"type":"type","doc":"Dispatched when member(s) are added or removed from a thread","title":"Nostrum.Consumer.thread_members_update/0","ref":"Nostrum.Consumer.html#t:thread_members_update/0"},{"type":"type","doc":"","title":"Nostrum.Consumer.thread_update/0","ref":"Nostrum.Consumer.html#t:thread_update/0"},{"type":"type","doc":"","title":"Nostrum.Consumer.typing_start/0","ref":"Nostrum.Consumer.html#t:typing_start/0"},{"type":"type","doc":"","title":"Nostrum.Consumer.user_settings_update/0","ref":"Nostrum.Consumer.html#t:user_settings_update/0"},{"type":"type","doc":"Dispatched when a user is updated.\n\n`old_user` will be `nil` when the pre-update user could not be fetched from the cache.","title":"Nostrum.Consumer.user_update/0","ref":"Nostrum.Consumer.html#t:user_update/0"},{"type":"type","doc":"Dispatched when async listening is enabled and another user is actively speaking\n\nThe second tuple element is an `t:Nostrum.Voice.rtp_opus/0`, which is a tuple with\nRTP header information and an opus packet. While someone is actively talking, you can\nexpect about 50 events per second per speaking user.\n\nNote that the third tuple element is of type `t:Nostrum.Struct.VoiceWSState.t/0` instead of `t:Nostrum.Struct.WSState.t/0`.\nThat struct contains a `t:Nostrum.Struct.VoiceWSState.ssrc_map/0` that can determine the speaking user based\non the SSRC.","title":"Nostrum.Consumer.voice_incoming_packet/0","ref":"Nostrum.Consumer.html#t:voice_incoming_packet/0"},{"type":"type","doc":"Dispatched when the bot is ready to begin sending audio after joining a voice channel\n\nNote that the third tuple element is of type `t:Nostrum.Struct.VoiceWSState.t/0` instead of `t:Nostrum.Struct.WSState.t/0`.","title":"Nostrum.Consumer.voice_ready/0","ref":"Nostrum.Consumer.html#t:voice_ready/0"},{"type":"type","doc":"","title":"Nostrum.Consumer.voice_server_update/0","ref":"Nostrum.Consumer.html#t:voice_server_update/0"},{"type":"type","doc":"Dispatched when the bot starts or stops speaking\n\nNote that the third tuple element is of type `t:Nostrum.Struct.VoiceWSState.t/0` instead of `t:Nostrum.Struct.WSState.t/0`.","title":"Nostrum.Consumer.voice_speaking_update/0","ref":"Nostrum.Consumer.html#t:voice_speaking_update/0"},{"type":"type","doc":"","title":"Nostrum.Consumer.voice_state_update/0","ref":"Nostrum.Consumer.html#t:voice_state_update/0"},{"type":"type","doc":"","title":"Nostrum.Consumer.webhooks_update/0","ref":"Nostrum.Consumer.html#t:webhooks_update/0"},{"type":"module","doc":"Registers consumers and handles event dispatch.","title":"Nostrum.ConsumerGroup","ref":"Nostrum.ConsumerGroup.html"},{"type":"function","doc":"","title":"Nostrum.ConsumerGroup.child_spec/1","ref":"Nostrum.ConsumerGroup.html#child_spec/1"},{"type":"function","doc":"Stop monitoring the given reference.","title":"Nostrum.ConsumerGroup.demonitor/1","ref":"Nostrum.ConsumerGroup.html#demonitor/1"},{"type":"function","doc":"Dispatch the given event(s) to all consumers.\n\nThis is called by nostrum internally, you likely won't need to call this\nmanually.","title":"Nostrum.ConsumerGroup.dispatch/1","ref":"Nostrum.ConsumerGroup.html#dispatch/1"},{"type":"function","doc":"Equivalent to `ConsumerGroup.join(self())`. See `join/1`.","title":"Nostrum.ConsumerGroup.join/0","ref":"Nostrum.ConsumerGroup.html#join/0"},{"type":"function","doc":"Join the given process to the consumers.\n\nIf no process is given, joins the current process to the consumers. This can\nbe used for subscribing to gateway events and awaiting them inline.\n\nAfter the process has joined, it will receive any events sent by nostrum's\ngateway dispatch. These events are sent as messages `{:event,\nt:Consumer.Event.t/0}`. The given `pid` is automatically unsubscribed when it\nterminates.\n\nNote that there is currently no filtering done. If the gateway sends a lot of\nmessages and the event subscriber does not terminate swiftly, its message\nqueue will keep growing.","title":"Nostrum.ConsumerGroup.join/1","ref":"Nostrum.ConsumerGroup.html#join/1"},{"type":"function","doc":"The following example illustrates how to use this to implement inline event\nawaiting:\n\n```elixir\ndefmodule MyBot.Command\n alias Nostrum.Api\n alias Nostrum.ConsumerGroup\n alias Nostrum.Struct.Message\n alias Nostrum.Struct.User\n\n def command(%Message{author: %User{id: author_id}}) do\n Api.create_message!(msg, \"Reply 'y' in 5 seconds to confirm ordering a large burger menu.\")\n ConsumerGroup.join()\n receive do\n {:event, {:MESSAGE_CREATE, %Message{author: %User{id: author_id}, content: \"y\"}, _}} ->\n Api.create_message!(msg, \"The large burger menu is coming.\")\n after\n 5_000 ->\n Api.create_message!(msg, \"Too slow!\")\n end\n end\nend\n```","title":"Example - Nostrum.ConsumerGroup.join/1","ref":"Nostrum.ConsumerGroup.html#join/1-example"},{"type":"function","doc":"Monitor the consumer group for changes.\n\nReturn the initial state of the group on first call. Further updates are\ndelivered as messages to the calling process, see `:pg.monitor/2` for\ndetails. The returned `t:reference/0` must be saved for later calls to\n`demonitor/1`.","title":"Nostrum.ConsumerGroup.monitor/0","ref":"Nostrum.ConsumerGroup.html#monitor/0"},{"type":"function","doc":"","title":"Nostrum.ConsumerGroup.start_link/1","ref":"Nostrum.ConsumerGroup.html#start_link/1"},{"type":"module","doc":"Functions that work on permissions.\n\nSome functions return a list of permissions. You can use enumerable functions\nto work with permissions:\n\n```elixir\nalias Nostrum.Cache.GuildCache\nalias Nostrum.Struct.Guild.Member\n\nguild = GuildCache.get!(279093381723062272)\nmember = Map.get(guild.members, 177888205536886784)\nmember_perms = Member.guild_permissions(member, guild)\n\nif :administrator in member_perms do\n IO.puts(\"This user has the administrator permission.\")\nend\n```","title":"Nostrum.Permission","ref":"Nostrum.Permission.html"},{"type":"function","doc":"Returns a list of all permissions.","title":"Nostrum.Permission.all/0","ref":"Nostrum.Permission.html#all/0"},{"type":"function","doc":"Converts the given bit to a permission.\n\nThis function returns `:error` if `bit` does not map to a permission.","title":"Nostrum.Permission.from_bit/1","ref":"Nostrum.Permission.html#from_bit/1"},{"type":"function","doc":"```elixir\niex> Nostrum.Permission.from_bit(0x04000000)\n{:ok, :change_nickname}\n\niex> Nostrum.Permission.from_bit(0)\n:error\n```","title":"Examples - Nostrum.Permission.from_bit/1","ref":"Nostrum.Permission.html#from_bit/1-examples"},{"type":"function","doc":"Same as `from_bit/1`, but raises `ArgumentError` in case of failure.","title":"Nostrum.Permission.from_bit!/1","ref":"Nostrum.Permission.html#from_bit!/1"},{"type":"function","doc":"```elixir\niex> Nostrum.Permission.from_bit!(0x04000000)\n:change_nickname\n\niex> Nostrum.Permission.from_bit!(0)\n** (ArgumentError) expected a valid bit, got: `0`\n```","title":"Examples - Nostrum.Permission.from_bit!/1","ref":"Nostrum.Permission.html#from_bit!/1-examples"},{"type":"function","doc":"Converts the given bitset to a list of permissions.\n\nIf invalid bits are given they will be omitted from the results.","title":"Nostrum.Permission.from_bitset/1","ref":"Nostrum.Permission.html#from_bitset/1"},{"type":"function","doc":"```elixir\niex> Nostrum.Permission.from_bitset(0x08000002)\n[:manage_nicknames, :kick_members]\n\niex> Nostrum.Permission.from_bitset(0x4000000000000)\n[]\n```","title":"Examples - Nostrum.Permission.from_bitset/1","ref":"Nostrum.Permission.html#from_bitset/1-examples"},{"type":"macro","doc":"Returns `true` if `term` is a permission; otherwise returns `false`.","title":"Nostrum.Permission.is_permission/1","ref":"Nostrum.Permission.html#is_permission/1"},{"type":"macro","doc":"```elixir\niex> Nostrum.Permission.is_permission(:administrator)\ntrue\n\niex> Nostrum.Permission.is_permission(:not_a_permission)\nfalse\n```","title":"Examples - Nostrum.Permission.is_permission/1","ref":"Nostrum.Permission.html#is_permission/1-examples"},{"type":"function","doc":"Converts the given permission to a bit.","title":"Nostrum.Permission.to_bit/1","ref":"Nostrum.Permission.html#to_bit/1"},{"type":"function","doc":"```elixir\niex> Nostrum.Permission.to_bit(:administrator)\n8\n```","title":"Examples - Nostrum.Permission.to_bit/1","ref":"Nostrum.Permission.html#to_bit/1-examples"},{"type":"function","doc":"Converts the given enumerable of permissions to a bitset.","title":"Nostrum.Permission.to_bitset/1","ref":"Nostrum.Permission.html#to_bitset/1"},{"type":"function","doc":"```elixir\niex> Nostrum.Permission.to_bitset([:administrator, :create_instant_invite])\n9\n```","title":"Examples - Nostrum.Permission.to_bitset/1","ref":"Nostrum.Permission.html#to_bitset/1-examples"},{"type":"type","doc":"Represents a single permission as a bitvalue.","title":"Nostrum.Permission.bit/0","ref":"Nostrum.Permission.html#t:bit/0"},{"type":"type","doc":"Represents a set of permissions as a bitvalue.","title":"Nostrum.Permission.bitset/0","ref":"Nostrum.Permission.html#t:bitset/0"},{"type":"type","doc":"","title":"Nostrum.Permission.general_permission/0","ref":"Nostrum.Permission.html#t:general_permission/0"},{"type":"type","doc":"","title":"Nostrum.Permission.t/0","ref":"Nostrum.Permission.html#t:t/0"},{"type":"type","doc":"","title":"Nostrum.Permission.text_permission/0","ref":"Nostrum.Permission.html#t:text_permission/0"},{"type":"type","doc":"","title":"Nostrum.Permission.voice_permission/0","ref":"Nostrum.Permission.html#t:voice_permission/0"},{"type":"module","doc":"Interface for playing and listening to audio through Discord's voice channels.\n\n# Using Discord Voice Channels\nTo play sound in Discord with Nostrum, you'll need `ffmpeg` to be installed.\nIf you don't have the executable `ffmpeg` in the path, the absolute path may\nbe configured through config keys `:nostrum, :ffmpeg`. If you don't want to use\nffmpeg, read on to the next section.\n\nA bot may be connected to at most one voice channel per guild. For this reason,\nmost of the functions in this module take a guild id, and the resulting action\nwill be performed in the given guild's voice channel that the bot is connected to.\n\nThe primary Discord gateway responsible for all text based communication relies on\none websocket connection per shard, where small bots typically only have one shard.\nThe Discord voice gateways work by establishing a websocket connection per guild/channel.\nAfter some handshaking on this connection, audio data can be sent over UDP/RTP. Behind\nthe scenes the voice websocket connections are implemented nearly the same way the main\nshard websocket connections are, and require no developer intervention.\n\nIn addition to playing audio, listening to incoming audio is supported through the\nfunctions `listen/3` and `start_listen_async/1`.","title":"Nostrum.Voice","ref":"Nostrum.Voice.html"},{"type":"module","doc":"If you wish to BYOE (Bring Your Own Encoder), there are a few options.\n - Use `:raw` as `type` for `play/4`\n - Provide the complete list of opus frames as the input\n - Use `:raw_s` as `type` for `play/4`\n - Provide a stateful enumerable of opus frames as input (think GenServer wrapped in `Stream.unfold/2`)\n - Use lower level functions to send opus frames at your leisure\n - Send packets on your own time using `send_frames/2`","title":"Voice Without FFmpeg - Nostrum.Voice","ref":"Nostrum.Voice.html#module-voice-without-ffmpeg"},{"type":"function","doc":"Returns a specification to start this module under a supervisor.\n\nSee `Supervisor`.","title":"Nostrum.Voice.child_spec/1","ref":"Nostrum.Voice.html#child_spec/1"},{"type":"function","doc":"Low-level. Manually connect to voice websockets gateway.\n\nThis function should only be called if config option `:voice_auto_connect` is set to `false`.\nBy default Nostrum will automatically create a voice gateway when joining a channel.","title":"Nostrum.Voice.connect_to_gateway/1","ref":"Nostrum.Voice.html#connect_to_gateway/1"},{"type":"function","doc":"Create a complete Ogg logical bitstream from a list of Opus packets.\n\nThis function takes a list of opus packets and returns a list of Ogg\nencapsulated Opus pages for a single Ogg logical bitstream.\n\nIt is highly recommended to learn about the Ogg container format to\nunderstand how to use the data.\n\nTo get started, assuming you have a list of evenly temporally spaced\nand consecutive opus packets from a single source that you want written\nto a file, you can run the following:\n\n```elixir\nbitstream =\n opus_packets\n |> create_ogg_bitstream()\n |> :binary.list_to_bin()\n\nFile.write!(\"my_recording.ogg\", bitstream)\n```\n\nWhen creating a logical bitstream, ensure that the packets are all from a single SSRC.\nWhen listening in a channel with multiple speakers, you should be storing the received\npackets in unique buckets for each SSRC so that the multiple audio sources don't become\njumbled. A single logical bitstream should represent audio data from a single speaker.\nAn Ogg physical bitstream (e.g. a file) may be composed of multiple interleaved Ogg\nlogical bitstreams as each logical bitstream and its constituent pages contain a unique\nand randomly generated bitstream serial number, but this is a story for another time.\n\nAssuming you have a list of `t:rtp_opus/0` packets that are not separated by ssrc, you\nmay do the following:\n\n```elixir\njumbled_packets\n|> Stream.filter(fn {{_seq, _time, ssrc}, _opus} -> ssrc == particular_ssrc end)\n|> Enum.map(fn {{_seq, _time, _ssrc}, opus} -> opus end)\n|> create_ogg_bitstream()\n```","title":"Nostrum.Voice.create_ogg_bitstream/1","ref":"Nostrum.Voice.html#create_ogg_bitstream/1"},{"type":"function","doc":"Extract the opus packet from the RTP packet received from Discord.\n\nIncoming voice RTP packets contain a fixed length RTP header and an optional\nRTP header extension, which must be stripped to retrieve the underlying opus packet.","title":"Nostrum.Voice.extract_opus_packet/1","ref":"Nostrum.Voice.html#extract_opus_packet/1"},{"type":"function","doc":"Gets the id of the voice channel that the bot is connected to.","title":"Nostrum.Voice.get_channel_id/1","ref":"Nostrum.Voice.html#get_channel_id/1"},{"type":"function","doc":"- `guild_id` - ID of guild that the resultant channel belongs to.\n\nReturns the `channel_id` for the channel the bot is connected to, otherwise `nil`.","title":"Parameters - Nostrum.Voice.get_channel_id/1","ref":"Nostrum.Voice.html#get_channel_id/1-parameters"},{"type":"function","doc":"```elixir\niex> Nostrum.Voice.join_channel(123456789, 420691337)\n\niex> Nostrum.Voice.get_channel(123456789)\n420691337\n\niex> Nostrum.Voice.leave_channel(123456789)\n\niex> Nostrum.Voice.get_channel(123456789)\nnil\n```","title":"Examples - Nostrum.Voice.get_channel_id/1","ref":"Nostrum.Voice.html#get_channel_id/1-examples"},{"type":"function","doc":"Gets the current URL being played.\n\nIf `play/4` was invoked with type `:url`, `:ytdl`, or `:stream`, this function will return\nthe URL given as input last time it was called.\n\nIf `play/4` was invoked with type `:pipe`, `:raw`, or `:raw_s`, this will return `nil`\nas the input is raw audio data, not be a readable URL string.","title":"Nostrum.Voice.get_current_url/1","ref":"Nostrum.Voice.html#get_current_url/1"},{"type":"function","doc":"Gets a map of RTP SSRC to user id.\n\nWithin a voice channel, an SSRC (synchronization source) will uniquely map to a\nuser id of a user who is speaking.\n\nIf listening to incoming voice packets asynchronously, this function will not be\nneeded as the `t:Nostrum.Struct.VoiceWSState.ssrc_map/0` will be available with every event.\nIf listening with `listen/3`, this function may be used. It is recommended to\ncache the result of this function and only call it again when you encounter an\nSSRC that is not present in the cached result. This is to reduce excess load on the\nvoice websocket and voice state processes.","title":"Nostrum.Voice.get_ssrc_map/1","ref":"Nostrum.Voice.html#get_ssrc_map/1"},{"type":"function","doc":"Joins or moves the bot to a voice channel.\n\nThis function calls `Nostrum.Api.update_voice_state/4`.\n\nThe fifth argument `persist` defaults to `true`. When true, if calling `join_channel/5`\nwhile already in a different channel in the same guild, the audio source will be persisted\nin the new channel. If the audio is actively playing at the time of changing channels,\nit will resume playing automatically upon joining. If there is an active audio source\nthat has been paused before changing channels, the audio will be able to be resumed manually if\n`resume/1` is called.\n\nIf `persist` is set to false, the audio source will be destroyed before changing channels.\nThe same effect is achieved by calling `stop/1` or `leave_channel/1` before `join_channel/5`","title":"Nostrum.Voice.join_channel/5","ref":"Nostrum.Voice.html#join_channel/5"},{"type":"function","doc":"Leaves the voice channel of the given guild id.\n\nThis function is equivalent to calling `Nostrum.Api.update_voice_state(guild_id, nil)`.","title":"Nostrum.Voice.leave_channel/1","ref":"Nostrum.Voice.html#leave_channel/1"},{"type":"function","doc":"Listen for incoming voice RTP packets.","title":"Nostrum.Voice.listen/3","ref":"Nostrum.Voice.html#listen/3"},{"type":"function","doc":"- `guild_id` - ID of guild that the bot is listening to.\n - `num_packets` - Number of packets to wait for.\n - `raw_rtp` - Whether to return raw RTP packets. Defaults to `false`.\n\nReturns a list of tuples of type `t:rtp_opus/0`.\n\nThe inner tuple contains fields from the RTP header and can be matched against\nto retrieve information about the packet such as the SSRC, which identifies the source.\nNote that RTP timestamps are completely unrelated to Unix timestamps.\n\nIf `raw_rtp` is set to `true`, a list of raw RTP packets is returned instead.\nTo extract an opus packet from an RTP packet, see `extract_opus_packet/1`.\n\nThis function will block until the specified number of packets is received.","title":"Parameters - Nostrum.Voice.listen/3","ref":"Nostrum.Voice.html#listen/3-parameters"},{"type":"function","doc":"Pad discontinuous chunks of opus audio with silence.\n\nThis function takes a list of `t:rtp_opus/0`, which is a tuple containing RTP bits and\nopus audio data. It returns a list of opus audio packets. The reason the input has to be in\nthe `t:rtp_opus/0` tuple format returned by `listen/3` and async listen events is that the\nRTP packet header contains info on the relative timestamps of incoming packets; the opus\npackets themselves don't contain information relating to timing.\n\nThe Discord client will continue to internally increment the `t:rtp_timestamp()` when the\nuser is not speaking such that the duration of pauses can be determined from the RTP packets.\nBots will typically not behave this way, so if you call this function on audio produced by\na bot it is very likely that no silence will be inserted.\n\nThe use case of this function is as follows:\nConsider a user speaks for two seconds, pauses for ten seconds, then speaks for another two\nseconds. During the pause, no RTP packets will be received, so if you create a bitstream from\nit, the resulting audio will be both two-second speaking segments consecutively without the\nlong pause in the middle. If you wish to preserve the timing of the speaking and include the\npause, calling this function will interleave the appropriate amount of opus silence packets\nto maintain temporal fidelity.\n\nNote that the Discord client currently sends about 10 silence packets (200 ms) each time it\ndetects end of speech, so creating a bitstream without first padding your audio with this\nfunction will maintain short silences between speech segments.\n\n*This function should only be called on a collection of RTP packets from a single SSRC*","title":"Nostrum.Voice.pad_opus/1","ref":"Nostrum.Voice.html#pad_opus/1"},{"type":"function","doc":"Pauses the current sound being played in a voice channel.\n\nThe bot must be connected to a voice channel in the guild specified.","title":"Nostrum.Voice.pause/1","ref":"Nostrum.Voice.html#pause/1"},{"type":"function","doc":"- `guild_id` - ID of guild whose voice channel the sound will be paused in.\n\nReturns `{:error, reason}` if unable to pause or no sound is playing, else `:ok`.\n\nThis function is similar to `stop/1`, except that the sound may be\nresumed after being paused.","title":"Parameters - Nostrum.Voice.pause/1","ref":"Nostrum.Voice.html#pause/1-parameters"},{"type":"function","doc":"```elixir\niex> Nostrum.Voice.join_channel(123456789, 420691337)\n\niex> Nostrum.Voice.play(123456789, \"~/files/twelve_hour_loop_of_waterfall_sounds.mp3\")\n\niex> Nostrum.Voice.pause(123456789)\n```","title":"Examples - Nostrum.Voice.pause/1","ref":"Nostrum.Voice.html#pause/1-examples"},{"type":"function","doc":"Plays sound in the voice channel the bot is in.\n\nThe bot must be connected to a voice channel in the guild specified.","title":"Nostrum.Voice.play/4","ref":"Nostrum.Voice.html#play/4"},{"type":"function","doc":"- `guild_id` - ID of guild whose voice channel the sound will be played in.\n - `input` - Audio to be played, `t:play_input/0`. Input type determined by `type` parameter.\n - `type` - Type of input, `t:play_type/0` (defaults to `:url`).\n - `:url` Input will be [any url that `ffmpeg` can read](https://www.ffmpeg.org/ffmpeg-protocols.html).\n - `:pipe` Input will be data that is piped to stdin of `ffmpeg`.\n - `:ytdl` Input will be url for `youtube-dl`, which gets automatically piped to `ffmpeg`.\n - `:stream` Input will be livestream url for `streamlink`, which gets automatically piped to `ffmpeg`.\n - `:raw` Input will be an enumerable of raw opus packets. This bypasses `ffmpeg` and all options.\n - `:raw_s` Same as `:raw` but input must be stateful, i.e. calling `Enum.take/2` on `input` is not idempotent.\n - `options` - See options section below.\n\n\nReturns `{:error, reason}` if unable to play or a sound is playing, else `:ok`.","title":"Parameters - Nostrum.Voice.play/4","ref":"Nostrum.Voice.html#play/4-parameters"},{"type":"function","doc":"- `:start_pos` (string) - The start position of the audio to be played. Defaults to beginning.\n - `:duration` (string) - The duration to of the audio to be played. Defaults to entire duration.\n - `:realtime` (boolean) - Make ffmpeg process the input in realtime instead of as fast as possible. Defaults to true.\n - `:volume` (number) - The output volume of the audio. Default volume is 1.0.\n - `:filter` (string) - Filter(s) to be applied to the audio. No filters applied by default.\n\n The values of `:start_pos` and `:duration` can be [any time duration that ffmpeg can read](https://ffmpeg.org/ffmpeg-utils.html#Time-duration).\n The `:filter` can be used multiple times in a single call (see examples).\n The values of `:filter` can be [any audio filters that ffmpeg can read](https://ffmpeg.org/ffmpeg-filters.html#Audio-Filters).\n Filters will be applied in order and can be as complex as you want. The world is your oyster!\n\n Note that using the `:volume` option is shortcut for the \"volume\" filter, and will be added to the end of the filter chain, acting as a master volume.\n Volume values between `0.0` and `1.0` act as standard operating range where `0` is off and `1` is max.\n Values greater than `1.0` will add saturation and distortion to the audio.\n Negative values act the same as their position but reverse the polarity of the waveform.\n\n Having all the ffmpeg audio filters available is *extremely powerful* so it may be worth learning some of them for your use cases.\n If you use any filters to *increase* the playback speed of your audio, it's recommended to set the `:realtime` option to `false`\n because realtime processing is relative to the original playback speed.","title":"Options - Nostrum.Voice.play/4","ref":"Nostrum.Voice.html#play/4-options"},{"type":"function","doc":"```elixir\niex> Nostrum.Voice.join_channel(123456789, 420691337)\n\niex> Nostrum.Voice.play(123456789, \"~/music/FavoriteSong.mp3\", :url)\n\niex> Nostrum.Voice.play(123456789, \"~/music/NotFavoriteButStillGoodSong.mp3\", :url, volume: 0.5)\n\niex> Nostrum.Voice.play(123456789, \"~/music/ThisWillBeHeavilyDistorted.mp3\", :url, volume: 1000)\n```\n```elixir\niex> Nostrum.Voice.join_channel(123456789, 420691337)\n\niex> raw_data = File.read!(\"~/music/sound_effect.wav\")\n\niex> Nostrum.Voice.play(123456789, raw_data, :pipe)\n```\n```elixir\niex> Nostrum.Voice.join_channel(123456789, 420691337)\n\niex> Nostrum.Voice.play(123456789, \"https://www.youtube.com/watch?v=b4RJ-QGOtw4\", :ytdl,\n...> realtime: true, start_pos: \"0:17\", duration: \"30\")\n\niex> Nostrum.Voice.play(123456789, \"https://www.youtube.com/watch?v=0ngcL_5ekXo\", :ytdl,\n...> filter: \"lowpass=f=1200\", filter: \"highpass=f=300\", filter: \"asetrate=44100*0.5\")\n```\n```elixir\niex> Nostrum.Voice.join_channel(123456789, 420691337)\n\niex> Nostrum.Voice.play(123456789, \"https://www.twitch.tv/pestily\", :stream)\n\niex> Nostrum.Voice.play(123456789, \"https://youtu.be/LN4r-K8ZP5Q\", :stream)\n```","title":"Examples - Nostrum.Voice.play/4","ref":"Nostrum.Voice.html#play/4-examples"},{"type":"function","doc":"Checks if the bot is playing sound in a voice channel.","title":"Nostrum.Voice.playing?/1","ref":"Nostrum.Voice.html#playing?/1"},{"type":"function","doc":"- `guild_id` - ID of guild to check if audio being played.\n\nReturns `true` if the bot is currently being played in a voice channel, otherwise `false`.","title":"Parameters - Nostrum.Voice.playing?/1","ref":"Nostrum.Voice.html#playing?/1-parameters"},{"type":"function","doc":"```elixir\niex> Nostrum.Voice.join_channel(123456789, 420691337)\n\niex> Nostrum.Voice.play(123456789, \"https://a-real-site.biz/RickRoll.m4a\")\n\niex> Nostrum.Voice.playing?(123456789)\ntrue\n\niex> Nostrum.Voice.pause(123456789)\n\niex> Nostrum.Voice.playing?(123456789)\nfalse\n```","title":"Examples - Nostrum.Voice.playing?/1","ref":"Nostrum.Voice.html#playing?/1-examples"},{"type":"function","doc":"Checks if the connection is up and ready to play audio.","title":"Nostrum.Voice.ready?/1","ref":"Nostrum.Voice.html#ready?/1"},{"type":"function","doc":"- `guild_id` - ID of guild to check if voice connection is up.\n\nReturns `true` if the bot is connected to a voice channel, otherwise `false`.\n\nThis function does not check if audio is already playing. For that, use `playing?/1`.","title":"Parameters - Nostrum.Voice.ready?/1","ref":"Nostrum.Voice.html#ready?/1-parameters"},{"type":"function","doc":"```elixir\niex> Nostrum.Voice.join_channel(123456789, 420691337)\n\niex> Nostrum.Voice.ready?(123456789)\ntrue\n\niex> Nostrum.Voice.leave_channel(123456789)\n\niex> Nostrum.Voice.ready?(123456789)\nfalse\n```","title":"Examples - Nostrum.Voice.ready?/1","ref":"Nostrum.Voice.html#ready?/1-examples"},{"type":"function","doc":"Resumes playing the current paused sound in a voice channel.\n\nThe bot must be connected to a voice channel in the guild specified.","title":"Nostrum.Voice.resume/1","ref":"Nostrum.Voice.html#resume/1"},{"type":"function","doc":"- `guild_id` - ID of guild whose voice channel the sound will be resumed in.\n\nReturns `{:error, reason}` if unable to resume or no sound has been paused, otherwise returns `:ok`.\n\nThis function is used to resume a sound that had previously been paused.","title":"Parameters - Nostrum.Voice.resume/1","ref":"Nostrum.Voice.html#resume/1-parameters"},{"type":"function","doc":"```elixir\niex> Nostrum.Voice.join_channel(123456789, 420691337)\n\niex> Nostrum.Voice.play(123456789, \"~/stuff/Toto - Africa (Bass Boosted)\")\n\niex> Nostrum.Voice.pause(123456789)\n\niex> Nostrum.Voice.resume(123456789)\n```","title":"Examples - Nostrum.Voice.resume/1","ref":"Nostrum.Voice.html#resume/1-examples"},{"type":"function","doc":"Low-level. Send pre-encoded audio packets directly.\n\nSpeaking should be set to true via `Nostrum.Voice.set_is_speaking/2` before sending frames.\n\nOpus frames will be encrypted and prefixed with the appropriate RTP header and sent immediately.\nThe length of `frames` depends on how often you wish to send a sequence of frames.\nA single frame contains 20ms of audio. Sending more than 50 frames (1 second of audio)\nin a single function call may result in inconsistent playback rates.\n\n`Nostrum.Voice.playing?/1` will not return accurate values when using `send_frames/2`\ninstead of `Nostrum.Voice.play/4`","title":"Nostrum.Voice.send_frames/2","ref":"Nostrum.Voice.html#send_frames/2"},{"type":"function","doc":"Low-level. Set speaking flag in voice channel.\n\nThis function does not need to be called unless you are sending audio frames\ndirectly using `Nostrum.Voice.send_frames/2`.","title":"Nostrum.Voice.set_is_speaking/2","ref":"Nostrum.Voice.html#set_is_speaking/2"},{"type":"function","doc":"Start asynchronously receiving events for incoming RTP packets for an active voice session.\n\nThis is an alternative to the blocking `listen/3`. Events will be generated asynchronously\nwhen a user is speaking. See `t:Nostrum.Consumer.voice_incoming_packet/0` for more info.","title":"Nostrum.Voice.start_listen_async/1","ref":"Nostrum.Voice.html#start_listen_async/1"},{"type":"function","doc":"Stops the current sound being played in a voice channel.\n\nThe bot must be connected to a voice channel in the guild specified.","title":"Nostrum.Voice.stop/1","ref":"Nostrum.Voice.html#stop/1"},{"type":"function","doc":"- `guild_id` - ID of guild whose voice channel the sound will be stopped in.\n\nReturns `{:error, reason}` if unable to stop or no sound is playing, else `:ok`.\n\nIf a sound has finished playing, this function does not need to be called to start\nplaying another sound.","title":"Parameters - Nostrum.Voice.stop/1","ref":"Nostrum.Voice.html#stop/1-parameters"},{"type":"function","doc":"```elixir\niex> Nostrum.Voice.join_channel(123456789, 420691337)\n\niex> Nostrum.Voice.play(123456789, \"http://brandthill.com/files/weird_dubstep_noises.mp3\")\n\niex> Nostrum.Voice.stop(123456789)\n```","title":"Examples - Nostrum.Voice.stop/1","ref":"Nostrum.Voice.html#stop/1-examples"},{"type":"function","doc":"Stop asynchronously receiving events for incoming RTP packets for an active voice session.","title":"Nostrum.Voice.stop_listen_async/1","ref":"Nostrum.Voice.html#stop_listen_async/1"},{"type":"type","doc":"Opus packet","title":"Nostrum.Voice.opus_packet/0","ref":"Nostrum.Voice.html#t:opus_packet/0"},{"type":"type","doc":"The play input\n\nThe input given to `play/4`, either a compatible URL or binary audio data.\nSee `play/4` for more information.","title":"Nostrum.Voice.play_input/0","ref":"Nostrum.Voice.html#t:play_input/0"},{"type":"type","doc":"The type of play input\n\nThe type given to `play/4` determines how the input parameter is interpreted.\nSee `play/4` for more information.","title":"Nostrum.Voice.play_type/0","ref":"Nostrum.Voice.html#t:play_type/0"},{"type":"type","doc":"Tuple with RTP header elements and opus packet","title":"Nostrum.Voice.rtp_opus/0","ref":"Nostrum.Voice.html#t:rtp_opus/0"},{"type":"type","doc":"RTP sequence","title":"Nostrum.Voice.rtp_sequence/0","ref":"Nostrum.Voice.html#t:rtp_sequence/0"},{"type":"type","doc":"RTP SSRC","title":"Nostrum.Voice.rtp_ssrc/0","ref":"Nostrum.Voice.html#t:rtp_ssrc/0"},{"type":"type","doc":"RTP timestamp","title":"Nostrum.Voice.rtp_timestamp/0","ref":"Nostrum.Voice.html#t:rtp_timestamp/0"},{"type":"module","doc":"Handles encryption and decryption of outgoing and incoming voice data when an AES encryption mode is selected\n\n>","title":"Nostrum.Voice.Crypto.Aes","ref":"Nostrum.Voice.Crypto.Aes.html"},{"type":"module","doc":">\n> This module is intended for exclusive usage inside of nostrum, and is\n> documented for completeness and curious cryptographic cats.","title":"Internal module {: .info} - Nostrum.Voice.Crypto.Aes","ref":"Nostrum.Voice.Crypto.Aes.html#module-internal-module-info"},{"type":"module","doc":"AES is fully supported by the erlang `:crypto` module, so this module\njust provides a convenient wrapper around it for encryption and decryption.","title":"Purpose - Nostrum.Voice.Crypto.Aes","ref":"Nostrum.Voice.Crypto.Aes.html#module-purpose"},{"type":"module","doc":"Internally the functions `:crypto.crypto_one_time_aead/6` and `:crypto.crypto_one_time_aead/7` are\ncalled with the cipher argument set to `:aes_256_gcm`. Because these functions are implemented as\nNIFs with OpenSSL bindings, they faster than anything written in pure erlang/elixir.\n\nBecause the crypto function returns a tuple with the cipher text and tag (MAC) separately, the return\nvalue is an iolist with them in the order that Discord expects. This is done to reduce binary copies\nas the functions ingesting the encrypted messages all support iodata.\n\nReaders are encouraged to read more about the [erlang crypto module](https://www.erlang.org/doc/man/crypto).","title":"Implementation - Nostrum.Voice.Crypto.Aes","ref":"Nostrum.Voice.Crypto.Aes.html#module-implementation"},{"type":"module","doc":"AES is a well-established cipher and many modern CPUs have AES instruction sets to accelerate\nAES operations. While the Salsa20 and ChaCha20 stream ciphers are typically faster with pure\nsoftware implementations, hardware acceleration will typically give AES the leg up for performance.","title":"Performance considerations - Nostrum.Voice.Crypto.Aes","ref":"Nostrum.Voice.Crypto.Aes.html#module-performance-considerations"},{"type":"function","doc":"","title":"Nostrum.Voice.Crypto.Aes.decrypt/5","ref":"Nostrum.Voice.Crypto.Aes.html#decrypt/5"},{"type":"function","doc":"","title":"Nostrum.Voice.Crypto.Aes.encrypt/4","ref":"Nostrum.Voice.Crypto.Aes.html#encrypt/4"},{"type":"module","doc":"Handles encryption and decryption of outgoing and incoming voice data when a ChaCha encryption mode is selected\n\n>","title":"Nostrum.Voice.Crypto.Chacha","ref":"Nostrum.Voice.Crypto.Chacha.html"},{"type":"module","doc":">\n> This module is intended for exclusive usage inside of nostrum, and is\n> documented for completeness and curious cryptographic cats.","title":"Internal module {: .info} - Nostrum.Voice.Crypto.Chacha","ref":"Nostrum.Voice.Crypto.Chacha.html#module-internal-module-info"},{"type":"module","doc":"Erlang's `:crypto` module supports the chacha20_poly1305 AEAD stream cipher.\nAnalogously to Salsa20 and XSalsa20, XChaCha20 is a way to use 192-bit nonces\nwith ChaCha20 by hashing the key and part of the extended nonce to generate a\nsub-key, which is used as the input key for ChaCha20.\n\nTo leverage the crypto module, we had to implement the HChaCha20 hash function\nin elixir to then pass the resulting sub-key to the `crypto_one_time_aead`.","title":"Purpose - Nostrum.Voice.Crypto.Chacha","ref":"Nostrum.Voice.Crypto.Chacha.html#module-purpose"},{"type":"module","doc":"The HChaCha20 function takes the first 16-bytes of the extended 24-byte XChaCha20 nonce,\nexpands the key and the 16-byte nonce slice into a block in place of the block count and\nusual smaller nonce. That block has 20 rounds of mutation, and instead of summing the block\nwith its starting state as is done with keystream generation, 8 of the 16 bytes are taken\nand used as the sub-key, which is the input key for the standard chacha20 cipher.\n\nEven though we've implemented the bulk of what's needed to generate chacha20 key streams\nfor encryption and decryption, we're only using this module to generate the inputs to\nuse the :crypto module's chacha20_poly1305 functionality in the capacity of xchacha20\nas is required by Discord with that encryption mode selected.\n\nThis is all in service of leveraging the performance benefits of the the NIF crypto\nfunctions, which are necessarily going to be more performant than anything implemented\nin pure elixir/erlang like the `:kcl` package.\n\n*ChaCha20 is a variant of the Salsa20 cipher. I will discuss in greater detail the implementation\nin the `Nostrum.Voice.Crypto.Salsa` module, where much is applicable here.*\n\nReferences for Salsa family of ciphers\n- https://cr.yp.to/snuffle/spec.pdf\n- https://cr.yp.to/chacha/chacha-20080128.pdf\n- https://cr.yp.to/snuffle/xsalsa-20110204.pdf\n- https://datatracker.ietf.org/doc/html/rfc7539\n- https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-xchacha","title":"Implementation - Nostrum.Voice.Crypto.Chacha","ref":"Nostrum.Voice.Crypto.Chacha.html#module-implementation"},{"type":"module","doc":"After the XChaCha20 sub-key is generated in elixir, the crypto NIF function performs the\nheavy lifting. If your bot is running on a machine without AES hardware acceleration, you\nmay find that using the chacha encryption mode yields better performance.","title":"Performance considerations - Nostrum.Voice.Crypto.Chacha","ref":"Nostrum.Voice.Crypto.Chacha.html#module-performance-considerations"},{"type":"function","doc":"","title":"Nostrum.Voice.Crypto.Chacha.decrypt/5","ref":"Nostrum.Voice.Crypto.Chacha.html#decrypt/5"},{"type":"function","doc":"","title":"Nostrum.Voice.Crypto.Chacha.encrypt/4","ref":"Nostrum.Voice.Crypto.Chacha.html#encrypt/4"},{"type":"module","doc":"Handles encryption and decryption of outgoing and incoming voice data when a ChaCha encryption mode is selected\n\n>","title":"Nostrum.Voice.Crypto.Salsa","ref":"Nostrum.Voice.Crypto.Salsa.html"},{"type":"module","doc":">\n> This module is intended for exclusive usage inside of nostrum, and is\n> documented for completeness and curious cryptographic cats.","title":"Internal module {: .info} - Nostrum.Voice.Crypto.Salsa","ref":"Nostrum.Voice.Crypto.Salsa.html#module-internal-module-info"},{"type":"module","doc":"To support xsalsa20_poly1305 without a NIF, we have to implement the\nSalsa20 cipher and HSalsa20 hash function to use 192-bit nonces in the capacity\nof XSalsa20.\n\nAlong with leveraging the :crypto module to perform the poly1305 MAC function\nand xor'ing arbitrary-length binaries, by being more thoughtful and explicit\nwith our implementation, we should be able to eek out better performance\nthan the `:kcl` package provides.","title":"Purpose - Nostrum.Voice.Crypto.Salsa","ref":"Nostrum.Voice.Crypto.Salsa.html#module-purpose"},{"type":"module","doc":"The `:kcl` package is an impressive pure-elixir NaCl/libsodium compatible library\nthat Nostrum previously used for voice encryption. For our usage with Discord voice,\nwe only need the ability to encrypt and decrypt with 32-byte keys using 24-byte\nXSalsa20 nonces.\n\nSome of the key differences in our implementation compared to Kcl\n- Heavy use of explicit binary pattern matching instead of more traditional implicit enumeration\n- Intermediate block state stored in a 16-element tuple that is mutated during the 20-round hot loop instead of lists\n- Minimized the number binary copies, returning iolists when appropriate, instead of concatenating binaries\n- XOR whole keystream and message blocks instead of XOR'ing one byte at a time\n- Poly1305 MAC handled by crypto module instead of implemented in elixir\n- Only support 32-byte keys and 24-byte nonces (XSalsa20) instead of full NaCl/libsodium\n\nAdditionally there appears to be a bug in how the 16-byte block count is serialized during key expansion:\nIt's supposed to be little endian, and it happens to be for blocks 0-255, but for larger block counts,\nKcl may become incompatible with NaCl/libsodium-type libraries. For Discord's use case of encrypting short\n20 millisecond compressed audio packets, block counts were well-below this suspected problem threshold.\n\nThe cipher functions were implemented in the order they're defined in the original Salsa specification,\nand though it's using a lot of explicit binary pattern matching, it turned out to be quite legible.\nIn a single statement of binary pattern matching, the 512-bit initial block state is cast into 16\nlittle-endian 32-bit words. Standard elixir patterns might have you iterate through the binary until the\nend was reached, but matching and casting all sixteen block elements in a single statement then returning\na tuple is explicit, clear, and simple to understand when referenced against the spec.\n\nReaders interested in cryptography are encouraged to read more about the Salsa20/ChaCha20 ciphers.\n\nReferences for Salsa family of ciphers\n- https://cr.yp.to/snuffle/spec.pdf\n- https://cr.yp.to/chacha/chacha-20080128.pdf\n- https://cr.yp.to/snuffle/xsalsa-20110204.pdf\n- https://datatracker.ietf.org/doc/html/rfc7539\n- https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-xchacha","title":"Implementation - Nostrum.Voice.Crypto.Salsa","ref":"Nostrum.Voice.Crypto.Salsa.html#module-implementation"},{"type":"module","doc":"The entire keystream generation and xor'ing the message with the stream is done in elixir,\nonly performing the Poly1305 MAC function through the crypto module. Although it was implemented\nas thoughtfully and explicitly as possible with memory usage and performance in mind, using any\nof the Salsa modes will likely be less performant than ChaCha or AES.","title":"Performance considerations - Nostrum.Voice.Crypto.Salsa","ref":"Nostrum.Voice.Crypto.Salsa.html#module-performance-considerations"},{"type":"function","doc":"","title":"Nostrum.Voice.Crypto.Salsa.block_binary_to_tuple/1","ref":"Nostrum.Voice.Crypto.Salsa.html#block_binary_to_tuple/1"},{"type":"function","doc":"","title":"Nostrum.Voice.Crypto.Salsa.decrypt/3","ref":"Nostrum.Voice.Crypto.Salsa.html#decrypt/3"},{"type":"function","doc":"","title":"Nostrum.Voice.Crypto.Salsa.encrypt/3","ref":"Nostrum.Voice.Crypto.Salsa.html#encrypt/3"},{"type":"module","doc":"Supervises caches for nostrum structures.\n\nSee the documentation for the relevant submodules for details:\n\n- `Nostrum.Cache.GuildCache`\n- `Nostrum.Cache.Me`\n- `Nostrum.Cache.MemberCache`\n- `Nostrum.Cache.PresenceCache`\n- `Nostrum.Cache.UserCache`","title":"Nostrum.Cache.CacheSupervisor","ref":"Nostrum.Cache.CacheSupervisor.html"},{"type":"function","doc":"Returns a specification to start this module under a supervisor.\n\nSee `Supervisor`.","title":"Nostrum.Cache.CacheSupervisor.child_spec/1","ref":"Nostrum.Cache.CacheSupervisor.html#child_spec/1"},{"type":"function","doc":"","title":"Nostrum.Cache.CacheSupervisor.init/1","ref":"Nostrum.Cache.CacheSupervisor.html#init/1"},{"type":"function","doc":"","title":"Nostrum.Cache.CacheSupervisor.start_link/1","ref":"Nostrum.Cache.CacheSupervisor.html#start_link/1"},{"type":"behaviour","doc":"Cache behaviour & dispatcher for mapping channel IDs to their respective guilds.","title":"Nostrum.Cache.ChannelGuildMapping","ref":"Nostrum.Cache.ChannelGuildMapping.html"},{"type":"behaviour","doc":"While retrieving the channels on a specific guild is trivial as they are\nstored on the guild, retrieving the guild a given channel belongs to is not\npossible with the regular data mode of channels. This module allows to\nretrieve guilds associated with a channel via `get/1`.","title":"Purpose - Nostrum.Cache.ChannelGuildMapping","ref":"Nostrum.Cache.ChannelGuildMapping.html#module-purpose"},{"type":"behaviour","doc":"By default, nostrum will use `Elixir.Nostrum.Cache.ChannelGuildMapping.ETS` to store the\nmapping. To override this, set the `[:caches, :channel_guild_mapping]`\nsetting on nostrum's application configuration:\n\n```elixir\nconfig :nostrum,\n caches: %{\n channel_guild_mapping: MyBot.Nostrum.Cache.ChannelGuildMapping\n }\n```\n\nThis setting must be set at compile time.","title":"Configuration - Nostrum.Cache.ChannelGuildMapping","ref":"Nostrum.Cache.ChannelGuildMapping.html#module-configuration"},{"type":"callback","doc":"Retrieve the child specification for starting this mapping under a supervisor.","title":"Nostrum.Cache.ChannelGuildMapping.child_spec/1","ref":"Nostrum.Cache.ChannelGuildMapping.html#c:child_spec/1"},{"type":"function","doc":"","title":"Nostrum.Cache.ChannelGuildMapping.create/2","ref":"Nostrum.Cache.ChannelGuildMapping.html#create/2"},{"type":"callback","doc":"Create a mapping of the given channel to the given guild.","title":"Nostrum.Cache.ChannelGuildMapping.create/2","ref":"Nostrum.Cache.ChannelGuildMapping.html#c:create/2"},{"type":"function","doc":"","title":"Nostrum.Cache.ChannelGuildMapping.delete/1","ref":"Nostrum.Cache.ChannelGuildMapping.html#delete/1"},{"type":"callback","doc":"Remove any mapping associated with the given channel.","title":"Nostrum.Cache.ChannelGuildMapping.delete/1","ref":"Nostrum.Cache.ChannelGuildMapping.html#c:delete/1"},{"type":"function","doc":"","title":"Nostrum.Cache.ChannelGuildMapping.get/1","ref":"Nostrum.Cache.ChannelGuildMapping.html#get/1"},{"type":"callback","doc":"Retrieve the guild ID for the given channel ID, if present.","title":"Nostrum.Cache.ChannelGuildMapping.get/1","ref":"Nostrum.Cache.ChannelGuildMapping.html#c:get/1"},{"type":"behaviour","doc":"Cache behaviour & dispatcher for guilds.\n\nYou can call the functions provided by this module independent of which cache\nis configured, and it will dispatch to the configured cache implementation.\n\nBy default, Elixir.Nostrum.Cache.GuildCache.ETS will be used for caching guilds.\nYou can override this in the `:caches` option of the `:nostrum` application\nby setting the `:guilds` field to a different module implementing the\n`Nostrum.Cache.GuildCache` behaviour. Any module below\n`Nostrum.Cache.GuildCache` can be used as a cache.","title":"Nostrum.Cache.GuildCache","ref":"Nostrum.Cache.GuildCache.html"},{"type":"behaviour","doc":"As with the other caches, the guild cache API consists of two parts:\n\n- The functions that nostrum calls, such as `c:create/1` or `c:update/1`.\nThese **do not create any objects in the Discord API**, they are purely\ncreated to update the cached data from data that Discord sends us. If you\nwant to create objects on Discord, use the functions exposed by `Nostrum.Api`\ninstead.\n\n- the QLC query handle for read operations, `c:query_handle/0`, and\n\n- the `c:child_spec/1` callback for starting the cache under a supervisor.\n\nYou need to implement all of them for nostrum to work with your custom\ncache.\n\nThe \"upstream data\" wording in this module references the fact that the\ndata that the guild cache (and other caches) retrieves represents the raw\ndata we receive from the upstream connection, no attempt is made by nostrum\nto sanitize the data before it enters the cache. Caching implementations\nneed to cast the data to the resulting type themselves. A possible future\nimprovement would be moving the data casting into this module before the\nbacking cache implementation is called.","title":"Writing your own guild cache - Nostrum.Cache.GuildCache","ref":"Nostrum.Cache.GuildCache.html#module-writing-your-own-guild-cache"},{"type":"callback","doc":"Create a channel for the guild from upstream data.\n\nReturn the adapted `t:Nostrum.Struct.Channel.t/0` structure.","title":"Nostrum.Cache.GuildCache.channel_create/2","ref":"Nostrum.Cache.GuildCache.html#c:channel_create/2"},{"type":"callback","doc":"Delete the given channel from the guild.\n\nIf the channel was cached, return the original channel. Return `:noop`\notherwise.","title":"Nostrum.Cache.GuildCache.channel_delete/2","ref":"Nostrum.Cache.GuildCache.html#c:channel_delete/2"},{"type":"callback","doc":"Update the given channel on the given guild from upstream data.\n\nReturn the original channel before the update if known, and the updated\nchannel.","title":"Nostrum.Cache.GuildCache.channel_update/2","ref":"Nostrum.Cache.GuildCache.html#c:channel_update/2"},{"type":"callback","doc":"Retrieve the child specification for starting this mapping under a supervisor.","title":"Nostrum.Cache.GuildCache.child_spec/1","ref":"Nostrum.Cache.GuildCache.html#c:child_spec/1"},{"type":"callback","doc":"Create a guild in the cache.","title":"Nostrum.Cache.GuildCache.create/1","ref":"Nostrum.Cache.GuildCache.html#c:create/1"},{"type":"callback","doc":"Delete a guild from the cache.\n\nReturn the old guild if it was cached, or `nil` otherwise.","title":"Nostrum.Cache.GuildCache.delete/1","ref":"Nostrum.Cache.GuildCache.html#c:delete/1"},{"type":"callback","doc":"Update the emoji list of the given guild from upstream data.\n\nDiscord sends us the complete emoji list on an update, which is passed here.\n\nReturn the old list of emojis before the update, and the updated list of\nemojis.","title":"Nostrum.Cache.GuildCache.emoji_update/2","ref":"Nostrum.Cache.GuildCache.html#c:emoji_update/2"},{"type":"function","doc":"Fold (reduce) over all guilds in the cache.","title":"Nostrum.Cache.GuildCache.fold/3","ref":"Nostrum.Cache.GuildCache.html#fold/3"},{"type":"function","doc":"- `acc`: The initial accumulator. Also returned if no guilds are cached.\n- `fun`: Called for every guild in the result. Takes a pair in the form\n`(guild, acc)`, and must return the updated accumulator.\n- `cache` (optional): The cache to use. nostrum will use the cache configured\nat compile time by default.","title":"Parameters - Nostrum.Cache.GuildCache.fold/3","ref":"Nostrum.Cache.GuildCache.html#fold/3-parameters"},{"type":"function","doc":"Retrieves a single `Nostrum.Struct.Guild` from the cache via its `id`.\n\nReturns `{:error, :not_found}` if no result was found.","title":"Nostrum.Cache.GuildCache.get/2","ref":"Nostrum.Cache.GuildCache.html#get/2"},{"type":"function","doc":"Same as `get/1`, but raises `Nostrum.Error.CacheError` in case of failure.","title":"Nostrum.Cache.GuildCache.get!/1","ref":"Nostrum.Cache.GuildCache.html#get!/1"},{"type":"callback","doc":"Decrement the member count for this guild by one.","title":"Nostrum.Cache.GuildCache.member_count_down/1","ref":"Nostrum.Cache.GuildCache.html#c:member_count_down/1"},{"type":"callback","doc":"Increment the member count for this guild by one.","title":"Nostrum.Cache.GuildCache.member_count_up/1","ref":"Nostrum.Cache.GuildCache.html#c:member_count_up/1"},{"type":"function","doc":"Return the QLC handle of the configured cache.","title":"Nostrum.Cache.GuildCache.query_handle/0","ref":"Nostrum.Cache.GuildCache.html#query_handle/0"},{"type":"callback","doc":"Return a QLC query handle for cache read operations.\n\nThis is used by nostrum to provide any read operations on the cache. Write\noperations still need to be implemented separately.\n\nThe Erlang manual on [Implementing a QLC\nTable](https://www.erlang.org/doc/man/qlc.html#implementing_a_qlc_table)\ncontains examples for implementation. To prevent full table scans, accept\nmatch specifications in your `TraverseFun` and implement a `LookupFun` as\ndocumented.\n\nThe query handle must return items in the form `{guild_id, guild}`, where:\n- `guild_id` is a `t:Nostrum.Struct.Guild.id/0`, and\n- `guild` is a `t:Nostrum.Struct.Guild.t/0`.\n\nIf your cache needs some form of setup or teardown for QLC queries (such as\nopening connections), see `c:wrap_qlc/1`.","title":"Nostrum.Cache.GuildCache.query_handle/0","ref":"Nostrum.Cache.GuildCache.html#c:query_handle/0"},{"type":"callback","doc":"Create a role on the given guild from upstream data.\n\nReturn the casted role.","title":"Nostrum.Cache.GuildCache.role_create/2","ref":"Nostrum.Cache.GuildCache.html#c:role_create/2"},{"type":"callback","doc":"Delete the given role on the given guild.\n\nReturn the guild and the old role if it was cached, or `:noop` otherwise.","title":"Nostrum.Cache.GuildCache.role_delete/2","ref":"Nostrum.Cache.GuildCache.html#c:role_delete/2"},{"type":"callback","doc":"Update a role on the given guild from upstream data.\n\nReturn the old role before the update and the updated role.","title":"Nostrum.Cache.GuildCache.role_update/2","ref":"Nostrum.Cache.GuildCache.html#c:role_update/2"},{"type":"callback","doc":"Update the sticker list of the given guild from upstream data.\n\nDiscord sends us a complete list of stickers on an update, which is passed here.\n\nReturn the old list of stickers before the update, and the updated list of stickers.","title":"Nostrum.Cache.GuildCache.stickers_update/2","ref":"Nostrum.Cache.GuildCache.html#c:stickers_update/2"},{"type":"callback","doc":"Update a guild from upstream data.\n\nReturn the original guild before the update (if it was cached) and the\nupdated guild.","title":"Nostrum.Cache.GuildCache.update/1","ref":"Nostrum.Cache.GuildCache.html#c:update/1"},{"type":"callback","doc":"Update the voice state of the given guild from upstream data.\n\nNote that it is recommended to drop the `:member` / `\"member\"` keys of\nthe supplied upstream data, as these would otherwise duplicate the data\nthat is being kept in the guild cache already.\n\nReturn the guild ID and the updated voice states of the guild.","title":"Nostrum.Cache.GuildCache.voice_state_update/2","ref":"Nostrum.Cache.GuildCache.html#c:voice_state_update/2"},{"type":"callback","doc":"A function that should wrap any `:qlc` operations.\n\nIf you implement a cache that is backed by a database and want to perform\ncleanup and teardown actions such as opening and closing connections,\nmanaging transactions and so on, you want to implement this function. nostrum\nwill then effectively call `wrap_qlc(fn -> :qlc.e(...) end)`.\n\nIf your cache does not need any wrapping, you can omit this.","title":"Nostrum.Cache.GuildCache.wrap_qlc/1","ref":"Nostrum.Cache.GuildCache.html#c:wrap_qlc/1"},{"type":"function","doc":"Call `c:wrap_qlc/1` on the given cache, if implemented.\n\nIf no cache is given, calls out to the default cache.","title":"Nostrum.Cache.GuildCache.wrap_qlc/2","ref":"Nostrum.Cache.GuildCache.html#wrap_qlc/2"},{"type":"module","doc":"Simple cache that stores information for the current user.","title":"Nostrum.Cache.Me","ref":"Nostrum.Cache.Me.html"},{"type":"function","doc":"Returns a specification to start this module under a supervisor.\n\nSee `Supervisor`.","title":"Nostrum.Cache.Me.child_spec/1","ref":"Nostrum.Cache.Me.html#child_spec/1"},{"type":"function","doc":"Returns the current user's state.","title":"Nostrum.Cache.Me.get/0","ref":"Nostrum.Cache.Me.html#get/0"},{"type":"function","doc":"","title":"Nostrum.Cache.Me.start_link/1","ref":"Nostrum.Cache.Me.html#start_link/1"},{"type":"behaviour","doc":"Cache behaviour & dispatcher for guild members.\n\nYou can call the functions provided by this module independent of which cache\nis configured, and it will dispatch to the configured cache implementation.\n\nBy default, Elixir.Nostrum.Cache.MemberCache.ETS will be used for caching\nmembers. You can override this in the `:caches` option of the `:nostrum`\napplication by setting the `:members` field to a different module\nimplementing the behaviour defined by this module.\n\nThe user-facing functions of this module can be called with a custom cache as\nthe final argument. This is mainly useful if you want to test the cache: by\ndefault, nostrum will use Elixir.Nostrum.Cache.MemberCache.ETS.","title":"Nostrum.Cache.MemberCache","ref":"Nostrum.Cache.MemberCache.html"},{"type":"callback","doc":"Bulk create multiple members in the cache from upstream data.\n\nReturn value is unused, as we currently do not dispatch a gateway for this.","title":"Nostrum.Cache.MemberCache.bulk_create/2","ref":"Nostrum.Cache.MemberCache.html#c:bulk_create/2"},{"type":"callback","doc":"Retrieve the child specification for starting this mapping under a supervisor.","title":"Nostrum.Cache.MemberCache.child_spec/1","ref":"Nostrum.Cache.MemberCache.html#c:child_spec/1"},{"type":"callback","doc":"Add the member for the given guild from upstream data.\n\nReturn the casted member structure.","title":"Nostrum.Cache.MemberCache.create/2","ref":"Nostrum.Cache.MemberCache.html#c:create/2"},{"type":"callback","doc":"Remove the given user for the given guild.\n\nReturn the guild ID and old member if the member was cached. Otherwise,\nreturn `:noop`.","title":"Nostrum.Cache.MemberCache.delete/2","ref":"Nostrum.Cache.MemberCache.html#c:delete/2"},{"type":"function","doc":"Fold (reduce) over members for the given guild ID.","title":"Nostrum.Cache.MemberCache.fold/4","ref":"Nostrum.Cache.MemberCache.html#fold/4"},{"type":"function","doc":"- `acc`: The initial accumulator. Also returned if no guild members were found.\n- `guild_id`: The guild for which to reduce members.\n- `fun`: Called for every element in the result. Takes a pair\nin the form `(member, acc)`, and must return the updated accumulator.","title":"Parameters - Nostrum.Cache.MemberCache.fold/4","ref":"Nostrum.Cache.MemberCache.html#fold/4-parameters"},{"type":"function","doc":"Returns the resulting accumulator via `fun`. Returns `acc` unchanged if no\nresults were found.","title":"Return value - Nostrum.Cache.MemberCache.fold/4","ref":"Nostrum.Cache.MemberCache.html#fold/4-return-value"},{"type":"function","doc":"Reduce over all members cached for the given user ID.\n\nThe members will be returned alongside their guild ID as a pair in the\nformat `{guild_id, member}`.","title":"Nostrum.Cache.MemberCache.fold_by_user/4","ref":"Nostrum.Cache.MemberCache.html#fold_by_user/4"},{"type":"function","doc":"Calls `fun` on each member and its user on the given guild ID, with the given\naccumulator.","title":"Nostrum.Cache.MemberCache.fold_with_users/4","ref":"Nostrum.Cache.MemberCache.html#fold_with_users/4"},{"type":"function","doc":"- `acc` (`term()`): The initial accumulator. Also returned if no guild\nmembers were found.\n- `guild_id` (`t:Nostrum.Struct.Guild.id/0`): The guild for which to reduce members.\n- `fun` (`function()`): Called for every element in the result. Takes a pair\nin the form `({member, user}, acc)`, and must return the updated accumulator.","title":"Parameters - Nostrum.Cache.MemberCache.fold_with_users/4","ref":"Nostrum.Cache.MemberCache.html#fold_with_users/4-parameters"},{"type":"function","doc":"Returns the resulting accumulator via `fun`. Returns `acc` unchanged if no\nresults were found.\n\nIf the user for a guild member is not found, the member _and_ user won't be\npresent in the result. Barring a bug in nostrum's caching, this should never\nhappen in practice.","title":"Return value - Nostrum.Cache.MemberCache.fold_with_users/4","ref":"Nostrum.Cache.MemberCache.html#fold_with_users/4-return-value"},{"type":"function","doc":"Get a single member on the given guild ID.","title":"Nostrum.Cache.MemberCache.get/3","ref":"Nostrum.Cache.MemberCache.html#get/3"},{"type":"function","doc":"Return a member together with its user via the user cache.","title":"Nostrum.Cache.MemberCache.get_with_user/3","ref":"Nostrum.Cache.MemberCache.html#get_with_user/3"},{"type":"function","doc":"Return the QLC handle of the configured cache.","title":"Nostrum.Cache.MemberCache.query_handle/0","ref":"Nostrum.Cache.MemberCache.html#query_handle/0"},{"type":"callback","doc":"Return a QLC query handle for cache read operations.\n\nThis is used by nostrum to provide any read operations on the cache. Write\noperations still need to be implemented separately.\n\nThe Erlang manual on [Implementing a QLC\nTable](https://www.erlang.org/doc/man/qlc.html#implementing_a_qlc_table)\ncontains examples for implementation. To prevent full table scans, accept\nmatch specifications in your `TraverseFun` and implement a `LookupFun` as\ndocumented.\n\nThe query handle must return items in the form `{guild_id, user_id,\nmember}`, where:\n- `guild_id` is a `t:Nostrum.Struct.Guild.id/0`,\n- `user_id` is a `t:Nostrum.Struct.User.id/0`, and\n- `member` is a `t:Nostrum.Struct.Guild.Member.t/0`.\n\nIf your cache needs some form of setup or teardown for QLC queries (such as\nopening connections), see `c:wrap_qlc/1`.","title":"Nostrum.Cache.MemberCache.query_handle/0","ref":"Nostrum.Cache.MemberCache.html#c:query_handle/0"},{"type":"callback","doc":"Update the given member for the given guild from upstream data.\n\nReturn the guild ID that was updated, the old cached member (if the member\nwas known to the cache), and the updated member.","title":"Nostrum.Cache.MemberCache.update/2","ref":"Nostrum.Cache.MemberCache.html#c:update/2"},{"type":"callback","doc":"Even if the required intents to receive `GUILD_MEMBER_UPDATE` events are\ndisabled to a point where we do not receive guild creation events, it is\nstill possible to receive the event for our own user. An example of this can\nbe found in [issue\n#293](https://github.com/Kraigie/nostrum/issues/293). Note that the issue\npredates the modern nostrum caching infrastructure.","title":"Note regarding intents - Nostrum.Cache.MemberCache.update/2","ref":"Nostrum.Cache.MemberCache.html#c:update/2-note-regarding-intents"},{"type":"callback","doc":"A function that should wrap any `:qlc` operations.\n\nIf you implement a cache that is backed by a database and want to perform\ncleanup and teardown actions such as opening and closing connections,\nmanaging transactions and so on, you want to implement this function. nostrum\nwill then effectively call `wrap_qlc(fn -> :qlc.e(...) end)`.\n\nIf your cache does not need any wrapping, you can omit this.","title":"Nostrum.Cache.MemberCache.wrap_qlc/1","ref":"Nostrum.Cache.MemberCache.html#c:wrap_qlc/1"},{"type":"function","doc":"Call `c:wrap_qlc/1` on the given cache, if implemented.\n\nIf no cache is given, calls out to the default cache.","title":"Nostrum.Cache.MemberCache.wrap_qlc/2","ref":"Nostrum.Cache.MemberCache.html#wrap_qlc/2"},{"type":"behaviour","doc":"Cache behaviour & dispatcher for Discord messages.\n\nBy default, Elixir.Nostrum.Cache.MessageCache.Noop will be used for caching\nmessages. You can override this in the `:caches` option of the `nostrum`\napplication by setting the `:messages` field to a different module, or\nto the tuple `{module, config}` where `module` is the module to use and\n`config` is any compile-time configuration to pass to the module.\n\nUnlike the other caches, the default is a no-op cache, as messages take\nup a lot of memory and most bots do not need messages to be cached.\nIf you would like to cache messages, you can change the cache implementation\nto one of the provided modules under `Nostrum.Cache.MessageCache`\nor write your own.","title":"Nostrum.Cache.MessageCache","ref":"Nostrum.Cache.MessageCache.html"},{"type":"behaviour","doc":"As with the other caches, the message cache API consists of two parts:\n\n- The functions that nostrum calls, such as `c:create/1` or `c:update/1`.\nThese **do not create any objects in the Discord API**, they are purely\ncreated to update the cached data from data that Discord sends us. If you\nwant to create objects on Discord, use the functions exposed by `Nostrum.Api` instead.\n\n- the `c:child_spec/1` callback for starting the cache under a supervisor.\n\nYou need to implement both of them for nostrum to work with your custom\ncache.","title":"Writing your own message cache - Nostrum.Cache.MessageCache","ref":"Nostrum.Cache.MessageCache.html#module-writing-your-own-message-cache"},{"type":"callback","doc":"Deletes multiple messages from the cache, any message IDs given\nwill always be for the same channel.\n\nReturns a list of the deleted messages.\nNote that if a message was not found in the cache, it will\nnot be included in the returned list.","title":"Nostrum.Cache.MessageCache.bulk_delete/2","ref":"Nostrum.Cache.MessageCache.html#c:bulk_delete/2"},{"type":"callback","doc":"Called when a channel is deleted.\n\nAny messages in the cache for the channel should be removed.","title":"Nostrum.Cache.MessageCache.channel_delete/1","ref":"Nostrum.Cache.MessageCache.html#c:channel_delete/1"},{"type":"callback","doc":"Retrieve the child spec for starting the cache under a supervisor.\n\nThis callback is optional, and if not implemented, the cache will not be\nstarted under a supervisor.","title":"Nostrum.Cache.MessageCache.child_spec/1","ref":"Nostrum.Cache.MessageCache.html#c:child_spec/1"},{"type":"callback","doc":"Creates a message in the cache.\n\nThe argument given is the raw message payload from Discord's gateway.","title":"Nostrum.Cache.MessageCache.create/1","ref":"Nostrum.Cache.MessageCache.html#c:create/1"},{"type":"callback","doc":"Deletes a message from the cache.\n\nExpects the deleted message to be returned if it was found.","title":"Nostrum.Cache.MessageCache.delete/2","ref":"Nostrum.Cache.MessageCache.html#c:delete/2"},{"type":"function","doc":"Retrieve a message from the cache by channel and message id.","title":"Nostrum.Cache.MessageCache.get/1","ref":"Nostrum.Cache.MessageCache.html#get/1"},{"type":"callback","doc":"Retrieve a single `Nostrum.Struct.Message` from the cache by its ID.","title":"Nostrum.Cache.MessageCache.get/1","ref":"Nostrum.Cache.MessageCache.html#c:get/1"},{"type":"function","doc":"Retrieve a list of messages from the cache with a given author ID,\noptionally after a given date, and before a given date.\n\nIntegers are treated as snowflakes, and the atom `:infinity` when given\nas a before date will be treated as the maximum possible date.","title":"Nostrum.Cache.MessageCache.get_by_author/4","ref":"Nostrum.Cache.MessageCache.html#get_by_author/4"},{"type":"function","doc":"Retrieve a list of messages from the cache with a given channel ID,\nafter a given date, and before a given date.\n\nIntegers are treated as snowflakes, and the atom `:infinity` when given\nas a before date will be treated as the maximum possible date.","title":"Nostrum.Cache.MessageCache.get_by_channel/4","ref":"Nostrum.Cache.MessageCache.html#get_by_channel/4"},{"type":"function","doc":"Retrieve a list of messages from the cache with a given channel ID and author ID,\noptionally after a given date, and before a given date.","title":"Nostrum.Cache.MessageCache.get_by_channel_and_author/5","ref":"Nostrum.Cache.MessageCache.html#get_by_channel_and_author/5"},{"type":"function","doc":"Return the QLC handle of the configured cache.","title":"Nostrum.Cache.MessageCache.query_handle/0","ref":"Nostrum.Cache.MessageCache.html#query_handle/0"},{"type":"callback","doc":"Return a QLC query handle for the cache for read operations.\n\nThis is used by nostrum to provide any read operations on the cache. Write\noperations still need to be implemented separately.\n\nThe Erlang manual on [Implementing a QLC\nTable](https://www.erlang.org/doc/man/qlc.html#implementing_a_qlc_table)\ncontains examples for implementation. To prevent full table scans, accept\nmatch specifications in your `TraverseFun` and implement a `LookupFun` as\ndocumented.\n\nThe query handle must return items in the form `{message_id, message}`, where:\n- `message_id` is a `t:Nostrum.Struct.Message.id/0`\n- `message` is a `t:Nostrum.Struct.Message.t/0`\n\nIf your cache needs some form of setup or teardown for QLC queries (such as\nopening connections), see `c:wrap_qlc/1`.","title":"Nostrum.Cache.MessageCache.query_handle/0","ref":"Nostrum.Cache.MessageCache.html#c:query_handle/0"},{"type":"callback","doc":"Updates a message in the cache.\n\nThe argument given is the raw message payload from Discord's gateway,\nand the return value is a tuple of the updated message and the old message if\nit was found in the cache, otherwise `nil`.","title":"Nostrum.Cache.MessageCache.update/1","ref":"Nostrum.Cache.MessageCache.html#c:update/1"},{"type":"callback","doc":"A function that should wrap any `:qlc` operations.\n\nIf you implement a cache that is backed by a database and want to perform\ncleanup and teardown actions such as opening and closing connections,\nmanaging transactions and so on, you want to implement this function. nostrum\nwill then effectively call `wrap_qlc(fn -> :qlc.e(...) end)`.\n\nIf your cache does not need any wrapping, you can omit this.","title":"Nostrum.Cache.MessageCache.wrap_qlc/1","ref":"Nostrum.Cache.MessageCache.html#c:wrap_qlc/1"},{"type":"function","doc":"Call `c:wrap_qlc/1` on the given cache, if implemented.\n\nIf no cache is given, calls out to the default cache.","title":"Nostrum.Cache.MessageCache.wrap_qlc/2","ref":"Nostrum.Cache.MessageCache.html#wrap_qlc/2"},{"type":"type","doc":"Used to constrain the return values of functions that can return\na list of messages from the cache.","title":"Nostrum.Cache.MessageCache.timestamp_like/0","ref":"Nostrum.Cache.MessageCache.html#t:timestamp_like/0"},{"type":"behaviour","doc":"Cache behaviour & dispatcher for Discord presences.\n\nBy default, `Elixir.Nostrum.Cache.PresenceCache.ETS` will be use for caching\npresences. You can override this in the `:caches` option of the `nostrum`\napplication by setting the `:presences` fields to a different module\nimplementing the `Nostrum.Cache.PresenceCache` behaviour. Any module below\n`Nostrum.Cache.PresenceCache` implements this behaviour and can be used as a\ncache.","title":"Nostrum.Cache.PresenceCache","ref":"Nostrum.Cache.PresenceCache.html"},{"type":"behaviour","doc":"As with the other caches, the presence cache API consists of two parts:\n\n- The functions that nostrum calls, such as `c:create/1` or `c:update/1`.\nThese **do not create any objects in the Discord API**, they are purely\ncreated to update the cached data from data that Discord sends us. If you\nwant to create objects on Discord, use the functions exposed by `Nostrum.Api`\ninstead.\n\n- the QLC query handle for read operations, `c:query_handle/0`, and\n\n- the `c:child_spec/1` callback for starting the cache under a supervisor.\n\nYou need to implement both of them for nostrum to work with your custom\ncache.","title":"Writing your own presence cache - Nostrum.Cache.PresenceCache","ref":"Nostrum.Cache.PresenceCache.html#module-writing-your-own-presence-cache"},{"type":"callback","doc":"Bulk create multiple presences for the given guild in the cache.","title":"Nostrum.Cache.PresenceCache.bulk_create/2","ref":"Nostrum.Cache.PresenceCache.html#c:bulk_create/2"},{"type":"callback","doc":"Retrieve the child specification for starting this mapping under a supervisor.","title":"Nostrum.Cache.PresenceCache.child_spec/1","ref":"Nostrum.Cache.PresenceCache.html#c:child_spec/1"},{"type":"callback","doc":"Create a presence in the cache.","title":"Nostrum.Cache.PresenceCache.create/1","ref":"Nostrum.Cache.PresenceCache.html#c:create/1"},{"type":"function","doc":"Retrieves a presence for a user from the cache by guild and id.\n\nIf successful, returns `{:ok, presence}`. Otherwise returns `{:error, reason}`.","title":"Nostrum.Cache.PresenceCache.get/3","ref":"Nostrum.Cache.PresenceCache.html#get/3"},{"type":"function","doc":"```elixir\ncase Nostrum.Cache.PresenceCache.get(111133335555, 222244446666) do\n {:ok, presence} ->\n \"They're #{presence.status}\"\n {:error, _reason} ->\n \"They're dead Jim\"\nend\n```","title":"Example - Nostrum.Cache.PresenceCache.get/3","ref":"Nostrum.Cache.PresenceCache.html#get/3-example"},{"type":"function","doc":"Same as `get/1`, but raise `Nostrum.Error.CacheError` in case of a failure.","title":"Nostrum.Cache.PresenceCache.get!/3","ref":"Nostrum.Cache.PresenceCache.html#get!/3"},{"type":"function","doc":"Return the QLC handle of the configured cache.","title":"Nostrum.Cache.PresenceCache.query_handle/0","ref":"Nostrum.Cache.PresenceCache.html#query_handle/0"},{"type":"callback","doc":"Return a QLC query handle for cache read operations.\n\nThis is used by nostrum to provide any read operations on the cache. Write\noperations still need to be implemented separately.\n\nThe Erlang manual on [Implementing a QLC\nTable](https://www.erlang.org/doc/man/qlc.html#implementing_a_qlc_table)\ncontains examples for implementation. To prevent full table scans, accept\nmatch specifications in your `TraverseFun` and implement a `LookupFun` as\ndocumented.\n\nThe query handle must return items in the form `{{guild_id, user_id}, presence}`, where:\n- `guild_id` is a `t:Nostrum.Struct.Guild.id/0`, and\n- `user_id` is a `t:Nostrum.Struct.User.id/0`, and\n- `presence` is a `t:presence/0`.\n\nIf your cache needs some form of setup or teardown for QLC queries (such as\nopening connections), see `c:wrap_qlc/1`.","title":"Nostrum.Cache.PresenceCache.query_handle/0","ref":"Nostrum.Cache.PresenceCache.html#c:query_handle/0"},{"type":"callback","doc":"Update the given presence in the cache from upstream data.","title":"Nostrum.Cache.PresenceCache.update/1","ref":"Nostrum.Cache.PresenceCache.html#c:update/1"},{"type":"callback","doc":"Return the guild ID along with the old presence (if it was cached, otherwise\n`nil`) and the updated presence structure. If the `:activities` or `:status`\nfields of the presence did not change, return `:noop`.","title":"Return value - Nostrum.Cache.PresenceCache.update/1","ref":"Nostrum.Cache.PresenceCache.html#c:update/1-return-value"},{"type":"callback","doc":"A function that should wrap any `:qlc` operations.\n\nIf you implement a cache that is backed by a database and want to perform\ncleanup and teardown actions such as opening and closing connections,\nmanaging transactions and so on, you want to implement this function. nostrum\nwill then effectively call `wrap_qlc(fn -> :qlc.e(...) end)`.\n\nIf your cache does not need any wrapping, you can omit this.","title":"Nostrum.Cache.PresenceCache.wrap_qlc/1","ref":"Nostrum.Cache.PresenceCache.html#c:wrap_qlc/1"},{"type":"function","doc":"Call `c:wrap_qlc/1` on the given cache, if implemented.\n\nIf no cache is given, calls out to the default cache.","title":"Nostrum.Cache.PresenceCache.wrap_qlc/2","ref":"Nostrum.Cache.PresenceCache.html#wrap_qlc/2"},{"type":"opaque","doc":"Represents a presence as received from Discord.\nSee [Presence Update](https://discord.com/developers/docs/topics/gateway#presence-update).","title":"Nostrum.Cache.PresenceCache.presence/0","ref":"Nostrum.Cache.PresenceCache.html#t:presence/0"},{"type":"behaviour","doc":"Cache behaviour & dispatcher for users.\n\nYou can call the functions provided by this module independent of which cache\nis configured, and it will dispatch to the configured cache implementation.\n\nBy default, Elixir.Nostrum.Cache.UserCache.ETS will be used for caching users.\nYou can override this in the `:caches` option of the `:nostrum` application\nby setting the `:users` field to a different module implementing the behaviour\ndefined by this module.\n\nSee the documentation for the `Nostrum.Cache.GuildCache` module for more details.","title":"Nostrum.Cache.UserCache","ref":"Nostrum.Cache.UserCache.html"},{"type":"callback","doc":"Bulk add multiple users to the cache at once.\n\nReturns `:ok`.","title":"Nostrum.Cache.UserCache.bulk_create/1","ref":"Nostrum.Cache.UserCache.html#c:bulk_create/1"},{"type":"callback","doc":"Retrieve the child specification for starting this mapping under a supervisor.","title":"Nostrum.Cache.UserCache.child_spec/1","ref":"Nostrum.Cache.UserCache.html#c:child_spec/1"},{"type":"callback","doc":"Add a new user to the cache based on the Discord Gateway payload.\n\nReturns a `t:Nostrum.Struct.User.t/0` struct representing the created user.","title":"Nostrum.Cache.UserCache.create/1","ref":"Nostrum.Cache.UserCache.html#c:create/1"},{"type":"callback","doc":"Delete a user by ID.\n\nReturns the deleted user if present in the cache, or\n`:noop` if the user was not cached.","title":"Nostrum.Cache.UserCache.delete/1","ref":"Nostrum.Cache.UserCache.html#c:delete/1"},{"type":"function","doc":"Retrieves a user from the cache by id.\n\nThis function can be called with the cache to use as an optional argument. By\ndefault, the cache configured at compile time is used.","title":"Nostrum.Cache.UserCache.get/2","ref":"Nostrum.Cache.UserCache.html#get/2"},{"type":"function","doc":"```elixir\ncase Nostrum.Cache.UserCache.get(1111222233334444) do\n {:ok, user} ->\n \"We found \" <> user.username\n {:error, _reason} ->\n \"No es bueno\"\nend\n```","title":"Example - Nostrum.Cache.UserCache.get/2","ref":"Nostrum.Cache.UserCache.html#get/2-example"},{"type":"function","doc":"Same as `get/1`, but raises `Nostrum.Error.CacheError` in case of a failure.","title":"Nostrum.Cache.UserCache.get!/1","ref":"Nostrum.Cache.UserCache.html#get!/1"},{"type":"function","doc":"Call `c:query_handle/0` on the configured cache.","title":"Nostrum.Cache.UserCache.query_handle/0","ref":"Nostrum.Cache.UserCache.html#query_handle/0"},{"type":"callback","doc":"Return a query handle for usage with `:qlc`.\n\nThis is used by nostrum to provide automatic joins between the member and the\nuser cache, and may be used for other functions in the future.\n\nThe Erlang manual on [Implementing a QLC\nTable](https://www.erlang.org/doc/man/qlc.html#implementing_a_qlc_table)\ncontains examples for implementation.\n\nThe query handle must return items in the form `{user_id, user}`, where\n`user_id` is a `t:Nostrum.Struct.User.id/0` and `user` is a\n`t:Nostrum.Struct.User.t/0`.","title":"Nostrum.Cache.UserCache.query_handle/0","ref":"Nostrum.Cache.UserCache.html#c:query_handle/0"},{"type":"callback","doc":"Update a user in the cache based on payload sent via the Gateway.\n\nReturns `:noop` if the user has not been updated in the cache, or\n`{old_user, new_user}` is the user has been written to the cache.","title":"Nostrum.Cache.UserCache.update/1","ref":"Nostrum.Cache.UserCache.html#c:update/1"},{"type":"callback","doc":"A function that should wrap any `:qlc` operations.\n\nIf you implement a cache that is backed by a database and want to perform\ncleanup and teardown actions such as opening and closing connections,\nmanaging transactions and so on, you want to implement this function. Nostrum\nwill then effectively call `wrap_qlc(fn -> :qlc.e(...) end)`.\n\nIf your cache does not need any wrapping, you can omit this.","title":"Nostrum.Cache.UserCache.wrap_qlc/1","ref":"Nostrum.Cache.UserCache.html#c:wrap_qlc/1"},{"type":"function","doc":"Call `c:wrap_qlc/1` on the given cache, if implemented.\n\nIf no cache is given, calls out to the default cache.","title":"Nostrum.Cache.UserCache.wrap_qlc/2","ref":"Nostrum.Cache.UserCache.html#wrap_qlc/2"},{"type":"module","doc":"Typespecs for creating Application Commands\n\nOfficial reference:\nhttps://discord.com/developers/docs/interactions/application-commands","title":"Nostrum.Struct.ApplicationCommand","ref":"Nostrum.Struct.ApplicationCommand.html"},{"type":"type","doc":"When editing an existing application command, only the following fields may be updated,\nmissing fields will remain unchanged.","title":"Nostrum.Struct.ApplicationCommand.application_command_edit_map/0","ref":"Nostrum.Struct.ApplicationCommand.html#t:application_command_edit_map/0"},{"type":"type","doc":"This defines the map for creating an application command.\n\n`:default_permission` is for if the command is enabled for all users by default\n\nFor more information see [the official documentation](https://discord.com/developers/docs/interactions/application-commands)","title":"Nostrum.Struct.ApplicationCommand.application_command_map/0","ref":"Nostrum.Struct.ApplicationCommand.html#t:application_command_map/0"},{"type":"type","doc":"- `1` for `ROLE`\n- `2` for `USER`\n- `3` for `CHANNEL`\n\nYou can use one of the `Nostrum.Constants.ApplicationCommandPermissionType` methods.","title":"Nostrum.Struct.ApplicationCommand.application_command_permission_type/0","ref":"Nostrum.Struct.ApplicationCommand.html#t:application_command_permission_type/0"},{"type":"type","doc":"For editing the permissions for an application command\n - `:id` is the id of the role or user\n - `:type` is the type of the id, either `role` or `user`\n - `:allow` is whether the role or user should be allowed to use the command","title":"Nostrum.Struct.ApplicationCommand.application_command_permissions/0","ref":"Nostrum.Struct.ApplicationCommand.html#t:application_command_permissions/0"},{"type":"type","doc":"If you specify choices for a command those become the only valid options for the user to select from.","title":"Nostrum.Struct.ApplicationCommand.command_choice/0","ref":"Nostrum.Struct.ApplicationCommand.html#t:command_choice/0"},{"type":"type","doc":"The description of the command, subcommand, or command_option.\nFor `CHAT_INPUT` commands, it must be between 1 and 100 characters in length.\nFor `USER` and `MESSAGE` commands it must be an empty string.","title":"Nostrum.Struct.ApplicationCommand.command_description/0","ref":"Nostrum.Struct.ApplicationCommand.html#t:command_description/0"},{"type":"type","doc":"The name of the command, subcommand, or command_option.\nIt must be between 1 and 32 characters in length and match the following regex: `^[w-]{1,32}$`.\nOnly `USER` and `MESSAGE` commands may include uppercase letters and spaces.","title":"Nostrum.Struct.ApplicationCommand.command_name/0","ref":"Nostrum.Struct.ApplicationCommand.html#t:command_name/0"},{"type":"type","doc":"This defines a command's parameters. Only valid for `CHAT_INPUT` commands.","title":"Nostrum.Struct.ApplicationCommand.command_option/0","ref":"Nostrum.Struct.ApplicationCommand.html#t:command_option/0"},{"type":"type","doc":"- required parameters on a command must precede optional ones\n - for subcommands and subcommand groups, `:options` are its parameters\n - `:options` and `:choices` are mutually exclusive\n - `:autocomplete` must not be set to true if `:choices` is present\n - if `:type` is 7 then `:channel_types` can be a list of allowed [channel types](https://discord.com/developers/docs/resources/channel#channel-object-channel-types)","title":"Notes - Nostrum.Struct.ApplicationCommand.command_option/0","ref":"Nostrum.Struct.ApplicationCommand.html#t:command_option/0-notes"},{"type":"type","doc":"Indicates what type of argument the command expects.\n\n- `1` for `SUB_COMMAND`\n- `2` for `SUB_COMMAND_GROUP`\n- `3` for `​STRING`\n- `4` for `​INTEGER` *Note*: due to API limitations they can only be between -2^53 and 2^53\n- `5` for `BOOLEAN`\n- `6` for `USER`\n- `7` for `CHANNEL`\n- `8` for `ROLE`\n- `9` for `MENTIONABLE` *Note*: Includes users and roles\n- `10` for `NUMBER` *Note*: This has the same limitations as `​INTEGER`\n\nYou may use one of the `Nostrum.Constants.ApplicationCommandOptionType` methods.","title":"Nostrum.Struct.ApplicationCommand.command_option_type/0","ref":"Nostrum.Struct.ApplicationCommand.html#t:command_option_type/0"},{"type":"type","doc":"The type of application command you wish to create\n- `1` for `CHAT_INPUT`, regular slash commands (default)\n- `2` for `USER`, right-click menu commands on a specific user\n- `3` for `MESSAGE`, right-click menu commands on a specific message\n\nYou may use one of the `Nostrum.Constants.ApplicationCommandType` methods.","title":"Nostrum.Struct.ApplicationCommand.command_type/0","ref":"Nostrum.Struct.ApplicationCommand.html#t:command_type/0"},{"type":"module","doc":"Struct for interaction data.","title":"Nostrum.Struct.ApplicationCommandInteractionData","ref":"Nostrum.Struct.ApplicationCommandInteractionData.html"},{"type":"type","doc":"For components, the ``type`` of the component","title":"Nostrum.Struct.ApplicationCommandInteractionData.component_type/0","ref":"Nostrum.Struct.ApplicationCommandInteractionData.html#t:component_type/0"},{"type":"type","doc":"For Modal Sumbit interactions, this will contain the values the user submitted.","title":"Nostrum.Struct.ApplicationCommandInteractionData.components/0","ref":"Nostrum.Struct.ApplicationCommandInteractionData.html#t:components/0"},{"type":"type","doc":"For components, the ``custom_id`` of the component","title":"Nostrum.Struct.ApplicationCommandInteractionData.custom_id/0","ref":"Nostrum.Struct.ApplicationCommandInteractionData.html#t:custom_id/0"},{"type":"type","doc":"ID of the invoked command","title":"Nostrum.Struct.ApplicationCommandInteractionData.id/0","ref":"Nostrum.Struct.ApplicationCommandInteractionData.html#t:id/0"},{"type":"type","doc":"The type of application command invoked.\nOfficial reference:\nhttps://discord.com/developers/docs/interactions/application-commands#application-command-object-application-command-types","title":"Nostrum.Struct.ApplicationCommandInteractionData.interaction_type/0","ref":"Nostrum.Struct.ApplicationCommandInteractionData.html#t:interaction_type/0"},{"type":"type","doc":"Name of the invoked command","title":"Nostrum.Struct.ApplicationCommandInteractionData.name/0","ref":"Nostrum.Struct.ApplicationCommandInteractionData.html#t:name/0"},{"type":"type","doc":"Parameters and values supplied by the user, if applicable","title":"Nostrum.Struct.ApplicationCommandInteractionData.options/0","ref":"Nostrum.Struct.ApplicationCommandInteractionData.html#t:options/0"},{"type":"type","doc":"Converted users & roles & channels","title":"Nostrum.Struct.ApplicationCommandInteractionData.resolved/0","ref":"Nostrum.Struct.ApplicationCommandInteractionData.html#t:resolved/0"},{"type":"type","doc":"For select menu components, this will be a list of the values the user selected.","title":"Nostrum.Struct.ApplicationCommandInteractionData.select_values/0","ref":"Nostrum.Struct.ApplicationCommandInteractionData.html#t:select_values/0"},{"type":"type","doc":"Command interaction data for slash commands.\n\nUsed as part of `t:Nostrum.Struct.Interaction.t/0`.\n\nOfficial reference:\nhttps://discord.com/developers/docs/interactions/receiving-and-responding#interaction-object","title":"Nostrum.Struct.ApplicationCommandInteractionData.t/0","ref":"Nostrum.Struct.ApplicationCommandInteractionData.html#t:t/0"},{"type":"type","doc":"ID of the user or message targeted by a context menu command","title":"Nostrum.Struct.ApplicationCommandInteractionData.target_id/0","ref":"Nostrum.Struct.ApplicationCommandInteractionData.html#t:target_id/0"},{"type":"module","doc":"Struct for command invocation arguments.","title":"Nostrum.Struct.ApplicationCommandInteractionDataOption","ref":"Nostrum.Struct.ApplicationCommandInteractionDataOption.html"},{"type":"type","doc":"Whether this parameter is focused for `autocomplete` interactions.","title":"Nostrum.Struct.ApplicationCommandInteractionDataOption.focused/0","ref":"Nostrum.Struct.ApplicationCommandInteractionDataOption.html#t:focused/0"},{"type":"type","doc":"Parameter name","title":"Nostrum.Struct.ApplicationCommandInteractionDataOption.name/0","ref":"Nostrum.Struct.ApplicationCommandInteractionDataOption.html#t:name/0"},{"type":"type","doc":"Parameter options for subcommands.\n\nMutually exclusive with `value`.","title":"Nostrum.Struct.ApplicationCommandInteractionDataOption.options/0","ref":"Nostrum.Struct.ApplicationCommandInteractionDataOption.html#t:options/0"},{"type":"type","doc":"Command interaction data struct","title":"Nostrum.Struct.ApplicationCommandInteractionDataOption.t/0","ref":"Nostrum.Struct.ApplicationCommandInteractionDataOption.html#t:t/0"},{"type":"type","doc":"The application command option type.\n\nSee https://discord.com/developers/docs/interactions/application-commands#application-command-object-application-command-option-type\nfor more details.\n\nYou can use one of the `Nostrum.Constants.ApplicationCommandOptionType` methods.","title":"Nostrum.Struct.ApplicationCommandInteractionDataOption.type/0","ref":"Nostrum.Struct.ApplicationCommandInteractionDataOption.html#t:type/0"},{"type":"type","doc":"Parameter value.\n\nThe type of this depends on the `t:type/0`:\n\n- For `t:type/0` of `3`, this will be a `t:String.t/0`.\n- For `t:type/0` of `4`, this will be a `t:integer/0`.\n- For `t:type/0` of `5`, this will be a `t:boolean/0`.\n- For `t:type/0` of `6`, this will be a `t:Nostrum.Struct.User.id/0`. The\n corresponding guild member _and_ user can be looked up in\n `t:Nostrum.Struct.ApplicationCommandInteractionData.resolved/0`.\n- For `t:type/0` of `7`, this will be a `t:Nostrum.Struct.Channel.id/0`. The\n corresponding channel can be looked up in\n `t:Nostrum.Struct.ApplicationCommandInteractionData.resolved/0`.\n- For `t:type/0` of `8`, this will be a `t:Nostrum.Struct.Guild.Role.id/0`. The\n corresponding role can be looked up in\n `t:Nostrum.Struct.ApplicationCommandInteractionData.resolved/0`.\n- For `t:type/0` of `9`, this will be a `t:Nostrum.Struct.User.id/0` or `t:Nostrum.Struct.Guild.Role.id/0`. The\n corresponding user or role can be looked up in\n `t:Nostrum.Struct.ApplicationCommandInteractionData.resolved/0`.\n- For `t:type/0` of `10`, this will be a `t:number/0`.\n\nMutually exclusive with `options`. If `options` is not `nil`, this will be `nil`.","title":"Nostrum.Struct.ApplicationCommandInteractionDataOption.value/0","ref":"Nostrum.Struct.ApplicationCommandInteractionDataOption.html#t:value/0"},{"type":"module","doc":"Converted interaction payload.","title":"Nostrum.Struct.ApplicationCommandInteractionDataResolved","ref":"Nostrum.Struct.ApplicationCommandInteractionDataResolved.html"},{"type":"type","doc":"Attachments sent along with the interaction.","title":"Nostrum.Struct.ApplicationCommandInteractionDataResolved.attachments/0","ref":"Nostrum.Struct.ApplicationCommandInteractionDataResolved.html#t:attachments/0"},{"type":"type","doc":"IDs and corresponding partial channels.\n\nThe channels in this map *only* have the following keys set:\n\n- ``id``\n- ``name``\n- ``type``\n- ``permissions``","title":"Nostrum.Struct.ApplicationCommandInteractionDataResolved.channels/0","ref":"Nostrum.Struct.ApplicationCommandInteractionDataResolved.html#t:channels/0"},{"type":"type","doc":"IDs and corresponding partial members.\n\nThese members are *missing* values on the following fields:\n\n- ``user``\n- ``deaf``\n- ``mute``\n\nThe corresponding user data can be looked up in ``users``. For members that\nare part of this map, data for the corresponding user will always be included.","title":"Nostrum.Struct.ApplicationCommandInteractionDataResolved.members/0","ref":"Nostrum.Struct.ApplicationCommandInteractionDataResolved.html#t:members/0"},{"type":"type","doc":"The IDs and corresponding messages.","title":"Nostrum.Struct.ApplicationCommandInteractionDataResolved.messages/0","ref":"Nostrum.Struct.ApplicationCommandInteractionDataResolved.html#t:messages/0"},{"type":"type","doc":"IDs and corresponding roles","title":"Nostrum.Struct.ApplicationCommandInteractionDataResolved.roles/0","ref":"Nostrum.Struct.ApplicationCommandInteractionDataResolved.html#t:roles/0"},{"type":"type","doc":"Resolved interaction data","title":"Nostrum.Struct.ApplicationCommandInteractionDataResolved.t/0","ref":"Nostrum.Struct.ApplicationCommandInteractionDataResolved.html#t:t/0"},{"type":"type","doc":"IDs and corresponding users","title":"Nostrum.Struct.ApplicationCommandInteractionDataResolved.users/0","ref":"Nostrum.Struct.ApplicationCommandInteractionDataResolved.html#t:users/0"},{"type":"module","doc":"Struct representing an auto-moderation rule.","title":"Nostrum.Struct.AutoModerationRule","ref":"Nostrum.Struct.AutoModerationRule.html"},{"type":"type","doc":"A list of Actions which will be performed when the rule is triggered.","title":"Nostrum.Struct.AutoModerationRule.actions/0","ref":"Nostrum.Struct.AutoModerationRule.html#t:actions/0"},{"type":"type","doc":"The id of the user who created the rule","title":"Nostrum.Struct.AutoModerationRule.creator_id/0","ref":"Nostrum.Struct.AutoModerationRule.html#t:creator_id/0"},{"type":"type","doc":"If the rule is enabled or not.","title":"Nostrum.Struct.AutoModerationRule.enabled/0","ref":"Nostrum.Struct.AutoModerationRule.html#t:enabled/0"},{"type":"type","doc":"Indicates in what event context a rule should be checked\n\n| value | type | description\n| ---- | ---- | -----------\n|`1` | `MESSAGE_SEND` | when a member sends or edits a message in a guild","title":"Nostrum.Struct.AutoModerationRule.event_type/0","ref":"Nostrum.Struct.AutoModerationRule.html#t:event_type/0"},{"type":"type","doc":"A list of channels that are exempt from the rule","title":"Nostrum.Struct.AutoModerationRule.exempt_channels/0","ref":"Nostrum.Struct.AutoModerationRule.html#t:exempt_channels/0"},{"type":"type","doc":"A list of roles that are exempt from the rule.","title":"Nostrum.Struct.AutoModerationRule.exempt_roles/0","ref":"Nostrum.Struct.AutoModerationRule.html#t:exempt_roles/0"},{"type":"type","doc":"The id of the guild the rule belongs to","title":"Nostrum.Struct.AutoModerationRule.guild_id/0","ref":"Nostrum.Struct.AutoModerationRule.html#t:guild_id/0"},{"type":"type","doc":"The id of the auto-moderation rule","title":"Nostrum.Struct.AutoModerationRule.id/0","ref":"Nostrum.Struct.AutoModerationRule.html#t:id/0"},{"type":"type","doc":"The name of the rule","title":"Nostrum.Struct.AutoModerationRule.name/0","ref":"Nostrum.Struct.AutoModerationRule.html#t:name/0"},{"type":"type","doc":"Values which represent the different presets defined by Discord\n\n| value | type | description\n| ---- | ---- | -----------\n|`1` | `PROFANITY` | Words which may be considered profane\n| `2` | `HARMFUL_LINK` | Words that refer to sexually explicit behavior or activity\n| `3` | `SLURS` | Personal insults or words that may be considered hate speech","title":"Nostrum.Struct.AutoModerationRule.preset_values/0","ref":"Nostrum.Struct.AutoModerationRule.html#t:preset_values/0"},{"type":"type","doc":"","title":"Nostrum.Struct.AutoModerationRule.t/0","ref":"Nostrum.Struct.AutoModerationRule.html#t:t/0"},{"type":"type","doc":"Additional data used to determine if the rule should triggered.\n\nThe `t:trigger_type/0` field will determine which of the following fields are present.\n\n| key | associated `trigger_type`\n| ---- | -----------\n| `keywords` | `​KEYWORD`\n| `preset` | `KEYWORD_PRESET`","title":"Nostrum.Struct.AutoModerationRule.trigger_metadata/0","ref":"Nostrum.Struct.AutoModerationRule.html#t:trigger_metadata/0"},{"type":"type","doc":"Characters the type of content which triggered the rule\n\n| value | type | max per guild | description\n| ---- | ---- | ----- | -----------\n|`1` | `​KEYWORD` | 3 | check if content contains words from a user defined list of keywords\n| `2` | `HARMFUL_LINK` | 1 | check if the content contains any harmful links\n| `3` | `SPAM` | 1 | check if the content represents generic spam\n| `4` | `KEYWORD_PRESET `| 1 | check if the content contains a list of discord defined keywords\n\nnote: `HARMFUL_LINK` and `SPAM` are not yet offically released at the time of this writing.","title":"Nostrum.Struct.AutoModerationRule.trigger_type/0","ref":"Nostrum.Struct.AutoModerationRule.html#t:trigger_type/0"},{"type":"module","doc":"Defines an action to be taken when a rule is triggered.","title":"Nostrum.Struct.AutoModerationRule.Action","ref":"Nostrum.Struct.AutoModerationRule.Action.html"},{"type":"type","doc":"The type of action to be taken.\n\n| value | action | description\n| ---- | ---- | -----------\n|`1` | `BLOCK_MESSAGE` | Blocks the message from being created\n| `2` | `SEND_ALERT_MESSAGE` | Logs the content of the message in the specified channel\n| `3` | `TIMEOUT` | timeout a user for a specified duration","title":"Nostrum.Struct.AutoModerationRule.Action.action_type/0","ref":"Nostrum.Struct.AutoModerationRule.Action.html#t:action_type/0"},{"type":"type","doc":"","title":"Nostrum.Struct.AutoModerationRule.Action.metadata/0","ref":"Nostrum.Struct.AutoModerationRule.Action.html#t:metadata/0"},{"type":"type","doc":"","title":"Nostrum.Struct.AutoModerationRule.Action.t/0","ref":"Nostrum.Struct.AutoModerationRule.Action.html#t:t/0"},{"type":"module","doc":"Struct representing any additional data used when an action is taken.","title":"Nostrum.Struct.AutoModerationRule.ActionMetadata","ref":"Nostrum.Struct.AutoModerationRule.ActionMetadata.html"},{"type":"type","doc":"The id of the channel to send an alert message to.","title":"Nostrum.Struct.AutoModerationRule.ActionMetadata.send_alert_message_metadata/0","ref":"Nostrum.Struct.AutoModerationRule.ActionMetadata.html#t:send_alert_message_metadata/0"},{"type":"type","doc":"The type of metadata present depends on the action type.\n\n| value | type\n| ---- | ----\n| `channel_id` | `SEND_ALERT_MESSAGE`\n| `duration_seconds` | `TIMEOUT`","title":"Nostrum.Struct.AutoModerationRule.ActionMetadata.t/0","ref":"Nostrum.Struct.AutoModerationRule.ActionMetadata.html#t:t/0"},{"type":"type","doc":"The number of seconds to timeout the user for,\nhas a maximum of 2419200 seconds (4 weeks).","title":"Nostrum.Struct.AutoModerationRule.ActionMetadata.timeout_metadata/0","ref":"Nostrum.Struct.AutoModerationRule.ActionMetadata.html#t:timeout_metadata/0"},{"type":"module","doc":"Struct representing the metadata of a trigger.","title":"Nostrum.Struct.AutoModerationRule.TriggerMetadata","ref":"Nostrum.Struct.AutoModerationRule.TriggerMetadata.html"},{"type":"type","doc":"Contains the list of keywords to that will trigger the rule.","title":"Nostrum.Struct.AutoModerationRule.TriggerMetadata.keyword_metadata/0","ref":"Nostrum.Struct.AutoModerationRule.TriggerMetadata.html#t:keyword_metadata/0"},{"type":"type","doc":"A list of Values which represent the different presets defined by Discord\n\n| value | type | description\n| ---- | ---- | -----------\n| `1` | `PROFANITY` | Words which may be considered profane\n| `2` | `HARMFUL_LINK` | Words that refer to sexually explicit behavior or activity\n| `3` | `SLURS` | Personal insults or words that may be considered hate speech","title":"Nostrum.Struct.AutoModerationRule.TriggerMetadata.preset_value_metadata/0","ref":"Nostrum.Struct.AutoModerationRule.TriggerMetadata.html#t:preset_value_metadata/0"},{"type":"type","doc":"Additional data used to determine if the rule should triggered.\n\nThe `t:Nostrum.Struct.AutoModerationRule.trigger_type/0` of the parent struct determine which of the following fields are not `nil`.\n\n| key | associated `trigger_type`\n| ---- | -----------\n| `keywords` | `​KEYWORD`\n| `preset` | `KEYWORD_PRESET`","title":"Nostrum.Struct.AutoModerationRule.TriggerMetadata.t/0","ref":"Nostrum.Struct.AutoModerationRule.TriggerMetadata.html#t:t/0"},{"type":"module","doc":"Struct and helper functions for working with channels.","title":"Nostrum.Struct.Channel","ref":"Nostrum.Struct.Channel.html"},{"type":"module","doc":"The channel struct is used by Nostrum to represent a _Discord Channel Object_. More information can be found on the [Discord API Channel Documentation](https://discord.com/developers/docs/resources/channel#channels-resource).\n\nThe struct can have one of several forms depending on the type of channel. You can read more about the individual channel types [below](#module-channel-types).\n\nA typical channel would appear as:\n\n```elixir\n%Nostrum.Struct.Channel{\n guild_id: 766435015768539156,\n id: 827333533688397865,\n name: \"announcements\",\n nsfw: false,\n permission_overwrites: [],\n position: 1,\n type: 5,\n}\n```\n\nThe channel struct implements `String.Chars` protocol through the `mention/1` function. This example uses our channel from the previous code block.\n\n```elixir\nchannel |> to_string()\n\"<#766435015768539156>\"\n```","title":"Channel Struct - Nostrum.Struct.Channel","ref":"Nostrum.Struct.Channel.html#module-channel-struct"},{"type":"module","doc":"Channels are cached within the guild object they are a member of. To fetch a cached channel you should use the `Nostrum.Cache.ChannelGuildMapping` cache to map a cache to a guild ID.\n\nOnce you have a guild ID, you can use the `Nostrum.Cache.GuildCache` to fetch the guild and all channels, then use the `t:Nostrum.Struct.Guild.channels/0` field to find the channel.\n\n> #### Note on DM Channels {: .tip}\n>\n> The `Nostrum.Cache.ChannelGuildMapping` by design only caches a mapping of channels to their respective guilds, and the stored channel object sits within the `Nostrum.Cache.GuildCache`.\n>\n> Due to how Direct Message channels work (no `CHANNEL_CREATE` events, not sent in any gateway events, etc.), we make no attempt to store direct message channels within any of the\n> built-in Nostrum caching adapters.\n>\n> If you wish to implement this functionality yourself, you will have to fetch the channel details from the API by looking at the `channel_id` field of received message objects,\n> you can then store these details in your own choice of caching system (ETS, Mnesia, etc.).","title":"Channel Caching - Nostrum.Struct.Channel","ref":"Nostrum.Struct.Channel.html#module-channel-caching"},{"type":"module","doc":"```elixir\n> guild_id = Nostrum.Cache.ChannelGuildMapping.get(1229955694258684005)\n1226944827137069107\n> {:ok, guild} = Nostrum.Cache.GuildCache.get(guild_id)\n{:ok,\n %Nostrum.Struct.Guild{\n id: 1226944827137069107,\n name: \"Craig Cat Zone\",\n ...\n}}\n> guild.channels[channel_id].name\n\"cat-general\"\n```","title":"Example - Nostrum.Struct.Channel","ref":"Nostrum.Struct.Channel.html#module-example"},{"type":"module","doc":"This module contains two functions for assisting with channel structs. `mention/1` to convert the channel into a mention as a string, and `link/1` to convert the channel into a hyperlink as a string. Further details and examples are detailed in the [Functions section of this module.](#functions)","title":"Helper Functions - Nostrum.Struct.Channel","ref":"Nostrum.Struct.Channel.html#module-helper-functions"},{"type":"module","doc":"The Nostrum Api contains numerous functions related to channels. Notable functions relating to channels are shown below.\n\n- `Nostrum.Api.create_guild_channel/2`\n- `Nostrum.Api.get_channel/1`\n- `Nostrum.Api.modify_channel/3`\n- `Nostrum.Api.delete_channel/2`\n- `Nostrum.Api.add_pinned_channel_message/2`\n- `Nostrum.Api.create_channel_invite/3`\n- `Nostrum.Api.get_guild_channels/1`\n- `Nostrum.Api.modify_guild_channel_positions/2`\n\n> Note: This is not an exhaustive list, for full details please see the `Nostrum.Api` module documentation.","title":"Api Functions - Nostrum.Struct.Channel","ref":"Nostrum.Struct.Channel.html#module-api-functions"},{"type":"module","doc":"Channels take the shape of various types depending on their use and not all fields are always used. The currently implemented channel types are detailed below. The type of channel is determined by the `:type` field.\n\nThis diagram represents the regular channel types `0`, `2`, `5` and `13`.\n\n ![Discord Channels](./assets/channel_types.png)\n\n The currently implemented channel types are:\n\n| |Channel Type | |\n|---- |-------------------- |--------------------------------------------------------------- |\n|`0` |[`GUILD_TEXT`](`t:guild_text_channel/0`) |_A text channel within a server_ |\n|`1` |[`DM`](`t:dm_channel/0`) |_A direct message between users_ |\n|`2` |[`GUILD_VOICE`](`t:guild_voice_channel/0`) |_A voice channel within a server_ |\n|`3` |[`GROUP_DM`](`t:group_dm_channel/0`) |_A direct message between multiple users_ |\n|`4` |[`GUILD_CATEGORY`](`t:guild_category_channel/0`) |_A category that contains up to 50 channels_ |\n|`5` |[`GUILD_NEWS`](`t:guild_news_channel/0`) |_A channel that users can follow and crosspost_ |\n|`6` |[`GUILD_STORE`](`t:guild_store_channel/0`) |_A channel to sell games on Discord_ |\n|`10` |[`GUILD_NEWS_THREAD`](`t:guild_news_thread_channel/0`) |_A temporary sub-channel within a news channel_ |\n|`11` |[`GUILD_PUBLIC_THREAD`](`t:guild_public_thread_channel/0`) |_A temporary sub-channel within a text channel_ |\n|`12` |[`GUILD_PRIVATE_THREAD`](`t:guild_private_thread_channel/0`) |_A temporary private sub-channel within a text channel_ |\n|`13` |[`GUILD_STAGE_VOICE`](`t:guild_stage_voice_channel/0`) |_A voice channel for hosting events with an audience_ |\n|`15` |[`GUILD_FORUM`](`t:guild_forum_channel/0`) |_A channel that can only contain threads |\n\nYou can use one of the `Nostrum.Constants.ChannelType` methods.\n\nMore information about _Discord Channel Types_ can be found on the [Discord API Channel Type Documentation](https://discord.com/developers/docs/resources/channel#channel-object-channel-types).","title":"Channel Types - Nostrum.Struct.Channel","ref":"Nostrum.Struct.Channel.html#module-channel-types"},{"type":"function","doc":"Convert a channel into a mention.\n\nHandles the conversion of a `Nostrum.Struct.Channel` into the required format to _mention_ the channel within a message. Mentioning the channel will provide a clickable link to take the user to the channel.","title":"Nostrum.Struct.Channel.mention/1","ref":"Nostrum.Struct.Channel.html#mention/1"},{"type":"function","doc":"- channel: `t:Nostrum.Struct.Channel.t/0`","title":"Parameters - Nostrum.Struct.Channel.mention/1","ref":"Nostrum.Struct.Channel.html#mention/1-parameters"},{"type":"function","doc":"```elixir\nchannel\n|> Nostrum.Struct.Channel.mention()\n\"<#381889573426429952>\"\n\n```","title":"Examples - Nostrum.Struct.Channel.mention/1","ref":"Nostrum.Struct.Channel.html#mention/1-examples"},{"type":"type","doc":"The id of the application that created a group direct message or thread.\n\nThis applies to bot created channels.","title":"Nostrum.Struct.Channel.application_id/0","ref":"Nostrum.Struct.Channel.html#t:application_id/0"},{"type":"type","doc":"","title":"Nostrum.Struct.Channel.applied_tags/0","ref":"Nostrum.Struct.Channel.html#t:applied_tags/0"},{"type":"type","doc":"When the thread was archived.","title":"Nostrum.Struct.Channel.archive_timestamp/0","ref":"Nostrum.Struct.Channel.html#t:archive_timestamp/0"},{"type":"type","doc":"The threads archived status.","title":"Nostrum.Struct.Channel.archived/0","ref":"Nostrum.Struct.Channel.html#t:archived/0"},{"type":"type","doc":"Archive duration for the thread in minutes.\n\n- 60, 1 hour\n- 1440, 24 hours\n- 4320, 3 days\n- 10080, 7 days","title":"Nostrum.Struct.Channel.auto_archive_duration/0","ref":"Nostrum.Struct.Channel.html#t:auto_archive_duration/0"},{"type":"type","doc":"The bitate of the voice channel.","title":"Nostrum.Struct.Channel.bitrate/0","ref":"Nostrum.Struct.Channel.html#t:bitrate/0"},{"type":"type","doc":"A partial channel object representing a channel mention.\n\nMore information about the _Discord Channel Mention Object_ can be found at the [Discord API Channel Mention Object\nDocumentation](https://discord.com/developers/docs/resources/channel#channel-mention-object).","title":"Nostrum.Struct.Channel.channel_mention/0","ref":"Nostrum.Struct.Channel.html#t:channel_mention/0"},{"type":"type","doc":"Default duration for newly created threads in minutes.\n\n- 60, 1 hour\n- 1440, 24 hours\n- 4320, 3 days\n- 10080, 7 days","title":"Nostrum.Struct.Channel.default_auto_archive_duration/0","ref":"Nostrum.Struct.Channel.html#t:default_auto_archive_duration/0"},{"type":"type","doc":"An object that specifies the emoji to use as the default way to react to a forum post.\n\n`:emoji_id` and `:emoji_name` are mutually exclusive","title":"Nostrum.Struct.Channel.default_reaction_emoji/0","ref":"Nostrum.Struct.Channel.html#t:default_reaction_emoji/0"},{"type":"type","doc":"The `:rate_limit_per_user` which will be applied to threads created in the channel, in seconds.","title":"Nostrum.Struct.Channel.default_thread_rate_limit_per_user/0","ref":"Nostrum.Struct.Channel.html#t:default_thread_rate_limit_per_user/0"},{"type":"type","doc":"Type 1 partial channel object representing a direct message.","title":"Nostrum.Struct.Channel.dm_channel/0","ref":"Nostrum.Struct.Channel.html#t:dm_channel/0"},{"type":"type","doc":"User thread settings, currently only used for notifications.","title":"Nostrum.Struct.Channel.flags/0","ref":"Nostrum.Struct.Channel.html#t:flags/0"},{"type":"type","doc":"A map representing a tag for use in forum channels.\n\n`:moderated` indicates whether the tag can only be added or removed by moderators.\n`:emoji_id` and `:emoji_name` are mutually exclusive and indicate the emoji used to represent the tag.","title":"Nostrum.Struct.Channel.forum_tag/0","ref":"Nostrum.Struct.Channel.html#t:forum_tag/0"},{"type":"type","doc":"Type 3 partial channel object representing a group direct message.","title":"Nostrum.Struct.Channel.group_dm_channel/0","ref":"Nostrum.Struct.Channel.html#t:group_dm_channel/0"},{"type":"type","doc":"Type 4 partial channel object representing a channel category.\n\n> Note: Other channels `parent_id` field refers to this type of object.","title":"Nostrum.Struct.Channel.guild_category_channel/0","ref":"Nostrum.Struct.Channel.html#t:guild_category_channel/0"},{"type":"type","doc":"Guild channel types","title":"Nostrum.Struct.Channel.guild_channel/0","ref":"Nostrum.Struct.Channel.html#t:guild_channel/0"},{"type":"type","doc":"Type 15 a guild forum channel.","title":"Nostrum.Struct.Channel.guild_forum_channel/0","ref":"Nostrum.Struct.Channel.html#t:guild_forum_channel/0"},{"type":"type","doc":"The id of the guild the channel is located in.","title":"Nostrum.Struct.Channel.guild_id/0","ref":"Nostrum.Struct.Channel.html#t:guild_id/0"},{"type":"type","doc":"Type 5 partial channel object representing a news channel.","title":"Nostrum.Struct.Channel.guild_news_channel/0","ref":"Nostrum.Struct.Channel.html#t:guild_news_channel/0"},{"type":"type","doc":"Type 10 partial channel object representing a news thread.","title":"Nostrum.Struct.Channel.guild_news_thread_channel/0","ref":"Nostrum.Struct.Channel.html#t:guild_news_thread_channel/0"},{"type":"type","doc":"Type 12 partial channel object representing a private thread.","title":"Nostrum.Struct.Channel.guild_private_thread_channel/0","ref":"Nostrum.Struct.Channel.html#t:guild_private_thread_channel/0"},{"type":"type","doc":"Type 11 partial channel object representing a standard thread.","title":"Nostrum.Struct.Channel.guild_public_thread_channel/0","ref":"Nostrum.Struct.Channel.html#t:guild_public_thread_channel/0"},{"type":"type","doc":"Type 13 channel object representing a stage channel.","title":"Nostrum.Struct.Channel.guild_stage_voice_channel/0","ref":"Nostrum.Struct.Channel.html#t:guild_stage_voice_channel/0"},{"type":"type","doc":"Type 6 partial channel object representing a store channel.","title":"Nostrum.Struct.Channel.guild_store_channel/0","ref":"Nostrum.Struct.Channel.html#t:guild_store_channel/0"},{"type":"type","doc":"Type 0 partial channel object representing a text channel within a guild.","title":"Nostrum.Struct.Channel.guild_text_channel/0","ref":"Nostrum.Struct.Channel.html#t:guild_text_channel/0"},{"type":"type","doc":"Type 2 partial channel object representing an audio channel within a guild.","title":"Nostrum.Struct.Channel.guild_voice_channel/0","ref":"Nostrum.Struct.Channel.html#t:guild_voice_channel/0"},{"type":"type","doc":"The hash of the channels icon.","title":"Nostrum.Struct.Channel.icon/0","ref":"Nostrum.Struct.Channel.html#t:icon/0"},{"type":"type","doc":"The id of the channel object.","title":"Nostrum.Struct.Channel.id/0","ref":"Nostrum.Struct.Channel.html#t:id/0"},{"type":"type","doc":"When the user joined the thread.","title":"Nostrum.Struct.Channel.join_timestamp/0","ref":"Nostrum.Struct.Channel.html#t:join_timestamp/0"},{"type":"type","doc":"The id of the last message sent in the channel.\n\nFor `GUILD_FORUM` channels, this is the last thread created in the channel.","title":"Nostrum.Struct.Channel.last_message_id/0","ref":"Nostrum.Struct.Channel.html#t:last_message_id/0"},{"type":"type","doc":"Timestamp for the last pinned message.","title":"Nostrum.Struct.Channel.last_pin_timestamp/0","ref":"Nostrum.Struct.Channel.html#t:last_pin_timestamp/0"},{"type":"type","doc":"The threads locked status.","title":"Nostrum.Struct.Channel.locked/0","ref":"Nostrum.Struct.Channel.html#t:locked/0"},{"type":"type","doc":"Present when the bot joins a thread.\n\nNote: This is omitted on threads that the bot can immediately access on `:GUILD_CREATE` events received.","title":"Nostrum.Struct.Channel.member/0","ref":"Nostrum.Struct.Channel.html#t:member/0"},{"type":"type","doc":"Approximate count of members in a thread, capped at 50.","title":"Nostrum.Struct.Channel.member_count/0","ref":"Nostrum.Struct.Channel.html#t:member_count/0"},{"type":"type","doc":"Approximate count of messages in a thread, capped at 50.","title":"Nostrum.Struct.Channel.message_count/0","ref":"Nostrum.Struct.Channel.html#t:message_count/0"},{"type":"type","doc":"The name of the channel.","title":"Nostrum.Struct.Channel.name/0","ref":"Nostrum.Struct.Channel.html#t:name/0"},{"type":"type","doc":"Included only in the `THREAD_CREATE` event.","title":"Nostrum.Struct.Channel.newly_created/0","ref":"Nostrum.Struct.Channel.html#t:newly_created/0"},{"type":"type","doc":"Whether the NSFW setting is enabled for this channel.","title":"Nostrum.Struct.Channel.nsfw/0","ref":"Nostrum.Struct.Channel.html#t:nsfw/0"},{"type":"type","doc":"The id of the user of a group direct message or thread.\n\nThis applies to user created channels.","title":"Nostrum.Struct.Channel.owner_id/0","ref":"Nostrum.Struct.Channel.html#t:owner_id/0"},{"type":"type","doc":"The id of the parent channel that this channel is located under.\n\nFor threads, that is the channel that contains the thread. For regular channels, it is the category that the channel is located under.","title":"Nostrum.Struct.Channel.parent_id/0","ref":"Nostrum.Struct.Channel.html#t:parent_id/0"},{"type":"type","doc":"A list of permission overwrites applied to the channel.","title":"Nostrum.Struct.Channel.permission_overwrites/0","ref":"Nostrum.Struct.Channel.html#t:permission_overwrites/0"},{"type":"type","doc":"Computed permissions of the invoking user.\n\nPermissions for the invoking user in the channel, including overwrites, only included when part of the resolved data received on a slash command interaction","title":"Nostrum.Struct.Channel.permissions/0","ref":"Nostrum.Struct.Channel.html#t:permissions/0"},{"type":"type","doc":"The position of the channel in the sidebar of the guild.","title":"Nostrum.Struct.Channel.position/0","ref":"Nostrum.Struct.Channel.html#t:position/0"},{"type":"type","doc":"The users rate limit.\n\nAmount of seconds a user has to wait before sending another message (0-21600); bots, as well as users with the permission manage_messages or manage_channel, are unaffected","title":"Nostrum.Struct.Channel.rate_limit_per_user/0","ref":"Nostrum.Struct.Channel.html#t:rate_limit_per_user/0"},{"type":"type","doc":"A list of users in a group DM.","title":"Nostrum.Struct.Channel.recipients/0","ref":"Nostrum.Struct.Channel.html#t:recipients/0"},{"type":"type","doc":"Region id for the channel.\n\nMore information about _region ids_ can be found on the [Discord API Voice Region Object Documentation](https://discord.com/developers/docs/resources/voice#voice-region-object).","title":"Nostrum.Struct.Channel.rtc_region/0","ref":"Nostrum.Struct.Channel.html#t:rtc_region/0"},{"type":"type","doc":"All valid channel types.","title":"Nostrum.Struct.Channel.t/0","ref":"Nostrum.Struct.Channel.html#t:t/0"},{"type":"type","doc":"All valid text channels.","title":"Nostrum.Struct.Channel.text_channel/0","ref":"Nostrum.Struct.Channel.html#t:text_channel/0"},{"type":"type","doc":"Thread-specific fields not needed by other channels.","title":"Nostrum.Struct.Channel.thread_metadata/0","ref":"Nostrum.Struct.Channel.html#t:thread_metadata/0"},{"type":"type","doc":"The topic of the channel.","title":"Nostrum.Struct.Channel.topic/0","ref":"Nostrum.Struct.Channel.html#t:topic/0"},{"type":"type","doc":"The type of channel.\n\nMore information about _Discord Channel Types_ can be found under the [`types`](#module-channel-types) on the [Discord API Channel Type Documentation](https://discord.com/developers/docs/resources/channel#channel-object-channel-types).","title":"Nostrum.Struct.Channel.type/0","ref":"Nostrum.Struct.Channel.html#t:type/0"},{"type":"type","doc":"User id of the threads creator.","title":"Nostrum.Struct.Channel.user_id/0","ref":"Nostrum.Struct.Channel.html#t:user_id/0"},{"type":"type","doc":"The user limit of a voice channel.","title":"Nostrum.Struct.Channel.user_limit/0","ref":"Nostrum.Struct.Channel.html#t:user_limit/0"},{"type":"type","doc":"The video quality mode of the channel.\n\nMore information about _video quality modes_ can be found on the [Discord API Video Quality Mode Documentation](https://discord.com/developers/docs/resources/channel#channel-object-video-quality-modes).","title":"Nostrum.Struct.Channel.video_quality_mode/0","ref":"Nostrum.Struct.Channel.html#t:video_quality_mode/0"},{"type":"type","doc":"A `Nostrum.Struct.Channel` that represents a voice channel","title":"Nostrum.Struct.Channel.voice_channel/0","ref":"Nostrum.Struct.Channel.html#t:voice_channel/0"},{"type":"behaviour","doc":"Components are a framework for adding interactive elements to the messages your app or bot sends. They're accessible, customizable, and easy to use. There are several different types of components; this documentation will outline the basics of this new framework and each example.\n\n> Components have been broken out into individual modules for easy distinction between them and to separate helper functions and individual type checking between component types - especially as more components are added by Discord.\n\nEach of the components are provided all of the valid types through this module to avoid repetition and allow new components to be added quicker and easier.","title":"Nostrum.Struct.Component","ref":"Nostrum.Struct.Component.html"},{"type":"behaviour","doc":"An Action Row is a non-interactive container component for other types of components. It has a `type: 1` and a sub-array of `components` of other types.\n\n- You can have up to 5 Action Rows per message\n- An Action Row cannot contain another Action Row\n- An Action Row containing buttons cannot also contain a select menu","title":"Action Row - Nostrum.Struct.Component","ref":"Nostrum.Struct.Component.html#module-action-row"},{"type":"behaviour","doc":"Buttons are interactive components that render on messages. They have a `type: 2`, They can be clicked by users. Buttons in Nostrum are further separated into two types, detailed below. Only the [Interaction Button](#module-interaction-buttons-non-link-buttons) will fire a `Nostrum.Struct.Interaction` when pressed.\n\n![Discord Buttons](./assets/buttons.png)\n\n- Buttons must exist inside an Action Row\n- An Action Row can contain up to 5 buttons\n- An Action Row containing buttons cannot also contain a select menu\n\nFor more information check out the [Discord API Button Styles](https://discord.com/developers/docs/interactions/message-components#button-object-button-styles) for more information.","title":"Buttons - Nostrum.Struct.Component","ref":"Nostrum.Struct.Component.html#module-buttons"},{"type":"behaviour","doc":"- Link buttons **do not** send an `interaction` to your app when clicked\n- Link buttons **must** have a `url`, and **cannot** have a `custom_id`\n- Link buttons will **always** use `style: 5`\n\n#### Link `style: 5`\n![Link Button](./assets/secondary_button.png)","title":"Link Buttons - Nostrum.Struct.Component","ref":"Nostrum.Struct.Component.html#module-link-buttons"},{"type":"behaviour","doc":"> Discord calls these buttons \"Non-link Buttons\" due to the fact that they do not contain a url. However it would be more accurate to call them an \"Interaction Button\" as they **do** fire an interaction when clicked which is far more useful for your applications interactivity. As such they are referred to as \"Interaction Button\" throughout the rest of this module.\n\n- Interaction buttons **must** have a `custom_id`, and **cannot** have a `url`\n- Can have one of the below `:style` applied.\n\n#### Primary `style: 1`\n![Primary](./assets/primary_button.png)\n\n#### Secondary `style: 2`\n![Secondary](./assets/secondary_button.png)\n\n#### Success `style: 3`\n![Success](./assets/success_button.png)\n\n#### Danger `style: 4`\n![Danger (1)](./assets/danger_button.png)","title":"Interaction Buttons ( Non-link Buttons ) - Nostrum.Struct.Component","ref":"Nostrum.Struct.Component.html#module-interaction-buttons-non-link-buttons"},{"type":"behaviour","doc":"> Note: The discord documentation and marketing material in relation to buttons indicates that there are three kinds of buttons: 🐼 **Emoji Buttons**, **Link Buttons** & **Non-Link Buttons**. When in fact all buttons can contain an emoji. Because of this reason 🐼 **Emoji Buttons** are not included as a separate type. Emojis will be instead handled by the two included ( superior ) button types.\n\n![emoji buttons in action](./assets/emoji_button.png)\n\n> The field requirements are already becoming convoluted especially considering everything so far is all still a \"Component\". Using the sub types and helper functions will ensure all of the rules are followed when creating components.","title":"🐼 ~~Emoji Buttons~~ - Nostrum.Struct.Component","ref":"Nostrum.Struct.Component.html#module-emoji-buttons"},{"type":"behaviour","doc":"Select menus are another interactive component that renders on messages. On desktop, clicking on a select menu opens a dropdown-style UI; on mobile, tapping a select menu opens up a half-sheet with the options.\n\n![Discord Selects](./assets/select_menu.png)\n\nSelect menus support single-select and multi-select behavior, meaning you can prompt a user to choose just one item from a list, or multiple. When a user finishes making their choice by clicking out of the dropdown or closing the half-sheet, your app will receive an interaction.\n- Select menus **must** be sent inside an Action Row\n- An Action Row can contain **only one** select menu\n- An Action Row containing a select menu **cannot** also contain buttons","title":"Select Menu - Nostrum.Struct.Component","ref":"Nostrum.Struct.Component.html#module-select-menu"},{"type":"behaviour","doc":"Text inputs are an interactive component that render on modals. They can be used to collect short-form or long-form text.\n- Text inputs **must** be sent inside an Action Row\n- An Action Row can contain **only one** text input\n- An Action Row containing a text input **cannot** also contain buttons or a select menu\n\nCan be used to collect short-form or long-form text.\n- For short-form text, use `style: 1`\n- For long-form text, use `style: 2`\n\nText inputs are only allowed to be sent as part of an Interaction response that opens a MODAL.","title":"Text Input - Nostrum.Struct.Component","ref":"Nostrum.Struct.Component.html#module-text-input"},{"type":"callback","doc":"Create a component from the given keyword list of options\n\n> Note: While using this function directly, you are not guaranteed to produce a valid component and it is the responsibility of the user to ensure they are passing a valid combination of component attributes. eg. if you pass a button component both a `custom_id`, and a `url`, the component is invalid as only one of these fields is allowed.","title":"Nostrum.Struct.Component.new/1","ref":"Nostrum.Struct.Component.html#c:new/1"},{"type":"function","doc":"","title":"Nostrum.Struct.Component.to_struct/1","ref":"Nostrum.Struct.Component.html#to_struct/1"},{"type":"callback","doc":"Updates a component with the parameters provided.\n\n> Note: While using this function directly, you are not guaranteed to produce a valid component and it is the responsibility of the user to ensure they are passing a valid combination of component attributes. eg. if you pass a button component both a `custom_id`, and a `url`, the component is invalid as only one of these fields is allowed.","title":"Nostrum.Struct.Component.update/2","ref":"Nostrum.Struct.Component.html#c:update/2"},{"type":"type","doc":"","title":"Nostrum.Struct.Component.channel_types/0","ref":"Nostrum.Struct.Component.html#t:channel_types/0"},{"type":"type","doc":"A list of components to place inside an action row.\n\nDue to constraints of action rows, this can either be a list of up to five buttons, a single select menu, or a single text input.\n\nValid for [Action Row](#module-action-row).","title":"Nostrum.Struct.Component.components/0","ref":"Nostrum.Struct.Component.html#t:components/0"},{"type":"type","doc":"Used to identify the component when the interaction is sent to you from the user.\n\nValid for [Interaction Buttons](#module-interaction-button), [Select Menus](#module-select-menu), and [Text Input](#module-text-input).","title":"Nostrum.Struct.Component.custom_id/0","ref":"Nostrum.Struct.Component.html#t:custom_id/0"},{"type":"type","doc":"","title":"Nostrum.Struct.Component.default_values/0","ref":"Nostrum.Struct.Component.html#t:default_values/0"},{"type":"type","doc":"Indicates if the component is disabled or not.\n\nValid for [Buttons](#module-buttons) & [Select Menus](#module-select-menu).","title":"Nostrum.Struct.Component.disabled/0","ref":"Nostrum.Struct.Component.html#t:disabled/0"},{"type":"type","doc":"A partial emoji to display on the object.\n\nValid for [Buttons](#module-buttons)","title":"Nostrum.Struct.Component.emoji/0","ref":"Nostrum.Struct.Component.html#t:emoji/0"},{"type":"type","doc":"A string that appears on the button, max 80 characters.\n\nValid for [Buttons](#module-buttons)","title":"Nostrum.Struct.Component.label/0","ref":"Nostrum.Struct.Component.html#t:label/0"},{"type":"type","doc":"The maximum length of the text input. Minimum value 1, max 4000.\n\nValid for [Text Input](#module-text-input).","title":"Nostrum.Struct.Component.max_length/0","ref":"Nostrum.Struct.Component.html#t:max_length/0"},{"type":"type","doc":"The maximum number of permitted selections. Minimum value 0, max 25.\n\nValid for [Select Menus](#module-select-menu).","title":"Nostrum.Struct.Component.max_values/0","ref":"Nostrum.Struct.Component.html#t:max_values/0"},{"type":"type","doc":"The minimum length of the text input. Minimum value 0, max 4000.\n\nValid for [Text Input](#module-text-input).","title":"Nostrum.Struct.Component.min_length/0","ref":"Nostrum.Struct.Component.html#t:min_length/0"},{"type":"type","doc":"The minimum number of permitted selections. Minimum value 0, max 25.\n\nValid for [Select Menus](#module-select-menu).","title":"Nostrum.Struct.Component.min_values/0","ref":"Nostrum.Struct.Component.html#t:min_values/0"},{"type":"type","doc":"A list of options for select menus, max 25.\n\nValid for [Select Menus](#module-select-menu).","title":"Nostrum.Struct.Component.options/0","ref":"Nostrum.Struct.Component.html#t:options/0"},{"type":"type","doc":"Placeholder text if nothing is selected, max 100 characters\n\nValid for [Select Menus](#module-select-menu) and [Text Input](#module-text-input).","title":"Nostrum.Struct.Component.placeholder/0","ref":"Nostrum.Struct.Component.html#t:placeholder/0"},{"type":"type","doc":"Indicates if the text input is required.\n\nValid for [Text Input](#module-text-input).","title":"Nostrum.Struct.Component.required/0","ref":"Nostrum.Struct.Component.html#t:required/0"},{"type":"type","doc":"Indicates the style.\n\nYou can use one of the `Nostrum.Constants.ButtonStyle` methods.\n\nValid for Valid for [Interaction Buttons](#module-interaction-button) and [Text Input](#module-text-input).","title":"Nostrum.Struct.Component.style/0","ref":"Nostrum.Struct.Component.html#t:style/0"},{"type":"type","doc":"The currently valid component types.","title":"Nostrum.Struct.Component.t/0","ref":"Nostrum.Struct.Component.html#t:t/0"},{"type":"type","doc":"The type of component.\n\nValid for All Types.\n\n| | Component Types |\n|------|-----|\n| `1` | Action Row |\n| `2` | Button |\n| `3` | SelectMenu |\n| `4` | TextInput |\n\nYou can use one of the `Nostrum.Constants.ComponentType` methods.\n\nCheck out the [Discord API Message Component Types](https://discord.com/developers/docs/interactions/message-components#component-object-component-types) for more information.","title":"Nostrum.Struct.Component.type/0","ref":"Nostrum.Struct.Component.html#t:type/0"},{"type":"type","doc":"A url for link buttons.\n\nValid for: [Buttons](#module-buttons)","title":"Nostrum.Struct.Component.url/0","ref":"Nostrum.Struct.Component.html#t:url/0"},{"type":"type","doc":"A pre-filled value for the text input, max 4000 characters.\n\nValid for [Text Input](#module-text-input).","title":"Nostrum.Struct.Component.value/0","ref":"Nostrum.Struct.Component.html#t:value/0"},{"type":"module","doc":"Action Rows.","title":"Nostrum.Struct.Component.ActionRow","ref":"Nostrum.Struct.Component.ActionRow.html"},{"type":"function","doc":"Create an empty action row.\n\nOptions can be passed as a keyword list. The only supported option is a list of inner components","title":"Nostrum.Struct.Component.ActionRow.action_row/1","ref":"Nostrum.Struct.Component.ActionRow.html#action_row/1"},{"type":"function","doc":"Appends a button to the action row.\n\nReturns the action row unchanged if there are already 5 buttons or if the action row contains a select menu or text input.","title":"Nostrum.Struct.Component.ActionRow.append/2","ref":"Nostrum.Struct.Component.ActionRow.html#append/2"},{"type":"function","doc":"Lazily appends a button to the action row.\n\nIf there are already 5 buttons, the first one will be dropped.","title":"Nostrum.Struct.Component.ActionRow.append_lazy/2","ref":"Nostrum.Struct.Component.ActionRow.html#append_lazy/2"},{"type":"function","doc":"","title":"Nostrum.Struct.Component.ActionRow.flatten/1","ref":"Nostrum.Struct.Component.ActionRow.html#flatten/1"},{"type":"function","doc":"Puts the given component into the action row, any existing components are discarded.","title":"Nostrum.Struct.Component.ActionRow.put/2","ref":"Nostrum.Struct.Component.ActionRow.html#put/2"},{"type":"function","doc":"Puts the components into the action row unless a list of inner components already exists.","title":"Nostrum.Struct.Component.ActionRow.put_new/2","ref":"Nostrum.Struct.Component.ActionRow.html#put_new/2"},{"type":"type","doc":"","title":"Nostrum.Struct.Component.ActionRow.t/0","ref":"Nostrum.Struct.Component.ActionRow.html#t:t/0"},{"type":"module","doc":"Helpers for dealing with Button Components","title":"Nostrum.Struct.Component.Button","ref":"Nostrum.Struct.Component.Button.html"},{"type":"function","doc":"Create a button.\n\nThis function provides direct access to the `new/1` callback.\n\n> Note: While using this function directly you are **not** guaranteed to return a valid button, providing a valid combination of options becomes the responsibility of the reader. It is instead recommended to use the helper functions provided below.","title":"Nostrum.Struct.Component.Button.button/1","ref":"Nostrum.Struct.Component.Button.html#button/1"},{"type":"function","doc":"Disables the button when `disabled` is true. Enables it otherwise.","title":"Nostrum.Struct.Component.Button.disable/2","ref":"Nostrum.Struct.Component.Button.html#disable/2"},{"type":"function","doc":"","title":"Nostrum.Struct.Component.Button.flatten/1","ref":"Nostrum.Struct.Component.Button.html#flatten/1"},{"type":"function","doc":"Create an interaction button.\n\nRead more about interaction buttons in the `Nostrum.Struct.Component` documentation.","title":"Nostrum.Struct.Component.Button.interaction_button/3","ref":"Nostrum.Struct.Component.Button.html#interaction_button/3"},{"type":"function","doc":"Create a link button.\n\nRead more about link buttons in the `Nostrum.Struct.Component` documentation.","title":"Nostrum.Struct.Component.Button.link_button/3","ref":"Nostrum.Struct.Component.Button.html#link_button/3"},{"type":"function","doc":"Changes the style of the button.","title":"Nostrum.Struct.Component.Button.put_style/2","ref":"Nostrum.Struct.Component.Button.html#put_style/2"},{"type":"function","doc":"Toggle the buttons disabled state.","title":"Nostrum.Struct.Component.Button.toggle/1","ref":"Nostrum.Struct.Component.Button.html#toggle/1"},{"type":"type","doc":"","title":"Nostrum.Struct.Component.Button.interaction_button/0","ref":"Nostrum.Struct.Component.Button.html#t:interaction_button/0"},{"type":"type","doc":"","title":"Nostrum.Struct.Component.Button.link_button/0","ref":"Nostrum.Struct.Component.Button.html#t:link_button/0"},{"type":"type","doc":"","title":"Nostrum.Struct.Component.Button.opt/0","ref":"Nostrum.Struct.Component.Button.html#t:opt/0"},{"type":"type","doc":"","title":"Nostrum.Struct.Component.Button.opts/0","ref":"Nostrum.Struct.Component.Button.html#t:opts/0"},{"type":"type","doc":"","title":"Nostrum.Struct.Component.Button.t/0","ref":"Nostrum.Struct.Component.Button.html#t:t/0"},{"type":"module","doc":"Channel Select","title":"Nostrum.Struct.Component.ChannelSelect","ref":"Nostrum.Struct.Component.ChannelSelect.html"},{"type":"function","doc":"","title":"Nostrum.Struct.Component.ChannelSelect.channel_select/2","ref":"Nostrum.Struct.Component.ChannelSelect.html#channel_select/2"},{"type":"function","doc":"","title":"Nostrum.Struct.Component.ChannelSelect.flatten/1","ref":"Nostrum.Struct.Component.ChannelSelect.html#flatten/1"},{"type":"type","doc":"","title":"Nostrum.Struct.Component.ChannelSelect.opt/0","ref":"Nostrum.Struct.Component.ChannelSelect.html#t:opt/0"},{"type":"type","doc":"","title":"Nostrum.Struct.Component.ChannelSelect.opts/0","ref":"Nostrum.Struct.Component.ChannelSelect.html#t:opts/0"},{"type":"type","doc":"","title":"Nostrum.Struct.Component.ChannelSelect.t/0","ref":"Nostrum.Struct.Component.ChannelSelect.html#t:t/0"},{"type":"module","doc":"Default Value","title":"Nostrum.Struct.Component.DefaultValue","ref":"Nostrum.Struct.Component.DefaultValue.html"},{"type":"type","doc":"","title":"Nostrum.Struct.Component.DefaultValue.id/0","ref":"Nostrum.Struct.Component.DefaultValue.html#t:id/0"},{"type":"type","doc":"","title":"Nostrum.Struct.Component.DefaultValue.t/0","ref":"Nostrum.Struct.Component.DefaultValue.html#t:t/0"},{"type":"type","doc":"","title":"Nostrum.Struct.Component.DefaultValue.type/0","ref":"Nostrum.Struct.Component.DefaultValue.html#t:type/0"},{"type":"module","doc":"Mentionable Select","title":"Nostrum.Struct.Component.MentionableSelect","ref":"Nostrum.Struct.Component.MentionableSelect.html"},{"type":"function","doc":"","title":"Nostrum.Struct.Component.MentionableSelect.flatten/1","ref":"Nostrum.Struct.Component.MentionableSelect.html#flatten/1"},{"type":"function","doc":"","title":"Nostrum.Struct.Component.MentionableSelect.mentionable_select/2","ref":"Nostrum.Struct.Component.MentionableSelect.html#mentionable_select/2"},{"type":"type","doc":"","title":"Nostrum.Struct.Component.MentionableSelect.opt/0","ref":"Nostrum.Struct.Component.MentionableSelect.html#t:opt/0"},{"type":"type","doc":"","title":"Nostrum.Struct.Component.MentionableSelect.opts/0","ref":"Nostrum.Struct.Component.MentionableSelect.html#t:opts/0"},{"type":"type","doc":"","title":"Nostrum.Struct.Component.MentionableSelect.t/0","ref":"Nostrum.Struct.Component.MentionableSelect.html#t:t/0"},{"type":"module","doc":"Component Options","title":"Nostrum.Struct.Component.Option","ref":"Nostrum.Struct.Component.Option.html"},{"type":"type","doc":"If this option is selected by default.","title":"Nostrum.Struct.Component.Option.default/0","ref":"Nostrum.Struct.Component.Option.html#t:default/0"},{"type":"type","doc":"An optional description of the option. Max length is 100 characters.","title":"Nostrum.Struct.Component.Option.description/0","ref":"Nostrum.Struct.Component.Option.html#t:description/0"},{"type":"type","doc":"","title":"Nostrum.Struct.Component.Option.emoji/0","ref":"Nostrum.Struct.Component.Option.html#t:emoji/0"},{"type":"type","doc":"The user-facing name of the option.","title":"Nostrum.Struct.Component.Option.label/0","ref":"Nostrum.Struct.Component.Option.html#t:label/0"},{"type":"type","doc":"","title":"Nostrum.Struct.Component.Option.t/0","ref":"Nostrum.Struct.Component.Option.html#t:t/0"},{"type":"type","doc":"The developer defined value of the option.","title":"Nostrum.Struct.Component.Option.value/0","ref":"Nostrum.Struct.Component.Option.html#t:value/0"},{"type":"module","doc":"Role Select","title":"Nostrum.Struct.Component.RoleSelect","ref":"Nostrum.Struct.Component.RoleSelect.html"},{"type":"function","doc":"","title":"Nostrum.Struct.Component.RoleSelect.flatten/1","ref":"Nostrum.Struct.Component.RoleSelect.html#flatten/1"},{"type":"function","doc":"","title":"Nostrum.Struct.Component.RoleSelect.mentionable_select/2","ref":"Nostrum.Struct.Component.RoleSelect.html#mentionable_select/2"},{"type":"type","doc":"","title":"Nostrum.Struct.Component.RoleSelect.opt/0","ref":"Nostrum.Struct.Component.RoleSelect.html#t:opt/0"},{"type":"type","doc":"","title":"Nostrum.Struct.Component.RoleSelect.opts/0","ref":"Nostrum.Struct.Component.RoleSelect.html#t:opts/0"},{"type":"type","doc":"","title":"Nostrum.Struct.Component.RoleSelect.t/0","ref":"Nostrum.Struct.Component.RoleSelect.html#t:t/0"},{"type":"module","doc":"Select Menu","title":"Nostrum.Struct.Component.SelectMenu","ref":"Nostrum.Struct.Component.SelectMenu.html"},{"type":"function","doc":"","title":"Nostrum.Struct.Component.SelectMenu.flatten/1","ref":"Nostrum.Struct.Component.SelectMenu.html#flatten/1"},{"type":"function","doc":"Creates a select menu that can be used inside an action row.\n\nOptions can be passed as a keyword list.","title":"Nostrum.Struct.Component.SelectMenu.select_menu/2","ref":"Nostrum.Struct.Component.SelectMenu.html#select_menu/2"},{"type":"function","doc":"- `custom_id` - lower case string, used for matching against when your application receives an interaction.","title":"Parameters - Nostrum.Struct.Component.SelectMenu.select_menu/2","ref":"Nostrum.Struct.Component.SelectMenu.html#select_menu/2-parameters"},{"type":"function","doc":"- `disabled` - If the select should be disabled\n- `options` - A list of options for the select menu, see `Nostrum.Struct.Component.Option`\n- `placeholder` - Value to be shown before anything is selected\n- `min_values` - minimum number of values the user must select, between 0 and 25, default is 1\n- `max_values` - maximum number of values the user must select, between 0 and 25, default is 1","title":"Options - Nostrum.Struct.Component.SelectMenu.select_menu/2","ref":"Nostrum.Struct.Component.SelectMenu.html#select_menu/2-options"},{"type":"type","doc":"","title":"Nostrum.Struct.Component.SelectMenu.opt/0","ref":"Nostrum.Struct.Component.SelectMenu.html#t:opt/0"},{"type":"type","doc":"","title":"Nostrum.Struct.Component.SelectMenu.opts/0","ref":"Nostrum.Struct.Component.SelectMenu.html#t:opts/0"},{"type":"type","doc":"","title":"Nostrum.Struct.Component.SelectMenu.t/0","ref":"Nostrum.Struct.Component.SelectMenu.html#t:t/0"},{"type":"module","doc":"Text Input.","title":"Nostrum.Struct.Component.TextInput","ref":"Nostrum.Struct.Component.TextInput.html"},{"type":"function","doc":"","title":"Nostrum.Struct.Component.TextInput.flatten/1","ref":"Nostrum.Struct.Component.TextInput.html#flatten/1"},{"type":"function","doc":"","title":"Nostrum.Struct.Component.TextInput.put_style/2","ref":"Nostrum.Struct.Component.TextInput.html#put_style/2"},{"type":"function","doc":"Create a text input component.","title":"Nostrum.Struct.Component.TextInput.text_input/3","ref":"Nostrum.Struct.Component.TextInput.html#text_input/3"},{"type":"type","doc":"","title":"Nostrum.Struct.Component.TextInput.opt/0","ref":"Nostrum.Struct.Component.TextInput.html#t:opt/0"},{"type":"type","doc":"","title":"Nostrum.Struct.Component.TextInput.opts/0","ref":"Nostrum.Struct.Component.TextInput.html#t:opts/0"},{"type":"type","doc":"","title":"Nostrum.Struct.Component.TextInput.t/0","ref":"Nostrum.Struct.Component.TextInput.html#t:t/0"},{"type":"module","doc":"User Select","title":"Nostrum.Struct.Component.UserSelect","ref":"Nostrum.Struct.Component.UserSelect.html"},{"type":"function","doc":"","title":"Nostrum.Struct.Component.UserSelect.flatten/1","ref":"Nostrum.Struct.Component.UserSelect.html#flatten/1"},{"type":"function","doc":"","title":"Nostrum.Struct.Component.UserSelect.mentionable_select/2","ref":"Nostrum.Struct.Component.UserSelect.html#mentionable_select/2"},{"type":"type","doc":"","title":"Nostrum.Struct.Component.UserSelect.opt/0","ref":"Nostrum.Struct.Component.UserSelect.html#t:opt/0"},{"type":"type","doc":"","title":"Nostrum.Struct.Component.UserSelect.opts/0","ref":"Nostrum.Struct.Component.UserSelect.html#t:opts/0"},{"type":"type","doc":"","title":"Nostrum.Struct.Component.UserSelect.t/0","ref":"Nostrum.Struct.Component.UserSelect.html#t:t/0"},{"type":"behaviour","doc":"Functions that work on Discord embeds.","title":"Nostrum.Struct.Embed","ref":"Nostrum.Struct.Embed.html"},{"type":"behaviour","doc":"`Nostrum.Struct.Embed`s can be built using this module's builder functions\nor standard `Map` syntax:\n\n```elixir\niex> import Nostrum.Struct.Embed\n...> embed =\n...> %Nostrum.Struct.Embed{}\n...> |> put_title(\"craig\")\n...> |> put_description(\"nostrum\")\n...> |> put_url(\"https://google.com/\")\n...> |> put_timestamp(\"2016-05-05T21:04:13.203Z\")\n...> |> put_color(431_948)\n...> |> put_field(\"Field 1\", \"Test\")\n...> |> put_field(\"Field 2\", \"More test\", true)\n...> embed\n%Nostrum.Struct.Embed{\n title: \"craig\",\n description: \"nostrum\",\n url: \"https://google.com/\",\n timestamp: \"2016-05-05T21:04:13.203Z\",\n color: 431_948,\n fields: [\n %Nostrum.Struct.Embed.Field{name: \"Field 1\", value: \"Test\"},\n %Nostrum.Struct.Embed.Field{name: \"Field 2\", value: \"More test\", inline: true}\n ]\n}\n```","title":"Building Embeds - Nostrum.Struct.Embed","ref":"Nostrum.Struct.Embed.html#module-building-embeds"},{"type":"behaviour","doc":"You can also create `Nostrum.Struct.Embed`s from structs, by using the\n`Nostrum.Struct.Embed` module. Here's how the example above could be build using structs\n\n```elixir\n defmodule MyApp.MyStruct do\n use Nostrum.Struct.Embed\n\n defstruct []\n\n def title(_), do: \"craig\"\n def description(_), do: \"nostrum\"\n def url(_), do: \"https://google.com/\"\n def timestamp(_), do: \"2016-05-05T21:04:13.203Z\"\n def color(_), do: 431_948\n\n def fields(_) do\n [\n %Nostrum.Struct.Embed.Field{name: \"Field 1\", value: \"Test\"},\n %Nostrum.Struct.Embed.Field{name: \"Field 2\", value: \"More test\", inline: true}\n ]\n end\n end\n\niex> Nostrum.Struct.Embed.from(%MyApp.MyStruct{})\n%Nostrum.Struct.Embed{\n title: \"craig\",\n description: \"nostrum\",\n url: \"https://google.com/\",\n timestamp: \"2016-05-05T21:04:13.203Z\",\n color: 431_948,\n fields: [\n %Nostrum.Struct.Embed.Field{name: \"Field 1\", value: \"Test\"},\n %Nostrum.Struct.Embed.Field{name: \"Field 2\", value: \"More test\", inline: true}\n ]\n}\n```\nSee this modules callbacks for a list of all the functions that can be implemented.\n\nThe implementation of these callbacks is optional. Not implemented functions will simply\nbe ignored.","title":"Using structs - Nostrum.Struct.Embed","ref":"Nostrum.Struct.Embed.html#module-using-structs"},{"type":"callback","doc":"","title":"Nostrum.Struct.Embed.author/1","ref":"Nostrum.Struct.Embed.html#c:author/1"},{"type":"callback","doc":"","title":"Nostrum.Struct.Embed.color/1","ref":"Nostrum.Struct.Embed.html#c:color/1"},{"type":"callback","doc":"","title":"Nostrum.Struct.Embed.description/1","ref":"Nostrum.Struct.Embed.html#c:description/1"},{"type":"callback","doc":"","title":"Nostrum.Struct.Embed.fields/1","ref":"Nostrum.Struct.Embed.html#c:fields/1"},{"type":"callback","doc":"","title":"Nostrum.Struct.Embed.footer/1","ref":"Nostrum.Struct.Embed.html#c:footer/1"},{"type":"function","doc":"Create an embed from a struct that implements the `Nostrum.Struct.Embed` behaviour","title":"Nostrum.Struct.Embed.from/1","ref":"Nostrum.Struct.Embed.html#from/1"},{"type":"callback","doc":"","title":"Nostrum.Struct.Embed.image/1","ref":"Nostrum.Struct.Embed.html#c:image/1"},{"type":"function","doc":"Puts a `Nostrum.Struct.Embed.Author` under `:author` in `embed`.","title":"Nostrum.Struct.Embed.put_author/4","ref":"Nostrum.Struct.Embed.html#put_author/4"},{"type":"function","doc":"```elixir\niex> embed = %Nostrum.Struct.Embed{}\n...> Nostrum.Struct.Embed.put_author(embed, \"skippi\", \"https://github.com/skippi\", nil)\n%Nostrum.Struct.Embed{\n author: %Nostrum.Struct.Embed.Author{\n name: \"skippi\",\n url: \"https://github.com/skippi\",\n icon_url: nil\n }\n}\n```","title":"Examples - Nostrum.Struct.Embed.put_author/4","ref":"Nostrum.Struct.Embed.html#put_author/4-examples"},{"type":"function","doc":"Puts the given `value` under `:color` in `embed`.","title":"Nostrum.Struct.Embed.put_color/2","ref":"Nostrum.Struct.Embed.html#put_color/2"},{"type":"function","doc":"```elixir\niex> embed = %Nostrum.Struct.Embed{}\n...> Nostrum.Struct.Embed.put_color(embed, 431948)\n%Nostrum.Struct.Embed{color: 431948}\n```","title":"Examples - Nostrum.Struct.Embed.put_color/2","ref":"Nostrum.Struct.Embed.html#put_color/2-examples"},{"type":"function","doc":"Puts the given `value` under `:description` in `embed`.","title":"Nostrum.Struct.Embed.put_description/2","ref":"Nostrum.Struct.Embed.html#put_description/2"},{"type":"function","doc":"```elixir\niex> embed = %Nostrum.Struct.Embed{}\n...> Nostrum.Struct.Embed.put_description(embed, \"An elixir library for the discord API.\")\n%Nostrum.Struct.Embed{description: \"An elixir library for the discord API.\"}\n```","title":"Examples - Nostrum.Struct.Embed.put_description/2","ref":"Nostrum.Struct.Embed.html#put_description/2-examples"},{"type":"function","doc":"Adds a `Nostrum.Struct.Embed.Field` under `:fields` in `embed`.","title":"Nostrum.Struct.Embed.put_field/4","ref":"Nostrum.Struct.Embed.html#put_field/4"},{"type":"function","doc":"```elixir\niex> embed = %Nostrum.Struct.Embed{}\n...> Nostrum.Struct.Embed.put_field(embed, \"First User\", \"b1nzy\")\n%Nostrum.Struct.Embed{\n fields: [\n %Nostrum.Struct.Embed.Field{name: \"First User\", value: \"b1nzy\"}\n ]\n}\n\niex> embed = %Nostrum.Struct.Embed{\n...> fields: [\n...> %Nostrum.Struct.Embed.Field{name: \"First User\", value: \"b1nzy\"}\n...> ]\n...> }\n...> Nostrum.Struct.Embed.put_field(embed, \"Second User\", \"Danny\")\n%Nostrum.Struct.Embed{\n fields: [\n %Nostrum.Struct.Embed.Field{name: \"First User\", value: \"b1nzy\"},\n %Nostrum.Struct.Embed.Field{name: \"Second User\", value: \"Danny\"}\n ]\n}\n```","title":"Examples - Nostrum.Struct.Embed.put_field/4","ref":"Nostrum.Struct.Embed.html#put_field/4-examples"},{"type":"function","doc":"Puts a `Nostrum.Struct.Embed.Footer` under `:footer` in `embed`.","title":"Nostrum.Struct.Embed.put_footer/3","ref":"Nostrum.Struct.Embed.html#put_footer/3"},{"type":"function","doc":"```elixir\niex> embed = %Nostrum.Struct.Embed{}\n...> Nostrum.Struct.Embed.put_footer(embed, \"Discord API\", nil)\n%Nostrum.Struct.Embed{\n footer: %Nostrum.Struct.Embed.Footer{\n text: \"Discord API\",\n icon_url: nil\n }\n}\n\niex> embed = %Nostrum.Struct.Embed{}\n...> Nostrum.Struct.Embed.put_footer(embed, \"nostrum footer\", \"https://discord.com/assets/53ef346458017da2062aca5c7955946b.svg\")\n%Nostrum.Struct.Embed{\n footer: %Nostrum.Struct.Embed.Footer{\n text: \"nostrum footer\",\n icon_url: \"https://discord.com/assets/53ef346458017da2062aca5c7955946b.svg\"\n }\n}\n```","title":"Examples - Nostrum.Struct.Embed.put_footer/3","ref":"Nostrum.Struct.Embed.html#put_footer/3-examples"},{"type":"function","doc":"Puts a `Nostrum.Struct.Embed.Image` under `:image` in `embed`.","title":"Nostrum.Struct.Embed.put_image/2","ref":"Nostrum.Struct.Embed.html#put_image/2"},{"type":"function","doc":"```elixir\niex> embed = %Nostrum.Struct.Embed{}\n...> Nostrum.Struct.Embed.put_image(embed, \"https://discord.com/assets/af92e60c16b7019f34a467383b31490a.svg\")\n%Nostrum.Struct.Embed{\n image: %Nostrum.Struct.Embed.Image{\n url: \"https://discord.com/assets/af92e60c16b7019f34a467383b31490a.svg\"\n }\n}\n```","title":"Examples - Nostrum.Struct.Embed.put_image/2","ref":"Nostrum.Struct.Embed.html#put_image/2-examples"},{"type":"function","doc":"Puts a `Nostrum.Struct.Embed.Thumbnail` under `:thumbnail` in `embed`.","title":"Nostrum.Struct.Embed.put_thumbnail/2","ref":"Nostrum.Struct.Embed.html#put_thumbnail/2"},{"type":"function","doc":"```elixir\niex> embed = %Nostrum.Struct.Embed{}\n...> Nostrum.Struct.Embed.put_thumbnail(embed, \"https://discord.com/assets/af92e60c16b7019f34a467383b31490a.svg\")\n%Nostrum.Struct.Embed{\n thumbnail: %Nostrum.Struct.Embed.Thumbnail{\n url: \"https://discord.com/assets/af92e60c16b7019f34a467383b31490a.svg\"\n }\n}\n```","title":"Examples - Nostrum.Struct.Embed.put_thumbnail/2","ref":"Nostrum.Struct.Embed.html#put_thumbnail/2-examples"},{"type":"function","doc":"Puts the given `value` under `:timestamp` in `embed`.","title":"Nostrum.Struct.Embed.put_timestamp/2","ref":"Nostrum.Struct.Embed.html#put_timestamp/2"},{"type":"function","doc":"```elixir\niex> embed = %Nostrum.Struct.Embed{}\n...> Nostrum.Struct.Embed.put_timestamp(embed, \"2018-04-21T17:33:51.893000Z\")\n%Nostrum.Struct.Embed{timestamp: \"2018-04-21T17:33:51.893000Z\"}\n```","title":"Examples - Nostrum.Struct.Embed.put_timestamp/2","ref":"Nostrum.Struct.Embed.html#put_timestamp/2-examples"},{"type":"function","doc":"Puts the given `value` under `:title` in `embed`.","title":"Nostrum.Struct.Embed.put_title/2","ref":"Nostrum.Struct.Embed.html#put_title/2"},{"type":"function","doc":"```elixir\niex> embed = %Nostrum.Struct.Embed{}\n...> Nostrum.Struct.Embed.put_title(embed, \"nostrum\")\n%Nostrum.Struct.Embed{title: \"nostrum\"}\n```","title":"Examples - Nostrum.Struct.Embed.put_title/2","ref":"Nostrum.Struct.Embed.html#put_title/2-examples"},{"type":"function","doc":"Puts the given `value` under `:url` in `embed`.","title":"Nostrum.Struct.Embed.put_url/2","ref":"Nostrum.Struct.Embed.html#put_url/2"},{"type":"function","doc":"```elixir\niex> embed = %Nostrum.Struct.Embed{}\n...> Nostrum.Struct.Embed.put_url(embed, \"https://github.com/Kraigie/nostrum\")\n%Nostrum.Struct.Embed{url: \"https://github.com/Kraigie/nostrum\"}\n```","title":"Examples - Nostrum.Struct.Embed.put_url/2","ref":"Nostrum.Struct.Embed.html#put_url/2-examples"},{"type":"callback","doc":"","title":"Nostrum.Struct.Embed.thumbnail/1","ref":"Nostrum.Struct.Embed.html#c:thumbnail/1"},{"type":"callback","doc":"","title":"Nostrum.Struct.Embed.timestamp/1","ref":"Nostrum.Struct.Embed.html#c:timestamp/1"},{"type":"callback","doc":"","title":"Nostrum.Struct.Embed.title/1","ref":"Nostrum.Struct.Embed.html#c:title/1"},{"type":"callback","doc":"","title":"Nostrum.Struct.Embed.url/1","ref":"Nostrum.Struct.Embed.html#c:url/1"},{"type":"type","doc":"Author information","title":"Nostrum.Struct.Embed.author/0","ref":"Nostrum.Struct.Embed.html#t:author/0"},{"type":"type","doc":"Color code of the embed","title":"Nostrum.Struct.Embed.color/0","ref":"Nostrum.Struct.Embed.html#t:color/0"},{"type":"type","doc":"Description of the embed","title":"Nostrum.Struct.Embed.description/0","ref":"Nostrum.Struct.Embed.html#t:description/0"},{"type":"type","doc":"Fields information","title":"Nostrum.Struct.Embed.fields/0","ref":"Nostrum.Struct.Embed.html#t:fields/0"},{"type":"type","doc":"Footer information","title":"Nostrum.Struct.Embed.footer/0","ref":"Nostrum.Struct.Embed.html#t:footer/0"},{"type":"type","doc":"Image information","title":"Nostrum.Struct.Embed.image/0","ref":"Nostrum.Struct.Embed.html#t:image/0"},{"type":"type","doc":"Provider information","title":"Nostrum.Struct.Embed.provider/0","ref":"Nostrum.Struct.Embed.html#t:provider/0"},{"type":"type","doc":"","title":"Nostrum.Struct.Embed.t/0","ref":"Nostrum.Struct.Embed.html#t:t/0"},{"type":"type","doc":"Thumbnail information","title":"Nostrum.Struct.Embed.thumbnail/0","ref":"Nostrum.Struct.Embed.html#t:thumbnail/0"},{"type":"type","doc":"Timestamp of embed content","title":"Nostrum.Struct.Embed.timestamp/0","ref":"Nostrum.Struct.Embed.html#t:timestamp/0"},{"type":"type","doc":"Title of the embed","title":"Nostrum.Struct.Embed.title/0","ref":"Nostrum.Struct.Embed.html#t:title/0"},{"type":"type","doc":"Type of the embed","title":"Nostrum.Struct.Embed.type/0","ref":"Nostrum.Struct.Embed.html#t:type/0"},{"type":"type","doc":"Url of the embed","title":"Nostrum.Struct.Embed.url/0","ref":"Nostrum.Struct.Embed.html#t:url/0"},{"type":"type","doc":"Video information","title":"Nostrum.Struct.Embed.video/0","ref":"Nostrum.Struct.Embed.html#t:video/0"},{"type":"module","doc":"Struct representing a Discord embed author.","title":"Nostrum.Struct.Embed.Author","ref":"Nostrum.Struct.Embed.Author.html"},{"type":"type","doc":"URL of the author icon","title":"Nostrum.Struct.Embed.Author.icon_url/0","ref":"Nostrum.Struct.Embed.Author.html#t:icon_url/0"},{"type":"type","doc":"Name of the author","title":"Nostrum.Struct.Embed.Author.name/0","ref":"Nostrum.Struct.Embed.Author.html#t:name/0"},{"type":"type","doc":"Proxied URL of author icon","title":"Nostrum.Struct.Embed.Author.proxy_icon_url/0","ref":"Nostrum.Struct.Embed.Author.html#t:proxy_icon_url/0"},{"type":"type","doc":"","title":"Nostrum.Struct.Embed.Author.t/0","ref":"Nostrum.Struct.Embed.Author.html#t:t/0"},{"type":"type","doc":"URL of the author","title":"Nostrum.Struct.Embed.Author.url/0","ref":"Nostrum.Struct.Embed.Author.html#t:url/0"},{"type":"module","doc":"Struct representing a Discord embed field.","title":"Nostrum.Struct.Embed.Field","ref":"Nostrum.Struct.Embed.Field.html"},{"type":"type","doc":"Whether the field should display as inline","title":"Nostrum.Struct.Embed.Field.inline/0","ref":"Nostrum.Struct.Embed.Field.html#t:inline/0"},{"type":"type","doc":"Name of the field","title":"Nostrum.Struct.Embed.Field.name/0","ref":"Nostrum.Struct.Embed.Field.html#t:name/0"},{"type":"type","doc":"","title":"Nostrum.Struct.Embed.Field.t/0","ref":"Nostrum.Struct.Embed.Field.html#t:t/0"},{"type":"type","doc":"Value of the field","title":"Nostrum.Struct.Embed.Field.value/0","ref":"Nostrum.Struct.Embed.Field.html#t:value/0"},{"type":"module","doc":"Struct representing a Discord embed footer.","title":"Nostrum.Struct.Embed.Footer","ref":"Nostrum.Struct.Embed.Footer.html"},{"type":"type","doc":"URL of footer icon","title":"Nostrum.Struct.Embed.Footer.icon_url/0","ref":"Nostrum.Struct.Embed.Footer.html#t:icon_url/0"},{"type":"type","doc":"Proxied URL of footer icon","title":"Nostrum.Struct.Embed.Footer.proxy_icon_url/0","ref":"Nostrum.Struct.Embed.Footer.html#t:proxy_icon_url/0"},{"type":"type","doc":"","title":"Nostrum.Struct.Embed.Footer.t/0","ref":"Nostrum.Struct.Embed.Footer.html#t:t/0"},{"type":"type","doc":"Footer text","title":"Nostrum.Struct.Embed.Footer.text/0","ref":"Nostrum.Struct.Embed.Footer.html#t:text/0"},{"type":"module","doc":"Struct representing a Discord embed image.","title":"Nostrum.Struct.Embed.Image","ref":"Nostrum.Struct.Embed.Image.html"},{"type":"type","doc":"Height of the image","title":"Nostrum.Struct.Embed.Image.height/0","ref":"Nostrum.Struct.Embed.Image.html#t:height/0"},{"type":"type","doc":"URL of image icon","title":"Nostrum.Struct.Embed.Image.proxy_url/0","ref":"Nostrum.Struct.Embed.Image.html#t:proxy_url/0"},{"type":"type","doc":"","title":"Nostrum.Struct.Embed.Image.t/0","ref":"Nostrum.Struct.Embed.Image.html#t:t/0"},{"type":"type","doc":"Image text","title":"Nostrum.Struct.Embed.Image.url/0","ref":"Nostrum.Struct.Embed.Image.html#t:url/0"},{"type":"type","doc":"Width of the image","title":"Nostrum.Struct.Embed.Image.width/0","ref":"Nostrum.Struct.Embed.Image.html#t:width/0"},{"type":"module","doc":"Struct representing a Discord embed provider.","title":"Nostrum.Struct.Embed.Provider","ref":"Nostrum.Struct.Embed.Provider.html"},{"type":"type","doc":"Name of the provider","title":"Nostrum.Struct.Embed.Provider.name/0","ref":"Nostrum.Struct.Embed.Provider.html#t:name/0"},{"type":"type","doc":"","title":"Nostrum.Struct.Embed.Provider.t/0","ref":"Nostrum.Struct.Embed.Provider.html#t:t/0"},{"type":"type","doc":"URL of provider","title":"Nostrum.Struct.Embed.Provider.url/0","ref":"Nostrum.Struct.Embed.Provider.html#t:url/0"},{"type":"module","doc":"Struct representing a Discord embed thumbnail.","title":"Nostrum.Struct.Embed.Thumbnail","ref":"Nostrum.Struct.Embed.Thumbnail.html"},{"type":"type","doc":"Height of the thumbnail","title":"Nostrum.Struct.Embed.Thumbnail.height/0","ref":"Nostrum.Struct.Embed.Thumbnail.html#t:height/0"},{"type":"type","doc":"URL of thumbnail icon","title":"Nostrum.Struct.Embed.Thumbnail.proxy_url/0","ref":"Nostrum.Struct.Embed.Thumbnail.html#t:proxy_url/0"},{"type":"type","doc":"","title":"Nostrum.Struct.Embed.Thumbnail.t/0","ref":"Nostrum.Struct.Embed.Thumbnail.html#t:t/0"},{"type":"type","doc":"Source URL of the thumbnail","title":"Nostrum.Struct.Embed.Thumbnail.url/0","ref":"Nostrum.Struct.Embed.Thumbnail.html#t:url/0"},{"type":"type","doc":"Width of the thumbnail","title":"Nostrum.Struct.Embed.Thumbnail.width/0","ref":"Nostrum.Struct.Embed.Thumbnail.html#t:width/0"},{"type":"module","doc":"Struct representing a Discord embed video.","title":"Nostrum.Struct.Embed.Video","ref":"Nostrum.Struct.Embed.Video.html"},{"type":"type","doc":"Height of the video","title":"Nostrum.Struct.Embed.Video.height/0","ref":"Nostrum.Struct.Embed.Video.html#t:height/0"},{"type":"type","doc":"","title":"Nostrum.Struct.Embed.Video.t/0","ref":"Nostrum.Struct.Embed.Video.html#t:t/0"},{"type":"type","doc":"Source URL of the video","title":"Nostrum.Struct.Embed.Video.url/0","ref":"Nostrum.Struct.Embed.Video.html#t:url/0"},{"type":"type","doc":"Width of the video","title":"Nostrum.Struct.Embed.Video.width/0","ref":"Nostrum.Struct.Embed.Video.html#t:width/0"},{"type":"module","doc":"Struct representing a Discord emoji.","title":"Nostrum.Struct.Emoji","ref":"Nostrum.Struct.Emoji.html"},{"type":"module","doc":"A `Nostrum.Struct.Emoji` can be mentioned in message content using the `String.Chars`\nprotocol or `mention/1`.\n\n```elixir\nemoji = %Nostrum.Struct.Emoji{id: 437093487582642177, name: \"foxbot\"}\nNostrum.Api.create_message!(184046599834435585, \"#{emoji}\")\n%Nostrum.Struct.Message{content: \"<:foxbot:437093487582642177>\"}\n\nemoji = %Nostrum.Struct.Emoji{id: 436885297037312001, name: \"tealixir\"}\nNostrum.Api.create_message!(280085880452939778, \"#{Nostrum.Struct.Emoji.mention(emoji)}\")\n%Nostrum.Struct.Message{content: \"<:tealixir:436885297037312001>\"}\n```","title":"Mentioning Emojis in Messages - Nostrum.Struct.Emoji","ref":"Nostrum.Struct.Emoji.html#module-mentioning-emojis-in-messages"},{"type":"module","doc":"A `Nostrum.Struct.Emoji` can be used in `Nostrum.Api` by using its api name\nor the struct itself.\n\n```elixir\nemoji = %Nostrum.Struct.Emoji{id: 436885297037312001, name: \"tealixir\"}\nNostrum.Api.create_reaction(381889573426429952, 436247584349356032, Nostrum.Struct.Emoji.api_name(emoji))\n{:ok}\n\nemoji = %Nostrum.Struct.Emoji{id: 436189601820966923, name: \"elixir\"}\nNostrum.Api.create_reaction(381889573426429952, 436247584349356032, emoji)\n{:ok}\n```\n\nSee `t:Nostrum.Struct.Emoji.api_name/0` for more information.","title":"Using Emojis in the Api - Nostrum.Struct.Emoji","ref":"Nostrum.Struct.Emoji.html#module-using-emojis-in-the-api"},{"type":"function","doc":"Formats an emoji struct into its `t:Nostrum.Struct.Emoji.api_name/0`.","title":"Nostrum.Struct.Emoji.api_name/1","ref":"Nostrum.Struct.Emoji.html#api_name/1"},{"type":"function","doc":"```elixir\niex> emoji = %Nostrum.Struct.Emoji{name: \"Γ¡É\"}\n...> Nostrum.Struct.Emoji.api_name(emoji)\n\"Γ¡É\"\n\niex> emoji = %Nostrum.Struct.Emoji{id: 437093487582642177, name: \"foxbot\"}\n...> Nostrum.Struct.Emoji.api_name(emoji)\n\"foxbot:437093487582642177\"\n```","title":"Examples - Nostrum.Struct.Emoji.api_name/1","ref":"Nostrum.Struct.Emoji.html#api_name/1-examples"},{"type":"function","doc":"Returns the url of a custom emoji's image. If the emoji is not a custom one,\nreturns `nil`.","title":"Nostrum.Struct.Emoji.image_url/1","ref":"Nostrum.Struct.Emoji.html#image_url/1"},{"type":"function","doc":"```elixir\niex> emoji = %Nostrum.Struct.Emoji{id: 450225070569291776}\niex> Nostrum.Struct.Emoji.image_url(emoji)\n\"https://cdn.discordapp.com/emojis/450225070569291776.png\"\n\niex> emoji = %Nostrum.Struct.Emoji{id: 406140226998894614, animated: true}\niex> Nostrum.Struct.Emoji.image_url(emoji)\n\"https://cdn.discordapp.com/emojis/406140226998894614.gif\"\n\niex> emoji = %Nostrum.Struct.Emoji{id: nil, name: \"Γ¡É\"}\niex> Nostrum.Struct.Emoji.image_url(emoji)\nnil\n```","title":"Examples - Nostrum.Struct.Emoji.image_url/1","ref":"Nostrum.Struct.Emoji.html#image_url/1-examples"},{"type":"function","doc":"Formats an `Nostrum.Struct.Emoji` into a mention.","title":"Nostrum.Struct.Emoji.mention/1","ref":"Nostrum.Struct.Emoji.html#mention/1"},{"type":"function","doc":"```elixir\niex> emoji = %Nostrum.Struct.Emoji{name: \"≡ƒæì\"}\n...> Nostrum.Struct.Emoji.mention(emoji)\n\"≡ƒæì\"\n\niex> emoji = %Nostrum.Struct.Emoji{id: 436885297037312001, name: \"tealixir\"}\n...> Nostrum.Struct.Emoji.mention(emoji)\n\"<:tealixir:436885297037312001>\"\n\niex> emoji = %Nostrum.Struct.Emoji{id: 437016804309860372, name: \"blobseizure\", animated: true}\n...> Nostrum.Struct.Emoji.mention(emoji)\n\" \"\n```","title":"Examples - Nostrum.Struct.Emoji.mention/1","ref":"Nostrum.Struct.Emoji.html#mention/1-examples"},{"type":"type","doc":"Whether this emoji is animated","title":"Nostrum.Struct.Emoji.animated/0","ref":"Nostrum.Struct.Emoji.html#t:animated/0"},{"type":"type","doc":"Emoji string to be used with the Discord API.\n\nSome API endpoints take an `emoji`. If it is a custom emoji, it must be\nstructured as `\"id:name\"`. If it is an unicode emoji, it can be structured\nas any of the following:\n\n * `\"name\"`\n * A base 16 unicode emoji string.\n\n`api_name/1` is a convenience function that returns a `Nostrum.Struct.Emoji`'s\napi name.","title":"Nostrum.Struct.Emoji.api_name/0","ref":"Nostrum.Struct.Emoji.html#t:api_name/0"},{"type":"type","doc":"```elixir\n# Custom Emojis\n\"nostrum:431890438091489\"\n\n# Unicode Emojis\n\"≡ƒæì\"\n\"\\xF0\\x9F\\x98\\x81\"\n\"\\u2b50\"\n```","title":"Examples - Nostrum.Struct.Emoji.api_name/0","ref":"Nostrum.Struct.Emoji.html#t:api_name/0-examples"},{"type":"type","doc":"Id of the emoji","title":"Nostrum.Struct.Emoji.id/0","ref":"Nostrum.Struct.Emoji.html#t:id/0"},{"type":"type","doc":"Whether this emoji is managed","title":"Nostrum.Struct.Emoji.managed/0","ref":"Nostrum.Struct.Emoji.html#t:managed/0"},{"type":"type","doc":"Name of the emoji","title":"Nostrum.Struct.Emoji.name/0","ref":"Nostrum.Struct.Emoji.html#t:name/0"},{"type":"type","doc":"Whether this emoji must be wrapped in colons","title":"Nostrum.Struct.Emoji.require_colons/0","ref":"Nostrum.Struct.Emoji.html#t:require_colons/0"},{"type":"type","doc":"Roles this emoji is whitelisted to","title":"Nostrum.Struct.Emoji.roles/0","ref":"Nostrum.Struct.Emoji.html#t:roles/0"},{"type":"type","doc":"","title":"Nostrum.Struct.Emoji.t/0","ref":"Nostrum.Struct.Emoji.html#t:t/0"},{"type":"type","doc":"User that created this emoji","title":"Nostrum.Struct.Emoji.user/0","ref":"Nostrum.Struct.Emoji.html#t:user/0"},{"type":"module","doc":"Struct representing a Discord guild.","title":"Nostrum.Struct.Guild","ref":"Nostrum.Struct.Guild.html"},{"type":"function","doc":"Returns the URL of the guild's banner, or `nil` if no guild banner has been set.\n\nSupported image formats are PNG, GIF, JPEG and WebP.","title":"Nostrum.Struct.Guild.banner_url/2","ref":"Nostrum.Struct.Guild.html#banner_url/2"},{"type":"function","doc":"```elixir\niex> guild = %Nostrum.Struct.Guild{banner: \"656477617264736e6f7764656e\",\n...> id: 112233445566778899}\niex> Nostrum.Struct.Guild.banner_url(guild)\n\"https://cdn.discordapp.com/banners/112233445566778899/656477617264736e6f7764656e.webp\"\niex> Nostrum.Struct.Guild.banner_url(guild, \"png\")\n\"https://cdn.discordapp.com/banners/112233445566778899/656477617264736e6f7764656e.png\"\n```","title":"Examples - Nostrum.Struct.Guild.banner_url/2","ref":"Nostrum.Struct.Guild.html#banner_url/2-examples"},{"type":"function","doc":"Returns the URL of the guild's discovery splash, or `nil` if no discovery splash.\n\nSupported image formats are PNG, JPEG and WebP.","title":"Nostrum.Struct.Guild.discovery_splash_url/2","ref":"Nostrum.Struct.Guild.html#discovery_splash_url/2"},{"type":"function","doc":"```elixir\niex> guild = %Nostrum.Struct.Guild{discovery_splash: \"656477617264736e6f7764656e\",\n...> id: 112233445566778899}\niex> Nostrum.Struct.Guild.discovery_splash_url(guild)\n\"https://cdn.discordapp.com/discovery-splashes/112233445566778899/656477617264736e6f7764656e.webp\"\niex> Nostrum.Struct.Guild.discovery_splash_url(guild, \"png\")\n\"https://cdn.discordapp.com/discovery-splashes/112233445566778899/656477617264736e6f7764656e.png\"\n```","title":"Examples - Nostrum.Struct.Guild.discovery_splash_url/2","ref":"Nostrum.Struct.Guild.html#discovery_splash_url/2-examples"},{"type":"function","doc":"Returns the URL of a guild's icon, or `nil` if there is no icon.\n\nSupported image formats are PNG, JPEG, and WebP.","title":"Nostrum.Struct.Guild.icon_url/2","ref":"Nostrum.Struct.Guild.html#icon_url/2"},{"type":"function","doc":"```elixir\niex> guild = %Nostrum.Struct.Guild{icon: \"86e39f7ae3307e811784e2ffd11a7310\",\n...> id: 41771983423143937}\niex> Nostrum.Struct.Guild.icon_url(guild)\n\"https://cdn.discordapp.com/icons/41771983423143937/86e39f7ae3307e811784e2ffd11a7310.webp\"\niex> Nostrum.Struct.Guild.icon_url(guild, \"png\")\n\"https://cdn.discordapp.com/icons/41771983423143937/86e39f7ae3307e811784e2ffd11a7310.png\"\n\niex> guild = %Nostrum.Struct.Guild{icon: nil}\niex> Nostrum.Struct.Guild.icon_url(guild)\nnil\n```","title":"Examples - Nostrum.Struct.Guild.icon_url/2","ref":"Nostrum.Struct.Guild.html#icon_url/2-examples"},{"type":"function","doc":"Returns the URL of a guild's splash, or `nil` if there is no splash.\n\nSupported image formats are PNG, JPEG, and WebP.","title":"Nostrum.Struct.Guild.splash_url/2","ref":"Nostrum.Struct.Guild.html#splash_url/2"},{"type":"function","doc":"```elixir\niex> guild = %Nostrum.Struct.Guild{splash: \"86e39f7ae3307e811784e2ffd11a7310\",\n...> id: 41771983423143937}\niex> Nostrum.Struct.Guild.splash_url(guild)\n\"https://cdn.discordapp.com/splashes/41771983423143937/86e39f7ae3307e811784e2ffd11a7310.webp\"\niex> Nostrum.Struct.Guild.splash_url(guild, \"png\")\n\"https://cdn.discordapp.com/splashes/41771983423143937/86e39f7ae3307e811784e2ffd11a7310.png\"\n\niex> guild = %Nostrum.Struct.Guild{splash: nil}\niex> Nostrum.Struct.Guild.splash_url(guild)\nnil\n```","title":"Examples - Nostrum.Struct.Guild.splash_url/2","ref":"Nostrum.Struct.Guild.html#splash_url/2-examples"},{"type":"type","doc":"The id of the guild's afk channel","title":"Nostrum.Struct.Guild.afk_channel_id/0","ref":"Nostrum.Struct.Guild.html#t:afk_channel_id/0"},{"type":"type","doc":"The time someone must be afk before being moved","title":"Nostrum.Struct.Guild.afk_timeout/0","ref":"Nostrum.Struct.Guild.html#t:afk_timeout/0"},{"type":"type","doc":"Application id of the guild creator if it is bot created.","title":"Nostrum.Struct.Guild.application_id/0","ref":"Nostrum.Struct.Guild.html#t:application_id/0"},{"type":"type","doc":"A `Nostrum.Struct.Guild` that is fully available.","title":"Nostrum.Struct.Guild.available_guild/0","ref":"Nostrum.Struct.Guild.html#t:available_guild/0"},{"type":"type","doc":"Banner hash for the guild, if prefixed with `a_` an animated GIF is available.","title":"Nostrum.Struct.Guild.banner/0","ref":"Nostrum.Struct.Guild.html#t:banner/0"},{"type":"type","doc":"List of channels","title":"Nostrum.Struct.Guild.channels/0","ref":"Nostrum.Struct.Guild.html#t:channels/0"},{"type":"type","doc":"Default message notifications level.","title":"Nostrum.Struct.Guild.default_message_notifications/0","ref":"Nostrum.Struct.Guild.html#t:default_message_notifications/0"},{"type":"type","doc":"User-set description of the guild","title":"Nostrum.Struct.Guild.description/0","ref":"Nostrum.Struct.Guild.html#t:description/0"},{"type":"type","doc":"Hash of the Discovery splash screen","title":"Nostrum.Struct.Guild.discovery_splash/0","ref":"Nostrum.Struct.Guild.html#t:discovery_splash/0"},{"type":"type","doc":"List of emojis","title":"Nostrum.Struct.Guild.emojis/0","ref":"Nostrum.Struct.Guild.html#t:emojis/0"},{"type":"type","doc":"Explicit content filter level.","title":"Nostrum.Struct.Guild.explicit_content_filter/0","ref":"Nostrum.Struct.Guild.html#t:explicit_content_filter/0"},{"type":"type","doc":"List of guild features","title":"Nostrum.Struct.Guild.features/0","ref":"Nostrum.Struct.Guild.html#t:features/0"},{"type":"type","doc":"List of scheduled events","title":"Nostrum.Struct.Guild.guild_scheduled_events/0","ref":"Nostrum.Struct.Guild.html#t:guild_scheduled_events/0"},{"type":"type","doc":"The hash of the guild's icon","title":"Nostrum.Struct.Guild.icon/0","ref":"Nostrum.Struct.Guild.html#t:icon/0"},{"type":"type","doc":"The guild's id","title":"Nostrum.Struct.Guild.id/0","ref":"Nostrum.Struct.Guild.html#t:id/0"},{"type":"type","doc":"Date the bot user joined the guild","title":"Nostrum.Struct.Guild.joined_at/0","ref":"Nostrum.Struct.Guild.html#t:joined_at/0"},{"type":"type","doc":"Whether the guild is considered 'large'","title":"Nostrum.Struct.Guild.large/0","ref":"Nostrum.Struct.Guild.html#t:large/0"},{"type":"type","doc":"Maximum members for the guild","title":"Nostrum.Struct.Guild.max_members/0","ref":"Nostrum.Struct.Guild.html#t:max_members/0"},{"type":"type","doc":"Maximum number of presences for the guild.\n\nThis will be unset for most guilds, except for in Discord's terms, the\n\"largest of guilds\", where the field will be set to the maximum number of\nonline (gateway connected) members.","title":"Nostrum.Struct.Guild.max_presences/0","ref":"Nostrum.Struct.Guild.html#t:max_presences/0"},{"type":"type","doc":"The maximum amount of users in a stage video channel","title":"Nostrum.Struct.Guild.max_stage_video_channel_users/0","ref":"Nostrum.Struct.Guild.html#t:max_stage_video_channel_users/0"},{"type":"type","doc":"The maximum amount of users in a video channel","title":"Nostrum.Struct.Guild.max_video_channel_users/0","ref":"Nostrum.Struct.Guild.html#t:max_video_channel_users/0"},{"type":"type","doc":"Total number of members in the guild","title":"Nostrum.Struct.Guild.member_count/0","ref":"Nostrum.Struct.Guild.html#t:member_count/0"},{"type":"type","doc":"Required MFA level of the guild","title":"Nostrum.Struct.Guild.mfa_level/0","ref":"Nostrum.Struct.Guild.html#t:mfa_level/0"},{"type":"type","doc":"The name of the guild.","title":"Nostrum.Struct.Guild.name/0","ref":"Nostrum.Struct.Guild.html#t:name/0"},{"type":"type","doc":"NSFW level for the guild, unrated guilds have `:default`","title":"Nostrum.Struct.Guild.nsfw_level/0","ref":"Nostrum.Struct.Guild.html#t:nsfw_level/0"},{"type":"type","doc":"The id of the guild owner","title":"Nostrum.Struct.Guild.owner_id/0","ref":"Nostrum.Struct.Guild.html#t:owner_id/0"},{"type":"type","doc":"Preferred locale for the guild, set by the user","title":"Nostrum.Struct.Guild.preferred_locale/0","ref":"Nostrum.Struct.Guild.html#t:preferred_locale/0"},{"type":"type","doc":"Whether the guild has the boost progress bar enabled","title":"Nostrum.Struct.Guild.premium_progress_bar_enabled/0","ref":"Nostrum.Struct.Guild.html#t:premium_progress_bar_enabled/0"},{"type":"type","doc":"Number of boosts received by the guild","title":"Nostrum.Struct.Guild.premium_subscription_count/0","ref":"Nostrum.Struct.Guild.html#t:premium_subscription_count/0"},{"type":"type","doc":"Premium tier of the guild (0-3)","title":"Nostrum.Struct.Guild.premium_tier/0","ref":"Nostrum.Struct.Guild.html#t:premium_tier/0"},{"type":"type","doc":"The id of the channel where admins and moderators receive notices from Discord. This\nis only available to guilds that contain ``PUBLIC`` in `t:features/0`.","title":"Nostrum.Struct.Guild.public_updates_channel_id/0","ref":"Nostrum.Struct.Guild.html#t:public_updates_channel_id/0"},{"type":"type","doc":"The id of the voice region","title":"Nostrum.Struct.Guild.region/0","ref":"Nostrum.Struct.Guild.html#t:region/0"},{"type":"type","doc":"A `Nostrum.Struct.Guild` that is sent on guild-specific rest endpoints.","title":"Nostrum.Struct.Guild.rest_guild/0","ref":"Nostrum.Struct.Guild.html#t:rest_guild/0"},{"type":"type","doc":"List of roles","title":"Nostrum.Struct.Guild.roles/0","ref":"Nostrum.Struct.Guild.html#t:roles/0"},{"type":"type","doc":"The id of the channel that is used for rules. This is only available to guilds that\ncontain ``PUBLIC`` in `t:features/0`.","title":"Nostrum.Struct.Guild.rules_channel_id/0","ref":"Nostrum.Struct.Guild.html#t:rules_channel_id/0"},{"type":"type","doc":"The id of the channel where admins and moderators of Community guilds receive safety alerts from Discord","title":"Nostrum.Struct.Guild.safety_alerts_channel_id/0","ref":"Nostrum.Struct.Guild.html#t:safety_alerts_channel_id/0"},{"type":"type","doc":"The hash of the guild's splash","title":"Nostrum.Struct.Guild.splash/0","ref":"Nostrum.Struct.Guild.html#t:splash/0"},{"type":"type","doc":"Custom stickers registered to the guild","title":"Nostrum.Struct.Guild.stickers/0","ref":"Nostrum.Struct.Guild.html#t:stickers/0"},{"type":"type","doc":"Bitset representing the system channel flags\n\nSee `Nostrum.Struct.Guild.SystemChannelFlags` for more information on the flag\ncontents as well as methods to parse and create your own values for this\nfield.","title":"Nostrum.Struct.Guild.system_channel_flags/0","ref":"Nostrum.Struct.Guild.html#t:system_channel_flags/0"},{"type":"type","doc":"The id of the channel to which system messages are sent.","title":"Nostrum.Struct.Guild.system_channel_id/0","ref":"Nostrum.Struct.Guild.html#t:system_channel_id/0"},{"type":"type","doc":"","title":"Nostrum.Struct.Guild.t/0","ref":"Nostrum.Struct.Guild.html#t:t/0"},{"type":"type","doc":"All active threads in the guild that the current user has permission to view","title":"Nostrum.Struct.Guild.threads/0","ref":"Nostrum.Struct.Guild.html#t:threads/0"},{"type":"type","doc":"Whether the guild is available","title":"Nostrum.Struct.Guild.unavailable/0","ref":"Nostrum.Struct.Guild.html#t:unavailable/0"},{"type":"type","doc":"A `Nostrum.Struct.Guild` that is unavailable.","title":"Nostrum.Struct.Guild.unavailable_guild/0","ref":"Nostrum.Struct.Guild.html#t:unavailable_guild/0"},{"type":"type","doc":"A `Nostrum.Struct.Guild` that is sent on user-specific rest endpoints.","title":"Nostrum.Struct.Guild.user_guild/0","ref":"Nostrum.Struct.Guild.html#t:user_guild/0"},{"type":"type","doc":"Guild invite vanity URL","title":"Nostrum.Struct.Guild.vanity_url_code/0","ref":"Nostrum.Struct.Guild.html#t:vanity_url_code/0"},{"type":"type","doc":"The level of verification","title":"Nostrum.Struct.Guild.verification_level/0","ref":"Nostrum.Struct.Guild.html#t:verification_level/0"},{"type":"type","doc":"List of voice states as maps","title":"Nostrum.Struct.Guild.voice_states/0","ref":"Nostrum.Struct.Guild.html#t:voice_states/0"},{"type":"type","doc":"The welcome screen of a Community guild, shown to new members, returned in an Invite's guild object","title":"Nostrum.Struct.Guild.welcome_screen/0","ref":"Nostrum.Struct.Guild.html#t:welcome_screen/0"},{"type":"type","doc":"The channel id for the server widget.","title":"Nostrum.Struct.Guild.widget_channel_id/0","ref":"Nostrum.Struct.Guild.html#t:widget_channel_id/0"},{"type":"type","doc":"Whether or not the server widget is enabled.","title":"Nostrum.Struct.Guild.widget_enabled/0","ref":"Nostrum.Struct.Guild.html#t:widget_enabled/0"},{"type":"module","doc":"Represents a guild's audit log.","title":"Nostrum.Struct.Guild.AuditLog","ref":"Nostrum.Struct.Guild.AuditLog.html"},{"type":"type","doc":"Entries of this guild's audit log","title":"Nostrum.Struct.Guild.AuditLog.entries/0","ref":"Nostrum.Struct.Guild.AuditLog.html#t:entries/0"},{"type":"type","doc":"","title":"Nostrum.Struct.Guild.AuditLog.t/0","ref":"Nostrum.Struct.Guild.AuditLog.html#t:t/0"},{"type":"type","doc":"Users found in the audit log","title":"Nostrum.Struct.Guild.AuditLog.users/0","ref":"Nostrum.Struct.Guild.AuditLog.html#t:users/0"},{"type":"type","doc":"Webhooks found in the audit log","title":"Nostrum.Struct.Guild.AuditLog.webhooks/0","ref":"Nostrum.Struct.Guild.AuditLog.html#t:webhooks/0"},{"type":"module","doc":"Represents a single entry in the guild's audit log.","title":"Nostrum.Struct.Guild.AuditLogEntry","ref":"Nostrum.Struct.Guild.AuditLogEntry.html"},{"type":"type","doc":"An audit log event identifier. See [Audit log events](https://discord.com/developers/docs/resources/audit-log#audit-log-entry-object-audit-log-events)","title":"Nostrum.Struct.Guild.AuditLogEntry.action_type/0","ref":"Nostrum.Struct.Guild.AuditLogEntry.html#t:action_type/0"},{"type":"type","doc":"Individual changes of this audit log entry.\nChange keys are documented [here](https://discord.com/developers/docs/resources/audit-log#audit-log-change-object-audit-log-change-key)","title":"Nostrum.Struct.Guild.AuditLogEntry.changes/0","ref":"Nostrum.Struct.Guild.AuditLogEntry.html#t:changes/0"},{"type":"type","doc":"The ID of this entry","title":"Nostrum.Struct.Guild.AuditLogEntry.id/0","ref":"Nostrum.Struct.Guild.AuditLogEntry.html#t:id/0"},{"type":"type","doc":"[Optional audit entry info](https://discord.com/developers/docs/resources/audit-log#audit-log-entry-object-optional-audit-entry-info)","title":"Nostrum.Struct.Guild.AuditLogEntry.options/0","ref":"Nostrum.Struct.Guild.AuditLogEntry.html#t:options/0"},{"type":"type","doc":"The reason for this change, if applicable","title":"Nostrum.Struct.Guild.AuditLogEntry.reason/0","ref":"Nostrum.Struct.Guild.AuditLogEntry.html#t:reason/0"},{"type":"type","doc":"","title":"Nostrum.Struct.Guild.AuditLogEntry.t/0","ref":"Nostrum.Struct.Guild.AuditLogEntry.html#t:t/0"},{"type":"type","doc":"The ID of the affected entity","title":"Nostrum.Struct.Guild.AuditLogEntry.target_id/0","ref":"Nostrum.Struct.Guild.AuditLogEntry.html#t:target_id/0"},{"type":"type","doc":"The user who made the changes","title":"Nostrum.Struct.Guild.AuditLogEntry.user_id/0","ref":"Nostrum.Struct.Guild.AuditLogEntry.html#t:user_id/0"},{"type":"module","doc":"Represents a guild ban.","title":"Nostrum.Struct.Guild.Ban","ref":"Nostrum.Struct.Guild.Ban.html"},{"type":"type","doc":"The reason for the ban","title":"Nostrum.Struct.Guild.Ban.reason/0","ref":"Nostrum.Struct.Guild.Ban.html#t:reason/0"},{"type":"type","doc":"","title":"Nostrum.Struct.Guild.Ban.t/0","ref":"Nostrum.Struct.Guild.Ban.html#t:t/0"},{"type":"type","doc":"The banned user","title":"Nostrum.Struct.Guild.Ban.user/0","ref":"Nostrum.Struct.Guild.Ban.html#t:user/0"},{"type":"module","doc":"Struct representing a Discord guild integration.\n\nThe struct defined here only has the fields provided for Discord Bot\nintegrations available. If you use Nostrum in a non-bot application, feel\nfree to open an issue to add it.","title":"Nostrum.Struct.Guild.Integration","ref":"Nostrum.Struct.Guild.Integration.html"},{"type":"module","doc":"- https://discord.com/developers/docs/resources/guild#integration-object","title":"References - Nostrum.Struct.Guild.Integration","ref":"Nostrum.Struct.Guild.Integration.html#module-references"},{"type":"type","doc":"The integration account.","title":"Nostrum.Struct.Guild.Integration.account/0","ref":"Nostrum.Struct.Guild.Integration.html#t:account/0"},{"type":"type","doc":"The bot/OAuth2 application for discord integrations","title":"Nostrum.Struct.Guild.Integration.application/0","ref":"Nostrum.Struct.Guild.Integration.html#t:application/0"},{"type":"type","doc":"Whether this integration is enabled","title":"Nostrum.Struct.Guild.Integration.enabled/0","ref":"Nostrum.Struct.Guild.Integration.html#t:enabled/0"},{"type":"type","doc":"The id of the guild this integration is for.\n\nOnly included when the Integration is sent via the gateway.","title":"Nostrum.Struct.Guild.Integration.guild_id/0","ref":"Nostrum.Struct.Guild.Integration.html#t:guild_id/0"},{"type":"type","doc":"Snowflake ID of the integration","title":"Nostrum.Struct.Guild.Integration.id/0","ref":"Nostrum.Struct.Guild.Integration.html#t:id/0"},{"type":"type","doc":"Name of the integration","title":"Nostrum.Struct.Guild.Integration.name/0","ref":"Nostrum.Struct.Guild.Integration.html#t:name/0"},{"type":"type","doc":"Represents a Guild integration","title":"Nostrum.Struct.Guild.Integration.t/0","ref":"Nostrum.Struct.Guild.Integration.html#t:t/0"},{"type":"type","doc":"Integration type (Twitch, YouTube or Discord)","title":"Nostrum.Struct.Guild.Integration.type/0","ref":"Nostrum.Struct.Guild.Integration.html#t:type/0"},{"type":"module","doc":"Struct representing a Discord guild's integration account.","title":"Nostrum.Struct.Guild.Integration.Account","ref":"Nostrum.Struct.Guild.Integration.Account.html"},{"type":"type","doc":"The id of the account","title":"Nostrum.Struct.Guild.Integration.Account.id/0","ref":"Nostrum.Struct.Guild.Integration.Account.html#t:id/0"},{"type":"type","doc":"The name of the account","title":"Nostrum.Struct.Guild.Integration.Account.name/0","ref":"Nostrum.Struct.Guild.Integration.Account.html#t:name/0"},{"type":"type","doc":"","title":"Nostrum.Struct.Guild.Integration.Account.t/0","ref":"Nostrum.Struct.Guild.Integration.Account.html#t:t/0"},{"type":"module","doc":"Struct representing a Discord Guild Integration Application.","title":"Nostrum.Struct.Guild.Integration.Application","ref":"Nostrum.Struct.Guild.Integration.Application.html"},{"type":"type","doc":"The bot associated with the application.","title":"Nostrum.Struct.Guild.Integration.Application.bot/0","ref":"Nostrum.Struct.Guild.Integration.Application.html#t:bot/0"},{"type":"type","doc":"The description of the application.","title":"Nostrum.Struct.Guild.Integration.Application.description/0","ref":"Nostrum.Struct.Guild.Integration.Application.html#t:description/0"},{"type":"type","doc":"The icon hash of the application.","title":"Nostrum.Struct.Guild.Integration.Application.icon/0","ref":"Nostrum.Struct.Guild.Integration.Application.html#t:icon/0"},{"type":"type","doc":"The id of the application.","title":"Nostrum.Struct.Guild.Integration.Application.id/0","ref":"Nostrum.Struct.Guild.Integration.Application.html#t:id/0"},{"type":"type","doc":"The name of the application.","title":"Nostrum.Struct.Guild.Integration.Application.name/0","ref":"Nostrum.Struct.Guild.Integration.Application.html#t:name/0"},{"type":"type","doc":"The summary of the application.","title":"Nostrum.Struct.Guild.Integration.Application.summary/0","ref":"Nostrum.Struct.Guild.Integration.Application.html#t:summary/0"},{"type":"type","doc":"","title":"Nostrum.Struct.Guild.Integration.Application.t/0","ref":"Nostrum.Struct.Guild.Integration.Application.html#t:t/0"},{"type":"module","doc":"Struct representing a Discord guild member.\n\nA `Nostrum.Struct.Guild.Member` stores a `Nostrum.Struct.User`'s properties\npertaining to a specific `Nostrum.Struct.Guild`.","title":"Nostrum.Struct.Guild.Member","ref":"Nostrum.Struct.Guild.Member.html"},{"type":"module","doc":"A `Nostrum.Struct.Guild.Member` can be mentioned in message content using the `String.Chars`\nprotocol or `mention/1`.\n\n```elixir\nmember = %Nostrum.Struct.Guild.Member{user_id: 120571255635181568}\nNostrum.Api.create_message!(184046599834435585, \"#{member}\")\n%Nostrum.Struct.Message{content: \"<@120571255635181568>\"}\n\nmember = %Nostrum.Struct.Guild.Member{user_id: 89918932789497856}\nNostrum.Api.create_message!(280085880452939778, \"#{Nostrum.Struct.Guild.Member.mention(member)}\")\n%Nostrum.Struct.Message{content: \"<@89918932789497856>\"}\n```","title":"Mentioning Members in Messages - Nostrum.Struct.Guild.Member","ref":"Nostrum.Struct.Guild.Member.html#module-mentioning-members-in-messages"},{"type":"function","doc":"Returns a guild-specific avatar URL for a `Nostrum.Struct.Guild.Member`.\n\nSupported formats are `png` (default), `jpg`, `webp` and `gif`.\n\nAs mentioned in the avatar hash typedoc, if the avatar hash begins with `a_`, the\navatar is animated and can be returned as a gif.","title":"Nostrum.Struct.Guild.Member.avatar_url/3","ref":"Nostrum.Struct.Guild.Member.html#avatar_url/3"},{"type":"function","doc":"```elixir\niex> member = %Nostrum.Struct.Guild.Member{\n...> user_id: 165023948638126080,\n...> avatar: \"4c8319db8ea745275a1399f8f8aa74ab\"\n...> }\niex> guild_id = 1226944827137069107\niex> Nostrum.Struct.Guild.Member.avatar_url(member, guild_id)\n\"https://cdn.discordapp.com/guilds/1226944827137069107/users/165023948638126080/avatars/4c8319db8ea745275a1399f8f8aa74ab.png\"\n```","title":"Examples - Nostrum.Struct.Guild.Member.avatar_url/3","ref":"Nostrum.Struct.Guild.Member.html#avatar_url/3-examples"},{"type":"function","doc":"Returns a member's permissions in a guild channel, based on its `Nostrum.Struct.Overwrite`s.","title":"Nostrum.Struct.Guild.Member.guild_channel_permissions/3","ref":"Nostrum.Struct.Guild.Member.html#guild_channel_permissions/3"},{"type":"function","doc":"```elixir\nguild = Nostrum.Cache.GuildCache.get!(279093381723062272)\nmember = Map.get(guild.members, 177888205536886784)\nchannel_id = 381889573426429952\nNostrum.Struct.Guild.Member.guild_channel_permissions(member, guild, channel_id)\n#=> [:manage_messages]\n```","title":"Examples - Nostrum.Struct.Guild.Member.guild_channel_permissions/3","ref":"Nostrum.Struct.Guild.Member.html#guild_channel_permissions/3-examples"},{"type":"function","doc":"Returns a member's guild permissions.","title":"Nostrum.Struct.Guild.Member.guild_permissions/2","ref":"Nostrum.Struct.Guild.Member.html#guild_permissions/2"},{"type":"function","doc":"```elixir\nguild = Nostrum.Cache.GuildCache.get!(279093381723062272)\nmember = Map.get(guild.members, 177888205536886784)\nNostrum.Struct.Guild.Member.guild_permissions(member, guild)\n#=> [:administrator]\n```","title":"Examples - Nostrum.Struct.Guild.Member.guild_permissions/2","ref":"Nostrum.Struct.Guild.Member.html#guild_permissions/2-examples"},{"type":"function","doc":"Formats a `Nostrum.Struct.Guild.Member` into a mention.","title":"Nostrum.Struct.Guild.Member.mention/1","ref":"Nostrum.Struct.Guild.Member.html#mention/1"},{"type":"function","doc":"```elixir\niex> member = %Nostrum.Struct.Guild.Member{user_id: 177888205536886784}\n...> Nostrum.Struct.Guild.Member.mention(member)\n\"<@177888205536886784>\"\n```","title":"Examples - Nostrum.Struct.Guild.Member.mention/1","ref":"Nostrum.Struct.Guild.Member.html#mention/1-examples"},{"type":"function","doc":"Return the topmost role of the given member on the given guild.\n\nThe topmost role is determined via `t:Nostrum.Struct.Guild.Role.position`.","title":"Nostrum.Struct.Guild.Member.top_role/2","ref":"Nostrum.Struct.Guild.Member.html#top_role/2"},{"type":"function","doc":"- `member`: The member whose top role to return.\n- `guild`: The guild which the member belongs to.","title":"Parameters - Nostrum.Struct.Guild.Member.top_role/2","ref":"Nostrum.Struct.Guild.Member.html#top_role/2-parameters"},{"type":"function","doc":"The topmost role of the member on the given guild, if the member has roles\nassigned. Otherwise, `nil` is returned.","title":"Return value - Nostrum.Struct.Guild.Member.top_role/2","ref":"Nostrum.Struct.Guild.Member.html#top_role/2-return-value"},{"type":"type","doc":"Avatar hash of the custom avatar set by the user in the guild.\n\nIf animated, this is prefixed with `a_`.\n\nYou can use `avatar_url/3` to fetch a full-formed URL of this asset.","title":"Nostrum.Struct.Guild.Member.avatar/0","ref":"Nostrum.Struct.Guild.Member.html#t:avatar/0"},{"type":"type","doc":"Current timeout status of the member.\n\nIf member is currently timed out this will be a `t:DateTime.t/0` of the\nunmute time, it will be `nil` or a date in the past if the member is not\ncurrently timed out.","title":"Nostrum.Struct.Guild.Member.communication_disabled_until/0","ref":"Nostrum.Struct.Guild.Member.html#t:communication_disabled_until/0"},{"type":"type","doc":"Whether the member is deafened.\nIf you dont request offline guild members this field will be `nil` for any members that come online.","title":"Nostrum.Struct.Guild.Member.deaf/0","ref":"Nostrum.Struct.Guild.Member.html#t:deaf/0"},{"type":"type","doc":"Guild member flags represented as a bitset.\n\nLook at the `Nostrum.Struct.Guild.Member.Flags` module for guidance parsing this value.","title":"Nostrum.Struct.Guild.Member.flags/0","ref":"Nostrum.Struct.Guild.Member.html#t:flags/0"},{"type":"type","doc":"Date the member joined the guild, as a unix timestamp.\nIf you dont request offline guild members this field will be `nil` for any members that come online.","title":"Nostrum.Struct.Guild.Member.joined_at/0","ref":"Nostrum.Struct.Guild.Member.html#t:joined_at/0"},{"type":"type","doc":"Whether the member is muted.\nIf you dont request offline guild members this field will be `nil` for any members that come online.","title":"Nostrum.Struct.Guild.Member.mute/0","ref":"Nostrum.Struct.Guild.Member.html#t:mute/0"},{"type":"type","doc":"The nickname of the member","title":"Nostrum.Struct.Guild.Member.nick/0","ref":"Nostrum.Struct.Guild.Member.html#t:nick/0"},{"type":"type","doc":"Current guild member gate status. `false` if user has yet to pass the membership screening\nconfiguration for the guild, `true` if the member has passed.","title":"Nostrum.Struct.Guild.Member.pending/0","ref":"Nostrum.Struct.Guild.Member.html#t:pending/0"},{"type":"type","doc":"Current guild booster status of the member.\n\nIf member is currently boosting a guild this will be a `t:DateTime.t/0` since\nthe start of the boosting, it will be `nil` if the member is not currently\nboosting the guild.","title":"Nostrum.Struct.Guild.Member.premium_since/0","ref":"Nostrum.Struct.Guild.Member.html#t:premium_since/0"},{"type":"type","doc":"A list of role ids","title":"Nostrum.Struct.Guild.Member.roles/0","ref":"Nostrum.Struct.Guild.Member.html#t:roles/0"},{"type":"type","doc":"","title":"Nostrum.Struct.Guild.Member.t/0","ref":"Nostrum.Struct.Guild.Member.html#t:t/0"},{"type":"type","doc":"The user ID.\n\nThis field can be `nil` if the Member struct came as a partial Member object\nincluded in a message received from a guild channel. To retrieve the user\nobject, use `Nostrum.Cache.UserCache`.","title":"Nostrum.Struct.Guild.Member.user_id/0","ref":"Nostrum.Struct.Guild.Member.html#t:user_id/0"},{"type":"module","doc":"Struct representing the flags a guild member can have.","title":"Nostrum.Struct.Guild.Member.Flags","ref":"Nostrum.Struct.Guild.Member.Flags.html"},{"type":"function","doc":"Constructs a flag struct based on an integer from the Discord API, normally from `t:Nostrum.Struct.Guild.Member.flags/0`.","title":"Nostrum.Struct.Guild.Member.Flags.from_integer/1","ref":"Nostrum.Struct.Guild.Member.Flags.html#from_integer/1"},{"type":"function","doc":"```elixir\niex> Nostrum.Struct.Guild.Member.Flags.from_integer(9)\n%Nostrum.Struct.Guild.Member.Flags{\n did_rejoin: true,\n completed_onboarding: false,\n bypasses_verification: false,\n started_onboarding: true\n}\n```","title":"Examples - Nostrum.Struct.Guild.Member.Flags.from_integer/1","ref":"Nostrum.Struct.Guild.Member.Flags.html#from_integer/1-examples"},{"type":"function","doc":"Convert a flag struct to an integer value.","title":"Nostrum.Struct.Guild.Member.Flags.to_integer/1","ref":"Nostrum.Struct.Guild.Member.Flags.html#to_integer/1"},{"type":"function","doc":"```elixir\niex> my_flags = %Nostrum.Struct.Guild.Member.Flags{\n...> did_rejoin: true,\n...> completed_onboarding: false,\n...> bypasses_verification: false,\n...> started_onboarding: true\n...> }\niex> Nostrum.Struct.Guild.Member.Flags.to_integer(my_flags)\n9\n```","title":"Examples - Nostrum.Struct.Guild.Member.Flags.to_integer/1","ref":"Nostrum.Struct.Guild.Member.Flags.html#to_integer/1-examples"},{"type":"type","doc":"Member is exempt from guild verification requirements","title":"Nostrum.Struct.Guild.Member.Flags.bypasses_verification/0","ref":"Nostrum.Struct.Guild.Member.Flags.html#t:bypasses_verification/0"},{"type":"type","doc":"Member has completed onboarding","title":"Nostrum.Struct.Guild.Member.Flags.completed_onboarding/0","ref":"Nostrum.Struct.Guild.Member.Flags.html#t:completed_onboarding/0"},{"type":"type","doc":"Member has left and rejoined the guild","title":"Nostrum.Struct.Guild.Member.Flags.did_rejoin/0","ref":"Nostrum.Struct.Guild.Member.Flags.html#t:did_rejoin/0"},{"type":"type","doc":"","title":"Nostrum.Struct.Guild.Member.Flags.flags/0","ref":"Nostrum.Struct.Guild.Member.Flags.html#t:flags/0"},{"type":"type","doc":"Member has started onboarding","title":"Nostrum.Struct.Guild.Member.Flags.started_onboarding/0","ref":"Nostrum.Struct.Guild.Member.Flags.html#t:started_onboarding/0"},{"type":"type","doc":"","title":"Nostrum.Struct.Guild.Member.Flags.t/0","ref":"Nostrum.Struct.Guild.Member.Flags.html#t:t/0"},{"type":"module","doc":"Struct representing a Discord role.","title":"Nostrum.Struct.Guild.Role","ref":"Nostrum.Struct.Guild.Role.html"},{"type":"module","doc":"A `Nostrum.Struct.Guild.Role` can be mentioned in message content using the `String.Chars`\nprotocol or `mention/1`.\n\n```elixir\nrole = %Nostrum.Struct.Guild.Role{id: 431886897539973131}\nNostrum.Api.create_message!(184046599834435585, \"#{role}\")\n%Nostrum.Struct.Message{}\n\nrole = %Nostrum.Struct.Guild.Role{id: 431884023535632398}\nNostrum.Api.create_message!(280085880452939778, \"#{Nostrum.Struct.Guild.Role.mention(role)}\")\n%Nostrum.Struct.Message{}\n```","title":"Mentioning Roles in Messages - Nostrum.Struct.Guild.Role","ref":"Nostrum.Struct.Guild.Role.html#module-mentioning-roles-in-messages"},{"type":"function","doc":"Formats an `Nostrum.Struct.Role` into a mention.","title":"Nostrum.Struct.Guild.Role.mention/1","ref":"Nostrum.Struct.Guild.Role.html#mention/1"},{"type":"function","doc":"```elixir\niex> role = %Nostrum.Struct.Guild.Role{id: 431886639627763722}\n...> Nostrum.Struct.Guild.Role.mention(role)\n\"<@&431886639627763722>\"\n```","title":"Examples - Nostrum.Struct.Guild.Role.mention/1","ref":"Nostrum.Struct.Guild.Role.html#mention/1-examples"},{"type":"type","doc":"The hexadecimal color code","title":"Nostrum.Struct.Guild.Role.color/0","ref":"Nostrum.Struct.Guild.Role.html#t:color/0"},{"type":"type","doc":"Whether the role is pinned in the user listing","title":"Nostrum.Struct.Guild.Role.hoist/0","ref":"Nostrum.Struct.Guild.Role.html#t:hoist/0"},{"type":"type","doc":"The hash of the role icon","title":"Nostrum.Struct.Guild.Role.icon/0","ref":"Nostrum.Struct.Guild.Role.html#t:icon/0"},{"type":"type","doc":"The id of the role","title":"Nostrum.Struct.Guild.Role.id/0","ref":"Nostrum.Struct.Guild.Role.html#t:id/0"},{"type":"type","doc":"Whether the role is managed by an integration","title":"Nostrum.Struct.Guild.Role.managed/0","ref":"Nostrum.Struct.Guild.Role.html#t:managed/0"},{"type":"type","doc":"Whether the role is mentionable","title":"Nostrum.Struct.Guild.Role.mentionable/0","ref":"Nostrum.Struct.Guild.Role.html#t:mentionable/0"},{"type":"type","doc":"The name of the role","title":"Nostrum.Struct.Guild.Role.name/0","ref":"Nostrum.Struct.Guild.Role.html#t:name/0"},{"type":"type","doc":"The permission bit set","title":"Nostrum.Struct.Guild.Role.permissions/0","ref":"Nostrum.Struct.Guild.Role.html#t:permissions/0"},{"type":"type","doc":"The position of the role","title":"Nostrum.Struct.Guild.Role.position/0","ref":"Nostrum.Struct.Guild.Role.html#t:position/0"},{"type":"type","doc":"","title":"Nostrum.Struct.Guild.Role.t/0","ref":"Nostrum.Struct.Guild.Role.html#t:t/0"},{"type":"type","doc":"The standard unicode character emoji icon for the role","title":"Nostrum.Struct.Guild.Role.unicode_emoji/0","ref":"Nostrum.Struct.Guild.Role.html#t:unicode_emoji/0"},{"type":"module","doc":"Struct representing a scheduled event in a guild.","title":"Nostrum.Struct.Guild.ScheduledEvent","ref":"Nostrum.Struct.Guild.ScheduledEvent.html"},{"type":"function","doc":"","title":"Nostrum.Struct.Guild.ScheduledEvent.to_struct/1","ref":"Nostrum.Struct.Guild.ScheduledEvent.html#to_struct/1"},{"type":"type","doc":"The id of the channel the scheduled event is in.\nWill be `nil` if `entity_type` is `EXTERNAL`","title":"Nostrum.Struct.Guild.ScheduledEvent.channel_id/0","ref":"Nostrum.Struct.Guild.ScheduledEvent.html#t:channel_id/0"},{"type":"type","doc":"The user who created the scheduled event. Only present when retrieving the event from the API.\n\nnote: This will be `nil` for events created before October 25th, 2021.","title":"Nostrum.Struct.Guild.ScheduledEvent.creator/0","ref":"Nostrum.Struct.Guild.ScheduledEvent.html#t:creator/0"},{"type":"type","doc":"The id of the user who created the scheduled event.\n\nnote: This will be `nil` only for events created before October 25th, 2021.","title":"Nostrum.Struct.Guild.ScheduledEvent.creator_id/0","ref":"Nostrum.Struct.Guild.ScheduledEvent.html#t:creator_id/0"},{"type":"type","doc":"The description of the scheduled event.","title":"Nostrum.Struct.Guild.ScheduledEvent.description/0","ref":"Nostrum.Struct.Guild.ScheduledEvent.html#t:description/0"},{"type":"type","doc":"the id of an entity associated with a guild scheduled event.","title":"Nostrum.Struct.Guild.ScheduledEvent.entity_id/0","ref":"Nostrum.Struct.Guild.ScheduledEvent.html#t:entity_id/0"},{"type":"type","doc":"Holds additional metadata associated with a scheduled event.","title":"Nostrum.Struct.Guild.ScheduledEvent.entity_metadata/0","ref":"Nostrum.Struct.Guild.ScheduledEvent.html#t:entity_metadata/0"},{"type":"type","doc":"The type of entity the scheduled event is for.\n\n`1` - `STAGE_INSTANCE`\n`2` - `VOICE`\n`3` - `EXTERNAL`","title":"Nostrum.Struct.Guild.ScheduledEvent.entity_type/0","ref":"Nostrum.Struct.Guild.ScheduledEvent.html#t:entity_type/0"},{"type":"type","doc":"The id of the guild the scheduled event is in.","title":"Nostrum.Struct.Guild.ScheduledEvent.guild_id/0","ref":"Nostrum.Struct.Guild.ScheduledEvent.html#t:guild_id/0"},{"type":"type","doc":"The id of the scheduled event.","title":"Nostrum.Struct.Guild.ScheduledEvent.id/0","ref":"Nostrum.Struct.Guild.ScheduledEvent.html#t:id/0"},{"type":"type","doc":"The name of the scheduled event.","title":"Nostrum.Struct.Guild.ScheduledEvent.name/0","ref":"Nostrum.Struct.Guild.ScheduledEvent.html#t:name/0"},{"type":"type","doc":"The privacy level of the scheduled event.\nAt the time of writing, this is always `2` for `GUILD_ONLY`","title":"Nostrum.Struct.Guild.ScheduledEvent.privacy_level/0","ref":"Nostrum.Struct.Guild.ScheduledEvent.html#t:privacy_level/0"},{"type":"type","doc":"The time the scheduled event ends as an ISO8601 timestamp.\nOnly required if `entity_type` is `EXTERNAL`","title":"Nostrum.Struct.Guild.ScheduledEvent.scheduled_end_time/0","ref":"Nostrum.Struct.Guild.ScheduledEvent.html#t:scheduled_end_time/0"},{"type":"type","doc":"The time the scheduled event starts.","title":"Nostrum.Struct.Guild.ScheduledEvent.scheduled_start_time/0","ref":"Nostrum.Struct.Guild.ScheduledEvent.html#t:scheduled_start_time/0"},{"type":"type","doc":"The status of the scheduled event.\n\n`1` - `SCHEDULED`\n`2` - `ACTIVE`\n`3` - `COMPLETED`\n`4` - `CANCELLED`\n\nnote: Once status is set to Completed or Cancelled it can no longer be updated.","title":"Nostrum.Struct.Guild.ScheduledEvent.status/0","ref":"Nostrum.Struct.Guild.ScheduledEvent.html#t:status/0"},{"type":"type","doc":"","title":"Nostrum.Struct.Guild.ScheduledEvent.t/0","ref":"Nostrum.Struct.Guild.ScheduledEvent.html#t:t/0"},{"type":"type","doc":"The number of users who have subscribed to the scheduled event.","title":"Nostrum.Struct.Guild.ScheduledEvent.user_count/0","ref":"Nostrum.Struct.Guild.ScheduledEvent.html#t:user_count/0"},{"type":"module","doc":"Struct representing any additional metadata associated with a Guild Event.","title":"Nostrum.Struct.Guild.ScheduledEvent.EntityMetadata","ref":"Nostrum.Struct.Guild.ScheduledEvent.EntityMetadata.html"},{"type":"type","doc":"The location of the event, 1-100 characters.\n\nRequired for events with `entity_type` of `EXTERNAL`.","title":"Nostrum.Struct.Guild.ScheduledEvent.EntityMetadata.location/0","ref":"Nostrum.Struct.Guild.ScheduledEvent.EntityMetadata.html#t:location/0"},{"type":"type","doc":"","title":"Nostrum.Struct.Guild.ScheduledEvent.EntityMetadata.t/0","ref":"Nostrum.Struct.Guild.ScheduledEvent.EntityMetadata.html#t:t/0"},{"type":"module","doc":"Struct representing a user in a guild's scheduled event.","title":"Nostrum.Struct.Guild.ScheduledEvent.User","ref":"Nostrum.Struct.Guild.ScheduledEvent.User.html"},{"type":"function","doc":"","title":"Nostrum.Struct.Guild.ScheduledEvent.User.to_struct/1","ref":"Nostrum.Struct.Guild.ScheduledEvent.User.html#to_struct/1"},{"type":"type","doc":"The ID of the guild scheduled event.","title":"Nostrum.Struct.Guild.ScheduledEvent.User.event_id/0","ref":"Nostrum.Struct.Guild.ScheduledEvent.User.html#t:event_id/0"},{"type":"type","doc":"The guild member for the event","title":"Nostrum.Struct.Guild.ScheduledEvent.User.member/0","ref":"Nostrum.Struct.Guild.ScheduledEvent.User.html#t:member/0"},{"type":"type","doc":"","title":"Nostrum.Struct.Guild.ScheduledEvent.User.t/0","ref":"Nostrum.Struct.Guild.ScheduledEvent.User.html#t:t/0"},{"type":"type","doc":"The user which is subscribed to the event.","title":"Nostrum.Struct.Guild.ScheduledEvent.User.user/0","ref":"Nostrum.Struct.Guild.ScheduledEvent.User.html#t:user/0"},{"type":"module","doc":"Struct representing the flags on a guild's system channel","title":"Nostrum.Struct.Guild.SystemChannelFlags","ref":"Nostrum.Struct.Guild.SystemChannelFlags.html"},{"type":"function","doc":"Constructs a flag struct based on an integer from the Discord API, normally from `t:Nostrum.Struct.Guild.Member.flags/0`.","title":"Nostrum.Struct.Guild.SystemChannelFlags.from_integer/1","ref":"Nostrum.Struct.Guild.SystemChannelFlags.html#from_integer/1"},{"type":"function","doc":"```elixir\niex> Nostrum.Struct.Guild.SystemChannelFlags.from_integer(3)\n%Nostrum.Struct.Guild.SystemChannelFlags{\n suppress_guild_reminder_notifications: false,\n suppress_join_notification_replies: false,\n suppress_join_notifications: true,\n suppress_premium_subscriptions: true,\n suppress_role_subscription_purchase_notification_replies: false,\n suppress_role_subscription_purchase_notifications: false\n}\n```","title":"Examples - Nostrum.Struct.Guild.SystemChannelFlags.from_integer/1","ref":"Nostrum.Struct.Guild.SystemChannelFlags.html#from_integer/1-examples"},{"type":"function","doc":"Convert a flag struct to an integer value.","title":"Nostrum.Struct.Guild.SystemChannelFlags.to_integer/1","ref":"Nostrum.Struct.Guild.SystemChannelFlags.html#to_integer/1"},{"type":"function","doc":"```elixir\niex> my_flags = %Nostrum.Struct.Guild.SystemChannelFlags{\n...> suppress_join_notifications: true,\n...> suppress_join_notification_replies: true\n...> }\niex> Nostrum.Struct.Guild.SystemChannelFlags.to_integer(my_flags)\n9\n```","title":"Examples - Nostrum.Struct.Guild.SystemChannelFlags.to_integer/1","ref":"Nostrum.Struct.Guild.SystemChannelFlags.html#to_integer/1-examples"},{"type":"type","doc":"","title":"Nostrum.Struct.Guild.SystemChannelFlags.flags/0","ref":"Nostrum.Struct.Guild.SystemChannelFlags.html#t:flags/0"},{"type":"type","doc":"Suppress server setup tips","title":"Nostrum.Struct.Guild.SystemChannelFlags.suppress_guild_reminder_notifications/0","ref":"Nostrum.Struct.Guild.SystemChannelFlags.html#t:suppress_guild_reminder_notifications/0"},{"type":"type","doc":"Hide member join sticker reply buttons","title":"Nostrum.Struct.Guild.SystemChannelFlags.suppress_join_notification_replies/0","ref":"Nostrum.Struct.Guild.SystemChannelFlags.html#t:suppress_join_notification_replies/0"},{"type":"type","doc":"Suppress member join notifications","title":"Nostrum.Struct.Guild.SystemChannelFlags.suppress_join_notifications/0","ref":"Nostrum.Struct.Guild.SystemChannelFlags.html#t:suppress_join_notifications/0"},{"type":"type","doc":"Suppress server boost notifications","title":"Nostrum.Struct.Guild.SystemChannelFlags.suppress_premium_subscriptions/0","ref":"Nostrum.Struct.Guild.SystemChannelFlags.html#t:suppress_premium_subscriptions/0"},{"type":"type","doc":"Suppress role subscription purchase and renewal notifications","title":"Nostrum.Struct.Guild.SystemChannelFlags.suppress_role_subscription_purchase_notifications/0","ref":"Nostrum.Struct.Guild.SystemChannelFlags.html#t:suppress_role_subscription_purchase_notifications/0"},{"type":"type","doc":"Hide role subscription sticker reply buttons","title":"Nostrum.Struct.Guild.SystemChannelFlags.suppress_role_subscription_purchase_notifications_replies/0","ref":"Nostrum.Struct.Guild.SystemChannelFlags.html#t:suppress_role_subscription_purchase_notifications_replies/0"},{"type":"type","doc":"","title":"Nostrum.Struct.Guild.SystemChannelFlags.t/0","ref":"Nostrum.Struct.Guild.SystemChannelFlags.html#t:t/0"},{"type":"module","doc":"Struct representing an unavailable Discord guild.","title":"Nostrum.Struct.Guild.UnavailableGuild","ref":"Nostrum.Struct.Guild.UnavailableGuild.html"},{"type":"function","doc":"","title":"Nostrum.Struct.Guild.UnavailableGuild.to_struct/1","ref":"Nostrum.Struct.Guild.UnavailableGuild.html#to_struct/1"},{"type":"type","doc":"The guild's id","title":"Nostrum.Struct.Guild.UnavailableGuild.id/0","ref":"Nostrum.Struct.Guild.UnavailableGuild.html#t:id/0"},{"type":"type","doc":"","title":"Nostrum.Struct.Guild.UnavailableGuild.t/0","ref":"Nostrum.Struct.Guild.UnavailableGuild.html#t:t/0"},{"type":"type","doc":"Whether the guild is available","title":"Nostrum.Struct.Guild.UnavailableGuild.unavailable/0","ref":"Nostrum.Struct.Guild.UnavailableGuild.html#t:unavailable/0"},{"type":"module","doc":"Application command and Component invocation struct.","title":"Nostrum.Struct.Interaction","ref":"Nostrum.Struct.Interaction.html"},{"type":"type","doc":"ID of the application that this interaction is for\n\nWill be `nil` if the interaction was part of a message struct.","title":"Nostrum.Struct.Interaction.application_id/0","ref":"Nostrum.Struct.Interaction.html#t:application_id/0"},{"type":"type","doc":"PartialChannel object for the channel where the command was invoked\n\nAt the time of writing, only the fields `:type` and `:id` are guaranteed to be present.","title":"Nostrum.Struct.Interaction.channel/0","ref":"Nostrum.Struct.Interaction.html#t:channel/0"},{"type":"type","doc":"ID of the channel where the command was invoked","title":"Nostrum.Struct.Interaction.channel_id/0","ref":"Nostrum.Struct.Interaction.html#t:channel_id/0"},{"type":"type","doc":"Invocation data.\n\nOnly present for *ApplicationCommand* and *MessageComponent* interactions, that is, `type=2` or `type=3`.","title":"Nostrum.Struct.Interaction.data/0","ref":"Nostrum.Struct.Interaction.html#t:data/0"},{"type":"type","doc":"ID of the guild where the command was invoked","title":"Nostrum.Struct.Interaction.guild_id/0","ref":"Nostrum.Struct.Interaction.html#t:guild_id/0"},{"type":"type","doc":"The guild's preferred locale, if invoked in a guild.","title":"Nostrum.Struct.Interaction.guild_locale/0","ref":"Nostrum.Struct.Interaction.html#t:guild_locale/0"},{"type":"type","doc":"Interaction identifier","title":"Nostrum.Struct.Interaction.id/0","ref":"Nostrum.Struct.Interaction.html#t:id/0"},{"type":"type","doc":"The selected langauge of the invoking user.\n\nAvailable on all interaction types except for *PING*","title":"Nostrum.Struct.Interaction.locale/0","ref":"Nostrum.Struct.Interaction.html#t:locale/0"},{"type":"type","doc":"Member information about the invoker, if invoked on a guild","title":"Nostrum.Struct.Interaction.member/0","ref":"Nostrum.Struct.Interaction.html#t:member/0"},{"type":"type","doc":"For components, the message they were attached to","title":"Nostrum.Struct.Interaction.message/0","ref":"Nostrum.Struct.Interaction.html#t:message/0"},{"type":"type","doc":"A command invocation for Application Commands or Components.\n\nOfficial reference:\nhttps://discord.com/developers/docs/interactions/application-commands","title":"Nostrum.Struct.Interaction.t/0","ref":"Nostrum.Struct.Interaction.html#t:t/0"},{"type":"type","doc":"Continuation token for responses\n\nWill be `nil` if this interaction is part of a message struct.","title":"Nostrum.Struct.Interaction.token/0","ref":"Nostrum.Struct.Interaction.html#t:token/0"},{"type":"type","doc":"Interaction kind.\n\n- `1` for *Ping*\n- `2` for *ApplicationCommand*\n- `3` for *MessageComponent*\n- `4` for *ApplicationCommandAutocomplete*\n- `5` for *ModalSubmit*","title":"Nostrum.Struct.Interaction.type/0","ref":"Nostrum.Struct.Interaction.html#t:type/0"},{"type":"type","doc":"User object for the invoking user, will be a copy of `member.user` if invoked in a guild","title":"Nostrum.Struct.Interaction.user/0","ref":"Nostrum.Struct.Interaction.html#t:user/0"},{"type":"type","doc":"Version identifier, always `1`\n\nWill be `nil` if this interaction is part of a message struct.","title":"Nostrum.Struct.Interaction.version/0","ref":"Nostrum.Struct.Interaction.html#t:version/0"},{"type":"module","doc":"Struct representing a Discord invite.","title":"Nostrum.Struct.Invite","ref":"Nostrum.Struct.Invite.html"},{"type":"type","doc":"Approximate total member count of the guild this invite is for.","title":"Nostrum.Struct.Invite.approximate_member_count/0","ref":"Nostrum.Struct.Invite.html#t:approximate_member_count/0"},{"type":"type","doc":"Approximate online member count of the guild this invite is for.","title":"Nostrum.Struct.Invite.approximate_presence_count/0","ref":"Nostrum.Struct.Invite.html#t:approximate_presence_count/0"},{"type":"type","doc":"The channel this invite is for.","title":"Nostrum.Struct.Invite.channel/0","ref":"Nostrum.Struct.Invite.html#t:channel/0"},{"type":"type","doc":"The invite code (unique ID).","title":"Nostrum.Struct.Invite.code/0","ref":"Nostrum.Struct.Invite.html#t:code/0"},{"type":"type","doc":"When this invite was created.","title":"Nostrum.Struct.Invite.created_at/0","ref":"Nostrum.Struct.Invite.html#t:created_at/0"},{"type":"type","doc":"An invite with metadata.","title":"Nostrum.Struct.Invite.detailed_invite/0","ref":"Nostrum.Struct.Invite.html#t:detailed_invite/0"},{"type":"type","doc":"Partially populated guild struct of the guild this invite is for.","title":"Nostrum.Struct.Invite.guild/0","ref":"Nostrum.Struct.Invite.html#t:guild/0"},{"type":"type","doc":"The user who created this invite.","title":"Nostrum.Struct.Invite.inviter/0","ref":"Nostrum.Struct.Invite.html#t:inviter/0"},{"type":"type","doc":"Duration (in seconds) after which the invite expires.","title":"Nostrum.Struct.Invite.max_age/0","ref":"Nostrum.Struct.Invite.html#t:max_age/0"},{"type":"type","doc":"Max number of times this invite can be used.","title":"Nostrum.Struct.Invite.max_uses/0","ref":"Nostrum.Struct.Invite.html#t:max_uses/0"},{"type":"type","doc":"An invite without metadata.","title":"Nostrum.Struct.Invite.simple_invite/0","ref":"Nostrum.Struct.Invite.html#t:simple_invite/0"},{"type":"type","doc":"","title":"Nostrum.Struct.Invite.t/0","ref":"Nostrum.Struct.Invite.html#t:t/0"},{"type":"type","doc":"Partially populated user struct of the target user for this invite.","title":"Nostrum.Struct.Invite.target_user/0","ref":"Nostrum.Struct.Invite.html#t:target_user/0"},{"type":"type","doc":"The type of user target for this invite.","title":"Nostrum.Struct.Invite.target_user_type/0","ref":"Nostrum.Struct.Invite.html#t:target_user_type/0"},{"type":"type","doc":"Whether this invite only grants temporary membership.","title":"Nostrum.Struct.Invite.temporary/0","ref":"Nostrum.Struct.Invite.html#t:temporary/0"},{"type":"type","doc":"Number of times this invite has been used.","title":"Nostrum.Struct.Invite.uses/0","ref":"Nostrum.Struct.Invite.html#t:uses/0"},{"type":"module","doc":"A `Nostrum.Struct.Message` represents a message.\n\nMore information can be found on the\n[Discord API Message Object Documentation](https://discord.com/developers/docs/resources/channel#message-object).","title":"Nostrum.Struct.Message","ref":"Nostrum.Struct.Message.html"},{"type":"function","doc":"Takes the message and produces a URL that, when clicked from the user client, will\njump them to that message, assuming they have access to the message and the message\nis valid.","title":"Nostrum.Struct.Message.to_url/1","ref":"Nostrum.Struct.Message.html#to_url/1"},{"type":"type","doc":"The activity of the message. Sent with Rich Presence-related chat embeds","title":"Nostrum.Struct.Message.activity/0","ref":"Nostrum.Struct.Message.html#t:activity/0"},{"type":"type","doc":"The application of the message. Sent with Rich Presence-related chat embeds","title":"Nostrum.Struct.Message.application/0","ref":"Nostrum.Struct.Message.html#t:application/0"},{"type":"type","doc":"if the message is a response to an interaction, this is the ID of the interaction's application","title":"Nostrum.Struct.Message.application_id/0","ref":"Nostrum.Struct.Message.html#t:application_id/0"},{"type":"type","doc":"List of attached files in the message","title":"Nostrum.Struct.Message.attachments/0","ref":"Nostrum.Struct.Message.html#t:attachments/0"},{"type":"type","doc":"The user struct of the author","title":"Nostrum.Struct.Message.author/0","ref":"Nostrum.Struct.Message.html#t:author/0"},{"type":"type","doc":"The id of the channel","title":"Nostrum.Struct.Message.channel_id/0","ref":"Nostrum.Struct.Message.html#t:channel_id/0"},{"type":"type","doc":"List of Message Components","title":"Nostrum.Struct.Message.components/0","ref":"Nostrum.Struct.Message.html#t:components/0"},{"type":"type","doc":"The content of the message","title":"Nostrum.Struct.Message.content/0","ref":"Nostrum.Struct.Message.html#t:content/0"},{"type":"type","doc":"When the message was edited","title":"Nostrum.Struct.Message.edited_timestamp/0","ref":"Nostrum.Struct.Message.html#t:edited_timestamp/0"},{"type":"type","doc":"List of embedded content in the message","title":"Nostrum.Struct.Message.embeds/0","ref":"Nostrum.Struct.Message.html#t:embeds/0"},{"type":"type","doc":"The id of the guild","title":"Nostrum.Struct.Message.guild_id/0","ref":"Nostrum.Struct.Message.html#t:guild_id/0"},{"type":"type","doc":"The id of the message","title":"Nostrum.Struct.Message.id/0","ref":"Nostrum.Struct.Message.html#t:id/0"},{"type":"type","doc":"Message interaction object","title":"Nostrum.Struct.Message.interaction/0","ref":"Nostrum.Struct.Message.html#t:interaction/0"},{"type":"type","doc":"Partial Guild Member object received with the Message Create event if message came from a guild channel","title":"Nostrum.Struct.Message.member/0","ref":"Nostrum.Struct.Message.html#t:member/0"},{"type":"type","doc":"List of channels mentioned in the message\n\n[Discord API Channel Mention Object Documentation](https://discord.com/developers/docs/resources/channel#channel-mention-object-channel-mention-structure)","title":"Nostrum.Struct.Message.mention_channels/0","ref":"Nostrum.Struct.Message.html#t:mention_channels/0"},{"type":"type","doc":"Whether this message mentions everyone","title":"Nostrum.Struct.Message.mention_everyone/0","ref":"Nostrum.Struct.Message.html#t:mention_everyone/0"},{"type":"type","doc":"List of roles ids mentioned in the message","title":"Nostrum.Struct.Message.mention_roles/0","ref":"Nostrum.Struct.Message.html#t:mention_roles/0"},{"type":"type","doc":"List of users mentioned in the message","title":"Nostrum.Struct.Message.mentions/0","ref":"Nostrum.Struct.Message.html#t:mentions/0"},{"type":"type","doc":"Reference data sent with crossposted messages and replies.\n\nFor `THREAD_STARTER_MESSAGE` messages, this field points to the message that the thread was started from.","title":"Nostrum.Struct.Message.message_reference/0","ref":"Nostrum.Struct.Message.html#t:message_reference/0"},{"type":"type","doc":"Validates if a message was sent","title":"Nostrum.Struct.Message.nonce/0","ref":"Nostrum.Struct.Message.html#t:nonce/0"},{"type":"type","doc":"Whether this message is pinned","title":"Nostrum.Struct.Message.pinned/0","ref":"Nostrum.Struct.Message.html#t:pinned/0"},{"type":"type","doc":"The poll object attached to the message","title":"Nostrum.Struct.Message.poll/0","ref":"Nostrum.Struct.Message.html#t:poll/0"},{"type":"type","doc":"Reactions to the message.","title":"Nostrum.Struct.Message.reactions/0","ref":"Nostrum.Struct.Message.html#t:reactions/0"},{"type":"type","doc":"The message associated with the `:message_reference`\n\nThis field is only returned for messages with a `type: 19` (Reply). If the message is a reply but the`:referenced_message` field is not present, the backend did not attempt to fetch the message that was being replied to,so its state is unknown. If the field exists but is `nil`, the referenced message was deleted.","title":"Nostrum.Struct.Message.referenced_message/0","ref":"Nostrum.Struct.Message.html#t:referenced_message/0"},{"type":"type","doc":"Array of Message Sticker Item Objects","title":"Nostrum.Struct.Message.sticker_items/0","ref":"Nostrum.Struct.Message.html#t:sticker_items/0"},{"type":"type","doc":"","title":"Nostrum.Struct.Message.t/0","ref":"Nostrum.Struct.Message.html#t:t/0"},{"type":"type","doc":"The thread that was started from this message, includes a thread member object","title":"Nostrum.Struct.Message.thread/0","ref":"Nostrum.Struct.Message.html#t:thread/0"},{"type":"type","doc":"When the message was sent","title":"Nostrum.Struct.Message.timestamp/0","ref":"Nostrum.Struct.Message.html#t:timestamp/0"},{"type":"type","doc":"Whether this was a TTS message","title":"Nostrum.Struct.Message.tts/0","ref":"Nostrum.Struct.Message.html#t:tts/0"},{"type":"type","doc":"[Discord API Message Object Type Documentation](https://discord.com/developers/docs/resources/channel#message-object-message-types)\n\n- `0` - `DEFAULT`\n- `1` - `RECIPIENT_ADD`\n- `2` - `RECIPIENT_REMOVE`\n- `3` - `CALL`\n- `4` - `CHANNEL_NAME_CHANGE`\n- `5` - `CHANNEL_ICON_CHANGE`\n- `6` - `CHANNEL_PINNED_MESSAGE`\n- `7` - `GUILD_MEMBER_JOIN`\n- `8` - `USER_PREMIUM_GUILD_SUBSCRIPTION`\n- `9` - `USER_PREMIUM_GUILD_SUBSCRIPTION_TIER_1`\n- `10` - `USER_PREMIUM_GUILD_SUBSCRIPTION_TIER_2`\n- `11` - `USER_PREMIUM_GUILD_SUBSCRIPTION_TIER_3`\n- `12` - `CHANNEL_FOLLOW_ADD`\n- `14` - `GUILD_DISCOVERY_DISQUALIFIED`\n- `15` - `GUILD_DISCOVERY_REQUALIFIED`\n- `16` - `GUILD_DISCOVERY_GRACE_PERIOD_INITIAL_WARNING`\n- `17` - `GUILD_DISCOVERY_GRACE_PERIOD_FINAL_WARNING`\n- `18` - `THREAD_CREATED`\n- `19` - `REPLY`\n- `20` - `APPLICATION_COMMAND`\n- `21` - `THREAD_STARTER_MESSAGE`\n- `22` - `GUILD_INVITE_REMINDER`","title":"Nostrum.Struct.Message.type/0","ref":"Nostrum.Struct.Message.html#t:type/0"},{"type":"type","doc":"If the message is generated by a webhook, this is the webhook's id","title":"Nostrum.Struct.Message.webhook_id/0","ref":"Nostrum.Struct.Message.html#t:webhook_id/0"},{"type":"module","doc":"Struct representing a Discord message activity.","title":"Nostrum.Struct.Message.Activity","ref":"Nostrum.Struct.Message.Activity.html"},{"type":"type","doc":"The party id from a [rich presence event](https://discord.com/developers/docs/rich-presence/how-to).","title":"Nostrum.Struct.Message.Activity.party_id/0","ref":"Nostrum.Struct.Message.Activity.html#t:party_id/0"},{"type":"type","doc":"","title":"Nostrum.Struct.Message.Activity.t/0","ref":"Nostrum.Struct.Message.Activity.html#t:t/0"},{"type":"type","doc":"[Type of message activity](https://discord.com/developers/docs/resources/channel#message-object-message-activity-types).","title":"Nostrum.Struct.Message.Activity.type/0","ref":"Nostrum.Struct.Message.Activity.html#t:type/0"},{"type":"module","doc":"Struct representing a Discord message application.","title":"Nostrum.Struct.Message.Application","ref":"Nostrum.Struct.Message.Application.html"},{"type":"type","doc":"Id of the embed's image asset","title":"Nostrum.Struct.Message.Application.cover_image/0","ref":"Nostrum.Struct.Message.Application.html#t:cover_image/0"},{"type":"type","doc":"Application's description","title":"Nostrum.Struct.Message.Application.description/0","ref":"Nostrum.Struct.Message.Application.html#t:description/0"},{"type":"type","doc":"Id of the application's icon","title":"Nostrum.Struct.Message.Application.icon/0","ref":"Nostrum.Struct.Message.Application.html#t:icon/0"},{"type":"type","doc":"Id of the application","title":"Nostrum.Struct.Message.Application.id/0","ref":"Nostrum.Struct.Message.Application.html#t:id/0"},{"type":"type","doc":"Name of the application","title":"Nostrum.Struct.Message.Application.name/0","ref":"Nostrum.Struct.Message.Application.html#t:name/0"},{"type":"type","doc":"","title":"Nostrum.Struct.Message.Application.t/0","ref":"Nostrum.Struct.Message.Application.html#t:t/0"},{"type":"module","doc":"Struct representing a Discord message attachment.","title":"Nostrum.Struct.Message.Attachment","ref":"Nostrum.Struct.Message.Attachment.html"},{"type":"type","doc":"Name of attached file","title":"Nostrum.Struct.Message.Attachment.filename/0","ref":"Nostrum.Struct.Message.Attachment.html#t:filename/0"},{"type":"type","doc":"Height of the file (if image)","title":"Nostrum.Struct.Message.Attachment.height/0","ref":"Nostrum.Struct.Message.Attachment.html#t:height/0"},{"type":"type","doc":"Attachment id","title":"Nostrum.Struct.Message.Attachment.id/0","ref":"Nostrum.Struct.Message.Attachment.html#t:id/0"},{"type":"type","doc":"Proxy url of the file","title":"Nostrum.Struct.Message.Attachment.proxy_url/0","ref":"Nostrum.Struct.Message.Attachment.html#t:proxy_url/0"},{"type":"type","doc":"Size of the file in bytes","title":"Nostrum.Struct.Message.Attachment.size/0","ref":"Nostrum.Struct.Message.Attachment.html#t:size/0"},{"type":"type","doc":"","title":"Nostrum.Struct.Message.Attachment.t/0","ref":"Nostrum.Struct.Message.Attachment.html#t:t/0"},{"type":"type","doc":"Source url of the file","title":"Nostrum.Struct.Message.Attachment.url/0","ref":"Nostrum.Struct.Message.Attachment.html#t:url/0"},{"type":"type","doc":"Width of the file (if image)","title":"Nostrum.Struct.Message.Attachment.width/0","ref":"Nostrum.Struct.Message.Attachment.html#t:width/0"},{"type":"module","doc":"A component attached to a message.\n\nNote that the fields present depend on the `t:type/0` of the component object.\n\nSee the [Discord API Component Object\nDocumentation](https://discord.com/developers/docs/interactions/message-components#component-object)\nfor more information.","title":"Nostrum.Struct.Message.Component","ref":"Nostrum.Struct.Message.Component.html"},{"type":"type","doc":"Child components for action rows.\n\nOnly present for action rows.","title":"Nostrum.Struct.Message.Component.components/0","ref":"Nostrum.Struct.Message.Component.html#t:components/0"},{"type":"type","doc":"A developer-defined identifier for the component.\n\nMaximum of 100 characters. Only present for buttons and select menus.","title":"Nostrum.Struct.Message.Component.custom_id/0","ref":"Nostrum.Struct.Message.Component.html#t:custom_id/0"},{"type":"type","doc":"Whether the component is disabled.\n\nOnly present for buttons and select menus.","title":"Nostrum.Struct.Message.Component.disabled/0","ref":"Nostrum.Struct.Message.Component.html#t:disabled/0"},{"type":"type","doc":"Partial emoji of the button.\n\nOnly present for buttons. The following fields are set:\n\n- ``name``\n- ``id``\n- ``animated``","title":"Nostrum.Struct.Message.Component.emoji/0","ref":"Nostrum.Struct.Message.Component.html#t:emoji/0"},{"type":"type","doc":"Text that appears on the button, or above the text input.\n\nMaximum of 80 characters. Only present for buttons and text input.","title":"Nostrum.Struct.Message.Component.label/0","ref":"Nostrum.Struct.Message.Component.html#t:label/0"},{"type":"type","doc":"Maximum length of the input text.\n\nDefaults to ``1``. Maximum of ``4000``. Only present for text inputs.","title":"Nostrum.Struct.Message.Component.max_length/0","ref":"Nostrum.Struct.Message.Component.html#t:max_length/0"},{"type":"type","doc":"Maximum number of items that must be chosen.\n\nDefaults to ``1``. Maximum of ``25``. Only present for select menus.","title":"Nostrum.Struct.Message.Component.max_values/0","ref":"Nostrum.Struct.Message.Component.html#t:max_values/0"},{"type":"type","doc":"Minimum length of the input text.\n\nDefaults to ``0``. Maximum of ``4000``. Only present for text inputs.","title":"Nostrum.Struct.Message.Component.min_length/0","ref":"Nostrum.Struct.Message.Component.html#t:min_length/0"},{"type":"type","doc":"Minimum number of items that must be chosen.\n\nDefaults to ``1``. Minimum of ``0``. Maximum of ``25``. Only present for select menus.","title":"Nostrum.Struct.Message.Component.min_values/0","ref":"Nostrum.Struct.Message.Component.html#t:min_values/0"},{"type":"type","doc":"Choices of the select menu.\n\nMaximum of 25 options. Only present for select menus.","title":"Nostrum.Struct.Message.Component.options/0","ref":"Nostrum.Struct.Message.Component.html#t:options/0"},{"type":"type","doc":"See [Discord Developer Portal: Select Option\nStructure](https://discord.com/developers/docs/interactions/message-components#select-menu-object-select-option-structure).","title":"References - Nostrum.Struct.Message.Component.options/0","ref":"Nostrum.Struct.Message.Component.html#t:options/0-references"},{"type":"type","doc":"Custom placeholder text if nothing is selected.\n\nMaximum of 100 characters. Only present for select menus and text inputs.","title":"Nostrum.Struct.Message.Component.placeholder/0","ref":"Nostrum.Struct.Message.Component.html#t:placeholder/0"},{"type":"type","doc":"Whether the component is required to be filled, defaults to `false`.\n\nOnly present for text inputs.","title":"Nostrum.Struct.Message.Component.required/0","ref":"Nostrum.Struct.Message.Component.html#t:required/0"},{"type":"type","doc":"An integer representing the style of the button or text input.\n\nOnly present for buttons and text input.","title":"Nostrum.Struct.Message.Component.style/0","ref":"Nostrum.Struct.Message.Component.html#t:style/0"},{"type":"type","doc":"- ``1``: Primary - blurple, ``custom_id`` required.\n- ``2``: Secondary - grey, ``custom_id`` required.\n- ``3``: Success - green, ``custom_id`` required.\n- ``4``: Danger - red, ``custom_id`` required.\n- ``5``: Link - grey, ``url`` required, navigates to the URL.","title":"Values (Button) - Nostrum.Struct.Message.Component.style/0","ref":"Nostrum.Struct.Message.Component.html#t:style/0-values-button"},{"type":"type","doc":"- ``1``: Short - A single line text input.\n- ``2``: Paragraph - A multi-line text input.","title":"Values (Text Input) - Nostrum.Struct.Message.Component.style/0","ref":"Nostrum.Struct.Message.Component.html#t:style/0-values-text-input"},{"type":"type","doc":"See [Discord Developer Portal: Button\nStyles](https://discord.com/developers/docs/interactions/message-components#button-object-button-styles).","title":"References - Nostrum.Struct.Message.Component.style/0","ref":"Nostrum.Struct.Message.Component.html#t:style/0-references"},{"type":"type","doc":"Represents a message component.","title":"Nostrum.Struct.Message.Component.t/0","ref":"Nostrum.Struct.Message.Component.html#t:t/0"},{"type":"type","doc":"Component type.\n\nThis field is always set.","title":"Nostrum.Struct.Message.Component.type/0","ref":"Nostrum.Struct.Message.Component.html#t:type/0"},{"type":"type","doc":"- ``1``: Action Row - A container for other components.\n- ``2``: Button - A button object.\n- ``3``: Select Menu - A select menu for picking from choices.\n- ``4``: Text Input - A text input field.","title":"Values - Nostrum.Struct.Message.Component.type/0","ref":"Nostrum.Struct.Message.Component.html#t:type/0-values"},{"type":"type","doc":"See [Discord Developer Portal: Component\nTypes](https://discord.com/developers/docs/interactions/message-components#component-object-component-types).","title":"References - Nostrum.Struct.Message.Component.type/0","ref":"Nostrum.Struct.Message.Component.html#t:type/0-references"},{"type":"type","doc":"URL for link-style buttons.\n\nOnly present for buttons.","title":"Nostrum.Struct.Message.Component.url/0","ref":"Nostrum.Struct.Message.Component.html#t:url/0"},{"type":"type","doc":"The current value of the component.\n\nWhen creating a new component, this will be its pre-filled value if present.\nOnly present for text inputs.","title":"Nostrum.Struct.Message.Component.value/0","ref":"Nostrum.Struct.Message.Component.html#t:value/0"},{"type":"module","doc":"Struct representing a poll in a Discord chat.\n\nThere are various helper methods on this structure to create new poll, see `create_poll/2` and `put_answer/2` & `put_answer/3` for code samples.","title":"Nostrum.Struct.Message.Poll","ref":"Nostrum.Struct.Message.Poll.html"},{"type":"function","doc":"Create a new poll struct.\n\nUse `Nostrum.Api.create_message` to send it once you've populated it.\n\nAccepts a `question_text` parameter which is the string to use as the poll title.\n\nKeyword arguments:\n- `duration`: duration (in hours) the poll should be open for\n- `allow_multiselect`: whether users should be able to select multiple answers\n\nYou can also pass an `answers` key with answers, though `put_answer/2` and `put_answer/3` are advised.","title":"Nostrum.Struct.Message.Poll.create_poll/2","ref":"Nostrum.Struct.Message.Poll.html#create_poll/2"},{"type":"function","doc":"```elixir\npoll = Poll.create_poll(\"Do you enjoy pineapple on pizza?\", duration: 2, allow_multiselect: false)\n |> Poll.put_answer(\"Yes!\", default_emoji: \"\\u2705\") # check mark emoji\n |> Poll.put_answer(\"No!\", default_emoji: \"\\u274C\") # cross emoji\n\nApi.create_message(channel_id, poll: poll)\n```","title":"Examples - Nostrum.Struct.Message.Poll.create_poll/2","ref":"Nostrum.Struct.Message.Poll.html#create_poll/2-examples"},{"type":"function","doc":"Add an answer to the provided poll.\n\nSee `create_poll/2` for a code sample of this function.\n\nTakes a required \"answer\" text field, as well as either of the optional arguments:\n- `custom_emoji`: An integer representing the snowflake of an emoji to display with the option\n- `default_emoji`: A default platform emoji represented as a unicode character","title":"Nostrum.Struct.Message.Poll.put_answer/2","ref":"Nostrum.Struct.Message.Poll.html#put_answer/2"},{"type":"function","doc":"","title":"Nostrum.Struct.Message.Poll.put_answer/3","ref":"Nostrum.Struct.Message.Poll.html#put_answer/3"},{"type":"type","doc":"Whether the poll allows selection of multiple answers","title":"Nostrum.Struct.Message.Poll.allow_multiselect/0","ref":"Nostrum.Struct.Message.Poll.html#t:allow_multiselect/0"},{"type":"type","doc":"List of potential answers for the poll","title":"Nostrum.Struct.Message.Poll.answers/0","ref":"Nostrum.Struct.Message.Poll.html#t:answers/0"},{"type":"type","doc":"Duration of poll in hours","title":"Nostrum.Struct.Message.Poll.duration/0","ref":"Nostrum.Struct.Message.Poll.html#t:duration/0"},{"type":"type","doc":"Expiry time of the poll","title":"Nostrum.Struct.Message.Poll.expiry/0","ref":"Nostrum.Struct.Message.Poll.html#t:expiry/0"},{"type":"type","doc":"Layout type for the poll, currently only 1 (`DEFAULT`) is supported here.\n\nIf set to `nil`, the value will default to `1` at the Discord API.","title":"Nostrum.Struct.Message.Poll.layout_type/0","ref":"Nostrum.Struct.Message.Poll.html#t:layout_type/0"},{"type":"type","doc":"Question for the poll","title":"Nostrum.Struct.Message.Poll.question/0","ref":"Nostrum.Struct.Message.Poll.html#t:question/0"},{"type":"type","doc":"Result counts of a poll that has been voted on.\n\nThis field is only present for poll objects received over the gateway or Discord API.\n\nAs mentioned in the `Nostrum.Struct.Message.Poll.Results` documentation, if an answer has not been voted on it\nwill not be in this object.","title":"Nostrum.Struct.Message.Poll.results/0","ref":"Nostrum.Struct.Message.Poll.html#t:results/0"},{"type":"type","doc":"","title":"Nostrum.Struct.Message.Poll.t/0","ref":"Nostrum.Struct.Message.Poll.html#t:t/0"},{"type":"module","doc":"A struct representing a poll answer.","title":"Nostrum.Struct.Message.Poll.Answer","ref":"Nostrum.Struct.Message.Poll.Answer.html"},{"type":"type","doc":"ID of the answer, this is only sent *from* the gateway, you do not need to send this to the gateway.","title":"Nostrum.Struct.Message.Poll.Answer.answer_id/0","ref":"Nostrum.Struct.Message.Poll.Answer.html#t:answer_id/0"},{"type":"type","doc":"Object representing how the answer is displayed visually, with the text and optional emojis.","title":"Nostrum.Struct.Message.Poll.Answer.poll_media/0","ref":"Nostrum.Struct.Message.Poll.Answer.html#t:poll_media/0"},{"type":"type","doc":"","title":"Nostrum.Struct.Message.Poll.Answer.t/0","ref":"Nostrum.Struct.Message.Poll.Answer.html#t:t/0"},{"type":"module","doc":"A struct representing a media item of a poll (e.g. a question or answer)","title":"Nostrum.Struct.Message.Poll.MediaObject","ref":"Nostrum.Struct.Message.Poll.MediaObject.html"},{"type":"type","doc":"A partial emoji (only supported for answers).\n\nFor a custom emoji, only the `id` field needs to be sent, for a default emoji, only the\n`name` field needs to be sent (with the Unicode emoji).","title":"Nostrum.Struct.Message.Poll.MediaObject.emoji/0","ref":"Nostrum.Struct.Message.Poll.MediaObject.html#t:emoji/0"},{"type":"type","doc":"","title":"Nostrum.Struct.Message.Poll.MediaObject.t/0","ref":"Nostrum.Struct.Message.Poll.MediaObject.html#t:t/0"},{"type":"type","doc":"Text of the poll media object, either the question or answer text.","title":"Nostrum.Struct.Message.Poll.MediaObject.text/0","ref":"Nostrum.Struct.Message.Poll.MediaObject.html#t:text/0"},{"type":"module","doc":"A struct representing the results of a poll.","title":"Nostrum.Struct.Message.Poll.Results","ref":"Nostrum.Struct.Message.Poll.Results.html"},{"type":"type","doc":"A list of objects representing the counts for each of the potential answers in the poll.\n\nThe `id` property of each item corresponds to the `answer_id`\nof the poll answers. If an option is not present in this list, then\nthere were no votes for that answer.","title":"Nostrum.Struct.Message.Poll.Results.answer_counts/0","ref":"Nostrum.Struct.Message.Poll.Results.html#t:answer_counts/0"},{"type":"type","doc":"A flag on whether the poll has finished counting.\n\nIf this is set to true, the counts are guaranteed to be accurate from Discord.","title":"Nostrum.Struct.Message.Poll.Results.is_finalized/0","ref":"Nostrum.Struct.Message.Poll.Results.html#t:is_finalized/0"},{"type":"type","doc":"","title":"Nostrum.Struct.Message.Poll.Results.t/0","ref":"Nostrum.Struct.Message.Poll.Results.html#t:t/0"},{"type":"module","doc":"Struct representing a Discord message reaction.","title":"Nostrum.Struct.Message.Reaction","ref":"Nostrum.Struct.Message.Reaction.html"},{"type":"type","doc":"Times this emoji has been used to react","title":"Nostrum.Struct.Message.Reaction.count/0","ref":"Nostrum.Struct.Message.Reaction.html#t:count/0"},{"type":"type","doc":"Emoji information","title":"Nostrum.Struct.Message.Reaction.emoji/0","ref":"Nostrum.Struct.Message.Reaction.html#t:emoji/0"},{"type":"type","doc":"Whether the current user is the one who reacted","title":"Nostrum.Struct.Message.Reaction.me/0","ref":"Nostrum.Struct.Message.Reaction.html#t:me/0"},{"type":"type","doc":"","title":"Nostrum.Struct.Message.Reaction.t/0","ref":"Nostrum.Struct.Message.Reaction.html#t:t/0"},{"type":"module","doc":"Struct representing a discord message reference.","title":"Nostrum.Struct.Message.Reference","ref":"Nostrum.Struct.Message.Reference.html"},{"type":"type","doc":"Id of the originating message's channel","title":"Nostrum.Struct.Message.Reference.channel_id/0","ref":"Nostrum.Struct.Message.Reference.html#t:channel_id/0"},{"type":"type","doc":"Id of the originating message's guild","title":"Nostrum.Struct.Message.Reference.guild_id/0","ref":"Nostrum.Struct.Message.Reference.html#t:guild_id/0"},{"type":"type","doc":"Id of the originating message","title":"Nostrum.Struct.Message.Reference.message_id/0","ref":"Nostrum.Struct.Message.Reference.html#t:message_id/0"},{"type":"type","doc":"","title":"Nostrum.Struct.Message.Reference.t/0","ref":"Nostrum.Struct.Message.Reference.html#t:t/0"},{"type":"module","doc":"Struct representing a Discord overwrite.","title":"Nostrum.Struct.Overwrite","ref":"Nostrum.Struct.Overwrite.html"},{"type":"type","doc":"Permission bit set","title":"Nostrum.Struct.Overwrite.allow/0","ref":"Nostrum.Struct.Overwrite.html#t:allow/0"},{"type":"type","doc":"Permission bit set","title":"Nostrum.Struct.Overwrite.deny/0","ref":"Nostrum.Struct.Overwrite.html#t:deny/0"},{"type":"type","doc":"Role or User id","title":"Nostrum.Struct.Overwrite.id/0","ref":"Nostrum.Struct.Overwrite.html#t:id/0"},{"type":"type","doc":"","title":"Nostrum.Struct.Overwrite.t/0","ref":"Nostrum.Struct.Overwrite.html#t:t/0"},{"type":"type","doc":"Either ``0`` (role) or ``1`` (member)","title":"Nostrum.Struct.Overwrite.type/0","ref":"Nostrum.Struct.Overwrite.html#t:type/0"},{"type":"module","doc":"A `Nostrum.Struct.Sticker` represents a sticker that can be sent inside a\n`Nostrum.Struct.Message`.","title":"Nostrum.Struct.Sticker","ref":"Nostrum.Struct.Sticker.html"},{"type":"function","doc":"Fetch a CDN URL for the sticker object.\n\n`:png` and `:apng` stickers will return a `.png` URL, `:gif` will return a\n`.gif` URL and `:lottie` will return a `.json` URL.","title":"Nostrum.Struct.Sticker.cdn_url/1","ref":"Nostrum.Struct.Sticker.html#cdn_url/1"},{"type":"function","doc":"```elixir\niex> sticker = %Nostrum.Struct.Sticker{format_type: :gif, id: 112233445566778899}\niex> Nostrum.Struct.Sticker.cdn_url sticker\n\"https://media.discordapp.net/stickers/112233445566778899.gif\"\n```\n\n```elixir\niex> sticker = %Nostrum.Struct.Sticker{format_type: :apng, id: 998877665544332211}\niex> Nostrum.Struct.Sticker.cdn_url sticker\n\"https://cdn.discordapp.com/stickers/998877665544332211.png\"\n```","title":"Examples - Nostrum.Struct.Sticker.cdn_url/1","ref":"Nostrum.Struct.Sticker.html#cdn_url/1-examples"},{"type":"type","doc":"Whether this guild sticker can be used.\n\nMay be false due to loss of Server Boosts","title":"Nostrum.Struct.Sticker.available/0","ref":"Nostrum.Struct.Sticker.html#t:available/0"},{"type":"type","doc":"Description of the sticker","title":"Nostrum.Struct.Sticker.description/0","ref":"Nostrum.Struct.Sticker.html#t:description/0"},{"type":"type","doc":"Format of the sticker.\n\nThis field is used to determine the return URL in `cdn_url/1`.","title":"Nostrum.Struct.Sticker.format_type/0","ref":"Nostrum.Struct.Sticker.html#t:format_type/0"},{"type":"type","doc":"ID of the guild that owns this sticker.\n\n`nil` if the sticker is a built-in (type `:standard`) sticker.","title":"Nostrum.Struct.Sticker.guild_id/0","ref":"Nostrum.Struct.Sticker.html#t:guild_id/0"},{"type":"type","doc":"ID of the sticker","title":"Nostrum.Struct.Sticker.id/0","ref":"Nostrum.Struct.Sticker.html#t:id/0"},{"type":"type","doc":"Name of the sticker","title":"Nostrum.Struct.Sticker.name/0","ref":"Nostrum.Struct.Sticker.html#t:name/0"},{"type":"type","doc":"ID of the pack the sticker is from","title":"Nostrum.Struct.Sticker.pack_id/0","ref":"Nostrum.Struct.Sticker.html#t:pack_id/0"},{"type":"type","doc":"The sticker's sort order within its pack.\n\nSometimes provided for stickers with type `:standard` that are in a pack.","title":"Nostrum.Struct.Sticker.sort_value/0","ref":"Nostrum.Struct.Sticker.html#t:sort_value/0"},{"type":"type","doc":"","title":"Nostrum.Struct.Sticker.t/0","ref":"Nostrum.Struct.Sticker.html#t:t/0"},{"type":"type","doc":"Tags used by the Discord client to auto-complete a sticker.\n\nFor default sticker packs, this is a comma-separated list. For guild stickers,\nthis is the name of the unicode emoji associated by the sticker creator with\nthe sticker.\n\nThis is technically a free-text field so consistency in formatting is not guaranteed.","title":"Nostrum.Struct.Sticker.tags/0","ref":"Nostrum.Struct.Sticker.html#t:tags/0"},{"type":"type","doc":"Whether the sticker is a standard (platform made) sticker or a custom guild sticker.","title":"Nostrum.Struct.Sticker.type/0","ref":"Nostrum.Struct.Sticker.html#t:type/0"},{"type":"type","doc":"User that uploaded the guild sticker.\n\n`nil` if the sticker is a built-in (type `:standard`) sticker.","title":"Nostrum.Struct.Sticker.user/0","ref":"Nostrum.Struct.Sticker.html#t:user/0"},{"type":"module","doc":"Represents a platform-curated sticker pack on Discord","title":"Nostrum.Struct.Sticker.Pack","ref":"Nostrum.Struct.Sticker.Pack.html"},{"type":"function","doc":"Return the banner pack URL for a given sticker pack.\n\nThis is a marketing banner provided by Discord for their platform curated sticker packs.","title":"Nostrum.Struct.Sticker.Pack.banner_url/1","ref":"Nostrum.Struct.Sticker.Pack.html#banner_url/1"},{"type":"function","doc":"```elixir\niex> pack = %Nostrum.Struct.Sticker.Pack{banner_asset_id: 112233445566778899}\niex> Nostrum.Struct.Sticker.Pack.banner_url pack\n\"https://cdn.discordapp.com/app-assets/710982414301790216/store/112233445566778899.png\"\n```","title":"Examples - Nostrum.Struct.Sticker.Pack.banner_url/1","ref":"Nostrum.Struct.Sticker.Pack.html#banner_url/1-examples"},{"type":"type","doc":"Asset ID of the banner for this sticker pack.","title":"Nostrum.Struct.Sticker.Pack.banner_asset_id/0","ref":"Nostrum.Struct.Sticker.Pack.html#t:banner_asset_id/0"},{"type":"type","doc":"ID of a sticker contained within the pack that should be the cover.","title":"Nostrum.Struct.Sticker.Pack.cover_sticker_id/0","ref":"Nostrum.Struct.Sticker.Pack.html#t:cover_sticker_id/0"},{"type":"type","doc":"Marketing description of the sticker pack.","title":"Nostrum.Struct.Sticker.Pack.description/0","ref":"Nostrum.Struct.Sticker.Pack.html#t:description/0"},{"type":"type","doc":"ID of the sticker pack.","title":"Nostrum.Struct.Sticker.Pack.id/0","ref":"Nostrum.Struct.Sticker.Pack.html#t:id/0"},{"type":"type","doc":"Name of the pack.","title":"Nostrum.Struct.Sticker.Pack.name/0","ref":"Nostrum.Struct.Sticker.Pack.html#t:name/0"},{"type":"type","doc":"SKU ID of the sticker pack.","title":"Nostrum.Struct.Sticker.Pack.sku_id/0","ref":"Nostrum.Struct.Sticker.Pack.html#t:sku_id/0"},{"type":"type","doc":"A list of stickers contained within the pack.","title":"Nostrum.Struct.Sticker.Pack.stickers/0","ref":"Nostrum.Struct.Sticker.Pack.html#t:stickers/0"},{"type":"type","doc":"","title":"Nostrum.Struct.Sticker.Pack.t/0","ref":"Nostrum.Struct.Sticker.Pack.html#t:t/0"},{"type":"module","doc":"Struct representing a thread member object","title":"Nostrum.Struct.ThreadMember","ref":"Nostrum.Struct.ThreadMember.html"},{"type":"type","doc":"Any user-thread settings","title":"Nostrum.Struct.ThreadMember.flags/0","ref":"Nostrum.Struct.ThreadMember.html#t:flags/0"},{"type":"type","doc":"The id of the guild the thread is in.\n\nOnly present within `THREAD_MEMBER_UPDATE` events","title":"Nostrum.Struct.ThreadMember.guild_id/0","ref":"Nostrum.Struct.ThreadMember.html#t:guild_id/0"},{"type":"type","doc":"The id of the thread, omitted within `GUILD_CREATE` events","title":"Nostrum.Struct.ThreadMember.id/0","ref":"Nostrum.Struct.ThreadMember.html#t:id/0"},{"type":"type","doc":"The timestamp of when the user last joined the thread","title":"Nostrum.Struct.ThreadMember.join_timestamp/0","ref":"Nostrum.Struct.ThreadMember.html#t:join_timestamp/0"},{"type":"type","doc":"","title":"Nostrum.Struct.ThreadMember.t/0","ref":"Nostrum.Struct.ThreadMember.html#t:t/0"},{"type":"type","doc":"The id of the user, omitted within `GUILD_CREATE` events","title":"Nostrum.Struct.ThreadMember.user_id/0","ref":"Nostrum.Struct.ThreadMember.html#t:user_id/0"},{"type":"module","doc":"Struct representing a Discord user.","title":"Nostrum.Struct.User","ref":"Nostrum.Struct.User.html"},{"type":"module","doc":"A `Nostrum.Struct.User` can be mentioned in message content using the `String.Chars`\nprotocol or `mention/1`.\n\n```elixir\nuser = %Nostrum.Struct.User{id: 120571255635181568}\nNostrum.Api.create_message!(184046599834435585, \"#{user}\")\n%Nostrum.Struct.Message{content: \"<@120571255635181568>\"}\n\nuser = %Nostrum.Struct.User{id: 89918932789497856}\nNostrum.Api.create_message!(280085880452939778, \"#{Nostrum.Struct.User.mention(user)}\")\n%Nostrum.Struct.Message{content: \"<@89918932789497856>\"}\n```","title":"Mentioning Users in Messages - Nostrum.Struct.User","ref":"Nostrum.Struct.User.html#module-mentioning-users-in-messages"},{"type":"module","doc":"A `user` contains only general information about that user such as a `username` and an `avatar`.\nA `member` has everything that a `user` has, but also additional information on a per guild basis. This includes things like a `nickname` and a list of `roles`.","title":"User vs. Member - Nostrum.Struct.User","ref":"Nostrum.Struct.User.html#module-user-vs-member"},{"type":"function","doc":"Returns the URL of a user's display avatar.\n\nIf `:avatar` is `nil`, the default avatar url is returned.\n\nSupported image formats are PNG, JPEG, WebP, and GIF.","title":"Nostrum.Struct.User.avatar_url/2","ref":"Nostrum.Struct.User.html#avatar_url/2"},{"type":"function","doc":"```elixir\niex> user = %Nostrum.Struct.User{avatar: \"8342729096ea3675442027381ff50dfe\",\n...> id: 80351110224678912}\niex> Nostrum.Struct.User.avatar_url(user)\n\"https://cdn.discordapp.com/avatars/80351110224678912/8342729096ea3675442027381ff50dfe.webp\"\niex> Nostrum.Struct.User.avatar_url(user, \"png\")\n\"https://cdn.discordapp.com/avatars/80351110224678912/8342729096ea3675442027381ff50dfe.png\"\n\niex> user = %Nostrum.Struct.User{avatar: nil,\n...> id: 80351110224678912,\n...> discriminator: \"0\"}\niex> Nostrum.Struct.User.avatar_url(user)\n\"https://cdn.discordapp.com/embed/avatars/5.png\"\n\niex> user = %Nostrum.Struct.User{avatar: nil,\n...> discriminator: \"1337\"}\niex> Nostrum.Struct.User.avatar_url(user)\n\"https://cdn.discordapp.com/embed/avatars/2.png\"\n```","title":"Examples - Nostrum.Struct.User.avatar_url/2","ref":"Nostrum.Struct.User.html#avatar_url/2-examples"},{"type":"function","doc":"Returns a user's `:global_name` if present, otherwise returns their\n`:username` and `:discriminator` separated by a hashtag.","title":"Nostrum.Struct.User.full_name/1","ref":"Nostrum.Struct.User.html#full_name/1"},{"type":"function","doc":"```elixir\niex> user = %Nostrum.Struct.User{global_name: \"TheRealJason\",\n...> username: \"therealjason\",\n...> discriminator: \"0\"}\niex> Nostrum.Struct.User.full_name(user)\n\"TheRealJason\"\n```\n\n```elixir\niex> user = %Nostrum.Struct.User{username: \"b1nzy\",\n...> discriminator: \"0852\"}\niex> Nostrum.Struct.User.full_name(user)\n\"b1nzy#0852\"\n```","title":"Examples - Nostrum.Struct.User.full_name/1","ref":"Nostrum.Struct.User.html#full_name/1-examples"},{"type":"function","doc":"Formats an `Nostrum.Struct.User` into a mention.","title":"Nostrum.Struct.User.mention/1","ref":"Nostrum.Struct.User.html#mention/1"},{"type":"function","doc":"```elixir\niex> user = %Nostrum.Struct.User{id: 177888205536886784}\n...> Nostrum.Struct.User.mention(user)\n\"<@177888205536886784>\"\n```","title":"Examples - Nostrum.Struct.User.mention/1","ref":"Nostrum.Struct.User.html#mention/1-examples"},{"type":"type","doc":"User's avatar hash","title":"Nostrum.Struct.User.avatar/0","ref":"Nostrum.Struct.User.html#t:avatar/0"},{"type":"type","doc":"Whether the user is a bot","title":"Nostrum.Struct.User.bot/0","ref":"Nostrum.Struct.User.html#t:bot/0"},{"type":"type","doc":"The user's 4--digit discord-tag","title":"Nostrum.Struct.User.discriminator/0","ref":"Nostrum.Struct.User.html#t:discriminator/0"},{"type":"type","doc":"The user's display name, if it is set","title":"Nostrum.Struct.User.global_name/0","ref":"Nostrum.Struct.User.html#t:global_name/0"},{"type":"type","doc":"The user's id","title":"Nostrum.Struct.User.id/0","ref":"Nostrum.Struct.User.html#t:id/0"},{"type":"type","doc":"The user's public flags, as a bitset.\n\nTo parse these, use `Nostrum.Struct.User.Flags.from_integer/1`.","title":"Nostrum.Struct.User.public_flags/0","ref":"Nostrum.Struct.User.html#t:public_flags/0"},{"type":"type","doc":"","title":"Nostrum.Struct.User.t/0","ref":"Nostrum.Struct.User.html#t:t/0"},{"type":"type","doc":"The user's username","title":"Nostrum.Struct.User.username/0","ref":"Nostrum.Struct.User.html#t:username/0"},{"type":"module","doc":"Struct representing a Discord User's connections","title":"Nostrum.Struct.User.Connection","ref":"Nostrum.Struct.User.Connection.html"},{"type":"module","doc":"Struct representing the flags a user account can have","title":"Nostrum.Struct.User.Flags","ref":"Nostrum.Struct.User.Flags.html"},{"type":"function","doc":"Constructs a flag struct based on an integer from the Discord API (either public_flags or flags).","title":"Nostrum.Struct.User.Flags.from_integer/1","ref":"Nostrum.Struct.User.Flags.html#from_integer/1"},{"type":"function","doc":"```elixir\niex> Nostrum.Struct.User.Flags.from_integer(131842)\n%Nostrum.Struct.User.Flags{\n bug_hunter_level_1: false,\n bug_hunter_level_2: false,\n early_supporter: true,\n hypesquad_balance: true,\n hypesquad_bravery: false,\n hypesquad_brilliance: false,\n hypesquad_events: false,\n partner: true,\n staff: false,\n system: false,\n team_user: false,\n verified_bot: false,\n verified_developer: true\n}\n```","title":"Examples - Nostrum.Struct.User.Flags.from_integer/1","ref":"Nostrum.Struct.User.Flags.html#from_integer/1-examples"},{"type":"function","doc":"Convert a flag struct to an integer value.","title":"Nostrum.Struct.User.Flags.to_integer/1","ref":"Nostrum.Struct.User.Flags.html#to_integer/1"},{"type":"function","doc":"```elixir\niex> my_flags = %Nostrum.Struct.User.Flags{\n...> bug_hunter_level_1: false,\n...> bug_hunter_level_2: false,\n...> early_supporter: true,\n...> hypesquad_balance: true,\n...> hypesquad_bravery: false,\n...> hypesquad_brilliance: false,\n...> hypesquad_events: false,\n...> partner: true,\n...> staff: false,\n...> system: false,\n...> team_user: false,\n...> verified_bot: false,\n...> verified_developer: true\n...> }\niex> Nostrum.Struct.User.Flags.to_integer(my_flags)\n131842\n```","title":"Examples - Nostrum.Struct.User.Flags.to_integer/1","ref":"Nostrum.Struct.User.Flags.html#to_integer/1-examples"},{"type":"type","doc":"Bug Hunter (Level 1)","title":"Nostrum.Struct.User.Flags.bug_hunter_level_1/0","ref":"Nostrum.Struct.User.Flags.html#t:bug_hunter_level_1/0"},{"type":"type","doc":"Bug Hunter (Level 2)","title":"Nostrum.Struct.User.Flags.bug_hunter_level_2/0","ref":"Nostrum.Struct.User.Flags.html#t:bug_hunter_level_2/0"},{"type":"type","doc":"Early Supporter","title":"Nostrum.Struct.User.Flags.early_supporter/0","ref":"Nostrum.Struct.User.Flags.html#t:early_supporter/0"},{"type":"type","doc":"","title":"Nostrum.Struct.User.Flags.flags/0","ref":"Nostrum.Struct.User.Flags.html#t:flags/0"},{"type":"type","doc":"HypeSquad Balance","title":"Nostrum.Struct.User.Flags.hypesquad_balance/0","ref":"Nostrum.Struct.User.Flags.html#t:hypesquad_balance/0"},{"type":"type","doc":"HypeSquad Bravery","title":"Nostrum.Struct.User.Flags.hypesquad_bravery/0","ref":"Nostrum.Struct.User.Flags.html#t:hypesquad_bravery/0"},{"type":"type","doc":"HypeSquad Brilliance","title":"Nostrum.Struct.User.Flags.hypesquad_brilliance/0","ref":"Nostrum.Struct.User.Flags.html#t:hypesquad_brilliance/0"},{"type":"type","doc":"HypeSquad Events","title":"Nostrum.Struct.User.Flags.hypesquad_events/0","ref":"Nostrum.Struct.User.Flags.html#t:hypesquad_events/0"},{"type":"type","doc":"Discord Partner","title":"Nostrum.Struct.User.Flags.partner/0","ref":"Nostrum.Struct.User.Flags.html#t:partner/0"},{"type":"type","doc":"Raw user flags as sent by the Discord API","title":"Nostrum.Struct.User.Flags.raw_flags/0","ref":"Nostrum.Struct.User.Flags.html#t:raw_flags/0"},{"type":"type","doc":"Discord Employee","title":"Nostrum.Struct.User.Flags.staff/0","ref":"Nostrum.Struct.User.Flags.html#t:staff/0"},{"type":"type","doc":"System user","title":"Nostrum.Struct.User.Flags.system/0","ref":"Nostrum.Struct.User.Flags.html#t:system/0"},{"type":"type","doc":"","title":"Nostrum.Struct.User.Flags.t/0","ref":"Nostrum.Struct.User.Flags.html#t:t/0"},{"type":"type","doc":"Team User","title":"Nostrum.Struct.User.Flags.team_user/0","ref":"Nostrum.Struct.User.Flags.html#t:team_user/0"},{"type":"type","doc":"Verified bot","title":"Nostrum.Struct.User.Flags.verified_bot/0","ref":"Nostrum.Struct.User.Flags.html#t:verified_bot/0"},{"type":"type","doc":"Verified developer","title":"Nostrum.Struct.User.Flags.verified_developer/0","ref":"Nostrum.Struct.User.Flags.html#t:verified_developer/0"},{"type":"module","doc":"Struct representing a Discord voice region.","title":"Nostrum.Struct.VoiceRegion","ref":"Nostrum.Struct.VoiceRegion.html"},{"type":"type","doc":"","title":"Nostrum.Struct.VoiceRegion.t/0","ref":"Nostrum.Struct.VoiceRegion.html#t:t/0"},{"type":"module","doc":"Struct representing the current Voice WS state.","title":"Nostrum.Struct.VoiceWSState","ref":"Nostrum.Struct.VoiceWSState.html"},{"type":"type","doc":"The channel id that this voice websocket state applies to","title":"Nostrum.Struct.VoiceWSState.channel_id/0","ref":"Nostrum.Struct.VoiceWSState.html#t:channel_id/0"},{"type":"type","doc":"PID of the `:gun` worker connected to the websocket","title":"Nostrum.Struct.VoiceWSState.conn/0","ref":"Nostrum.Struct.VoiceWSState.html#t:conn/0"},{"type":"type","doc":"PID of the connection process","title":"Nostrum.Struct.VoiceWSState.conn_pid/0","ref":"Nostrum.Struct.VoiceWSState.html#t:conn_pid/0"},{"type":"type","doc":"Gateway URL","title":"Nostrum.Struct.VoiceWSState.gateway/0","ref":"Nostrum.Struct.VoiceWSState.html#t:gateway/0"},{"type":"type","doc":"The guild id that this voice websocket state applies to","title":"Nostrum.Struct.VoiceWSState.guild_id/0","ref":"Nostrum.Struct.VoiceWSState.html#t:guild_id/0"},{"type":"type","doc":"Whether or not the last heartbeat sent was ACK'd","title":"Nostrum.Struct.VoiceWSState.heartbeat_ack/0","ref":"Nostrum.Struct.VoiceWSState.html#t:heartbeat_ack/0"},{"type":"type","doc":"Interval at which heartbeats are sent","title":"Nostrum.Struct.VoiceWSState.heartbeat_interval/0","ref":"Nostrum.Struct.VoiceWSState.html#t:heartbeat_interval/0"},{"type":"type","doc":"Time ref for the heartbeat","title":"Nostrum.Struct.VoiceWSState.heartbeat_ref/0","ref":"Nostrum.Struct.VoiceWSState.html#t:heartbeat_ref/0"},{"type":"type","doc":"Whether the session has been identified","title":"Nostrum.Struct.VoiceWSState.identified/0","ref":"Nostrum.Struct.VoiceWSState.html#t:identified/0"},{"type":"type","doc":"The time the last heartbeat was acknowledged, will be nil if a heartbeat\nhasn't been ACK'd yet","title":"Nostrum.Struct.VoiceWSState.last_heartbeat_ack/0","ref":"Nostrum.Struct.VoiceWSState.html#t:last_heartbeat_ack/0"},{"type":"type","doc":"The time the last heartbeat was sent, if a heartbeat hasn't been sent it\nwill be the time the websocket process was started","title":"Nostrum.Struct.VoiceWSState.last_heartbeat_send/0","ref":"Nostrum.Struct.VoiceWSState.html#t:last_heartbeat_send/0"},{"type":"type","doc":"The secret key for audio encryption","title":"Nostrum.Struct.VoiceWSState.secret_key/0","ref":"Nostrum.Struct.VoiceWSState.html#t:secret_key/0"},{"type":"type","doc":"The session id","title":"Nostrum.Struct.VoiceWSState.session/0","ref":"Nostrum.Struct.VoiceWSState.html#t:session/0"},{"type":"type","doc":"A mapping of RTP SSRC (synchronization source) to user id\n\nThis map can be used to identify the user who generated the incoming\naudio data when an RTP packet is received.","title":"Nostrum.Struct.VoiceWSState.ssrc_map/0","ref":"Nostrum.Struct.VoiceWSState.html#t:ssrc_map/0"},{"type":"type","doc":"Stream reference for `:gun`","title":"Nostrum.Struct.VoiceWSState.stream/0","ref":"Nostrum.Struct.VoiceWSState.html#t:stream/0"},{"type":"type","doc":"","title":"Nostrum.Struct.VoiceWSState.t/0","ref":"Nostrum.Struct.VoiceWSState.html#t:t/0"},{"type":"type","doc":"The session token","title":"Nostrum.Struct.VoiceWSState.token/0","ref":"Nostrum.Struct.VoiceWSState.html#t:token/0"},{"type":"module","doc":"Struct representing the current WS state.","title":"Nostrum.Struct.WSState","ref":"Nostrum.Struct.WSState.html"},{"type":"type","doc":"Reference to the current compression context","title":"Nostrum.Struct.WSState.compress_ctx/0","ref":"Nostrum.Struct.WSState.html#t:compress_ctx/0"},{"type":"type","doc":"PID of the `:gun` worker connected to the websocket","title":"Nostrum.Struct.WSState.conn/0","ref":"Nostrum.Struct.WSState.html#t:conn/0"},{"type":"type","doc":"PID of the connection process","title":"Nostrum.Struct.WSState.conn_pid/0","ref":"Nostrum.Struct.WSState.html#t:conn_pid/0"},{"type":"type","doc":"Gateway URL","title":"Nostrum.Struct.WSState.gateway/0","ref":"Nostrum.Struct.WSState.html#t:gateway/0"},{"type":"type","doc":"Whether or not the last hearbeat sent was ACK'd","title":"Nostrum.Struct.WSState.heartbeat_ack/0","ref":"Nostrum.Struct.WSState.html#t:heartbeat_ack/0"},{"type":"type","doc":"Interval at which heartbeats are sent","title":"Nostrum.Struct.WSState.heartbeat_interval/0","ref":"Nostrum.Struct.WSState.html#t:heartbeat_interval/0"},{"type":"type","doc":"The time the last heartbeat was acknowledged, will be nil if a heartbeat\nhasn't been ACK'd yet","title":"Nostrum.Struct.WSState.last_heartbeat_ack/0","ref":"Nostrum.Struct.WSState.html#t:last_heartbeat_ack/0"},{"type":"type","doc":"The time the last heartbeat was sent, if a heartbeat hasn't been sent it\nwill be the time the websocket process was started","title":"Nostrum.Struct.WSState.last_heartbeat_send/0","ref":"Nostrum.Struct.WSState.html#t:last_heartbeat_send/0"},{"type":"type","doc":"Gateway URL to use for resuming.","title":"Nostrum.Struct.WSState.resume_gateway/0","ref":"Nostrum.Struct.WSState.html#t:resume_gateway/0"},{"type":"type","doc":"The sequence number of the last event","title":"Nostrum.Struct.WSState.seq/0","ref":"Nostrum.Struct.WSState.html#t:seq/0"},{"type":"type","doc":"The session id","title":"Nostrum.Struct.WSState.session/0","ref":"Nostrum.Struct.WSState.html#t:session/0"},{"type":"type","doc":"The shard number","title":"Nostrum.Struct.WSState.shard_num/0","ref":"Nostrum.Struct.WSState.html#t:shard_num/0"},{"type":"type","doc":"Stream reference for `:gun`","title":"Nostrum.Struct.WSState.stream/0","ref":"Nostrum.Struct.WSState.html#t:stream/0"},{"type":"type","doc":"","title":"Nostrum.Struct.WSState.t/0","ref":"Nostrum.Struct.WSState.html#t:t/0"},{"type":"type","doc":"The highest shard number for this bot.\n\nThis may not be started locally, it is just used by nostrum to inform the\ngateway which events we are interested in.","title":"Nostrum.Struct.WSState.total_shards/0","ref":"Nostrum.Struct.WSState.html#t:total_shards/0"},{"type":"module","doc":"Struct representing a Discord webhook.","title":"Nostrum.Struct.Webhook","ref":"Nostrum.Struct.Webhook.html"},{"type":"type","doc":"Default avatar of the webhook","title":"Nostrum.Struct.Webhook.avatar/0","ref":"Nostrum.Struct.Webhook.html#t:avatar/0"},{"type":"type","doc":"Channel the webhook is for","title":"Nostrum.Struct.Webhook.channel_id/0","ref":"Nostrum.Struct.Webhook.html#t:channel_id/0"},{"type":"type","doc":"Guild the webhook is for","title":"Nostrum.Struct.Webhook.guild_id/0","ref":"Nostrum.Struct.Webhook.html#t:guild_id/0"},{"type":"type","doc":"Id of the webhook","title":"Nostrum.Struct.Webhook.id/0","ref":"Nostrum.Struct.Webhook.html#t:id/0"},{"type":"type","doc":"Default name of the webhook","title":"Nostrum.Struct.Webhook.name/0","ref":"Nostrum.Struct.Webhook.html#t:name/0"},{"type":"type","doc":"","title":"Nostrum.Struct.Webhook.t/0","ref":"Nostrum.Struct.Webhook.html#t:t/0"},{"type":"type","doc":"Secure token of the webhook","title":"Nostrum.Struct.Webhook.token/0","ref":"Nostrum.Struct.Webhook.html#t:token/0"},{"type":"type","doc":"User who created the webhook","title":"Nostrum.Struct.Webhook.user/0","ref":"Nostrum.Struct.Webhook.html#t:user/0"},{"type":"module","doc":"Sent when an auto-moderation rule executes.\n(e.g. message is blocked).","title":"Nostrum.Struct.Event.AutoModerationRuleExecute","ref":"Nostrum.Struct.Event.AutoModerationRuleExecute.html"},{"type":"type","doc":"The action that was executed","title":"Nostrum.Struct.Event.AutoModerationRuleExecute.action/0","ref":"Nostrum.Struct.Event.AutoModerationRuleExecute.html#t:action/0"},{"type":"type","doc":"The id of any system message that was generated as a result of the action\n\nnote: will not exist if the event does not correspond to an action that generates a system message","title":"Nostrum.Struct.Event.AutoModerationRuleExecute.alert_system_message_id/0","ref":"Nostrum.Struct.Event.AutoModerationRuleExecute.html#t:alert_system_message_id/0"},{"type":"type","doc":"The id of the channel in which the content was posted\n\nnote: this field may not exist if the content was blocked from being created","title":"Nostrum.Struct.Event.AutoModerationRuleExecute.channel_id/0","ref":"Nostrum.Struct.Event.AutoModerationRuleExecute.html#t:channel_id/0"},{"type":"type","doc":"The content of the message which triggered the rule","title":"Nostrum.Struct.Event.AutoModerationRuleExecute.content/0","ref":"Nostrum.Struct.Event.AutoModerationRuleExecute.html#t:content/0"},{"type":"type","doc":"The id of the guild in which the action was executed","title":"Nostrum.Struct.Event.AutoModerationRuleExecute.guild_id/0","ref":"Nostrum.Struct.Event.AutoModerationRuleExecute.html#t:guild_id/0"},{"type":"type","doc":"The substring which matched the content","title":"Nostrum.Struct.Event.AutoModerationRuleExecute.matched_content/0","ref":"Nostrum.Struct.Event.AutoModerationRuleExecute.html#t:matched_content/0"},{"type":"type","doc":"The keyword that was matched in the content","title":"Nostrum.Struct.Event.AutoModerationRuleExecute.matched_keyword/0","ref":"Nostrum.Struct.Event.AutoModerationRuleExecute.html#t:matched_keyword/0"},{"type":"type","doc":"The id of the message which was posted\n\nnote: this field will not exist if the content was blocked from being created","title":"Nostrum.Struct.Event.AutoModerationRuleExecute.message_id/0","ref":"Nostrum.Struct.Event.AutoModerationRuleExecute.html#t:message_id/0"},{"type":"type","doc":"The id of the rule that was executed","title":"Nostrum.Struct.Event.AutoModerationRuleExecute.rule_id/0","ref":"Nostrum.Struct.Event.AutoModerationRuleExecute.html#t:rule_id/0"},{"type":"type","doc":"The type of the rule that was executed","title":"Nostrum.Struct.Event.AutoModerationRuleExecute.rule_trigger_type/0","ref":"Nostrum.Struct.Event.AutoModerationRuleExecute.html#t:rule_trigger_type/0"},{"type":"type","doc":"","title":"Nostrum.Struct.Event.AutoModerationRuleExecute.t/0","ref":"Nostrum.Struct.Event.AutoModerationRuleExecute.html#t:t/0"},{"type":"type","doc":"The id of the user which generated the content which triggered the rule","title":"Nostrum.Struct.Event.AutoModerationRuleExecute.user_id/0","ref":"Nostrum.Struct.Event.AutoModerationRuleExecute.html#t:user_id/0"},{"type":"module","doc":"Represents an update to channel pins.","title":"Nostrum.Struct.Event.ChannelPinsUpdate","ref":"Nostrum.Struct.Event.ChannelPinsUpdate.html"},{"type":"type","doc":"The ID of the channel","title":"Nostrum.Struct.Event.ChannelPinsUpdate.channel_id/0","ref":"Nostrum.Struct.Event.ChannelPinsUpdate.html#t:channel_id/0"},{"type":"type","doc":"The ID of the guild, if the pin update was on a guild","title":"Nostrum.Struct.Event.ChannelPinsUpdate.guild_id/0","ref":"Nostrum.Struct.Event.ChannelPinsUpdate.html#t:guild_id/0"},{"type":"type","doc":"The time at which the most recent pinned message was pinned","title":"Nostrum.Struct.Event.ChannelPinsUpdate.last_pin_timestamp/0","ref":"Nostrum.Struct.Event.ChannelPinsUpdate.html#t:last_pin_timestamp/0"},{"type":"type","doc":"Event sent when a message is pinned or unpinned in a text channel","title":"Nostrum.Struct.Event.ChannelPinsUpdate.t/0","ref":"Nostrum.Struct.Event.ChannelPinsUpdate.html#t:t/0"},{"type":"module","doc":"Sent when a user is banned from a guild","title":"Nostrum.Struct.Event.GuildBanAdd","ref":"Nostrum.Struct.Event.GuildBanAdd.html"},{"type":"type","doc":"ID of the guild","title":"Nostrum.Struct.Event.GuildBanAdd.guild_id/0","ref":"Nostrum.Struct.Event.GuildBanAdd.html#t:guild_id/0"},{"type":"type","doc":"Event sent when a user is banned from a guild","title":"Nostrum.Struct.Event.GuildBanAdd.t/0","ref":"Nostrum.Struct.Event.GuildBanAdd.html#t:t/0"},{"type":"type","doc":"Banned user","title":"Nostrum.Struct.Event.GuildBanAdd.user/0","ref":"Nostrum.Struct.Event.GuildBanAdd.html#t:user/0"},{"type":"module","doc":"Sent when a user is unbanned from a guild","title":"Nostrum.Struct.Event.GuildBanRemove","ref":"Nostrum.Struct.Event.GuildBanRemove.html"},{"type":"type","doc":"ID of the guild","title":"Nostrum.Struct.Event.GuildBanRemove.guild_id/0","ref":"Nostrum.Struct.Event.GuildBanRemove.html#t:guild_id/0"},{"type":"type","doc":"Event sent when a user is unbanned from a guild","title":"Nostrum.Struct.Event.GuildBanRemove.t/0","ref":"Nostrum.Struct.Event.GuildBanRemove.html#t:t/0"},{"type":"type","doc":"Unbanned user","title":"Nostrum.Struct.Event.GuildBanRemove.user/0","ref":"Nostrum.Struct.Event.GuildBanRemove.html#t:user/0"},{"type":"module","doc":"Event fired when a guild integration is deleted.","title":"Nostrum.Struct.Event.GuildIntegrationDelete","ref":"Nostrum.Struct.Event.GuildIntegrationDelete.html"},{"type":"type","doc":"id of the bot/OAuth2 application for this discord integration","title":"Nostrum.Struct.Event.GuildIntegrationDelete.application_id/0","ref":"Nostrum.Struct.Event.GuildIntegrationDelete.html#t:application_id/0"},{"type":"type","doc":"The id of the guild the integration is in.","title":"Nostrum.Struct.Event.GuildIntegrationDelete.guild_id/0","ref":"Nostrum.Struct.Event.GuildIntegrationDelete.html#t:guild_id/0"},{"type":"type","doc":"The id of the deleted integration.","title":"Nostrum.Struct.Event.GuildIntegrationDelete.id/0","ref":"Nostrum.Struct.Event.GuildIntegrationDelete.html#t:id/0"},{"type":"type","doc":"","title":"Nostrum.Struct.Event.GuildIntegrationDelete.t/0","ref":"Nostrum.Struct.Event.GuildIntegrationDelete.html#t:t/0"},{"type":"module","doc":"Sent when a guild integration is updated","title":"Nostrum.Struct.Event.GuildIntegrationsUpdate","ref":"Nostrum.Struct.Event.GuildIntegrationsUpdate.html"},{"type":"type","doc":"ID of the guild whose integrations were updated","title":"Nostrum.Struct.Event.GuildIntegrationsUpdate.guild_id/0","ref":"Nostrum.Struct.Event.GuildIntegrationsUpdate.html#t:guild_id/0"},{"type":"type","doc":"Event sent when a guild integration is updated","title":"Nostrum.Struct.Event.GuildIntegrationsUpdate.t/0","ref":"Nostrum.Struct.Event.GuildIntegrationsUpdate.html#t:t/0"},{"type":"module","doc":"Struct representing a guild scheduled event user add event.","title":"Nostrum.Struct.Event.GuildScheduledEventUserAdd","ref":"Nostrum.Struct.Event.GuildScheduledEventUserAdd.html"},{"type":"type","doc":"The id of the guild the event is scheduled for.","title":"Nostrum.Struct.Event.GuildScheduledEventUserAdd.guild_id/0","ref":"Nostrum.Struct.Event.GuildScheduledEventUserAdd.html#t:guild_id/0"},{"type":"type","doc":"The id of the scheduled event.","title":"Nostrum.Struct.Event.GuildScheduledEventUserAdd.guild_scheduled_event_id/0","ref":"Nostrum.Struct.Event.GuildScheduledEventUserAdd.html#t:guild_scheduled_event_id/0"},{"type":"type","doc":"","title":"Nostrum.Struct.Event.GuildScheduledEventUserAdd.t/0","ref":"Nostrum.Struct.Event.GuildScheduledEventUserAdd.html#t:t/0"},{"type":"type","doc":"The id of the user that subscribed to the scheduled event.","title":"Nostrum.Struct.Event.GuildScheduledEventUserAdd.user_id/0","ref":"Nostrum.Struct.Event.GuildScheduledEventUserAdd.html#t:user_id/0"},{"type":"module","doc":"Struct representing a guild scheduled event user remove event.","title":"Nostrum.Struct.Event.GuildScheduledEventUserRemove","ref":"Nostrum.Struct.Event.GuildScheduledEventUserRemove.html"},{"type":"type","doc":"The id of the guild the event is scheduled for.","title":"Nostrum.Struct.Event.GuildScheduledEventUserRemove.guild_id/0","ref":"Nostrum.Struct.Event.GuildScheduledEventUserRemove.html#t:guild_id/0"},{"type":"type","doc":"The id of the scheduled event.","title":"Nostrum.Struct.Event.GuildScheduledEventUserRemove.guild_scheduled_event_id/0","ref":"Nostrum.Struct.Event.GuildScheduledEventUserRemove.html#t:guild_scheduled_event_id/0"},{"type":"type","doc":"","title":"Nostrum.Struct.Event.GuildScheduledEventUserRemove.t/0","ref":"Nostrum.Struct.Event.GuildScheduledEventUserRemove.html#t:t/0"},{"type":"type","doc":"The id of the user that unsubscribed to the scheduled event.","title":"Nostrum.Struct.Event.GuildScheduledEventUserRemove.user_id/0","ref":"Nostrum.Struct.Event.GuildScheduledEventUserRemove.html#t:user_id/0"},{"type":"module","doc":"Struct representing an Invite Create event","title":"Nostrum.Struct.Event.InviteCreate","ref":"Nostrum.Struct.Event.InviteCreate.html"},{"type":"type","doc":"Channel id of the channel this invite is for.","title":"Nostrum.Struct.Event.InviteCreate.channel_id/0","ref":"Nostrum.Struct.Event.InviteCreate.html#t:channel_id/0"},{"type":"type","doc":"The unique invite code.","title":"Nostrum.Struct.Event.InviteCreate.code/0","ref":"Nostrum.Struct.Event.InviteCreate.html#t:code/0"},{"type":"type","doc":"The time at which the invite was created.","title":"Nostrum.Struct.Event.InviteCreate.created_at/0","ref":"Nostrum.Struct.Event.InviteCreate.html#t:created_at/0"},{"type":"type","doc":"Guild id of the guild this invite is for.","title":"Nostrum.Struct.Event.InviteCreate.guild_id/0","ref":"Nostrum.Struct.Event.InviteCreate.html#t:guild_id/0"},{"type":"type","doc":"The user that created the invite.","title":"Nostrum.Struct.Event.InviteCreate.inviter/0","ref":"Nostrum.Struct.Event.InviteCreate.html#t:inviter/0"},{"type":"type","doc":"Duration (in seconds) after which the invite expires.","title":"Nostrum.Struct.Event.InviteCreate.max_age/0","ref":"Nostrum.Struct.Event.InviteCreate.html#t:max_age/0"},{"type":"type","doc":"Max number of times this invite can be used.","title":"Nostrum.Struct.Event.InviteCreate.max_uses/0","ref":"Nostrum.Struct.Event.InviteCreate.html#t:max_uses/0"},{"type":"type","doc":"","title":"Nostrum.Struct.Event.InviteCreate.t/0","ref":"Nostrum.Struct.Event.InviteCreate.html#t:t/0"},{"type":"type","doc":"Partially populated user struct of the target user for this invite.","title":"Nostrum.Struct.Event.InviteCreate.target_user/0","ref":"Nostrum.Struct.Event.InviteCreate.html#t:target_user/0"},{"type":"type","doc":"The type of user target for this invite.","title":"Nostrum.Struct.Event.InviteCreate.target_user_type/0","ref":"Nostrum.Struct.Event.InviteCreate.html#t:target_user_type/0"},{"type":"type","doc":"Whether this invite only grants temporary membership.","title":"Nostrum.Struct.Event.InviteCreate.temporary/0","ref":"Nostrum.Struct.Event.InviteCreate.html#t:temporary/0"},{"type":"type","doc":"Number of times this invite has been used.","title":"Nostrum.Struct.Event.InviteCreate.uses/0","ref":"Nostrum.Struct.Event.InviteCreate.html#t:uses/0"},{"type":"module","doc":"Struct representing an Invite Delete event","title":"Nostrum.Struct.Event.InviteDelete","ref":"Nostrum.Struct.Event.InviteDelete.html"},{"type":"type","doc":"Channel id of the channel this invite is for.","title":"Nostrum.Struct.Event.InviteDelete.channel_id/0","ref":"Nostrum.Struct.Event.InviteDelete.html#t:channel_id/0"},{"type":"type","doc":"The unique invite code.","title":"Nostrum.Struct.Event.InviteDelete.code/0","ref":"Nostrum.Struct.Event.InviteDelete.html#t:code/0"},{"type":"type","doc":"Guild id of the guild this invite is for.","title":"Nostrum.Struct.Event.InviteDelete.guild_id/0","ref":"Nostrum.Struct.Event.InviteDelete.html#t:guild_id/0"},{"type":"type","doc":"","title":"Nostrum.Struct.Event.InviteDelete.t/0","ref":"Nostrum.Struct.Event.InviteDelete.html#t:t/0"},{"type":"module","doc":"Struct representing a Message Delete event","title":"Nostrum.Struct.Event.MessageDelete","ref":"Nostrum.Struct.Event.MessageDelete.html"},{"type":"type","doc":"Channel id of the deleted message","title":"Nostrum.Struct.Event.MessageDelete.channel_id/0","ref":"Nostrum.Struct.Event.MessageDelete.html#t:channel_id/0"},{"type":"type","doc":"The deleted message, if it was found\nin the message cache.","title":"Nostrum.Struct.Event.MessageDelete.deleted_message/0","ref":"Nostrum.Struct.Event.MessageDelete.html#t:deleted_message/0"},{"type":"type","doc":"Guild id of the deleted message\n\n`nil` if a non-guild message was deleted.","title":"Nostrum.Struct.Event.MessageDelete.guild_id/0","ref":"Nostrum.Struct.Event.MessageDelete.html#t:guild_id/0"},{"type":"type","doc":"Id of the deleted message","title":"Nostrum.Struct.Event.MessageDelete.id/0","ref":"Nostrum.Struct.Event.MessageDelete.html#t:id/0"},{"type":"type","doc":"","title":"Nostrum.Struct.Event.MessageDelete.t/0","ref":"Nostrum.Struct.Event.MessageDelete.html#t:t/0"},{"type":"module","doc":"Struct representing a Message Delete Bulk event","title":"Nostrum.Struct.Event.MessageDeleteBulk","ref":"Nostrum.Struct.Event.MessageDeleteBulk.html"},{"type":"type","doc":"Channel id of the deleted message","title":"Nostrum.Struct.Event.MessageDeleteBulk.channel_id/0","ref":"Nostrum.Struct.Event.MessageDeleteBulk.html#t:channel_id/0"},{"type":"type","doc":"The deleted messages, if any were not found\nin the message cache they will only have the id and channel_id set.","title":"Nostrum.Struct.Event.MessageDeleteBulk.deleted_messages/0","ref":"Nostrum.Struct.Event.MessageDeleteBulk.html#t:deleted_messages/0"},{"type":"type","doc":"Guild id of the deleted message\n\n`nil` if a non-guild message was deleted.","title":"Nostrum.Struct.Event.MessageDeleteBulk.guild_id/0","ref":"Nostrum.Struct.Event.MessageDeleteBulk.html#t:guild_id/0"},{"type":"type","doc":"Ids of the deleted messages","title":"Nostrum.Struct.Event.MessageDeleteBulk.ids/0","ref":"Nostrum.Struct.Event.MessageDeleteBulk.html#t:ids/0"},{"type":"type","doc":"","title":"Nostrum.Struct.Event.MessageDeleteBulk.t/0","ref":"Nostrum.Struct.Event.MessageDeleteBulk.html#t:t/0"},{"type":"module","doc":"Sent when a user adds a reaction to a message","title":"Nostrum.Struct.Event.MessageReactionAdd","ref":"Nostrum.Struct.Event.MessageReactionAdd.html"},{"type":"type","doc":"Channel in which the reaction was added","title":"Nostrum.Struct.Event.MessageReactionAdd.channel_id/0","ref":"Nostrum.Struct.Event.MessageReactionAdd.html#t:channel_id/0"},{"type":"type","doc":"The (partial) emoji used to react","title":"Nostrum.Struct.Event.MessageReactionAdd.emoji/0","ref":"Nostrum.Struct.Event.MessageReactionAdd.html#t:emoji/0"},{"type":"type","doc":"Guild ID in which the reaction was added, if applicable","title":"Nostrum.Struct.Event.MessageReactionAdd.guild_id/0","ref":"Nostrum.Struct.Event.MessageReactionAdd.html#t:guild_id/0"},{"type":"type","doc":"The member who reacted, if this happened on a guild","title":"Nostrum.Struct.Event.MessageReactionAdd.member/0","ref":"Nostrum.Struct.Event.MessageReactionAdd.html#t:member/0"},{"type":"type","doc":"Message to which the reaction was added","title":"Nostrum.Struct.Event.MessageReactionAdd.message_id/0","ref":"Nostrum.Struct.Event.MessageReactionAdd.html#t:message_id/0"},{"type":"type","doc":"Event sent when a user adds a reaction to a message","title":"Nostrum.Struct.Event.MessageReactionAdd.t/0","ref":"Nostrum.Struct.Event.MessageReactionAdd.html#t:t/0"},{"type":"type","doc":"ID of the user who added the reaction","title":"Nostrum.Struct.Event.MessageReactionAdd.user_id/0","ref":"Nostrum.Struct.Event.MessageReactionAdd.html#t:user_id/0"},{"type":"module","doc":"Sent when a user removes a reaction from a message","title":"Nostrum.Struct.Event.MessageReactionRemove","ref":"Nostrum.Struct.Event.MessageReactionRemove.html"},{"type":"type","doc":"ID of the channel in which the reaction was created","title":"Nostrum.Struct.Event.MessageReactionRemove.channel_id/0","ref":"Nostrum.Struct.Event.MessageReactionRemove.html#t:channel_id/0"},{"type":"type","doc":"Partial emoji object that was removed","title":"Nostrum.Struct.Event.MessageReactionRemove.emoji/0","ref":"Nostrum.Struct.Event.MessageReactionRemove.html#t:emoji/0"},{"type":"type","doc":"ID of the guild on which the message lives, if applicable","title":"Nostrum.Struct.Event.MessageReactionRemove.guild_id/0","ref":"Nostrum.Struct.Event.MessageReactionRemove.html#t:guild_id/0"},{"type":"type","doc":"ID of the message to which the reaction was attached","title":"Nostrum.Struct.Event.MessageReactionRemove.message_id/0","ref":"Nostrum.Struct.Event.MessageReactionRemove.html#t:message_id/0"},{"type":"type","doc":"Event sent when a user removes a reaction from a message","title":"Nostrum.Struct.Event.MessageReactionRemove.t/0","ref":"Nostrum.Struct.Event.MessageReactionRemove.html#t:t/0"},{"type":"type","doc":"Author of the reaction","title":"Nostrum.Struct.Event.MessageReactionRemove.user_id/0","ref":"Nostrum.Struct.Event.MessageReactionRemove.html#t:user_id/0"},{"type":"module","doc":"Sent when a user explicitly removes all reactions from a message","title":"Nostrum.Struct.Event.MessageReactionRemoveAll","ref":"Nostrum.Struct.Event.MessageReactionRemoveAll.html"},{"type":"type","doc":"ID of the channel in which the message resides.","title":"Nostrum.Struct.Event.MessageReactionRemoveAll.channel_id/0","ref":"Nostrum.Struct.Event.MessageReactionRemoveAll.html#t:channel_id/0"},{"type":"type","doc":"ID of the guild for the message, if applicable.","title":"Nostrum.Struct.Event.MessageReactionRemoveAll.guild_id/0","ref":"Nostrum.Struct.Event.MessageReactionRemoveAll.html#t:guild_id/0"},{"type":"type","doc":"ID of the message from which all reactions were removed.","title":"Nostrum.Struct.Event.MessageReactionRemoveAll.message_id/0","ref":"Nostrum.Struct.Event.MessageReactionRemoveAll.html#t:message_id/0"},{"type":"type","doc":"Event sent when a user explicitly removes all reactions from a message","title":"Nostrum.Struct.Event.MessageReactionRemoveAll.t/0","ref":"Nostrum.Struct.Event.MessageReactionRemoveAll.html#t:t/0"},{"type":"module","doc":"Sent when a bot removes all instances of a given emoji from the reactions of a message","title":"Nostrum.Struct.Event.MessageReactionRemoveEmoji","ref":"Nostrum.Struct.Event.MessageReactionRemoveEmoji.html"},{"type":"type","doc":"Channel in which the message resides.","title":"Nostrum.Struct.Event.MessageReactionRemoveEmoji.channel_id/0","ref":"Nostrum.Struct.Event.MessageReactionRemoveEmoji.html#t:channel_id/0"},{"type":"type","doc":"The (partial) emoji that was removed.","title":"Nostrum.Struct.Event.MessageReactionRemoveEmoji.emoji/0","ref":"Nostrum.Struct.Event.MessageReactionRemoveEmoji.html#t:emoji/0"},{"type":"type","doc":"Guild on which the message resides, if applicable.","title":"Nostrum.Struct.Event.MessageReactionRemoveEmoji.guild_id/0","ref":"Nostrum.Struct.Event.MessageReactionRemoveEmoji.html#t:guild_id/0"},{"type":"type","doc":"Message from which the emoji was removed.","title":"Nostrum.Struct.Event.MessageReactionRemoveEmoji.message_id/0","ref":"Nostrum.Struct.Event.MessageReactionRemoveEmoji.html#t:message_id/0"},{"type":"type","doc":"Event sent when a bot removes all instances of a given emoji from the reactions of a message","title":"Nostrum.Struct.Event.MessageReactionRemoveEmoji.t/0","ref":"Nostrum.Struct.Event.MessageReactionRemoveEmoji.html#t:t/0"},{"type":"module","doc":"Sent on `READY`","title":"Nostrum.Struct.Event.PartialApplication","ref":"Nostrum.Struct.Event.PartialApplication.html"},{"type":"type","doc":"Public flags of the application.\n\nSee https://discord.com/developers/docs/resources/application#application-object-application-flags","title":"Nostrum.Struct.Event.PartialApplication.flags/0","ref":"Nostrum.Struct.Event.PartialApplication.html#t:flags/0"},{"type":"type","doc":"ID of the application","title":"Nostrum.Struct.Event.PartialApplication.id/0","ref":"Nostrum.Struct.Event.PartialApplication.html#t:id/0"},{"type":"type","doc":"Event sent as part of the `READY` payload.","title":"Nostrum.Struct.Event.PartialApplication.t/0","ref":"Nostrum.Struct.Event.PartialApplication.html#t:t/0"},{"type":"module","doc":"Represents an addition or removal of a vote from a Discord poll.\n\nFor polls where multiple answers were selected, one of these events will be fired for each vote.","title":"Nostrum.Struct.Event.PollVoteChange","ref":"Nostrum.Struct.Event.PollVoteChange.html"},{"type":"type","doc":"ID corresponding to the answer_id in the `t:Nostrum.Struct.Message.Poll.answers/0` list","title":"Nostrum.Struct.Event.PollVoteChange.answer_id/0","ref":"Nostrum.Struct.Event.PollVoteChange.html#t:answer_id/0"},{"type":"type","doc":"ID of the channel the vote took place in","title":"Nostrum.Struct.Event.PollVoteChange.channel_id/0","ref":"Nostrum.Struct.Event.PollVoteChange.html#t:channel_id/0"},{"type":"type","doc":"ID of the guild the poll is in (unless it is a private channel)","title":"Nostrum.Struct.Event.PollVoteChange.guild_id/0","ref":"Nostrum.Struct.Event.PollVoteChange.html#t:guild_id/0"},{"type":"type","doc":"ID of the message the poll was attached to","title":"Nostrum.Struct.Event.PollVoteChange.message_id/0","ref":"Nostrum.Struct.Event.PollVoteChange.html#t:message_id/0"},{"type":"type","doc":"Event representing a addition or removal of a vote from a poll","title":"Nostrum.Struct.Event.PollVoteChange.t/0","ref":"Nostrum.Struct.Event.PollVoteChange.html#t:t/0"},{"type":"type","doc":"Whether the vote was an addition or removal for a vote of the option","title":"Nostrum.Struct.Event.PollVoteChange.type/0","ref":"Nostrum.Struct.Event.PollVoteChange.html#t:type/0"},{"type":"type","doc":"ID of the user that has voted","title":"Nostrum.Struct.Event.PollVoteChange.user_id/0","ref":"Nostrum.Struct.Event.PollVoteChange.html#t:user_id/0"},{"type":"module","doc":"Sent after initial handshake with the gateway","title":"Nostrum.Struct.Event.Ready","ref":"Nostrum.Struct.Event.Ready.html"},{"type":"type","doc":"Partial application object with `id` and `flags`","title":"Nostrum.Struct.Event.Ready.application/0","ref":"Nostrum.Struct.Event.Ready.html#t:application/0"},{"type":"type","doc":"The guilds that the bot user is in","title":"Nostrum.Struct.Event.Ready.guilds/0","ref":"Nostrum.Struct.Event.Ready.html#t:guilds/0"},{"type":"type","doc":"Similar to `t:session_id/0`, this is the URL that Discord has requested\nreconnection attempts to be made against.\n\nNostrum stores and handles this for you, this value is provided for\ndebugging purposes.","title":"Nostrum.Struct.Event.Ready.resume_gateway_url/0","ref":"Nostrum.Struct.Event.Ready.html#t:resume_gateway_url/0"},{"type":"type","doc":"Used for resuming connections.\n\nIf you are wondering whether you need to use this, you probably don't.\nNostrum handles reconnections for you.","title":"Nostrum.Struct.Event.Ready.session_id/0","ref":"Nostrum.Struct.Event.Ready.html#t:session_id/0"},{"type":"type","doc":"A pair of two integers ``{shard_id, num_shards}``.\n\nFor more information, see\nhttps://discord.com/developers/docs/topics/gateway#sharding.","title":"Nostrum.Struct.Event.Ready.shard/0","ref":"Nostrum.Struct.Event.Ready.html#t:shard/0"},{"type":"type","doc":"Event sent after initial handshake with the gateway","title":"Nostrum.Struct.Event.Ready.t/0","ref":"Nostrum.Struct.Event.Ready.html#t:t/0"},{"type":"type","doc":"Information about the bot user","title":"Nostrum.Struct.Event.Ready.user/0","ref":"Nostrum.Struct.Event.Ready.html#t:user/0"},{"type":"type","doc":"Gateway version.\nSee https://discord.com/developers/docs/topics/gateway#gateways-gateway-versions","title":"Nostrum.Struct.Event.Ready.v/0","ref":"Nostrum.Struct.Event.Ready.html#t:v/0"},{"type":"module","doc":"Struct representing a Nostrum-generated Speaking Update event\n\nNostrum will generate this event when the bot starts or stops playing audio.","title":"Nostrum.Struct.Event.SpeakingUpdate","ref":"Nostrum.Struct.Event.SpeakingUpdate.html"},{"type":"type","doc":"Id of the channel this speaking update is occurring in.","title":"Nostrum.Struct.Event.SpeakingUpdate.channel_id/0","ref":"Nostrum.Struct.Event.SpeakingUpdate.html#t:channel_id/0"},{"type":"type","doc":"Current URL being played if a readable format.","title":"Nostrum.Struct.Event.SpeakingUpdate.current_url/0","ref":"Nostrum.Struct.Event.SpeakingUpdate.html#t:current_url/0"},{"type":"type","doc":"Id of the guild this speaking update is occurring in.","title":"Nostrum.Struct.Event.SpeakingUpdate.guild_id/0","ref":"Nostrum.Struct.Event.SpeakingUpdate.html#t:guild_id/0"},{"type":"type","doc":"Boolean representing if bot has started or stopped speaking.","title":"Nostrum.Struct.Event.SpeakingUpdate.speaking/0","ref":"Nostrum.Struct.Event.SpeakingUpdate.html#t:speaking/0"},{"type":"type","doc":"","title":"Nostrum.Struct.Event.SpeakingUpdate.t/0","ref":"Nostrum.Struct.Event.SpeakingUpdate.html#t:t/0"},{"type":"type","doc":"Boolean representing if speaking update was caused by an audio timeout.","title":"Nostrum.Struct.Event.SpeakingUpdate.timed_out/0","ref":"Nostrum.Struct.Event.SpeakingUpdate.html#t:timed_out/0"},{"type":"module","doc":"Struct representing a Thread List Sync event.\n\nThis event is sent when the user gains access to a channel.","title":"Nostrum.Struct.Event.ThreadListSync","ref":"Nostrum.Struct.Event.ThreadListSync.html"},{"type":"type","doc":"The parent channel ids whose threads are being synced.\nIf omitted, all threads were synced for the entire guild.","title":"Nostrum.Struct.Event.ThreadListSync.channel_ids/0","ref":"Nostrum.Struct.Event.ThreadListSync.html#t:channel_ids/0"},{"type":"type","doc":"The id of the guild.","title":"Nostrum.Struct.Event.ThreadListSync.guid_id/0","ref":"Nostrum.Struct.Event.ThreadListSync.html#t:guid_id/0"},{"type":"type","doc":"All thread member objects from the synced threads for the current user,\nindicating which threads the user has been added to.","title":"Nostrum.Struct.Event.ThreadListSync.members/0","ref":"Nostrum.Struct.Event.ThreadListSync.html#t:members/0"},{"type":"type","doc":"","title":"Nostrum.Struct.Event.ThreadListSync.t/0","ref":"Nostrum.Struct.Event.ThreadListSync.html#t:t/0"},{"type":"type","doc":"All active threads in the given channels that the user can access.","title":"Nostrum.Struct.Event.ThreadListSync.threads/0","ref":"Nostrum.Struct.Event.ThreadListSync.html#t:threads/0"},{"type":"module","doc":"Struct representing a thread members update event.\n\nThis event is sent whenever a user is added or removed from a thread.\n\nIf the current user does not have the `GUILD_MEMBERS` intent,\nthis event will only be sent when the current user is added to or removed from a thread.","title":"Nostrum.Struct.Event.ThreadMembersUpdate","ref":"Nostrum.Struct.Event.ThreadMembersUpdate.html"},{"type":"type","doc":"The members that were added to the thread.","title":"Nostrum.Struct.Event.ThreadMembersUpdate.added_members/0","ref":"Nostrum.Struct.Event.ThreadMembersUpdate.html#t:added_members/0"},{"type":"type","doc":"The id of the guild the thread is in.","title":"Nostrum.Struct.Event.ThreadMembersUpdate.guild_id/0","ref":"Nostrum.Struct.Event.ThreadMembersUpdate.html#t:guild_id/0"},{"type":"type","doc":"The id of the thread.","title":"Nostrum.Struct.Event.ThreadMembersUpdate.id/0","ref":"Nostrum.Struct.Event.ThreadMembersUpdate.html#t:id/0"},{"type":"type","doc":"The approximate number of members in the thread.\n\nThis number is capped at 50, though there can be more members in the thread.","title":"Nostrum.Struct.Event.ThreadMembersUpdate.member_count/0","ref":"Nostrum.Struct.Event.ThreadMembersUpdate.html#t:member_count/0"},{"type":"type","doc":"The ids of the members that were removed from the thread.","title":"Nostrum.Struct.Event.ThreadMembersUpdate.removed_member_ids/0","ref":"Nostrum.Struct.Event.ThreadMembersUpdate.html#t:removed_member_ids/0"},{"type":"type","doc":"","title":"Nostrum.Struct.Event.ThreadMembersUpdate.t/0","ref":"Nostrum.Struct.Event.ThreadMembersUpdate.html#t:t/0"},{"type":"module","doc":"Sent when a user starts typing in a channel","title":"Nostrum.Struct.Event.TypingStart","ref":"Nostrum.Struct.Event.TypingStart.html"},{"type":"type","doc":"Channel in which the user started typing","title":"Nostrum.Struct.Event.TypingStart.channel_id/0","ref":"Nostrum.Struct.Event.TypingStart.html#t:channel_id/0"},{"type":"type","doc":"ID of the guild where the user started typing, if applicable","title":"Nostrum.Struct.Event.TypingStart.guild_id/0","ref":"Nostrum.Struct.Event.TypingStart.html#t:guild_id/0"},{"type":"type","doc":"The member who started typing if this happened in a guild","title":"Nostrum.Struct.Event.TypingStart.member/0","ref":"Nostrum.Struct.Event.TypingStart.html#t:member/0"},{"type":"type","doc":"Event sent when a user starts typing in a channel","title":"Nostrum.Struct.Event.TypingStart.t/0","ref":"Nostrum.Struct.Event.TypingStart.html#t:t/0"},{"type":"type","doc":"When the user started typing","title":"Nostrum.Struct.Event.TypingStart.timestamp/0","ref":"Nostrum.Struct.Event.TypingStart.html#t:timestamp/0"},{"type":"type","doc":"ID of the user who started typing","title":"Nostrum.Struct.Event.TypingStart.user_id/0","ref":"Nostrum.Struct.Event.TypingStart.html#t:user_id/0"},{"type":"module","doc":"Struct representing a Nostrum-generated Voice Ready event\n\nNostrum will generate this event when the bot joins a voice channel\nand is ready to play audio.\n\nListening to this event may be used for bots that begin playing audio\ndirectly after joining a voice channel as an alternative to waiting\nuntil `Nostrum.Voice.ready?/1` returns `true`.","title":"Nostrum.Struct.Event.VoiceReady","ref":"Nostrum.Struct.Event.VoiceReady.html"},{"type":"type","doc":"Id of the channel that voice is ready in.","title":"Nostrum.Struct.Event.VoiceReady.channel_id/0","ref":"Nostrum.Struct.Event.VoiceReady.html#t:channel_id/0"},{"type":"type","doc":"Id of the guild that voice is ready in.","title":"Nostrum.Struct.Event.VoiceReady.guild_id/0","ref":"Nostrum.Struct.Event.VoiceReady.html#t:guild_id/0"},{"type":"type","doc":"","title":"Nostrum.Struct.Event.VoiceReady.t/0","ref":"Nostrum.Struct.Event.VoiceReady.html#t:t/0"},{"type":"module","doc":"Sent when a guild's voice server is updated","title":"Nostrum.Struct.Event.VoiceServerUpdate","ref":"Nostrum.Struct.Event.VoiceServerUpdate.html"},{"type":"type","doc":"The voice server host","title":"Nostrum.Struct.Event.VoiceServerUpdate.endpoint/0","ref":"Nostrum.Struct.Event.VoiceServerUpdate.html#t:endpoint/0"},{"type":"type","doc":"Guild this voice server update is for","title":"Nostrum.Struct.Event.VoiceServerUpdate.guild_id/0","ref":"Nostrum.Struct.Event.VoiceServerUpdate.html#t:guild_id/0"},{"type":"type","doc":"Event sent when a guild's voice server is updated","title":"Nostrum.Struct.Event.VoiceServerUpdate.t/0","ref":"Nostrum.Struct.Event.VoiceServerUpdate.html#t:t/0"},{"type":"type","doc":"Voice connection token","title":"Nostrum.Struct.Event.VoiceServerUpdate.token/0","ref":"Nostrum.Struct.Event.VoiceServerUpdate.html#t:token/0"},{"type":"module","doc":"Represents a user's voice connection status","title":"Nostrum.Struct.Event.VoiceState","ref":"Nostrum.Struct.Event.VoiceState.html"},{"type":"type","doc":"Channel ID this voice state is for","title":"Nostrum.Struct.Event.VoiceState.channel_id/0","ref":"Nostrum.Struct.Event.VoiceState.html#t:channel_id/0"},{"type":"type","doc":"Whether this user is deafened by the server","title":"Nostrum.Struct.Event.VoiceState.deaf/0","ref":"Nostrum.Struct.Event.VoiceState.html#t:deaf/0"},{"type":"type","doc":"Guild ID this voice state is for, if applicable","title":"Nostrum.Struct.Event.VoiceState.guild_id/0","ref":"Nostrum.Struct.Event.VoiceState.html#t:guild_id/0"},{"type":"type","doc":"Guild member this voice state is for, if applicable","title":"Nostrum.Struct.Event.VoiceState.member/0","ref":"Nostrum.Struct.Event.VoiceState.html#t:member/0"},{"type":"type","doc":"Whether this user is muteened by the server","title":"Nostrum.Struct.Event.VoiceState.mute/0","ref":"Nostrum.Struct.Event.VoiceState.html#t:mute/0"},{"type":"type","doc":"Time at which the user requested to speak, if applicable","title":"Nostrum.Struct.Event.VoiceState.request_to_speak_timestamp/0","ref":"Nostrum.Struct.Event.VoiceState.html#t:request_to_speak_timestamp/0"},{"type":"type","doc":"Whether this user is locally deafened","title":"Nostrum.Struct.Event.VoiceState.self_deaf/0","ref":"Nostrum.Struct.Event.VoiceState.html#t:self_deaf/0"},{"type":"type","doc":"Whether this user is locally muted","title":"Nostrum.Struct.Event.VoiceState.self_mute/0","ref":"Nostrum.Struct.Event.VoiceState.html#t:self_mute/0"},{"type":"type","doc":"Whether the user is streaming using \"Go Live\"","title":"Nostrum.Struct.Event.VoiceState.self_stream/0","ref":"Nostrum.Struct.Event.VoiceState.html#t:self_stream/0"},{"type":"type","doc":"Whether this user's camera is enabled","title":"Nostrum.Struct.Event.VoiceState.self_video/0","ref":"Nostrum.Struct.Event.VoiceState.html#t:self_video/0"},{"type":"type","doc":"Session ID for this voice state","title":"Nostrum.Struct.Event.VoiceState.session_id/0","ref":"Nostrum.Struct.Event.VoiceState.html#t:session_id/0"},{"type":"type","doc":"Whether this user is muted by the current user","title":"Nostrum.Struct.Event.VoiceState.suppress/0","ref":"Nostrum.Struct.Event.VoiceState.html#t:suppress/0"},{"type":"type","doc":"Event sent when a user's voice status is updated","title":"Nostrum.Struct.Event.VoiceState.t/0","ref":"Nostrum.Struct.Event.VoiceState.html#t:t/0"},{"type":"type","doc":"User this voice state is for","title":"Nostrum.Struct.Event.VoiceState.user_id/0","ref":"Nostrum.Struct.Event.VoiceState.html#t:user_id/0"},{"type":"module","doc":"Defines available types used for defining application command option types for passed options\nFor more info please refer to https://discord.com/developers/docs/interactions/application-commands#application-command-object-application-command-option-type","title":"Nostrum.Constants.ApplicationCommandOptionType","ref":"Nostrum.Constants.ApplicationCommandOptionType.html"},{"type":"function","doc":"","title":"Nostrum.Constants.ApplicationCommandOptionType.attachment/0","ref":"Nostrum.Constants.ApplicationCommandOptionType.html#attachment/0"},{"type":"function","doc":"","title":"Nostrum.Constants.ApplicationCommandOptionType.boolean/0","ref":"Nostrum.Constants.ApplicationCommandOptionType.html#boolean/0"},{"type":"function","doc":"","title":"Nostrum.Constants.ApplicationCommandOptionType.channel/0","ref":"Nostrum.Constants.ApplicationCommandOptionType.html#channel/0"},{"type":"function","doc":"","title":"Nostrum.Constants.ApplicationCommandOptionType.integer/0","ref":"Nostrum.Constants.ApplicationCommandOptionType.html#integer/0"},{"type":"function","doc":"","title":"Nostrum.Constants.ApplicationCommandOptionType.mentionable/0","ref":"Nostrum.Constants.ApplicationCommandOptionType.html#mentionable/0"},{"type":"function","doc":"","title":"Nostrum.Constants.ApplicationCommandOptionType.number/0","ref":"Nostrum.Constants.ApplicationCommandOptionType.html#number/0"},{"type":"function","doc":"","title":"Nostrum.Constants.ApplicationCommandOptionType.role/0","ref":"Nostrum.Constants.ApplicationCommandOptionType.html#role/0"},{"type":"function","doc":"","title":"Nostrum.Constants.ApplicationCommandOptionType.string/0","ref":"Nostrum.Constants.ApplicationCommandOptionType.html#string/0"},{"type":"function","doc":"","title":"Nostrum.Constants.ApplicationCommandOptionType.sub_command/0","ref":"Nostrum.Constants.ApplicationCommandOptionType.html#sub_command/0"},{"type":"function","doc":"","title":"Nostrum.Constants.ApplicationCommandOptionType.sub_command_group/0","ref":"Nostrum.Constants.ApplicationCommandOptionType.html#sub_command_group/0"},{"type":"function","doc":"","title":"Nostrum.Constants.ApplicationCommandOptionType.user/0","ref":"Nostrum.Constants.ApplicationCommandOptionType.html#user/0"},{"type":"module","doc":"Defines available types for application command permissions\nFor more info please refer to https://discord.com/developers/docs/interactions/application-commands#application-command-permissions-object-application-command-permission-type","title":"Nostrum.Constants.ApplicationCommandPermissionType","ref":"Nostrum.Constants.ApplicationCommandPermissionType.html"},{"type":"function","doc":"","title":"Nostrum.Constants.ApplicationCommandPermissionType.channel/0","ref":"Nostrum.Constants.ApplicationCommandPermissionType.html#channel/0"},{"type":"function","doc":"","title":"Nostrum.Constants.ApplicationCommandPermissionType.role/0","ref":"Nostrum.Constants.ApplicationCommandPermissionType.html#role/0"},{"type":"function","doc":"","title":"Nostrum.Constants.ApplicationCommandPermissionType.user/0","ref":"Nostrum.Constants.ApplicationCommandPermissionType.html#user/0"},{"type":"module","doc":"Defines available types used for selecting application command types\nFor more info please refer to https://discord.com/developers/docs/interactions/application-commands#application-command-object-application-command-types","title":"Nostrum.Constants.ApplicationCommandType","ref":"Nostrum.Constants.ApplicationCommandType.html"},{"type":"function","doc":"","title":"Nostrum.Constants.ApplicationCommandType.chat_input/0","ref":"Nostrum.Constants.ApplicationCommandType.html#chat_input/0"},{"type":"function","doc":"","title":"Nostrum.Constants.ApplicationCommandType.message/0","ref":"Nostrum.Constants.ApplicationCommandType.html#message/0"},{"type":"function","doc":"","title":"Nostrum.Constants.ApplicationCommandType.user/0","ref":"Nostrum.Constants.ApplicationCommandType.html#user/0"},{"type":"module","doc":"Defines available styles for button message components\nFor more info please refer to https://discord.com/developers/docs/interactions/message-components#button-object-button-styles","title":"Nostrum.Constants.ButtonStyle","ref":"Nostrum.Constants.ButtonStyle.html"},{"type":"function","doc":"","title":"Nostrum.Constants.ButtonStyle.danger/0","ref":"Nostrum.Constants.ButtonStyle.html#danger/0"},{"type":"function","doc":"","title":"Nostrum.Constants.ButtonStyle.link/0","ref":"Nostrum.Constants.ButtonStyle.html#link/0"},{"type":"function","doc":"","title":"Nostrum.Constants.ButtonStyle.primary/0","ref":"Nostrum.Constants.ButtonStyle.html#primary/0"},{"type":"function","doc":"","title":"Nostrum.Constants.ButtonStyle.secondary/0","ref":"Nostrum.Constants.ButtonStyle.html#secondary/0"},{"type":"function","doc":"","title":"Nostrum.Constants.ButtonStyle.success/0","ref":"Nostrum.Constants.ButtonStyle.html#success/0"},{"type":"module","doc":"Defines available types for channels\nFor more info please refer to https://discord.com/developers/docs/resources/channel#channel-object-channel-types","title":"Nostrum.Constants.ChannelType","ref":"Nostrum.Constants.ChannelType.html"},{"type":"function","doc":"","title":"Nostrum.Constants.ChannelType.announcement_thread/0","ref":"Nostrum.Constants.ChannelType.html#announcement_thread/0"},{"type":"function","doc":"","title":"Nostrum.Constants.ChannelType.dm/0","ref":"Nostrum.Constants.ChannelType.html#dm/0"},{"type":"function","doc":"","title":"Nostrum.Constants.ChannelType.group_db/0","ref":"Nostrum.Constants.ChannelType.html#group_db/0"},{"type":"function","doc":"","title":"Nostrum.Constants.ChannelType.guild_announcement/0","ref":"Nostrum.Constants.ChannelType.html#guild_announcement/0"},{"type":"function","doc":"","title":"Nostrum.Constants.ChannelType.guild_category/0","ref":"Nostrum.Constants.ChannelType.html#guild_category/0"},{"type":"function","doc":"","title":"Nostrum.Constants.ChannelType.guild_directory/0","ref":"Nostrum.Constants.ChannelType.html#guild_directory/0"},{"type":"function","doc":"","title":"Nostrum.Constants.ChannelType.guild_forum/0","ref":"Nostrum.Constants.ChannelType.html#guild_forum/0"},{"type":"function","doc":"","title":"Nostrum.Constants.ChannelType.guild_text/0","ref":"Nostrum.Constants.ChannelType.html#guild_text/0"},{"type":"function","doc":"","title":"Nostrum.Constants.ChannelType.guild_voice/0","ref":"Nostrum.Constants.ChannelType.html#guild_voice/0"},{"type":"function","doc":"","title":"Nostrum.Constants.ChannelType.private_thread/0","ref":"Nostrum.Constants.ChannelType.html#private_thread/0"},{"type":"function","doc":"","title":"Nostrum.Constants.ChannelType.public_thread/0","ref":"Nostrum.Constants.ChannelType.html#public_thread/0"},{"type":"module","doc":"Defines available types for message components\nFor more info please refer to https://discord.com/developers/docs/interactions/message-components#component-object-component-types","title":"Nostrum.Constants.ComponentType","ref":"Nostrum.Constants.ComponentType.html"},{"type":"function","doc":"Container for other components","title":"Nostrum.Constants.ComponentType.action_row/0","ref":"Nostrum.Constants.ComponentType.html#action_row/0"},{"type":"function","doc":"Button object","title":"Nostrum.Constants.ComponentType.button/0","ref":"Nostrum.Constants.ComponentType.html#button/0"},{"type":"function","doc":"Select menu for channels","title":"Nostrum.Constants.ComponentType.channel_select/0","ref":"Nostrum.Constants.ComponentType.html#channel_select/0"},{"type":"function","doc":"Select menu for mentionables (users and roles)","title":"Nostrum.Constants.ComponentType.mentionable_select/0","ref":"Nostrum.Constants.ComponentType.html#mentionable_select/0"},{"type":"function","doc":"Select menu for roles","title":"Nostrum.Constants.ComponentType.role_select/0","ref":"Nostrum.Constants.ComponentType.html#role_select/0"},{"type":"function","doc":"Select menu for picking from defined text options","title":"Nostrum.Constants.ComponentType.string_select/0","ref":"Nostrum.Constants.ComponentType.html#string_select/0"},{"type":"function","doc":"Text input object","title":"Nostrum.Constants.ComponentType.text_input/0","ref":"Nostrum.Constants.ComponentType.html#text_input/0"},{"type":"function","doc":"Select menu for users","title":"Nostrum.Constants.ComponentType.user_select/0","ref":"Nostrum.Constants.ComponentType.html#user_select/0"},{"type":"module","doc":"Defines available types for interaction callbacks\nFor more info please refer to https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-response-object-interaction-callback-type","title":"Nostrum.Constants.InteractionCallbackType","ref":"Nostrum.Constants.InteractionCallbackType.html"},{"type":"function","doc":"","title":"Nostrum.Constants.InteractionCallbackType.application_command_autocomplete_result/0","ref":"Nostrum.Constants.InteractionCallbackType.html#application_command_autocomplete_result/0"},{"type":"function","doc":"","title":"Nostrum.Constants.InteractionCallbackType.channel_message_with_source/0","ref":"Nostrum.Constants.InteractionCallbackType.html#channel_message_with_source/0"},{"type":"function","doc":"","title":"Nostrum.Constants.InteractionCallbackType.deferred_channel_message_with_source/0","ref":"Nostrum.Constants.InteractionCallbackType.html#deferred_channel_message_with_source/0"},{"type":"function","doc":"","title":"Nostrum.Constants.InteractionCallbackType.deferred_update_message/0","ref":"Nostrum.Constants.InteractionCallbackType.html#deferred_update_message/0"},{"type":"function","doc":"","title":"Nostrum.Constants.InteractionCallbackType.modal/0","ref":"Nostrum.Constants.InteractionCallbackType.html#modal/0"},{"type":"function","doc":"","title":"Nostrum.Constants.InteractionCallbackType.pong/0","ref":"Nostrum.Constants.InteractionCallbackType.html#pong/0"},{"type":"function","doc":"","title":"Nostrum.Constants.InteractionCallbackType.update_message/0","ref":"Nostrum.Constants.InteractionCallbackType.html#update_message/0"},{"type":"module","doc":"Defines available types for interactions\nFor more info please refer to https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-object-interaction-type","title":"Nostrum.Constants.InteractionType","ref":"Nostrum.Constants.InteractionType.html"},{"type":"function","doc":"","title":"Nostrum.Constants.InteractionType.application_command/0","ref":"Nostrum.Constants.InteractionType.html#application_command/0"},{"type":"function","doc":"","title":"Nostrum.Constants.InteractionType.application_command_autocomplete/0","ref":"Nostrum.Constants.InteractionType.html#application_command_autocomplete/0"},{"type":"function","doc":"","title":"Nostrum.Constants.InteractionType.message_component/0","ref":"Nostrum.Constants.InteractionType.html#message_component/0"},{"type":"function","doc":"","title":"Nostrum.Constants.InteractionType.modal_submit/0","ref":"Nostrum.Constants.InteractionType.html#modal_submit/0"},{"type":"function","doc":"","title":"Nostrum.Constants.InteractionType.ping/0","ref":"Nostrum.Constants.InteractionType.html#ping/0"},{"type":"module","doc":"Defines available styles for modal text inputs\nFor more info please refer to https://discord.com/developers/docs/interactions/message-components#text-inputs-text-input-styles","title":"Nostrum.Constants.TextInputStyle","ref":"Nostrum.Constants.TextInputStyle.html"},{"type":"function","doc":"","title":"Nostrum.Constants.TextInputStyle.paragraph/0","ref":"Nostrum.Constants.TextInputStyle.html#paragraph/0"},{"type":"function","doc":"","title":"Nostrum.Constants.TextInputStyle.short/0","ref":"Nostrum.Constants.TextInputStyle.html#short/0"},{"type":"module","doc":"Defines available types for channels\nFor more info please refer to https://discord.com/developers/docs/resources/webhook#webhook-object-webhook-types","title":"Nostrum.Constants.WebhookType","ref":"Nostrum.Constants.WebhookType.html"},{"type":"function","doc":"","title":"Nostrum.Constants.WebhookType.application/0","ref":"Nostrum.Constants.WebhookType.html#application/0"},{"type":"function","doc":"","title":"Nostrum.Constants.WebhookType.channel_follower/0","ref":"Nostrum.Constants.WebhookType.html#channel_follower/0"},{"type":"function","doc":"","title":"Nostrum.Constants.WebhookType.incoming/0","ref":"Nostrum.Constants.WebhookType.html#incoming/0"},{"type":"module","doc":"Functions that work on Snowflakes.","title":"Nostrum.Snowflake","ref":"Nostrum.Snowflake.html"},{"type":"function","doc":"Attempts to convert a term into a snowflake.","title":"Nostrum.Snowflake.cast/1","ref":"Nostrum.Snowflake.html#cast/1"},{"type":"function","doc":"```elixir\niex> Nostrum.Snowflake.cast(200317799350927360)\n{:ok, 200317799350927360}\n\niex> Nostrum.Snowflake.cast(\"200317799350927360\")\n{:ok, 200317799350927360}\n\niex> Nostrum.Snowflake.cast(nil)\n{:ok, nil}\n\niex> Nostrum.Snowflake.cast(true)\n:error\n\niex> Nostrum.Snowflake.cast(-1)\n:error\n```","title":"Examples - Nostrum.Snowflake.cast/1","ref":"Nostrum.Snowflake.html#cast/1-examples"},{"type":"function","doc":"Same as `cast/1`, except it raises an `ArgumentError` on failure.","title":"Nostrum.Snowflake.cast!/1","ref":"Nostrum.Snowflake.html#cast!/1"},{"type":"function","doc":"Returns the creation time of the snowflake.","title":"Nostrum.Snowflake.creation_time/1","ref":"Nostrum.Snowflake.html#creation_time/1"},{"type":"function","doc":"```elixir\niex> Nostrum.Snowflake.creation_time(177888205536886784)\n~U[2016-05-05 21:04:13.203Z]\n```","title":"Examples - Nostrum.Snowflake.creation_time/1","ref":"Nostrum.Snowflake.html#creation_time/1-examples"},{"type":"function","doc":"Convert a snowflake into its external representation.","title":"Nostrum.Snowflake.dump/1","ref":"Nostrum.Snowflake.html#dump/1"},{"type":"function","doc":"```elixir\niex> Nostrum.Snowflake.dump(109112383011581952)\n\"109112383011581952\"\n```","title":"Examples - Nostrum.Snowflake.dump/1","ref":"Nostrum.Snowflake.html#dump/1-examples"},{"type":"function","doc":"Converts the given `datetime` into a snowflake.\n\nIf `datetime` occurred before the discord epoch, the function will return\n`:error`.\n\nThe converted snowflake's last 22 bits will be zeroed out due to missing data.","title":"Nostrum.Snowflake.from_datetime/1","ref":"Nostrum.Snowflake.html#from_datetime/1"},{"type":"function","doc":"```elixir\niex> {:ok, dt, _} = DateTime.from_iso8601(\"2016-05-05T21:04:13.203Z\")\niex> Nostrum.Snowflake.from_datetime(dt)\n{:ok, 177888205536755712}\n\niex> {:ok, dt, _} = DateTime.from_iso8601(\"1998-12-25T00:00:00.000Z\")\niex> Nostrum.Snowflake.from_datetime(dt)\n:error\n```","title":"Examples - Nostrum.Snowflake.from_datetime/1","ref":"Nostrum.Snowflake.html#from_datetime/1-examples"},{"type":"function","doc":"Same as `from_datetime/1`, except it raises an `ArgumentError` on failure.","title":"Nostrum.Snowflake.from_datetime!/1","ref":"Nostrum.Snowflake.html#from_datetime!/1"},{"type":"macro","doc":"Returns `true` if `term` is a snowflake; otherwise returns `false`.","title":"Nostrum.Snowflake.is_snowflake/1","ref":"Nostrum.Snowflake.html#is_snowflake/1"},{"type":"macro","doc":"```elixir\niex> Nostrum.Snowflake.is_snowflake(89918932789497856)\ntrue\n\niex> Nostrum.Snowflake.is_snowflake(-1)\nfalse\n\niex> Nostrum.Snowflake.is_snowflake(0xFFFFFFFFFFFFFFFF + 1)\nfalse\n\niex> Nostrum.Snowflake.is_snowflake(\"117789813427535878\")\nfalse\n```","title":"Examples - Nostrum.Snowflake.is_snowflake/1","ref":"Nostrum.Snowflake.html#is_snowflake/1-examples"},{"type":"type","doc":"The type that represents snowflakes in JSON.\n\nIn JSON, Snowflakes are typically represented as strings due\nto some languages not being able to represent such a large number.","title":"Nostrum.Snowflake.external_snowflake/0","ref":"Nostrum.Snowflake.html#t:external_snowflake/0"},{"type":"type","doc":"The snowflake type.\n\nSnowflakes are 64-bit unsigned integers used to represent discord\nobject ids.","title":"Nostrum.Snowflake.t/0","ref":"Nostrum.Snowflake.html#t:t/0"},{"type":"module","doc":"A helper module for verifying the Discord bot token.\n\nThe token can be generated in the \"Bot\" tab of your Application the [Discord Developer Portal](https://discord.com/developers/applications) and\ncan be configured in your config file.\n\n```elixir\nconfig :nostrum,\n token: \"666\" # The token of your bot as a string\n```","title":"Nostrum.Token","ref":"Nostrum.Token.html"},{"type":"function","doc":"Checks if the Discord bot token has the correct format.\n\nWe check if the token is a binary followed by splitting it into 3 parts separated by a dot `\".\"`.\nThe first part is the Base64 encoded user_id which we decode and parse into as integer.\nThe second part is an encoded timestamp, and the last part an arbitrary cryptographic signature.\n\nRaises on failure.","title":"Nostrum.Token.check_token!/0","ref":"Nostrum.Token.html#check_token!/0"},{"type":"function","doc":"iex> token = \"OTY4NTU2MzQ4MzkwMzkxODU5.G49NjP.pD8PLpKp-Xx8sr-8m1DCxSPTJZdcpcJZOExc1c\"\n iex> Nostrum.Token.check_token!(token)\n :ok\n\n iex> token = \"ODY4MDcxODUzMDMyMzU3OTc4.YPqU6Q.jNJcq1daGG3otexX3c1LcxCpgpQ\"\n iex> Nostrum.Token.check_token!(token)\n :ok","title":"Examples - Nostrum.Token.check_token!/0","ref":"Nostrum.Token.html#check_token!/0-examples"},{"type":"function","doc":"","title":"Nostrum.Token.check_token!/1","ref":"Nostrum.Token.html#check_token!/1"},{"type":"module","doc":"Utility functions","title":"Nostrum.Util","ref":"Nostrum.Util.html"},{"type":"function","doc":"","title":"Nostrum.Util.enum_to_struct/2","ref":"Nostrum.Util.html#enum_to_struct/2"},{"type":"function","doc":"Returns the gateway url and shard count for current websocket connections.\n\nIf by chance no gateway connection has been made, will fetch the url to use and store it\nfor future use.","title":"Nostrum.Util.gateway/0","ref":"Nostrum.Util.html#gateway/0"},{"type":"function","doc":"Gets the latencies of all shard connections.\n\nCalls `get_shard_latency/1` on all shards and returns a map whose keys are\nshard nums and whose values are latencies in milliseconds.","title":"Nostrum.Util.get_all_shard_latencies/0","ref":"Nostrum.Util.html#get_all_shard_latencies/0"},{"type":"function","doc":"Gets the latency of the shard connection from a `Nostrum.Struct.WSState.t()` struct.\n\nReturns the latency in milliseconds as an integer, returning nil if unknown.","title":"Nostrum.Util.get_shard_latency/1","ref":"Nostrum.Util.html#get_shard_latency/1"},{"type":"function","doc":"Updates a map with a new value if the key is present.\nOtherwise, returns the map unchanged.","title":"Nostrum.Util.map_update_if_present/3","ref":"Nostrum.Util.html#map_update_if_present/3"},{"type":"function","doc":"Attempts to convert a string to an atom.\n\nBinary `token`s that consist of digits are assumed to be snowflakes, and will\nbe parsed as such.\n\nSome maps sent from Discord are integer-indexed, for these we just return the integer\nprovided.\n\nIf atom does not currently exist, will warn that we're doing an unsafe conversion.","title":"Nostrum.Util.maybe_to_atom/1","ref":"Nostrum.Util.html#maybe_to_atom/1"},{"type":"function","doc":"Converts possibly nil ISO8601 timestamp to a `DateTime`.\n\nIf a `DateTime` is provided, return it as-is.","title":"Nostrum.Util.maybe_to_datetime/1","ref":"Nostrum.Util.html#maybe_to_datetime/1"},{"type":"function","doc":"Converts possibly nil ISO8601 timestamp to unix time.","title":"Nostrum.Util.maybe_to_unixtime/1","ref":"Nostrum.Util.html#maybe_to_unixtime/1"},{"type":"function","doc":"Returns the number of milliseconds since unix epoch.","title":"Nostrum.Util.now/0","ref":"Nostrum.Util.html#now/0"},{"type":"function","doc":"Returns the current date as an ISO formatted string.","title":"Nostrum.Util.now_iso/0","ref":"Nostrum.Util.html#now_iso/0"},{"type":"function","doc":"Returns the total amount of shards as per the configuration.","title":"Nostrum.Util.num_shards/0","ref":"Nostrum.Util.html#num_shards/0"},{"type":"function","doc":"- If you specified your shards as `:auto`, the return value will be the\nrecommended number of shards as given by the gateway.\n\n- If you explicitly specified your shard numbers as an integer, it will be\nthe given number.\n\n- If you specified your shards in the form `{lowest, highest, total}` to\nstart a specific range of the total shards you want to start, this will be\nthe `total` value.\n\nShould Discord not supply us with any shard information, this will return\n`1`.\n\nNote that this is not the number of currently active shards, but the number\nof shards specified in your config.","title":"Return value - Nostrum.Util.num_shards/0","ref":"Nostrum.Util.html#num_shards/0-return-value"},{"type":"function","doc":"Converts a map into an atom-keyed map.\n\nGiven a map with variable type keys, returns the same map with all keys as `atoms`.\nTo support maps keyed with integers (such as in Discord's interaction data),\nbinaries that appear to be integers will be parsed as such.\n\nThis function will attempt to convert keys to an existing atom, and if that fails will default to\ncreating a new atom while displaying a warning. The idea here is that we should be able to see\nif any results from Discord are giving variable keys. Since we *will* define all\ntypes of objects returned by Discord, the amount of new atoms created *SHOULD* be 0. 👀","title":"Nostrum.Util.safe_atom_map/1","ref":"Nostrum.Util.html#safe_atom_map/1"},{"type":"function","doc":"Since we're being sacrilegious and converting strings to atoms from the WS, there will be some\natoms that we see that aren't defined in any Discord structs. This method mainly serves as a\nmeans to define those atoms once so the user isn't warned about them in the\n`Nostrum.Util.maybe_to_atom/1` function when they are in fact harmless.\n\nThe function is public to prevent it from being optimized out at compile time.","title":"Nostrum.Util.unused_atoms/0","ref":"Nostrum.Util.html#unused_atoms/0"},{"type":"function","doc":"Returns the number of microseconds since unix epoch.","title":"Nostrum.Util.usec_now/0","ref":"Nostrum.Util.html#usec_now/0"},{"type":"behaviour","doc":"Behaviour & dispatcher for storing guild to shard mappings.","title":"Nostrum.Store.GuildShardMapping","ref":"Nostrum.Store.GuildShardMapping.html"},{"type":"behaviour","doc":"When nostrum needs to run API calls over the gateway and multiple shards are\nused, it needs to determine which shard process will run the request. This\nmodule stores a mapping of guild IDs to their respective shard numbers. It is\nunlikely you need to use this module directly yourself.","title":"Purpose - Nostrum.Store.GuildShardMapping","ref":"Nostrum.Store.GuildShardMapping.html#module-purpose"},{"type":"behaviour","doc":"By default, nostrum will use `Elixir.Nostrum.Store.GuildShardMapping.ETS` to store the\nmapping. To override this, set the `[:stores, :guild_shard_mapping]` setting\non nostrum's application configuration:\n\n```elixir\nconfig :nostrum,\n stores: %{\n guild_shard_mapping: MyBot.Nostrum.Store.GuildShardMapping\n }\n```\n\nThis setting must be set at compile time.","title":"Configuration - Nostrum.Store.GuildShardMapping","ref":"Nostrum.Store.GuildShardMapping.html#module-configuration"},{"type":"callback","doc":"Retrieve the child specification for starting this mapping under a supervisor.","title":"Nostrum.Store.GuildShardMapping.child_spec/1","ref":"Nostrum.Store.GuildShardMapping.html#c:child_spec/1"},{"type":"function","doc":"","title":"Nostrum.Store.GuildShardMapping.create/2","ref":"Nostrum.Store.GuildShardMapping.html#create/2"},{"type":"callback","doc":"Create a new mapping for the given guild ID to the given shard ID.","title":"Nostrum.Store.GuildShardMapping.create/2","ref":"Nostrum.Store.GuildShardMapping.html#c:create/2"},{"type":"function","doc":"","title":"Nostrum.Store.GuildShardMapping.delete/1","ref":"Nostrum.Store.GuildShardMapping.html#delete/1"},{"type":"callback","doc":"Delete any stored mapping for the given guild ID.","title":"Nostrum.Store.GuildShardMapping.delete/1","ref":"Nostrum.Store.GuildShardMapping.html#c:delete/1"},{"type":"function","doc":"","title":"Nostrum.Store.GuildShardMapping.get/1","ref":"Nostrum.Store.GuildShardMapping.html#get/1"},{"type":"callback","doc":"Retrieve the shard number for the given guild ID.\n\nReturns `nil` if no associated shard number was found.","title":"Nostrum.Store.GuildShardMapping.get/1","ref":"Nostrum.Store.GuildShardMapping.html#c:get/1"},{"type":"module","doc":"Supervises processes managing nostrum's internal state.\n\nPlease see the following modules for more details:\n- `Nostrum.Store.GuildShardMapping`\n- `Nostrum.Store.UnavailableGuild`","title":"Nostrum.Store.Supervisor","ref":"Nostrum.Store.Supervisor.html"},{"type":"function","doc":"Returns a specification to start this module under a supervisor.\n\nSee `Supervisor`.","title":"Nostrum.Store.Supervisor.child_spec/1","ref":"Nostrum.Store.Supervisor.html#child_spec/1"},{"type":"function","doc":"","title":"Nostrum.Store.Supervisor.init/1","ref":"Nostrum.Store.Supervisor.html#init/1"},{"type":"function","doc":"","title":"Nostrum.Store.Supervisor.start_link/1","ref":"Nostrum.Store.Supervisor.html#start_link/1"},{"type":"behaviour","doc":"Behaviour & dispatcher for storing unavailable guilds.","title":"Nostrum.Store.UnavailableGuild","ref":"Nostrum.Store.UnavailableGuild.html"},{"type":"behaviour","doc":"The `GUILD_CREATE` gateway event on its own provides no means to determine\nwhether the guild we receive is a guild that the bot joined, or a guild that\nhas just become available over the gateway. To work around this, this store\nkeeps track of unavailable guilds we received to determine whether a guild\nsent over this event is unavailable or new. It is therefore unlikely this\nmodule needs to be used outside of nostrum.","title":"Purpose - Nostrum.Store.UnavailableGuild","ref":"Nostrum.Store.UnavailableGuild.html#module-purpose"},{"type":"behaviour","doc":"By default, nostrum will use `Elixir.Nostrum.Store.UnavailableGuild.ETS` to store\nunavailable guilds. To override this, set the `[:stores,\n:unavailable_guilds]` setting on nostrum's application configuration:\n\n```elixir\nconfig :nostrum,\n stores: %{\n unavailable_guilds: MyBot.Nostrum.Store.UnavailableGuild\n }\n```\n\nThis setting must be set at compile time.","title":"Configuration - Nostrum.Store.UnavailableGuild","ref":"Nostrum.Store.UnavailableGuild.html#module-configuration"},{"type":"behaviour","doc":"If implementing your own unavailable guild store, in addition to the\ncallbacks of this module, you must also provide the function `child_spec/1`.\nThe recommended approach is to spawn a `Supervisor` to manage your store.","title":"Implementation - Nostrum.Store.UnavailableGuild","ref":"Nostrum.Store.UnavailableGuild.html#module-implementation"},{"type":"callback","doc":"Retrieve the child specification for starting this mapping under a supervisor.","title":"Nostrum.Store.UnavailableGuild.child_spec/1","ref":"Nostrum.Store.UnavailableGuild.html#c:child_spec/1"},{"type":"function","doc":"","title":"Nostrum.Store.UnavailableGuild.create/1","ref":"Nostrum.Store.UnavailableGuild.html#create/1"},{"type":"callback","doc":"Mark the given guild as unavailable.","title":"Nostrum.Store.UnavailableGuild.create/1","ref":"Nostrum.Store.UnavailableGuild.html#c:create/1"},{"type":"function","doc":"","title":"Nostrum.Store.UnavailableGuild.is?/1","ref":"Nostrum.Store.UnavailableGuild.html#is?/1"},{"type":"callback","doc":"Return whether the guild is unavailable.","title":"Nostrum.Store.UnavailableGuild.is?/1","ref":"Nostrum.Store.UnavailableGuild.html#c:is?/1"},{"type":"module","doc":"An Mnesia-based cache for messages.\n\nPlease note that this module is only compiled if Mnesia is available on\nyour system. See the Mnesia section of the [State](functionality/state.md)\ndocumentation for more information.\n\nTo retrieve the table name used by this cache, use `table/0`.\n\n\nBy default, the cache will store up to `10_000` messages,\nand will evict the `100` oldest messages when the limit is reached.\n\nThe reason for the eviction count is that with mnesia it is more efficient to\nfind X oldest records and delete them all at once than to find the oldest\nrecord and delete it each time a new record is added.\n\nThe Mnesia cache supports the following configuration options:\n- `size_limit`: The maximum number of messages to store in the cache.\ndefault: `10_000`\n- `eviction_count`: The number of messages to evict when the cache is full.\ndefault: `100`\n- `table_name`: The name of the Mnesia table to use for the cache.\ndefault: `:nostrum_messages`\n- `compressed`: Whether to use compressed in memory storage for the table.\ndefault: `false`\n- `type`: Sets the type of Mnesia table created to cache messages.\nCan be either `:set` or `:ordered_set`, by choosing `:ordered_set` the\neviction of the oldest messages will be more efficient, however it means\nthat the table cannot be changed to only store its contents on disk later.\ndefault: `:ordered_set`\n\nTo change this configuration, you can add the following to your\n`config.exs`:\n\n```elixir\nconfig :nostrum,\n caches: %{\n messages: {Nostrum.Cache.MessageCache.Mnesia,\n size_limit: 1000, eviction_count: 50,\n table_name: :my_custom_messages_table_name,\n compressed: true, type: :set}\n }\n```\n\nYou can also change the table name used by the cache by setting the\n`table_name` field in the configuration for the `messages` cache.","title":"Nostrum.Cache.MessageCache.Mnesia","ref":"Nostrum.Cache.MessageCache.Mnesia.html"},{"type":"function","doc":"Removes and returns a list of messages from the cache.\nMessages not found in the cache will not be included in the returned list.","title":"Nostrum.Cache.MessageCache.Mnesia.bulk_delete/2","ref":"Nostrum.Cache.MessageCache.Mnesia.html#bulk_delete/2"},{"type":"function","doc":"Removes all messages for a channel which was deleted.","title":"Nostrum.Cache.MessageCache.Mnesia.channel_delete/1","ref":"Nostrum.Cache.MessageCache.Mnesia.html#channel_delete/1"},{"type":"function","doc":"Returns a specification to start this module under a supervisor.\n\nSee `Supervisor`.","title":"Nostrum.Cache.MessageCache.Mnesia.child_spec/1","ref":"Nostrum.Cache.MessageCache.Mnesia.html#child_spec/1"},{"type":"function","doc":"Clear any objects in the cache.","title":"Nostrum.Cache.MessageCache.Mnesia.clear/0","ref":"Nostrum.Cache.MessageCache.Mnesia.html#clear/0"},{"type":"function","doc":"Adds a message to the cache.","title":"Nostrum.Cache.MessageCache.Mnesia.create/1","ref":"Nostrum.Cache.MessageCache.Mnesia.html#create/1"},{"type":"function","doc":"Removes a message from the cache.","title":"Nostrum.Cache.MessageCache.Mnesia.delete/2","ref":"Nostrum.Cache.MessageCache.Mnesia.html#delete/2"},{"type":"function","doc":"Retrieve a single message from the cache by id.","title":"Nostrum.Cache.MessageCache.Mnesia.get/1","ref":"Nostrum.Cache.MessageCache.Mnesia.html#get/1"},{"type":"function","doc":"Set up the cache's Mnesia table.","title":"Nostrum.Cache.MessageCache.Mnesia.init/1","ref":"Nostrum.Cache.MessageCache.Mnesia.html#init/1"},{"type":"function","doc":"Return a QLC query handle for the cache for read operations.","title":"Nostrum.Cache.MessageCache.Mnesia.query_handle/0","ref":"Nostrum.Cache.MessageCache.Mnesia.html#query_handle/0"},{"type":"function","doc":"Start the supervisor.","title":"Nostrum.Cache.MessageCache.Mnesia.start_link/1","ref":"Nostrum.Cache.MessageCache.Mnesia.html#start_link/1"},{"type":"function","doc":"Retrieve the Mnesia table name used for the cache.","title":"Nostrum.Cache.MessageCache.Mnesia.table/0","ref":"Nostrum.Cache.MessageCache.Mnesia.html#table/0"},{"type":"function","doc":"Drop the table used for caching.","title":"Nostrum.Cache.MessageCache.Mnesia.teardown/0","ref":"Nostrum.Cache.MessageCache.Mnesia.html#teardown/0"},{"type":"function","doc":"Updates a message in the cache.","title":"Nostrum.Cache.MessageCache.Mnesia.update/1","ref":"Nostrum.Cache.MessageCache.Mnesia.html#update/1"},{"type":"function","doc":"Wrap QLC operations in a transaction","title":"Nostrum.Cache.MessageCache.Mnesia.wrap_qlc/1","ref":"Nostrum.Cache.MessageCache.Mnesia.html#wrap_qlc/1"},{"type":"module","doc":"A no-op message cache.\n\nThis cache does not store any messages and always returns `{:error, :not_found}`\nfor any operation.","title":"Nostrum.Cache.MessageCache.Noop","ref":"Nostrum.Cache.MessageCache.Noop.html"},{"type":"function","doc":"Returns a specification to start this module under a supervisor.\n\nSee `Supervisor`.","title":"Nostrum.Cache.MessageCache.Noop.child_spec/1","ref":"Nostrum.Cache.MessageCache.Noop.html#child_spec/1"},{"type":"function","doc":"Start the supervisor.","title":"Nostrum.Cache.MessageCache.Noop.start_link/1","ref":"Nostrum.Cache.MessageCache.Noop.html#start_link/1"},{"type":"module","doc":"Maps channels to guilds via `:ets`.\n\nPlease use the function `table/0` for retrieving a reference to the table\nused by nostrum.","title":"Nostrum.Cache.ChannelGuildMapping.ETS","ref":"Nostrum.Cache.ChannelGuildMapping.ETS.html"},{"type":"function","doc":"Returns a specification to start this module under a supervisor.\n\nSee `Supervisor`.","title":"Nostrum.Cache.ChannelGuildMapping.ETS.child_spec/1","ref":"Nostrum.Cache.ChannelGuildMapping.ETS.html#child_spec/1"},{"type":"function","doc":"Create a mapping of the given channel to the given guild.","title":"Nostrum.Cache.ChannelGuildMapping.ETS.create/2","ref":"Nostrum.Cache.ChannelGuildMapping.ETS.html#create/2"},{"type":"function","doc":"Remove any mapping associated with the given channel.","title":"Nostrum.Cache.ChannelGuildMapping.ETS.delete/1","ref":"Nostrum.Cache.ChannelGuildMapping.ETS.html#delete/1"},{"type":"function","doc":"Retrieve the guild ID for the given channel ID, if present.","title":"Nostrum.Cache.ChannelGuildMapping.ETS.get/1","ref":"Nostrum.Cache.ChannelGuildMapping.ETS.html#get/1"},{"type":"function","doc":"Set up the ETS table.","title":"Nostrum.Cache.ChannelGuildMapping.ETS.init/1","ref":"Nostrum.Cache.ChannelGuildMapping.ETS.html#init/1"},{"type":"function","doc":"Start the supervisor.","title":"Nostrum.Cache.ChannelGuildMapping.ETS.start_link/1","ref":"Nostrum.Cache.ChannelGuildMapping.ETS.html#start_link/1"},{"type":"function","doc":"Retrieve the table used by this module.","title":"Nostrum.Cache.ChannelGuildMapping.ETS.table/0","ref":"Nostrum.Cache.ChannelGuildMapping.ETS.html#table/0"},{"type":"module","doc":"An Mnesia-based mapping between channel and guild IDs.\n\nPlease note that this module is only compiled if Mnesia is available on\nyour system. See the Mnesia section of the [State](functionality/state.md)\ndocumentation for more information.\n\nTo retrieve the table name used by this cache, use `table/0`.","title":"Nostrum.Cache.ChannelGuildMapping.Mnesia","ref":"Nostrum.Cache.ChannelGuildMapping.Mnesia.html"},{"type":"function","doc":"Returns a specification to start this module under a supervisor.\n\nSee `Supervisor`.","title":"Nostrum.Cache.ChannelGuildMapping.Mnesia.child_spec/1","ref":"Nostrum.Cache.ChannelGuildMapping.Mnesia.html#child_spec/1"},{"type":"function","doc":"Create a mapping of the given channel to the given guild.","title":"Nostrum.Cache.ChannelGuildMapping.Mnesia.create/2","ref":"Nostrum.Cache.ChannelGuildMapping.Mnesia.html#create/2"},{"type":"function","doc":"Remove any mapping associated with the given channel.","title":"Nostrum.Cache.ChannelGuildMapping.Mnesia.delete/1","ref":"Nostrum.Cache.ChannelGuildMapping.Mnesia.html#delete/1"},{"type":"function","doc":"Retrieve the guild ID for the given channel ID, if present.","title":"Nostrum.Cache.ChannelGuildMapping.Mnesia.get/1","ref":"Nostrum.Cache.ChannelGuildMapping.Mnesia.html#get/1"},{"type":"function","doc":"Set up the ETS table.","title":"Nostrum.Cache.ChannelGuildMapping.Mnesia.init/1","ref":"Nostrum.Cache.ChannelGuildMapping.Mnesia.html#init/1"},{"type":"function","doc":"Start the supervisor.","title":"Nostrum.Cache.ChannelGuildMapping.Mnesia.start_link/1","ref":"Nostrum.Cache.ChannelGuildMapping.Mnesia.html#start_link/1"},{"type":"function","doc":"Retrieve the table used by this module.","title":"Nostrum.Cache.ChannelGuildMapping.Mnesia.table/0","ref":"Nostrum.Cache.ChannelGuildMapping.Mnesia.html#table/0"},{"type":"function","doc":"Drop the table used for caching.","title":"Nostrum.Cache.ChannelGuildMapping.Mnesia.teardown/0","ref":"Nostrum.Cache.ChannelGuildMapping.Mnesia.html#teardown/0"},{"type":"module","doc":"NoOp implementation for the Channel Guild map","title":"Nostrum.Cache.ChannelGuildMapping.NoOp","ref":"Nostrum.Cache.ChannelGuildMapping.NoOp.html"},{"type":"function","doc":"Returns a specification to start this module under a supervisor.\n\nSee `Supervisor`.","title":"Nostrum.Cache.ChannelGuildMapping.NoOp.child_spec/1","ref":"Nostrum.Cache.ChannelGuildMapping.NoOp.html#child_spec/1"},{"type":"function","doc":"Start the supervisor.","title":"Nostrum.Cache.ChannelGuildMapping.NoOp.start_link/1","ref":"Nostrum.Cache.ChannelGuildMapping.NoOp.html#start_link/1"},{"type":"module","doc":"An ETS-based cache for guilds.\n\nThe supervisor defined by this module will set up the ETS table associated\nwith it.\n\nThe default table name under which guilds are cached is `nostrum_guilds`.\nIn addition to the cache behaviour implementations provided by this module,\nyou can also call regular ETS table methods on it, such as `:ets.info`.\n\nNote that users should not call the functions not related to this specific\nimplementation of the cache directly. Instead, call the functions of\n`Nostrum.Cache.GuildCache` directly, which will dispatch to the configured\ncache.","title":"Nostrum.Cache.GuildCache.ETS","ref":"Nostrum.Cache.GuildCache.ETS.html"},{"type":"function","doc":"Create the given channel for the given guild in the cache.","title":"Nostrum.Cache.GuildCache.ETS.channel_create/2","ref":"Nostrum.Cache.GuildCache.ETS.html#channel_create/2"},{"type":"function","doc":"Delete the channel from the given guild in the cache.","title":"Nostrum.Cache.GuildCache.ETS.channel_delete/2","ref":"Nostrum.Cache.GuildCache.ETS.html#channel_delete/2"},{"type":"function","doc":"Update the channel on the given guild in the cache.","title":"Nostrum.Cache.GuildCache.ETS.channel_update/2","ref":"Nostrum.Cache.GuildCache.ETS.html#channel_update/2"},{"type":"function","doc":"Returns a specification to start this module under a supervisor.\n\nSee `Supervisor`.","title":"Nostrum.Cache.GuildCache.ETS.child_spec/1","ref":"Nostrum.Cache.GuildCache.ETS.html#child_spec/1"},{"type":"function","doc":"Create the given guild in the cache.","title":"Nostrum.Cache.GuildCache.ETS.create/1","ref":"Nostrum.Cache.GuildCache.ETS.html#create/1"},{"type":"function","doc":"Delete the given guild from the cache.","title":"Nostrum.Cache.GuildCache.ETS.delete/1","ref":"Nostrum.Cache.GuildCache.ETS.html#delete/1"},{"type":"function","doc":"Update the emoji list for the given guild in the cache.","title":"Nostrum.Cache.GuildCache.ETS.emoji_update/2","ref":"Nostrum.Cache.GuildCache.ETS.html#emoji_update/2"},{"type":"function","doc":"Set up the cache's ETS table.","title":"Nostrum.Cache.GuildCache.ETS.init/1","ref":"Nostrum.Cache.GuildCache.ETS.html#init/1"},{"type":"function","doc":"Decrement the guild member count by one.","title":"Nostrum.Cache.GuildCache.ETS.member_count_down/1","ref":"Nostrum.Cache.GuildCache.ETS.html#member_count_down/1"},{"type":"function","doc":"Increment the guild member count by one.","title":"Nostrum.Cache.GuildCache.ETS.member_count_up/1","ref":"Nostrum.Cache.GuildCache.ETS.html#member_count_up/1"},{"type":"function","doc":"Get a QLC query handle for the guild cache.","title":"Nostrum.Cache.GuildCache.ETS.query_handle/0","ref":"Nostrum.Cache.GuildCache.ETS.html#query_handle/0"},{"type":"function","doc":"Create the given role in the given guild in the cache.","title":"Nostrum.Cache.GuildCache.ETS.role_create/2","ref":"Nostrum.Cache.GuildCache.ETS.html#role_create/2"},{"type":"function","doc":"Delete the given role from the given guild in the cache.","title":"Nostrum.Cache.GuildCache.ETS.role_delete/2","ref":"Nostrum.Cache.GuildCache.ETS.html#role_delete/2"},{"type":"function","doc":"Update the given role in the given guild in the cache.","title":"Nostrum.Cache.GuildCache.ETS.role_update/2","ref":"Nostrum.Cache.GuildCache.ETS.html#role_update/2"},{"type":"function","doc":"Start the supervisor.","title":"Nostrum.Cache.GuildCache.ETS.start_link/1","ref":"Nostrum.Cache.GuildCache.ETS.html#start_link/1"},{"type":"function","doc":"Update the sticker list for the given guild in the cache.","title":"Nostrum.Cache.GuildCache.ETS.stickers_update/2","ref":"Nostrum.Cache.GuildCache.ETS.html#stickers_update/2"},{"type":"function","doc":"Retrieve the ETS table name used for the cache.","title":"Nostrum.Cache.GuildCache.ETS.tabname/0","ref":"Nostrum.Cache.GuildCache.ETS.html#tabname/0"},{"type":"function","doc":"Update the given guild in the cache.","title":"Nostrum.Cache.GuildCache.ETS.update/1","ref":"Nostrum.Cache.GuildCache.ETS.html#update/1"},{"type":"function","doc":"Update guild voice states with the given voice state in the cache.","title":"Nostrum.Cache.GuildCache.ETS.voice_state_update/2","ref":"Nostrum.Cache.GuildCache.ETS.html#voice_state_update/2"},{"type":"module","doc":"An Mnesia-based cache for guilds.\n\nPlease note that this module is only compiled if Mnesia is available on\nyour system. See the Mnesia section of the [State](functionality/state.md)\ndocumentation for more information.\n\nTo retrieve the table name used by this cache, use `table/0`.","title":"Nostrum.Cache.GuildCache.Mnesia","ref":"Nostrum.Cache.GuildCache.Mnesia.html"},{"type":"function","doc":"Create the given channel for the given guild in the cache.","title":"Nostrum.Cache.GuildCache.Mnesia.channel_create/2","ref":"Nostrum.Cache.GuildCache.Mnesia.html#channel_create/2"},{"type":"function","doc":"Delete the channel from the given guild in the cache.","title":"Nostrum.Cache.GuildCache.Mnesia.channel_delete/2","ref":"Nostrum.Cache.GuildCache.Mnesia.html#channel_delete/2"},{"type":"function","doc":"Update the channel on the given guild in the cache.","title":"Nostrum.Cache.GuildCache.Mnesia.channel_update/2","ref":"Nostrum.Cache.GuildCache.Mnesia.html#channel_update/2"},{"type":"function","doc":"Returns a specification to start this module under a supervisor.\n\nSee `Supervisor`.","title":"Nostrum.Cache.GuildCache.Mnesia.child_spec/1","ref":"Nostrum.Cache.GuildCache.Mnesia.html#child_spec/1"},{"type":"function","doc":"Clear any objects in the cache.","title":"Nostrum.Cache.GuildCache.Mnesia.clear/0","ref":"Nostrum.Cache.GuildCache.Mnesia.html#clear/0"},{"type":"function","doc":"Create a guild from upstream data.","title":"Nostrum.Cache.GuildCache.Mnesia.create/1","ref":"Nostrum.Cache.GuildCache.Mnesia.html#create/1"},{"type":"function","doc":"Remove the given guild from the cache.","title":"Nostrum.Cache.GuildCache.Mnesia.delete/1","ref":"Nostrum.Cache.GuildCache.Mnesia.html#delete/1"},{"type":"function","doc":"Update the emoji list for the given guild in the cache.","title":"Nostrum.Cache.GuildCache.Mnesia.emoji_update/2","ref":"Nostrum.Cache.GuildCache.Mnesia.html#emoji_update/2"},{"type":"function","doc":"Set up the cache's Mnesia table.","title":"Nostrum.Cache.GuildCache.Mnesia.init/1","ref":"Nostrum.Cache.GuildCache.Mnesia.html#init/1"},{"type":"function","doc":"Decrement the guild member count by one.","title":"Nostrum.Cache.GuildCache.Mnesia.member_count_down/1","ref":"Nostrum.Cache.GuildCache.Mnesia.html#member_count_down/1"},{"type":"function","doc":"Increment the guild member count by one.","title":"Nostrum.Cache.GuildCache.Mnesia.member_count_up/1","ref":"Nostrum.Cache.GuildCache.Mnesia.html#member_count_up/1"},{"type":"function","doc":"Get a QLC handle for the guild cache.","title":"Nostrum.Cache.GuildCache.Mnesia.query_handle/0","ref":"Nostrum.Cache.GuildCache.Mnesia.html#query_handle/0"},{"type":"function","doc":"Create the given role in the given guild in the cache.","title":"Nostrum.Cache.GuildCache.Mnesia.role_create/2","ref":"Nostrum.Cache.GuildCache.Mnesia.html#role_create/2"},{"type":"function","doc":"Delete the given role from the given guild in the cache.","title":"Nostrum.Cache.GuildCache.Mnesia.role_delete/2","ref":"Nostrum.Cache.GuildCache.Mnesia.html#role_delete/2"},{"type":"function","doc":"Update the given role in the given guild in the cache.","title":"Nostrum.Cache.GuildCache.Mnesia.role_update/2","ref":"Nostrum.Cache.GuildCache.Mnesia.html#role_update/2"},{"type":"function","doc":"Start the supervisor.","title":"Nostrum.Cache.GuildCache.Mnesia.start_link/1","ref":"Nostrum.Cache.GuildCache.Mnesia.html#start_link/1"},{"type":"function","doc":"Update the sticker list for the given guild in the cache.","title":"Nostrum.Cache.GuildCache.Mnesia.stickers_update/2","ref":"Nostrum.Cache.GuildCache.Mnesia.html#stickers_update/2"},{"type":"function","doc":"Retrieve the Mnesia table name used for the cache.","title":"Nostrum.Cache.GuildCache.Mnesia.table/0","ref":"Nostrum.Cache.GuildCache.Mnesia.html#table/0"},{"type":"function","doc":"Drop the table used for caching.","title":"Nostrum.Cache.GuildCache.Mnesia.teardown/0","ref":"Nostrum.Cache.GuildCache.Mnesia.html#teardown/0"},{"type":"function","doc":"Update the given guild in the cache.","title":"Nostrum.Cache.GuildCache.Mnesia.update/1","ref":"Nostrum.Cache.GuildCache.Mnesia.html#update/1"},{"type":"function","doc":"Update guild voice states with the given voice state in the cache.","title":"Nostrum.Cache.GuildCache.Mnesia.voice_state_update/2","ref":"Nostrum.Cache.GuildCache.Mnesia.html#voice_state_update/2"},{"type":"function","doc":"Wrap QLC operations in a transaction.","title":"Nostrum.Cache.GuildCache.Mnesia.wrap_qlc/1","ref":"Nostrum.Cache.GuildCache.Mnesia.html#wrap_qlc/1"},{"type":"module","doc":"A cache module that does nothing.\n\nUseful for bots that don't need to cache guilds.","title":"Nostrum.Cache.GuildCache.NoOp","ref":"Nostrum.Cache.GuildCache.NoOp.html"},{"type":"function","doc":"Returns a specification to start this module under a supervisor.\n\nSee `Supervisor`.","title":"Nostrum.Cache.GuildCache.NoOp.child_spec/1","ref":"Nostrum.Cache.GuildCache.NoOp.html#child_spec/1"},{"type":"function","doc":"Start up the cache supervisor.","title":"Nostrum.Cache.GuildCache.NoOp.init/1","ref":"Nostrum.Cache.GuildCache.NoOp.html#init/1"},{"type":"function","doc":"Start the supervisor.","title":"Nostrum.Cache.GuildCache.NoOp.start_link/1","ref":"Nostrum.Cache.GuildCache.NoOp.html#start_link/1"},{"type":"module","doc":"An ETS-based cache for members.\n\nIf you need to get the table reference for the table used by this module,\nplease use the `table/0` function.","title":"Nostrum.Cache.MemberCache.ETS","ref":"Nostrum.Cache.MemberCache.ETS.html"},{"type":"function","doc":"Bulk create a chunk of members for the given guild in the cache.","title":"Nostrum.Cache.MemberCache.ETS.bulk_create/2","ref":"Nostrum.Cache.MemberCache.ETS.html#bulk_create/2"},{"type":"function","doc":"Returns a specification to start this module under a supervisor.\n\nSee `Supervisor`.","title":"Nostrum.Cache.MemberCache.ETS.child_spec/1","ref":"Nostrum.Cache.MemberCache.ETS.html#child_spec/1"},{"type":"function","doc":"Clear any objects in the cache.","title":"Nostrum.Cache.MemberCache.ETS.clear/0","ref":"Nostrum.Cache.MemberCache.ETS.html#clear/0"},{"type":"function","doc":"Add the given member to the given guild in the cache.","title":"Nostrum.Cache.MemberCache.ETS.create/2","ref":"Nostrum.Cache.MemberCache.ETS.html#create/2"},{"type":"function","doc":"Remove the given member from the given guild in the cache.","title":"Nostrum.Cache.MemberCache.ETS.delete/2","ref":"Nostrum.Cache.MemberCache.ETS.html#delete/2"},{"type":"function","doc":"Set up the cache's ETS table.","title":"Nostrum.Cache.MemberCache.ETS.init/1","ref":"Nostrum.Cache.MemberCache.ETS.html#init/1"},{"type":"function","doc":"Get a QLC query handle for the member cache.","title":"Nostrum.Cache.MemberCache.ETS.query_handle/0","ref":"Nostrum.Cache.MemberCache.ETS.html#query_handle/0"},{"type":"function","doc":"Start the supervisor.","title":"Nostrum.Cache.MemberCache.ETS.start_link/1","ref":"Nostrum.Cache.MemberCache.ETS.html#start_link/1"},{"type":"function","doc":"Retrieve the ETS table reference used for the cache.","title":"Nostrum.Cache.MemberCache.ETS.table/0","ref":"Nostrum.Cache.MemberCache.ETS.html#table/0"},{"type":"function","doc":"Update the given member for the given guild in the cache.","title":"Nostrum.Cache.MemberCache.ETS.update/2","ref":"Nostrum.Cache.MemberCache.ETS.html#update/2"},{"type":"function","doc":"Wrap QLC operations.","title":"Nostrum.Cache.MemberCache.ETS.wrap_qlc/1","ref":"Nostrum.Cache.MemberCache.ETS.html#wrap_qlc/1"},{"type":"function","doc":"Any QLC operations are surrounded by `:ets.safe_fixtable`. It is therefore\nrecommended to finish your read quickly.","title":"Safety {: .note} - Nostrum.Cache.MemberCache.ETS.wrap_qlc/1","ref":"Nostrum.Cache.MemberCache.ETS.html#wrap_qlc/1-safety-note"},{"type":"module","doc":"An Mnesia-based cache for guild members.\n\nPlease note that this module is only compiled if Mnesia is available on\nyour system. See the Mnesia section of the [State](functionality/state.md)\ndocumentation for more information.\n\nTo retrieve the table name used by this cache, use `table/0`.","title":"Nostrum.Cache.MemberCache.Mnesia","ref":"Nostrum.Cache.MemberCache.Mnesia.html"},{"type":"function","doc":"Bulk create a chunk of members for the given guild in the cache.","title":"Nostrum.Cache.MemberCache.Mnesia.bulk_create/2","ref":"Nostrum.Cache.MemberCache.Mnesia.html#bulk_create/2"},{"type":"function","doc":"Returns a specification to start this module under a supervisor.\n\nSee `Supervisor`.","title":"Nostrum.Cache.MemberCache.Mnesia.child_spec/1","ref":"Nostrum.Cache.MemberCache.Mnesia.html#child_spec/1"},{"type":"function","doc":"Clear any objects in the cache.","title":"Nostrum.Cache.MemberCache.Mnesia.clear/0","ref":"Nostrum.Cache.MemberCache.Mnesia.html#clear/0"},{"type":"function","doc":"Add the given member to the given guild in the cache.","title":"Nostrum.Cache.MemberCache.Mnesia.create/2","ref":"Nostrum.Cache.MemberCache.Mnesia.html#create/2"},{"type":"function","doc":"Remove the given member from the given guild in the cache.","title":"Nostrum.Cache.MemberCache.Mnesia.delete/2","ref":"Nostrum.Cache.MemberCache.Mnesia.html#delete/2"},{"type":"function","doc":"Set up the cache's Mnesia table.","title":"Nostrum.Cache.MemberCache.Mnesia.init/1","ref":"Nostrum.Cache.MemberCache.Mnesia.html#init/1"},{"type":"function","doc":"Get a QLC query handle for the member cache.","title":"Nostrum.Cache.MemberCache.Mnesia.query_handle/0","ref":"Nostrum.Cache.MemberCache.Mnesia.html#query_handle/0"},{"type":"function","doc":"Start the supervisor.","title":"Nostrum.Cache.MemberCache.Mnesia.start_link/1","ref":"Nostrum.Cache.MemberCache.Mnesia.html#start_link/1"},{"type":"function","doc":"Retrieve the Mnesia table name used for the cache.","title":"Nostrum.Cache.MemberCache.Mnesia.table/0","ref":"Nostrum.Cache.MemberCache.Mnesia.html#table/0"},{"type":"function","doc":"Drop the table used for caching.","title":"Nostrum.Cache.MemberCache.Mnesia.teardown/0","ref":"Nostrum.Cache.MemberCache.Mnesia.html#teardown/0"},{"type":"function","doc":"Update the given member for the given guild in the cache.","title":"Nostrum.Cache.MemberCache.Mnesia.update/2","ref":"Nostrum.Cache.MemberCache.Mnesia.html#update/2"},{"type":"function","doc":"Wrap QLC operations in a transaction.","title":"Nostrum.Cache.MemberCache.Mnesia.wrap_qlc/1","ref":"Nostrum.Cache.MemberCache.Mnesia.html#wrap_qlc/1"},{"type":"module","doc":"A NoOp implementation for the MemberCache\n\nThis cache does nothing, enable it if you dont need to cache members","title":"Nostrum.Cache.MemberCache.NoOp","ref":"Nostrum.Cache.MemberCache.NoOp.html"},{"type":"function","doc":"Returns a specification to start this module under a supervisor.\n\nSee `Supervisor`.","title":"Nostrum.Cache.MemberCache.NoOp.child_spec/1","ref":"Nostrum.Cache.MemberCache.NoOp.html#child_spec/1"},{"type":"function","doc":"Start the supervisor.","title":"Nostrum.Cache.MemberCache.NoOp.start_link/1","ref":"Nostrum.Cache.MemberCache.NoOp.html#start_link/1"},{"type":"module","doc":"ETS-based cache for user presences.\n\nIf you need to get the table reference for the table used by this module,\nplease use the `table/0` function.","title":"Nostrum.Cache.PresenceCache.ETS","ref":"Nostrum.Cache.PresenceCache.ETS.html"},{"type":"function","doc":"Bulk create multiple presences in the cache.","title":"Nostrum.Cache.PresenceCache.ETS.bulk_create/2","ref":"Nostrum.Cache.PresenceCache.ETS.html#bulk_create/2"},{"type":"function","doc":"Returns a specification to start this module under a supervisor.\n\nSee `Supervisor`.","title":"Nostrum.Cache.PresenceCache.ETS.child_spec/1","ref":"Nostrum.Cache.PresenceCache.ETS.html#child_spec/1"},{"type":"function","doc":"Add the given presence data to the cache.","title":"Nostrum.Cache.PresenceCache.ETS.create/1","ref":"Nostrum.Cache.PresenceCache.ETS.html#create/1"},{"type":"function","doc":"Set up the cache's ETS table.","title":"Nostrum.Cache.PresenceCache.ETS.init/1","ref":"Nostrum.Cache.PresenceCache.ETS.html#init/1"},{"type":"function","doc":"Retrieve a query handle for QLC queries.","title":"Nostrum.Cache.PresenceCache.ETS.query_handle/0","ref":"Nostrum.Cache.PresenceCache.ETS.html#query_handle/0"},{"type":"function","doc":"Start the supervisor.","title":"Nostrum.Cache.PresenceCache.ETS.start_link/1","ref":"Nostrum.Cache.PresenceCache.ETS.html#start_link/1"},{"type":"function","doc":"Retrieve the ETS table reference used for the cache.","title":"Nostrum.Cache.PresenceCache.ETS.table/0","ref":"Nostrum.Cache.PresenceCache.ETS.html#table/0"},{"type":"function","doc":"Update the given presence data in the cache.","title":"Nostrum.Cache.PresenceCache.ETS.update/1","ref":"Nostrum.Cache.PresenceCache.ETS.html#update/1"},{"type":"module","doc":"An Mnesia-based cache for presences.\n\nPlease note that this module is only compiled if Mnesia is available on\nyour system. See the Mnesia section of the [State](functionality/state.md)\ndocumentation for more information.\n\nTo retrieve the table name used by this cache, use `table/0`.","title":"Nostrum.Cache.PresenceCache.Mnesia","ref":"Nostrum.Cache.PresenceCache.Mnesia.html"},{"type":"function","doc":"Bulk create a chunk of presences for the given guild in the cache.","title":"Nostrum.Cache.PresenceCache.Mnesia.bulk_create/2","ref":"Nostrum.Cache.PresenceCache.Mnesia.html#bulk_create/2"},{"type":"function","doc":"Returns a specification to start this module under a supervisor.\n\nSee `Supervisor`.","title":"Nostrum.Cache.PresenceCache.Mnesia.child_spec/1","ref":"Nostrum.Cache.PresenceCache.Mnesia.html#child_spec/1"},{"type":"function","doc":"Clear any objects in the cache.","title":"Nostrum.Cache.PresenceCache.Mnesia.clear/0","ref":"Nostrum.Cache.PresenceCache.Mnesia.html#clear/0"},{"type":"function","doc":"Add the given presence to the cache.","title":"Nostrum.Cache.PresenceCache.Mnesia.create/1","ref":"Nostrum.Cache.PresenceCache.Mnesia.html#create/1"},{"type":"function","doc":"Set up the cache's Mnesia table.","title":"Nostrum.Cache.PresenceCache.Mnesia.init/1","ref":"Nostrum.Cache.PresenceCache.Mnesia.html#init/1"},{"type":"function","doc":"Retrieve a query handle for the table.","title":"Nostrum.Cache.PresenceCache.Mnesia.query_handle/0","ref":"Nostrum.Cache.PresenceCache.Mnesia.html#query_handle/0"},{"type":"function","doc":"Start the supervisor.","title":"Nostrum.Cache.PresenceCache.Mnesia.start_link/1","ref":"Nostrum.Cache.PresenceCache.Mnesia.html#start_link/1"},{"type":"function","doc":"Retrieve the table name used by the cache.","title":"Nostrum.Cache.PresenceCache.Mnesia.table/0","ref":"Nostrum.Cache.PresenceCache.Mnesia.html#table/0"},{"type":"function","doc":"Drop the table used for caching.","title":"Nostrum.Cache.PresenceCache.Mnesia.teardown/0","ref":"Nostrum.Cache.PresenceCache.Mnesia.html#teardown/0"},{"type":"function","doc":"Update the given presence in the cache.","title":"Nostrum.Cache.PresenceCache.Mnesia.update/1","ref":"Nostrum.Cache.PresenceCache.Mnesia.html#update/1"},{"type":"function","doc":"Wrap QLC operations in a transaction.","title":"Nostrum.Cache.PresenceCache.Mnesia.wrap_qlc/1","ref":"Nostrum.Cache.PresenceCache.Mnesia.html#wrap_qlc/1"},{"type":"module","doc":"A cache module that does not cache anything.\n\nUseful for bots that do not need presence caching.","title":"Nostrum.Cache.PresenceCache.NoOp","ref":"Nostrum.Cache.PresenceCache.NoOp.html"},{"type":"function","doc":"Returns a specification to start this module under a supervisor.\n\nSee `Supervisor`.","title":"Nostrum.Cache.PresenceCache.NoOp.child_spec/1","ref":"Nostrum.Cache.PresenceCache.NoOp.html#child_spec/1"},{"type":"function","doc":"Start up the cache supervisor.","title":"Nostrum.Cache.PresenceCache.NoOp.init/1","ref":"Nostrum.Cache.PresenceCache.NoOp.html#init/1"},{"type":"function","doc":"Start the supervisor.","title":"Nostrum.Cache.PresenceCache.NoOp.start_link/1","ref":"Nostrum.Cache.PresenceCache.NoOp.html#start_link/1"},{"type":"module","doc":"An ETS-based cache for users.\n\nIf you need to get the table reference for the table used by this module,\nplease use the `table/0` function.","title":"Nostrum.Cache.UserCache.ETS","ref":"Nostrum.Cache.UserCache.ETS.html"},{"type":"function","doc":"Bulk create a list of users from upstream data.","title":"Nostrum.Cache.UserCache.ETS.bulk_create/1","ref":"Nostrum.Cache.UserCache.ETS.html#bulk_create/1"},{"type":"function","doc":"Returns a specification to start this module under a supervisor.\n\nSee `Supervisor`.","title":"Nostrum.Cache.UserCache.ETS.child_spec/1","ref":"Nostrum.Cache.UserCache.ETS.html#child_spec/1"},{"type":"function","doc":"Create a user from upstream data.","title":"Nostrum.Cache.UserCache.ETS.create/1","ref":"Nostrum.Cache.UserCache.ETS.html#create/1"},{"type":"function","doc":"Set up the ETS table.","title":"Nostrum.Cache.UserCache.ETS.init/1","ref":"Nostrum.Cache.UserCache.ETS.html#init/1"},{"type":"function","doc":"Get a QLC query handle for the user cache.","title":"Nostrum.Cache.UserCache.ETS.query_handle/0","ref":"Nostrum.Cache.UserCache.ETS.html#query_handle/0"},{"type":"function","doc":"Start the supervisor.","title":"Nostrum.Cache.UserCache.ETS.start_link/1","ref":"Nostrum.Cache.UserCache.ETS.html#start_link/1"},{"type":"function","doc":"Retrieve the ETS table reference used for the cache.","title":"Nostrum.Cache.UserCache.ETS.table/0","ref":"Nostrum.Cache.UserCache.ETS.html#table/0"},{"type":"function","doc":"Update a user from upstream data.","title":"Nostrum.Cache.UserCache.ETS.update/1","ref":"Nostrum.Cache.UserCache.ETS.html#update/1"},{"type":"module","doc":"An Mnesia-based cache for users.\n\nPlease note that this module is only compiled if Mnesia is available on\nyour system. See the Mnesia section of the [State](functionality/state.md)\ndocumentation for more information.\n\nTo retrieve the table name used by this cache, use `table/0`.","title":"Nostrum.Cache.UserCache.Mnesia","ref":"Nostrum.Cache.UserCache.Mnesia.html"},{"type":"function","doc":"Bulk create a chunk of users in the cache.","title":"Nostrum.Cache.UserCache.Mnesia.bulk_create/1","ref":"Nostrum.Cache.UserCache.Mnesia.html#bulk_create/1"},{"type":"function","doc":"Returns a specification to start this module under a supervisor.\n\nSee `Supervisor`.","title":"Nostrum.Cache.UserCache.Mnesia.child_spec/1","ref":"Nostrum.Cache.UserCache.Mnesia.html#child_spec/1"},{"type":"function","doc":"Clear any objects in the cache.","title":"Nostrum.Cache.UserCache.Mnesia.clear/0","ref":"Nostrum.Cache.UserCache.Mnesia.html#clear/0"},{"type":"function","doc":"Create a user from upstream data.","title":"Nostrum.Cache.UserCache.Mnesia.create/1","ref":"Nostrum.Cache.UserCache.Mnesia.html#create/1"},{"type":"function","doc":"Remove the given user from cache.","title":"Nostrum.Cache.UserCache.Mnesia.delete/1","ref":"Nostrum.Cache.UserCache.Mnesia.html#delete/1"},{"type":"function","doc":"Set up the cache's Mnesia table.","title":"Nostrum.Cache.UserCache.Mnesia.init/1","ref":"Nostrum.Cache.UserCache.Mnesia.html#init/1"},{"type":"function","doc":"Get a QLC query handle for the user cache.","title":"Nostrum.Cache.UserCache.Mnesia.query_handle/0","ref":"Nostrum.Cache.UserCache.Mnesia.html#query_handle/0"},{"type":"function","doc":"Start the supervisor.","title":"Nostrum.Cache.UserCache.Mnesia.start_link/1","ref":"Nostrum.Cache.UserCache.Mnesia.html#start_link/1"},{"type":"function","doc":"Retrieve the Mnesia table name used for the cache.","title":"Nostrum.Cache.UserCache.Mnesia.table/0","ref":"Nostrum.Cache.UserCache.Mnesia.html#table/0"},{"type":"function","doc":"Drop the table used for caching.","title":"Nostrum.Cache.UserCache.Mnesia.teardown/0","ref":"Nostrum.Cache.UserCache.Mnesia.html#teardown/0"},{"type":"function","doc":"Update a User if it exists in the cache.","title":"Nostrum.Cache.UserCache.Mnesia.update/1","ref":"Nostrum.Cache.UserCache.Mnesia.html#update/1"},{"type":"function","doc":"Wrap QLC operations in a transaction.","title":"Nostrum.Cache.UserCache.Mnesia.wrap_qlc/1","ref":"Nostrum.Cache.UserCache.Mnesia.html#wrap_qlc/1"},{"type":"module","doc":"A NoOp implementation for the UserCache\n\nThis cache does nothing, enable it if you dont need to cache users","title":"Nostrum.Cache.UserCache.NoOp","ref":"Nostrum.Cache.UserCache.NoOp.html"},{"type":"function","doc":"Returns a specification to start this module under a supervisor.\n\nSee `Supervisor`.","title":"Nostrum.Cache.UserCache.NoOp.child_spec/1","ref":"Nostrum.Cache.UserCache.NoOp.html#child_spec/1"},{"type":"function","doc":"Start the supervisor.","title":"Nostrum.Cache.UserCache.NoOp.start_link/1","ref":"Nostrum.Cache.UserCache.NoOp.html#start_link/1"},{"type":"module","doc":"Maintains a mapping of guild IDs to their shard numbers using `:ets`.\n\nIf programmatic access to the ETS table is needed, please use the `table/0`\nfunction.\n\nPlease do not use this module directly, apart from special functions such as\n`table/0`. Use `Nostrum.Store.GuildShardMapping` to call the configured\nmapping instead.","title":"Nostrum.Store.GuildShardMapping.ETS","ref":"Nostrum.Store.GuildShardMapping.ETS.html"},{"type":"function","doc":"Returns a specification to start this module under a supervisor.\n\nSee `Supervisor`.","title":"Nostrum.Store.GuildShardMapping.ETS.child_spec/1","ref":"Nostrum.Store.GuildShardMapping.ETS.html#child_spec/1"},{"type":"function","doc":"Create a new mapping for the given guild ID to the given shard ID.","title":"Nostrum.Store.GuildShardMapping.ETS.create/2","ref":"Nostrum.Store.GuildShardMapping.ETS.html#create/2"},{"type":"function","doc":"Delete any stored mapping for the given guild ID.","title":"Nostrum.Store.GuildShardMapping.ETS.delete/1","ref":"Nostrum.Store.GuildShardMapping.ETS.html#delete/1"},{"type":"function","doc":"Get the shard number for the given guild ID.","title":"Nostrum.Store.GuildShardMapping.ETS.get/1","ref":"Nostrum.Store.GuildShardMapping.ETS.html#get/1"},{"type":"function","doc":"Set up the store's ETS table.","title":"Nostrum.Store.GuildShardMapping.ETS.init/1","ref":"Nostrum.Store.GuildShardMapping.ETS.html#init/1"},{"type":"function","doc":"Start the supervisor.","title":"Nostrum.Store.GuildShardMapping.ETS.start_link/1","ref":"Nostrum.Store.GuildShardMapping.ETS.html#start_link/1"},{"type":"function","doc":"Retrieve the ETS table reference used for the store.","title":"Nostrum.Store.GuildShardMapping.ETS.table/0","ref":"Nostrum.Store.GuildShardMapping.ETS.html#table/0"},{"type":"module","doc":"Maintains a mapping of guild IDs to their shard numbers using Mnesia.\n\nPlease note that this module is only compiled if Mnesia is available on\nyour system. See the Mnesia section of the [State](functionality/state.md)\ndocumentation for more information.\n\nTo retrieve the table name used by this cache, use `table/0`.","title":"Nostrum.Store.GuildShardMapping.Mnesia","ref":"Nostrum.Store.GuildShardMapping.Mnesia.html"},{"type":"function","doc":"Returns a specification to start this module under a supervisor.\n\nSee `Supervisor`.","title":"Nostrum.Store.GuildShardMapping.Mnesia.child_spec/1","ref":"Nostrum.Store.GuildShardMapping.Mnesia.html#child_spec/1"},{"type":"function","doc":"Create a new mapping for the given guild ID to the given shard ID.","title":"Nostrum.Store.GuildShardMapping.Mnesia.create/2","ref":"Nostrum.Store.GuildShardMapping.Mnesia.html#create/2"},{"type":"function","doc":"Delete any stored mapping for the given guild ID.","title":"Nostrum.Store.GuildShardMapping.Mnesia.delete/1","ref":"Nostrum.Store.GuildShardMapping.Mnesia.html#delete/1"},{"type":"function","doc":"Get the shard number for the given guild ID.","title":"Nostrum.Store.GuildShardMapping.Mnesia.get/1","ref":"Nostrum.Store.GuildShardMapping.Mnesia.html#get/1"},{"type":"function","doc":"Set up the store's Mnesia table.","title":"Nostrum.Store.GuildShardMapping.Mnesia.init/1","ref":"Nostrum.Store.GuildShardMapping.Mnesia.html#init/1"},{"type":"function","doc":"Start the supervisor.","title":"Nostrum.Store.GuildShardMapping.Mnesia.start_link/1","ref":"Nostrum.Store.GuildShardMapping.Mnesia.html#start_link/1"},{"type":"function","doc":"Retrieve the Mnesia table name used for the store.","title":"Nostrum.Store.GuildShardMapping.Mnesia.table/0","ref":"Nostrum.Store.GuildShardMapping.Mnesia.html#table/0"},{"type":"function","doc":"Drop the table used for the store.","title":"Nostrum.Store.GuildShardMapping.Mnesia.teardown/0","ref":"Nostrum.Store.GuildShardMapping.Mnesia.html#teardown/0"},{"type":"module","doc":"Stores guilds that are currently unavailable using `:ets`.\n\nIf programmatic access to the ETS table is needed, please use the `table/0`\nfunction.\n\nPlease do not use this module directly, apart from special functions such as\n`tabname/0`. Use `Nostrum.Store.UnavailableGuild` to call the configured\nmapping instead.","title":"Nostrum.Store.UnavailableGuild.ETS","ref":"Nostrum.Store.UnavailableGuild.ETS.html"},{"type":"function","doc":"Returns a specification to start this module under a supervisor.\n\nSee `Supervisor`.","title":"Nostrum.Store.UnavailableGuild.ETS.child_spec/1","ref":"Nostrum.Store.UnavailableGuild.ETS.html#child_spec/1"},{"type":"function","doc":"Create the given guild as an unavailable guild.","title":"Nostrum.Store.UnavailableGuild.ETS.create/1","ref":"Nostrum.Store.UnavailableGuild.ETS.html#create/1"},{"type":"function","doc":"Set up the store's ETS table.","title":"Nostrum.Store.UnavailableGuild.ETS.init/1","ref":"Nostrum.Store.UnavailableGuild.ETS.html#init/1"},{"type":"function","doc":"Return whether the given guild is unavailable.","title":"Nostrum.Store.UnavailableGuild.ETS.is?/1","ref":"Nostrum.Store.UnavailableGuild.ETS.html#is?/1"},{"type":"function","doc":"Start the supervisor.","title":"Nostrum.Store.UnavailableGuild.ETS.start_link/1","ref":"Nostrum.Store.UnavailableGuild.ETS.html#start_link/1"},{"type":"function","doc":"Retrieve the ETS table reference used for the store.","title":"Nostrum.Store.UnavailableGuild.ETS.table/0","ref":"Nostrum.Store.UnavailableGuild.ETS.html#table/0"},{"type":"module","doc":"Keeps track of unavailable guilds.\n\nPlease note that this module is only compiled if Mnesia is available on\nyour system. See the Mnesia section of the [State](functionality/state.md)\ndocumentation for more information.\n\nTo retrieve the table name used by this cache, use `table/0`.","title":"Nostrum.Store.UnavailableGuild.Mnesia","ref":"Nostrum.Store.UnavailableGuild.Mnesia.html"},{"type":"function","doc":"Returns a specification to start this module under a supervisor.\n\nSee `Supervisor`.","title":"Nostrum.Store.UnavailableGuild.Mnesia.child_spec/1","ref":"Nostrum.Store.UnavailableGuild.Mnesia.html#child_spec/1"},{"type":"function","doc":"Create the given guild as an unavailable guild.","title":"Nostrum.Store.UnavailableGuild.Mnesia.create/1","ref":"Nostrum.Store.UnavailableGuild.Mnesia.html#create/1"},{"type":"function","doc":"Set up the store's Mnesia table.","title":"Nostrum.Store.UnavailableGuild.Mnesia.init/1","ref":"Nostrum.Store.UnavailableGuild.Mnesia.html#init/1"},{"type":"function","doc":"Return whether the given guild is unavailable.","title":"Nostrum.Store.UnavailableGuild.Mnesia.is?/1","ref":"Nostrum.Store.UnavailableGuild.Mnesia.html#is?/1"},{"type":"function","doc":"Start the supervisor.","title":"Nostrum.Store.UnavailableGuild.Mnesia.start_link/1","ref":"Nostrum.Store.UnavailableGuild.Mnesia.html#start_link/1"},{"type":"function","doc":"Retrieve the Mnesia table name used for the store.","title":"Nostrum.Store.UnavailableGuild.Mnesia.table/0","ref":"Nostrum.Store.UnavailableGuild.Mnesia.html#table/0"},{"type":"function","doc":"Drop the table used for the store.","title":"Nostrum.Store.UnavailableGuild.Mnesia.teardown/0","ref":"Nostrum.Store.UnavailableGuild.Mnesia.html#teardown/0"},{"type":"module","doc":"Handles REST calls to the Discord API while respecting ratelimits.","title":"Nostrum.Api.Ratelimiter","ref":"Nostrum.Api.Ratelimiter.html"},{"type":"module","doc":"Discord's API returns information about ratelimits that we must respect. This\nmodule performs serialization of these requests through a single process,\nthus preventing concurrency issues from arising if two processes make a\nremote API call at the same time.\n\n\n>","title":"Purpose - Nostrum.Api.Ratelimiter","ref":"Nostrum.Api.Ratelimiter.html#module-purpose"},{"type":"module","doc":">\n> This module is intended for exclusive usage inside of nostrum, and is\n> documented for completeness and people curious to look behind the covers.","title":"Internal module {: .info} - Nostrum.Api.Ratelimiter","ref":"Nostrum.Api.Ratelimiter.html#module-internal-module-info"},{"type":"module","doc":"The ratelimiter is fully asynchronous internally. In theory, it also supports\nqueueing requests in an asynchronous manner. However, support for this is\ncurrently not implemented in `Nostrum.Api`.\n\nIf you want to make one or multiple asynchronous requests manually, you can\nuse the following pattern:\n\n```elixir\nreq = :gen_statem.send_request(Nostrum.Api.Ratelimiter, {:queue, request})\n# ...\nresponse = :gen_statem.receive_response(req, timeout)\n```\n\nwhere `request` is a map describing the request to run - see `Nostrum.Api`\nfor more information. You can also send multiple requests at the same time\nand wait for their response: see `:gen_statem.reqids_add/3` and\n`:gen_statem.wait_response/3` for more information.","title":"Asynchronous requests - Nostrum.Api.Ratelimiter","ref":"Nostrum.Api.Ratelimiter.html#module-asynchronous-requests"},{"type":"module","doc":"If a single global process is desired to handle all ratelimiting, the\nratelimiter can theoretically be adjusted to start registered via `:global`.\nIn practice, it may be more beneficial to have a local ratelimiter process on\neach node and either using the local one for any API calls, or using a\nconsistent hash mechanism to distribute API requests around the cluster as\nneeded. **Do note that the API enforces a global user ratelimit across all\nrequests**. With a single process, the ratelimiter can track this without\nhitting 429s at all, with multiple ratelimiters, the built-in requeue\nfunctionality may or may not help.","title":"Multi-node - Nostrum.Api.Ratelimiter","ref":"Nostrum.Api.Ratelimiter.html#module-multi-node"},{"type":"module","doc":"When a client process wants to perform some request on the Discord API, it\nsends a request to the `:gen_statem` behind this module to ask it to `:queue`\nthe incoming request.","title":"Inner workings - Nostrum.Api.Ratelimiter","ref":"Nostrum.Api.Ratelimiter.html#module-inner-workings"},{"type":"module","doc":"If the state machine is not connected to the HTTP endpoint, it will\ntransition to the `:connecting` state and try to open the connection. If this\nsucceeds, it transitions to the `:connected` state.","title":"Connection setup - Nostrum.Api.Ratelimiter","ref":"Nostrum.Api.Ratelimiter.html#module-connection-setup"},{"type":"module","doc":"The state machine associates a `t::queue.queue/1` of `t:queued_request/0` to\neach individual bucket, together with an internal count of remaining calls.\nWhen queueing requests, the following cases occur:\n\n- If there are no remaining calls in the bot's global ratelimit bucket or\nthere are no remaining calls in the bucket, the request is put into the\nbucket's queue.\n\n- If there is an `:initial` running request to the bucket, the request is put\ninto the bucket's queue.\n\n- If there are more than 0 remaining calls on both the request-specific\nbucket and the global bucket, the request is started right away. This allows\nnostrum to dispatch multiple requests to the same endpoint as soon as\npossible as long as calls remain.\n\n- If no ratelimit information is known for the bucket and remaining calls on\nthe global bucket, the request is sent out as the \"pioneer\" request that will\nretrieve how many calls we have for this bucket (`:initial`, see above).\n\n- If none of the above is true, a new queue is created and the pending\nrqeuest marked as the `:initial` request. It will be run as soon as the bot's\nglobal limit limit expires.\n\nThe request starting function, `:next`, will start new requests from the\nqueue as long as more calls are possible in the timeframe. Any requests are\nthen started asynchronously. Bookkeeping is set up to associate the resulting\n`t::gun.stream_ref/0` with the original client along with its request and the\nratelimiter bucket.\n\nResults from the HTTP connection are delivered non-blocking: simple responses\nwith purely status codes and no body (code `204`) will be sent in a single\nmessage, other requests will be sent to us incrementally. To finally deliver\nthe full response body to the client with the final package, an internal\nbuffer of the body is kept. A possible future optimization could be having a\nway for `:gun` to only send the ratelimiter state machine the initial\n`:gun_response` and forward any item of the body directly to the client.\n\nWhen the headers for a request have been received, the ratelimiter parses the\nratelimit information and starts off an internal timer expiring when the\nratelimits expire. It will also reschedule calls with the `:next` internal\nevent for as many remaining calls as it knows about. Once the timer expires\nfor the current bucket, two cases can happen:\n\n- The queue has items: Schedule all items and repeat this later.\n\n- The queue is empty: Delete the queue and remaining calls from the\noutstanding buckets.\n\nIn practice, this means that we never store more information than we need,\nand removes the previous regular bucket sweeping functionality that the\nratelimit buckets required.\n\n**Global ratelimits** (note this is a distinct ratelimit from the bot's\n\"global\", per-user ratelimit) are handled with the special `global_limit`\nstate. This state is entered for exactly the the `X-Ratelimit-Reset-After`\ntime provided in the global ratelimit response. This state does nothing apart\nfrom postponing any events it receives and returning to the previous state\n(`:connected`) once the global timeout is gone. Requests that failed because\nof the global ratelimit are requeued after returning back into the regular\nstate: a warning is logged to inform you of this.","title":"Queueing requests - Nostrum.Api.Ratelimiter","ref":"Nostrum.Api.Ratelimiter.html#module-queueing-requests"},{"type":"module","doc":"#### HTTP connection death\n\nIf the HTTP connection dies, the ratelimiter will inform each affected client\nby replying with `{:error, {:connection_died, reason}}`, where `reason` is\nthe reason as provided by the `:gun_down` event. It will then transition to\n`:disconnected` state. If no requests were running at time the connection was\nshut down - for instance, because we simply reached the maximum idle time on\nthe HTTP/2 connection - we will simply move on.\n\n#### Upstream errors\n\nThe ratelimiter works by queueing requests aggressively as soon as it has\nratelimit information to do so. If no ratelimit information is available, for\ninstance, because Discord returned us a 502 status code, the ratelimiter will\nnot automatically kick the queue to start further running requests.\n\n#### Other internal issues\n\nAny other internal problems that are not handled appropriately in the\nratelimiter will crash it, effectively resulting in the complete loss of any\nqueued requests.","title":"Failure modes - Nostrum.Api.Ratelimiter","ref":"Nostrum.Api.Ratelimiter.html#module-failure-modes"},{"type":"module","doc":"#### A history of ratelimiting\n\nFirst, it is important to give a short history of nostrum's ratelimiting: pre\n`0.8`, nostrum used to use a `GenServer` that would call out to ETS tables to\nlook up ratelimiting buckets for requests. If it needed to sleep before\nissuing a request due to the bucket being exhausted, it would do so in the\nserver process and block other callers.\n\nIn nostrum 0.8, the existing ratelimiter bucket storage architecture was\nrefactored to be based around the [pluggable caching\nfunctionality](../advanced/pluggable_caching.md), and buckets with no\nremaining calls were adjusted to be slept out on the client-side by having\nthe `GenServer` respond to the client with `{:error, {:retry_after, millis}}`\nand the client trying again and again to schedule its requests. This allowed\nusers to distribute their ratelimit buckets around however they wish, out of\nthe box, nostrum shipped with an ETS and a Mnesia-based ratelimit bucket\nstore.\n\n\n#### Problems we solved\n\nThe approach above still came with a few problems:\n\n- Requests were still being done synchronously in the ratelimiter, and it was\nblocked from anything else whilst running the requests, even though we are\ntheoretically free to start requests for other buckets while one is still\nrunning.\n\n- The ratelimiter itself was half working on its own, but half required the\nexternal storage mechanisms, which made the code hard to follow and required\nregular automatic pruning because the store had no idea when a bucket was no\nlonger relevant on its own.\n\n- Requests would not be pipelined to run as soon as ideally possible.\n\n- The ratelimiter did not inform clients if their request died in-flight.\n\n- If the client disconnected before we returned the response, we had to\nhandle this explicitly via `handle_info`.\n\nThe new state machine-based ratelimiter solves these problems.","title":"Implementation benefits & drawbacks - Nostrum.Api.Ratelimiter","ref":"Nostrum.Api.Ratelimiter.html#module-implementation-benefits-drawbacks"},{"type":"function","doc":"","title":"Nostrum.Api.Ratelimiter.callback_mode/0","ref":"Nostrum.Api.Ratelimiter.html#callback_mode/0"},{"type":"function","doc":"","title":"Nostrum.Api.Ratelimiter.child_spec/1","ref":"Nostrum.Api.Ratelimiter.html#child_spec/1"},{"type":"function","doc":"","title":"Nostrum.Api.Ratelimiter.code_change/4","ref":"Nostrum.Api.Ratelimiter.html#code_change/4"},{"type":"function","doc":"","title":"Nostrum.Api.Ratelimiter.connected/3","ref":"Nostrum.Api.Ratelimiter.html#connected/3"},{"type":"function","doc":"","title":"Nostrum.Api.Ratelimiter.connecting/3","ref":"Nostrum.Api.Ratelimiter.html#connecting/3"},{"type":"function","doc":"","title":"Nostrum.Api.Ratelimiter.disconnected/3","ref":"Nostrum.Api.Ratelimiter.html#disconnected/3"},{"type":"function","doc":"Retrieves a proper ratelimit endpoint from a given route and url.","title":"Nostrum.Api.Ratelimiter.get_endpoint/2","ref":"Nostrum.Api.Ratelimiter.html#get_endpoint/2"},{"type":"function","doc":"","title":"Nostrum.Api.Ratelimiter.global_limit/3","ref":"Nostrum.Api.Ratelimiter.html#global_limit/3"},{"type":"function","doc":"","title":"Nostrum.Api.Ratelimiter.init/1","ref":"Nostrum.Api.Ratelimiter.html#init/1"},{"type":"function","doc":"Queue the given request and wait for the response synchronously.\n\nRatelimits on the endpoint are handled by the ratelimiter. Global ratelimits\nwill cause this to return an error.","title":"Nostrum.Api.Ratelimiter.queue/1","ref":"Nostrum.Api.Ratelimiter.html#queue/1"},{"type":"function","doc":"Starts the ratelimiter.","title":"Nostrum.Api.Ratelimiter.start_link/1","ref":"Nostrum.Api.Ratelimiter.html#start_link/1"},{"type":"type","doc":"A bucket for endpoints unter the same ratelimit.","title":"Nostrum.Api.Ratelimiter.bucket/0","ref":"Nostrum.Api.Ratelimiter.html#t:bucket/0"},{"type":"type","doc":"A bucket-specific request waiting to be queued, alongside its client.","title":"Nostrum.Api.Ratelimiter.queued_request/0","ref":"Nostrum.Api.Ratelimiter.html#t:queued_request/0"},{"type":"type","doc":"Remaining calls on a route, as provided by the API response.\n\nThe ratelimiter internally counts the remaining calls per route to dispatch\nnew requests as soon as it's capable of doing so, but this is only possible\nif the API already provided us with ratelimit information for an endpoint.\n\nTherefore, if the initial call on an endpoint is made, the special `:initial`\nvalue is specified. This is used by the limit parsing function to set the\nremaining calls if and only if it is the response for the initial call -\notherwise, the value won't represent the truth anymore.","title":"Nostrum.Api.Ratelimiter.remaining/0","ref":"Nostrum.Api.Ratelimiter.html#t:remaining/0"},{"type":"type","doc":"A request to make in the ratelimiter.","title":"Nostrum.Api.Ratelimiter.request/0","ref":"Nostrum.Api.Ratelimiter.html#t:request/0"},{"type":"type","doc":"The state of the ratelimiter.\n\nWhile this has no public use, it is still documented here to provide help\nwhen tracing the ratelimiter via `:sys.trace/2` or other means.","title":"Nostrum.Api.Ratelimiter.state/0","ref":"Nostrum.Api.Ratelimiter.html#t:state/0"},{"type":"type","doc":"- `:outstanding`: Outstanding (unqueued) requests per bucket alongside with\nthe remaining calls that may be made on said bucket.\n\n- `:running`: Requests that have been sent off. Used to associate back the\nclient with a request when the response comes in.\n\n- `:inflight`: Requests for which we have started getting a response, but we\nhave not fully received it yet. For responses that have a body, this will\nbuffer their body until we can send it back to the client.\n\n- `:conn`: The `:gun` connection backing the server. Used for making new\nrequests, and updated as the state changes.\n\n- `:remaining_in_window`: How many calls we may still make to the API during\nthis time window. Reset automatically via timeouts.\n\n- `:wrapped_token`: An anonymous function that is internally used to retrieve\nthe token. This is wrapped to ensure that it is not accidentally exposed in\nstacktraces.","title":"Fields - Nostrum.Api.Ratelimiter.state/0","ref":"Nostrum.Api.Ratelimiter.html#t:state/0-fields"},{"type":"module","doc":"Manages a single shard's gateway connection.","title":"Nostrum.Shard.Session","ref":"Nostrum.Shard.Session.html"},{"type":"module","doc":"Discord's gateway sends us events over websocket. The shard session state\nmachine concerns it self with parsing these events and dispatching them to\nclients as appropriate.\n\n\n>","title":"Purpose - Nostrum.Shard.Session","ref":"Nostrum.Shard.Session.html#module-purpose"},{"type":"module","doc":">\n> This module is intended for exclusive usage inside of nostrum, and is\n> documented for completeness and people curious to look behind the covers.","title":"Internal module {: .info} - Nostrum.Shard.Session","ref":"Nostrum.Shard.Session.html#module-internal-module-info"},{"type":"module","doc":"The session is implemented via `:gen_statem` and can be in one of the\nfollowing states:\n\n- `disconnected`: when no connection is up at all. On initial connection of\nthe session (e.g. no `seq` field is available), this will block if we need to\nwait a moment to respect the session startup concurrency limits. Afterwards,\nit will transition to `connecting_http`.\n\n- `connecting_http`: We are setting up a HTTP connection to the API. This\nmeans that no connection was available previously at all, and we need to open\nit from scratch. Used for gateway-initiated reconnect requests (\"Cloudflare\nWebsocket proxy restarting\") and on `:gun_down` notifications for the\nconnection in connected state. Once `:gun` notifies us that the connection is\nup, we transition to the `connecting_ws` state.\n\n- `connecting_ws`: We are turning the HTTP connection into a WebSocket\nconnection. If this succeeds, we head into the `connected` state.\n\n- `connected`: The WebSocket connection is up. This state actively deals with\nnew data from the gateway, and takes care of heartbeating. If Discord fails\nto respond to our heartbeats, we close down the full connection and attempt\nto re-establish and resume events.","title":"Inner workings - Nostrum.Shard.Session","ref":"Nostrum.Shard.Session.html#module-inner-workings"},{"type":"function","doc":"","title":"Nostrum.Shard.Session.callback_mode/0","ref":"Nostrum.Shard.Session.html#callback_mode/0"},{"type":"function","doc":"","title":"Nostrum.Shard.Session.child_spec/1","ref":"Nostrum.Shard.Session.html#child_spec/1"},{"type":"function","doc":"","title":"Nostrum.Shard.Session.connected/3","ref":"Nostrum.Shard.Session.html#connected/3"},{"type":"function","doc":"","title":"Nostrum.Shard.Session.connecting_http/3","ref":"Nostrum.Shard.Session.html#connecting_http/3"},{"type":"function","doc":"","title":"Nostrum.Shard.Session.connecting_ws/3","ref":"Nostrum.Shard.Session.html#connecting_ws/3"},{"type":"function","doc":"","title":"Nostrum.Shard.Session.disconnect/1","ref":"Nostrum.Shard.Session.html#disconnect/1"},{"type":"function","doc":"","title":"Nostrum.Shard.Session.disconnect/2","ref":"Nostrum.Shard.Session.html#disconnect/2"},{"type":"function","doc":"","title":"Nostrum.Shard.Session.disconnected/3","ref":"Nostrum.Shard.Session.html#disconnected/3"},{"type":"function","doc":"","title":"Nostrum.Shard.Session.format_status/1","ref":"Nostrum.Shard.Session.html#format_status/1"},{"type":"function","doc":"","title":"Nostrum.Shard.Session.get_ws_state/1","ref":"Nostrum.Shard.Session.html#get_ws_state/1"},{"type":"function","doc":"","title":"Nostrum.Shard.Session.init/1","ref":"Nostrum.Shard.Session.html#init/1"},{"type":"function","doc":"","title":"Nostrum.Shard.Session.request_guild_members/3","ref":"Nostrum.Shard.Session.html#request_guild_members/3"},{"type":"function","doc":"","title":"Nostrum.Shard.Session.start_link/2","ref":"Nostrum.Shard.Session.html#start_link/2"},{"type":"function","doc":"","title":"Nostrum.Shard.Session.update_status/5","ref":"Nostrum.Shard.Session.html#update_status/5"},{"type":"function","doc":"","title":"Nostrum.Shard.Session.update_voice_state/5","ref":"Nostrum.Shard.Session.html#update_voice_state/5"},{"type":"behaviour","doc":"A behaviour for compression methods supported by the Discord gateway to implement.\n\nSee the modules nested under this behaviour for reference implementations.\n\n>","title":"Nostrum.Shard.Session.Compression","ref":"Nostrum.Shard.Session.Compression.html"},{"type":"behaviour","doc":">\n> This module is intended for exclusive usage inside of nostrum, and is\n> documented for completeness and people curious to look behind the covers.","title":"Internal module {: .info} - Nostrum.Shard.Session.Compression","ref":"Nostrum.Shard.Session.Compression.html#module-internal-module-info"},{"type":"callback","doc":"Create a new compression context that can be passed as an argument to other\nmethods within the behaviour to inflate data or reset the context to a\nblank state.","title":"Nostrum.Shard.Session.Compression.create_context/0","ref":"Nostrum.Shard.Session.Compression.html#c:create_context/0"},{"type":"callback","doc":"Decompress a frame received from Discord over the gateway. Should return an\niolist of the decompressed data.","title":"Nostrum.Shard.Session.Compression.inflate/2","ref":"Nostrum.Shard.Session.Compression.html#c:inflate/2"},{"type":"callback","doc":"Reset a decompression context to a blank slate, this is useful after a websocket\nresume has taken place or something similar requiring the reset of the state\nfor a shard.","title":"Nostrum.Shard.Session.Compression.reset_context/1","ref":"Nostrum.Shard.Session.Compression.html#c:reset_context/1"},{"type":"module","doc":"Implementation of compression methods for the `zlib` compression algorithm.\n\n>","title":"Nostrum.Shard.Session.Compression.Zlib","ref":"Nostrum.Shard.Session.Compression.Zlib.html"},{"type":"module","doc":">\n> This module is intended for exclusive usage inside of nostrum, and is\n> documented for completeness and people curious to look behind the covers.","title":"Internal module {: .info} - Nostrum.Shard.Session.Compression.Zlib","ref":"Nostrum.Shard.Session.Compression.Zlib.html#module-internal-module-info"},{"type":"function","doc":"","title":"Nostrum.Shard.Session.Compression.Zlib.create_context/0","ref":"Nostrum.Shard.Session.Compression.Zlib.html#create_context/0"},{"type":"function","doc":"","title":"Nostrum.Shard.Session.Compression.Zlib.inflate/2","ref":"Nostrum.Shard.Session.Compression.Zlib.html#inflate/2"},{"type":"function","doc":"","title":"Nostrum.Shard.Session.Compression.Zlib.reset_context/1","ref":"Nostrum.Shard.Session.Compression.Zlib.html#reset_context/1"},{"type":"module","doc":"Implementation of compression methods for the `zstd` compression algorithm.\n\n>","title":"Nostrum.Shard.Session.Compression.Zstd","ref":"Nostrum.Shard.Session.Compression.Zstd.html"},{"type":"module","doc":">\n> This module is intended for exclusive usage inside of nostrum, and is\n> documented for completeness and people curious to look behind the covers.","title":"Internal module {: .info} - Nostrum.Shard.Session.Compression.Zstd","ref":"Nostrum.Shard.Session.Compression.Zstd.html#module-internal-module-info"},{"type":"function","doc":"","title":"Nostrum.Shard.Session.Compression.Zstd.check_available!/0","ref":"Nostrum.Shard.Session.Compression.Zstd.html#check_available!/0"},{"type":"function","doc":"","title":"Nostrum.Shard.Session.Compression.Zstd.create_context/0","ref":"Nostrum.Shard.Session.Compression.Zstd.html#create_context/0"},{"type":"function","doc":"","title":"Nostrum.Shard.Session.Compression.Zstd.inflate/2","ref":"Nostrum.Shard.Session.Compression.Zstd.html#inflate/2"},{"type":"function","doc":"","title":"Nostrum.Shard.Session.Compression.Zstd.reset_context/1","ref":"Nostrum.Shard.Session.Compression.Zstd.html#reset_context/1"},{"type":"module","doc":"Supervises shard processes.","title":"Nostrum.Shard.Supervisor","ref":"Nostrum.Shard.Supervisor.html"},{"type":"module","doc":"As events are sent to the shard, the following happens:\n\n1. Shard looks to see what type of event it is, only dispatch events are sent\n to the producer.\n\n2. If the event is a `Dispatch`, the payload is converted to an atom-keyed map.\n This is done because over ETF (which Nostrum uses), map keys are sometimes\n binaries and sometimes strings, making it a real headache. Additionally,\n with atom keys, we can use the `Map.key` notation. This is normally\n considered unsafe but a debug messages will be emitted if a key is unsafely\n converted to an atom. In this way we can ensure that our atom table is not\n growing unbounded.\n\n3. The payload is then written to the cache. To make sure we're not overrunning\n the cache, especially at startup with `request_guild_members` or other heavy\n payloads, this is done in the shard itself.\n\n4. The cache updates itself from the new data. In some cases, such as update or\n delete events, it may send out a second \"old\" object as well, that helps the\n library user to determine what changed.\n\n5. After writing to the cache, the shard `send`s out the event after going\n through the cache to all subscribed processes. In general, the payload will\n often match the payload described by the official Discord API documentation.\n\n6. The shard instructs the websocket client that it's ready to read more data.\n This prevents flooding the shard with messages that it may not be able to\n handle yet, thus growing the message queue and the memory usage.","title":"Implementation - Nostrum.Shard.Supervisor","ref":"Nostrum.Shard.Supervisor.html#module-implementation"},{"type":"function","doc":"Returns a specification to start this module under a supervisor.\n\nSee `Supervisor`.","title":"Nostrum.Shard.Supervisor.child_spec/1","ref":"Nostrum.Shard.Supervisor.html#child_spec/1"},{"type":"function","doc":"Spawns a shard with the specified number and connects it to the discord gateway.","title":"Nostrum.Shard.Supervisor.connect/2","ref":"Nostrum.Shard.Supervisor.html#connect/2"},{"type":"function","doc":"Disconnects the shard with the given shard number from the Gateway.\n\nThis function returns `t:resume_information/0` which can be provided\nto `reconnect/1` to reconnect a shard to the gateway and (attempt) to\ncatch up on any missed events.","title":"Nostrum.Shard.Supervisor.disconnect/1","ref":"Nostrum.Shard.Supervisor.html#disconnect/1"},{"type":"function","doc":"```elixir\niex> Nostrum.Shard.Supervisor.disconnect(4)\n%{shard_num: 4, ...}\n```","title":"Examples - Nostrum.Shard.Supervisor.disconnect/1","ref":"Nostrum.Shard.Supervisor.html#disconnect/1-examples"},{"type":"function","doc":"Reconnect to the gateway using the provided `t:resume_information/0`.\n\nResuming is performed by the gateway on a best effort basis, it is not\nguaranteed that a resume will work (though Nostrum will handle failed attempts\nat a resumption). If a reconnect is successful, any events received during the\nreconnection period should be received. If the reconnect fails, events\nreceived between the disconnect and re-authentication may be lost.\n\nFor more information about resuming sessions, visit\n[the Discord Developer Portal](https://discord.com/developers/docs/topics/gateway#resuming).","title":"Nostrum.Shard.Supervisor.reconnect/1","ref":"Nostrum.Shard.Supervisor.html#reconnect/1"},{"type":"function","doc":"```elixir\niex> resume = Nostrum.Shard.Supervisor.disconnect(4)\n%{shard_num: 4, ...}\niex> Nostrum.Shard.Supervisor.reconnect(resume)\n```","title":"Examples - Nostrum.Shard.Supervisor.reconnect/1","ref":"Nostrum.Shard.Supervisor.html#reconnect/1-examples"},{"type":"function","doc":"","title":"Nostrum.Shard.Supervisor.start_link/1","ref":"Nostrum.Shard.Supervisor.html#start_link/1"},{"type":"function","doc":"","title":"Nostrum.Shard.Supervisor.update_status/4","ref":"Nostrum.Shard.Supervisor.html#update_status/4"},{"type":"function","doc":"","title":"Nostrum.Shard.Supervisor.update_voice_state/4","ref":"Nostrum.Shard.Supervisor.html#update_voice_state/4"},{"type":"type","doc":"Represents gateway resume information.","title":"Nostrum.Shard.Supervisor.resume_information/0","ref":"Nostrum.Shard.Supervisor.html#t:resume_information/0"},{"type":"type","doc":"Shard number(`shard_id`). Range is `0..total_shards-1`.","title":"Nostrum.Shard.Supervisor.shard_num/0","ref":"Nostrum.Shard.Supervisor.html#t:shard_num/0"},{"type":"type","doc":"Total shard count(`num_shards`).","title":"Nostrum.Shard.Supervisor.total_shards/0","ref":"Nostrum.Shard.Supervisor.html#t:total_shards/0"},{"type":"module","doc":"Translate error reports for `:gen_statem` modules in Elixir.\n\n>","title":"Nostrum.StateMachineTranslator","ref":"Nostrum.StateMachineTranslator.html"},{"type":"module","doc":">\n> This module is intended for exclusive usage inside of nostrum, and is\n> documented for completeness and people curious to look behind the covers.","title":"Internal module {: .info} - Nostrum.StateMachineTranslator","ref":"Nostrum.StateMachineTranslator.html#module-internal-module-info"},{"type":"module","doc":"By default, Elixir will ignore these messages altogether, see [this\nElixirForum\npost](https://elixirforum.com/t/why-does-logger-translator-ignore-gen-statem-reports/37418).\nA possible workaround seems to be using the `gen_state_machine` library, but\npulling in a library purely to have error reporting for something built-in to\nOTP seems pretty strange to me.","title":"Reasoning - Nostrum.StateMachineTranslator","ref":"Nostrum.StateMachineTranslator.html#module-reasoning"},{"type":"function","doc":"","title":"Nostrum.StateMachineTranslator.translate/4","ref":"Nostrum.StateMachineTranslator.html#translate/4"},{"type":"exception","doc":"Represents a failed response from the API.\n\nThis occurs when `:gun` fails, or when the API doesn't respond with `200` or `204`.\nThis should only be raised explicitly when using the banged API methods.","title":"Nostrum.Error.ApiError","ref":"Nostrum.Error.ApiError.html"},{"type":"type","doc":"","title":"Nostrum.Error.ApiError.detailed_error/0","ref":"Nostrum.Error.ApiError.html#t:detailed_error/0"},{"type":"type","doc":"","title":"Nostrum.Error.ApiError.discord_status_code/0","ref":"Nostrum.Error.ApiError.html#t:discord_status_code/0"},{"type":"type","doc":"","title":"Nostrum.Error.ApiError.error/0","ref":"Nostrum.Error.ApiError.html#t:error/0"},{"type":"type","doc":"","title":"Nostrum.Error.ApiError.error_list_map/0","ref":"Nostrum.Error.ApiError.html#t:error_list_map/0"},{"type":"type","doc":"","title":"Nostrum.Error.ApiError.errors/0","ref":"Nostrum.Error.ApiError.html#t:errors/0"},{"type":"type","doc":"","title":"Nostrum.Error.ApiError.response/0","ref":"Nostrum.Error.ApiError.html#t:response/0"},{"type":"type","doc":"","title":"Nostrum.Error.ApiError.status_code/0","ref":"Nostrum.Error.ApiError.html#t:status_code/0"},{"type":"type","doc":"","title":"Nostrum.Error.ApiError.t/0","ref":"Nostrum.Error.ApiError.html#t:t/0"},{"type":"exception","doc":"Represents an error when interacting with the cache.\n\nThis likely occurs because a specified item could not be found in the cache,\nor your were searching for something invalid.\nThis should only occur when using the banged cache methods.","title":"Nostrum.Error.CacheError","ref":"Nostrum.Error.CacheError.html"},{"type":"exception","doc":"Represents an error when playing sound through voice channels.\n\nThis occurs when attempting to play audio and the file can't be found\nfor the ffmpeg, youtube-dl, or streamlink executables.","title":"Nostrum.Error.VoiceError","ref":"Nostrum.Error.VoiceError.html"},{"type":"extras","doc":"# Introduction\n\nnostrum is an Elixir library that can be used to interact with Discord.\n\nTo see documentation about a specific part of the library, please visit one of\nthe following:\n\n* [API](api-1.html) - Methods to interact with the RESTful API (and some other goodies).\n* [State](state.html) - Caches that keep information from Discord fresh at your disposal.\n* [Events](event_handling.html) - Handling events from Discord as they come in.\n* [Voice](voice-2.html) - Playing audio through Discord voice channels.","title":"Introduction","ref":"intro.html"},{"type":"extras","doc":"There are two versions of nostrum, a stable version released on Hex and a dev\nversion on GitHub. The dev version will be more up to date but will likely\nhave more errors.\n\n```elixir\ndef deps do\n [{:nostrum, \"~> 0.10\"}]\n # Or, for bleeding edge changes:\n # [{:nostrum, github: \"Kraigie/nostrum\"}]\nend\n```\n\nNext up, you need to configure nostrum. The most basic configuration is simply\nsetting a token to log in with:\n\n```elixir\nconfig :nostrum,\n token: \"666\" # The token of your bot as a string\n```","title":"Setup - Introduction","ref":"intro.html#setup"},{"type":"extras","doc":"Apart from the `token` field mentioned above, the following fields are also supported:\n\n- `num_shards` - the amount of shards to run. Can be one of the following:\n - `:auto`: use the suggested amount of shards as provided by Discord.\n - *`num`*: a number of shards to run. nostrum will warn if this is not the\n recommended amount.\n - `{lowest, highest, total}`: start shards `lowest` to `highest`. `total`\n should contain the total amount of shards that your bot is expected to have.\n Useful for splitting a single bot across multiple servers, but see also [the\n multi-node documentation](../advanced/multi_node.md).\n - `:manual`: nostrum does not automatically spawn shards. See the [Manual\n Sharding](../advanced/manual_sharding.md) guide for more information.\n- `gateway_intents` - a list of atoms representing gateway intents for Nostrum\n to subscribe to from the Discord API. More information can be found in the\n [gateway intents](./gateway_intents.md) documentation page.\n- `request_guild_members` - perform member chunking to retrieve a complete list\n of members for all guilds at startup. Depending on your [cache\n backend](../advanced/pluggable_caching.md), this may increase startup time\n and memory usage by quite a bit. Defaults to `false`.\n- `gateway_compression` - use either `:zlib` (default) or `:zstd` for compression\n of messages from the Discord gateway. See the documentation on\n [Gateway Compression](../advanced/gateway_compression.md) for more information.","title":"Configuration options - Introduction","ref":"intro.html#configuration-options"},{"type":"extras","doc":"- `ffmpeg` - Specifies the path to the `ffmpeg` executable for playing audio.\n Defaults to `\"ffmpeg\"`.\n- `youtubedl` - Specifies the path to the `youtube-dl` executable for playing\n audio with youtube-dl support. Defaults to `\"youtube-dl\"`.\n- `streamlink` - Specifies the path to the `streamlink` executable for playing\n livestream audio with streamlink support. Defaults to `\"streamlink\"`.\n- `audio_timeout` - Milliseconds that input must begin generating audio by\n upon invoking `play`. More information about this option can be found in the\n [voice](./voice-2.html) documentation page. Defaults to `20_000` (20s).\n- `audio_frames_per_burst` - Number of opus frames to send at a time while\n playing audio. More information about this option can be found in the\n [voice](./voice-2.html) documentation page. Defaults to `10`.\n- `voice_auto_connect` - This will determine if Nostrum automatically connects\n to voice websockets gateways upon joining voice channels. If set to `false`\n but you still wish to connect to the voice gateway, you can do so manually\n by calling `Nostrum.Voice.connect_to_gateway/1` after joining a voice\n channel. Defaults to `true`.\n- `voice_encryption_mode` - Defaults to `:aes256_gcm`. More information about this\n option can be found [here](./voice-2.html#encryption-modes).","title":"Voice-specific - Introduction","ref":"intro.html#voice-specific"},{"type":"extras","doc":"- `log_full_events` - This will log the full payload received over the\n websocket. Defaults to `false`.\n- `log_dispatch_events` - This will log dispatch events as they are received\n from the gateway. Defaults to `false`.\n- `fullsweep_after_default` - Sets the `fullsweep_after` flag for processes\n that can have irregularly high memory usage due to Discord payloads. This\n options will dramatically reduce the amount of memory used by some processes\n at the cost of increased CPU usage. This is useful if you're running your\n application under a memory constrained environment. This comes at the cost\n of increased CPU usage. By default, this option will only affect some\n processes. You can set this flag for *all* processes using environment\n variables or by [setting the system flag\n yourself](http://erlang.org/doc/man/erlang.html#system_flag-2). Defaults to\n whatever your system recommends, which is probably `65535`.\n- `force_http1` - Set to `true` if you wish to disable automatic use of HTTP 2\n or newer HTTP versions for API requests to Discord. Useful to diagnose issues\n with ratelimiter connections during abnormal network conditions.","title":"Development & debugging - Introduction","ref":"intro.html#development-debugging"},{"type":"extras","doc":"The following options are only used for testing nostrum itself.\n\n- `dev` - This is added to enable Nostrum to be run completely stand alone for\n development purposes. `true` will cause Nostrum to spawn its own event\n consumers. If you have the dev flag set to true while running Nostrum\n alongside your application some of your events will be consumed. Defaults to\n `false`.","title":"Internal options - Introduction","ref":"intro.html#internal-options"},{"type":"extras","doc":"nostrum uses Elixir's standard logger to inform you about regular and irregular\nevents. Normal messages include Discord-requested shard reconnections and the\n`IDENTIFY` and `READY` events.\n\nThe following metadata fields through logger:\n\n - `shard` - Id of the shard on which the event occurred\n - `guild` - Name of the guild on which the voice connection event occurred\n - `channel` - Name of the channel on which the voice connection event occurred\n\nTo enable this metadata, logger can be configured as such:\n```elixir\nconfig :logger, :console,\n metadata: [:shard, :guild, :channel]\n``` \n\nFor more information on how this works, and how to change the logging\nconfiguration for nostrum on its own, please see the [Logger\ndocumentation](https://hexdocs.pm/logger/Logger.html)","title":"Logging - Introduction","ref":"intro.html#logging"},{"type":"extras","doc":"From the Elixir website -\n\n> Elixir is a dynamic, functional language designed for building scalable and\n> maintainable applications.\n\n> Elixir leverages the Erlang VM, known for running low-latency, distributed\n> and fault-tolerant systems, while also being successfully used in web\n> development and the embedded software domain.\n\n**How does Nostrum leverage these benefits?**\n\n- **Fault tolerance**: nostrum attempts, where reasonable, to allow for\n different parts of the application to fail with minimal harm. Supervisors are\n used heavily to ensure that anything that breaks will be restarted. Nostrum\n attempts to avoid most errors, but if they do occur (*and they will!*) it\n shouldn't be the end of the world.\n\n- **Concurrency** - Concurrency is considered to be a first class citizen in\n Elixir. Through the use of SMP and processes, information should travel\n through the application quickly.\n\n- **Distributed**: nostrum does not currently support full distribution of all\n components out of the box - that would fall out of the scope of the library.\n However, see the [multi-node](../advanced/multi_node.md) document for\n provided functionality.","title":"Why Elixir? - Introduction","ref":"intro.html#why-elixir"},{"type":"extras","doc":"- A simple bot that consumes events from the gateway can be found [at\n `examples/event_consumer.ex`](https://github.com/Kraigie/nostrum/blob/master/examples/event_consumer.ex).\n\n- An example bot that plays audio through voice channels can be found [at\n `examples/audio_player_example.ex`](https://github.com/Kraigie/nostrum/blob/master/examples/audio_player_example.ex).\n\n- A properly structured bot with commands utilizing\n [nosedrum](https://github.com/jchristgit/nosedrum) can be found [in this\n GitHub repository](https://github.com/kshannoninnes/sample_bot)\n\n- A rather large and complex bot, bolt, can be found\n [here](https://github.com/jchristgit/bolt).\n\n\n\n","title":"Example bots - Introduction","ref":"intro.html#example-bots"},{"type":"extras","doc":"# API\n\nnostrum includes a complete implementation of the endpoints supported by\nDiscord's API. Method names are copied closely from the documentation to\neliminate any confusion about what a method does, as well as to allow users to\neasily lookup the endpoints in the official API documentation.\n\nFor a full listing of method definitions, please see the `Nostrum.Api` module.","title":"API","ref":"api-4.html"},{"type":"extras","doc":"A lot of methods have a `banged` version of themselves. This is a common Elixir\nidiom hailing from Elixir's style of failing fast.\n\nBy default, the API method will return a tuple like one of the following:\n\n```elixir\n# Success\n{:ok, msg} = Nostrum.Api.create_message(179679229036724225, \"456\")\n\n# Failure\n{:error, reason} = Nostrum.Api.create_message(123, \"eat my shorts api\")\n```\n\nA banged method, instead of returning an `error` tuple, will throw an error. If\nsuccessful, it will directly return the response with no `:ok` tuple.\n\n```elixir\n# Success\nmsg = Nostrum.Api.create_message!(179679229036724225, \"456\")\n\n# Failure - Throws an error\nNostrum.Api.create_message!(123, \"eat my shorts api\")\n```","title":"Banged (`!`) API methods - API","ref":"api-4.html#banged-api-methods"},{"type":"extras","doc":"When appropriate, some helpers are defined to make interacting with the API\nsimpler. An example of this is `Nostrum.Api.get_channel_messages/3`. By default\nthis endpoint only allows the retrieval of `100` messages at a time. A general\nuse case will have a user wanting more messages than that, thus nostrum handles\nthe retrieval of any number of messages for the user.\n\nThere are other endpoints that could use grooming like above, feel free to\nsuggest an interface and implementation for these methods.","title":"Abstractions - API","ref":"api-4.html#abstractions"},{"type":"extras","doc":"Ratelimiting is handled internally by nostrum, so long as you use the methods\nsupplied in the `Nostrum.Api` module. This means either calling the methods as\nthey're given or using `Nostrum.Api.request/4` to call an endpoint.\n\nTo ensure that every request is handled properly, no matter if they're called\nasynchronously or not, nostrum funnels all requests through the\n`Nostrum.Api.Ratelimiter` state machine.","title":"Ratelimiting - API","ref":"api-4.html#ratelimiting"},{"type":"extras","doc":"If you only want to use the REST portion of the provided API, the only process\nneeded is the ratelimiter, which can be manually started by calling\n`Nostrum.Api.Ratelimiter.start_link/1`. \n\nIf you don't want to start nostrum, you can add `runtime: false` to the\ndependency options. If you're using `mix release`, all `runtime: false` deps\nwill be excluded from the build, so you'll also need to add `:nostrum` app to\n`mix.exs` in `:included_applications` application option or in the `releases`\nproject option.\n\n","title":"REST-only - API","ref":"api-4.html#rest-only"},{"type":"extras","doc":"# Application commands\n\nDiscord allows you to create commands for your bot that work within the slash\ncommand menu or via the context menu.\n\nUsing nostrum, you can create, receive, and respond to application commands invoked\nby Discord users.","title":"Application commands","ref":"application_commands.html"},{"type":"extras","doc":"Quoting the [official Discord\ndocumentation](https://discord.com/developers/docs/interactions/application-commands#authorizing-your-application):\n\n> In order to make Commands work within a guild, the guild must authorize\n> your application with the `applications.commands` scope. The `bot` scope is not\n> enough.","title":"Permissions required - Application commands","ref":"application_commands.html#permissions-required"},{"type":"extras","doc":"Discord differentiates between **global** and **guild-specific** slash\ncommands. Global commands will be distributed across all guilds that your bot\nis in within an hour. Guild-specific commands slash commands will be available\ninstantly, which is why we will use guild-specific commands for testing.\n\nWe will create a command that will allow the user to assign or remove a role of\nchoice. The `guild_id` parameter is the ID of the guild on which the command\nwill be created.\n\nOur command definition looks as follows:\n\n```elixir\ncommand = %{\n name: \"role\",\n description: \"assign or remove a role\",\n options: [\n %{\n # ApplicationCommandType::ROLE\n type: 8,\n name: \"name\",\n description: \"role to assign or remove\",\n required: true\n },\n %{\n # ApplicationCommandType::STRING\n type: 3,\n name: \"action\",\n description: \"whether to assign or remove the role\",\n required: true,\n choices: [\n %{\n name: \"assign\",\n value: \"assign\"\n },\n %{\n name: \"remove\",\n value: \"remove\"\n }\n ]\n }\n ]\n}\n```\n\nTo register this command on the guild, we simply pass it to\n`Nostrum.Api.create_guild_application_command/2`:\n\n```elixir\nNostrum.Api.create_guild_application_command(guild_id, command)\n```\n\nYou can register the command in the ``:READY`` gateway event handler.","title":"Getting started - Application commands","ref":"application_commands.html#getting-started"},{"type":"extras","doc":"Set up a gateway event handler for ``:INTERACTION_CREATE``. On command\ninvocation the interaction payload will look something like the following:\n\n```elixir\n%Nostrum.Struct.Interaction{\n channel_id: 474025345243414539,\n data: %{\n id: 793152718839087135,\n name: \"role\",\n options: [\n %{name: \"name\", value: \"458692275199803406\"},\n %{name: \"action\", value: \"assign\"}\n ]\n },\n # ...\n```\n\nNote that Discord already converted the user-supplied role to a snowflake.\nConvenient!\n\nLet's match on the retrieved event and create two function heads for the\nseparate operation modes:\n\n```elixir\nalias Nostrum.Api\nalias Nostrum.Struct.Interaction\n\ndefp manage_role(%Interaction{data: %{options: [%{value: role_id}, %{value: \"assign\"}]}} = interaction) do\n Api.add_guild_member_role(interaction.guild_id, interaction.member.user_id, role_id)\nend\n\ndefp manage_role(%Interaction{data: %{options: [%{value: role_id}, %{value: \"remove\"}]}} = interaction) do\n Api.remove_guild_member_role(interaction.guild_id, interaction.member.user_id, role_id)\nend\n\ndef handle_event({:INTERACTION_CREATE, %Interaction{data: %{name: \"role\"}} = interaction, _ws_state}) do\n manage_role(interaction)\nend\n```\n\nOkay, we now have our handling code done. This is pretty much the same code\nthat you would use for regular commands.","title":"Receiving interactions - Application commands","ref":"application_commands.html#receiving-interactions"},{"type":"extras","doc":"To respond to interactions, use ``Nostrum.Api.create_interaction_response/2``:\n\n```elixir\ndefp manage_role(%Interaction{data: %{options: [%{value: role_id}, %{value: \"assign\"}]}} = interaction) do\n Api.add_guild_member_role(interaction.guild_id, interaction.member.user_id, role_id)\n response = %{\n type: 4, # ChannelMessageWithSource\n data: %{\n content: \"role assigned\"\n }\n }\n Api.create_interaction_response(interaction, response)\nend\n```\n\nWe have now built a simple command using slash commands, with argument\nconversion delegated to Discords side of things. Further actions on the\ncommand, such as checking permissions, author roles, and more - are left as an\nexercise to the reader.","title":"Responding to interactions - Application commands","ref":"application_commands.html#responding-to-interactions"},{"type":"extras","doc":"# Gateway Intents\n\nThe Discord API allows you to fine tune the payloads that are received by your bot through gateway intents.\n\nWhen connecting to Discord you can instruct Discord on which events you want to receive (i.e. messages, user presences, etc.).\n\nNostrum allows you to set these intents within your configuration, **by default all non-privileged intents are enabled**.\n\nTo pass intents you should use the following configuration:\n```elixir\nconfig :nostrum,\n token: \"bot_token\",\n gateway_intents: [\n :guilds,\n # other gateway intents\n ]\n```\n\nPossible intents (and the gateway events they correspond to) are:\n\n```\nguilds:\n - GUILD_CREATE\n - GUILD_UPDATE\n - GUILD_DELETE\n - GUILD_ROLE_CREATE\n - GUILD_ROLE_UPDATE\n - GUILD_ROLE_DELETE\n - CHANNEL_CREATE\n - CHANNEL_UPDATE\n - CHANNEL_DELETE\n - CHANNEL_PINS_UPDATE\n\nguild_members*:\n - GUILD_MEMBER_ADD\n - GUILD_MEMBER_UPDATE\n - GUILD_MEMBER_REMOVE\n\nguild_moderation:\n - GUILD_AUDIT_LOG_ENTRY_CREATE\n - GUILD_BAN_ADD\n - GUILD_BAN_REMOVE\n\nguild_emojis:\n - GUILD_EMOJIS_UPDATE\n\nguild_integrations:\n - GUILD_INTEGRATIONS_UPDATE\n\nguild_webhooks:\n - WEBHOOKS_UPDATE\n\nguild_invites:\n - INVITE_CREATE\n - INVITE_DELETE\n\nguild_voice_states:\n - VOICE_STATE_UPDATE\n\nguild_presences*:\n - PRESENCE_UPDATE\n\nguild_messages:\n - MESSAGE_CREATE\n - MESSAGE_UPDATE\n - MESSAGE_DELETE\n - MESSAGE_DELETE_BULK\n\nguild_message_reactions:\n - MESSAGE_REACTION_ADD\n - MESSAGE_REACTION_REMOVE\n - MESSAGE_REACTION_REMOVE_ALL\n - MESSAGE_REACTION_REMOVE_EMOJI\n\nguild_message_typing:\n - TYPING_START\n\ndirect_messages:\n - MESSAGE_CREATE\n - MESSAGE_UPDATE\n - MESSAGE_DELETE\n - CHANNEL_PINS_UPDATE\n\ndirect_message_reactions:\n - MESSAGE_REACTION_ADD\n - MESSAGE_REACTION_REMOVE\n - MESSAGE_REACTION_REMOVE_ALL\n - MESSAGE_REACTION_REMOVE_EMOJI\n\ndirect_message_typing:\n - TYPING_START\n\nmessage_content*:\n - MESSAGE_CONTENT\n\nguild_scheduled_events:\n - GUILD_SCHEDULED_EVENT_CREATE\n - GUILD_SCHEDULED_EVENT_UPDATE\n - GUILD_SCHEDULED_EVENT_DELETE\n - GUILD_SCHEDULED_EVENT_USER_ADD\n - GUILD_SCHEDULED_EVENT_USER_REMOVE\n\nauto_moderation_configuration:\n - AUTO_MODERATION_RULE_CREATE\n - AUTO_MODERATION_RULE_DELETE\n - AUTO_MODERATION_RULE_UPDATE\n\nauto_moderation_execution:\n - AUTO_MODERATION_RULE_EXECUTION\n\nguild_message_polls:\n - MESSAGE_POLL_VOTE_ADD\n - MESSAGE_POLL_VOTE_REMOVE\n\ndirect_message_polls:\n - MESSAGE_POLL_VOTE_ADD\n - MESSAGE_POLL_VOTE_REMOVE\n```\n\nBesides an explicit list of atoms, acceptable configuration values are `:all` and `:nonprivileged`.\n\nNote that intents marked with `*` are **privileged** intents. You must enable these intents by visiting the Discord Developer portal.\n\nOnce your bot passes 100 servers Discord will force you to **verify your bot**. If you require privileged intents you may need to write additional information on your usage of them.\n\nNostrum's default value for `gateway_intents` is `:nonprivileged`, which enables all non-privileged intents.\nThis is equivalent to setting `gateway_intents` to the above list without the **privileged** intents.\nIf you require all intents, including privileged ones, set `gateway_intents` to `:all`.\n\nMore information on gateway intents can be found in the [Discord Developer documentation](https://discord.com/developers/docs/topics/gateway#gateway-intents).","title":"Gateway Intents","ref":"gateway_intents.html"},{"type":"extras","doc":"# Event handling\n\nEvent handling is how your bot application will interact with the information\nsent from Discord over a websocket connection. By defining an event handler for\nan event, when something like a message is created or a channel is deleted, your\napplication can perform an action as a result of that event.\n\nNostrum uses [Erlang's `:pg` module](https://www.erlang.org/doc/man/pg.html) to\ndetermine which consumers are interested in events, via\n`Nostrum.ConsumerGroup`. This allows dynamic subscriptions at runtime, even\nacross nodes. Events are dispatched to group members as they appear from the\nDiscord Gateway after ingestion into the cache.\n\nTo see the documentation on handling events of provided consumers, please see\n`Nostrum.Consumer`.\n\n\n","title":"Event handling","ref":"event_handling.html"},{"type":"extras","doc":"# State\n\nNostrum keeps track of the state that your bot can see, which is updated based\non events from the WS connection. We differentiate between _caches_, which are\noptional and are used to provide your bot with fresh data, and _state_, which is\nmandatory state that we must track internally.","title":"State","ref":"state.html"},{"type":"extras","doc":"Caching will by default use Erlang's ETS tables. Abstractions are provided for\ncommon operations. If you feel the caches are missing some abstraction, feel\nfree to suggest it [on GitHub](https://github.com/Kraigie/nostrum/issues).\n\nShould the default ETS-based caching not be enough for you - for instance, you\nwant to integrate to some external caching mechanism or want to distribute your\nbot across multiple nodes, please see the [pluggable\ncaching](../advanced/pluggable_caching.md) documentation.","title":"Caches - State","ref":"state.html#caches"},{"type":"extras","doc":"nostrum's built-in functions to query the cache should be sufficient to cover\ncommon use cases. If you need more involved queries, it is recommended to use\nnostrum's [qlc](https://www.erlang.org/doc/man/qlc.html) support.","title":"Query list comprehensions - State","ref":"state.html#query-list-comprehensions"},{"type":"extras","doc":"Below you can find some example queries using QLC.\n\n```erl\n% src/nostrum_queries.erl\n\n-module(nostrum_queries).\n-export([find_role_users/4, find_large_communities/2]).\n\n-include_lib(\"stdlib/include/qlc.hrl\").\n\n% Find the Nostrum.Struct.User and Member objects of all members in a specific guild role.\nfind_role_users(RequestedGuildId, RoleId, MemberCache, UserCache) ->\n qlc:q([{User, Member} || {{GuildId, MemberId}, Member} <- MemberCache:query_handle(),\n % Filter to member objects of the selected guild\n GuildId =:= RequestedGuildId,\n % Filter to members of the provided role\n lists:member(RoleId, map_get(roles, Member)),\n % Get a handle on the UserCache table\n {UserId, User} <- UserCache:query_handle(),\n % Find the User struct that matches the found Member\n MemberId =:= UserId]).\n\n% Find all communities in the Guild cache with the COMMUNITY guild feature\n% that are over a certain threshold in user size\nfind_large_communities(Threshold, GuildCache) ->\n qlc:q([Guild || {_, Guild} <- GuildCache:query_handle(),\n % Filter for guilds that are over the provided size\n map_get(member_count, Guild) > Threshold,\n % Filter for guilds that have COMMUNITY in the features field\n lists:member(<<\"COMMUNITY\">>, map_get(features, Guild))]).\n```\n\n`nostrum_queries:find_role_users/4` fetches all users in the specified guild\n(`RequestedGuildId`) with the role `RoleId`. The code is annotated, but\nstep-by-step the flow is: the member cache is filtered down to all members in\nthe guild, then using `lists:member/2` we check for role membership, and finally\nwe join against the user cache to return full user objects in the result.\n\n`nostrum_queries:find_large_communities/2` fetches all guilds in the guild cache\nthat meet the criteria of having at least `Threshold` members *and* having the\n`COMMUNITY` guild feature set to true in the Discord UI. It is easy to follow\nthe flow of this query by the annotations, with only some minor things to note\nsuch as needing to use `<<\"bitstring\">>` bit syntax to represent the strings,\nwhich is implicit in Elixir.\n\nIn Elixir, you can call these queries like so using `:qlc.eval/1`:\n\n```elixir\nmatching_guilds = :qlc.eval(:nostrum_queries.find_large_communities(50, Nostrum.Cache.GuildCache))\n```","title":"Examples - State","ref":"state.html#examples"},{"type":"extras","doc":"By [implementing a QLC\ntable](https://www.erlang.org/doc/man/qlc.html#implementing_a_qlc_table), all\nread operations from nostrum will be performed over your QLC table\nimplementation alone, and nostrum's dispatcher modules can easily be expanded\nfor more queries in the future. If you've never heard of QLC before, the\n[`beam-lazy` repository](https://github.com/savonarola/beam-lazy) contains a\ngood introduction.\n\nUsing QLC bring a plethora of benefits. Implementation of a QLC table is\nrelatively simple, and gives us compile-time query optimization and compilation\nin native Erlang list comprehension syntax. Furthermore, should you wish to\nperform queries on your caches beyond what nostrum offers out of the box, you\ncan write your queries using the `query_handle/0` functions on our caches,\nwithout having to investigate their exact API.\n\nThere is one caveat to be aware of when writing cache adapters in Elixir that\nbuild on this functionality: While Erlang's QLC can perform intelligent query\noptimization, a lot of it is implemented via a parse transform and thus only\navailable at compile time in Erlang modules. It is therefore recommended to\nwrite your QLC queries in Erlang modules: in Mix projects this can be achieved\neasily via the `src/` directory. Read the [QLC module\ndocumentation](https://www.erlang.org/doc/man/qlc.html) for more details on the\noptimizations done.\n\nThe reason why QLC is being used as opposed to the Elixir-traditional stream API\nis that the stream API does not support a number of features we are using here.\nApart from that, nostrum's previous API (`select` and friends) gave users a\nfalse impression that nostrum was doing an efficient iteration under the hood,\nwhich caused issues for large bots.","title":"Implementing your own queries and caches - State","ref":"state.html#implementing-your-own-queries-and-caches"},{"type":"extras","doc":"In addition to the optional caching, nostrum also needs to keep track of\ninternal state so it functions properly. State follows the same pattern as the\npluggable caching functionality described above, but disabling state storage via\n`NoOp` as with caching is not possible.\n\nThe modules under `Nostrum.Store` are used for this functionality.\n\n\n\n","title":"Internal state - State","ref":"state.html#internal-state"},{"type":"extras","doc":"# Voice","title":"Voice","ref":"voice-3.html"},{"type":"extras","doc":"Discord voice channels allow audio data to be sent to the voice servers over UDP.\nA bot is able to connect to up to one voice channel per guild. One websocket\nconnection will be opened and maintained for each voice channel the bot joins.\nThe websocket connection should reconnect automatically the same way that the \nmain Discord gateway websocket connections do. For available voice functions and\nusage see the `Nostrum.Voice` module.","title":"Voice channels - Voice","ref":"voice-3.html#voice-channels"},{"type":"extras","doc":"Nostrum uses the powerful [ffmpeg](https://ffmpeg.org/) command line utility to\nencode any audio (or video) file for sending to Discord's voice servers.\nBy default Nostrum will look for the executable `ffmpeg` in the system path.\nIf the executable is elsewhere, the path may be configured via\n`config :nostrum, :ffmpeg, \"/path/to/ffmpeg\"`.\nThe function `Nostrum.Voice.play/4` allows sound to played via files, local or \nremote, or via raw data that gets piped to `stdin` of the `ffmpeg` process.\nWhen playing from a url, the url can be a name of a file on the filesystem or a url\nof file on a remote server - [ffmpeg supports a ton of protocols](https://www.ffmpeg.org/ffmpeg-protocols.html),\nthe most common of which are probably `http` or simply reading a file from the filesystem.\nIt is also possible to send raw opus frames, bypassing ffmpeg, if desired.","title":"FFmpeg - Voice","ref":"voice-3.html#ffmpeg"},{"type":"extras","doc":"With only `ffmpeg` installed, Nostrum supports playing audio/video files or raw, piped\ndata as discussed in the section above. Nostrum also has support for `youtube-dl`, another\npowerful command line utility for downloading audio/video from online video services.\nAlthough the name implies support for Youtube, `youtube-dl` supports downloading from\n[an immense list of sites](https://github.com/ytdl-org/youtube-dl/blob/master/docs/supportedsites.md).\nBy default Nostrum will look for the executable `youtube-dl` in the system path. If the\nexecutable is elsewhere, the path may be configured via `config :nostrum, :youtubedl, \"/path/to/youtube-dl\"`.\nWhen `Nostrum.Voice.play/4` is called with `:ytdl` for the `type` parameter, `youtube-dl` will be\nrun with options `-f bestaudio -q -o -`, which will attempt to download the audio at the given url and pipe it to `ffmpeg`.\n\n> #### Forks {: .warning}\n> The `youtube-dl` project has not been regularly maintained, and the latest release is not presently compatible with YouTube.\n> The use of the `yt-dlp` fork is recommended in its place.\n>\n> ```elixir\n> config :nostrum, :youtubedl, \"yt-dlp\"\n> ```","title":"youtube-dl - Voice","ref":"voice-3.html#youtube-dl"},{"type":"extras","doc":"Nostrum also has support for `streamlink`, yet another powerful command line utility \nfor downloading live streams from online video streaming services.\nBy default Nostrum will look for the executable `streamlink` in the system path. \nIf the executable is elsewhere, the path may be configured via `config :nostrum, :streamlink, \"/path/to/streamlink\"`.\nWhen `Nostrum.Voice.play/4` is called with `:stream` for the `type` parameter, `streamlink` \nwill attempt to download the live stream content and pipe it to `ffmpeg`.\nIt's recommended to use the most up-to-date version of `streamlink` to properly\nplay human-readable URLs from services such as Youtube and Twitch. Version 3.x.x\ncurrently works with both of these services. If the short, human-readable url of the streaming service\ndoesn't work with `streamlink` out of the box, you may have more luck extracting the underlying raw stream url.\nThese are typically long URLs that end in `.m3u8` or `.hls`. If you have `youtube-dl` installed,\nyou can attempt to get this URL by running the following:\n\n```elixir\n{raw_url, 0} = System.cmd(\"youtube-dl\", [\"-f\", \"best\", \"-g\", url])\nraw_url = raw_url |> String.trim()\n```","title":"streamlink - Voice","ref":"voice-3.html#streamlink"},{"type":"extras","doc":"Upon invoking `Nostrum.Voice.play/4`, the player process has a large configurable initial window\n(`20_000` milliseconds by default) that it must generate audio within before timing out. This is done to allow\nample time for slow networks to download large audio/video files. This configurable timeout only applies to when\n`play` is initially invoked; once audio has begun transmitting, the timeout drops to `500` milliseconds.\nBecause the `ffmpeg` process doesn't close when its input device is `stdin`, which is the case\nwhen `type` is set to `:pipe`, `:ytdl`, or `:stream` the timeout is necessary to promptly detect end of input.\nIf the audio process times out within the initial window, the `Nostrum.Struct.Event.SpeakingUpdate`\nthat is generated will have its `timed_out` field set to `true`. It will be `false` in all other cases.\nIf your use case does not include large, slow downloads and you wish to more quickly be notified\nof timeouts or errors, you may consider setting `audio_timeout` to a lower value.\nHowever, `youtube-dl` typically takes at least 2.5 seconds to begin outputting audio data,\neven on a fast connection.\nIf your use case involves playing large files at a timestamp several hours in like this,\n`play(guild_id, url, :ytdl, start_time: \"2:37:56\")`, you may consider setting the timeout to a higher value,\nas downloading a large youtube video and having `ffmpeg` seek through several hours\nof audio may take 15-20 seconds, even with a fast network connection.","title":"Audio Timeout - Voice","ref":"voice-3.html#audio-timeout"},{"type":"extras","doc":"The value `:audio_frames_per_burst` represents the number of consecutive packets to send before resting.\nWhen using `Nostrum.Voice.play/4` to play audio, Nostrum collects a number of opus frames from the \naudio input source before sending them all to Discord as a \"burst\" of ordered frames. \nThis is done to reduce the overhead of process-sleeping and setup.\nFor reference, a single opus frame is 20 milliseconds of audio (at least for the format that Discord uses).\nBy default, the `:audio_frames_per_burst` is set to `10`, equivalent to 200 milliseconds of audio.\n\nUnder normal circumstances, there's no reason to change this value. However, if you attempt to play a very short\npiece of audio that's less than `10` frames (200ms) in length, it will time out (after the configured \n`:audio_timeout` duration has passed) as it waits to collect `10` frames to send. For those cases, configure the\nvalue to *at most* the minimum frame length of the audio you intend to play, or simply `1`. Setting the value to `1`\nmeans that each opus frame from your audio source will be taken individually and be sent in its own \"burst\" with the \nplayer process sleeping between each; you likely won't notice a difference in audio playback quality compared to the \ndefault value of `10` other than that your sub-200ms audio files will play as expected.","title":"Audio Frames Per Burst - Voice","ref":"voice-3.html#audio-frames-per-burst"},{"type":"extras","doc":"There are a few voice related events that bots can consume with a `Nostrum.Consumer` process:\n - `t:Nostrum.Consumer.voice_state_update/0`\n - `t:Nostrum.Consumer.voice_server_update/0`\n - `t:Nostrum.Consumer.voice_speaking_update/0`\n - `t:Nostrum.Consumer.voice_ready/0`\n - `t:Nostrum.Consumer.voice_incoming_packet/0`\n\nBoth `t:Nostrum.Consumer.voice_state_update/0` and `t:Nostrum.Consumer.voice_server_update/0` \nare sent by the shard gateway session when a bot joins a voice channel. The receipt of both of \nthese events is required for a voice gateway session to begin, and it happens automatically when \njoining a channel. The `t:Nostrum.Consumer.voice_state_update/0` event is also sent every time \nany user joins or leaves a voice channel, and `t:Nostrum.Struct.Guild.voice_states/0` is \nautomatically updated within the guild cache to reflect current state of voice channels.\n\nA use case for listening to both `t:Nostrum.Consumer.voice_state_update/0` and \n`t:Nostrum.Consumer.voice_server_update/0` events would be to outsource voice connections to \nan application outside of Nostrum. This can be done by setting the config option \n`:voice_auto_connect` to `false` and taking the session and token information \nfrom both of the events and passing them to your external voice app. \nOutside of this niche use case, another use case for listening solely to the\n`t:Nostrum.Consumer.voice_state_update/0` event would be to detect when users join or leave \nvoice channels.\n\nThe `t:Nostrum.Consumer.voice_speaking_update/0` event is generated by Nostrum for convenience. It is \nsent every time the bot starts or stops speaking/sending audio. A use case for this event is if \nyou have a queue of URLs to play, listening to the `t:Nostrum.Consumer.voice_speaking_update/0` \nwill let the bot know when the current URL has finished playing and that it should begin playing \nthe next one in the queue. The alternative approach for this use case that is not event-driven \nis to periodically call `Nostrum.Voice.playing?/1` and wait for it to return `false` as the \ntrigger to play the next URL. Note that the third element in the event is of type\n`t:Nostrum.Struct.VoiceWSState.t/0` and not `t:Nostrum.Struct.WSState.t/0`.\n\nThe `t:Nostrum.Consumer.voice_ready/0` event is generated by Nostrum for convenience. It is sent\nwhen the bot is ready to begin sending audio data upon joining a voice channel. From the moment\nthe bot joins a voice channel, Nostrum handles the multi-step handshaking process that is \nrequired before any audio packets can be sent or received. It is a common use case for bots to\nimmediately begin playing audio upon joining a voice channel. Calling `Nostrum.Voice.play/4`\ndirectly after calling `Nostrum.Voice.join_channel/4` will always return an error as several\nnetwork actions must take place before playing audio is possible. Listening for the\n`t:Nostrum.Consumer.voice_ready/0` event can be used by the bot to begin playing audio as soon \nas it is able to. The alternative approach for this use case that is not event-driven is to \nperiodically call `Nostrum.Voice.ready?/1` and wait for it to return `true` as the trigger to\nbegin playing. Another common approach is to define a `try_play` function as follows:\n```elixir\ndef try_play(guild_id, url, type, opts \\\\ []) do\n case Nostrum.Voice.play(guild_id, url, type, opts) do\n {:error, _msg} ->\n Process.sleep(100)\n try_play(guild_id, url, type, opts)\n\n _ ->\n :ok\n end\nend\n```\nNote that the third element in the event is of type `t:Nostrum.Struct.VoiceWSState.t/0` and \nnot `t:Nostrum.Struct.WSState.t/0`.\n\nThe `t:Nostrum.Consumer.voice_incoming_packet/0` event is generated by Nostrum. None will be generated\nby default. You must first be connected to a voice channel, call the `Nostrum.Voice.start_listen_async/1`\nfunction, then have another user in the same voice channel speak. If these conditions are met, an event\nwill be received for each RTP packet the bot receives; 50 packets per 1 second for each user that is\nactively speaking. These events are only useful if you intend to listen to incoming audio and are disabled\nby default. An alternative approach to listening to incoming audio that is not event driven is to call\n`Nostrum.Voice.listen/3`. This function blocks until the specified number of RTP packets is received.\n`Nostrum.Voice.listen/3` has the additional features of removing duplicate RTP packets within the set of\npackets returned per invocation and the option to return the raw RTP packet. In practice these features\nlikely won't be missed when consuming incoming voice packets asynchronously.\nNote that the third element in the event is of type\n`t:Nostrum.Struct.VoiceWSState.t/0` and not `t:Nostrum.Struct.WSState.t/0`.","title":"Voice Events - Voice","ref":"voice-3.html#voice-events"},{"type":"extras","doc":"Nostrum supports all of Discord's available encryption modes for voice channels.\nThe encryption mode is invisible to the user, and you will likely never need to touch it.\n\nDifferent encryption modes may have different performance characteristics depending on the\nhardware architecture your bot is running on. If you're interested, keep reading.\n\n#### Encryption Mode Configuration Options\n\nThis is a compile-time configuration option, so should you wish to set it,\ndo it in `config.exs` or one of its imported config files, *not* `runtime.exs`.\n\n```elixir\nconfig :nostrum, :voice_encryption_mode, :aes256_gcm # Default\n```\n\nAvailable configuration options are as follows:\n- `:xsalsa20_poly1305`\n- `:xsalsa20_poly1305_suffix`\n- `:xsalsa20_poly1305_lite`\n- `:xsalsa20_poly1305_lite_rtpsize` *(not yet documented by Discord)*\n- `:aead_xchacha20_poly1305_rtpsize` *(not yet documented by Discord)*\n- `:aead_aes256_gcm` *(not yet documented by Discord)*\n- `:aead_aes256_gcm_rtpsize` *(not yet documented by Discord)*\n- `:xchacha20_poly1305` (alias for `:aead_xchacha20_poly1305_rtpsize`)\n- `:aes256_gcm` (alias for `:aead_aes256_gcm_rtpsize`)\n\nThe first seven are Discord's available options, while the last two are shorter aliases.\n\nThe latter four of Discord's seven modes are not yet documented, but [will be soon](https://github.com/discord/discord-api-docs/pull/6801).\n\n#### Implementation Details\n\nOf the seven supported modes, three different ciphers are used. The remaining differences\nare variations in how the nonce is determined and where the encrypted portion of the RTP packet begins.\n\nErlang's `:crypto` module is leveraged as much as possible as the ciphers are NIFs.\n\n##### xsalsa20_poly1305\n\nThe entire Salsa20/XSalsa20 cipher is implemented in elixir. The poly1305 MAC function is handled by the `:crypto` module.\nAs a result, xsalsa_poly1305 modes will likely have the slowest performance.\n\n##### xchacha20_poly1305\n\nThe `:crypto` module supports the `chacha20_poly1305` AEAD cipher. The only thing implemented in elixir \nis the HChaCha20 hash function that generates a sub-key from the key and the longer nonce that XChaCha20 \nspecifies, which is then passed to the `chacha20_poly1305` cipher.\nIf your hardware doesn't have AES hardware acceleration, the `chacha` option may perform\nthe best for you.\n\n##### aes256_gcm\n\nThe `:crypto` module completely supports AES256 in GCM mode requiring no implementation in elixir. \nMany CPUs have hardware acceleration specifically for AES. For these reasons, Nostrum defaults to `aes256_gcm`.","title":"Encryption Modes - Voice","ref":"voice-3.html#encryption-modes"},{"type":"extras","doc":"# Gateway Compression\n\nNostrum supports either the `zlib-stream` or `zstd-stream` gateway compression\nmethods, as documented\n[here](https://discord.com/developers/docs/topics/gateway#encoding-and-compression)\n\nMost users are fine to leave the `gateway_compression` configuration option set\nto `:zlib` (default), but users looking for a potential reduction in payload\nsizes from the Discord gateway can optionally set `:zstd` here.","title":"Gateway Compression","ref":"gateway_compression.html"},{"type":"extras","doc":"Using `:zstd` depends on the [`:ezstd`](https://hex.pm/packages/ezstd) library,\nso you will have to add this dependency to your `mix.exs` file:\n\n```elixir\n defp deps do\n [\n {:nostrum, ...},\n {:ezstd, \"~> 1.1\"} # new dependency\n ]\n end\n```\n\n\n> #### `:ezstd` NIFs {: .info}\n>\n> Some functionality of `:ezstd` depends on Erlang NIFs (Natively Implemented\n> Functions). This means that a proper compiler installation as well as other\n> build tools like `git` may be necessary at the stage where you compile your\n> dependencies.\n>\n> It may be useful to run `mix deps.compile` in any build systems to ensure that\n> your application does not need build utilities in the built application image.\n\nOnce you have this additional dependency installed in your project, set the\n`:nostrum`, `:gateway_compression` configuration option to `:zstd` and Nostrum\nshould pick up on it.\n\nYou will need to run `mix deps.get` and `mix deps.compile` to install and\ncompile the new `:ezstd` dependency.\n\n> #### Nostrum detection of `:ezstd` {: .tip}\n>\n> Since the check for `:ezstd` takes place when you compile Nostrum, you might\n> need to run `mix deps.compile --force nostrum` to ensure that Nostrum is\n> recompiled and recognises the newly installed `:ezstd` dependency.\n>\n> Not doing this may mean that your compiled Nostrum version is still using\n> dummy handlers that will error out even when `:ezstd` is installed.","title":"Using `:zstd` compression - Gateway Compression","ref":"gateway_compression.html#using-zstd-compression"},{"type":"extras","doc":"# Hot code upgrade\n\nFor the library users whose Discord bot can afford absolutely no downtime due to\nrestarts, nostrum ships with [`appup`\nfiles](https://www.erlang.org/doc/man/appup.html) via the\n[`castle`](https://github.com/ausimian/castle) library.\n\n\n>","title":"Hot code upgrade","ref":"hot_code_upgrade.html"},{"type":"extras","doc":"> \n> The appups are maintained on a best-effort basis. While they are expected to\n> work and be present and documented as such, no guarantee can be made that they\n> will choose the most optimal path to upgrade and downgrade releases.\n> Contributions in this regard are welcome.","title":"Maintenance {: .info} - Hot code upgrade","ref":"hot_code_upgrade.html#maintenance-info"},{"type":"extras","doc":"To make use of nostrum's hot code upgrade support, please follow the\ninstructions to install the [`castle`](https://github.com/ausimian/castle)\nlibrary in order to configure your release appropriately. Outside of shipping\nthe appup, nostrum does not provide further functionality to facilitate this.","title":"Usage - Hot code upgrade","ref":"hot_code_upgrade.html#usage"},{"type":"extras","doc":"When nostrum is run as an included application as documented in [the\nmulti-node support document](./multi_node.md), nostrum's default appup won't\nbe read on generation of the release upgrade file.\n\nPlease see the OTP documentation on [Changing Included\nApplications](https://www.erlang.org/doc/design_principles/appup_cookbook.html#changing-included-applications)\nfor information on how to deal with upgrades in this case.\n\n\n","title":"nostrum as included application - Hot code upgrade","ref":"hot_code_upgrade.html#nostrum-as-included-application"},{"type":"extras","doc":"# Manual Sharding\n\nAdvanced users can use methods located in the `Nostrum.Shard.Supervisor` module\nto manually connect shards to the gateway as well as initiate manual disconnect\nand reconnects (attempting to `RESUME` sessions where possible).\n\nYou can set the `num_shards` option in your `nostrum` application config to\n`:manual` to prevent Nostrum from automatically starting shards. You should use\nthe methods in the shard supervisor such as `Nostrum.Shard.Supervisor.connect/2`\nto manually start shards if using this configuration option.","title":"Manual Sharding","ref":"manual_sharding.html"},{"type":"extras","doc":"```elixir\n# On Node A\niex> Nostrum.Shard.Supervisor.connect(0, 1)\niex> resume_info = Nostrum.Shard.Supervisor.disconnect(0)\n%{shard_num: 0, ...}\n\n# On another node\niex> Nostrum.Shard.Supervisor.reconnect(resume_info)\n```\n\nDiscord will perform a best effort attempt to resume the gateway from the time\nof disconnection, relaying any missed events. Resumption is not guaranteed to\nwork, in the event it fails Nostrum will reconnect the shard from scratch,\nthough this may mean some events are missed.","title":"Reconnection example - Manual Sharding","ref":"manual_sharding.html#reconnection-example"},{"type":"extras","doc":"# Multi-node\n\nAt the moment, you can run nostrum in highly available mode across multiple\nnodes via OTP's distributed application support, see below. Support for properly\ndistributing nostrum across multiple nodes and using them as one big entity is\nnot supported (yet).\n\nAs a general rule: if you are running distributed Erlang over the internet, make\nsure to secure it with [a solid VPN](https://www.wireguard.com) and / or by\n[using TLS for Erlang\ndistribution](https://www.erlang.org/doc/apps/ssl/ssl_distribution.html).","title":"Multi-node","ref":"multi_node.html"},{"type":"extras","doc":"Running using OTP's [distributed\napplications](https://www.erlang.org/doc/design_principles/distributed_applications.html)\nallows us to connect multiple nodes together and have your app and nostrum\nrescheduled on another node when things go south. Let's see how we can configure\nit. In this example, we will make use of three nodes, and all of them will be\nrun from your bot's directory. The only difference on their command line is the\n`--sname` / `--name` you specify. We'll use `--sname`s for testing here, for\nproper fault tolerance you will want to use multiple hosts with `--name`. Let's\nassume we name our nodes `joe`, `robert`, and `mike`.","title":"High availability - Multi-node","ref":"multi_node.html#high-availability"},{"type":"extras","doc":"We want to colocate nostrum with our app to allow it to move around as our\napplication is moved around. For this, utilize OTP's [included\napplications](https://www.erlang.org/doc/design_principles/included_applications.html)\nfeature to include nostrum into our supervision tree. You also need to\nexplicitly include nostrum's dependencies to ensure they are started, as the\nregular nostrum application startup won't handle it for you. This can be done by\nchanging your application definition in `mix.exs` as follows:\n\n```elixir\n def application do\n [\n mod: {MyBot.Application, []},\n included_applications: [:nostrum],\n # You can see this with `mix app.tree nostrum`\n extra_applications: [:certifi, :gun, :inets, :jason, :mime]\n # ...\n ]\n end\n```\n\nYou also need to set `runtime: false` for `:nostrum` itself in your\ndependencies, and any dependencies of your app that depend on `:nostrum`, such\nas command frameworks like `:nosedrum`:\n\n```elixir\n defp deps do\n [\n {:nostrum, \"~> 0.10\", runtime: false},\n # {:nosedrum, \"~> 0.6\", runtime: false},\n ]\n end\n```\n\nYou now need to add nostrum to your applications' children to start it as part\nof your app:\n\n```elixir\n def start(type, args) do\n children = [\n Nostrum.Application,\n # ...\n ]\n end\n```\n\nIf you want to run some logic ahead of starting nostrum, you can naturally also\nput it later into the list.\n\nYou can start your bot now, and it's going to run. If you look at your\nbot's application in `:observer`, you will see that nostrum has now become one\nwith your bot. We call that integration engineering.\n\nNow that our app bundles everything it needs with itself, this means starting\nour app will also starting nostrum, and stopping will also stop nostrum. We need\nthis for step two.","title":"Bundling nostrum with our app - Multi-node","ref":"multi_node.html#bundling-nostrum-with-our-app"},{"type":"extras","doc":"The avid reader will probably know that starting with the same `--cookie` and\n`--sname` / `--name` is only step one, the nodes need to connect to each other\nas well.\n\nTo be able to test this in interactive mode we will configure the settings in\nErlang configuration files, for releases you can use your regular\n`config/prod.exs`. We will set up the following:\n\n- Instruct OTP that our app, `:mybot` is a distributed app, and give it the\n hosts to run it on.\n\n- On startup, tell OTP it should wait for the other nodes to become available.\n\nWith the Erlang configuration files, this can be done as follows:\n\n```erl\n% mybot_joe.config\n[{kernel,\n [{distributed, [{mybot, 5000, [joe@HOSTNAME, {mike@HOSTNAME, robert@HOSTNAME}]}]},\n {sync_nodes_mandatory, [mike@HOSTNAME, robert@HOSTNAME]},\n {sync_nodes_timeout, 30000}]}].\n```\n```erl\n% mybot_robert.config\n[{kernel,\n [{distributed, [{mybot, 5000, [joe@HOSTNAME, {mike@HOSTNAME, robert@HOSTNAME}]}]},\n {sync_nodes_mandatory, [joe@HOSTNAME, mike@HOSTNAME]},\n {sync_nodes_timeout, 30000}]}].\n```\n```erl\n% mybot_mike.config\n[{kernel,\n [{distributed, [{mybot, 5000, [joe@HOSTNAME, {mike@HOSTNAME, robert@HOSTNAME}]}]},\n {sync_nodes_mandatory, [joe@HOSTNAME, robert@HOSTNAME]},\n {sync_nodes_timeout, 30000}]}].\n```\n\nNote the only thing that changes is the `sync_node_mandatory` setting, which\ninstructs OTP which hosts to wait for on startup. The other settings must match.\nThese options instructs OTP that our app `:mybot` is distributed and should be\nstarted at `:joe@HOSTNAME` first. If that fails, it moves to `:robert@HOSTNAME`\nor `:mike@HOSTNAME`.\n\nFor details on the options, please see the [kernel reference\nmanual](https://www.erlang.org/doc/man/kernel_app.html).","title":"Setting up distribution - Multi-node","ref":"multi_node.html#setting-up-distribution"},{"type":"extras","doc":"In three distinct windows, run the following:\n\n1. `iex --sname joe --cookie foo --erl-config myapp_joe.config -S mix`\n2. `iex --sname robert --cookie foo --erl-config myapp_robert.config -S mix`\n3. `iex --sname mike --cookie foo --erl-config myapp_mike.config -S mix`\n\nIf you have some other application that breaks on startup now - like monitoring\nexporters that bind to specific ports, or similar things - this is when they\nwill blow up. Decide whether you want to run this on every node indeed or\ninclude it with your app as shown above.\n\nYou now have three instances of the VM running. `:joe@HOSTNAME` runs your bot\nright now. If you stop that node, one of the other two nodes will start running\nyour app. High availability complete.","title":"Playtest - Multi-node","ref":"multi_node.html#playtest"},{"type":"extras","doc":"Your application's `def start` function takes a `type` argument. In this case,\non the node that now runs your application, that `type` was `{:failover,\n:joe@HOSTNAME}`. If you start `:joe@HOSTNAME` back up, `:joe@HOSTNAME` is\nstarted with `{:takeover, source_node}`, where `source_node` is the node that it\ntook over from.","title":"Being informed about takeover - Multi-node","ref":"multi_node.html#being-informed-about-takeover"},{"type":"extras","doc":"If you want to move your app around manually, you can use\n`:application.takeover`, for example `:application.takeover(:mybot,\n:permanent)`.","title":"Manual takeover - Multi-node","ref":"multi_node.html#manual-takeover"},{"type":"extras","doc":"At present, nostrum can not perform any state synchronization between nodes, it\nis an effective restart from scratch. For most bots, this type of failover will\nbe sufficient.\n\n\n","title":"Final thoughts - Multi-node","ref":"multi_node.html#final-thoughts"},{"type":"extras","doc":"# Pluggable caching\n\nThe default ETS-based caches supplied by nostrum should work for most of your\nneeds, but all of the caches can be exchanged for your own implementations. For\nthis, implement the behaviours exported by the cache modules under\n`Nostrum.Cache`.\n\n>","title":"Pluggable caching","ref":"pluggable_caching.html"},{"type":"extras","doc":">\n> The exception to the above is the `Nostrum.Cache.MessageCache`, which does not\n> include an ETS-based implementation, and defaults to a NoOp cache. This is\n> an intentional design decision because caching messages consumes a\n> lot more memory than other objects, and is often not needed by most users.\n\nUse the `[:nostrum, :caches]` configuration for configuring which cache\nimplementation you want to use. This can only be set at dependency compilation\ntime. A common situation is that you don't want to cache presences in your bot,\nmost likely you don't care about user's status, so you can disable it altogether\nby using the `NoOp` presence cache:\n\n```elixir\nconfig :nostrum,\n caches: %{\n presences: Nostrum.Cache.PresenceCache.NoOp\n }\n```\n\nIn addition to regular caches that associate Discord snowflakes with the proper\n\"full\" object, nostrum also maintains junction table-like mappings that allow\nyou to find the matching object from one cache in another. One example for this\nis `Nostrum.Cache.ChannelGuildMapping`.\n\nNostrum also ships with Mnesia-based caches. **These are only compiled in when\nmnesia is available**: they may not be available on Nerves or when Mnesia was\nnot installed with OTP.","title":"Exception {: .info} - Pluggable caching","ref":"pluggable_caching.html#exception-info"},{"type":"extras","doc":"","title":"Implementations - Pluggable caching","ref":"pluggable_caching.html#implementations"},{"type":"extras","doc":"Caching based on `:ets` is used by default. No configuration is required. Fast,\nlight on memory, but does not support any form of distribution or secondary\nindexing: queries such as fetching all guild members for a guild by its ID will\nperform a full table scan. For smaller bots, this is perfectly acceptable.","title":"ETS caching - Pluggable caching","ref":"pluggable_caching.html#ets-caching"},{"type":"extras","doc":"Mnesia-based caching is mainly suggested for larger bots that require\nfeatures such as cache distribution, fragmentation, secondary indexing and more.\n\nThe caches will attempt to create their tables automatically at startup:\ntherefore, Mnesia must be started ahead of nostrum. Caches expose a function\n`table/0` that can be called to retrieve the table name used by the cache and\nperform schema operations on it, such as adding replicas or fragmenting them.\n\n\n\nAccess to Mnesia is presently done in `sync_transaction` mode for best\nconsistency. If needed, a compile-time configuration option for the cache to\nswitch this can be added.\n\nMnesia-based caching assumes the user is familar with usage and\nmaintenance of Mnesia: the [Mnesia User's\nGuide](https://www.erlang.org/doc/apps/mnesia/mnesia_chap1.html) is a good\nstarting point.","title":"Mnesia caching - Pluggable caching","ref":"pluggable_caching.html#mnesia-caching"},{"type":"extras","doc":"The NoOp cache adapters are supplied for the case where you do not want to cache\nspecific data from Discord at all.","title":"NoOp caching - Pluggable caching","ref":"pluggable_caching.html#noop-caching"},{"type":"extras","doc":"Nostrum does not invalidate most caches in any special way: it will maintain it in\nresponse to gateway events (for instance by deleting a guild and its members\nupon leaving it), but won't regularly prune caches or associate expiration times\nwith entries. For volatile (RAM-based) caches this is perfectly fine, however,\nwhen implementing your own cache backend that persists to disk in some way, you\nneed to take care of this yourself.\n\nThe exception to this is the `Nostrum.Cache.MessageCache.Mnesia` module, which has a\ndefault size limit of 10,000 and will automatically remove the 100 oldest\nmessages when this limit is reached as well as delete all cached messages for a\nchannel when the channel is deleted.","title":"Cache invalidation - Pluggable caching","ref":"pluggable_caching.html#cache-invalidation"},{"type":"extras","doc":"nostrum strives to provide the most performant caches on the Discord bot caching\nmarket. If you run into performance issues with caches that you feel are not\nadequately documented as such, please feel free to open an issue.\n\nBenchmarks for caches can be found in the [`benchmarks/`\ndirectory](https://github.com/Kraigie/nostrum/tree/master/benchmarks) of the\nsource code tree. If you want to get a feeling for how the caches perform or\nimplement optimizations, check them out.","title":"Cache performance - Pluggable caching","ref":"pluggable_caching.html#cache-performance"},{"type":"extras","doc":"# API Usage\n\nThis cheat sheet covers basic use of the Discord API through the `Nostrum.Api` module.","title":"API Usage","ref":"api-1.html"},{"type":"extras","doc":"{: .col-2}","title":"Messages - API Usage","ref":"api-1.html#messages"},{"type":"extras","doc":"```elixir\nutc_now = DateTime.utc_now\natom_count = :erlang.system_info(:atom_count)\n\ncontent = \"\"\"\nUTC time is: #{DateTime.to_iso8601(utc_now)}\nAtom table size is: #{atom_count}\n\"\"\"\n\nNostrum.Api.create_message(msg.channel_id, content)\n```","title":"Sending a message - API Usage","ref":"api-1.html#sending-a-message"},{"type":"extras","doc":"```elixir\nimport Nostrum.Struct.Embed\n\nembed =\n %Nostrum.Struct.Embed{}\n |> put_title(\"Craig's Cats\")\n |> put_description(\"nostrum\")\n |> put_url(\"https://google.com/\")\n |> put_timestamp(\"2016-05-05T21:04:13.203Z\")\n |> put_color(431_948)\n |> put_field(\"Field 1\", \"Test\")\n # set inline attribute to true\n |> put_field(\"Field 2\", \"More test\", true)\n\nNostrum.Api.create_message(msg.channel_id, embeds: [embed])\n```\n\nYou can look at the documentation in `m:Nostrum.Struct.Embed#module-using-structs` for more advanced usage.","title":"Sending a message with an embed - API Usage","ref":"api-1.html#sending-a-message-with-an-embed"},{"type":"extras","doc":"```elixir\nNostrum.Api.create_message(\n msg.channel_id,\n files: [\n # file from filesystem\n \"/path/to/file.txt\",\n # file from memory\n %{body: \"test file\", name: \"example.txt\"}\n ]\n)\n```","title":"Upload an attachment - API Usage","ref":"api-1.html#upload-an-attachment"},{"type":"extras","doc":"With a mention:\n\n```elixir\nNostrum.Api.create_message(\n msg.channel_id,\n content: \"Hello!\",\n message_reference: %{message_id: msg.id}\n)\n```\n\nWithout a mention:\n\n```elixir\nNostrum.Api.create_message(\n msg.channel_id,\n content: \"Hello!\",\n message_reference: %{message_id: msg.id},\n allowed_mentions: :none\n)\n```","title":"Reply to a message - API Usage","ref":"api-1.html#reply-to-a-message"},{"type":"extras","doc":"```elixir\npoll = Poll.create_poll(\n \"Do you enjoy pineapple on pizza?\",\n duration: 2,\n allow_multiselect: false\n)\n|> Poll.put_answer(\"Yes!\", default_emoji: \"\\u2705\")\n|> Poll.put_answer(\"No!\", default_emoji: \"\\u274C\")\n\nApi.create_message(channel_id, poll: poll)\n```","title":"Send a poll - API Usage","ref":"api-1.html#send-a-poll"},{"type":"extras","doc":"Using a default emoji (unicode representation):\n```elixir\nNostrum.Api.create_reaction(\n msg.channel_id,\n msg.id,\n \"👾\"\n)\n```\n\nUsing a custom Discord emoji:\n```elixir\nemoji = %Nostrum.Struct.Emoji{\n name: \"emojiname\",\n id: 1228698654022434866\n}\n\nNostrum.Api.create_reaction(msg.channel_id, msg.id, emoji)\n```","title":"React to a message - API Usage","ref":"api-1.html#react-to-a-message"},{"type":"extras","doc":"{: .col-2}","title":"Miscellaneous - API Usage","ref":"api-1.html#miscellaneous"},{"type":"extras","doc":"```elixir\nNostrum.Api.update_status(\n :dnd,\n \"craigs cats\",\n 3 # Watching status\n)\n```\nYou can also update a single shard with `Nostrum.Api.update_shard_status/5`.","title":"Update the bot status - API Usage","ref":"api-1.html#update-the-bot-status"},{"type":"extras","doc":"```elixir\nimage = \"data:image/png;base64,...\"\n\nNostrum.Api.create_guild_emoji(\n msg.guild_id,\n name: \"nostrum\",\n image: image\n)\n```","title":"Create a guild emoji - API Usage","ref":"api-1.html#create-a-guild-emoji"},{"type":"extras","doc":"# QLC Usage\n\nThis cheat sheet covers some example queries using Query-List Comprehensions in Erlang, as well as some debugging tips.\n\nQLC modules must include this library include as part of their prelude:\n\n```erl\n-include_lib(\"stdlib/include/qlc.hrl\").\n```\n\nAs per the Erlang docs for QLC:\n\n> This causes a parse transform to substitute a fun for the QLC. The (compiled) fun is called when the query handle is evaluated.","title":"QLC Usage","ref":"qlc.html"},{"type":"extras","doc":"","title":"Examples - QLC Usage","ref":"qlc.html#examples"},{"type":"extras","doc":"```erl\nfind_role_users(RequestedGuildId, RoleId, MemberCache) ->\n qlc:q([Member || {{GuildId, MemberId}, Member} <- MemberCache:query_handle(),\n % Filter to member objects of the selected guild\n GuildId =:= RequestedGuildId,\n % Filter to members of the provided role\n lists:member(RoleId, map_get(roles, Member))]).\n```","title":"Fetch role members - QLC Usage","ref":"qlc.html#fetch-role-members"},{"type":"extras","doc":"```erl\nfind_large_communities(Threshold, GuildCache) ->\n qlc:q([Guild || {_, Guild} <- GuildCache:query_handle(),\n % Filter for guilds that are over the provided size\n map_get(member_count, Guild) > Threshold]).\n```","title":"Fetch guilds over a certain size - QLC Usage","ref":"qlc.html#fetch-guilds-over-a-certain-size"},{"type":"extras","doc":"```erl\nfind_online_users(RequestedGuildId, PresenceCache, UserCache) ->\n qlc:q([User || {{GuildId, PresenceUserId}, Presence} <- PresenceCache:query_handle(),\n % Filter to members in the requested guild ID\n GuildId =:= RequestedGuildId,\n % Fetch any members where the status is not offline\n map_get(status, Presence) /= offline,\n % Join the found users on the UserCache\n {UserId, User} <- UserCache:query_handle(),\n % Return the users that match the found presences\n UserId =:= PresenceUserId]).\n```\n\nThis depends on the guild presences intent being enabled and the bot storing received presences in the presence cache.","title":"Find all online users in a guild - QLC Usage","ref":"qlc.html#find-all-online-users-in-a-guild"},{"type":"extras","doc":"```erl\ntop_guilds(N, GuildCache) ->\n Q = qlc:q([{MemberCount, Guild} || {_Id, #{member_count := MemberCount} = Guild} <- GuildCache:query_handle()]),\n Q2 = qlc:keysort(1, Q, [{order, descending}]),\n GuildCache:wrap_qlc(fun () ->\n C = qlc:cursor(Q2),\n R = qlc:next_answers(C, N),\n ok = qlc:delete_cursor(C),\n R\n end).\n```","title":"Getting the largest N guilds - QLC Usage","ref":"qlc.html#getting-the-largest-n-guilds"},{"type":"extras","doc":"{: .col-2 }","title":"Debugging QLC - QLC Usage","ref":"qlc.html#debugging-qlc"},{"type":"extras","doc":"You can use `:qlc.info/1` to evaluate how Erlang will parse a query. You can read the Erlang docs for an explanation of the value returned by this call\n\n```elixir\n:qlc.info(\n :my_queries.find_users(..., Nostrum.Cache.UserCache)\n)\n```","title":"View query info - QLC Usage","ref":"qlc.html#view-query-info"},{"type":"extras","doc":"You can return only X records that match a query using `:qlc.next_answers/2`, passing in the query as the first argument and the number of answers to return as the second argument.\n\n```elixir\n:qlc.next_answers(\n :my_queries.find_users(..., Nostrum.Cache.UserCache),\n 5\n)\n```","title":"Sampling a query - QLC Usage","ref":"qlc.html#sampling-a-query"},{"type":"extras","doc":"# Voice Usage\n\nThis cheat sheet covers basic use of the Discord Voice API through the `Nostrum.Voice` module.","title":"Voice Usage","ref":"voice-2.html"},{"type":"extras","doc":"{: .col-2}","title":"Playing Audio - Voice Usage","ref":"voice-2.html#playing-audio"},{"type":"extras","doc":"```elixir\ndef try_play(guild_id, url, type, opts \\\\ []) do\n case Voice.play(guild_id, url, type, opts) do\n {:error, _msg} ->\n # Wait for handshaking to complete\n Process.sleep(100)\n try_play(guild_id, url, type, opts)\n\n _ ->\n :ok\n end\nend\n```\n\n```elixir\niex> Voice.join_channel(guild_id, channel_id)\niex> try_play(guild_id, \"./song.mp3\", :url)\n```","title":"Playing immediately with a `try_play` function - Voice Usage","ref":"voice-2.html#playing-immediately-with-a-try_play-function"},{"type":"extras","doc":"```elixir\ndef play_when_ready(guild_id, url, type, opts \\\\ []) do\n if Voice.ready?(guild_id) do\n Voice.play(guild_id, url, type, opts)\n else\n # Wait for handshaking to complete\n Process.sleep(25)\n play_when_ready(guild_id, url, type, opts)\n end\nend\n```\n\n```elixir\niex> Voice.join_channel(guild_id, channel_id)\niex> play_when_ready(guild_id, \"https://youtu.be/b4RJ-QGOtw4\", :ytdl)\n```","title":"Playing immediately using `Nostrum.Voice.ready?/1` - Voice Usage","ref":"voice-2.html#playing-immediately-using-nostrum-voice-ready-1"},{"type":"extras","doc":"```elixir\nalias Nostrum.Struct.Event.VoiceReady\nalias Nostrum.Voice\n\ndef handle_event({:VOICE_READY, %VoiceReady{guild_id: guild_id} = _event, _v_ws_state}) do\n Voice.play(guild_id, \"~/loud_noise.mp3\", :url, volume: 10)\nend\n```\n\nOnce the voice handshake has completed, audio will begin playing\nwithout the need for polling functions like `try_play/4` or `play_when_ready/4`\nas shown in the other examples\n\n```elixir\niex> Voice.join_channel(guild_id, channel_id)\n# Playback will start automatically when ready\n```","title":"Playing immediately by using events - Voice Usage","ref":"voice-2.html#playing-immediately-by-using-events"},{"type":"extras","doc":"{: .col-2}","title":"Audio FFmpeg options - Voice Usage","ref":"voice-2.html#audio-ffmpeg-options"},{"type":"extras","doc":"#### Half volume\n\n```elixir\nVoice.play(guild_id, \"~/final_mix.wav\", :url, \n volume: 0.5\n)\n```\n\n#### Extreme clipping\n\n```elixir\nVoice.play(guild_id, \"~/boost_this.m4a\", :url, \n volume: 100\n)\n```\n\n#### Normal volume with inverted phase\n\n```elixir\nVoice.play(guild_id, \"~/music.mp3\", :url, \n volume: -1.0\n)\n```","title":"Volume - Voice Usage","ref":"voice-2.html#volume"},{"type":"extras","doc":"Start at 37.8 seconds\n\n```elixir\nVoice.play(guild_id, \"https://youtu.be/b4RJ-QGOtw4\", :ytdl, \n start_pos: \"0:37.8\"\n)\n```\n\nPlay the first at 15.3 seconds from the beginning\n\n```elixir\nVoice.play(guild_id, \"https://youtu.be/b4RJ-QGOtw4\", :ytdl, \n duration: \"15.3\"\n)\n```\n\nPlay for 80 seconds (equivalently 1:20) starting from 90 seconds (equivalently 1:30) in\n\n```elixir\nVoice.play(guild_id, \"~/music.mp3\", :url, \n start_pos: \"90\", \n duration: \"80\"\n)\n```","title":"Start position and duration - Voice Usage","ref":"voice-2.html#start-position-and-duration"},{"type":"extras","doc":"#### Cutoff filters\n\nLow-pass filter at 1200 Hz, high-pass filter at 300 Hz\n\n```elixir\nVoice.play(guild_id, \"https://youtu.be/0ngcL_5ekXo\", :ytdl,\n filter: \"lowpass=f=1200\",\n filter: \"highpass=f=300\"\n)\n```\n\n#### Sample rate\n\nPlay at half tempo and pitch (assumes a 48kHz sample rate)\n\n```elixir\nVoice.play(guild_id, \"https://youtu.be/0ngcL_5ekXo\", :ytdl,\n filter: \"asetrate=48000*0.5\"\n)\n```\n\nPlay at 30% higher tempo and pitch. Realtime must be set to `false` for ffmpeg to keep up with faster-than-normal playback.\n\n```elixir\nVoice.play(guild_id, \"https://youtu.be/0ngcL_5ekXo\", :ytdl,\n realtime: false,\n filter: \"asetrate=48000*1.3\"\n)\n```\n\n#### Heavily distorted and effected lo-fi FX chain\n\n```elixir\nVoice.play(guild_id, \"https://youtu.be/Hd_giv-wcJU\", :ytdl,\n volume: 3,\n start_pos: \"0:55\",\n filter: \"asetrate=48000*0.73\",\n filter: \"vibrato=d=0.05:f=698.46\",\n filter: \"vibrato=f=1:d=0.8\",\n filter: \"lowpass=f=1200\",\n filter: \"aphaser=in_gain=0.4:out_gain=0.5:delay=3.0:decay=0.3:speed=0.3:type=t\"\n)\n```","title":"Advanced audio filtering - Voice Usage","ref":"voice-2.html#advanced-audio-filtering"}],"content_type":"text/markdown","producer":{"name":"ex_doc","version":[48,46,51,50,46,49]}} \ No newline at end of file diff --git a/dist/sidebar_items-1B1415BF.js b/dist/sidebar_items-1B1415BF.js new file mode 100644 index 000000000..781ea76c0 --- /dev/null +++ b/dist/sidebar_items-1B1415BF.js @@ -0,0 +1 @@ +sidebarNodes={"modules":[{"id":"Nostrum.Api","deprecated":false,"group":"Api","title":"Nostrum.Api","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"allowed_mention/0","deprecated":false,"title":"allowed_mention()","anchor":"t:allowed_mention/0"},{"id":"allowed_mentions/0","deprecated":false,"title":"allowed_mentions()","anchor":"t:allowed_mentions/0"},{"id":"emoji/0","deprecated":false,"title":"emoji()","anchor":"t:emoji/0"},{"id":"error/0","deprecated":false,"title":"error()","anchor":"t:error/0"},{"id":"limit/0","deprecated":false,"title":"limit()","anchor":"t:limit/0"},{"id":"locator/0","deprecated":false,"title":"locator()","anchor":"t:locator/0"},{"id":"matrix/0","deprecated":false,"title":"matrix()","anchor":"t:matrix/0"},{"id":"options/0","deprecated":false,"title":"options()","anchor":"t:options/0"},{"id":"status/0","deprecated":false,"title":"status()","anchor":"t:status/0"},{"id":"thread_with_message_params/0","deprecated":false,"title":"thread_with_message_params()","anchor":"t:thread_with_message_params/0"},{"id":"thread_without_message_params/0","deprecated":false,"title":"thread_without_message_params()","anchor":"t:thread_without_message_params/0"}],"key":"types"},{"name":"Functions","nodes":[{"id":"add_guild_member/3","deprecated":false,"title":"add_guild_member(guild_id, user_id, options)","anchor":"add_guild_member/3"},{"id":"add_guild_member!/3","deprecated":false,"title":"add_guild_member!(guild_id, user_id, options)","anchor":"add_guild_member!/3"},{"id":"add_guild_member_role/4","deprecated":false,"title":"add_guild_member_role(guild_id, user_id, role_id, reason \\\\ nil)","anchor":"add_guild_member_role/4"},{"id":"add_pinned_channel_message/2","deprecated":false,"title":"add_pinned_channel_message(channel_id, message_id)","anchor":"add_pinned_channel_message/2"},{"id":"add_pinned_channel_message!/2","deprecated":false,"title":"add_pinned_channel_message!(channel_id, message_id)","anchor":"add_pinned_channel_message!/2"},{"id":"add_thread_member/2","deprecated":false,"title":"add_thread_member(thread_id, user_id)","anchor":"add_thread_member/2"},{"id":"batch_edit_application_command_permissions/3","deprecated":false,"title":"batch_edit_application_command_permissions(application_id \\\\ Me.get().id, guild_id, permissions)","anchor":"batch_edit_application_command_permissions/3"},{"id":"begin_guild_prune/3","deprecated":false,"title":"begin_guild_prune(guild_id, days, reason \\\\ nil)","anchor":"begin_guild_prune/3"},{"id":"begin_guild_prune!/3","deprecated":false,"title":"begin_guild_prune!(guild_id, days, reason)","anchor":"begin_guild_prune!/3"},{"id":"bulk_delete_messages/3","deprecated":false,"title":"bulk_delete_messages(channel_id, messages, filter \\\\ true)","anchor":"bulk_delete_messages/3"},{"id":"bulk_delete_messages!/3","deprecated":false,"title":"bulk_delete_messages!(channel_id, messages, filter \\\\ true)","anchor":"bulk_delete_messages!/3"},{"id":"bulk_overwrite_global_application_commands/2","deprecated":false,"title":"bulk_overwrite_global_application_commands(application_id \\\\ Me.get().id, commands)","anchor":"bulk_overwrite_global_application_commands/2"},{"id":"bulk_overwrite_guild_application_commands/3","deprecated":false,"title":"bulk_overwrite_guild_application_commands(application_id \\\\ Me.get().id, guild_id, commands)","anchor":"bulk_overwrite_guild_application_commands/3"},{"id":"create_channel_invite/3","deprecated":false,"title":"create_channel_invite(channel_id, options \\\\ [], reason \\\\ nil)","anchor":"create_channel_invite/3"},{"id":"create_channel_invite!/3","deprecated":false,"title":"create_channel_invite!(channel_id, options \\\\ [], reason \\\\ nil)","anchor":"create_channel_invite!/3"},{"id":"create_dm/1","deprecated":false,"title":"create_dm(user_id)","anchor":"create_dm/1"},{"id":"create_dm!/1","deprecated":false,"title":"create_dm!(user_id)","anchor":"create_dm!/1"},{"id":"create_followup_message/3","deprecated":false,"title":"create_followup_message(application_id \\\\ Me.get().id, token, webhook_payload)","anchor":"create_followup_message/3"},{"id":"create_followup_message!/3","deprecated":false,"title":"create_followup_message!(application_id \\\\ Me.get().id, token, webhook_payload)","anchor":"create_followup_message!/3"},{"id":"create_global_application_command/2","deprecated":false,"title":"create_global_application_command(application_id \\\\ Me.get().id, command)","anchor":"create_global_application_command/2"},{"id":"create_group_dm/2","deprecated":false,"title":"create_group_dm(access_tokens, nicks)","anchor":"create_group_dm/2"},{"id":"create_group_dm!/2","deprecated":false,"title":"create_group_dm!(access_tokens, nicks)","anchor":"create_group_dm!/2"},{"id":"create_guild_application_command/3","deprecated":false,"title":"create_guild_application_command(application_id \\\\ Me.get().id, guild_id, command)","anchor":"create_guild_application_command/3"},{"id":"create_guild_auto_moderation_rule/2","deprecated":false,"title":"create_guild_auto_moderation_rule(guild_id, options)","anchor":"create_guild_auto_moderation_rule/2"},{"id":"create_guild_ban/4","deprecated":false,"title":"create_guild_ban(guild_id, user_id, days_to_delete, reason \\\\ nil)","anchor":"create_guild_ban/4"},{"id":"create_guild_channel/2","deprecated":false,"title":"create_guild_channel(guild_id, options)","anchor":"create_guild_channel/2"},{"id":"create_guild_channel!/2","deprecated":false,"title":"create_guild_channel!(guild_id, options)","anchor":"create_guild_channel!/2"},{"id":"create_guild_emoji/3","deprecated":false,"title":"create_guild_emoji(guild_id, options, reason \\\\ nil)","anchor":"create_guild_emoji/3"},{"id":"create_guild_emoji!/3","deprecated":false,"title":"create_guild_emoji!(guild_id, params, reason \\\\ nil)","anchor":"create_guild_emoji!/3"},{"id":"create_guild_integrations/2","deprecated":false,"title":"create_guild_integrations(guild_id, options)","anchor":"create_guild_integrations/2"},{"id":"create_guild_role/3","deprecated":false,"title":"create_guild_role(guild_id, options, reason \\\\ nil)","anchor":"create_guild_role/3"},{"id":"create_guild_role!/3","deprecated":false,"title":"create_guild_role!(guild_id, options, reason \\\\ nil)","anchor":"create_guild_role!/3"},{"id":"create_guild_scheduled_event/3","deprecated":false,"title":"create_guild_scheduled_event(guild_id, reason \\\\ nil, options)","anchor":"create_guild_scheduled_event/3"},{"id":"create_guild_sticker/6","deprecated":false,"title":"create_guild_sticker(guild_id, name, description, tags, file, reason \\\\ nil)","anchor":"create_guild_sticker/6"},{"id":"create_interaction_response/2","deprecated":false,"title":"create_interaction_response(interaction, response)","anchor":"create_interaction_response/2"},{"id":"create_interaction_response/3","deprecated":false,"title":"create_interaction_response(id, token, response)","anchor":"create_interaction_response/3"},{"id":"create_interaction_response!/2","deprecated":false,"title":"create_interaction_response!(interaction, response)","anchor":"create_interaction_response!/2"},{"id":"create_interaction_response!/3","deprecated":false,"title":"create_interaction_response!(id, token, response)","anchor":"create_interaction_response!/3"},{"id":"create_message/2","deprecated":false,"title":"create_message(channel_id, options)","anchor":"create_message/2"},{"id":"create_message!/2","deprecated":false,"title":"create_message!(channel_id, options)","anchor":"create_message!/2"},{"id":"create_reaction/3","deprecated":false,"title":"create_reaction(channel_id, message_id, emoji)","anchor":"create_reaction/3"},{"id":"create_reaction!/3","deprecated":false,"title":"create_reaction!(channel_id, message_id, emoji)","anchor":"create_reaction!/3"},{"id":"create_webhook/3","deprecated":false,"title":"create_webhook(channel_id, args, reason \\\\ nil)","anchor":"create_webhook/3"},{"id":"delete_all_reactions/2","deprecated":false,"title":"delete_all_reactions(channel_id, message_id)","anchor":"delete_all_reactions/2"},{"id":"delete_all_reactions!/2","deprecated":false,"title":"delete_all_reactions!(channel_id, message_id)","anchor":"delete_all_reactions!/2"},{"id":"delete_channel/2","deprecated":false,"title":"delete_channel(channel_id, reason \\\\ nil)","anchor":"delete_channel/2"},{"id":"delete_channel!/2","deprecated":false,"title":"delete_channel!(channel_id, reason \\\\ nil)","anchor":"delete_channel!/2"},{"id":"delete_channel_permissions/3","deprecated":false,"title":"delete_channel_permissions(channel_id, overwrite_id, reason \\\\ nil)","anchor":"delete_channel_permissions/3"},{"id":"delete_global_application_command/2","deprecated":false,"title":"delete_global_application_command(application_id \\\\ Me.get().id, command_id)","anchor":"delete_global_application_command/2"},{"id":"delete_guild/1","deprecated":false,"title":"delete_guild(guild_id)","anchor":"delete_guild/1"},{"id":"delete_guild!/1","deprecated":false,"title":"delete_guild!(guild_id)","anchor":"delete_guild!/1"},{"id":"delete_guild_application_command/3","deprecated":false,"title":"delete_guild_application_command(application_id \\\\ Me.get().id, guild_id, command_id)","anchor":"delete_guild_application_command/3"},{"id":"delete_guild_auto_moderation_rule/2","deprecated":false,"title":"delete_guild_auto_moderation_rule(guild_id, rule_id)","anchor":"delete_guild_auto_moderation_rule/2"},{"id":"delete_guild_emoji/3","deprecated":false,"title":"delete_guild_emoji(guild_id, emoji_id, reason \\\\ nil)","anchor":"delete_guild_emoji/3"},{"id":"delete_guild_emoji!/3","deprecated":false,"title":"delete_guild_emoji!(guild_id, emoji_id, reason \\\\ nil)","anchor":"delete_guild_emoji!/3"},{"id":"delete_guild_integrations/2","deprecated":false,"title":"delete_guild_integrations(guild_id, integration_id)","anchor":"delete_guild_integrations/2"},{"id":"delete_guild_role/3","deprecated":false,"title":"delete_guild_role(guild_id, role_id, reason \\\\ nil)","anchor":"delete_guild_role/3"},{"id":"delete_guild_role!/3","deprecated":false,"title":"delete_guild_role!(guild_id, role_id, reason \\\\ nil)","anchor":"delete_guild_role!/3"},{"id":"delete_guild_scheduled_event/2","deprecated":false,"title":"delete_guild_scheduled_event(guild_id, event_id)","anchor":"delete_guild_scheduled_event/2"},{"id":"delete_guild_sticker/2","deprecated":false,"title":"delete_guild_sticker(guild_id, sticker_id)","anchor":"delete_guild_sticker/2"},{"id":"delete_interaction_followup_message/3","deprecated":false,"title":"delete_interaction_followup_message(application_id \\\\ Me.get().id, token, message_id)","anchor":"delete_interaction_followup_message/3"},{"id":"delete_interaction_followup_message!/3","deprecated":false,"title":"delete_interaction_followup_message!(application_id \\\\ Me.get().id, token, message_id)","anchor":"delete_interaction_followup_message!/3"},{"id":"delete_interaction_response/1","deprecated":false,"title":"delete_interaction_response(interaction)","anchor":"delete_interaction_response/1"},{"id":"delete_interaction_response/2","deprecated":false,"title":"delete_interaction_response(id \\\\ Me.get().id, token)","anchor":"delete_interaction_response/2"},{"id":"delete_interaction_response!/1","deprecated":false,"title":"delete_interaction_response!(interaction)","anchor":"delete_interaction_response!/1"},{"id":"delete_interaction_response!/2","deprecated":false,"title":"delete_interaction_response!(id \\\\ Me.get().id, token)","anchor":"delete_interaction_response!/2"},{"id":"delete_invite/1","deprecated":false,"title":"delete_invite(invite_code)","anchor":"delete_invite/1"},{"id":"delete_invite!/1","deprecated":false,"title":"delete_invite!(invite_code)","anchor":"delete_invite!/1"},{"id":"delete_message/1","deprecated":false,"title":"delete_message(message)","anchor":"delete_message/1"},{"id":"delete_message/2","deprecated":false,"title":"delete_message(channel_id, message_id)","anchor":"delete_message/2"},{"id":"delete_message!/1","deprecated":false,"title":"delete_message!(message)","anchor":"delete_message!/1"},{"id":"delete_message!/2","deprecated":false,"title":"delete_message!(channel_id, message_id)","anchor":"delete_message!/2"},{"id":"delete_own_reaction/3","deprecated":false,"title":"delete_own_reaction(channel_id, message_id, emoji)","anchor":"delete_own_reaction/3"},{"id":"delete_own_reaction!/3","deprecated":false,"title":"delete_own_reaction!(channel_id, message_id, emoji)","anchor":"delete_own_reaction!/3"},{"id":"delete_pinned_channel_message/2","deprecated":false,"title":"delete_pinned_channel_message(channel_id, message_id)","anchor":"delete_pinned_channel_message/2"},{"id":"delete_pinned_channel_message!/2","deprecated":false,"title":"delete_pinned_channel_message!(channel_id, message_id)","anchor":"delete_pinned_channel_message!/2"},{"id":"delete_reaction/3","deprecated":false,"title":"delete_reaction(channel_id, message_id, emoji)","anchor":"delete_reaction/3"},{"id":"delete_reaction!/3","deprecated":false,"title":"delete_reaction!(channel_id, message_id, emoji)","anchor":"delete_reaction!/3"},{"id":"delete_user_reaction/4","deprecated":false,"title":"delete_user_reaction(channel_id, message_id, emoji, user_id)","anchor":"delete_user_reaction/4"},{"id":"delete_user_reaction!/4","deprecated":false,"title":"delete_user_reaction!(channel_id, message_id, emoji, user_id)","anchor":"delete_user_reaction!/4"},{"id":"delete_webhook/2","deprecated":false,"title":"delete_webhook(webhook_id, reason \\\\ nil)","anchor":"delete_webhook/2"},{"id":"edit_application_command_permissions/4","deprecated":false,"title":"edit_application_command_permissions(application_id \\\\ Me.get().id, guild_id, command_id, permissions)","anchor":"edit_application_command_permissions/4"},{"id":"edit_channel_permissions/4","deprecated":false,"title":"edit_channel_permissions(channel_id, overwrite_id, permission_info, reason \\\\ nil)","anchor":"edit_channel_permissions/4"},{"id":"edit_channel_permissions!/4","deprecated":false,"title":"edit_channel_permissions!(channel_id, overwrite_id, permission_info, reason \\\\ nil)","anchor":"edit_channel_permissions!/4"},{"id":"edit_global_application_command/3","deprecated":false,"title":"edit_global_application_command(application_id \\\\ Me.get().id, command_id, command)","anchor":"edit_global_application_command/3"},{"id":"edit_guild_application_command/4","deprecated":false,"title":"edit_guild_application_command(application_id \\\\ Me.get().id, guild_id, command_id, command)","anchor":"edit_guild_application_command/4"},{"id":"edit_interaction_response/2","deprecated":false,"title":"edit_interaction_response(interaction, response)","anchor":"edit_interaction_response/2"},{"id":"edit_interaction_response/3","deprecated":false,"title":"edit_interaction_response(id \\\\ Me.get().id, token, response)","anchor":"edit_interaction_response/3"},{"id":"edit_interaction_response!/2","deprecated":false,"title":"edit_interaction_response!(interaction, response)","anchor":"edit_interaction_response!/2"},{"id":"edit_interaction_response!/3","deprecated":false,"title":"edit_interaction_response!(id \\\\ Me.get().id, token, response)","anchor":"edit_interaction_response!/3"},{"id":"edit_message/2","deprecated":false,"title":"edit_message(message, options)","anchor":"edit_message/2"},{"id":"edit_message/3","deprecated":false,"title":"edit_message(channel_id, message_id, options)","anchor":"edit_message/3"},{"id":"edit_message!/2","deprecated":false,"title":"edit_message!(message, options)","anchor":"edit_message!/2"},{"id":"edit_message!/3","deprecated":false,"title":"edit_message!(channel_id, message_id, options)","anchor":"edit_message!/3"},{"id":"edit_webhook_message/4","deprecated":false,"title":"edit_webhook_message(webhook_id, webhook_token, message_id, args)","anchor":"edit_webhook_message/4"},{"id":"execute_git_webhook/3","deprecated":false,"title":"execute_git_webhook(webhook_id, webhook_token, wait \\\\ false)","anchor":"execute_git_webhook/3"},{"id":"execute_slack_webhook/3","deprecated":false,"title":"execute_slack_webhook(webhook_id, webhook_token, wait \\\\ false)","anchor":"execute_slack_webhook/3"},{"id":"execute_webhook/4","deprecated":false,"title":"execute_webhook(webhook_id, webhook_token, args, wait \\\\ false)","anchor":"execute_webhook/4"},{"id":"expire_poll/2","deprecated":false,"title":"expire_poll(channel_id, message_id)","anchor":"expire_poll/2"},{"id":"expire_poll!/2","deprecated":false,"title":"expire_poll!(channel_id, message_id)","anchor":"expire_poll!/2"},{"id":"get_application_command_permissions/3","deprecated":false,"title":"get_application_command_permissions(application_id \\\\ Me.get().id, guild_id, command_id)","anchor":"get_application_command_permissions/3"},{"id":"get_application_information/0","deprecated":false,"title":"get_application_information()","anchor":"get_application_information/0"},{"id":"get_channel/1","deprecated":false,"title":"get_channel(channel_id)","anchor":"get_channel/1"},{"id":"get_channel!/1","deprecated":false,"title":"get_channel!(channel_id)","anchor":"get_channel!/1"},{"id":"get_channel_invites/1","deprecated":false,"title":"get_channel_invites(channel_id)","anchor":"get_channel_invites/1"},{"id":"get_channel_invites!/1","deprecated":false,"title":"get_channel_invites!(channel_id)","anchor":"get_channel_invites!/1"},{"id":"get_channel_message/2","deprecated":false,"title":"get_channel_message(channel_id, message_id)","anchor":"get_channel_message/2"},{"id":"get_channel_message!/2","deprecated":false,"title":"get_channel_message!(channel_id, message_id)","anchor":"get_channel_message!/2"},{"id":"get_channel_messages/3","deprecated":false,"title":"get_channel_messages(channel_id, limit, locator \\\\ {})","anchor":"get_channel_messages/3"},{"id":"get_channel_messages!/3","deprecated":false,"title":"get_channel_messages!(channel_id, limit, locator \\\\ {})","anchor":"get_channel_messages!/3"},{"id":"get_channel_webhooks/1","deprecated":false,"title":"get_channel_webhooks(channel_id)","anchor":"get_channel_webhooks/1"},{"id":"get_current_user/0","deprecated":false,"title":"get_current_user()","anchor":"get_current_user/0"},{"id":"get_current_user!/0","deprecated":false,"title":"get_current_user!()","anchor":"get_current_user!/0"},{"id":"get_current_user_guilds/1","deprecated":false,"title":"get_current_user_guilds(options \\\\ [])","anchor":"get_current_user_guilds/1"},{"id":"get_current_user_guilds!/1","deprecated":false,"title":"get_current_user_guilds!(options \\\\ [])","anchor":"get_current_user_guilds!/1"},{"id":"get_global_application_commands/1","deprecated":false,"title":"get_global_application_commands(application_id \\\\ Me.get().id)","anchor":"get_global_application_commands/1"},{"id":"get_guild/1","deprecated":false,"title":"get_guild(guild_id)","anchor":"get_guild/1"},{"id":"get_guild!/1","deprecated":false,"title":"get_guild!(guild_id)","anchor":"get_guild!/1"},{"id":"get_guild_application_command_permissions/2","deprecated":false,"title":"get_guild_application_command_permissions(application_id \\\\ Me.get().id, guild_id)","anchor":"get_guild_application_command_permissions/2"},{"id":"get_guild_application_commands/2","deprecated":false,"title":"get_guild_application_commands(application_id \\\\ Me.get().id, guild_id)","anchor":"get_guild_application_commands/2"},{"id":"get_guild_audit_log/2","deprecated":false,"title":"get_guild_audit_log(guild_id, options \\\\ [])","anchor":"get_guild_audit_log/2"},{"id":"get_guild_auto_moderation_rule/2","deprecated":false,"title":"get_guild_auto_moderation_rule(guild_id, rule_id)","anchor":"get_guild_auto_moderation_rule/2"},{"id":"get_guild_auto_moderation_rules/1","deprecated":false,"title":"get_guild_auto_moderation_rules(guild_id)","anchor":"get_guild_auto_moderation_rules/1"},{"id":"get_guild_ban/2","deprecated":false,"title":"get_guild_ban(guild_id, user_id)","anchor":"get_guild_ban/2"},{"id":"get_guild_bans/1","deprecated":false,"title":"get_guild_bans(guild_id)","anchor":"get_guild_bans/1"},{"id":"get_guild_channels/1","deprecated":false,"title":"get_guild_channels(guild_id)","anchor":"get_guild_channels/1"},{"id":"get_guild_channels!/1","deprecated":false,"title":"get_guild_channels!(guild_id)","anchor":"get_guild_channels!/1"},{"id":"get_guild_emoji/2","deprecated":false,"title":"get_guild_emoji(guild_id, emoji_id)","anchor":"get_guild_emoji/2"},{"id":"get_guild_emoji!/2","deprecated":false,"title":"get_guild_emoji!(guild_id, emoji_id)","anchor":"get_guild_emoji!/2"},{"id":"get_guild_integrations/1","deprecated":false,"title":"get_guild_integrations(guild_id)","anchor":"get_guild_integrations/1"},{"id":"get_guild_invites/1","deprecated":false,"title":"get_guild_invites(guild_id)","anchor":"get_guild_invites/1"},{"id":"get_guild_invites!/1","deprecated":false,"title":"get_guild_invites!(guild_id)","anchor":"get_guild_invites!/1"},{"id":"get_guild_member/2","deprecated":false,"title":"get_guild_member(guild_id, user_id)","anchor":"get_guild_member/2"},{"id":"get_guild_member!/2","deprecated":false,"title":"get_guild_member!(guild_id, user_id)","anchor":"get_guild_member!/2"},{"id":"get_guild_prune_count/2","deprecated":false,"title":"get_guild_prune_count(guild_id, days)","anchor":"get_guild_prune_count/2"},{"id":"get_guild_prune_count!/2","deprecated":false,"title":"get_guild_prune_count!(guild_id, days)","anchor":"get_guild_prune_count!/2"},{"id":"get_guild_roles/1","deprecated":false,"title":"get_guild_roles(guild_id)","anchor":"get_guild_roles/1"},{"id":"get_guild_roles!/1","deprecated":false,"title":"get_guild_roles!(guild_id)","anchor":"get_guild_roles!/1"},{"id":"get_guild_scheduled_event/2","deprecated":false,"title":"get_guild_scheduled_event(guild_id, event_id)","anchor":"get_guild_scheduled_event/2"},{"id":"get_guild_scheduled_event_users/3","deprecated":false,"title":"get_guild_scheduled_event_users(guild_id, event_id, params \\\\ [])","anchor":"get_guild_scheduled_event_users/3"},{"id":"get_guild_scheduled_events/1","deprecated":false,"title":"get_guild_scheduled_events(guild_id)","anchor":"get_guild_scheduled_events/1"},{"id":"get_guild_sticker/2","deprecated":false,"title":"get_guild_sticker(guild_id, sticker_id)","anchor":"get_guild_sticker/2"},{"id":"get_guild_webhooks/1","deprecated":false,"title":"get_guild_webhooks(guild_id)","anchor":"get_guild_webhooks/1"},{"id":"get_guild_widget/1","deprecated":false,"title":"get_guild_widget(guild_id)","anchor":"get_guild_widget/1"},{"id":"get_invite/2","deprecated":false,"title":"get_invite(invite_code, options \\\\ [])","anchor":"get_invite/2"},{"id":"get_invite!/2","deprecated":false,"title":"get_invite!(invite_code, options \\\\ [])","anchor":"get_invite!/2"},{"id":"get_original_interaction_response/1","deprecated":false,"title":"get_original_interaction_response(interaction)","anchor":"get_original_interaction_response/1"},{"id":"get_pinned_messages/1","deprecated":false,"title":"get_pinned_messages(channel_id)","anchor":"get_pinned_messages/1"},{"id":"get_pinned_messages!/1","deprecated":false,"title":"get_pinned_messages!(channel_id)","anchor":"get_pinned_messages!/1"},{"id":"get_poll_answer_voters/4","deprecated":false,"title":"get_poll_answer_voters(channel_id, message_id, answer_id, params \\\\ [])","anchor":"get_poll_answer_voters/4"},{"id":"get_poll_answer_voters!/4","deprecated":false,"title":"get_poll_answer_voters!(channel_id, message_id, answer_id, params \\\\ [])","anchor":"get_poll_answer_voters!/4"},{"id":"get_reactions/4","deprecated":false,"title":"get_reactions(channel_id, message_id, emoji, params \\\\ [])","anchor":"get_reactions/4"},{"id":"get_reactions!/4","deprecated":false,"title":"get_reactions!(channel_id, message_id, emoji, params \\\\ [])","anchor":"get_reactions!/4"},{"id":"get_sticker/1","deprecated":false,"title":"get_sticker(sticker_id)","anchor":"get_sticker/1"},{"id":"get_sticker_packs/0","deprecated":false,"title":"get_sticker_packs()","anchor":"get_sticker_packs/0"},{"id":"get_thread_member/2","deprecated":false,"title":"get_thread_member(thread_id, user_id)","anchor":"get_thread_member/2"},{"id":"get_thread_members/1","deprecated":false,"title":"get_thread_members(thread_id)","anchor":"get_thread_members/1"},{"id":"get_user/1","deprecated":false,"title":"get_user(user_id)","anchor":"get_user/1"},{"id":"get_user!/1","deprecated":false,"title":"get_user!(user_id)","anchor":"get_user!/1"},{"id":"get_user_connections/0","deprecated":false,"title":"get_user_connections()","anchor":"get_user_connections/0"},{"id":"get_user_dms/0","deprecated":false,"title":"get_user_dms()","anchor":"get_user_dms/0"},{"id":"get_user_dms!/0","deprecated":false,"title":"get_user_dms!()","anchor":"get_user_dms!/0"},{"id":"get_voice_region/1","deprecated":false,"title":"get_voice_region(guild_id)","anchor":"get_voice_region/1"},{"id":"get_webhook/1","deprecated":false,"title":"get_webhook(webhook_id)","anchor":"get_webhook/1"},{"id":"get_webhook_message/2","deprecated":false,"title":"get_webhook_message(webhook, message_id)","anchor":"get_webhook_message/2"},{"id":"get_webhook_with_token/2","deprecated":false,"title":"get_webhook_with_token(webhook_id, webhook_token)","anchor":"get_webhook_with_token/2"},{"id":"join_thread/1","deprecated":false,"title":"join_thread(thread_id)","anchor":"join_thread/1"},{"id":"leave_guild/1","deprecated":false,"title":"leave_guild(guild_id)","anchor":"leave_guild/1"},{"id":"leave_thread/1","deprecated":false,"title":"leave_thread(thread_id)","anchor":"leave_thread/1"},{"id":"list_guild_emojis/1","deprecated":false,"title":"list_guild_emojis(guild_id)","anchor":"list_guild_emojis/1"},{"id":"list_guild_emojis!/1","deprecated":false,"title":"list_guild_emojis!(guild_id)","anchor":"list_guild_emojis!/1"},{"id":"list_guild_members/2","deprecated":false,"title":"list_guild_members(guild_id, options \\\\ %{})","anchor":"list_guild_members/2"},{"id":"list_guild_members!/2","deprecated":false,"title":"list_guild_members!(guild_id, options \\\\ %{})","anchor":"list_guild_members!/2"},{"id":"list_guild_stickers/1","deprecated":false,"title":"list_guild_stickers(guild_id)","anchor":"list_guild_stickers/1"},{"id":"list_guild_threads/1","deprecated":false,"title":"list_guild_threads(guild_id)","anchor":"list_guild_threads/1"},{"id":"list_joined_private_archived_threads/2","deprecated":false,"title":"list_joined_private_archived_threads(channel_id, options \\\\ [])","anchor":"list_joined_private_archived_threads/2"},{"id":"list_private_archived_threads/2","deprecated":false,"title":"list_private_archived_threads(channel_id, options \\\\ [])","anchor":"list_private_archived_threads/2"},{"id":"list_public_archived_threads/2","deprecated":false,"title":"list_public_archived_threads(channel_id, options \\\\ [])","anchor":"list_public_archived_threads/2"},{"id":"list_voice_regions/0","deprecated":false,"title":"list_voice_regions()","anchor":"list_voice_regions/0"},{"id":"modify_channel/3","deprecated":false,"title":"modify_channel(channel_id, options, reason \\\\ nil)","anchor":"modify_channel/3"},{"id":"modify_channel!/3","deprecated":false,"title":"modify_channel!(channel_id, options, reason \\\\ nil)","anchor":"modify_channel!/3"},{"id":"modify_current_user/1","deprecated":false,"title":"modify_current_user(options)","anchor":"modify_current_user/1"},{"id":"modify_current_user!/1","deprecated":false,"title":"modify_current_user!(options)","anchor":"modify_current_user!/1"},{"id":"modify_current_user_nick/2","deprecated":false,"title":"modify_current_user_nick(guild_id, options \\\\ %{})","anchor":"modify_current_user_nick/2"},{"id":"modify_current_user_nick!/2","deprecated":false,"title":"modify_current_user_nick!(guild_id, options \\\\ %{})","anchor":"modify_current_user_nick!/2"},{"id":"modify_guild/3","deprecated":false,"title":"modify_guild(guild_id, options \\\\ [], reason \\\\ nil)","anchor":"modify_guild/3"},{"id":"modify_guild!/2","deprecated":false,"title":"modify_guild!(guild_id, options \\\\ [])","anchor":"modify_guild!/2"},{"id":"modify_guild_auto_moderation_rule/3","deprecated":false,"title":"modify_guild_auto_moderation_rule(guild_id, rule_id, options)","anchor":"modify_guild_auto_moderation_rule/3"},{"id":"modify_guild_channel_positions/2","deprecated":false,"title":"modify_guild_channel_positions(guild_id, positions)","anchor":"modify_guild_channel_positions/2"},{"id":"modify_guild_channel_positions!/2","deprecated":false,"title":"modify_guild_channel_positions!(guild_id, positions)","anchor":"modify_guild_channel_positions!/2"},{"id":"modify_guild_emoji/4","deprecated":false,"title":"modify_guild_emoji(guild_id, emoji_id, options \\\\ %{}, reason \\\\ nil)","anchor":"modify_guild_emoji/4"},{"id":"modify_guild_emoji!/4","deprecated":false,"title":"modify_guild_emoji!(guild_id, emoji_id, options, reason \\\\ nil)","anchor":"modify_guild_emoji!/4"},{"id":"modify_guild_integrations/3","deprecated":false,"title":"modify_guild_integrations(guild_id, integration_id, options)","anchor":"modify_guild_integrations/3"},{"id":"modify_guild_member/4","deprecated":false,"title":"modify_guild_member(guild_id, user_id, options \\\\ %{}, reason \\\\ nil)","anchor":"modify_guild_member/4"},{"id":"modify_guild_member!/4","deprecated":false,"title":"modify_guild_member!(guild_id, user_id, options \\\\ %{}, reason \\\\ nil)","anchor":"modify_guild_member!/4"},{"id":"modify_guild_role/4","deprecated":false,"title":"modify_guild_role(guild_id, role_id, options, reason \\\\ nil)","anchor":"modify_guild_role/4"},{"id":"modify_guild_role!/4","deprecated":false,"title":"modify_guild_role!(guild_id, role_id, options, reason \\\\ nil)","anchor":"modify_guild_role!/4"},{"id":"modify_guild_role_positions/3","deprecated":false,"title":"modify_guild_role_positions(guild_id, positions, reason \\\\ nil)","anchor":"modify_guild_role_positions/3"},{"id":"modify_guild_role_positions!/3","deprecated":false,"title":"modify_guild_role_positions!(guild_id, positions, reason \\\\ nil)","anchor":"modify_guild_role_positions!/3"},{"id":"modify_guild_scheduled_event/4","deprecated":false,"title":"modify_guild_scheduled_event(guild_id, event_id, reason \\\\ nil, options)","anchor":"modify_guild_scheduled_event/4"},{"id":"modify_guild_sticker/3","deprecated":false,"title":"modify_guild_sticker(guild_id, sticker_id, options)","anchor":"modify_guild_sticker/3"},{"id":"modify_guild_widget/2","deprecated":false,"title":"modify_guild_widget(guild_id, options)","anchor":"modify_guild_widget/2"},{"id":"modify_webhook/3","deprecated":false,"title":"modify_webhook(webhook_id, args, reason \\\\ nil)","anchor":"modify_webhook/3"},{"id":"modify_webhook_with_token/4","deprecated":false,"title":"modify_webhook_with_token(webhook_id, webhook_token, args, reason \\\\ nil)","anchor":"modify_webhook_with_token/4"},{"id":"remove_guild_ban/3","deprecated":false,"title":"remove_guild_ban(guild_id, user_id, reason \\\\ nil)","anchor":"remove_guild_ban/3"},{"id":"remove_guild_member/3","deprecated":false,"title":"remove_guild_member(guild_id, user_id, reason \\\\ nil)","anchor":"remove_guild_member/3"},{"id":"remove_guild_member!/3","deprecated":false,"title":"remove_guild_member!(guild_id, user_id, reason \\\\ nil)","anchor":"remove_guild_member!/3"},{"id":"remove_guild_member_role/4","deprecated":false,"title":"remove_guild_member_role(guild_id, user_id, role_id, reason \\\\ nil)","anchor":"remove_guild_member_role/4"},{"id":"remove_thread_member/2","deprecated":false,"title":"remove_thread_member(thread_id, user_id)","anchor":"remove_thread_member/2"},{"id":"request/1","deprecated":false,"title":"request(request)","anchor":"request/1"},{"id":"request/4","deprecated":false,"title":"request(method, route, body \\\\ \"\", params \\\\ [])","anchor":"request/4"},{"id":"request_multipart/4","deprecated":false,"title":"request_multipart(method, route, body, params \\\\ [])","anchor":"request_multipart/4"},{"id":"start_thread/3","deprecated":false,"title":"start_thread(channel_id, options, reason \\\\ nil)","anchor":"start_thread/3"},{"id":"start_thread_in_forum_channel/3","deprecated":false,"title":"start_thread_in_forum_channel(channel_id, options, reason \\\\ nil)","anchor":"start_thread_in_forum_channel/3"},{"id":"start_thread_with_message/4","deprecated":false,"title":"start_thread_with_message(channel_id, message_id, options, reason \\\\ nil)","anchor":"start_thread_with_message/4"},{"id":"start_typing/1","deprecated":false,"title":"start_typing(channel_id)","anchor":"start_typing/1"},{"id":"start_typing!/1","deprecated":false,"title":"start_typing!(channel_id)","anchor":"start_typing!/1"},{"id":"sync_guild_integrations/2","deprecated":false,"title":"sync_guild_integrations(guild_id, integration_id)","anchor":"sync_guild_integrations/2"},{"id":"update_shard_status/5","deprecated":false,"title":"update_shard_status(pid, status, game, type \\\\ 0, stream \\\\ nil)","anchor":"update_shard_status/5"},{"id":"update_status/4","deprecated":false,"title":"update_status(status, game, type \\\\ 0, stream \\\\ nil)","anchor":"update_status/4"},{"id":"update_voice_state/4","deprecated":false,"title":"update_voice_state(guild_id, channel_id, self_mute \\\\ false, self_deaf \\\\ false)","anchor":"update_voice_state/4"}],"key":"functions"}]},{"id":"Nostrum.Consumer","deprecated":false,"group":"Api","title":"Nostrum.Consumer","sections":[{"id":"Consuming gateway events","anchor":"module-consuming-gateway-events"},{"id":"Running multiple consumers","anchor":"module-running-multiple-consumers"},{"id":"Example consumer","anchor":"module-example-consumer"}],"nodeGroups":[{"name":"Types","nodes":[{"id":"auto_moderation_rule_create/0","deprecated":false,"title":"auto_moderation_rule_create()","anchor":"t:auto_moderation_rule_create/0"},{"id":"auto_moderation_rule_delete/0","deprecated":false,"title":"auto_moderation_rule_delete()","anchor":"t:auto_moderation_rule_delete/0"},{"id":"auto_moderation_rule_execute/0","deprecated":false,"title":"auto_moderation_rule_execute()","anchor":"t:auto_moderation_rule_execute/0"},{"id":"auto_moderation_rule_update/0","deprecated":false,"title":"auto_moderation_rule_update()","anchor":"t:auto_moderation_rule_update/0"},{"id":"channel_create/0","deprecated":false,"title":"channel_create()","anchor":"t:channel_create/0"},{"id":"channel_delete/0","deprecated":false,"title":"channel_delete()","anchor":"t:channel_delete/0"},{"id":"channel_pins_ack/0","deprecated":false,"title":"channel_pins_ack()","anchor":"t:channel_pins_ack/0"},{"id":"channel_pins_update/0","deprecated":false,"title":"channel_pins_update()","anchor":"t:channel_pins_update/0"},{"id":"channel_update/0","deprecated":false,"title":"channel_update()","anchor":"t:channel_update/0"},{"id":"event/0","deprecated":false,"title":"event()","anchor":"t:event/0"},{"id":"guild_audit_log_entry_create/0","deprecated":false,"title":"guild_audit_log_entry_create()","anchor":"t:guild_audit_log_entry_create/0"},{"id":"guild_available/0","deprecated":false,"title":"guild_available()","anchor":"t:guild_available/0"},{"id":"guild_ban_add/0","deprecated":false,"title":"guild_ban_add()","anchor":"t:guild_ban_add/0"},{"id":"guild_ban_remove/0","deprecated":false,"title":"guild_ban_remove()","anchor":"t:guild_ban_remove/0"},{"id":"guild_create/0","deprecated":false,"title":"guild_create()","anchor":"t:guild_create/0"},{"id":"guild_delete/0","deprecated":false,"title":"guild_delete()","anchor":"t:guild_delete/0"},{"id":"guild_emojis_update/0","deprecated":false,"title":"guild_emojis_update()","anchor":"t:guild_emojis_update/0"},{"id":"guild_integrations_update/0","deprecated":false,"title":"guild_integrations_update()","anchor":"t:guild_integrations_update/0"},{"id":"guild_member_add/0","deprecated":false,"title":"guild_member_add()","anchor":"t:guild_member_add/0"},{"id":"guild_member_remove/0","deprecated":false,"title":"guild_member_remove()","anchor":"t:guild_member_remove/0"},{"id":"guild_member_update/0","deprecated":false,"title":"guild_member_update()","anchor":"t:guild_member_update/0"},{"id":"guild_members_chunk/0","deprecated":false,"title":"guild_members_chunk()","anchor":"t:guild_members_chunk/0"},{"id":"guild_role_create/0","deprecated":false,"title":"guild_role_create()","anchor":"t:guild_role_create/0"},{"id":"guild_role_delete/0","deprecated":false,"title":"guild_role_delete()","anchor":"t:guild_role_delete/0"},{"id":"guild_role_update/0","deprecated":false,"title":"guild_role_update()","anchor":"t:guild_role_update/0"},{"id":"guild_scheduled_event_create/0","deprecated":false,"title":"guild_scheduled_event_create()","anchor":"t:guild_scheduled_event_create/0"},{"id":"guild_scheduled_event_delete/0","deprecated":false,"title":"guild_scheduled_event_delete()","anchor":"t:guild_scheduled_event_delete/0"},{"id":"guild_scheduled_event_update/0","deprecated":false,"title":"guild_scheduled_event_update()","anchor":"t:guild_scheduled_event_update/0"},{"id":"guild_scheduled_event_user_add/0","deprecated":false,"title":"guild_scheduled_event_user_add()","anchor":"t:guild_scheduled_event_user_add/0"},{"id":"guild_scheduled_event_user_remove/0","deprecated":false,"title":"guild_scheduled_event_user_remove()","anchor":"t:guild_scheduled_event_user_remove/0"},{"id":"guild_stickers_update/0","deprecated":false,"title":"guild_stickers_update()","anchor":"t:guild_stickers_update/0"},{"id":"guild_unavailable/0","deprecated":false,"title":"guild_unavailable()","anchor":"t:guild_unavailable/0"},{"id":"guild_update/0","deprecated":false,"title":"guild_update()","anchor":"t:guild_update/0"},{"id":"integration_create/0","deprecated":false,"title":"integration_create()","anchor":"t:integration_create/0"},{"id":"integration_delete/0","deprecated":false,"title":"integration_delete()","anchor":"t:integration_delete/0"},{"id":"integration_update/0","deprecated":false,"title":"integration_update()","anchor":"t:integration_update/0"},{"id":"interaction_create/0","deprecated":false,"title":"interaction_create()","anchor":"t:interaction_create/0"},{"id":"message_ack/0","deprecated":false,"title":"message_ack()","anchor":"t:message_ack/0"},{"id":"message_create/0","deprecated":false,"title":"message_create()","anchor":"t:message_create/0"},{"id":"message_delete/0","deprecated":false,"title":"message_delete()","anchor":"t:message_delete/0"},{"id":"message_delete_bulk/0","deprecated":false,"title":"message_delete_bulk()","anchor":"t:message_delete_bulk/0"},{"id":"message_poll_vote_add/0","deprecated":false,"title":"message_poll_vote_add()","anchor":"t:message_poll_vote_add/0"},{"id":"message_poll_vote_remove/0","deprecated":false,"title":"message_poll_vote_remove()","anchor":"t:message_poll_vote_remove/0"},{"id":"message_reaction_add/0","deprecated":false,"title":"message_reaction_add()","anchor":"t:message_reaction_add/0"},{"id":"message_reaction_remove/0","deprecated":false,"title":"message_reaction_remove()","anchor":"t:message_reaction_remove/0"},{"id":"message_reaction_remove_all/0","deprecated":false,"title":"message_reaction_remove_all()","anchor":"t:message_reaction_remove_all/0"},{"id":"message_reaction_remove_emoji/0","deprecated":false,"title":"message_reaction_remove_emoji()","anchor":"t:message_reaction_remove_emoji/0"},{"id":"message_update/0","deprecated":false,"title":"message_update()","anchor":"t:message_update/0"},{"id":"presence_update/0","deprecated":false,"title":"presence_update()","anchor":"t:presence_update/0"},{"id":"ready/0","deprecated":false,"title":"ready()","anchor":"t:ready/0"},{"id":"resumed/0","deprecated":false,"title":"resumed()","anchor":"t:resumed/0"},{"id":"thread_create/0","deprecated":false,"title":"thread_create()","anchor":"t:thread_create/0"},{"id":"thread_delete/0","deprecated":false,"title":"thread_delete()","anchor":"t:thread_delete/0"},{"id":"thread_list_sync/0","deprecated":false,"title":"thread_list_sync()","anchor":"t:thread_list_sync/0"},{"id":"thread_member_update/0","deprecated":false,"title":"thread_member_update()","anchor":"t:thread_member_update/0"},{"id":"thread_members_update/0","deprecated":false,"title":"thread_members_update()","anchor":"t:thread_members_update/0"},{"id":"thread_update/0","deprecated":false,"title":"thread_update()","anchor":"t:thread_update/0"},{"id":"typing_start/0","deprecated":false,"title":"typing_start()","anchor":"t:typing_start/0"},{"id":"user_settings_update/0","deprecated":false,"title":"user_settings_update()","anchor":"t:user_settings_update/0"},{"id":"user_update/0","deprecated":false,"title":"user_update()","anchor":"t:user_update/0"},{"id":"voice_incoming_packet/0","deprecated":false,"title":"voice_incoming_packet()","anchor":"t:voice_incoming_packet/0"},{"id":"voice_ready/0","deprecated":false,"title":"voice_ready()","anchor":"t:voice_ready/0"},{"id":"voice_server_update/0","deprecated":false,"title":"voice_server_update()","anchor":"t:voice_server_update/0"},{"id":"voice_speaking_update/0","deprecated":false,"title":"voice_speaking_update()","anchor":"t:voice_speaking_update/0"},{"id":"voice_state_update/0","deprecated":false,"title":"voice_state_update()","anchor":"t:voice_state_update/0"},{"id":"webhooks_update/0","deprecated":false,"title":"webhooks_update()","anchor":"t:webhooks_update/0"}],"key":"types"},{"name":"Callbacks","nodes":[{"id":"handle_event/1","deprecated":false,"title":"handle_event(event)","anchor":"c:handle_event/1"}],"key":"callbacks"}]},{"id":"Nostrum.ConsumerGroup","deprecated":false,"group":"Api","title":"Nostrum.ConsumerGroup","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"child_spec/1","deprecated":false,"title":"child_spec(opts)","anchor":"child_spec/1"},{"id":"demonitor/1","deprecated":false,"title":"demonitor(ref)","anchor":"demonitor/1"},{"id":"dispatch/1","deprecated":false,"title":"dispatch(event)","anchor":"dispatch/1"},{"id":"join/0","deprecated":false,"title":"join()","anchor":"join/0"},{"id":"join/1","deprecated":false,"title":"join(pid)","anchor":"join/1"},{"id":"monitor/0","deprecated":false,"title":"monitor()","anchor":"monitor/0"},{"id":"start_link/1","deprecated":false,"title":"start_link(opts)","anchor":"start_link/1"}],"key":"functions"}]},{"id":"Nostrum.Permission","deprecated":false,"group":"Api","title":"Nostrum.Permission","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"bit/0","deprecated":false,"title":"bit()","anchor":"t:bit/0"},{"id":"bitset/0","deprecated":false,"title":"bitset()","anchor":"t:bitset/0"},{"id":"general_permission/0","deprecated":false,"title":"general_permission()","anchor":"t:general_permission/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"text_permission/0","deprecated":false,"title":"text_permission()","anchor":"t:text_permission/0"},{"id":"voice_permission/0","deprecated":false,"title":"voice_permission()","anchor":"t:voice_permission/0"}],"key":"types"},{"name":"Functions","nodes":[{"id":"all/0","deprecated":false,"title":"all()","anchor":"all/0"},{"id":"from_bit/1","deprecated":false,"title":"from_bit(bit)","anchor":"from_bit/1"},{"id":"from_bit!/1","deprecated":false,"title":"from_bit!(bit)","anchor":"from_bit!/1"},{"id":"from_bitset/1","deprecated":false,"title":"from_bitset(bitset)","anchor":"from_bitset/1"},{"id":"is_permission/1","deprecated":false,"title":"is_permission(term)","anchor":"is_permission/1"},{"id":"to_bit/1","deprecated":false,"title":"to_bit(permission)","anchor":"to_bit/1"},{"id":"to_bitset/1","deprecated":false,"title":"to_bitset(permissions)","anchor":"to_bitset/1"}],"key":"functions"}]},{"id":"Nostrum.Voice","deprecated":false,"group":"Api","title":"Nostrum.Voice","sections":[{"id":"Voice Without FFmpeg","anchor":"module-voice-without-ffmpeg"}],"nodeGroups":[{"name":"Types","nodes":[{"id":"opus_packet/0","deprecated":false,"title":"opus_packet()","anchor":"t:opus_packet/0"},{"id":"play_input/0","deprecated":false,"title":"play_input()","anchor":"t:play_input/0"},{"id":"play_type/0","deprecated":false,"title":"play_type()","anchor":"t:play_type/0"},{"id":"rtp_opus/0","deprecated":false,"title":"rtp_opus()","anchor":"t:rtp_opus/0"},{"id":"rtp_sequence/0","deprecated":false,"title":"rtp_sequence()","anchor":"t:rtp_sequence/0"},{"id":"rtp_ssrc/0","deprecated":false,"title":"rtp_ssrc()","anchor":"t:rtp_ssrc/0"},{"id":"rtp_timestamp/0","deprecated":false,"title":"rtp_timestamp()","anchor":"t:rtp_timestamp/0"}],"key":"types"},{"name":"Functions","nodes":[{"id":"child_spec/1","deprecated":false,"title":"child_spec(init_arg)","anchor":"child_spec/1"},{"id":"connect_to_gateway/1","deprecated":false,"title":"connect_to_gateway(guild_id)","anchor":"connect_to_gateway/1"},{"id":"create_ogg_bitstream/1","deprecated":false,"title":"create_ogg_bitstream(opus_packets)","anchor":"create_ogg_bitstream/1"},{"id":"extract_opus_packet/1","deprecated":false,"title":"extract_opus_packet(packet)","anchor":"extract_opus_packet/1"},{"id":"get_channel_id/1","deprecated":false,"title":"get_channel_id(guild_id)","anchor":"get_channel_id/1"},{"id":"get_current_url/1","deprecated":false,"title":"get_current_url(guild_id)","anchor":"get_current_url/1"},{"id":"get_ssrc_map/1","deprecated":false,"title":"get_ssrc_map(guild_id)","anchor":"get_ssrc_map/1"},{"id":"join_channel/5","deprecated":false,"title":"join_channel(guild_id, channel_id, self_mute \\\\ false, self_deaf \\\\ false, persist \\\\ true)","anchor":"join_channel/5"},{"id":"leave_channel/1","deprecated":false,"title":"leave_channel(guild_id)","anchor":"leave_channel/1"},{"id":"listen/3","deprecated":false,"title":"listen(guild_id, num_packets, raw_rtp \\\\ false)","anchor":"listen/3"},{"id":"pad_opus/1","deprecated":false,"title":"pad_opus(packets)","anchor":"pad_opus/1"},{"id":"pause/1","deprecated":false,"title":"pause(guild_id)","anchor":"pause/1"},{"id":"play/4","deprecated":false,"title":"play(guild_id, input, type \\\\ :url, options \\\\ [])","anchor":"play/4"},{"id":"playing?/1","deprecated":false,"title":"playing?(guild_id)","anchor":"playing?/1"},{"id":"ready?/1","deprecated":false,"title":"ready?(guild_id)","anchor":"ready?/1"},{"id":"resume/1","deprecated":false,"title":"resume(guild_id)","anchor":"resume/1"},{"id":"send_frames/2","deprecated":false,"title":"send_frames(guild_id, frames)","anchor":"send_frames/2"},{"id":"set_is_speaking/2","deprecated":false,"title":"set_is_speaking(guild_id, speaking)","anchor":"set_is_speaking/2"},{"id":"start_listen_async/1","deprecated":false,"title":"start_listen_async(guild_id)","anchor":"start_listen_async/1"},{"id":"stop/1","deprecated":false,"title":"stop(guild_id)","anchor":"stop/1"},{"id":"stop_listen_async/1","deprecated":false,"title":"stop_listen_async(guild_id)","anchor":"stop_listen_async/1"}],"key":"functions"}]},{"id":"Nostrum.Voice.Crypto.Aes","deprecated":false,"group":"Api","title":"Nostrum.Voice.Crypto.Aes","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"decrypt/5","deprecated":false,"title":"decrypt(cipher_text, key, nonce, aad, tag)","anchor":"decrypt/5"},{"id":"encrypt/4","deprecated":false,"title":"encrypt(plain_text, key, nonce, aad)","anchor":"encrypt/4"}],"key":"functions"}]},{"id":"Nostrum.Voice.Crypto.Chacha","deprecated":false,"group":"Api","title":"Nostrum.Voice.Crypto.Chacha","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"decrypt/5","deprecated":false,"title":"decrypt(cipher_text, key, nonce, aad, tag)","anchor":"decrypt/5"},{"id":"encrypt/4","deprecated":false,"title":"encrypt(plain_text, key, nonce, aad)","anchor":"encrypt/4"}],"key":"functions"}]},{"id":"Nostrum.Voice.Crypto.Salsa","deprecated":false,"group":"Api","title":"Nostrum.Voice.Crypto.Salsa","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"block_binary_to_tuple/1","deprecated":false,"title":"block_binary_to_tuple(arg)","anchor":"block_binary_to_tuple/1"},{"id":"decrypt/3","deprecated":false,"title":"decrypt(encrypted_message, key, nonce)","anchor":"decrypt/3"},{"id":"encrypt/3","deprecated":false,"title":"encrypt(plain_text, key, nonce)","anchor":"encrypt/3"}],"key":"functions"}]},{"id":"Nostrum.Cache.CacheSupervisor","deprecated":false,"group":"Cache","title":"Nostrum.Cache.CacheSupervisor","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"child_spec/1","deprecated":false,"title":"child_spec(init_arg)","anchor":"child_spec/1"},{"id":"init/1","deprecated":false,"title":"init(list)","anchor":"init/1"},{"id":"start_link/1","deprecated":false,"title":"start_link(list)","anchor":"start_link/1"}],"key":"functions"}],"nested_title":".CacheSupervisor","nested_context":"Nostrum.Cache"},{"id":"Nostrum.Cache.ChannelGuildMapping","deprecated":false,"group":"Cache","title":"Nostrum.Cache.ChannelGuildMapping","sections":[{"id":"Purpose","anchor":"module-purpose"},{"id":"Configuration","anchor":"module-configuration"}],"nodeGroups":[{"name":"Callbacks","nodes":[{"id":"child_spec/1","deprecated":false,"title":"child_spec(term)","anchor":"c:child_spec/1"},{"id":"create/2","deprecated":false,"title":"create(id, id)","anchor":"c:create/2"},{"id":"delete/1","deprecated":false,"title":"delete(id)","anchor":"c:delete/1"},{"id":"get/1","deprecated":false,"title":"get(id)","anchor":"c:get/1"}],"key":"callbacks"},{"name":"Functions","nodes":[{"id":"create/2","deprecated":false,"title":"create(guild_id, shard_num)","anchor":"create/2"},{"id":"delete/1","deprecated":false,"title":"delete(guild_id)","anchor":"delete/1"},{"id":"get/1","deprecated":false,"title":"get(guild_id)","anchor":"get/1"}],"key":"functions"}],"nested_title":".ChannelGuildMapping","nested_context":"Nostrum.Cache"},{"id":"Nostrum.Cache.GuildCache","deprecated":false,"group":"Cache","title":"Nostrum.Cache.GuildCache","sections":[{"id":"Writing your own guild cache","anchor":"module-writing-your-own-guild-cache"}],"nodeGroups":[{"name":"Callbacks","nodes":[{"id":"channel_create/2","deprecated":false,"title":"channel_create(id, channel)","anchor":"c:channel_create/2"},{"id":"channel_delete/2","deprecated":false,"title":"channel_delete(id, id)","anchor":"c:channel_delete/2"},{"id":"channel_update/2","deprecated":false,"title":"channel_update(id, channel)","anchor":"c:channel_update/2"},{"id":"child_spec/1","deprecated":false,"title":"child_spec(term)","anchor":"c:child_spec/1"},{"id":"create/1","deprecated":false,"title":"create(map)","anchor":"c:create/1"},{"id":"delete/1","deprecated":false,"title":"delete(id)","anchor":"c:delete/1"},{"id":"emoji_update/2","deprecated":false,"title":"emoji_update(id, emojis)","anchor":"c:emoji_update/2"},{"id":"member_count_down/1","deprecated":false,"title":"member_count_down(id)","anchor":"c:member_count_down/1"},{"id":"member_count_up/1","deprecated":false,"title":"member_count_up(id)","anchor":"c:member_count_up/1"},{"id":"query_handle/0","deprecated":false,"title":"query_handle()","anchor":"c:query_handle/0"},{"id":"role_create/2","deprecated":false,"title":"role_create(id, role)","anchor":"c:role_create/2"},{"id":"role_delete/2","deprecated":false,"title":"role_delete(id, id)","anchor":"c:role_delete/2"},{"id":"role_update/2","deprecated":false,"title":"role_update(id, role)","anchor":"c:role_update/2"},{"id":"stickers_update/2","deprecated":false,"title":"stickers_update(id, stickers)","anchor":"c:stickers_update/2"},{"id":"update/1","deprecated":false,"title":"update(map)","anchor":"c:update/1"},{"id":"voice_state_update/2","deprecated":false,"title":"voice_state_update(id, state)","anchor":"c:voice_state_update/2"},{"id":"wrap_qlc/1","deprecated":false,"title":"wrap_qlc(function)","anchor":"c:wrap_qlc/1"}],"key":"callbacks"},{"name":"Functions","nodes":[{"id":"fold/3","deprecated":false,"title":"fold(acc, reducer, cache \\\\ Nostrum.Cache.GuildCache.ETS)","anchor":"fold/3"},{"id":"get/2","deprecated":false,"title":"get(guild_id, cache \\\\ Nostrum.Cache.GuildCache.ETS)","anchor":"get/2"},{"id":"get!/1","deprecated":false,"title":"get!(guild_id)","anchor":"get!/1"},{"id":"query_handle/0","deprecated":false,"title":"query_handle()","anchor":"query_handle/0"},{"id":"wrap_qlc/2","deprecated":false,"title":"wrap_qlc(cache \\\\ Nostrum.Cache.GuildCache.ETS, fun)","anchor":"wrap_qlc/2"}],"key":"functions"}],"nested_title":".GuildCache","nested_context":"Nostrum.Cache"},{"id":"Nostrum.Cache.Me","deprecated":false,"group":"Cache","title":"Nostrum.Cache.Me","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"child_spec/1","deprecated":false,"title":"child_spec(arg)","anchor":"child_spec/1"},{"id":"get/0","deprecated":false,"title":"get()","anchor":"get/0"},{"id":"start_link/1","deprecated":false,"title":"start_link(list)","anchor":"start_link/1"}],"key":"functions"}],"nested_title":".Me","nested_context":"Nostrum.Cache"},{"id":"Nostrum.Cache.MemberCache","deprecated":false,"group":"Cache","title":"Nostrum.Cache.MemberCache","sections":[],"nodeGroups":[{"name":"Callbacks","nodes":[{"id":"bulk_create/2","deprecated":false,"title":"bulk_create(id, members)","anchor":"c:bulk_create/2"},{"id":"child_spec/1","deprecated":false,"title":"child_spec(term)","anchor":"c:child_spec/1"},{"id":"create/2","deprecated":false,"title":"create(id, member)","anchor":"c:create/2"},{"id":"delete/2","deprecated":false,"title":"delete(id, user_id)","anchor":"c:delete/2"},{"id":"query_handle/0","deprecated":false,"title":"query_handle()","anchor":"c:query_handle/0"},{"id":"update/2","deprecated":false,"title":"update(id, member)","anchor":"c:update/2"},{"id":"wrap_qlc/1","deprecated":false,"title":"wrap_qlc(function)","anchor":"c:wrap_qlc/1"}],"key":"callbacks"},{"name":"Functions","nodes":[{"id":"fold/4","deprecated":false,"title":"fold(acc, guild_id, member_reducer, cache \\\\ Nostrum.Cache.MemberCache.ETS)","anchor":"fold/4"},{"id":"fold_by_user/4","deprecated":false,"title":"fold_by_user(acc, user_id, member_reducer, cache \\\\ Nostrum.Cache.MemberCache.ETS)","anchor":"fold_by_user/4"},{"id":"fold_with_users/4","deprecated":false,"title":"fold_with_users(acc, guild_id, fun, cache \\\\ Nostrum.Cache.MemberCache.ETS)","anchor":"fold_with_users/4"},{"id":"get/3","deprecated":false,"title":"get(guild_id, user_id, cache \\\\ Nostrum.Cache.MemberCache.ETS)","anchor":"get/3"},{"id":"get_with_user/3","deprecated":false,"title":"get_with_user(guild_id, member_id, cache \\\\ Nostrum.Cache.MemberCache.ETS)","anchor":"get_with_user/3"},{"id":"query_handle/0","deprecated":false,"title":"query_handle()","anchor":"query_handle/0"},{"id":"wrap_qlc/2","deprecated":false,"title":"wrap_qlc(cache \\\\ Nostrum.Cache.MemberCache.ETS, fun)","anchor":"wrap_qlc/2"}],"key":"functions"}],"nested_title":".MemberCache","nested_context":"Nostrum.Cache"},{"id":"Nostrum.Cache.MessageCache","deprecated":false,"group":"Cache","title":"Nostrum.Cache.MessageCache","sections":[{"id":"Writing your own message cache","anchor":"module-writing-your-own-message-cache"}],"nodeGroups":[{"name":"Types","nodes":[{"id":"timestamp_like/0","deprecated":false,"title":"timestamp_like()","anchor":"t:timestamp_like/0"}],"key":"types"},{"name":"Callbacks","nodes":[{"id":"bulk_delete/2","deprecated":false,"title":"bulk_delete(id, list)","anchor":"c:bulk_delete/2"},{"id":"channel_delete/1","deprecated":false,"title":"channel_delete(id)","anchor":"c:channel_delete/1"},{"id":"child_spec/1","deprecated":false,"title":"child_spec(term)","anchor":"c:child_spec/1"},{"id":"create/1","deprecated":false,"title":"create(map)","anchor":"c:create/1"},{"id":"delete/2","deprecated":false,"title":"delete(id, id)","anchor":"c:delete/2"},{"id":"get/1","deprecated":false,"title":"get(id)","anchor":"c:get/1"},{"id":"query_handle/0","deprecated":false,"title":"query_handle()","anchor":"c:query_handle/0"},{"id":"update/1","deprecated":false,"title":"update(map)","anchor":"c:update/1"},{"id":"wrap_qlc/1","deprecated":false,"title":"wrap_qlc(function)","anchor":"c:wrap_qlc/1"}],"key":"callbacks"},{"name":"Functions","nodes":[{"id":"get/1","deprecated":false,"title":"get(message_id)","anchor":"get/1"},{"id":"get_by_author/4","deprecated":false,"title":"get_by_author(author_id, after_timestamp \\\\ 0, before_timestamp \\\\ :infinity, cache \\\\ Nostrum.Cache.MessageCache.Noop)","anchor":"get_by_author/4"},{"id":"get_by_channel/4","deprecated":false,"title":"get_by_channel(channel_id, after_timestamp \\\\ 0, before_timestamp \\\\ :infinity, cache \\\\ Nostrum.Cache.MessageCache.Noop)","anchor":"get_by_channel/4"},{"id":"get_by_channel_and_author/5","deprecated":false,"title":"get_by_channel_and_author(channel_id, author_id, after_timestamp \\\\ 0, before_timestamp \\\\ :infinity, cache \\\\ Nostrum.Cache.MessageCache.Noop)","anchor":"get_by_channel_and_author/5"},{"id":"query_handle/0","deprecated":false,"title":"query_handle()","anchor":"query_handle/0"},{"id":"wrap_qlc/2","deprecated":false,"title":"wrap_qlc(cache \\\\ Nostrum.Cache.MessageCache.Noop, fun)","anchor":"wrap_qlc/2"}],"key":"functions"}],"nested_title":".MessageCache","nested_context":"Nostrum.Cache"},{"id":"Nostrum.Cache.PresenceCache","deprecated":false,"group":"Cache","title":"Nostrum.Cache.PresenceCache","sections":[{"id":"Writing your own presence cache","anchor":"module-writing-your-own-presence-cache"}],"nodeGroups":[{"name":"Types","nodes":[{"id":"presence/0","deprecated":false,"title":"presence()","anchor":"t:presence/0"}],"key":"types"},{"name":"Callbacks","nodes":[{"id":"bulk_create/2","deprecated":false,"title":"bulk_create(id, list)","anchor":"c:bulk_create/2"},{"id":"child_spec/1","deprecated":false,"title":"child_spec(term)","anchor":"c:child_spec/1"},{"id":"create/1","deprecated":false,"title":"create(presence)","anchor":"c:create/1"},{"id":"query_handle/0","deprecated":false,"title":"query_handle()","anchor":"c:query_handle/0"},{"id":"update/1","deprecated":false,"title":"update(map)","anchor":"c:update/1"},{"id":"wrap_qlc/1","deprecated":false,"title":"wrap_qlc(function)","anchor":"c:wrap_qlc/1"}],"key":"callbacks"},{"name":"Functions","nodes":[{"id":"get/3","deprecated":false,"title":"get(guild_id, user_id, cache \\\\ Nostrum.Cache.PresenceCache.ETS)","anchor":"get/3"},{"id":"get!/3","deprecated":false,"title":"get!(guild_id, user_id, cache \\\\ Nostrum.Cache.PresenceCache.ETS)","anchor":"get!/3"},{"id":"query_handle/0","deprecated":false,"title":"query_handle()","anchor":"query_handle/0"},{"id":"wrap_qlc/2","deprecated":false,"title":"wrap_qlc(cache \\\\ Nostrum.Cache.PresenceCache.ETS, fun)","anchor":"wrap_qlc/2"}],"key":"functions"}],"nested_title":".PresenceCache","nested_context":"Nostrum.Cache"},{"id":"Nostrum.Cache.UserCache","deprecated":false,"group":"Cache","title":"Nostrum.Cache.UserCache","sections":[],"nodeGroups":[{"name":"Callbacks","nodes":[{"id":"bulk_create/1","deprecated":false,"title":"bulk_create(user_payloads)","anchor":"c:bulk_create/1"},{"id":"child_spec/1","deprecated":false,"title":"child_spec(term)","anchor":"c:child_spec/1"},{"id":"create/1","deprecated":false,"title":"create(payload)","anchor":"c:create/1"},{"id":"delete/1","deprecated":false,"title":"delete(snowflake)","anchor":"c:delete/1"},{"id":"query_handle/0","deprecated":false,"title":"query_handle()","anchor":"c:query_handle/0"},{"id":"update/1","deprecated":false,"title":"update(payload)","anchor":"c:update/1"},{"id":"wrap_qlc/1","deprecated":false,"title":"wrap_qlc(function)","anchor":"c:wrap_qlc/1"}],"key":"callbacks"},{"name":"Functions","nodes":[{"id":"get/2","deprecated":false,"title":"get(user_id, cache \\\\ Nostrum.Cache.UserCache.ETS)","anchor":"get/2"},{"id":"get!/1","deprecated":false,"title":"get!(id)","anchor":"get!/1"},{"id":"query_handle/0","deprecated":false,"title":"query_handle()","anchor":"query_handle/0"},{"id":"wrap_qlc/2","deprecated":false,"title":"wrap_qlc(cache \\\\ Nostrum.Cache.UserCache.ETS, fun)","anchor":"wrap_qlc/2"}],"key":"functions"}],"nested_title":".UserCache","nested_context":"Nostrum.Cache"},{"id":"Nostrum.Struct.ApplicationCommand","deprecated":false,"group":"Structs","title":"Nostrum.Struct.ApplicationCommand","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"application_command_edit_map/0","deprecated":false,"title":"application_command_edit_map()","anchor":"t:application_command_edit_map/0"},{"id":"application_command_map/0","deprecated":false,"title":"application_command_map()","anchor":"t:application_command_map/0"},{"id":"application_command_permission_type/0","deprecated":false,"title":"application_command_permission_type()","anchor":"t:application_command_permission_type/0"},{"id":"application_command_permissions/0","deprecated":false,"title":"application_command_permissions()","anchor":"t:application_command_permissions/0"},{"id":"command_choice/0","deprecated":false,"title":"command_choice()","anchor":"t:command_choice/0"},{"id":"command_description/0","deprecated":false,"title":"command_description()","anchor":"t:command_description/0"},{"id":"command_name/0","deprecated":false,"title":"command_name()","anchor":"t:command_name/0"},{"id":"command_option/0","deprecated":false,"title":"command_option()","anchor":"t:command_option/0"},{"id":"command_option_type/0","deprecated":false,"title":"command_option_type()","anchor":"t:command_option_type/0"},{"id":"command_type/0","deprecated":false,"title":"command_type()","anchor":"t:command_type/0"}],"key":"types"}],"nested_title":".ApplicationCommand","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.ApplicationCommandInteractionData","deprecated":false,"group":"Structs","title":"Nostrum.Struct.ApplicationCommandInteractionData","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"component_type/0","deprecated":false,"title":"component_type()","anchor":"t:component_type/0"},{"id":"components/0","deprecated":false,"title":"components()","anchor":"t:components/0"},{"id":"custom_id/0","deprecated":false,"title":"custom_id()","anchor":"t:custom_id/0"},{"id":"id/0","deprecated":false,"title":"id()","anchor":"t:id/0"},{"id":"interaction_type/0","deprecated":false,"title":"interaction_type()","anchor":"t:interaction_type/0"},{"id":"name/0","deprecated":false,"title":"name()","anchor":"t:name/0"},{"id":"options/0","deprecated":false,"title":"options()","anchor":"t:options/0"},{"id":"resolved/0","deprecated":false,"title":"resolved()","anchor":"t:resolved/0"},{"id":"select_values/0","deprecated":false,"title":"select_values()","anchor":"t:select_values/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"target_id/0","deprecated":false,"title":"target_id()","anchor":"t:target_id/0"}],"key":"types"}],"nested_title":".ApplicationCommandInteractionData","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.ApplicationCommandInteractionDataOption","deprecated":false,"group":"Structs","title":"Nostrum.Struct.ApplicationCommandInteractionDataOption","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"focused/0","deprecated":false,"title":"focused()","anchor":"t:focused/0"},{"id":"name/0","deprecated":false,"title":"name()","anchor":"t:name/0"},{"id":"options/0","deprecated":false,"title":"options()","anchor":"t:options/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"type/0","deprecated":false,"title":"type()","anchor":"t:type/0"},{"id":"value/0","deprecated":false,"title":"value()","anchor":"t:value/0"}],"key":"types"}],"nested_title":".ApplicationCommandInteractionDataOption","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.ApplicationCommandInteractionDataResolved","deprecated":false,"group":"Structs","title":"Nostrum.Struct.ApplicationCommandInteractionDataResolved","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"attachments/0","deprecated":false,"title":"attachments()","anchor":"t:attachments/0"},{"id":"channels/0","deprecated":false,"title":"channels()","anchor":"t:channels/0"},{"id":"members/0","deprecated":false,"title":"members()","anchor":"t:members/0"},{"id":"messages/0","deprecated":false,"title":"messages()","anchor":"t:messages/0"},{"id":"roles/0","deprecated":false,"title":"roles()","anchor":"t:roles/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"users/0","deprecated":false,"title":"users()","anchor":"t:users/0"}],"key":"types"}],"nested_title":".ApplicationCommandInteractionDataResolved","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.AutoModerationRule","deprecated":false,"group":"Structs","title":"Nostrum.Struct.AutoModerationRule","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"actions/0","deprecated":false,"title":"actions()","anchor":"t:actions/0"},{"id":"creator_id/0","deprecated":false,"title":"creator_id()","anchor":"t:creator_id/0"},{"id":"enabled/0","deprecated":false,"title":"enabled()","anchor":"t:enabled/0"},{"id":"event_type/0","deprecated":false,"title":"event_type()","anchor":"t:event_type/0"},{"id":"exempt_channels/0","deprecated":false,"title":"exempt_channels()","anchor":"t:exempt_channels/0"},{"id":"exempt_roles/0","deprecated":false,"title":"exempt_roles()","anchor":"t:exempt_roles/0"},{"id":"guild_id/0","deprecated":false,"title":"guild_id()","anchor":"t:guild_id/0"},{"id":"id/0","deprecated":false,"title":"id()","anchor":"t:id/0"},{"id":"name/0","deprecated":false,"title":"name()","anchor":"t:name/0"},{"id":"preset_values/0","deprecated":false,"title":"preset_values()","anchor":"t:preset_values/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"trigger_metadata/0","deprecated":false,"title":"trigger_metadata()","anchor":"t:trigger_metadata/0"},{"id":"trigger_type/0","deprecated":false,"title":"trigger_type()","anchor":"t:trigger_type/0"}],"key":"types"}],"nested_title":".AutoModerationRule","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.AutoModerationRule.Action","deprecated":false,"group":"Structs","title":"Nostrum.Struct.AutoModerationRule.Action","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"action_type/0","deprecated":false,"title":"action_type()","anchor":"t:action_type/0"},{"id":"metadata/0","deprecated":false,"title":"metadata()","anchor":"t:metadata/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"}],"key":"types"}],"nested_title":".AutoModerationRule.Action","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.AutoModerationRule.ActionMetadata","deprecated":false,"group":"Structs","title":"Nostrum.Struct.AutoModerationRule.ActionMetadata","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"send_alert_message_metadata/0","deprecated":false,"title":"send_alert_message_metadata()","anchor":"t:send_alert_message_metadata/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"timeout_metadata/0","deprecated":false,"title":"timeout_metadata()","anchor":"t:timeout_metadata/0"}],"key":"types"}],"nested_title":".AutoModerationRule.ActionMetadata","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.AutoModerationRule.TriggerMetadata","deprecated":false,"group":"Structs","title":"Nostrum.Struct.AutoModerationRule.TriggerMetadata","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"keyword_metadata/0","deprecated":false,"title":"keyword_metadata()","anchor":"t:keyword_metadata/0"},{"id":"preset_value_metadata/0","deprecated":false,"title":"preset_value_metadata()","anchor":"t:preset_value_metadata/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"}],"key":"types"}],"nested_title":".AutoModerationRule.TriggerMetadata","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.Channel","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Channel","sections":[{"id":"Channel Struct","anchor":"module-channel-struct"},{"id":"Channel Caching","anchor":"module-channel-caching"},{"id":"Helper Functions","anchor":"module-helper-functions"},{"id":"Api Functions","anchor":"module-api-functions"},{"id":"Channel Types","anchor":"module-channel-types"}],"nodeGroups":[{"name":"Types","nodes":[{"id":"application_id/0","deprecated":false,"title":"application_id()","anchor":"t:application_id/0"},{"id":"applied_tags/0","deprecated":false,"title":"applied_tags()","anchor":"t:applied_tags/0"},{"id":"archive_timestamp/0","deprecated":false,"title":"archive_timestamp()","anchor":"t:archive_timestamp/0"},{"id":"archived/0","deprecated":false,"title":"archived()","anchor":"t:archived/0"},{"id":"auto_archive_duration/0","deprecated":false,"title":"auto_archive_duration()","anchor":"t:auto_archive_duration/0"},{"id":"bitrate/0","deprecated":false,"title":"bitrate()","anchor":"t:bitrate/0"},{"id":"channel_mention/0","deprecated":false,"title":"channel_mention()","anchor":"t:channel_mention/0"},{"id":"default_auto_archive_duration/0","deprecated":false,"title":"default_auto_archive_duration()","anchor":"t:default_auto_archive_duration/0"},{"id":"default_reaction_emoji/0","deprecated":false,"title":"default_reaction_emoji()","anchor":"t:default_reaction_emoji/0"},{"id":"default_thread_rate_limit_per_user/0","deprecated":false,"title":"default_thread_rate_limit_per_user()","anchor":"t:default_thread_rate_limit_per_user/0"},{"id":"dm_channel/0","deprecated":false,"title":"dm_channel()","anchor":"t:dm_channel/0"},{"id":"flags/0","deprecated":false,"title":"flags()","anchor":"t:flags/0"},{"id":"forum_tag/0","deprecated":false,"title":"forum_tag()","anchor":"t:forum_tag/0"},{"id":"group_dm_channel/0","deprecated":false,"title":"group_dm_channel()","anchor":"t:group_dm_channel/0"},{"id":"guild_category_channel/0","deprecated":false,"title":"guild_category_channel()","anchor":"t:guild_category_channel/0"},{"id":"guild_channel/0","deprecated":true,"title":"guild_channel()","anchor":"t:guild_channel/0"},{"id":"guild_forum_channel/0","deprecated":false,"title":"guild_forum_channel()","anchor":"t:guild_forum_channel/0"},{"id":"guild_id/0","deprecated":false,"title":"guild_id()","anchor":"t:guild_id/0"},{"id":"guild_news_channel/0","deprecated":false,"title":"guild_news_channel()","anchor":"t:guild_news_channel/0"},{"id":"guild_news_thread_channel/0","deprecated":false,"title":"guild_news_thread_channel()","anchor":"t:guild_news_thread_channel/0"},{"id":"guild_private_thread_channel/0","deprecated":false,"title":"guild_private_thread_channel()","anchor":"t:guild_private_thread_channel/0"},{"id":"guild_public_thread_channel/0","deprecated":false,"title":"guild_public_thread_channel()","anchor":"t:guild_public_thread_channel/0"},{"id":"guild_stage_voice_channel/0","deprecated":false,"title":"guild_stage_voice_channel()","anchor":"t:guild_stage_voice_channel/0"},{"id":"guild_store_channel/0","deprecated":false,"title":"guild_store_channel()","anchor":"t:guild_store_channel/0"},{"id":"guild_text_channel/0","deprecated":false,"title":"guild_text_channel()","anchor":"t:guild_text_channel/0"},{"id":"guild_voice_channel/0","deprecated":false,"title":"guild_voice_channel()","anchor":"t:guild_voice_channel/0"},{"id":"icon/0","deprecated":false,"title":"icon()","anchor":"t:icon/0"},{"id":"id/0","deprecated":false,"title":"id()","anchor":"t:id/0"},{"id":"join_timestamp/0","deprecated":false,"title":"join_timestamp()","anchor":"t:join_timestamp/0"},{"id":"last_message_id/0","deprecated":false,"title":"last_message_id()","anchor":"t:last_message_id/0"},{"id":"last_pin_timestamp/0","deprecated":false,"title":"last_pin_timestamp()","anchor":"t:last_pin_timestamp/0"},{"id":"locked/0","deprecated":false,"title":"locked()","anchor":"t:locked/0"},{"id":"member/0","deprecated":false,"title":"member()","anchor":"t:member/0"},{"id":"member_count/0","deprecated":false,"title":"member_count()","anchor":"t:member_count/0"},{"id":"message_count/0","deprecated":false,"title":"message_count()","anchor":"t:message_count/0"},{"id":"name/0","deprecated":false,"title":"name()","anchor":"t:name/0"},{"id":"newly_created/0","deprecated":false,"title":"newly_created()","anchor":"t:newly_created/0"},{"id":"nsfw/0","deprecated":false,"title":"nsfw()","anchor":"t:nsfw/0"},{"id":"owner_id/0","deprecated":false,"title":"owner_id()","anchor":"t:owner_id/0"},{"id":"parent_id/0","deprecated":false,"title":"parent_id()","anchor":"t:parent_id/0"},{"id":"permission_overwrites/0","deprecated":false,"title":"permission_overwrites()","anchor":"t:permission_overwrites/0"},{"id":"permissions/0","deprecated":false,"title":"permissions()","anchor":"t:permissions/0"},{"id":"position/0","deprecated":false,"title":"position()","anchor":"t:position/0"},{"id":"rate_limit_per_user/0","deprecated":false,"title":"rate_limit_per_user()","anchor":"t:rate_limit_per_user/0"},{"id":"recipients/0","deprecated":false,"title":"recipients()","anchor":"t:recipients/0"},{"id":"rtc_region/0","deprecated":false,"title":"rtc_region()","anchor":"t:rtc_region/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"text_channel/0","deprecated":true,"title":"text_channel()","anchor":"t:text_channel/0"},{"id":"thread_metadata/0","deprecated":false,"title":"thread_metadata()","anchor":"t:thread_metadata/0"},{"id":"topic/0","deprecated":false,"title":"topic()","anchor":"t:topic/0"},{"id":"type/0","deprecated":false,"title":"type()","anchor":"t:type/0"},{"id":"user_id/0","deprecated":false,"title":"user_id()","anchor":"t:user_id/0"},{"id":"user_limit/0","deprecated":false,"title":"user_limit()","anchor":"t:user_limit/0"},{"id":"video_quality_mode/0","deprecated":false,"title":"video_quality_mode()","anchor":"t:video_quality_mode/0"},{"id":"voice_channel/0","deprecated":true,"title":"voice_channel()","anchor":"t:voice_channel/0"}],"key":"types"},{"name":"Functions","nodes":[{"id":"mention/1","deprecated":false,"title":"mention(channel)","anchor":"mention/1"}],"key":"functions"}],"nested_title":".Channel","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.Component","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Component","sections":[{"id":"Action Row","anchor":"module-action-row"},{"id":"Buttons","anchor":"module-buttons"},{"id":"Link Buttons","anchor":"module-link-buttons"},{"id":"Interaction Buttons ( Non-link Buttons )","anchor":"module-interaction-buttons-non-link-buttons"},{"id":"🐼 Emoji Buttons","anchor":"module-emoji-buttons"},{"id":"Select Menu","anchor":"module-select-menu"},{"id":"Text Input","anchor":"module-text-input"}],"nodeGroups":[{"name":"Types","nodes":[{"id":"channel_types/0","deprecated":false,"title":"channel_types()","anchor":"t:channel_types/0"},{"id":"components/0","deprecated":false,"title":"components()","anchor":"t:components/0"},{"id":"custom_id/0","deprecated":false,"title":"custom_id()","anchor":"t:custom_id/0"},{"id":"default_values/0","deprecated":false,"title":"default_values()","anchor":"t:default_values/0"},{"id":"disabled/0","deprecated":false,"title":"disabled()","anchor":"t:disabled/0"},{"id":"emoji/0","deprecated":false,"title":"emoji()","anchor":"t:emoji/0"},{"id":"label/0","deprecated":false,"title":"label()","anchor":"t:label/0"},{"id":"max_length/0","deprecated":false,"title":"max_length()","anchor":"t:max_length/0"},{"id":"max_values/0","deprecated":false,"title":"max_values()","anchor":"t:max_values/0"},{"id":"min_length/0","deprecated":false,"title":"min_length()","anchor":"t:min_length/0"},{"id":"min_values/0","deprecated":false,"title":"min_values()","anchor":"t:min_values/0"},{"id":"options/0","deprecated":false,"title":"options()","anchor":"t:options/0"},{"id":"placeholder/0","deprecated":false,"title":"placeholder()","anchor":"t:placeholder/0"},{"id":"required/0","deprecated":false,"title":"required()","anchor":"t:required/0"},{"id":"style/0","deprecated":false,"title":"style()","anchor":"t:style/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"type/0","deprecated":false,"title":"type()","anchor":"t:type/0"},{"id":"url/0","deprecated":false,"title":"url()","anchor":"t:url/0"},{"id":"value/0","deprecated":false,"title":"value()","anchor":"t:value/0"}],"key":"types"},{"name":"Callbacks","nodes":[{"id":"new/1","deprecated":false,"title":"new(opts)","anchor":"c:new/1"},{"id":"update/2","deprecated":false,"title":"update(t, opts)","anchor":"c:update/2"}],"key":"callbacks"},{"name":"Functions","nodes":[{"id":"to_struct/1","deprecated":false,"title":"to_struct(map)","anchor":"to_struct/1"}],"key":"functions"}],"nested_title":".Component","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.Component.ActionRow","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Component.ActionRow","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"}],"key":"types"},{"name":"Functions","nodes":[{"id":"action_row/1","deprecated":false,"title":"action_row(opts \\\\ [])","anchor":"action_row/1"},{"id":"append/2","deprecated":false,"title":"append(action_row, button)","anchor":"append/2"},{"id":"append_lazy/2","deprecated":false,"title":"append_lazy(action_row, button)","anchor":"append_lazy/2"},{"id":"flatten/1","deprecated":false,"title":"flatten(map)","anchor":"flatten/1"},{"id":"put/2","deprecated":false,"title":"put(component, select_menu)","anchor":"put/2"},{"id":"put_new/2","deprecated":false,"title":"put_new(component, list_of_components)","anchor":"put_new/2"}],"key":"functions"}],"nested_title":".Component.ActionRow","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.Component.Button","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Component.Button","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"interaction_button/0","deprecated":false,"title":"interaction_button()","anchor":"t:interaction_button/0"},{"id":"link_button/0","deprecated":false,"title":"link_button()","anchor":"t:link_button/0"},{"id":"opt/0","deprecated":false,"title":"opt()","anchor":"t:opt/0"},{"id":"opts/0","deprecated":false,"title":"opts()","anchor":"t:opts/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"}],"key":"types"},{"name":"Functions","nodes":[{"id":"button/1","deprecated":false,"title":"button(opts \\\\ [])","anchor":"button/1"},{"id":"disable/2","deprecated":false,"title":"disable(button, disabled)","anchor":"disable/2"},{"id":"flatten/1","deprecated":false,"title":"flatten(map)","anchor":"flatten/1"},{"id":"interaction_button/3","deprecated":false,"title":"interaction_button(label, custom_id, opts \\\\ [])","anchor":"interaction_button/3"},{"id":"link_button/3","deprecated":false,"title":"link_button(label, url, opts \\\\ [])","anchor":"link_button/3"},{"id":"put_style/2","deprecated":false,"title":"put_style(button, style)","anchor":"put_style/2"},{"id":"toggle/1","deprecated":false,"title":"toggle(button)","anchor":"toggle/1"}],"key":"functions"}],"nested_title":".Component.Button","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.Component.ChannelSelect","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Component.ChannelSelect","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"opt/0","deprecated":false,"title":"opt()","anchor":"t:opt/0"},{"id":"opts/0","deprecated":false,"title":"opts()","anchor":"t:opts/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"}],"key":"types"},{"name":"Functions","nodes":[{"id":"channel_select/2","deprecated":false,"title":"channel_select(custom_id, opts \\\\ [])","anchor":"channel_select/2"},{"id":"flatten/1","deprecated":false,"title":"flatten(map)","anchor":"flatten/1"}],"key":"functions"}],"nested_title":".Component.ChannelSelect","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.Component.DefaultValue","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Component.DefaultValue","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"id/0","deprecated":false,"title":"id()","anchor":"t:id/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"type/0","deprecated":false,"title":"type()","anchor":"t:type/0"}],"key":"types"}],"nested_title":".Component.DefaultValue","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.Component.MentionableSelect","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Component.MentionableSelect","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"opt/0","deprecated":false,"title":"opt()","anchor":"t:opt/0"},{"id":"opts/0","deprecated":false,"title":"opts()","anchor":"t:opts/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"}],"key":"types"},{"name":"Functions","nodes":[{"id":"flatten/1","deprecated":false,"title":"flatten(map)","anchor":"flatten/1"},{"id":"mentionable_select/2","deprecated":false,"title":"mentionable_select(custom_id, opts \\\\ [])","anchor":"mentionable_select/2"}],"key":"functions"}],"nested_title":".Component.MentionableSelect","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.Component.Option","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Component.Option","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"default/0","deprecated":false,"title":"default()","anchor":"t:default/0"},{"id":"description/0","deprecated":false,"title":"description()","anchor":"t:description/0"},{"id":"emoji/0","deprecated":false,"title":"emoji()","anchor":"t:emoji/0"},{"id":"label/0","deprecated":false,"title":"label()","anchor":"t:label/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"value/0","deprecated":false,"title":"value()","anchor":"t:value/0"}],"key":"types"}],"nested_title":".Component.Option","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.Component.RoleSelect","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Component.RoleSelect","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"opt/0","deprecated":false,"title":"opt()","anchor":"t:opt/0"},{"id":"opts/0","deprecated":false,"title":"opts()","anchor":"t:opts/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"}],"key":"types"},{"name":"Functions","nodes":[{"id":"flatten/1","deprecated":false,"title":"flatten(map)","anchor":"flatten/1"},{"id":"mentionable_select/2","deprecated":false,"title":"mentionable_select(custom_id, opts \\\\ [])","anchor":"mentionable_select/2"}],"key":"functions"}],"nested_title":".Component.RoleSelect","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.Component.SelectMenu","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Component.SelectMenu","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"opt/0","deprecated":false,"title":"opt()","anchor":"t:opt/0"},{"id":"opts/0","deprecated":false,"title":"opts()","anchor":"t:opts/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"}],"key":"types"},{"name":"Functions","nodes":[{"id":"flatten/1","deprecated":false,"title":"flatten(map)","anchor":"flatten/1"},{"id":"select_menu/2","deprecated":false,"title":"select_menu(custom_id, opts \\\\ [])","anchor":"select_menu/2"}],"key":"functions"}],"nested_title":".Component.SelectMenu","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.Component.TextInput","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Component.TextInput","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"opt/0","deprecated":false,"title":"opt()","anchor":"t:opt/0"},{"id":"opts/0","deprecated":false,"title":"opts()","anchor":"t:opts/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"}],"key":"types"},{"name":"Functions","nodes":[{"id":"flatten/1","deprecated":false,"title":"flatten(map)","anchor":"flatten/1"},{"id":"put_style/2","deprecated":false,"title":"put_style(text_input, style)","anchor":"put_style/2"},{"id":"text_input/3","deprecated":false,"title":"text_input(label, custom_id, opts \\\\ [])","anchor":"text_input/3"}],"key":"functions"}],"nested_title":".Component.TextInput","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.Component.UserSelect","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Component.UserSelect","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"opt/0","deprecated":false,"title":"opt()","anchor":"t:opt/0"},{"id":"opts/0","deprecated":false,"title":"opts()","anchor":"t:opts/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"}],"key":"types"},{"name":"Functions","nodes":[{"id":"flatten/1","deprecated":false,"title":"flatten(map)","anchor":"flatten/1"},{"id":"mentionable_select/2","deprecated":false,"title":"mentionable_select(custom_id, opts \\\\ [])","anchor":"mentionable_select/2"}],"key":"functions"}],"nested_title":".Component.UserSelect","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.Embed","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Embed","sections":[{"id":"Building Embeds","anchor":"module-building-embeds"},{"id":"Using structs","anchor":"module-using-structs"}],"nodeGroups":[{"name":"Types","nodes":[{"id":"author/0","deprecated":false,"title":"author()","anchor":"t:author/0"},{"id":"color/0","deprecated":false,"title":"color()","anchor":"t:color/0"},{"id":"description/0","deprecated":false,"title":"description()","anchor":"t:description/0"},{"id":"fields/0","deprecated":false,"title":"fields()","anchor":"t:fields/0"},{"id":"footer/0","deprecated":false,"title":"footer()","anchor":"t:footer/0"},{"id":"image/0","deprecated":false,"title":"image()","anchor":"t:image/0"},{"id":"provider/0","deprecated":false,"title":"provider()","anchor":"t:provider/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"thumbnail/0","deprecated":false,"title":"thumbnail()","anchor":"t:thumbnail/0"},{"id":"timestamp/0","deprecated":false,"title":"timestamp()","anchor":"t:timestamp/0"},{"id":"title/0","deprecated":false,"title":"title()","anchor":"t:title/0"},{"id":"type/0","deprecated":false,"title":"type()","anchor":"t:type/0"},{"id":"url/0","deprecated":false,"title":"url()","anchor":"t:url/0"},{"id":"video/0","deprecated":false,"title":"video()","anchor":"t:video/0"}],"key":"types"},{"name":"Callbacks","nodes":[{"id":"author/1","deprecated":false,"title":"author(struct)","anchor":"c:author/1"},{"id":"color/1","deprecated":false,"title":"color(struct)","anchor":"c:color/1"},{"id":"description/1","deprecated":false,"title":"description(struct)","anchor":"c:description/1"},{"id":"fields/1","deprecated":false,"title":"fields(struct)","anchor":"c:fields/1"},{"id":"footer/1","deprecated":false,"title":"footer(struct)","anchor":"c:footer/1"},{"id":"image/1","deprecated":false,"title":"image(struct)","anchor":"c:image/1"},{"id":"thumbnail/1","deprecated":false,"title":"thumbnail(struct)","anchor":"c:thumbnail/1"},{"id":"timestamp/1","deprecated":false,"title":"timestamp(struct)","anchor":"c:timestamp/1"},{"id":"title/1","deprecated":false,"title":"title(struct)","anchor":"c:title/1"},{"id":"url/1","deprecated":false,"title":"url(struct)","anchor":"c:url/1"}],"key":"callbacks"},{"name":"Functions","nodes":[{"id":"from/1","deprecated":false,"title":"from(struct)","anchor":"from/1"},{"id":"put_author/4","deprecated":false,"title":"put_author(embed, name, url, icon_url)","anchor":"put_author/4"},{"id":"put_color/2","deprecated":false,"title":"put_color(embed, value)","anchor":"put_color/2"},{"id":"put_description/2","deprecated":false,"title":"put_description(embed, value)","anchor":"put_description/2"},{"id":"put_field/4","deprecated":false,"title":"put_field(embed, name, value, inline \\\\ nil)","anchor":"put_field/4"},{"id":"put_footer/3","deprecated":false,"title":"put_footer(embed, text, icon_url \\\\ nil)","anchor":"put_footer/3"},{"id":"put_image/2","deprecated":false,"title":"put_image(embed, url)","anchor":"put_image/2"},{"id":"put_thumbnail/2","deprecated":false,"title":"put_thumbnail(embed, url)","anchor":"put_thumbnail/2"},{"id":"put_timestamp/2","deprecated":false,"title":"put_timestamp(embed, value)","anchor":"put_timestamp/2"},{"id":"put_title/2","deprecated":false,"title":"put_title(embed, value)","anchor":"put_title/2"},{"id":"put_url/2","deprecated":false,"title":"put_url(embed, value)","anchor":"put_url/2"}],"key":"functions"}],"nested_title":".Embed","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.Embed.Author","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Embed.Author","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"icon_url/0","deprecated":false,"title":"icon_url()","anchor":"t:icon_url/0"},{"id":"name/0","deprecated":false,"title":"name()","anchor":"t:name/0"},{"id":"proxy_icon_url/0","deprecated":false,"title":"proxy_icon_url()","anchor":"t:proxy_icon_url/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"url/0","deprecated":false,"title":"url()","anchor":"t:url/0"}],"key":"types"}],"nested_title":".Embed.Author","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.Embed.Field","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Embed.Field","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"inline/0","deprecated":false,"title":"inline()","anchor":"t:inline/0"},{"id":"name/0","deprecated":false,"title":"name()","anchor":"t:name/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"value/0","deprecated":false,"title":"value()","anchor":"t:value/0"}],"key":"types"}],"nested_title":".Embed.Field","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.Embed.Footer","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Embed.Footer","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"icon_url/0","deprecated":false,"title":"icon_url()","anchor":"t:icon_url/0"},{"id":"proxy_icon_url/0","deprecated":false,"title":"proxy_icon_url()","anchor":"t:proxy_icon_url/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"text/0","deprecated":false,"title":"text()","anchor":"t:text/0"}],"key":"types"}],"nested_title":".Embed.Footer","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.Embed.Image","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Embed.Image","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"height/0","deprecated":false,"title":"height()","anchor":"t:height/0"},{"id":"proxy_url/0","deprecated":false,"title":"proxy_url()","anchor":"t:proxy_url/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"url/0","deprecated":false,"title":"url()","anchor":"t:url/0"},{"id":"width/0","deprecated":false,"title":"width()","anchor":"t:width/0"}],"key":"types"}],"nested_title":".Embed.Image","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.Embed.Provider","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Embed.Provider","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"name/0","deprecated":false,"title":"name()","anchor":"t:name/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"url/0","deprecated":false,"title":"url()","anchor":"t:url/0"}],"key":"types"}],"nested_title":".Embed.Provider","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.Embed.Thumbnail","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Embed.Thumbnail","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"height/0","deprecated":false,"title":"height()","anchor":"t:height/0"},{"id":"proxy_url/0","deprecated":false,"title":"proxy_url()","anchor":"t:proxy_url/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"url/0","deprecated":false,"title":"url()","anchor":"t:url/0"},{"id":"width/0","deprecated":false,"title":"width()","anchor":"t:width/0"}],"key":"types"}],"nested_title":".Embed.Thumbnail","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.Embed.Video","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Embed.Video","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"height/0","deprecated":false,"title":"height()","anchor":"t:height/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"url/0","deprecated":false,"title":"url()","anchor":"t:url/0"},{"id":"width/0","deprecated":false,"title":"width()","anchor":"t:width/0"}],"key":"types"}],"nested_title":".Embed.Video","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.Emoji","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Emoji","sections":[{"id":"Mentioning Emojis in Messages","anchor":"module-mentioning-emojis-in-messages"},{"id":"Using Emojis in the Api","anchor":"module-using-emojis-in-the-api"}],"nodeGroups":[{"name":"Types","nodes":[{"id":"animated/0","deprecated":false,"title":"animated()","anchor":"t:animated/0"},{"id":"api_name/0","deprecated":false,"title":"api_name()","anchor":"t:api_name/0"},{"id":"id/0","deprecated":false,"title":"id()","anchor":"t:id/0"},{"id":"managed/0","deprecated":false,"title":"managed()","anchor":"t:managed/0"},{"id":"name/0","deprecated":false,"title":"name()","anchor":"t:name/0"},{"id":"require_colons/0","deprecated":false,"title":"require_colons()","anchor":"t:require_colons/0"},{"id":"roles/0","deprecated":false,"title":"roles()","anchor":"t:roles/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"user/0","deprecated":false,"title":"user()","anchor":"t:user/0"}],"key":"types"},{"name":"Functions","nodes":[{"id":"api_name/1","deprecated":false,"title":"api_name(emoji)","anchor":"api_name/1"},{"id":"image_url/1","deprecated":false,"title":"image_url(emoji)","anchor":"image_url/1"},{"id":"mention/1","deprecated":false,"title":"mention(emoji)","anchor":"mention/1"}],"key":"functions"}],"nested_title":".Emoji","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.Guild","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Guild","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"afk_channel_id/0","deprecated":false,"title":"afk_channel_id()","anchor":"t:afk_channel_id/0"},{"id":"afk_timeout/0","deprecated":false,"title":"afk_timeout()","anchor":"t:afk_timeout/0"},{"id":"application_id/0","deprecated":false,"title":"application_id()","anchor":"t:application_id/0"},{"id":"available_guild/0","deprecated":false,"title":"available_guild()","anchor":"t:available_guild/0"},{"id":"banner/0","deprecated":false,"title":"banner()","anchor":"t:banner/0"},{"id":"channels/0","deprecated":false,"title":"channels()","anchor":"t:channels/0"},{"id":"default_message_notifications/0","deprecated":false,"title":"default_message_notifications()","anchor":"t:default_message_notifications/0"},{"id":"description/0","deprecated":false,"title":"description()","anchor":"t:description/0"},{"id":"discovery_splash/0","deprecated":false,"title":"discovery_splash()","anchor":"t:discovery_splash/0"},{"id":"emojis/0","deprecated":false,"title":"emojis()","anchor":"t:emojis/0"},{"id":"explicit_content_filter/0","deprecated":false,"title":"explicit_content_filter()","anchor":"t:explicit_content_filter/0"},{"id":"features/0","deprecated":false,"title":"features()","anchor":"t:features/0"},{"id":"guild_scheduled_events/0","deprecated":false,"title":"guild_scheduled_events()","anchor":"t:guild_scheduled_events/0"},{"id":"icon/0","deprecated":false,"title":"icon()","anchor":"t:icon/0"},{"id":"id/0","deprecated":false,"title":"id()","anchor":"t:id/0"},{"id":"joined_at/0","deprecated":false,"title":"joined_at()","anchor":"t:joined_at/0"},{"id":"large/0","deprecated":false,"title":"large()","anchor":"t:large/0"},{"id":"max_members/0","deprecated":false,"title":"max_members()","anchor":"t:max_members/0"},{"id":"max_presences/0","deprecated":false,"title":"max_presences()","anchor":"t:max_presences/0"},{"id":"max_stage_video_channel_users/0","deprecated":false,"title":"max_stage_video_channel_users()","anchor":"t:max_stage_video_channel_users/0"},{"id":"max_video_channel_users/0","deprecated":false,"title":"max_video_channel_users()","anchor":"t:max_video_channel_users/0"},{"id":"member_count/0","deprecated":false,"title":"member_count()","anchor":"t:member_count/0"},{"id":"mfa_level/0","deprecated":false,"title":"mfa_level()","anchor":"t:mfa_level/0"},{"id":"name/0","deprecated":false,"title":"name()","anchor":"t:name/0"},{"id":"nsfw_level/0","deprecated":false,"title":"nsfw_level()","anchor":"t:nsfw_level/0"},{"id":"owner_id/0","deprecated":false,"title":"owner_id()","anchor":"t:owner_id/0"},{"id":"preferred_locale/0","deprecated":false,"title":"preferred_locale()","anchor":"t:preferred_locale/0"},{"id":"premium_progress_bar_enabled/0","deprecated":false,"title":"premium_progress_bar_enabled()","anchor":"t:premium_progress_bar_enabled/0"},{"id":"premium_subscription_count/0","deprecated":false,"title":"premium_subscription_count()","anchor":"t:premium_subscription_count/0"},{"id":"premium_tier/0","deprecated":false,"title":"premium_tier()","anchor":"t:premium_tier/0"},{"id":"public_updates_channel_id/0","deprecated":false,"title":"public_updates_channel_id()","anchor":"t:public_updates_channel_id/0"},{"id":"region/0","deprecated":false,"title":"region()","anchor":"t:region/0"},{"id":"rest_guild/0","deprecated":false,"title":"rest_guild()","anchor":"t:rest_guild/0"},{"id":"roles/0","deprecated":false,"title":"roles()","anchor":"t:roles/0"},{"id":"rules_channel_id/0","deprecated":false,"title":"rules_channel_id()","anchor":"t:rules_channel_id/0"},{"id":"safety_alerts_channel_id/0","deprecated":false,"title":"safety_alerts_channel_id()","anchor":"t:safety_alerts_channel_id/0"},{"id":"splash/0","deprecated":false,"title":"splash()","anchor":"t:splash/0"},{"id":"stickers/0","deprecated":false,"title":"stickers()","anchor":"t:stickers/0"},{"id":"system_channel_flags/0","deprecated":false,"title":"system_channel_flags()","anchor":"t:system_channel_flags/0"},{"id":"system_channel_id/0","deprecated":false,"title":"system_channel_id()","anchor":"t:system_channel_id/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"threads/0","deprecated":false,"title":"threads()","anchor":"t:threads/0"},{"id":"unavailable/0","deprecated":false,"title":"unavailable()","anchor":"t:unavailable/0"},{"id":"unavailable_guild/0","deprecated":false,"title":"unavailable_guild()","anchor":"t:unavailable_guild/0"},{"id":"user_guild/0","deprecated":false,"title":"user_guild()","anchor":"t:user_guild/0"},{"id":"vanity_url_code/0","deprecated":false,"title":"vanity_url_code()","anchor":"t:vanity_url_code/0"},{"id":"verification_level/0","deprecated":false,"title":"verification_level()","anchor":"t:verification_level/0"},{"id":"voice_states/0","deprecated":false,"title":"voice_states()","anchor":"t:voice_states/0"},{"id":"welcome_screen/0","deprecated":false,"title":"welcome_screen()","anchor":"t:welcome_screen/0"},{"id":"widget_channel_id/0","deprecated":false,"title":"widget_channel_id()","anchor":"t:widget_channel_id/0"},{"id":"widget_enabled/0","deprecated":false,"title":"widget_enabled()","anchor":"t:widget_enabled/0"}],"key":"types"},{"name":"Functions","nodes":[{"id":"banner_url/2","deprecated":false,"title":"banner_url(guild, image_format \\\\ \"webp\")","anchor":"banner_url/2"},{"id":"discovery_splash_url/2","deprecated":false,"title":"discovery_splash_url(guild, image_format \\\\ \"webp\")","anchor":"discovery_splash_url/2"},{"id":"icon_url/2","deprecated":false,"title":"icon_url(guild, image_format \\\\ \"webp\")","anchor":"icon_url/2"},{"id":"splash_url/2","deprecated":false,"title":"splash_url(guild, image_format \\\\ \"webp\")","anchor":"splash_url/2"}],"key":"functions"}],"nested_title":".Guild","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.Guild.AuditLog","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Guild.AuditLog","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"entries/0","deprecated":false,"title":"entries()","anchor":"t:entries/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"users/0","deprecated":false,"title":"users()","anchor":"t:users/0"},{"id":"webhooks/0","deprecated":false,"title":"webhooks()","anchor":"t:webhooks/0"}],"key":"types"}],"nested_title":".Guild.AuditLog","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.Guild.AuditLogEntry","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Guild.AuditLogEntry","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"action_type/0","deprecated":false,"title":"action_type()","anchor":"t:action_type/0"},{"id":"changes/0","deprecated":false,"title":"changes()","anchor":"t:changes/0"},{"id":"id/0","deprecated":false,"title":"id()","anchor":"t:id/0"},{"id":"options/0","deprecated":false,"title":"options()","anchor":"t:options/0"},{"id":"reason/0","deprecated":false,"title":"reason()","anchor":"t:reason/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"target_id/0","deprecated":false,"title":"target_id()","anchor":"t:target_id/0"},{"id":"user_id/0","deprecated":false,"title":"user_id()","anchor":"t:user_id/0"}],"key":"types"}],"nested_title":".Guild.AuditLogEntry","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.Guild.Ban","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Guild.Ban","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"reason/0","deprecated":false,"title":"reason()","anchor":"t:reason/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"user/0","deprecated":false,"title":"user()","anchor":"t:user/0"}],"key":"types"}],"nested_title":".Guild.Ban","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.Guild.Integration","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Guild.Integration","sections":[{"id":"References","anchor":"module-references"}],"nodeGroups":[{"name":"Types","nodes":[{"id":"account/0","deprecated":false,"title":"account()","anchor":"t:account/0"},{"id":"application/0","deprecated":false,"title":"application()","anchor":"t:application/0"},{"id":"enabled/0","deprecated":false,"title":"enabled()","anchor":"t:enabled/0"},{"id":"guild_id/0","deprecated":false,"title":"guild_id()","anchor":"t:guild_id/0"},{"id":"id/0","deprecated":false,"title":"id()","anchor":"t:id/0"},{"id":"name/0","deprecated":false,"title":"name()","anchor":"t:name/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"type/0","deprecated":false,"title":"type()","anchor":"t:type/0"}],"key":"types"}],"nested_title":".Guild.Integration","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.Guild.Integration.Account","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Guild.Integration.Account","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"id/0","deprecated":false,"title":"id()","anchor":"t:id/0"},{"id":"name/0","deprecated":false,"title":"name()","anchor":"t:name/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"}],"key":"types"}],"nested_title":".Guild.Integration.Account","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.Guild.Integration.Application","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Guild.Integration.Application","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"bot/0","deprecated":false,"title":"bot()","anchor":"t:bot/0"},{"id":"description/0","deprecated":false,"title":"description()","anchor":"t:description/0"},{"id":"icon/0","deprecated":false,"title":"icon()","anchor":"t:icon/0"},{"id":"id/0","deprecated":false,"title":"id()","anchor":"t:id/0"},{"id":"name/0","deprecated":false,"title":"name()","anchor":"t:name/0"},{"id":"summary/0","deprecated":false,"title":"summary()","anchor":"t:summary/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"}],"key":"types"}],"nested_title":".Guild.Integration.Application","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.Guild.Member","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Guild.Member","sections":[{"id":"Mentioning Members in Messages","anchor":"module-mentioning-members-in-messages"}],"nodeGroups":[{"name":"Types","nodes":[{"id":"avatar/0","deprecated":false,"title":"avatar()","anchor":"t:avatar/0"},{"id":"communication_disabled_until/0","deprecated":false,"title":"communication_disabled_until()","anchor":"t:communication_disabled_until/0"},{"id":"deaf/0","deprecated":false,"title":"deaf()","anchor":"t:deaf/0"},{"id":"flags/0","deprecated":false,"title":"flags()","anchor":"t:flags/0"},{"id":"joined_at/0","deprecated":false,"title":"joined_at()","anchor":"t:joined_at/0"},{"id":"mute/0","deprecated":false,"title":"mute()","anchor":"t:mute/0"},{"id":"nick/0","deprecated":false,"title":"nick()","anchor":"t:nick/0"},{"id":"pending/0","deprecated":false,"title":"pending()","anchor":"t:pending/0"},{"id":"premium_since/0","deprecated":false,"title":"premium_since()","anchor":"t:premium_since/0"},{"id":"roles/0","deprecated":false,"title":"roles()","anchor":"t:roles/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"user_id/0","deprecated":false,"title":"user_id()","anchor":"t:user_id/0"}],"key":"types"},{"name":"Functions","nodes":[{"id":"avatar_url/3","deprecated":false,"title":"avatar_url(member, guild_id, image_format \\\\ \"png\")","anchor":"avatar_url/3"},{"id":"guild_channel_permissions/3","deprecated":false,"title":"guild_channel_permissions(member, guild, channel_id)","anchor":"guild_channel_permissions/3"},{"id":"guild_permissions/2","deprecated":false,"title":"guild_permissions(member, guild)","anchor":"guild_permissions/2"},{"id":"mention/1","deprecated":false,"title":"mention(member)","anchor":"mention/1"},{"id":"top_role/2","deprecated":false,"title":"top_role(member, guild)","anchor":"top_role/2"}],"key":"functions"}],"nested_title":".Guild.Member","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.Guild.Member.Flags","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Guild.Member.Flags","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"bypasses_verification/0","deprecated":false,"title":"bypasses_verification()","anchor":"t:bypasses_verification/0"},{"id":"completed_onboarding/0","deprecated":false,"title":"completed_onboarding()","anchor":"t:completed_onboarding/0"},{"id":"did_rejoin/0","deprecated":false,"title":"did_rejoin()","anchor":"t:did_rejoin/0"},{"id":"flags/0","deprecated":false,"title":"flags()","anchor":"t:flags/0"},{"id":"started_onboarding/0","deprecated":false,"title":"started_onboarding()","anchor":"t:started_onboarding/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"}],"key":"types"},{"name":"Functions","nodes":[{"id":"from_integer/1","deprecated":false,"title":"from_integer(flag_value)","anchor":"from_integer/1"},{"id":"to_integer/1","deprecated":false,"title":"to_integer(flag_struct)","anchor":"to_integer/1"}],"key":"functions"}],"nested_title":".Guild.Member.Flags","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.Guild.Role","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Guild.Role","sections":[{"id":"Mentioning Roles in Messages","anchor":"module-mentioning-roles-in-messages"}],"nodeGroups":[{"name":"Types","nodes":[{"id":"color/0","deprecated":false,"title":"color()","anchor":"t:color/0"},{"id":"hoist/0","deprecated":false,"title":"hoist()","anchor":"t:hoist/0"},{"id":"icon/0","deprecated":false,"title":"icon()","anchor":"t:icon/0"},{"id":"id/0","deprecated":false,"title":"id()","anchor":"t:id/0"},{"id":"managed/0","deprecated":false,"title":"managed()","anchor":"t:managed/0"},{"id":"mentionable/0","deprecated":false,"title":"mentionable()","anchor":"t:mentionable/0"},{"id":"name/0","deprecated":false,"title":"name()","anchor":"t:name/0"},{"id":"permissions/0","deprecated":false,"title":"permissions()","anchor":"t:permissions/0"},{"id":"position/0","deprecated":false,"title":"position()","anchor":"t:position/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"unicode_emoji/0","deprecated":false,"title":"unicode_emoji()","anchor":"t:unicode_emoji/0"}],"key":"types"},{"name":"Functions","nodes":[{"id":"mention/1","deprecated":false,"title":"mention(role)","anchor":"mention/1"}],"key":"functions"}],"nested_title":".Guild.Role","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.Guild.ScheduledEvent","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Guild.ScheduledEvent","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"channel_id/0","deprecated":false,"title":"channel_id()","anchor":"t:channel_id/0"},{"id":"creator/0","deprecated":false,"title":"creator()","anchor":"t:creator/0"},{"id":"creator_id/0","deprecated":false,"title":"creator_id()","anchor":"t:creator_id/0"},{"id":"description/0","deprecated":false,"title":"description()","anchor":"t:description/0"},{"id":"entity_id/0","deprecated":false,"title":"entity_id()","anchor":"t:entity_id/0"},{"id":"entity_metadata/0","deprecated":false,"title":"entity_metadata()","anchor":"t:entity_metadata/0"},{"id":"entity_type/0","deprecated":false,"title":"entity_type()","anchor":"t:entity_type/0"},{"id":"guild_id/0","deprecated":false,"title":"guild_id()","anchor":"t:guild_id/0"},{"id":"id/0","deprecated":false,"title":"id()","anchor":"t:id/0"},{"id":"name/0","deprecated":false,"title":"name()","anchor":"t:name/0"},{"id":"privacy_level/0","deprecated":false,"title":"privacy_level()","anchor":"t:privacy_level/0"},{"id":"scheduled_end_time/0","deprecated":false,"title":"scheduled_end_time()","anchor":"t:scheduled_end_time/0"},{"id":"scheduled_start_time/0","deprecated":false,"title":"scheduled_start_time()","anchor":"t:scheduled_start_time/0"},{"id":"status/0","deprecated":false,"title":"status()","anchor":"t:status/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"user_count/0","deprecated":false,"title":"user_count()","anchor":"t:user_count/0"}],"key":"types"},{"name":"Functions","nodes":[{"id":"to_struct/1","deprecated":false,"title":"to_struct(map)","anchor":"to_struct/1"}],"key":"functions"}],"nested_title":".Guild.ScheduledEvent","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.Guild.ScheduledEvent.EntityMetadata","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Guild.ScheduledEvent.EntityMetadata","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"location/0","deprecated":false,"title":"location()","anchor":"t:location/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"}],"key":"types"}],"nested_title":".Guild.ScheduledEvent.EntityMetadata","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.Guild.ScheduledEvent.User","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Guild.ScheduledEvent.User","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"event_id/0","deprecated":false,"title":"event_id()","anchor":"t:event_id/0"},{"id":"member/0","deprecated":false,"title":"member()","anchor":"t:member/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"user/0","deprecated":false,"title":"user()","anchor":"t:user/0"}],"key":"types"},{"name":"Functions","nodes":[{"id":"to_struct/1","deprecated":false,"title":"to_struct(map)","anchor":"to_struct/1"}],"key":"functions"}],"nested_title":".Guild.ScheduledEvent.User","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.Guild.SystemChannelFlags","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Guild.SystemChannelFlags","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"flags/0","deprecated":false,"title":"flags()","anchor":"t:flags/0"},{"id":"suppress_guild_reminder_notifications/0","deprecated":false,"title":"suppress_guild_reminder_notifications()","anchor":"t:suppress_guild_reminder_notifications/0"},{"id":"suppress_join_notification_replies/0","deprecated":false,"title":"suppress_join_notification_replies()","anchor":"t:suppress_join_notification_replies/0"},{"id":"suppress_join_notifications/0","deprecated":false,"title":"suppress_join_notifications()","anchor":"t:suppress_join_notifications/0"},{"id":"suppress_premium_subscriptions/0","deprecated":false,"title":"suppress_premium_subscriptions()","anchor":"t:suppress_premium_subscriptions/0"},{"id":"suppress_role_subscription_purchase_notifications/0","deprecated":false,"title":"suppress_role_subscription_purchase_notifications()","anchor":"t:suppress_role_subscription_purchase_notifications/0"},{"id":"suppress_role_subscription_purchase_notifications_replies/0","deprecated":false,"title":"suppress_role_subscription_purchase_notifications_replies()","anchor":"t:suppress_role_subscription_purchase_notifications_replies/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"}],"key":"types"},{"name":"Functions","nodes":[{"id":"from_integer/1","deprecated":false,"title":"from_integer(flag_value)","anchor":"from_integer/1"},{"id":"to_integer/1","deprecated":false,"title":"to_integer(flag_struct)","anchor":"to_integer/1"}],"key":"functions"}],"nested_title":".Guild.SystemChannelFlags","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.Guild.UnavailableGuild","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Guild.UnavailableGuild","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"id/0","deprecated":false,"title":"id()","anchor":"t:id/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"unavailable/0","deprecated":false,"title":"unavailable()","anchor":"t:unavailable/0"}],"key":"types"},{"name":"Functions","nodes":[{"id":"to_struct/1","deprecated":false,"title":"to_struct(map)","anchor":"to_struct/1"}],"key":"functions"}],"nested_title":".Guild.UnavailableGuild","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.Interaction","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Interaction","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"application_id/0","deprecated":false,"title":"application_id()","anchor":"t:application_id/0"},{"id":"channel/0","deprecated":false,"title":"channel()","anchor":"t:channel/0"},{"id":"channel_id/0","deprecated":false,"title":"channel_id()","anchor":"t:channel_id/0"},{"id":"data/0","deprecated":false,"title":"data()","anchor":"t:data/0"},{"id":"guild_id/0","deprecated":false,"title":"guild_id()","anchor":"t:guild_id/0"},{"id":"guild_locale/0","deprecated":false,"title":"guild_locale()","anchor":"t:guild_locale/0"},{"id":"id/0","deprecated":false,"title":"id()","anchor":"t:id/0"},{"id":"locale/0","deprecated":false,"title":"locale()","anchor":"t:locale/0"},{"id":"member/0","deprecated":false,"title":"member()","anchor":"t:member/0"},{"id":"message/0","deprecated":false,"title":"message()","anchor":"t:message/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"token/0","deprecated":false,"title":"token()","anchor":"t:token/0"},{"id":"type/0","deprecated":false,"title":"type()","anchor":"t:type/0"},{"id":"user/0","deprecated":false,"title":"user()","anchor":"t:user/0"},{"id":"version/0","deprecated":false,"title":"version()","anchor":"t:version/0"}],"key":"types"}],"nested_title":".Interaction","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.Invite","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Invite","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"approximate_member_count/0","deprecated":false,"title":"approximate_member_count()","anchor":"t:approximate_member_count/0"},{"id":"approximate_presence_count/0","deprecated":false,"title":"approximate_presence_count()","anchor":"t:approximate_presence_count/0"},{"id":"channel/0","deprecated":false,"title":"channel()","anchor":"t:channel/0"},{"id":"code/0","deprecated":false,"title":"code()","anchor":"t:code/0"},{"id":"created_at/0","deprecated":false,"title":"created_at()","anchor":"t:created_at/0"},{"id":"detailed_invite/0","deprecated":false,"title":"detailed_invite()","anchor":"t:detailed_invite/0"},{"id":"guild/0","deprecated":false,"title":"guild()","anchor":"t:guild/0"},{"id":"inviter/0","deprecated":false,"title":"inviter()","anchor":"t:inviter/0"},{"id":"max_age/0","deprecated":false,"title":"max_age()","anchor":"t:max_age/0"},{"id":"max_uses/0","deprecated":false,"title":"max_uses()","anchor":"t:max_uses/0"},{"id":"simple_invite/0","deprecated":false,"title":"simple_invite()","anchor":"t:simple_invite/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"target_user/0","deprecated":false,"title":"target_user()","anchor":"t:target_user/0"},{"id":"target_user_type/0","deprecated":false,"title":"target_user_type()","anchor":"t:target_user_type/0"},{"id":"temporary/0","deprecated":false,"title":"temporary()","anchor":"t:temporary/0"},{"id":"uses/0","deprecated":false,"title":"uses()","anchor":"t:uses/0"}],"key":"types"}],"nested_title":".Invite","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.Message","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Message","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"activity/0","deprecated":false,"title":"activity()","anchor":"t:activity/0"},{"id":"application/0","deprecated":false,"title":"application()","anchor":"t:application/0"},{"id":"application_id/0","deprecated":false,"title":"application_id()","anchor":"t:application_id/0"},{"id":"attachments/0","deprecated":false,"title":"attachments()","anchor":"t:attachments/0"},{"id":"author/0","deprecated":false,"title":"author()","anchor":"t:author/0"},{"id":"channel_id/0","deprecated":false,"title":"channel_id()","anchor":"t:channel_id/0"},{"id":"components/0","deprecated":false,"title":"components()","anchor":"t:components/0"},{"id":"content/0","deprecated":false,"title":"content()","anchor":"t:content/0"},{"id":"edited_timestamp/0","deprecated":false,"title":"edited_timestamp()","anchor":"t:edited_timestamp/0"},{"id":"embeds/0","deprecated":false,"title":"embeds()","anchor":"t:embeds/0"},{"id":"guild_id/0","deprecated":false,"title":"guild_id()","anchor":"t:guild_id/0"},{"id":"id/0","deprecated":false,"title":"id()","anchor":"t:id/0"},{"id":"interaction/0","deprecated":false,"title":"interaction()","anchor":"t:interaction/0"},{"id":"member/0","deprecated":false,"title":"member()","anchor":"t:member/0"},{"id":"mention_channels/0","deprecated":false,"title":"mention_channels()","anchor":"t:mention_channels/0"},{"id":"mention_everyone/0","deprecated":false,"title":"mention_everyone()","anchor":"t:mention_everyone/0"},{"id":"mention_roles/0","deprecated":false,"title":"mention_roles()","anchor":"t:mention_roles/0"},{"id":"mentions/0","deprecated":false,"title":"mentions()","anchor":"t:mentions/0"},{"id":"message_reference/0","deprecated":false,"title":"message_reference()","anchor":"t:message_reference/0"},{"id":"nonce/0","deprecated":false,"title":"nonce()","anchor":"t:nonce/0"},{"id":"pinned/0","deprecated":false,"title":"pinned()","anchor":"t:pinned/0"},{"id":"poll/0","deprecated":false,"title":"poll()","anchor":"t:poll/0"},{"id":"reactions/0","deprecated":false,"title":"reactions()","anchor":"t:reactions/0"},{"id":"referenced_message/0","deprecated":false,"title":"referenced_message()","anchor":"t:referenced_message/0"},{"id":"sticker_items/0","deprecated":false,"title":"sticker_items()","anchor":"t:sticker_items/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"thread/0","deprecated":false,"title":"thread()","anchor":"t:thread/0"},{"id":"timestamp/0","deprecated":false,"title":"timestamp()","anchor":"t:timestamp/0"},{"id":"tts/0","deprecated":false,"title":"tts()","anchor":"t:tts/0"},{"id":"type/0","deprecated":false,"title":"type()","anchor":"t:type/0"},{"id":"webhook_id/0","deprecated":false,"title":"webhook_id()","anchor":"t:webhook_id/0"}],"key":"types"},{"name":"Functions","nodes":[{"id":"to_url/1","deprecated":false,"title":"to_url(message)","anchor":"to_url/1"}],"key":"functions"}],"nested_title":".Message","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.Message.Activity","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Message.Activity","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"party_id/0","deprecated":false,"title":"party_id()","anchor":"t:party_id/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"type/0","deprecated":false,"title":"type()","anchor":"t:type/0"}],"key":"types"}],"nested_title":".Message.Activity","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.Message.Application","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Message.Application","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"cover_image/0","deprecated":false,"title":"cover_image()","anchor":"t:cover_image/0"},{"id":"description/0","deprecated":false,"title":"description()","anchor":"t:description/0"},{"id":"icon/0","deprecated":false,"title":"icon()","anchor":"t:icon/0"},{"id":"id/0","deprecated":false,"title":"id()","anchor":"t:id/0"},{"id":"name/0","deprecated":false,"title":"name()","anchor":"t:name/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"}],"key":"types"}],"nested_title":".Message.Application","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.Message.Attachment","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Message.Attachment","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"filename/0","deprecated":false,"title":"filename()","anchor":"t:filename/0"},{"id":"height/0","deprecated":false,"title":"height()","anchor":"t:height/0"},{"id":"id/0","deprecated":false,"title":"id()","anchor":"t:id/0"},{"id":"proxy_url/0","deprecated":false,"title":"proxy_url()","anchor":"t:proxy_url/0"},{"id":"size/0","deprecated":false,"title":"size()","anchor":"t:size/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"url/0","deprecated":false,"title":"url()","anchor":"t:url/0"},{"id":"width/0","deprecated":false,"title":"width()","anchor":"t:width/0"}],"key":"types"}],"nested_title":".Message.Attachment","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.Message.Component","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Message.Component","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"components/0","deprecated":false,"title":"components()","anchor":"t:components/0"},{"id":"custom_id/0","deprecated":false,"title":"custom_id()","anchor":"t:custom_id/0"},{"id":"disabled/0","deprecated":false,"title":"disabled()","anchor":"t:disabled/0"},{"id":"emoji/0","deprecated":false,"title":"emoji()","anchor":"t:emoji/0"},{"id":"label/0","deprecated":false,"title":"label()","anchor":"t:label/0"},{"id":"max_length/0","deprecated":false,"title":"max_length()","anchor":"t:max_length/0"},{"id":"max_values/0","deprecated":false,"title":"max_values()","anchor":"t:max_values/0"},{"id":"min_length/0","deprecated":false,"title":"min_length()","anchor":"t:min_length/0"},{"id":"min_values/0","deprecated":false,"title":"min_values()","anchor":"t:min_values/0"},{"id":"options/0","deprecated":false,"title":"options()","anchor":"t:options/0"},{"id":"placeholder/0","deprecated":false,"title":"placeholder()","anchor":"t:placeholder/0"},{"id":"required/0","deprecated":false,"title":"required()","anchor":"t:required/0"},{"id":"style/0","deprecated":false,"title":"style()","anchor":"t:style/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"type/0","deprecated":false,"title":"type()","anchor":"t:type/0"},{"id":"url/0","deprecated":false,"title":"url()","anchor":"t:url/0"},{"id":"value/0","deprecated":false,"title":"value()","anchor":"t:value/0"}],"key":"types"}],"nested_title":".Message.Component","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.Message.Poll","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Message.Poll","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"allow_multiselect/0","deprecated":false,"title":"allow_multiselect()","anchor":"t:allow_multiselect/0"},{"id":"answers/0","deprecated":false,"title":"answers()","anchor":"t:answers/0"},{"id":"duration/0","deprecated":false,"title":"duration()","anchor":"t:duration/0"},{"id":"expiry/0","deprecated":false,"title":"expiry()","anchor":"t:expiry/0"},{"id":"layout_type/0","deprecated":false,"title":"layout_type()","anchor":"t:layout_type/0"},{"id":"question/0","deprecated":false,"title":"question()","anchor":"t:question/0"},{"id":"results/0","deprecated":false,"title":"results()","anchor":"t:results/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"}],"key":"types"},{"name":"Functions","nodes":[{"id":"create_poll/2","deprecated":false,"title":"create_poll(question_text, list)","anchor":"create_poll/2"},{"id":"put_answer/2","deprecated":false,"title":"put_answer(poll, answer)","anchor":"put_answer/2"},{"id":"put_answer/3","deprecated":false,"title":"put_answer(poll, answer, list)","anchor":"put_answer/3"}],"key":"functions"}],"nested_title":".Message.Poll","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.Message.Poll.Answer","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Message.Poll.Answer","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"answer_id/0","deprecated":false,"title":"answer_id()","anchor":"t:answer_id/0"},{"id":"poll_media/0","deprecated":false,"title":"poll_media()","anchor":"t:poll_media/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"}],"key":"types"}],"nested_title":".Message.Poll.Answer","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.Message.Poll.MediaObject","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Message.Poll.MediaObject","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"emoji/0","deprecated":false,"title":"emoji()","anchor":"t:emoji/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"text/0","deprecated":false,"title":"text()","anchor":"t:text/0"}],"key":"types"}],"nested_title":".Message.Poll.MediaObject","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.Message.Poll.Results","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Message.Poll.Results","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"answer_counts/0","deprecated":false,"title":"answer_counts()","anchor":"t:answer_counts/0"},{"id":"is_finalized/0","deprecated":false,"title":"is_finalized()","anchor":"t:is_finalized/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"}],"key":"types"}],"nested_title":".Message.Poll.Results","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.Message.Reaction","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Message.Reaction","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"count/0","deprecated":false,"title":"count()","anchor":"t:count/0"},{"id":"emoji/0","deprecated":false,"title":"emoji()","anchor":"t:emoji/0"},{"id":"me/0","deprecated":false,"title":"me()","anchor":"t:me/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"}],"key":"types"}],"nested_title":".Message.Reaction","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.Message.Reference","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Message.Reference","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"channel_id/0","deprecated":false,"title":"channel_id()","anchor":"t:channel_id/0"},{"id":"guild_id/0","deprecated":false,"title":"guild_id()","anchor":"t:guild_id/0"},{"id":"message_id/0","deprecated":false,"title":"message_id()","anchor":"t:message_id/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"}],"key":"types"}],"nested_title":".Message.Reference","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.Overwrite","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Overwrite","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"allow/0","deprecated":false,"title":"allow()","anchor":"t:allow/0"},{"id":"deny/0","deprecated":false,"title":"deny()","anchor":"t:deny/0"},{"id":"id/0","deprecated":false,"title":"id()","anchor":"t:id/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"type/0","deprecated":false,"title":"type()","anchor":"t:type/0"}],"key":"types"}],"nested_title":".Overwrite","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.Sticker","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Sticker","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"available/0","deprecated":false,"title":"available()","anchor":"t:available/0"},{"id":"description/0","deprecated":false,"title":"description()","anchor":"t:description/0"},{"id":"format_type/0","deprecated":false,"title":"format_type()","anchor":"t:format_type/0"},{"id":"guild_id/0","deprecated":false,"title":"guild_id()","anchor":"t:guild_id/0"},{"id":"id/0","deprecated":false,"title":"id()","anchor":"t:id/0"},{"id":"name/0","deprecated":false,"title":"name()","anchor":"t:name/0"},{"id":"pack_id/0","deprecated":false,"title":"pack_id()","anchor":"t:pack_id/0"},{"id":"sort_value/0","deprecated":false,"title":"sort_value()","anchor":"t:sort_value/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"tags/0","deprecated":false,"title":"tags()","anchor":"t:tags/0"},{"id":"type/0","deprecated":false,"title":"type()","anchor":"t:type/0"},{"id":"user/0","deprecated":false,"title":"user()","anchor":"t:user/0"}],"key":"types"},{"name":"Functions","nodes":[{"id":"cdn_url/1","deprecated":false,"title":"cdn_url(map)","anchor":"cdn_url/1"}],"key":"functions"}],"nested_title":".Sticker","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.Sticker.Pack","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Sticker.Pack","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"banner_asset_id/0","deprecated":false,"title":"banner_asset_id()","anchor":"t:banner_asset_id/0"},{"id":"cover_sticker_id/0","deprecated":false,"title":"cover_sticker_id()","anchor":"t:cover_sticker_id/0"},{"id":"description/0","deprecated":false,"title":"description()","anchor":"t:description/0"},{"id":"id/0","deprecated":false,"title":"id()","anchor":"t:id/0"},{"id":"name/0","deprecated":false,"title":"name()","anchor":"t:name/0"},{"id":"sku_id/0","deprecated":false,"title":"sku_id()","anchor":"t:sku_id/0"},{"id":"stickers/0","deprecated":false,"title":"stickers()","anchor":"t:stickers/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"}],"key":"types"},{"name":"Functions","nodes":[{"id":"banner_url/1","deprecated":false,"title":"banner_url(map)","anchor":"banner_url/1"}],"key":"functions"}],"nested_title":".Sticker.Pack","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.ThreadMember","deprecated":false,"group":"Structs","title":"Nostrum.Struct.ThreadMember","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"flags/0","deprecated":false,"title":"flags()","anchor":"t:flags/0"},{"id":"guild_id/0","deprecated":false,"title":"guild_id()","anchor":"t:guild_id/0"},{"id":"id/0","deprecated":false,"title":"id()","anchor":"t:id/0"},{"id":"join_timestamp/0","deprecated":false,"title":"join_timestamp()","anchor":"t:join_timestamp/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"user_id/0","deprecated":false,"title":"user_id()","anchor":"t:user_id/0"}],"key":"types"}],"nested_title":".ThreadMember","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.User","deprecated":false,"group":"Structs","title":"Nostrum.Struct.User","sections":[{"id":"Mentioning Users in Messages","anchor":"module-mentioning-users-in-messages"},{"id":"User vs. Member","anchor":"module-user-vs-member"}],"nodeGroups":[{"name":"Types","nodes":[{"id":"avatar/0","deprecated":false,"title":"avatar()","anchor":"t:avatar/0"},{"id":"bot/0","deprecated":false,"title":"bot()","anchor":"t:bot/0"},{"id":"discriminator/0","deprecated":false,"title":"discriminator()","anchor":"t:discriminator/0"},{"id":"global_name/0","deprecated":false,"title":"global_name()","anchor":"t:global_name/0"},{"id":"id/0","deprecated":false,"title":"id()","anchor":"t:id/0"},{"id":"public_flags/0","deprecated":false,"title":"public_flags()","anchor":"t:public_flags/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"username/0","deprecated":false,"title":"username()","anchor":"t:username/0"}],"key":"types"},{"name":"Functions","nodes":[{"id":"avatar_url/2","deprecated":false,"title":"avatar_url(user, image_format \\\\ \"webp\")","anchor":"avatar_url/2"},{"id":"full_name/1","deprecated":false,"title":"full_name(user)","anchor":"full_name/1"},{"id":"mention/1","deprecated":false,"title":"mention(user)","anchor":"mention/1"}],"key":"functions"}],"nested_title":".User","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.User.Connection","deprecated":false,"group":"Structs","title":"Nostrum.Struct.User.Connection","sections":[],"nested_title":".User.Connection","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.User.Flags","deprecated":false,"group":"Structs","title":"Nostrum.Struct.User.Flags","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"bug_hunter_level_1/0","deprecated":false,"title":"bug_hunter_level_1()","anchor":"t:bug_hunter_level_1/0"},{"id":"bug_hunter_level_2/0","deprecated":false,"title":"bug_hunter_level_2()","anchor":"t:bug_hunter_level_2/0"},{"id":"early_supporter/0","deprecated":false,"title":"early_supporter()","anchor":"t:early_supporter/0"},{"id":"flags/0","deprecated":false,"title":"flags()","anchor":"t:flags/0"},{"id":"hypesquad_balance/0","deprecated":false,"title":"hypesquad_balance()","anchor":"t:hypesquad_balance/0"},{"id":"hypesquad_bravery/0","deprecated":false,"title":"hypesquad_bravery()","anchor":"t:hypesquad_bravery/0"},{"id":"hypesquad_brilliance/0","deprecated":false,"title":"hypesquad_brilliance()","anchor":"t:hypesquad_brilliance/0"},{"id":"hypesquad_events/0","deprecated":false,"title":"hypesquad_events()","anchor":"t:hypesquad_events/0"},{"id":"partner/0","deprecated":false,"title":"partner()","anchor":"t:partner/0"},{"id":"raw_flags/0","deprecated":false,"title":"raw_flags()","anchor":"t:raw_flags/0"},{"id":"staff/0","deprecated":false,"title":"staff()","anchor":"t:staff/0"},{"id":"system/0","deprecated":false,"title":"system()","anchor":"t:system/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"team_user/0","deprecated":false,"title":"team_user()","anchor":"t:team_user/0"},{"id":"verified_bot/0","deprecated":false,"title":"verified_bot()","anchor":"t:verified_bot/0"},{"id":"verified_developer/0","deprecated":false,"title":"verified_developer()","anchor":"t:verified_developer/0"}],"key":"types"},{"name":"Functions","nodes":[{"id":"from_integer/1","deprecated":false,"title":"from_integer(flag_value)","anchor":"from_integer/1"},{"id":"to_integer/1","deprecated":false,"title":"to_integer(flag_struct)","anchor":"to_integer/1"}],"key":"functions"}],"nested_title":".User.Flags","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.VoiceRegion","deprecated":false,"group":"Structs","title":"Nostrum.Struct.VoiceRegion","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"}],"key":"types"}],"nested_title":".VoiceRegion","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.VoiceWSState","deprecated":false,"group":"Structs","title":"Nostrum.Struct.VoiceWSState","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"channel_id/0","deprecated":false,"title":"channel_id()","anchor":"t:channel_id/0"},{"id":"conn/0","deprecated":false,"title":"conn()","anchor":"t:conn/0"},{"id":"conn_pid/0","deprecated":false,"title":"conn_pid()","anchor":"t:conn_pid/0"},{"id":"gateway/0","deprecated":false,"title":"gateway()","anchor":"t:gateway/0"},{"id":"guild_id/0","deprecated":false,"title":"guild_id()","anchor":"t:guild_id/0"},{"id":"heartbeat_ack/0","deprecated":false,"title":"heartbeat_ack()","anchor":"t:heartbeat_ack/0"},{"id":"heartbeat_interval/0","deprecated":false,"title":"heartbeat_interval()","anchor":"t:heartbeat_interval/0"},{"id":"heartbeat_ref/0","deprecated":false,"title":"heartbeat_ref()","anchor":"t:heartbeat_ref/0"},{"id":"identified/0","deprecated":false,"title":"identified()","anchor":"t:identified/0"},{"id":"last_heartbeat_ack/0","deprecated":false,"title":"last_heartbeat_ack()","anchor":"t:last_heartbeat_ack/0"},{"id":"last_heartbeat_send/0","deprecated":false,"title":"last_heartbeat_send()","anchor":"t:last_heartbeat_send/0"},{"id":"secret_key/0","deprecated":false,"title":"secret_key()","anchor":"t:secret_key/0"},{"id":"session/0","deprecated":false,"title":"session()","anchor":"t:session/0"},{"id":"ssrc_map/0","deprecated":false,"title":"ssrc_map()","anchor":"t:ssrc_map/0"},{"id":"stream/0","deprecated":false,"title":"stream()","anchor":"t:stream/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"token/0","deprecated":false,"title":"token()","anchor":"t:token/0"}],"key":"types"}],"nested_title":".VoiceWSState","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.WSState","deprecated":false,"group":"Structs","title":"Nostrum.Struct.WSState","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"compress_ctx/0","deprecated":false,"title":"compress_ctx()","anchor":"t:compress_ctx/0"},{"id":"conn/0","deprecated":false,"title":"conn()","anchor":"t:conn/0"},{"id":"conn_pid/0","deprecated":false,"title":"conn_pid()","anchor":"t:conn_pid/0"},{"id":"gateway/0","deprecated":false,"title":"gateway()","anchor":"t:gateway/0"},{"id":"heartbeat_ack/0","deprecated":false,"title":"heartbeat_ack()","anchor":"t:heartbeat_ack/0"},{"id":"heartbeat_interval/0","deprecated":false,"title":"heartbeat_interval()","anchor":"t:heartbeat_interval/0"},{"id":"last_heartbeat_ack/0","deprecated":false,"title":"last_heartbeat_ack()","anchor":"t:last_heartbeat_ack/0"},{"id":"last_heartbeat_send/0","deprecated":false,"title":"last_heartbeat_send()","anchor":"t:last_heartbeat_send/0"},{"id":"resume_gateway/0","deprecated":false,"title":"resume_gateway()","anchor":"t:resume_gateway/0"},{"id":"seq/0","deprecated":false,"title":"seq()","anchor":"t:seq/0"},{"id":"session/0","deprecated":false,"title":"session()","anchor":"t:session/0"},{"id":"shard_num/0","deprecated":false,"title":"shard_num()","anchor":"t:shard_num/0"},{"id":"stream/0","deprecated":false,"title":"stream()","anchor":"t:stream/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"total_shards/0","deprecated":false,"title":"total_shards()","anchor":"t:total_shards/0"}],"key":"types"}],"nested_title":".WSState","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.Webhook","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Webhook","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"avatar/0","deprecated":false,"title":"avatar()","anchor":"t:avatar/0"},{"id":"channel_id/0","deprecated":false,"title":"channel_id()","anchor":"t:channel_id/0"},{"id":"guild_id/0","deprecated":false,"title":"guild_id()","anchor":"t:guild_id/0"},{"id":"id/0","deprecated":false,"title":"id()","anchor":"t:id/0"},{"id":"name/0","deprecated":false,"title":"name()","anchor":"t:name/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"token/0","deprecated":false,"title":"token()","anchor":"t:token/0"},{"id":"user/0","deprecated":false,"title":"user()","anchor":"t:user/0"}],"key":"types"}],"nested_title":".Webhook","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.Event.AutoModerationRuleExecute","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Event.AutoModerationRuleExecute","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"action/0","deprecated":false,"title":"action()","anchor":"t:action/0"},{"id":"alert_system_message_id/0","deprecated":false,"title":"alert_system_message_id()","anchor":"t:alert_system_message_id/0"},{"id":"channel_id/0","deprecated":false,"title":"channel_id()","anchor":"t:channel_id/0"},{"id":"content/0","deprecated":false,"title":"content()","anchor":"t:content/0"},{"id":"guild_id/0","deprecated":false,"title":"guild_id()","anchor":"t:guild_id/0"},{"id":"matched_content/0","deprecated":false,"title":"matched_content()","anchor":"t:matched_content/0"},{"id":"matched_keyword/0","deprecated":false,"title":"matched_keyword()","anchor":"t:matched_keyword/0"},{"id":"message_id/0","deprecated":false,"title":"message_id()","anchor":"t:message_id/0"},{"id":"rule_id/0","deprecated":false,"title":"rule_id()","anchor":"t:rule_id/0"},{"id":"rule_trigger_type/0","deprecated":false,"title":"rule_trigger_type()","anchor":"t:rule_trigger_type/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"user_id/0","deprecated":false,"title":"user_id()","anchor":"t:user_id/0"}],"key":"types"}],"nested_title":".AutoModerationRuleExecute","nested_context":"Nostrum.Struct.Event"},{"id":"Nostrum.Struct.Event.ChannelPinsUpdate","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Event.ChannelPinsUpdate","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"channel_id/0","deprecated":false,"title":"channel_id()","anchor":"t:channel_id/0"},{"id":"guild_id/0","deprecated":false,"title":"guild_id()","anchor":"t:guild_id/0"},{"id":"last_pin_timestamp/0","deprecated":false,"title":"last_pin_timestamp()","anchor":"t:last_pin_timestamp/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"}],"key":"types"}],"nested_title":".ChannelPinsUpdate","nested_context":"Nostrum.Struct.Event"},{"id":"Nostrum.Struct.Event.GuildBanAdd","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Event.GuildBanAdd","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"guild_id/0","deprecated":false,"title":"guild_id()","anchor":"t:guild_id/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"user/0","deprecated":false,"title":"user()","anchor":"t:user/0"}],"key":"types"}],"nested_title":".GuildBanAdd","nested_context":"Nostrum.Struct.Event"},{"id":"Nostrum.Struct.Event.GuildBanRemove","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Event.GuildBanRemove","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"guild_id/0","deprecated":false,"title":"guild_id()","anchor":"t:guild_id/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"user/0","deprecated":false,"title":"user()","anchor":"t:user/0"}],"key":"types"}],"nested_title":".GuildBanRemove","nested_context":"Nostrum.Struct.Event"},{"id":"Nostrum.Struct.Event.GuildIntegrationDelete","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Event.GuildIntegrationDelete","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"application_id/0","deprecated":false,"title":"application_id()","anchor":"t:application_id/0"},{"id":"guild_id/0","deprecated":false,"title":"guild_id()","anchor":"t:guild_id/0"},{"id":"id/0","deprecated":false,"title":"id()","anchor":"t:id/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"}],"key":"types"}],"nested_title":".GuildIntegrationDelete","nested_context":"Nostrum.Struct.Event"},{"id":"Nostrum.Struct.Event.GuildIntegrationsUpdate","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Event.GuildIntegrationsUpdate","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"guild_id/0","deprecated":false,"title":"guild_id()","anchor":"t:guild_id/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"}],"key":"types"}],"nested_title":".GuildIntegrationsUpdate","nested_context":"Nostrum.Struct.Event"},{"id":"Nostrum.Struct.Event.GuildScheduledEventUserAdd","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Event.GuildScheduledEventUserAdd","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"guild_id/0","deprecated":false,"title":"guild_id()","anchor":"t:guild_id/0"},{"id":"guild_scheduled_event_id/0","deprecated":false,"title":"guild_scheduled_event_id()","anchor":"t:guild_scheduled_event_id/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"user_id/0","deprecated":false,"title":"user_id()","anchor":"t:user_id/0"}],"key":"types"}],"nested_title":".GuildScheduledEventUserAdd","nested_context":"Nostrum.Struct.Event"},{"id":"Nostrum.Struct.Event.GuildScheduledEventUserRemove","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Event.GuildScheduledEventUserRemove","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"guild_id/0","deprecated":false,"title":"guild_id()","anchor":"t:guild_id/0"},{"id":"guild_scheduled_event_id/0","deprecated":false,"title":"guild_scheduled_event_id()","anchor":"t:guild_scheduled_event_id/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"user_id/0","deprecated":false,"title":"user_id()","anchor":"t:user_id/0"}],"key":"types"}],"nested_title":".GuildScheduledEventUserRemove","nested_context":"Nostrum.Struct.Event"},{"id":"Nostrum.Struct.Event.InviteCreate","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Event.InviteCreate","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"channel_id/0","deprecated":false,"title":"channel_id()","anchor":"t:channel_id/0"},{"id":"code/0","deprecated":false,"title":"code()","anchor":"t:code/0"},{"id":"created_at/0","deprecated":false,"title":"created_at()","anchor":"t:created_at/0"},{"id":"guild_id/0","deprecated":false,"title":"guild_id()","anchor":"t:guild_id/0"},{"id":"inviter/0","deprecated":false,"title":"inviter()","anchor":"t:inviter/0"},{"id":"max_age/0","deprecated":false,"title":"max_age()","anchor":"t:max_age/0"},{"id":"max_uses/0","deprecated":false,"title":"max_uses()","anchor":"t:max_uses/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"target_user/0","deprecated":false,"title":"target_user()","anchor":"t:target_user/0"},{"id":"target_user_type/0","deprecated":false,"title":"target_user_type()","anchor":"t:target_user_type/0"},{"id":"temporary/0","deprecated":false,"title":"temporary()","anchor":"t:temporary/0"},{"id":"uses/0","deprecated":false,"title":"uses()","anchor":"t:uses/0"}],"key":"types"}],"nested_title":".InviteCreate","nested_context":"Nostrum.Struct.Event"},{"id":"Nostrum.Struct.Event.InviteDelete","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Event.InviteDelete","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"channel_id/0","deprecated":false,"title":"channel_id()","anchor":"t:channel_id/0"},{"id":"code/0","deprecated":false,"title":"code()","anchor":"t:code/0"},{"id":"guild_id/0","deprecated":false,"title":"guild_id()","anchor":"t:guild_id/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"}],"key":"types"}],"nested_title":".InviteDelete","nested_context":"Nostrum.Struct.Event"},{"id":"Nostrum.Struct.Event.MessageDelete","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Event.MessageDelete","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"channel_id/0","deprecated":false,"title":"channel_id()","anchor":"t:channel_id/0"},{"id":"deleted_message/0","deprecated":false,"title":"deleted_message()","anchor":"t:deleted_message/0"},{"id":"guild_id/0","deprecated":false,"title":"guild_id()","anchor":"t:guild_id/0"},{"id":"id/0","deprecated":false,"title":"id()","anchor":"t:id/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"}],"key":"types"}],"nested_title":".MessageDelete","nested_context":"Nostrum.Struct.Event"},{"id":"Nostrum.Struct.Event.MessageDeleteBulk","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Event.MessageDeleteBulk","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"channel_id/0","deprecated":false,"title":"channel_id()","anchor":"t:channel_id/0"},{"id":"deleted_messages/0","deprecated":false,"title":"deleted_messages()","anchor":"t:deleted_messages/0"},{"id":"guild_id/0","deprecated":false,"title":"guild_id()","anchor":"t:guild_id/0"},{"id":"ids/0","deprecated":false,"title":"ids()","anchor":"t:ids/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"}],"key":"types"}],"nested_title":".MessageDeleteBulk","nested_context":"Nostrum.Struct.Event"},{"id":"Nostrum.Struct.Event.MessageReactionAdd","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Event.MessageReactionAdd","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"channel_id/0","deprecated":false,"title":"channel_id()","anchor":"t:channel_id/0"},{"id":"emoji/0","deprecated":false,"title":"emoji()","anchor":"t:emoji/0"},{"id":"guild_id/0","deprecated":false,"title":"guild_id()","anchor":"t:guild_id/0"},{"id":"member/0","deprecated":false,"title":"member()","anchor":"t:member/0"},{"id":"message_id/0","deprecated":false,"title":"message_id()","anchor":"t:message_id/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"user_id/0","deprecated":false,"title":"user_id()","anchor":"t:user_id/0"}],"key":"types"}],"nested_title":".MessageReactionAdd","nested_context":"Nostrum.Struct.Event"},{"id":"Nostrum.Struct.Event.MessageReactionRemove","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Event.MessageReactionRemove","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"channel_id/0","deprecated":false,"title":"channel_id()","anchor":"t:channel_id/0"},{"id":"emoji/0","deprecated":false,"title":"emoji()","anchor":"t:emoji/0"},{"id":"guild_id/0","deprecated":false,"title":"guild_id()","anchor":"t:guild_id/0"},{"id":"message_id/0","deprecated":false,"title":"message_id()","anchor":"t:message_id/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"user_id/0","deprecated":false,"title":"user_id()","anchor":"t:user_id/0"}],"key":"types"}],"nested_title":".MessageReactionRemove","nested_context":"Nostrum.Struct.Event"},{"id":"Nostrum.Struct.Event.MessageReactionRemoveAll","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Event.MessageReactionRemoveAll","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"channel_id/0","deprecated":false,"title":"channel_id()","anchor":"t:channel_id/0"},{"id":"guild_id/0","deprecated":false,"title":"guild_id()","anchor":"t:guild_id/0"},{"id":"message_id/0","deprecated":false,"title":"message_id()","anchor":"t:message_id/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"}],"key":"types"}],"nested_title":".MessageReactionRemoveAll","nested_context":"Nostrum.Struct.Event"},{"id":"Nostrum.Struct.Event.MessageReactionRemoveEmoji","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Event.MessageReactionRemoveEmoji","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"channel_id/0","deprecated":false,"title":"channel_id()","anchor":"t:channel_id/0"},{"id":"emoji/0","deprecated":false,"title":"emoji()","anchor":"t:emoji/0"},{"id":"guild_id/0","deprecated":false,"title":"guild_id()","anchor":"t:guild_id/0"},{"id":"message_id/0","deprecated":false,"title":"message_id()","anchor":"t:message_id/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"}],"key":"types"}],"nested_title":".MessageReactionRemoveEmoji","nested_context":"Nostrum.Struct.Event"},{"id":"Nostrum.Struct.Event.PartialApplication","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Event.PartialApplication","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"flags/0","deprecated":false,"title":"flags()","anchor":"t:flags/0"},{"id":"id/0","deprecated":false,"title":"id()","anchor":"t:id/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"}],"key":"types"}],"nested_title":".PartialApplication","nested_context":"Nostrum.Struct.Event"},{"id":"Nostrum.Struct.Event.PollVoteChange","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Event.PollVoteChange","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"answer_id/0","deprecated":false,"title":"answer_id()","anchor":"t:answer_id/0"},{"id":"channel_id/0","deprecated":false,"title":"channel_id()","anchor":"t:channel_id/0"},{"id":"guild_id/0","deprecated":false,"title":"guild_id()","anchor":"t:guild_id/0"},{"id":"message_id/0","deprecated":false,"title":"message_id()","anchor":"t:message_id/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"type/0","deprecated":false,"title":"type()","anchor":"t:type/0"},{"id":"user_id/0","deprecated":false,"title":"user_id()","anchor":"t:user_id/0"}],"key":"types"}],"nested_title":".PollVoteChange","nested_context":"Nostrum.Struct.Event"},{"id":"Nostrum.Struct.Event.Ready","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Event.Ready","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"application/0","deprecated":false,"title":"application()","anchor":"t:application/0"},{"id":"guilds/0","deprecated":false,"title":"guilds()","anchor":"t:guilds/0"},{"id":"resume_gateway_url/0","deprecated":false,"title":"resume_gateway_url()","anchor":"t:resume_gateway_url/0"},{"id":"session_id/0","deprecated":false,"title":"session_id()","anchor":"t:session_id/0"},{"id":"shard/0","deprecated":false,"title":"shard()","anchor":"t:shard/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"user/0","deprecated":false,"title":"user()","anchor":"t:user/0"},{"id":"v/0","deprecated":false,"title":"v()","anchor":"t:v/0"}],"key":"types"}],"nested_title":".Ready","nested_context":"Nostrum.Struct.Event"},{"id":"Nostrum.Struct.Event.SpeakingUpdate","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Event.SpeakingUpdate","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"channel_id/0","deprecated":false,"title":"channel_id()","anchor":"t:channel_id/0"},{"id":"current_url/0","deprecated":false,"title":"current_url()","anchor":"t:current_url/0"},{"id":"guild_id/0","deprecated":false,"title":"guild_id()","anchor":"t:guild_id/0"},{"id":"speaking/0","deprecated":false,"title":"speaking()","anchor":"t:speaking/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"timed_out/0","deprecated":false,"title":"timed_out()","anchor":"t:timed_out/0"}],"key":"types"}],"nested_title":".SpeakingUpdate","nested_context":"Nostrum.Struct.Event"},{"id":"Nostrum.Struct.Event.ThreadListSync","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Event.ThreadListSync","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"channel_ids/0","deprecated":false,"title":"channel_ids()","anchor":"t:channel_ids/0"},{"id":"guid_id/0","deprecated":false,"title":"guid_id()","anchor":"t:guid_id/0"},{"id":"members/0","deprecated":false,"title":"members()","anchor":"t:members/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"threads/0","deprecated":false,"title":"threads()","anchor":"t:threads/0"}],"key":"types"}],"nested_title":".ThreadListSync","nested_context":"Nostrum.Struct.Event"},{"id":"Nostrum.Struct.Event.ThreadMembersUpdate","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Event.ThreadMembersUpdate","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"added_members/0","deprecated":false,"title":"added_members()","anchor":"t:added_members/0"},{"id":"guild_id/0","deprecated":false,"title":"guild_id()","anchor":"t:guild_id/0"},{"id":"id/0","deprecated":false,"title":"id()","anchor":"t:id/0"},{"id":"member_count/0","deprecated":false,"title":"member_count()","anchor":"t:member_count/0"},{"id":"removed_member_ids/0","deprecated":false,"title":"removed_member_ids()","anchor":"t:removed_member_ids/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"}],"key":"types"}],"nested_title":".ThreadMembersUpdate","nested_context":"Nostrum.Struct.Event"},{"id":"Nostrum.Struct.Event.TypingStart","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Event.TypingStart","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"channel_id/0","deprecated":false,"title":"channel_id()","anchor":"t:channel_id/0"},{"id":"guild_id/0","deprecated":false,"title":"guild_id()","anchor":"t:guild_id/0"},{"id":"member/0","deprecated":false,"title":"member()","anchor":"t:member/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"timestamp/0","deprecated":false,"title":"timestamp()","anchor":"t:timestamp/0"},{"id":"user_id/0","deprecated":false,"title":"user_id()","anchor":"t:user_id/0"}],"key":"types"}],"nested_title":".TypingStart","nested_context":"Nostrum.Struct.Event"},{"id":"Nostrum.Struct.Event.VoiceReady","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Event.VoiceReady","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"channel_id/0","deprecated":false,"title":"channel_id()","anchor":"t:channel_id/0"},{"id":"guild_id/0","deprecated":false,"title":"guild_id()","anchor":"t:guild_id/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"}],"key":"types"}],"nested_title":".VoiceReady","nested_context":"Nostrum.Struct.Event"},{"id":"Nostrum.Struct.Event.VoiceServerUpdate","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Event.VoiceServerUpdate","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"endpoint/0","deprecated":false,"title":"endpoint()","anchor":"t:endpoint/0"},{"id":"guild_id/0","deprecated":false,"title":"guild_id()","anchor":"t:guild_id/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"token/0","deprecated":false,"title":"token()","anchor":"t:token/0"}],"key":"types"}],"nested_title":".VoiceServerUpdate","nested_context":"Nostrum.Struct.Event"},{"id":"Nostrum.Struct.Event.VoiceState","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Event.VoiceState","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"channel_id/0","deprecated":false,"title":"channel_id()","anchor":"t:channel_id/0"},{"id":"deaf/0","deprecated":false,"title":"deaf()","anchor":"t:deaf/0"},{"id":"guild_id/0","deprecated":false,"title":"guild_id()","anchor":"t:guild_id/0"},{"id":"member/0","deprecated":false,"title":"member()","anchor":"t:member/0"},{"id":"mute/0","deprecated":false,"title":"mute()","anchor":"t:mute/0"},{"id":"request_to_speak_timestamp/0","deprecated":false,"title":"request_to_speak_timestamp()","anchor":"t:request_to_speak_timestamp/0"},{"id":"self_deaf/0","deprecated":false,"title":"self_deaf()","anchor":"t:self_deaf/0"},{"id":"self_mute/0","deprecated":false,"title":"self_mute()","anchor":"t:self_mute/0"},{"id":"self_stream/0","deprecated":false,"title":"self_stream()","anchor":"t:self_stream/0"},{"id":"self_video/0","deprecated":false,"title":"self_video()","anchor":"t:self_video/0"},{"id":"session_id/0","deprecated":false,"title":"session_id()","anchor":"t:session_id/0"},{"id":"suppress/0","deprecated":false,"title":"suppress()","anchor":"t:suppress/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"user_id/0","deprecated":false,"title":"user_id()","anchor":"t:user_id/0"}],"key":"types"}],"nested_title":".VoiceState","nested_context":"Nostrum.Struct.Event"},{"id":"Nostrum.Constants.ApplicationCommandOptionType","deprecated":false,"group":"Constants","title":"Nostrum.Constants.ApplicationCommandOptionType","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"attachment/0","deprecated":false,"title":"attachment()","anchor":"attachment/0"},{"id":"boolean/0","deprecated":false,"title":"boolean()","anchor":"boolean/0"},{"id":"channel/0","deprecated":false,"title":"channel()","anchor":"channel/0"},{"id":"integer/0","deprecated":false,"title":"integer()","anchor":"integer/0"},{"id":"mentionable/0","deprecated":false,"title":"mentionable()","anchor":"mentionable/0"},{"id":"number/0","deprecated":false,"title":"number()","anchor":"number/0"},{"id":"role/0","deprecated":false,"title":"role()","anchor":"role/0"},{"id":"string/0","deprecated":false,"title":"string()","anchor":"string/0"},{"id":"sub_command/0","deprecated":false,"title":"sub_command()","anchor":"sub_command/0"},{"id":"sub_command_group/0","deprecated":false,"title":"sub_command_group()","anchor":"sub_command_group/0"},{"id":"user/0","deprecated":false,"title":"user()","anchor":"user/0"}],"key":"functions"}],"nested_title":".ApplicationCommandOptionType","nested_context":"Nostrum.Constants"},{"id":"Nostrum.Constants.ApplicationCommandPermissionType","deprecated":false,"group":"Constants","title":"Nostrum.Constants.ApplicationCommandPermissionType","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"channel/0","deprecated":false,"title":"channel()","anchor":"channel/0"},{"id":"role/0","deprecated":false,"title":"role()","anchor":"role/0"},{"id":"user/0","deprecated":false,"title":"user()","anchor":"user/0"}],"key":"functions"}],"nested_title":".ApplicationCommandPermissionType","nested_context":"Nostrum.Constants"},{"id":"Nostrum.Constants.ApplicationCommandType","deprecated":false,"group":"Constants","title":"Nostrum.Constants.ApplicationCommandType","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"chat_input/0","deprecated":false,"title":"chat_input()","anchor":"chat_input/0"},{"id":"message/0","deprecated":false,"title":"message()","anchor":"message/0"},{"id":"user/0","deprecated":false,"title":"user()","anchor":"user/0"}],"key":"functions"}],"nested_title":".ApplicationCommandType","nested_context":"Nostrum.Constants"},{"id":"Nostrum.Constants.ButtonStyle","deprecated":false,"group":"Constants","title":"Nostrum.Constants.ButtonStyle","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"danger/0","deprecated":false,"title":"danger()","anchor":"danger/0"},{"id":"link/0","deprecated":false,"title":"link()","anchor":"link/0"},{"id":"primary/0","deprecated":false,"title":"primary()","anchor":"primary/0"},{"id":"secondary/0","deprecated":false,"title":"secondary()","anchor":"secondary/0"},{"id":"success/0","deprecated":false,"title":"success()","anchor":"success/0"}],"key":"functions"}],"nested_title":".ButtonStyle","nested_context":"Nostrum.Constants"},{"id":"Nostrum.Constants.ChannelType","deprecated":false,"group":"Constants","title":"Nostrum.Constants.ChannelType","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"announcement_thread/0","deprecated":false,"title":"announcement_thread()","anchor":"announcement_thread/0"},{"id":"dm/0","deprecated":false,"title":"dm()","anchor":"dm/0"},{"id":"group_db/0","deprecated":false,"title":"group_db()","anchor":"group_db/0"},{"id":"guild_announcement/0","deprecated":false,"title":"guild_announcement()","anchor":"guild_announcement/0"},{"id":"guild_category/0","deprecated":false,"title":"guild_category()","anchor":"guild_category/0"},{"id":"guild_directory/0","deprecated":false,"title":"guild_directory()","anchor":"guild_directory/0"},{"id":"guild_forum/0","deprecated":false,"title":"guild_forum()","anchor":"guild_forum/0"},{"id":"guild_text/0","deprecated":false,"title":"guild_text()","anchor":"guild_text/0"},{"id":"guild_voice/0","deprecated":false,"title":"guild_voice()","anchor":"guild_voice/0"},{"id":"private_thread/0","deprecated":false,"title":"private_thread()","anchor":"private_thread/0"},{"id":"public_thread/0","deprecated":false,"title":"public_thread()","anchor":"public_thread/0"}],"key":"functions"}],"nested_title":".ChannelType","nested_context":"Nostrum.Constants"},{"id":"Nostrum.Constants.ComponentType","deprecated":false,"group":"Constants","title":"Nostrum.Constants.ComponentType","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"action_row/0","deprecated":false,"title":"action_row()","anchor":"action_row/0"},{"id":"button/0","deprecated":false,"title":"button()","anchor":"button/0"},{"id":"channel_select/0","deprecated":false,"title":"channel_select()","anchor":"channel_select/0"},{"id":"mentionable_select/0","deprecated":false,"title":"mentionable_select()","anchor":"mentionable_select/0"},{"id":"role_select/0","deprecated":false,"title":"role_select()","anchor":"role_select/0"},{"id":"string_select/0","deprecated":false,"title":"string_select()","anchor":"string_select/0"},{"id":"text_input/0","deprecated":false,"title":"text_input()","anchor":"text_input/0"},{"id":"user_select/0","deprecated":false,"title":"user_select()","anchor":"user_select/0"}],"key":"functions"}],"nested_title":".ComponentType","nested_context":"Nostrum.Constants"},{"id":"Nostrum.Constants.InteractionCallbackType","deprecated":false,"group":"Constants","title":"Nostrum.Constants.InteractionCallbackType","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"application_command_autocomplete_result/0","deprecated":false,"title":"application_command_autocomplete_result()","anchor":"application_command_autocomplete_result/0"},{"id":"channel_message_with_source/0","deprecated":false,"title":"channel_message_with_source()","anchor":"channel_message_with_source/0"},{"id":"deferred_channel_message_with_source/0","deprecated":false,"title":"deferred_channel_message_with_source()","anchor":"deferred_channel_message_with_source/0"},{"id":"deferred_update_message/0","deprecated":false,"title":"deferred_update_message()","anchor":"deferred_update_message/0"},{"id":"modal/0","deprecated":false,"title":"modal()","anchor":"modal/0"},{"id":"pong/0","deprecated":false,"title":"pong()","anchor":"pong/0"},{"id":"update_message/0","deprecated":false,"title":"update_message()","anchor":"update_message/0"}],"key":"functions"}],"nested_title":".InteractionCallbackType","nested_context":"Nostrum.Constants"},{"id":"Nostrum.Constants.InteractionType","deprecated":false,"group":"Constants","title":"Nostrum.Constants.InteractionType","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"application_command/0","deprecated":false,"title":"application_command()","anchor":"application_command/0"},{"id":"application_command_autocomplete/0","deprecated":false,"title":"application_command_autocomplete()","anchor":"application_command_autocomplete/0"},{"id":"message_component/0","deprecated":false,"title":"message_component()","anchor":"message_component/0"},{"id":"modal_submit/0","deprecated":false,"title":"modal_submit()","anchor":"modal_submit/0"},{"id":"ping/0","deprecated":false,"title":"ping()","anchor":"ping/0"}],"key":"functions"}],"nested_title":".InteractionType","nested_context":"Nostrum.Constants"},{"id":"Nostrum.Constants.TextInputStyle","deprecated":false,"group":"Constants","title":"Nostrum.Constants.TextInputStyle","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"paragraph/0","deprecated":false,"title":"paragraph()","anchor":"paragraph/0"},{"id":"short/0","deprecated":false,"title":"short()","anchor":"short/0"}],"key":"functions"}],"nested_title":".TextInputStyle","nested_context":"Nostrum.Constants"},{"id":"Nostrum.Constants.WebhookType","deprecated":false,"group":"Constants","title":"Nostrum.Constants.WebhookType","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"application/0","deprecated":false,"title":"application()","anchor":"application/0"},{"id":"channel_follower/0","deprecated":false,"title":"channel_follower()","anchor":"channel_follower/0"},{"id":"incoming/0","deprecated":false,"title":"incoming()","anchor":"incoming/0"}],"key":"functions"}],"nested_title":".WebhookType","nested_context":"Nostrum.Constants"},{"id":"Nostrum.Snowflake","deprecated":false,"group":"Utilities","title":"Nostrum.Snowflake","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"external_snowflake/0","deprecated":false,"title":"external_snowflake()","anchor":"t:external_snowflake/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"}],"key":"types"},{"name":"Functions","nodes":[{"id":"cast/1","deprecated":false,"title":"cast(value)","anchor":"cast/1"},{"id":"cast!/1","deprecated":false,"title":"cast!(value)","anchor":"cast!/1"},{"id":"creation_time/1","deprecated":false,"title":"creation_time(snowflake)","anchor":"creation_time/1"},{"id":"dump/1","deprecated":false,"title":"dump(snowflake)","anchor":"dump/1"},{"id":"from_datetime/1","deprecated":false,"title":"from_datetime(datetime)","anchor":"from_datetime/1"},{"id":"from_datetime!/1","deprecated":false,"title":"from_datetime!(datetime)","anchor":"from_datetime!/1"},{"id":"is_snowflake/1","deprecated":false,"title":"is_snowflake(term)","anchor":"is_snowflake/1"}],"key":"functions"}]},{"id":"Nostrum.Token","deprecated":false,"group":"Utilities","title":"Nostrum.Token","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"check_token!/0","deprecated":false,"title":"check_token!()","anchor":"check_token!/0"},{"id":"check_token!/1","deprecated":false,"title":"check_token!(token)","anchor":"check_token!/1"}],"key":"functions"}]},{"id":"Nostrum.Util","deprecated":false,"group":"Utilities","title":"Nostrum.Util","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"enum_to_struct/2","deprecated":false,"title":"enum_to_struct(enum, struct)","anchor":"enum_to_struct/2"},{"id":"gateway/0","deprecated":false,"title":"gateway()","anchor":"gateway/0"},{"id":"get_all_shard_latencies/0","deprecated":false,"title":"get_all_shard_latencies()","anchor":"get_all_shard_latencies/0"},{"id":"get_shard_latency/1","deprecated":false,"title":"get_shard_latency(state)","anchor":"get_shard_latency/1"},{"id":"map_update_if_present/3","deprecated":false,"title":"map_update_if_present(map, key, fun)","anchor":"map_update_if_present/3"},{"id":"maybe_to_atom/1","deprecated":false,"title":"maybe_to_atom(token)","anchor":"maybe_to_atom/1"},{"id":"maybe_to_datetime/1","deprecated":false,"title":"maybe_to_datetime(dt)","anchor":"maybe_to_datetime/1"},{"id":"maybe_to_unixtime/1","deprecated":false,"title":"maybe_to_unixtime(stamp)","anchor":"maybe_to_unixtime/1"},{"id":"now/0","deprecated":false,"title":"now()","anchor":"now/0"},{"id":"now_iso/0","deprecated":false,"title":"now_iso()","anchor":"now_iso/0"},{"id":"num_shards/0","deprecated":false,"title":"num_shards()","anchor":"num_shards/0"},{"id":"safe_atom_map/1","deprecated":false,"title":"safe_atom_map(term)","anchor":"safe_atom_map/1"},{"id":"unused_atoms/0","deprecated":false,"title":"unused_atoms()","anchor":"unused_atoms/0"},{"id":"usec_now/0","deprecated":false,"title":"usec_now()","anchor":"usec_now/0"}],"key":"functions"}]},{"id":"Nostrum.Store.GuildShardMapping","deprecated":false,"group":"Stores","title":"Nostrum.Store.GuildShardMapping","sections":[{"id":"Purpose","anchor":"module-purpose"},{"id":"Configuration","anchor":"module-configuration"}],"nodeGroups":[{"name":"Callbacks","nodes":[{"id":"child_spec/1","deprecated":false,"title":"child_spec(term)","anchor":"c:child_spec/1"},{"id":"create/2","deprecated":false,"title":"create(id, shard_num)","anchor":"c:create/2"},{"id":"delete/1","deprecated":false,"title":"delete(id)","anchor":"c:delete/1"},{"id":"get/1","deprecated":false,"title":"get(id)","anchor":"c:get/1"}],"key":"callbacks"},{"name":"Functions","nodes":[{"id":"create/2","deprecated":false,"title":"create(guild_id, shard_num)","anchor":"create/2"},{"id":"delete/1","deprecated":false,"title":"delete(guild_id)","anchor":"delete/1"},{"id":"get/1","deprecated":false,"title":"get(guild_id)","anchor":"get/1"}],"key":"functions"}],"nested_title":".GuildShardMapping","nested_context":"Nostrum.Store"},{"id":"Nostrum.Store.Supervisor","deprecated":false,"group":"Stores","title":"Nostrum.Store.Supervisor","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"child_spec/1","deprecated":false,"title":"child_spec(init_arg)","anchor":"child_spec/1"},{"id":"init/1","deprecated":false,"title":"init(list)","anchor":"init/1"},{"id":"start_link/1","deprecated":false,"title":"start_link(list)","anchor":"start_link/1"}],"key":"functions"}],"nested_title":".Supervisor","nested_context":"Nostrum.Store"},{"id":"Nostrum.Store.UnavailableGuild","deprecated":false,"group":"Stores","title":"Nostrum.Store.UnavailableGuild","sections":[{"id":"Purpose","anchor":"module-purpose"},{"id":"Configuration","anchor":"module-configuration"},{"id":"Implementation","anchor":"module-implementation"}],"nodeGroups":[{"name":"Callbacks","nodes":[{"id":"child_spec/1","deprecated":false,"title":"child_spec(term)","anchor":"c:child_spec/1"},{"id":"create/1","deprecated":false,"title":"create(id)","anchor":"c:create/1"},{"id":"is?/1","deprecated":false,"title":"is?(id)","anchor":"c:is?/1"}],"key":"callbacks"},{"name":"Functions","nodes":[{"id":"create/1","deprecated":false,"title":"create(guild_id)","anchor":"create/1"},{"id":"is?/1","deprecated":false,"title":"is?(guild_id)","anchor":"is?/1"}],"key":"functions"}],"nested_title":".UnavailableGuild","nested_context":"Nostrum.Store"},{"id":"Nostrum.Cache.MessageCache.Mnesia","deprecated":false,"group":"Pluggable caches & stores","title":"Nostrum.Cache.MessageCache.Mnesia","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"bulk_delete/2","deprecated":false,"title":"bulk_delete(channel_id, message_ids)","anchor":"bulk_delete/2"},{"id":"channel_delete/1","deprecated":false,"title":"channel_delete(channel_id)","anchor":"channel_delete/1"},{"id":"child_spec/1","deprecated":false,"title":"child_spec(init_arg)","anchor":"child_spec/1"},{"id":"clear/0","deprecated":false,"title":"clear()","anchor":"clear/0"},{"id":"create/1","deprecated":false,"title":"create(payload)","anchor":"create/1"},{"id":"delete/2","deprecated":false,"title":"delete(channel_id, message_id)","anchor":"delete/2"},{"id":"get/1","deprecated":false,"title":"get(message_id)","anchor":"get/1"},{"id":"init/1","deprecated":false,"title":"init(init_arg)","anchor":"init/1"},{"id":"query_handle/0","deprecated":false,"title":"query_handle()","anchor":"query_handle/0"},{"id":"start_link/1","deprecated":false,"title":"start_link(init_arg)","anchor":"start_link/1"},{"id":"table/0","deprecated":false,"title":"table()","anchor":"table/0"},{"id":"teardown/0","deprecated":false,"title":"teardown()","anchor":"teardown/0"},{"id":"update/1","deprecated":false,"title":"update(payload)","anchor":"update/1"},{"id":"wrap_qlc/1","deprecated":false,"title":"wrap_qlc(fun)","anchor":"wrap_qlc/1"}],"key":"functions"}],"nested_title":".MessageCache.Mnesia","nested_context":"Nostrum.Cache"},{"id":"Nostrum.Cache.MessageCache.Noop","deprecated":false,"group":"Pluggable caches & stores","title":"Nostrum.Cache.MessageCache.Noop","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"child_spec/1","deprecated":false,"title":"child_spec(init_arg)","anchor":"child_spec/1"},{"id":"start_link/1","deprecated":false,"title":"start_link(init_arg)","anchor":"start_link/1"}],"key":"functions"}],"nested_title":".MessageCache.Noop","nested_context":"Nostrum.Cache"},{"id":"Nostrum.Cache.ChannelGuildMapping.ETS","deprecated":false,"group":"Pluggable caches & stores","title":"Nostrum.Cache.ChannelGuildMapping.ETS","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"child_spec/1","deprecated":false,"title":"child_spec(init_arg)","anchor":"child_spec/1"},{"id":"create/2","deprecated":false,"title":"create(channel_id, guild_id)","anchor":"create/2"},{"id":"delete/1","deprecated":false,"title":"delete(channel_id)","anchor":"delete/1"},{"id":"get/1","deprecated":false,"title":"get(channel_id)","anchor":"get/1"},{"id":"init/1","deprecated":false,"title":"init(init_arg)","anchor":"init/1"},{"id":"start_link/1","deprecated":false,"title":"start_link(init_arg)","anchor":"start_link/1"},{"id":"table/0","deprecated":false,"title":"table()","anchor":"table/0"}],"key":"functions"}],"nested_title":".ETS","nested_context":"Nostrum.Cache.ChannelGuildMapping"},{"id":"Nostrum.Cache.ChannelGuildMapping.Mnesia","deprecated":false,"group":"Pluggable caches & stores","title":"Nostrum.Cache.ChannelGuildMapping.Mnesia","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"child_spec/1","deprecated":false,"title":"child_spec(init_arg)","anchor":"child_spec/1"},{"id":"create/2","deprecated":false,"title":"create(channel_id, guild_id)","anchor":"create/2"},{"id":"delete/1","deprecated":false,"title":"delete(channel_id)","anchor":"delete/1"},{"id":"get/1","deprecated":false,"title":"get(channel_id)","anchor":"get/1"},{"id":"init/1","deprecated":false,"title":"init(init_arg)","anchor":"init/1"},{"id":"start_link/1","deprecated":false,"title":"start_link(init_arg)","anchor":"start_link/1"},{"id":"table/0","deprecated":false,"title":"table()","anchor":"table/0"},{"id":"teardown/0","deprecated":false,"title":"teardown()","anchor":"teardown/0"}],"key":"functions"}],"nested_title":".Mnesia","nested_context":"Nostrum.Cache.ChannelGuildMapping"},{"id":"Nostrum.Cache.ChannelGuildMapping.NoOp","deprecated":false,"group":"Pluggable caches & stores","title":"Nostrum.Cache.ChannelGuildMapping.NoOp","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"child_spec/1","deprecated":false,"title":"child_spec(init_arg)","anchor":"child_spec/1"},{"id":"start_link/1","deprecated":false,"title":"start_link(init_arg)","anchor":"start_link/1"}],"key":"functions"}],"nested_title":".NoOp","nested_context":"Nostrum.Cache.ChannelGuildMapping"},{"id":"Nostrum.Cache.GuildCache.ETS","deprecated":false,"group":"Pluggable caches & stores","title":"Nostrum.Cache.GuildCache.ETS","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"channel_create/2","deprecated":false,"title":"channel_create(guild_id, channel)","anchor":"channel_create/2"},{"id":"channel_delete/2","deprecated":false,"title":"channel_delete(guild_id, channel_id)","anchor":"channel_delete/2"},{"id":"channel_update/2","deprecated":false,"title":"channel_update(guild_id, channel)","anchor":"channel_update/2"},{"id":"child_spec/1","deprecated":false,"title":"child_spec(init_arg)","anchor":"child_spec/1"},{"id":"create/1","deprecated":false,"title":"create(payload)","anchor":"create/1"},{"id":"delete/1","deprecated":false,"title":"delete(guild_id)","anchor":"delete/1"},{"id":"emoji_update/2","deprecated":false,"title":"emoji_update(guild_id, emojis)","anchor":"emoji_update/2"},{"id":"init/1","deprecated":false,"title":"init(init_arg)","anchor":"init/1"},{"id":"member_count_down/1","deprecated":false,"title":"member_count_down(guild_id)","anchor":"member_count_down/1"},{"id":"member_count_up/1","deprecated":false,"title":"member_count_up(guild_id)","anchor":"member_count_up/1"},{"id":"query_handle/0","deprecated":false,"title":"query_handle()","anchor":"query_handle/0"},{"id":"role_create/2","deprecated":false,"title":"role_create(guild_id, role)","anchor":"role_create/2"},{"id":"role_delete/2","deprecated":false,"title":"role_delete(guild_id, role_id)","anchor":"role_delete/2"},{"id":"role_update/2","deprecated":false,"title":"role_update(guild_id, role)","anchor":"role_update/2"},{"id":"start_link/1","deprecated":false,"title":"start_link(init_arg)","anchor":"start_link/1"},{"id":"stickers_update/2","deprecated":false,"title":"stickers_update(guild_id, stickers)","anchor":"stickers_update/2"},{"id":"tabname/0","deprecated":false,"title":"tabname()","anchor":"tabname/0"},{"id":"update/1","deprecated":false,"title":"update(payload)","anchor":"update/1"},{"id":"voice_state_update/2","deprecated":false,"title":"voice_state_update(guild_id, payload)","anchor":"voice_state_update/2"}],"key":"functions"}],"nested_title":".ETS","nested_context":"Nostrum.Cache.GuildCache"},{"id":"Nostrum.Cache.GuildCache.Mnesia","deprecated":false,"group":"Pluggable caches & stores","title":"Nostrum.Cache.GuildCache.Mnesia","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"channel_create/2","deprecated":false,"title":"channel_create(guild_id, channel)","anchor":"channel_create/2"},{"id":"channel_delete/2","deprecated":false,"title":"channel_delete(guild_id, channel_id)","anchor":"channel_delete/2"},{"id":"channel_update/2","deprecated":false,"title":"channel_update(guild_id, channel)","anchor":"channel_update/2"},{"id":"child_spec/1","deprecated":false,"title":"child_spec(init_arg)","anchor":"child_spec/1"},{"id":"clear/0","deprecated":false,"title":"clear()","anchor":"clear/0"},{"id":"create/1","deprecated":false,"title":"create(payload)","anchor":"create/1"},{"id":"delete/1","deprecated":false,"title":"delete(guild_id)","anchor":"delete/1"},{"id":"emoji_update/2","deprecated":false,"title":"emoji_update(guild_id, payload)","anchor":"emoji_update/2"},{"id":"init/1","deprecated":false,"title":"init(init_arg)","anchor":"init/1"},{"id":"member_count_down/1","deprecated":false,"title":"member_count_down(guild_id)","anchor":"member_count_down/1"},{"id":"member_count_up/1","deprecated":false,"title":"member_count_up(guild_id)","anchor":"member_count_up/1"},{"id":"query_handle/0","deprecated":false,"title":"query_handle()","anchor":"query_handle/0"},{"id":"role_create/2","deprecated":false,"title":"role_create(guild_id, payload)","anchor":"role_create/2"},{"id":"role_delete/2","deprecated":false,"title":"role_delete(guild_id, role_id)","anchor":"role_delete/2"},{"id":"role_update/2","deprecated":false,"title":"role_update(guild_id, role)","anchor":"role_update/2"},{"id":"start_link/1","deprecated":false,"title":"start_link(init_arg)","anchor":"start_link/1"},{"id":"stickers_update/2","deprecated":false,"title":"stickers_update(guild_id, stickers)","anchor":"stickers_update/2"},{"id":"table/0","deprecated":false,"title":"table()","anchor":"table/0"},{"id":"teardown/0","deprecated":false,"title":"teardown()","anchor":"teardown/0"},{"id":"update/1","deprecated":false,"title":"update(payload)","anchor":"update/1"},{"id":"voice_state_update/2","deprecated":false,"title":"voice_state_update(guild_id, payload)","anchor":"voice_state_update/2"},{"id":"wrap_qlc/1","deprecated":false,"title":"wrap_qlc(fun)","anchor":"wrap_qlc/1"}],"key":"functions"}],"nested_title":".Mnesia","nested_context":"Nostrum.Cache.GuildCache"},{"id":"Nostrum.Cache.GuildCache.NoOp","deprecated":false,"group":"Pluggable caches & stores","title":"Nostrum.Cache.GuildCache.NoOp","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"child_spec/1","deprecated":false,"title":"child_spec(init_arg)","anchor":"child_spec/1"},{"id":"init/1","deprecated":false,"title":"init(init_arg)","anchor":"init/1"},{"id":"start_link/1","deprecated":false,"title":"start_link(init_arg)","anchor":"start_link/1"}],"key":"functions"}],"nested_title":".NoOp","nested_context":"Nostrum.Cache.GuildCache"},{"id":"Nostrum.Cache.MemberCache.ETS","deprecated":false,"group":"Pluggable caches & stores","title":"Nostrum.Cache.MemberCache.ETS","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"bulk_create/2","deprecated":false,"title":"bulk_create(guild_id, members)","anchor":"bulk_create/2"},{"id":"child_spec/1","deprecated":false,"title":"child_spec(init_arg)","anchor":"child_spec/1"},{"id":"clear/0","deprecated":false,"title":"clear()","anchor":"clear/0"},{"id":"create/2","deprecated":false,"title":"create(guild_id, payload)","anchor":"create/2"},{"id":"delete/2","deprecated":false,"title":"delete(guild_id, user_id)","anchor":"delete/2"},{"id":"init/1","deprecated":false,"title":"init(init_arg)","anchor":"init/1"},{"id":"query_handle/0","deprecated":false,"title":"query_handle()","anchor":"query_handle/0"},{"id":"start_link/1","deprecated":false,"title":"start_link(init_arg)","anchor":"start_link/1"},{"id":"table/0","deprecated":false,"title":"table()","anchor":"table/0"},{"id":"update/2","deprecated":false,"title":"update(guild_id, payload)","anchor":"update/2"},{"id":"wrap_qlc/1","deprecated":false,"title":"wrap_qlc(fun)","anchor":"wrap_qlc/1"}],"key":"functions"}],"nested_title":".ETS","nested_context":"Nostrum.Cache.MemberCache"},{"id":"Nostrum.Cache.MemberCache.Mnesia","deprecated":false,"group":"Pluggable caches & stores","title":"Nostrum.Cache.MemberCache.Mnesia","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"bulk_create/2","deprecated":false,"title":"bulk_create(guild_id, members)","anchor":"bulk_create/2"},{"id":"child_spec/1","deprecated":false,"title":"child_spec(init_arg)","anchor":"child_spec/1"},{"id":"clear/0","deprecated":false,"title":"clear()","anchor":"clear/0"},{"id":"create/2","deprecated":false,"title":"create(guild_id, payload)","anchor":"create/2"},{"id":"delete/2","deprecated":false,"title":"delete(guild_id, user_id)","anchor":"delete/2"},{"id":"init/1","deprecated":false,"title":"init(init_arg)","anchor":"init/1"},{"id":"query_handle/0","deprecated":false,"title":"query_handle()","anchor":"query_handle/0"},{"id":"start_link/1","deprecated":false,"title":"start_link(init_arg)","anchor":"start_link/1"},{"id":"table/0","deprecated":false,"title":"table()","anchor":"table/0"},{"id":"teardown/0","deprecated":false,"title":"teardown()","anchor":"teardown/0"},{"id":"update/2","deprecated":false,"title":"update(guild_id, payload)","anchor":"update/2"},{"id":"wrap_qlc/1","deprecated":false,"title":"wrap_qlc(fun)","anchor":"wrap_qlc/1"}],"key":"functions"}],"nested_title":".Mnesia","nested_context":"Nostrum.Cache.MemberCache"},{"id":"Nostrum.Cache.MemberCache.NoOp","deprecated":false,"group":"Pluggable caches & stores","title":"Nostrum.Cache.MemberCache.NoOp","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"child_spec/1","deprecated":false,"title":"child_spec(init_arg)","anchor":"child_spec/1"},{"id":"start_link/1","deprecated":false,"title":"start_link(init_arg)","anchor":"start_link/1"}],"key":"functions"}],"nested_title":".NoOp","nested_context":"Nostrum.Cache.MemberCache"},{"id":"Nostrum.Cache.PresenceCache.ETS","deprecated":false,"group":"Pluggable caches & stores","title":"Nostrum.Cache.PresenceCache.ETS","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"bulk_create/2","deprecated":false,"title":"bulk_create(guild_id, presences)","anchor":"bulk_create/2"},{"id":"child_spec/1","deprecated":false,"title":"child_spec(init_arg)","anchor":"child_spec/1"},{"id":"create/1","deprecated":false,"title":"create(presence)","anchor":"create/1"},{"id":"init/1","deprecated":false,"title":"init(init_arg)","anchor":"init/1"},{"id":"query_handle/0","deprecated":false,"title":"query_handle()","anchor":"query_handle/0"},{"id":"start_link/1","deprecated":false,"title":"start_link(init_arg)","anchor":"start_link/1"},{"id":"table/0","deprecated":false,"title":"table()","anchor":"table/0"},{"id":"update/1","deprecated":false,"title":"update(new)","anchor":"update/1"}],"key":"functions"}],"nested_title":".ETS","nested_context":"Nostrum.Cache.PresenceCache"},{"id":"Nostrum.Cache.PresenceCache.Mnesia","deprecated":false,"group":"Pluggable caches & stores","title":"Nostrum.Cache.PresenceCache.Mnesia","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"bulk_create/2","deprecated":false,"title":"bulk_create(guild_id, presences)","anchor":"bulk_create/2"},{"id":"child_spec/1","deprecated":false,"title":"child_spec(init_arg)","anchor":"child_spec/1"},{"id":"clear/0","deprecated":false,"title":"clear()","anchor":"clear/0"},{"id":"create/1","deprecated":false,"title":"create(presence)","anchor":"create/1"},{"id":"init/1","deprecated":false,"title":"init(init_arg)","anchor":"init/1"},{"id":"query_handle/0","deprecated":false,"title":"query_handle()","anchor":"query_handle/0"},{"id":"start_link/1","deprecated":false,"title":"start_link(init_arg)","anchor":"start_link/1"},{"id":"table/0","deprecated":false,"title":"table()","anchor":"table/0"},{"id":"teardown/0","deprecated":false,"title":"teardown()","anchor":"teardown/0"},{"id":"update/1","deprecated":false,"title":"update(new)","anchor":"update/1"},{"id":"wrap_qlc/1","deprecated":false,"title":"wrap_qlc(fun)","anchor":"wrap_qlc/1"}],"key":"functions"}],"nested_title":".Mnesia","nested_context":"Nostrum.Cache.PresenceCache"},{"id":"Nostrum.Cache.PresenceCache.NoOp","deprecated":false,"group":"Pluggable caches & stores","title":"Nostrum.Cache.PresenceCache.NoOp","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"child_spec/1","deprecated":false,"title":"child_spec(init_arg)","anchor":"child_spec/1"},{"id":"init/1","deprecated":false,"title":"init(init_arg)","anchor":"init/1"},{"id":"start_link/1","deprecated":false,"title":"start_link(init_arg)","anchor":"start_link/1"}],"key":"functions"}],"nested_title":".NoOp","nested_context":"Nostrum.Cache.PresenceCache"},{"id":"Nostrum.Cache.UserCache.ETS","deprecated":false,"group":"Pluggable caches & stores","title":"Nostrum.Cache.UserCache.ETS","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"bulk_create/1","deprecated":false,"title":"bulk_create(users)","anchor":"bulk_create/1"},{"id":"child_spec/1","deprecated":false,"title":"child_spec(init_arg)","anchor":"child_spec/1"},{"id":"create/1","deprecated":false,"title":"create(payload)","anchor":"create/1"},{"id":"init/1","deprecated":false,"title":"init(init_arg)","anchor":"init/1"},{"id":"query_handle/0","deprecated":false,"title":"query_handle()","anchor":"query_handle/0"},{"id":"start_link/1","deprecated":false,"title":"start_link(init_arg)","anchor":"start_link/1"},{"id":"table/0","deprecated":false,"title":"table()","anchor":"table/0"},{"id":"update/1","deprecated":false,"title":"update(info)","anchor":"update/1"}],"key":"functions"}],"nested_title":".ETS","nested_context":"Nostrum.Cache.UserCache"},{"id":"Nostrum.Cache.UserCache.Mnesia","deprecated":false,"group":"Pluggable caches & stores","title":"Nostrum.Cache.UserCache.Mnesia","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"bulk_create/1","deprecated":false,"title":"bulk_create(users)","anchor":"bulk_create/1"},{"id":"child_spec/1","deprecated":false,"title":"child_spec(init_arg)","anchor":"child_spec/1"},{"id":"clear/0","deprecated":false,"title":"clear()","anchor":"clear/0"},{"id":"create/1","deprecated":false,"title":"create(payload)","anchor":"create/1"},{"id":"delete/1","deprecated":false,"title":"delete(user_id)","anchor":"delete/1"},{"id":"init/1","deprecated":false,"title":"init(init_arg)","anchor":"init/1"},{"id":"query_handle/0","deprecated":false,"title":"query_handle()","anchor":"query_handle/0"},{"id":"start_link/1","deprecated":false,"title":"start_link(init_arg)","anchor":"start_link/1"},{"id":"table/0","deprecated":false,"title":"table()","anchor":"table/0"},{"id":"teardown/0","deprecated":false,"title":"teardown()","anchor":"teardown/0"},{"id":"update/1","deprecated":false,"title":"update(payload)","anchor":"update/1"},{"id":"wrap_qlc/1","deprecated":false,"title":"wrap_qlc(fun)","anchor":"wrap_qlc/1"}],"key":"functions"}],"nested_title":".Mnesia","nested_context":"Nostrum.Cache.UserCache"},{"id":"Nostrum.Cache.UserCache.NoOp","deprecated":false,"group":"Pluggable caches & stores","title":"Nostrum.Cache.UserCache.NoOp","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"child_spec/1","deprecated":false,"title":"child_spec(init_arg)","anchor":"child_spec/1"},{"id":"start_link/1","deprecated":false,"title":"start_link(init_arg)","anchor":"start_link/1"}],"key":"functions"}],"nested_title":".NoOp","nested_context":"Nostrum.Cache.UserCache"},{"id":"Nostrum.Store.GuildShardMapping.ETS","deprecated":false,"group":"Pluggable caches & stores","title":"Nostrum.Store.GuildShardMapping.ETS","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"child_spec/1","deprecated":false,"title":"child_spec(init_arg)","anchor":"child_spec/1"},{"id":"create/2","deprecated":false,"title":"create(guild_id, shard_num)","anchor":"create/2"},{"id":"delete/1","deprecated":false,"title":"delete(guild_id)","anchor":"delete/1"},{"id":"get/1","deprecated":false,"title":"get(guild_id)","anchor":"get/1"},{"id":"init/1","deprecated":false,"title":"init(init_arg)","anchor":"init/1"},{"id":"start_link/1","deprecated":false,"title":"start_link(init_arg)","anchor":"start_link/1"},{"id":"table/0","deprecated":false,"title":"table()","anchor":"table/0"}],"key":"functions"}],"nested_title":".ETS","nested_context":"Nostrum.Store.GuildShardMapping"},{"id":"Nostrum.Store.GuildShardMapping.Mnesia","deprecated":false,"group":"Pluggable caches & stores","title":"Nostrum.Store.GuildShardMapping.Mnesia","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"child_spec/1","deprecated":false,"title":"child_spec(init_arg)","anchor":"child_spec/1"},{"id":"create/2","deprecated":false,"title":"create(guild_id, shard_num)","anchor":"create/2"},{"id":"delete/1","deprecated":false,"title":"delete(guild_id)","anchor":"delete/1"},{"id":"get/1","deprecated":false,"title":"get(guild_id)","anchor":"get/1"},{"id":"init/1","deprecated":false,"title":"init(init_arg)","anchor":"init/1"},{"id":"start_link/1","deprecated":false,"title":"start_link(init_arg)","anchor":"start_link/1"},{"id":"table/0","deprecated":false,"title":"table()","anchor":"table/0"},{"id":"teardown/0","deprecated":false,"title":"teardown()","anchor":"teardown/0"}],"key":"functions"}],"nested_title":".Mnesia","nested_context":"Nostrum.Store.GuildShardMapping"},{"id":"Nostrum.Store.UnavailableGuild.ETS","deprecated":false,"group":"Pluggable caches & stores","title":"Nostrum.Store.UnavailableGuild.ETS","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"child_spec/1","deprecated":false,"title":"child_spec(init_arg)","anchor":"child_spec/1"},{"id":"create/1","deprecated":false,"title":"create(guild_id)","anchor":"create/1"},{"id":"init/1","deprecated":false,"title":"init(init_arg)","anchor":"init/1"},{"id":"is?/1","deprecated":false,"title":"is?(guild_id)","anchor":"is?/1"},{"id":"start_link/1","deprecated":false,"title":"start_link(init_arg)","anchor":"start_link/1"},{"id":"table/0","deprecated":false,"title":"table()","anchor":"table/0"}],"key":"functions"}],"nested_title":".ETS","nested_context":"Nostrum.Store.UnavailableGuild"},{"id":"Nostrum.Store.UnavailableGuild.Mnesia","deprecated":false,"group":"Pluggable caches & stores","title":"Nostrum.Store.UnavailableGuild.Mnesia","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"child_spec/1","deprecated":false,"title":"child_spec(init_arg)","anchor":"child_spec/1"},{"id":"create/1","deprecated":false,"title":"create(guild_id)","anchor":"create/1"},{"id":"init/1","deprecated":false,"title":"init(init_arg)","anchor":"init/1"},{"id":"is?/1","deprecated":false,"title":"is?(guild_id)","anchor":"is?/1"},{"id":"start_link/1","deprecated":false,"title":"start_link(init_arg)","anchor":"start_link/1"},{"id":"table/0","deprecated":false,"title":"table()","anchor":"table/0"},{"id":"teardown/0","deprecated":false,"title":"teardown()","anchor":"teardown/0"}],"key":"functions"}],"nested_title":".Mnesia","nested_context":"Nostrum.Store.UnavailableGuild"},{"id":"Nostrum.Api.Ratelimiter","deprecated":false,"group":"Internal modules","title":"Nostrum.Api.Ratelimiter","sections":[{"id":"Purpose","anchor":"module-purpose"},{"id":"Asynchronous requests","anchor":"module-asynchronous-requests"},{"id":"Multi-node","anchor":"module-multi-node"},{"id":"Inner workings","anchor":"module-inner-workings"}],"nodeGroups":[{"name":"Types","nodes":[{"id":"bucket/0","deprecated":false,"title":"bucket()","anchor":"t:bucket/0"},{"id":"queued_request/0","deprecated":false,"title":"queued_request()","anchor":"t:queued_request/0"},{"id":"remaining/0","deprecated":false,"title":"remaining()","anchor":"t:remaining/0"},{"id":"request/0","deprecated":false,"title":"request()","anchor":"t:request/0"},{"id":"state/0","deprecated":false,"title":"state()","anchor":"t:state/0"}],"key":"types"},{"name":"Functions","nodes":[{"id":"callback_mode/0","deprecated":false,"title":"callback_mode()","anchor":"callback_mode/0"},{"id":"child_spec/1","deprecated":false,"title":"child_spec(opts)","anchor":"child_spec/1"},{"id":"code_change/4","deprecated":false,"title":"code_change(version, state, data, extra)","anchor":"code_change/4"},{"id":"connected/3","deprecated":false,"title":"connected(arg1, request, data)","anchor":"connected/3"},{"id":"connecting/3","deprecated":false,"title":"connecting(arg1, arg2, data)","anchor":"connecting/3"},{"id":"disconnected/3","deprecated":false,"title":"disconnected(arg, arg2, data)","anchor":"disconnected/3"},{"id":"get_endpoint/2","deprecated":false,"title":"get_endpoint(route, method)","anchor":"get_endpoint/2"},{"id":"global_limit/3","deprecated":false,"title":"global_limit(arg1, next, data)","anchor":"global_limit/3"},{"id":"init/1","deprecated":false,"title":"init(token)","anchor":"init/1"},{"id":"queue/1","deprecated":false,"title":"queue(request)","anchor":"queue/1"},{"id":"start_link/1","deprecated":false,"title":"start_link(arg)","anchor":"start_link/1"}],"key":"functions"}]},{"id":"Nostrum.Shard.Session","deprecated":false,"group":"Internal modules","title":"Nostrum.Shard.Session","sections":[{"id":"Purpose","anchor":"module-purpose"},{"id":"Inner workings","anchor":"module-inner-workings"}],"nodeGroups":[{"name":"Functions","nodes":[{"id":"callback_mode/0","deprecated":false,"title":"callback_mode()","anchor":"callback_mode/0"},{"id":"child_spec/1","deprecated":false,"title":"child_spec(opts)","anchor":"child_spec/1"},{"id":"connected/3","deprecated":false,"title":"connected(arg1, request, data)","anchor":"connected/3"},{"id":"connecting_http/3","deprecated":false,"title":"connecting_http(arg1, from, data)","anchor":"connecting_http/3"},{"id":"connecting_ws/3","deprecated":false,"title":"connecting_ws(arg1, arg2, data)","anchor":"connecting_ws/3"},{"id":"disconnect/1","deprecated":false,"title":"disconnect(pid)","anchor":"disconnect/1"},{"id":"disconnect/2","deprecated":false,"title":"disconnect(pid, timeout)","anchor":"disconnect/2"},{"id":"disconnected/3","deprecated":false,"title":"disconnected(arg1, arg2, data)","anchor":"disconnected/3"},{"id":"format_status/1","deprecated":false,"title":"format_status(state)","anchor":"format_status/1"},{"id":"get_ws_state/1","deprecated":false,"title":"get_ws_state(pid)","anchor":"get_ws_state/1"},{"id":"init/1","deprecated":false,"title":"init(arg1)","anchor":"init/1"},{"id":"request_guild_members/3","deprecated":false,"title":"request_guild_members(pid, guild_id, limit \\\\ 0)","anchor":"request_guild_members/3"},{"id":"start_link/2","deprecated":false,"title":"start_link(opts, statem_opts)","anchor":"start_link/2"},{"id":"update_status/5","deprecated":false,"title":"update_status(pid, status, game, stream, type)","anchor":"update_status/5"},{"id":"update_voice_state/5","deprecated":false,"title":"update_voice_state(pid, guild_id, channel_id, self_mute, self_deaf)","anchor":"update_voice_state/5"}],"key":"functions"}]},{"id":"Nostrum.Shard.Session.Compression","deprecated":false,"group":"Internal modules","title":"Nostrum.Shard.Session.Compression","sections":[],"nodeGroups":[{"name":"Callbacks","nodes":[{"id":"create_context/0","deprecated":false,"title":"create_context()","anchor":"c:create_context/0"},{"id":"inflate/2","deprecated":false,"title":"inflate(reference, iodata)","anchor":"c:inflate/2"},{"id":"reset_context/1","deprecated":false,"title":"reset_context(reference)","anchor":"c:reset_context/1"}],"key":"callbacks"}]},{"id":"Nostrum.Shard.Session.Compression.Zlib","deprecated":false,"group":"Internal modules","title":"Nostrum.Shard.Session.Compression.Zlib","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"create_context/0","deprecated":false,"title":"create_context()","anchor":"create_context/0"},{"id":"inflate/2","deprecated":false,"title":"inflate(ctx, frame)","anchor":"inflate/2"},{"id":"reset_context/1","deprecated":false,"title":"reset_context(ctx)","anchor":"reset_context/1"}],"key":"functions"}]},{"id":"Nostrum.Shard.Session.Compression.Zstd","deprecated":false,"group":"Internal modules","title":"Nostrum.Shard.Session.Compression.Zstd","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"check_available!/0","deprecated":false,"title":"check_available!()","anchor":"check_available!/0"},{"id":"create_context/0","deprecated":false,"title":"create_context()","anchor":"create_context/0"},{"id":"inflate/2","deprecated":false,"title":"inflate(ctx, frame)","anchor":"inflate/2"},{"id":"reset_context/1","deprecated":false,"title":"reset_context(ctx)","anchor":"reset_context/1"}],"key":"functions"}]},{"id":"Nostrum.Shard.Supervisor","deprecated":false,"group":"Internal modules","title":"Nostrum.Shard.Supervisor","sections":[{"id":"Implementation","anchor":"module-implementation"}],"nodeGroups":[{"name":"Types","nodes":[{"id":"resume_information/0","deprecated":false,"title":"resume_information()","anchor":"t:resume_information/0"},{"id":"shard_num/0","deprecated":false,"title":"shard_num()","anchor":"t:shard_num/0"},{"id":"total_shards/0","deprecated":false,"title":"total_shards()","anchor":"t:total_shards/0"}],"key":"types"},{"name":"Functions","nodes":[{"id":"child_spec/1","deprecated":false,"title":"child_spec(arg)","anchor":"child_spec/1"},{"id":"connect/2","deprecated":false,"title":"connect(shard_num, total_shards)","anchor":"connect/2"},{"id":"disconnect/1","deprecated":false,"title":"disconnect(shard_num)","anchor":"disconnect/1"},{"id":"reconnect/1","deprecated":false,"title":"reconnect(opts)","anchor":"reconnect/1"},{"id":"start_link/1","deprecated":false,"title":"start_link(args)","anchor":"start_link/1"},{"id":"update_status/4","deprecated":false,"title":"update_status(status, game, stream, type)","anchor":"update_status/4"},{"id":"update_voice_state/4","deprecated":false,"title":"update_voice_state(guild_id, channel_id, self_mute, self_deaf)","anchor":"update_voice_state/4"}],"key":"functions"}]},{"id":"Nostrum.StateMachineTranslator","deprecated":false,"group":"Internal modules","title":"Nostrum.StateMachineTranslator","sections":[{"id":"Reasoning","anchor":"module-reasoning"}],"nodeGroups":[{"name":"Functions","nodes":[{"id":"translate/4","deprecated":false,"title":"translate(min_level, arg2, arg3, arg4)","anchor":"translate/4"}],"key":"functions"}]},{"id":"Nostrum.Error.ApiError","deprecated":false,"group":"Exceptions","title":"Nostrum.Error.ApiError","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"detailed_error/0","deprecated":false,"title":"detailed_error()","anchor":"t:detailed_error/0"},{"id":"discord_status_code/0","deprecated":false,"title":"discord_status_code()","anchor":"t:discord_status_code/0"},{"id":"error/0","deprecated":false,"title":"error()","anchor":"t:error/0"},{"id":"error_list_map/0","deprecated":false,"title":"error_list_map()","anchor":"t:error_list_map/0"},{"id":"errors/0","deprecated":false,"title":"errors()","anchor":"t:errors/0"},{"id":"response/0","deprecated":false,"title":"response()","anchor":"t:response/0"},{"id":"status_code/0","deprecated":false,"title":"status_code()","anchor":"t:status_code/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"}],"key":"types"}]},{"id":"Nostrum.Error.CacheError","deprecated":false,"group":"Exceptions","title":"Nostrum.Error.CacheError","sections":[]},{"id":"Nostrum.Error.VoiceError","deprecated":false,"group":"Exceptions","title":"Nostrum.Error.VoiceError","sections":[]}],"extras":[{"id":"api-reference","group":"","title":"API Reference","headers":[{"id":"Modules","anchor":"modules"},{"id":"Mix Tasks","anchor":"mix-tasks"}]},{"id":"intro","group":"","title":"Introduction","headers":[{"id":"Setup","anchor":"setup"},{"id":"Configuration options","anchor":"configuration-options"},{"id":"Logging","anchor":"logging"},{"id":"Example bots","anchor":"example-bots"}]},{"id":"api-4","group":"","title":"API","headers":[{"id":"Banged (!) API methods","anchor":"banged-api-methods"},{"id":"Abstractions","anchor":"abstractions"},{"id":"Ratelimiting","anchor":"ratelimiting"},{"id":"REST-only","anchor":"rest-only"}]},{"id":"application_commands","group":"","title":"Application commands","headers":[{"id":"Permissions required","anchor":"permissions-required"},{"id":"Getting started","anchor":"getting-started"},{"id":"Receiving interactions","anchor":"receiving-interactions"},{"id":"Responding to interactions","anchor":"responding-to-interactions"}]},{"id":"gateway_intents","group":"","title":"Gateway Intents","headers":[]},{"id":"event_handling","group":"Functionality","title":"Event handling","headers":[]},{"id":"state","group":"Functionality","title":"State","headers":[{"id":"Caches","anchor":"caches"},{"id":"Query list comprehensions","anchor":"query-list-comprehensions"},{"id":"Internal state","anchor":"internal-state"}]},{"id":"voice-3","group":"Functionality","title":"Voice","headers":[{"id":"Voice channels","anchor":"voice-channels"},{"id":"FFmpeg","anchor":"ffmpeg"},{"id":"youtube-dl","anchor":"youtube-dl"},{"id":"streamlink","anchor":"streamlink"},{"id":"Audio Timeout","anchor":"audio-timeout"},{"id":"Audio Frames Per Burst","anchor":"audio-frames-per-burst"},{"id":"Voice Events","anchor":"voice-events"},{"id":"Encryption Modes","anchor":"encryption-modes"}]},{"id":"gateway_compression","group":"Advanced","title":"Gateway Compression","headers":[{"id":"Using :zstd compression","anchor":"using-zstd-compression"}]},{"id":"hot_code_upgrade","group":"Advanced","title":"Hot code upgrade","headers":[]},{"id":"manual_sharding","group":"Advanced","title":"Manual Sharding","headers":[{"id":"Reconnection example","anchor":"reconnection-example"}]},{"id":"multi_node","group":"Advanced","title":"Multi-node","headers":[{"id":"High availability","anchor":"high-availability"}]},{"id":"pluggable_caching","group":"Advanced","title":"Pluggable caching","headers":[{"id":"Implementations","anchor":"implementations"},{"id":"Cache invalidation","anchor":"cache-invalidation"},{"id":"Cache performance","anchor":"cache-performance"}]},{"id":"api-1","group":"Cheat Sheets","title":"API Usage","headers":[{"id":"Messages","anchor":"messages"},{"id":"Miscellaneous","anchor":"miscellaneous"}]},{"id":"qlc","group":"Cheat Sheets","title":"QLC Usage","headers":[{"id":"Examples","anchor":"examples"},{"id":"Debugging QLC","anchor":"debugging-qlc"}]},{"id":"voice-2","group":"Cheat Sheets","title":"Voice Usage","headers":[{"id":"Playing Audio","anchor":"playing-audio"},{"id":"Audio FFmpeg options","anchor":"audio-ffmpeg-options"}]}],"tasks":[{"id":"Mix.Tasks.Gh.Docs","deprecated":false,"group":"","title":"mix gh.docs","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"run/1","deprecated":false,"title":"run(_)","anchor":"run/1"}],"key":"functions"}]}]} \ No newline at end of file diff --git a/dist/sidebar_items-9312FB79.js b/dist/sidebar_items-9312FB79.js deleted file mode 100644 index 9fb5b5649..000000000 --- a/dist/sidebar_items-9312FB79.js +++ /dev/null @@ -1 +0,0 @@ -sidebarNodes={"modules":[{"id":"Nostrum.Api","deprecated":false,"group":"Api","title":"Nostrum.Api","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"allowed_mention/0","deprecated":false,"title":"allowed_mention()","anchor":"t:allowed_mention/0"},{"id":"allowed_mentions/0","deprecated":false,"title":"allowed_mentions()","anchor":"t:allowed_mentions/0"},{"id":"emoji/0","deprecated":false,"title":"emoji()","anchor":"t:emoji/0"},{"id":"error/0","deprecated":false,"title":"error()","anchor":"t:error/0"},{"id":"limit/0","deprecated":false,"title":"limit()","anchor":"t:limit/0"},{"id":"locator/0","deprecated":false,"title":"locator()","anchor":"t:locator/0"},{"id":"matrix/0","deprecated":false,"title":"matrix()","anchor":"t:matrix/0"},{"id":"options/0","deprecated":false,"title":"options()","anchor":"t:options/0"},{"id":"status/0","deprecated":false,"title":"status()","anchor":"t:status/0"},{"id":"thread_with_message_params/0","deprecated":false,"title":"thread_with_message_params()","anchor":"t:thread_with_message_params/0"},{"id":"thread_without_message_params/0","deprecated":false,"title":"thread_without_message_params()","anchor":"t:thread_without_message_params/0"}],"key":"types"},{"name":"Functions","nodes":[{"id":"add_guild_member/3","deprecated":false,"title":"add_guild_member(guild_id, user_id, options)","anchor":"add_guild_member/3"},{"id":"add_guild_member!/3","deprecated":false,"title":"add_guild_member!(guild_id, user_id, options)","anchor":"add_guild_member!/3"},{"id":"add_guild_member_role/4","deprecated":false,"title":"add_guild_member_role(guild_id, user_id, role_id, reason \\\\ nil)","anchor":"add_guild_member_role/4"},{"id":"add_pinned_channel_message/2","deprecated":false,"title":"add_pinned_channel_message(channel_id, message_id)","anchor":"add_pinned_channel_message/2"},{"id":"add_pinned_channel_message!/2","deprecated":false,"title":"add_pinned_channel_message!(channel_id, message_id)","anchor":"add_pinned_channel_message!/2"},{"id":"add_thread_member/2","deprecated":false,"title":"add_thread_member(thread_id, user_id)","anchor":"add_thread_member/2"},{"id":"batch_edit_application_command_permissions/3","deprecated":false,"title":"batch_edit_application_command_permissions(application_id \\\\ Me.get().id, guild_id, permissions)","anchor":"batch_edit_application_command_permissions/3"},{"id":"begin_guild_prune/3","deprecated":false,"title":"begin_guild_prune(guild_id, days, reason \\\\ nil)","anchor":"begin_guild_prune/3"},{"id":"begin_guild_prune!/3","deprecated":false,"title":"begin_guild_prune!(guild_id, days, reason)","anchor":"begin_guild_prune!/3"},{"id":"bulk_delete_messages/3","deprecated":false,"title":"bulk_delete_messages(channel_id, messages, filter \\\\ true)","anchor":"bulk_delete_messages/3"},{"id":"bulk_delete_messages!/3","deprecated":false,"title":"bulk_delete_messages!(channel_id, messages, filter \\\\ true)","anchor":"bulk_delete_messages!/3"},{"id":"bulk_overwrite_global_application_commands/2","deprecated":false,"title":"bulk_overwrite_global_application_commands(application_id \\\\ Me.get().id, commands)","anchor":"bulk_overwrite_global_application_commands/2"},{"id":"bulk_overwrite_guild_application_commands/3","deprecated":false,"title":"bulk_overwrite_guild_application_commands(application_id \\\\ Me.get().id, guild_id, commands)","anchor":"bulk_overwrite_guild_application_commands/3"},{"id":"create_channel_invite/3","deprecated":false,"title":"create_channel_invite(channel_id, options \\\\ [], reason \\\\ nil)","anchor":"create_channel_invite/3"},{"id":"create_channel_invite!/3","deprecated":false,"title":"create_channel_invite!(channel_id, options \\\\ [], reason \\\\ nil)","anchor":"create_channel_invite!/3"},{"id":"create_dm/1","deprecated":false,"title":"create_dm(user_id)","anchor":"create_dm/1"},{"id":"create_dm!/1","deprecated":false,"title":"create_dm!(user_id)","anchor":"create_dm!/1"},{"id":"create_followup_message/3","deprecated":false,"title":"create_followup_message(application_id \\\\ Me.get().id, token, webhook_payload)","anchor":"create_followup_message/3"},{"id":"create_followup_message!/3","deprecated":false,"title":"create_followup_message!(application_id \\\\ Me.get().id, token, webhook_payload)","anchor":"create_followup_message!/3"},{"id":"create_global_application_command/2","deprecated":false,"title":"create_global_application_command(application_id \\\\ Me.get().id, command)","anchor":"create_global_application_command/2"},{"id":"create_group_dm/2","deprecated":false,"title":"create_group_dm(access_tokens, nicks)","anchor":"create_group_dm/2"},{"id":"create_group_dm!/2","deprecated":false,"title":"create_group_dm!(access_tokens, nicks)","anchor":"create_group_dm!/2"},{"id":"create_guild_application_command/3","deprecated":false,"title":"create_guild_application_command(application_id \\\\ Me.get().id, guild_id, command)","anchor":"create_guild_application_command/3"},{"id":"create_guild_auto_moderation_rule/2","deprecated":false,"title":"create_guild_auto_moderation_rule(guild_id, options)","anchor":"create_guild_auto_moderation_rule/2"},{"id":"create_guild_ban/4","deprecated":false,"title":"create_guild_ban(guild_id, user_id, days_to_delete, reason \\\\ nil)","anchor":"create_guild_ban/4"},{"id":"create_guild_channel/2","deprecated":false,"title":"create_guild_channel(guild_id, options)","anchor":"create_guild_channel/2"},{"id":"create_guild_channel!/2","deprecated":false,"title":"create_guild_channel!(guild_id, options)","anchor":"create_guild_channel!/2"},{"id":"create_guild_emoji/3","deprecated":false,"title":"create_guild_emoji(guild_id, options, reason \\\\ nil)","anchor":"create_guild_emoji/3"},{"id":"create_guild_emoji!/3","deprecated":false,"title":"create_guild_emoji!(guild_id, params, reason \\\\ nil)","anchor":"create_guild_emoji!/3"},{"id":"create_guild_integrations/2","deprecated":false,"title":"create_guild_integrations(guild_id, options)","anchor":"create_guild_integrations/2"},{"id":"create_guild_role/3","deprecated":false,"title":"create_guild_role(guild_id, options, reason \\\\ nil)","anchor":"create_guild_role/3"},{"id":"create_guild_role!/3","deprecated":false,"title":"create_guild_role!(guild_id, options, reason \\\\ nil)","anchor":"create_guild_role!/3"},{"id":"create_guild_scheduled_event/3","deprecated":false,"title":"create_guild_scheduled_event(guild_id, reason \\\\ nil, options)","anchor":"create_guild_scheduled_event/3"},{"id":"create_guild_sticker/6","deprecated":false,"title":"create_guild_sticker(guild_id, name, description, tags, file, reason \\\\ nil)","anchor":"create_guild_sticker/6"},{"id":"create_interaction_response/2","deprecated":false,"title":"create_interaction_response(interaction, response)","anchor":"create_interaction_response/2"},{"id":"create_interaction_response/3","deprecated":false,"title":"create_interaction_response(id, token, response)","anchor":"create_interaction_response/3"},{"id":"create_interaction_response!/2","deprecated":false,"title":"create_interaction_response!(interaction, response)","anchor":"create_interaction_response!/2"},{"id":"create_interaction_response!/3","deprecated":false,"title":"create_interaction_response!(id, token, response)","anchor":"create_interaction_response!/3"},{"id":"create_message/2","deprecated":false,"title":"create_message(channel_id, options)","anchor":"create_message/2"},{"id":"create_message!/2","deprecated":false,"title":"create_message!(channel_id, options)","anchor":"create_message!/2"},{"id":"create_reaction/3","deprecated":false,"title":"create_reaction(channel_id, message_id, emoji)","anchor":"create_reaction/3"},{"id":"create_reaction!/3","deprecated":false,"title":"create_reaction!(channel_id, message_id, emoji)","anchor":"create_reaction!/3"},{"id":"create_webhook/3","deprecated":false,"title":"create_webhook(channel_id, args, reason \\\\ nil)","anchor":"create_webhook/3"},{"id":"delete_all_reactions/2","deprecated":false,"title":"delete_all_reactions(channel_id, message_id)","anchor":"delete_all_reactions/2"},{"id":"delete_all_reactions!/2","deprecated":false,"title":"delete_all_reactions!(channel_id, message_id)","anchor":"delete_all_reactions!/2"},{"id":"delete_channel/2","deprecated":false,"title":"delete_channel(channel_id, reason \\\\ nil)","anchor":"delete_channel/2"},{"id":"delete_channel!/2","deprecated":false,"title":"delete_channel!(channel_id, reason \\\\ nil)","anchor":"delete_channel!/2"},{"id":"delete_channel_permissions/3","deprecated":false,"title":"delete_channel_permissions(channel_id, overwrite_id, reason \\\\ nil)","anchor":"delete_channel_permissions/3"},{"id":"delete_global_application_command/2","deprecated":false,"title":"delete_global_application_command(application_id \\\\ Me.get().id, command_id)","anchor":"delete_global_application_command/2"},{"id":"delete_guild/1","deprecated":false,"title":"delete_guild(guild_id)","anchor":"delete_guild/1"},{"id":"delete_guild!/1","deprecated":false,"title":"delete_guild!(guild_id)","anchor":"delete_guild!/1"},{"id":"delete_guild_application_command/3","deprecated":false,"title":"delete_guild_application_command(application_id \\\\ Me.get().id, guild_id, command_id)","anchor":"delete_guild_application_command/3"},{"id":"delete_guild_auto_moderation_rule/2","deprecated":false,"title":"delete_guild_auto_moderation_rule(guild_id, rule_id)","anchor":"delete_guild_auto_moderation_rule/2"},{"id":"delete_guild_emoji/3","deprecated":false,"title":"delete_guild_emoji(guild_id, emoji_id, reason \\\\ nil)","anchor":"delete_guild_emoji/3"},{"id":"delete_guild_emoji!/3","deprecated":false,"title":"delete_guild_emoji!(guild_id, emoji_id, reason \\\\ nil)","anchor":"delete_guild_emoji!/3"},{"id":"delete_guild_integrations/2","deprecated":false,"title":"delete_guild_integrations(guild_id, integration_id)","anchor":"delete_guild_integrations/2"},{"id":"delete_guild_role/3","deprecated":false,"title":"delete_guild_role(guild_id, role_id, reason \\\\ nil)","anchor":"delete_guild_role/3"},{"id":"delete_guild_role!/3","deprecated":false,"title":"delete_guild_role!(guild_id, role_id, reason \\\\ nil)","anchor":"delete_guild_role!/3"},{"id":"delete_guild_scheduled_event/2","deprecated":false,"title":"delete_guild_scheduled_event(guild_id, event_id)","anchor":"delete_guild_scheduled_event/2"},{"id":"delete_guild_sticker/2","deprecated":false,"title":"delete_guild_sticker(guild_id, sticker_id)","anchor":"delete_guild_sticker/2"},{"id":"delete_interaction_followup_message/3","deprecated":false,"title":"delete_interaction_followup_message(application_id \\\\ Me.get().id, token, message_id)","anchor":"delete_interaction_followup_message/3"},{"id":"delete_interaction_followup_message!/3","deprecated":false,"title":"delete_interaction_followup_message!(application_id \\\\ Me.get().id, token, message_id)","anchor":"delete_interaction_followup_message!/3"},{"id":"delete_interaction_response/1","deprecated":false,"title":"delete_interaction_response(interaction)","anchor":"delete_interaction_response/1"},{"id":"delete_interaction_response/2","deprecated":false,"title":"delete_interaction_response(id \\\\ Me.get().id, token)","anchor":"delete_interaction_response/2"},{"id":"delete_interaction_response!/1","deprecated":false,"title":"delete_interaction_response!(interaction)","anchor":"delete_interaction_response!/1"},{"id":"delete_interaction_response!/2","deprecated":false,"title":"delete_interaction_response!(id \\\\ Me.get().id, token)","anchor":"delete_interaction_response!/2"},{"id":"delete_invite/1","deprecated":false,"title":"delete_invite(invite_code)","anchor":"delete_invite/1"},{"id":"delete_invite!/1","deprecated":false,"title":"delete_invite!(invite_code)","anchor":"delete_invite!/1"},{"id":"delete_message/1","deprecated":false,"title":"delete_message(message)","anchor":"delete_message/1"},{"id":"delete_message/2","deprecated":false,"title":"delete_message(channel_id, message_id)","anchor":"delete_message/2"},{"id":"delete_message!/1","deprecated":false,"title":"delete_message!(message)","anchor":"delete_message!/1"},{"id":"delete_message!/2","deprecated":false,"title":"delete_message!(channel_id, message_id)","anchor":"delete_message!/2"},{"id":"delete_own_reaction/3","deprecated":false,"title":"delete_own_reaction(channel_id, message_id, emoji)","anchor":"delete_own_reaction/3"},{"id":"delete_own_reaction!/3","deprecated":false,"title":"delete_own_reaction!(channel_id, message_id, emoji)","anchor":"delete_own_reaction!/3"},{"id":"delete_pinned_channel_message/2","deprecated":false,"title":"delete_pinned_channel_message(channel_id, message_id)","anchor":"delete_pinned_channel_message/2"},{"id":"delete_pinned_channel_message!/2","deprecated":false,"title":"delete_pinned_channel_message!(channel_id, message_id)","anchor":"delete_pinned_channel_message!/2"},{"id":"delete_reaction/3","deprecated":false,"title":"delete_reaction(channel_id, message_id, emoji)","anchor":"delete_reaction/3"},{"id":"delete_reaction!/3","deprecated":false,"title":"delete_reaction!(channel_id, message_id, emoji)","anchor":"delete_reaction!/3"},{"id":"delete_user_reaction/4","deprecated":false,"title":"delete_user_reaction(channel_id, message_id, emoji, user_id)","anchor":"delete_user_reaction/4"},{"id":"delete_user_reaction!/4","deprecated":false,"title":"delete_user_reaction!(channel_id, message_id, emoji, user_id)","anchor":"delete_user_reaction!/4"},{"id":"delete_webhook/2","deprecated":false,"title":"delete_webhook(webhook_id, reason \\\\ nil)","anchor":"delete_webhook/2"},{"id":"edit_application_command_permissions/4","deprecated":false,"title":"edit_application_command_permissions(application_id \\\\ Me.get().id, guild_id, command_id, permissions)","anchor":"edit_application_command_permissions/4"},{"id":"edit_channel_permissions/4","deprecated":false,"title":"edit_channel_permissions(channel_id, overwrite_id, permission_info, reason \\\\ nil)","anchor":"edit_channel_permissions/4"},{"id":"edit_channel_permissions!/4","deprecated":false,"title":"edit_channel_permissions!(channel_id, overwrite_id, permission_info, reason \\\\ nil)","anchor":"edit_channel_permissions!/4"},{"id":"edit_global_application_command/3","deprecated":false,"title":"edit_global_application_command(application_id \\\\ Me.get().id, command_id, command)","anchor":"edit_global_application_command/3"},{"id":"edit_guild_application_command/4","deprecated":false,"title":"edit_guild_application_command(application_id \\\\ Me.get().id, guild_id, command_id, command)","anchor":"edit_guild_application_command/4"},{"id":"edit_interaction_response/2","deprecated":false,"title":"edit_interaction_response(interaction, response)","anchor":"edit_interaction_response/2"},{"id":"edit_interaction_response/3","deprecated":false,"title":"edit_interaction_response(id \\\\ Me.get().id, token, response)","anchor":"edit_interaction_response/3"},{"id":"edit_interaction_response!/2","deprecated":false,"title":"edit_interaction_response!(interaction, response)","anchor":"edit_interaction_response!/2"},{"id":"edit_interaction_response!/3","deprecated":false,"title":"edit_interaction_response!(id \\\\ Me.get().id, token, response)","anchor":"edit_interaction_response!/3"},{"id":"edit_message/2","deprecated":false,"title":"edit_message(message, options)","anchor":"edit_message/2"},{"id":"edit_message/3","deprecated":false,"title":"edit_message(channel_id, message_id, options)","anchor":"edit_message/3"},{"id":"edit_message!/2","deprecated":false,"title":"edit_message!(message, options)","anchor":"edit_message!/2"},{"id":"edit_message!/3","deprecated":false,"title":"edit_message!(channel_id, message_id, options)","anchor":"edit_message!/3"},{"id":"edit_webhook_message/4","deprecated":false,"title":"edit_webhook_message(webhook_id, webhook_token, message_id, args)","anchor":"edit_webhook_message/4"},{"id":"execute_git_webhook/3","deprecated":false,"title":"execute_git_webhook(webhook_id, webhook_token, wait \\\\ false)","anchor":"execute_git_webhook/3"},{"id":"execute_slack_webhook/3","deprecated":false,"title":"execute_slack_webhook(webhook_id, webhook_token, wait \\\\ false)","anchor":"execute_slack_webhook/3"},{"id":"execute_webhook/4","deprecated":false,"title":"execute_webhook(webhook_id, webhook_token, args, wait \\\\ false)","anchor":"execute_webhook/4"},{"id":"expire_poll/2","deprecated":false,"title":"expire_poll(channel_id, message_id)","anchor":"expire_poll/2"},{"id":"expire_poll!/2","deprecated":false,"title":"expire_poll!(channel_id, message_id)","anchor":"expire_poll!/2"},{"id":"get_application_command_permissions/3","deprecated":false,"title":"get_application_command_permissions(application_id \\\\ Me.get().id, guild_id, command_id)","anchor":"get_application_command_permissions/3"},{"id":"get_application_information/0","deprecated":false,"title":"get_application_information()","anchor":"get_application_information/0"},{"id":"get_channel/1","deprecated":false,"title":"get_channel(channel_id)","anchor":"get_channel/1"},{"id":"get_channel!/1","deprecated":false,"title":"get_channel!(channel_id)","anchor":"get_channel!/1"},{"id":"get_channel_invites/1","deprecated":false,"title":"get_channel_invites(channel_id)","anchor":"get_channel_invites/1"},{"id":"get_channel_invites!/1","deprecated":false,"title":"get_channel_invites!(channel_id)","anchor":"get_channel_invites!/1"},{"id":"get_channel_message/2","deprecated":false,"title":"get_channel_message(channel_id, message_id)","anchor":"get_channel_message/2"},{"id":"get_channel_message!/2","deprecated":false,"title":"get_channel_message!(channel_id, message_id)","anchor":"get_channel_message!/2"},{"id":"get_channel_messages/3","deprecated":false,"title":"get_channel_messages(channel_id, limit, locator \\\\ {})","anchor":"get_channel_messages/3"},{"id":"get_channel_messages!/3","deprecated":false,"title":"get_channel_messages!(channel_id, limit, locator \\\\ {})","anchor":"get_channel_messages!/3"},{"id":"get_channel_webhooks/1","deprecated":false,"title":"get_channel_webhooks(channel_id)","anchor":"get_channel_webhooks/1"},{"id":"get_current_user/0","deprecated":false,"title":"get_current_user()","anchor":"get_current_user/0"},{"id":"get_current_user!/0","deprecated":false,"title":"get_current_user!()","anchor":"get_current_user!/0"},{"id":"get_current_user_guilds/1","deprecated":false,"title":"get_current_user_guilds(options \\\\ [])","anchor":"get_current_user_guilds/1"},{"id":"get_current_user_guilds!/1","deprecated":false,"title":"get_current_user_guilds!(options \\\\ [])","anchor":"get_current_user_guilds!/1"},{"id":"get_global_application_commands/1","deprecated":false,"title":"get_global_application_commands(application_id \\\\ Me.get().id)","anchor":"get_global_application_commands/1"},{"id":"get_guild/1","deprecated":false,"title":"get_guild(guild_id)","anchor":"get_guild/1"},{"id":"get_guild!/1","deprecated":false,"title":"get_guild!(guild_id)","anchor":"get_guild!/1"},{"id":"get_guild_application_command_permissions/2","deprecated":false,"title":"get_guild_application_command_permissions(application_id \\\\ Me.get().id, guild_id)","anchor":"get_guild_application_command_permissions/2"},{"id":"get_guild_application_commands/2","deprecated":false,"title":"get_guild_application_commands(application_id \\\\ Me.get().id, guild_id)","anchor":"get_guild_application_commands/2"},{"id":"get_guild_audit_log/2","deprecated":false,"title":"get_guild_audit_log(guild_id, options \\\\ [])","anchor":"get_guild_audit_log/2"},{"id":"get_guild_auto_moderation_rule/2","deprecated":false,"title":"get_guild_auto_moderation_rule(guild_id, rule_id)","anchor":"get_guild_auto_moderation_rule/2"},{"id":"get_guild_auto_moderation_rules/1","deprecated":false,"title":"get_guild_auto_moderation_rules(guild_id)","anchor":"get_guild_auto_moderation_rules/1"},{"id":"get_guild_ban/2","deprecated":false,"title":"get_guild_ban(guild_id, user_id)","anchor":"get_guild_ban/2"},{"id":"get_guild_bans/1","deprecated":false,"title":"get_guild_bans(guild_id)","anchor":"get_guild_bans/1"},{"id":"get_guild_channels/1","deprecated":false,"title":"get_guild_channels(guild_id)","anchor":"get_guild_channels/1"},{"id":"get_guild_channels!/1","deprecated":false,"title":"get_guild_channels!(guild_id)","anchor":"get_guild_channels!/1"},{"id":"get_guild_emoji/2","deprecated":false,"title":"get_guild_emoji(guild_id, emoji_id)","anchor":"get_guild_emoji/2"},{"id":"get_guild_emoji!/2","deprecated":false,"title":"get_guild_emoji!(guild_id, emoji_id)","anchor":"get_guild_emoji!/2"},{"id":"get_guild_integrations/1","deprecated":false,"title":"get_guild_integrations(guild_id)","anchor":"get_guild_integrations/1"},{"id":"get_guild_invites/1","deprecated":false,"title":"get_guild_invites(guild_id)","anchor":"get_guild_invites/1"},{"id":"get_guild_invites!/1","deprecated":false,"title":"get_guild_invites!(guild_id)","anchor":"get_guild_invites!/1"},{"id":"get_guild_member/2","deprecated":false,"title":"get_guild_member(guild_id, user_id)","anchor":"get_guild_member/2"},{"id":"get_guild_member!/2","deprecated":false,"title":"get_guild_member!(guild_id, user_id)","anchor":"get_guild_member!/2"},{"id":"get_guild_prune_count/2","deprecated":false,"title":"get_guild_prune_count(guild_id, days)","anchor":"get_guild_prune_count/2"},{"id":"get_guild_prune_count!/2","deprecated":false,"title":"get_guild_prune_count!(guild_id, days)","anchor":"get_guild_prune_count!/2"},{"id":"get_guild_roles/1","deprecated":false,"title":"get_guild_roles(guild_id)","anchor":"get_guild_roles/1"},{"id":"get_guild_roles!/1","deprecated":false,"title":"get_guild_roles!(guild_id)","anchor":"get_guild_roles!/1"},{"id":"get_guild_scheduled_event/2","deprecated":false,"title":"get_guild_scheduled_event(guild_id, event_id)","anchor":"get_guild_scheduled_event/2"},{"id":"get_guild_scheduled_event_users/3","deprecated":false,"title":"get_guild_scheduled_event_users(guild_id, event_id, params \\\\ [])","anchor":"get_guild_scheduled_event_users/3"},{"id":"get_guild_scheduled_events/1","deprecated":false,"title":"get_guild_scheduled_events(guild_id)","anchor":"get_guild_scheduled_events/1"},{"id":"get_guild_sticker/2","deprecated":false,"title":"get_guild_sticker(guild_id, sticker_id)","anchor":"get_guild_sticker/2"},{"id":"get_guild_webhooks/1","deprecated":false,"title":"get_guild_webhooks(guild_id)","anchor":"get_guild_webhooks/1"},{"id":"get_guild_widget/1","deprecated":false,"title":"get_guild_widget(guild_id)","anchor":"get_guild_widget/1"},{"id":"get_invite/2","deprecated":false,"title":"get_invite(invite_code, options \\\\ [])","anchor":"get_invite/2"},{"id":"get_invite!/2","deprecated":false,"title":"get_invite!(invite_code, options \\\\ [])","anchor":"get_invite!/2"},{"id":"get_original_interaction_response/1","deprecated":false,"title":"get_original_interaction_response(interaction)","anchor":"get_original_interaction_response/1"},{"id":"get_pinned_messages/1","deprecated":false,"title":"get_pinned_messages(channel_id)","anchor":"get_pinned_messages/1"},{"id":"get_pinned_messages!/1","deprecated":false,"title":"get_pinned_messages!(channel_id)","anchor":"get_pinned_messages!/1"},{"id":"get_poll_answer_voters/4","deprecated":false,"title":"get_poll_answer_voters(channel_id, message_id, answer_id, params \\\\ [])","anchor":"get_poll_answer_voters/4"},{"id":"get_poll_answer_voters!/4","deprecated":false,"title":"get_poll_answer_voters!(channel_id, message_id, answer_id, params \\\\ [])","anchor":"get_poll_answer_voters!/4"},{"id":"get_reactions/4","deprecated":false,"title":"get_reactions(channel_id, message_id, emoji, params \\\\ [])","anchor":"get_reactions/4"},{"id":"get_reactions!/4","deprecated":false,"title":"get_reactions!(channel_id, message_id, emoji, params \\\\ [])","anchor":"get_reactions!/4"},{"id":"get_sticker/1","deprecated":false,"title":"get_sticker(sticker_id)","anchor":"get_sticker/1"},{"id":"get_sticker_packs/0","deprecated":false,"title":"get_sticker_packs()","anchor":"get_sticker_packs/0"},{"id":"get_thread_member/2","deprecated":false,"title":"get_thread_member(thread_id, user_id)","anchor":"get_thread_member/2"},{"id":"get_thread_members/1","deprecated":false,"title":"get_thread_members(thread_id)","anchor":"get_thread_members/1"},{"id":"get_user/1","deprecated":false,"title":"get_user(user_id)","anchor":"get_user/1"},{"id":"get_user!/1","deprecated":false,"title":"get_user!(user_id)","anchor":"get_user!/1"},{"id":"get_user_connections/0","deprecated":false,"title":"get_user_connections()","anchor":"get_user_connections/0"},{"id":"get_user_dms/0","deprecated":false,"title":"get_user_dms()","anchor":"get_user_dms/0"},{"id":"get_user_dms!/0","deprecated":false,"title":"get_user_dms!()","anchor":"get_user_dms!/0"},{"id":"get_voice_region/1","deprecated":false,"title":"get_voice_region(guild_id)","anchor":"get_voice_region/1"},{"id":"get_webhook/1","deprecated":false,"title":"get_webhook(webhook_id)","anchor":"get_webhook/1"},{"id":"get_webhook_message/2","deprecated":false,"title":"get_webhook_message(webhook, message_id)","anchor":"get_webhook_message/2"},{"id":"get_webhook_with_token/2","deprecated":false,"title":"get_webhook_with_token(webhook_id, webhook_token)","anchor":"get_webhook_with_token/2"},{"id":"join_thread/1","deprecated":false,"title":"join_thread(thread_id)","anchor":"join_thread/1"},{"id":"leave_guild/1","deprecated":false,"title":"leave_guild(guild_id)","anchor":"leave_guild/1"},{"id":"leave_thread/1","deprecated":false,"title":"leave_thread(thread_id)","anchor":"leave_thread/1"},{"id":"list_guild_emojis/1","deprecated":false,"title":"list_guild_emojis(guild_id)","anchor":"list_guild_emojis/1"},{"id":"list_guild_emojis!/1","deprecated":false,"title":"list_guild_emojis!(guild_id)","anchor":"list_guild_emojis!/1"},{"id":"list_guild_members/2","deprecated":false,"title":"list_guild_members(guild_id, options \\\\ %{})","anchor":"list_guild_members/2"},{"id":"list_guild_members!/2","deprecated":false,"title":"list_guild_members!(guild_id, options \\\\ %{})","anchor":"list_guild_members!/2"},{"id":"list_guild_stickers/1","deprecated":false,"title":"list_guild_stickers(guild_id)","anchor":"list_guild_stickers/1"},{"id":"list_guild_threads/1","deprecated":false,"title":"list_guild_threads(guild_id)","anchor":"list_guild_threads/1"},{"id":"list_joined_private_archived_threads/2","deprecated":false,"title":"list_joined_private_archived_threads(channel_id, options \\\\ [])","anchor":"list_joined_private_archived_threads/2"},{"id":"list_private_archived_threads/2","deprecated":false,"title":"list_private_archived_threads(channel_id, options \\\\ [])","anchor":"list_private_archived_threads/2"},{"id":"list_public_archived_threads/2","deprecated":false,"title":"list_public_archived_threads(channel_id, options \\\\ [])","anchor":"list_public_archived_threads/2"},{"id":"list_voice_regions/0","deprecated":false,"title":"list_voice_regions()","anchor":"list_voice_regions/0"},{"id":"modify_channel/3","deprecated":false,"title":"modify_channel(channel_id, options, reason \\\\ nil)","anchor":"modify_channel/3"},{"id":"modify_channel!/3","deprecated":false,"title":"modify_channel!(channel_id, options, reason \\\\ nil)","anchor":"modify_channel!/3"},{"id":"modify_current_user/1","deprecated":false,"title":"modify_current_user(options)","anchor":"modify_current_user/1"},{"id":"modify_current_user!/1","deprecated":false,"title":"modify_current_user!(options)","anchor":"modify_current_user!/1"},{"id":"modify_current_user_nick/2","deprecated":false,"title":"modify_current_user_nick(guild_id, options \\\\ %{})","anchor":"modify_current_user_nick/2"},{"id":"modify_current_user_nick!/2","deprecated":false,"title":"modify_current_user_nick!(guild_id, options \\\\ %{})","anchor":"modify_current_user_nick!/2"},{"id":"modify_guild/3","deprecated":false,"title":"modify_guild(guild_id, options \\\\ [], reason \\\\ nil)","anchor":"modify_guild/3"},{"id":"modify_guild!/2","deprecated":false,"title":"modify_guild!(guild_id, options \\\\ [])","anchor":"modify_guild!/2"},{"id":"modify_guild_auto_moderation_rule/3","deprecated":false,"title":"modify_guild_auto_moderation_rule(guild_id, rule_id, options)","anchor":"modify_guild_auto_moderation_rule/3"},{"id":"modify_guild_channel_positions/2","deprecated":false,"title":"modify_guild_channel_positions(guild_id, positions)","anchor":"modify_guild_channel_positions/2"},{"id":"modify_guild_channel_positions!/2","deprecated":false,"title":"modify_guild_channel_positions!(guild_id, positions)","anchor":"modify_guild_channel_positions!/2"},{"id":"modify_guild_emoji/4","deprecated":false,"title":"modify_guild_emoji(guild_id, emoji_id, options \\\\ %{}, reason \\\\ nil)","anchor":"modify_guild_emoji/4"},{"id":"modify_guild_emoji!/4","deprecated":false,"title":"modify_guild_emoji!(guild_id, emoji_id, options, reason \\\\ nil)","anchor":"modify_guild_emoji!/4"},{"id":"modify_guild_integrations/3","deprecated":false,"title":"modify_guild_integrations(guild_id, integration_id, options)","anchor":"modify_guild_integrations/3"},{"id":"modify_guild_member/4","deprecated":false,"title":"modify_guild_member(guild_id, user_id, options \\\\ %{}, reason \\\\ nil)","anchor":"modify_guild_member/4"},{"id":"modify_guild_member!/4","deprecated":false,"title":"modify_guild_member!(guild_id, user_id, options \\\\ %{}, reason \\\\ nil)","anchor":"modify_guild_member!/4"},{"id":"modify_guild_role/4","deprecated":false,"title":"modify_guild_role(guild_id, role_id, options, reason \\\\ nil)","anchor":"modify_guild_role/4"},{"id":"modify_guild_role!/4","deprecated":false,"title":"modify_guild_role!(guild_id, role_id, options, reason \\\\ nil)","anchor":"modify_guild_role!/4"},{"id":"modify_guild_role_positions/3","deprecated":false,"title":"modify_guild_role_positions(guild_id, positions, reason \\\\ nil)","anchor":"modify_guild_role_positions/3"},{"id":"modify_guild_role_positions!/3","deprecated":false,"title":"modify_guild_role_positions!(guild_id, positions, reason \\\\ nil)","anchor":"modify_guild_role_positions!/3"},{"id":"modify_guild_scheduled_event/4","deprecated":false,"title":"modify_guild_scheduled_event(guild_id, event_id, reason \\\\ nil, options)","anchor":"modify_guild_scheduled_event/4"},{"id":"modify_guild_sticker/3","deprecated":false,"title":"modify_guild_sticker(guild_id, sticker_id, options)","anchor":"modify_guild_sticker/3"},{"id":"modify_guild_widget/2","deprecated":false,"title":"modify_guild_widget(guild_id, options)","anchor":"modify_guild_widget/2"},{"id":"modify_webhook/3","deprecated":false,"title":"modify_webhook(webhook_id, args, reason \\\\ nil)","anchor":"modify_webhook/3"},{"id":"modify_webhook_with_token/4","deprecated":false,"title":"modify_webhook_with_token(webhook_id, webhook_token, args, reason \\\\ nil)","anchor":"modify_webhook_with_token/4"},{"id":"remove_guild_ban/3","deprecated":false,"title":"remove_guild_ban(guild_id, user_id, reason \\\\ nil)","anchor":"remove_guild_ban/3"},{"id":"remove_guild_member/3","deprecated":false,"title":"remove_guild_member(guild_id, user_id, reason \\\\ nil)","anchor":"remove_guild_member/3"},{"id":"remove_guild_member!/3","deprecated":false,"title":"remove_guild_member!(guild_id, user_id, reason \\\\ nil)","anchor":"remove_guild_member!/3"},{"id":"remove_guild_member_role/4","deprecated":false,"title":"remove_guild_member_role(guild_id, user_id, role_id, reason \\\\ nil)","anchor":"remove_guild_member_role/4"},{"id":"remove_thread_member/2","deprecated":false,"title":"remove_thread_member(thread_id, user_id)","anchor":"remove_thread_member/2"},{"id":"request/1","deprecated":false,"title":"request(request)","anchor":"request/1"},{"id":"request/4","deprecated":false,"title":"request(method, route, body \\\\ \"\", params \\\\ [])","anchor":"request/4"},{"id":"request_multipart/4","deprecated":false,"title":"request_multipart(method, route, body, params \\\\ [])","anchor":"request_multipart/4"},{"id":"start_thread/3","deprecated":false,"title":"start_thread(channel_id, options, reason \\\\ nil)","anchor":"start_thread/3"},{"id":"start_thread_in_forum_channel/3","deprecated":false,"title":"start_thread_in_forum_channel(channel_id, options, reason \\\\ nil)","anchor":"start_thread_in_forum_channel/3"},{"id":"start_thread_with_message/4","deprecated":false,"title":"start_thread_with_message(channel_id, message_id, options, reason \\\\ nil)","anchor":"start_thread_with_message/4"},{"id":"start_typing/1","deprecated":false,"title":"start_typing(channel_id)","anchor":"start_typing/1"},{"id":"start_typing!/1","deprecated":false,"title":"start_typing!(channel_id)","anchor":"start_typing!/1"},{"id":"sync_guild_integrations/2","deprecated":false,"title":"sync_guild_integrations(guild_id, integration_id)","anchor":"sync_guild_integrations/2"},{"id":"update_shard_status/5","deprecated":false,"title":"update_shard_status(pid, status, game, type \\\\ 0, stream \\\\ nil)","anchor":"update_shard_status/5"},{"id":"update_status/4","deprecated":false,"title":"update_status(status, game, type \\\\ 0, stream \\\\ nil)","anchor":"update_status/4"},{"id":"update_voice_state/4","deprecated":false,"title":"update_voice_state(guild_id, channel_id, self_mute \\\\ false, self_deaf \\\\ false)","anchor":"update_voice_state/4"}],"key":"functions"}]},{"id":"Nostrum.Consumer","deprecated":false,"group":"Api","title":"Nostrum.Consumer","sections":[{"id":"Consuming gateway events","anchor":"module-consuming-gateway-events"},{"id":"Running multiple consumers","anchor":"module-running-multiple-consumers"},{"id":"Example consumer","anchor":"module-example-consumer"}],"nodeGroups":[{"name":"Types","nodes":[{"id":"auto_moderation_rule_create/0","deprecated":false,"title":"auto_moderation_rule_create()","anchor":"t:auto_moderation_rule_create/0"},{"id":"auto_moderation_rule_delete/0","deprecated":false,"title":"auto_moderation_rule_delete()","anchor":"t:auto_moderation_rule_delete/0"},{"id":"auto_moderation_rule_execute/0","deprecated":false,"title":"auto_moderation_rule_execute()","anchor":"t:auto_moderation_rule_execute/0"},{"id":"auto_moderation_rule_update/0","deprecated":false,"title":"auto_moderation_rule_update()","anchor":"t:auto_moderation_rule_update/0"},{"id":"channel_create/0","deprecated":false,"title":"channel_create()","anchor":"t:channel_create/0"},{"id":"channel_delete/0","deprecated":false,"title":"channel_delete()","anchor":"t:channel_delete/0"},{"id":"channel_pins_ack/0","deprecated":false,"title":"channel_pins_ack()","anchor":"t:channel_pins_ack/0"},{"id":"channel_pins_update/0","deprecated":false,"title":"channel_pins_update()","anchor":"t:channel_pins_update/0"},{"id":"channel_update/0","deprecated":false,"title":"channel_update()","anchor":"t:channel_update/0"},{"id":"event/0","deprecated":false,"title":"event()","anchor":"t:event/0"},{"id":"guild_audit_log_entry_create/0","deprecated":false,"title":"guild_audit_log_entry_create()","anchor":"t:guild_audit_log_entry_create/0"},{"id":"guild_available/0","deprecated":false,"title":"guild_available()","anchor":"t:guild_available/0"},{"id":"guild_ban_add/0","deprecated":false,"title":"guild_ban_add()","anchor":"t:guild_ban_add/0"},{"id":"guild_ban_remove/0","deprecated":false,"title":"guild_ban_remove()","anchor":"t:guild_ban_remove/0"},{"id":"guild_create/0","deprecated":false,"title":"guild_create()","anchor":"t:guild_create/0"},{"id":"guild_delete/0","deprecated":false,"title":"guild_delete()","anchor":"t:guild_delete/0"},{"id":"guild_emojis_update/0","deprecated":false,"title":"guild_emojis_update()","anchor":"t:guild_emojis_update/0"},{"id":"guild_integrations_update/0","deprecated":false,"title":"guild_integrations_update()","anchor":"t:guild_integrations_update/0"},{"id":"guild_member_add/0","deprecated":false,"title":"guild_member_add()","anchor":"t:guild_member_add/0"},{"id":"guild_member_remove/0","deprecated":false,"title":"guild_member_remove()","anchor":"t:guild_member_remove/0"},{"id":"guild_member_update/0","deprecated":false,"title":"guild_member_update()","anchor":"t:guild_member_update/0"},{"id":"guild_members_chunk/0","deprecated":false,"title":"guild_members_chunk()","anchor":"t:guild_members_chunk/0"},{"id":"guild_role_create/0","deprecated":false,"title":"guild_role_create()","anchor":"t:guild_role_create/0"},{"id":"guild_role_delete/0","deprecated":false,"title":"guild_role_delete()","anchor":"t:guild_role_delete/0"},{"id":"guild_role_update/0","deprecated":false,"title":"guild_role_update()","anchor":"t:guild_role_update/0"},{"id":"guild_scheduled_event_create/0","deprecated":false,"title":"guild_scheduled_event_create()","anchor":"t:guild_scheduled_event_create/0"},{"id":"guild_scheduled_event_delete/0","deprecated":false,"title":"guild_scheduled_event_delete()","anchor":"t:guild_scheduled_event_delete/0"},{"id":"guild_scheduled_event_update/0","deprecated":false,"title":"guild_scheduled_event_update()","anchor":"t:guild_scheduled_event_update/0"},{"id":"guild_scheduled_event_user_add/0","deprecated":false,"title":"guild_scheduled_event_user_add()","anchor":"t:guild_scheduled_event_user_add/0"},{"id":"guild_scheduled_event_user_remove/0","deprecated":false,"title":"guild_scheduled_event_user_remove()","anchor":"t:guild_scheduled_event_user_remove/0"},{"id":"guild_stickers_update/0","deprecated":false,"title":"guild_stickers_update()","anchor":"t:guild_stickers_update/0"},{"id":"guild_unavailable/0","deprecated":false,"title":"guild_unavailable()","anchor":"t:guild_unavailable/0"},{"id":"guild_update/0","deprecated":false,"title":"guild_update()","anchor":"t:guild_update/0"},{"id":"integration_create/0","deprecated":false,"title":"integration_create()","anchor":"t:integration_create/0"},{"id":"integration_delete/0","deprecated":false,"title":"integration_delete()","anchor":"t:integration_delete/0"},{"id":"integration_update/0","deprecated":false,"title":"integration_update()","anchor":"t:integration_update/0"},{"id":"interaction_create/0","deprecated":false,"title":"interaction_create()","anchor":"t:interaction_create/0"},{"id":"message_ack/0","deprecated":false,"title":"message_ack()","anchor":"t:message_ack/0"},{"id":"message_create/0","deprecated":false,"title":"message_create()","anchor":"t:message_create/0"},{"id":"message_delete/0","deprecated":false,"title":"message_delete()","anchor":"t:message_delete/0"},{"id":"message_delete_bulk/0","deprecated":false,"title":"message_delete_bulk()","anchor":"t:message_delete_bulk/0"},{"id":"message_poll_vote_add/0","deprecated":false,"title":"message_poll_vote_add()","anchor":"t:message_poll_vote_add/0"},{"id":"message_poll_vote_remove/0","deprecated":false,"title":"message_poll_vote_remove()","anchor":"t:message_poll_vote_remove/0"},{"id":"message_reaction_add/0","deprecated":false,"title":"message_reaction_add()","anchor":"t:message_reaction_add/0"},{"id":"message_reaction_remove/0","deprecated":false,"title":"message_reaction_remove()","anchor":"t:message_reaction_remove/0"},{"id":"message_reaction_remove_all/0","deprecated":false,"title":"message_reaction_remove_all()","anchor":"t:message_reaction_remove_all/0"},{"id":"message_reaction_remove_emoji/0","deprecated":false,"title":"message_reaction_remove_emoji()","anchor":"t:message_reaction_remove_emoji/0"},{"id":"message_update/0","deprecated":false,"title":"message_update()","anchor":"t:message_update/0"},{"id":"presence_update/0","deprecated":false,"title":"presence_update()","anchor":"t:presence_update/0"},{"id":"ready/0","deprecated":false,"title":"ready()","anchor":"t:ready/0"},{"id":"resumed/0","deprecated":false,"title":"resumed()","anchor":"t:resumed/0"},{"id":"thread_create/0","deprecated":false,"title":"thread_create()","anchor":"t:thread_create/0"},{"id":"thread_delete/0","deprecated":false,"title":"thread_delete()","anchor":"t:thread_delete/0"},{"id":"thread_list_sync/0","deprecated":false,"title":"thread_list_sync()","anchor":"t:thread_list_sync/0"},{"id":"thread_member_update/0","deprecated":false,"title":"thread_member_update()","anchor":"t:thread_member_update/0"},{"id":"thread_members_update/0","deprecated":false,"title":"thread_members_update()","anchor":"t:thread_members_update/0"},{"id":"thread_update/0","deprecated":false,"title":"thread_update()","anchor":"t:thread_update/0"},{"id":"typing_start/0","deprecated":false,"title":"typing_start()","anchor":"t:typing_start/0"},{"id":"user_settings_update/0","deprecated":false,"title":"user_settings_update()","anchor":"t:user_settings_update/0"},{"id":"user_update/0","deprecated":false,"title":"user_update()","anchor":"t:user_update/0"},{"id":"voice_incoming_packet/0","deprecated":false,"title":"voice_incoming_packet()","anchor":"t:voice_incoming_packet/0"},{"id":"voice_ready/0","deprecated":false,"title":"voice_ready()","anchor":"t:voice_ready/0"},{"id":"voice_server_update/0","deprecated":false,"title":"voice_server_update()","anchor":"t:voice_server_update/0"},{"id":"voice_speaking_update/0","deprecated":false,"title":"voice_speaking_update()","anchor":"t:voice_speaking_update/0"},{"id":"voice_state_update/0","deprecated":false,"title":"voice_state_update()","anchor":"t:voice_state_update/0"},{"id":"webhooks_update/0","deprecated":false,"title":"webhooks_update()","anchor":"t:webhooks_update/0"}],"key":"types"},{"name":"Callbacks","nodes":[{"id":"handle_event/1","deprecated":false,"title":"handle_event(event)","anchor":"c:handle_event/1"}],"key":"callbacks"}]},{"id":"Nostrum.ConsumerGroup","deprecated":false,"group":"Api","title":"Nostrum.ConsumerGroup","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"child_spec/1","deprecated":false,"title":"child_spec(opts)","anchor":"child_spec/1"},{"id":"demonitor/1","deprecated":false,"title":"demonitor(ref)","anchor":"demonitor/1"},{"id":"dispatch/1","deprecated":false,"title":"dispatch(event)","anchor":"dispatch/1"},{"id":"join/0","deprecated":false,"title":"join()","anchor":"join/0"},{"id":"join/1","deprecated":false,"title":"join(pid)","anchor":"join/1"},{"id":"monitor/0","deprecated":false,"title":"monitor()","anchor":"monitor/0"},{"id":"start_link/1","deprecated":false,"title":"start_link(opts)","anchor":"start_link/1"}],"key":"functions"}]},{"id":"Nostrum.Permission","deprecated":false,"group":"Api","title":"Nostrum.Permission","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"bit/0","deprecated":false,"title":"bit()","anchor":"t:bit/0"},{"id":"bitset/0","deprecated":false,"title":"bitset()","anchor":"t:bitset/0"},{"id":"general_permission/0","deprecated":false,"title":"general_permission()","anchor":"t:general_permission/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"text_permission/0","deprecated":false,"title":"text_permission()","anchor":"t:text_permission/0"},{"id":"voice_permission/0","deprecated":false,"title":"voice_permission()","anchor":"t:voice_permission/0"}],"key":"types"},{"name":"Functions","nodes":[{"id":"all/0","deprecated":false,"title":"all()","anchor":"all/0"},{"id":"from_bit/1","deprecated":false,"title":"from_bit(bit)","anchor":"from_bit/1"},{"id":"from_bit!/1","deprecated":false,"title":"from_bit!(bit)","anchor":"from_bit!/1"},{"id":"from_bitset/1","deprecated":false,"title":"from_bitset(bitset)","anchor":"from_bitset/1"},{"id":"is_permission/1","deprecated":false,"title":"is_permission(term)","anchor":"is_permission/1"},{"id":"to_bit/1","deprecated":false,"title":"to_bit(permission)","anchor":"to_bit/1"},{"id":"to_bitset/1","deprecated":false,"title":"to_bitset(permissions)","anchor":"to_bitset/1"}],"key":"functions"}]},{"id":"Nostrum.Voice","deprecated":false,"group":"Api","title":"Nostrum.Voice","sections":[{"id":"Voice Without FFmpeg","anchor":"module-voice-without-ffmpeg"}],"nodeGroups":[{"name":"Types","nodes":[{"id":"opus_packet/0","deprecated":false,"title":"opus_packet()","anchor":"t:opus_packet/0"},{"id":"play_input/0","deprecated":false,"title":"play_input()","anchor":"t:play_input/0"},{"id":"play_type/0","deprecated":false,"title":"play_type()","anchor":"t:play_type/0"},{"id":"rtp_opus/0","deprecated":false,"title":"rtp_opus()","anchor":"t:rtp_opus/0"},{"id":"rtp_sequence/0","deprecated":false,"title":"rtp_sequence()","anchor":"t:rtp_sequence/0"},{"id":"rtp_ssrc/0","deprecated":false,"title":"rtp_ssrc()","anchor":"t:rtp_ssrc/0"},{"id":"rtp_timestamp/0","deprecated":false,"title":"rtp_timestamp()","anchor":"t:rtp_timestamp/0"}],"key":"types"},{"name":"Functions","nodes":[{"id":"child_spec/1","deprecated":false,"title":"child_spec(init_arg)","anchor":"child_spec/1"},{"id":"connect_to_gateway/1","deprecated":false,"title":"connect_to_gateway(guild_id)","anchor":"connect_to_gateway/1"},{"id":"create_ogg_bitstream/1","deprecated":false,"title":"create_ogg_bitstream(opus_packets)","anchor":"create_ogg_bitstream/1"},{"id":"extract_opus_packet/1","deprecated":false,"title":"extract_opus_packet(packet)","anchor":"extract_opus_packet/1"},{"id":"get_channel_id/1","deprecated":false,"title":"get_channel_id(guild_id)","anchor":"get_channel_id/1"},{"id":"get_current_url/1","deprecated":false,"title":"get_current_url(guild_id)","anchor":"get_current_url/1"},{"id":"get_ssrc_map/1","deprecated":false,"title":"get_ssrc_map(guild_id)","anchor":"get_ssrc_map/1"},{"id":"join_channel/5","deprecated":false,"title":"join_channel(guild_id, channel_id, self_mute \\\\ false, self_deaf \\\\ false, persist \\\\ true)","anchor":"join_channel/5"},{"id":"leave_channel/1","deprecated":false,"title":"leave_channel(guild_id)","anchor":"leave_channel/1"},{"id":"listen/3","deprecated":false,"title":"listen(guild_id, num_packets, raw_rtp \\\\ false)","anchor":"listen/3"},{"id":"pad_opus/1","deprecated":false,"title":"pad_opus(packets)","anchor":"pad_opus/1"},{"id":"pause/1","deprecated":false,"title":"pause(guild_id)","anchor":"pause/1"},{"id":"play/4","deprecated":false,"title":"play(guild_id, input, type \\\\ :url, options \\\\ [])","anchor":"play/4"},{"id":"playing?/1","deprecated":false,"title":"playing?(guild_id)","anchor":"playing?/1"},{"id":"ready?/1","deprecated":false,"title":"ready?(guild_id)","anchor":"ready?/1"},{"id":"resume/1","deprecated":false,"title":"resume(guild_id)","anchor":"resume/1"},{"id":"send_frames/2","deprecated":false,"title":"send_frames(guild_id, frames)","anchor":"send_frames/2"},{"id":"set_is_speaking/2","deprecated":false,"title":"set_is_speaking(guild_id, speaking)","anchor":"set_is_speaking/2"},{"id":"start_listen_async/1","deprecated":false,"title":"start_listen_async(guild_id)","anchor":"start_listen_async/1"},{"id":"stop/1","deprecated":false,"title":"stop(guild_id)","anchor":"stop/1"},{"id":"stop_listen_async/1","deprecated":false,"title":"stop_listen_async(guild_id)","anchor":"stop_listen_async/1"}],"key":"functions"}]},{"id":"Nostrum.Voice.Crypto.Aes","deprecated":false,"group":"Api","title":"Nostrum.Voice.Crypto.Aes","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"decrypt/5","deprecated":false,"title":"decrypt(cipher_text, key, nonce, aad, tag)","anchor":"decrypt/5"},{"id":"encrypt/4","deprecated":false,"title":"encrypt(plain_text, key, nonce, aad)","anchor":"encrypt/4"}],"key":"functions"}]},{"id":"Nostrum.Voice.Crypto.Chacha","deprecated":false,"group":"Api","title":"Nostrum.Voice.Crypto.Chacha","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"decrypt/5","deprecated":false,"title":"decrypt(cipher_text, key, nonce, aad, tag)","anchor":"decrypt/5"},{"id":"encrypt/4","deprecated":false,"title":"encrypt(plain_text, key, nonce, aad)","anchor":"encrypt/4"}],"key":"functions"}]},{"id":"Nostrum.Voice.Crypto.Salsa","deprecated":false,"group":"Api","title":"Nostrum.Voice.Crypto.Salsa","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"block_binary_to_tuple/1","deprecated":false,"title":"block_binary_to_tuple(arg)","anchor":"block_binary_to_tuple/1"},{"id":"decrypt/3","deprecated":false,"title":"decrypt(encrypted_message, key, nonce)","anchor":"decrypt/3"},{"id":"encrypt/3","deprecated":false,"title":"encrypt(plain_text, key, nonce)","anchor":"encrypt/3"}],"key":"functions"}]},{"id":"Nostrum.Cache.CacheSupervisor","deprecated":false,"group":"Cache","title":"Nostrum.Cache.CacheSupervisor","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"child_spec/1","deprecated":false,"title":"child_spec(init_arg)","anchor":"child_spec/1"},{"id":"init/1","deprecated":false,"title":"init(list)","anchor":"init/1"},{"id":"start_link/1","deprecated":false,"title":"start_link(list)","anchor":"start_link/1"}],"key":"functions"}],"nested_title":".CacheSupervisor","nested_context":"Nostrum.Cache"},{"id":"Nostrum.Cache.ChannelGuildMapping","deprecated":false,"group":"Cache","title":"Nostrum.Cache.ChannelGuildMapping","sections":[{"id":"Purpose","anchor":"module-purpose"},{"id":"Configuration","anchor":"module-configuration"}],"nodeGroups":[{"name":"Callbacks","nodes":[{"id":"child_spec/1","deprecated":false,"title":"child_spec(term)","anchor":"c:child_spec/1"},{"id":"create/2","deprecated":false,"title":"create(id, id)","anchor":"c:create/2"},{"id":"delete/1","deprecated":false,"title":"delete(id)","anchor":"c:delete/1"},{"id":"get/1","deprecated":false,"title":"get(id)","anchor":"c:get/1"}],"key":"callbacks"},{"name":"Functions","nodes":[{"id":"create/2","deprecated":false,"title":"create(guild_id, shard_num)","anchor":"create/2"},{"id":"delete/1","deprecated":false,"title":"delete(guild_id)","anchor":"delete/1"},{"id":"get/1","deprecated":false,"title":"get(guild_id)","anchor":"get/1"}],"key":"functions"}],"nested_title":".ChannelGuildMapping","nested_context":"Nostrum.Cache"},{"id":"Nostrum.Cache.GuildCache","deprecated":false,"group":"Cache","title":"Nostrum.Cache.GuildCache","sections":[{"id":"Writing your own guild cache","anchor":"module-writing-your-own-guild-cache"}],"nodeGroups":[{"name":"Callbacks","nodes":[{"id":"channel_create/2","deprecated":false,"title":"channel_create(id, channel)","anchor":"c:channel_create/2"},{"id":"channel_delete/2","deprecated":false,"title":"channel_delete(id, id)","anchor":"c:channel_delete/2"},{"id":"channel_update/2","deprecated":false,"title":"channel_update(id, channel)","anchor":"c:channel_update/2"},{"id":"child_spec/1","deprecated":false,"title":"child_spec(term)","anchor":"c:child_spec/1"},{"id":"create/1","deprecated":false,"title":"create(map)","anchor":"c:create/1"},{"id":"delete/1","deprecated":false,"title":"delete(id)","anchor":"c:delete/1"},{"id":"emoji_update/2","deprecated":false,"title":"emoji_update(id, emojis)","anchor":"c:emoji_update/2"},{"id":"member_count_down/1","deprecated":false,"title":"member_count_down(id)","anchor":"c:member_count_down/1"},{"id":"member_count_up/1","deprecated":false,"title":"member_count_up(id)","anchor":"c:member_count_up/1"},{"id":"query_handle/0","deprecated":false,"title":"query_handle()","anchor":"c:query_handle/0"},{"id":"role_create/2","deprecated":false,"title":"role_create(id, role)","anchor":"c:role_create/2"},{"id":"role_delete/2","deprecated":false,"title":"role_delete(id, id)","anchor":"c:role_delete/2"},{"id":"role_update/2","deprecated":false,"title":"role_update(id, role)","anchor":"c:role_update/2"},{"id":"stickers_update/2","deprecated":false,"title":"stickers_update(id, stickers)","anchor":"c:stickers_update/2"},{"id":"update/1","deprecated":false,"title":"update(map)","anchor":"c:update/1"},{"id":"voice_state_update/2","deprecated":false,"title":"voice_state_update(id, state)","anchor":"c:voice_state_update/2"},{"id":"wrap_qlc/1","deprecated":false,"title":"wrap_qlc(function)","anchor":"c:wrap_qlc/1"}],"key":"callbacks"},{"name":"Functions","nodes":[{"id":"fold/3","deprecated":false,"title":"fold(acc, reducer, cache \\\\ Nostrum.Cache.GuildCache.ETS)","anchor":"fold/3"},{"id":"get/2","deprecated":false,"title":"get(guild_id, cache \\\\ Nostrum.Cache.GuildCache.ETS)","anchor":"get/2"},{"id":"get!/1","deprecated":false,"title":"get!(guild_id)","anchor":"get!/1"},{"id":"query_handle/0","deprecated":false,"title":"query_handle()","anchor":"query_handle/0"},{"id":"wrap_qlc/2","deprecated":false,"title":"wrap_qlc(cache \\\\ Nostrum.Cache.GuildCache.ETS, fun)","anchor":"wrap_qlc/2"}],"key":"functions"}],"nested_title":".GuildCache","nested_context":"Nostrum.Cache"},{"id":"Nostrum.Cache.Me","deprecated":false,"group":"Cache","title":"Nostrum.Cache.Me","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"child_spec/1","deprecated":false,"title":"child_spec(arg)","anchor":"child_spec/1"},{"id":"get/0","deprecated":false,"title":"get()","anchor":"get/0"},{"id":"start_link/1","deprecated":false,"title":"start_link(list)","anchor":"start_link/1"}],"key":"functions"}],"nested_title":".Me","nested_context":"Nostrum.Cache"},{"id":"Nostrum.Cache.MemberCache","deprecated":false,"group":"Cache","title":"Nostrum.Cache.MemberCache","sections":[],"nodeGroups":[{"name":"Callbacks","nodes":[{"id":"bulk_create/2","deprecated":false,"title":"bulk_create(id, members)","anchor":"c:bulk_create/2"},{"id":"child_spec/1","deprecated":false,"title":"child_spec(term)","anchor":"c:child_spec/1"},{"id":"create/2","deprecated":false,"title":"create(id, member)","anchor":"c:create/2"},{"id":"delete/2","deprecated":false,"title":"delete(id, user_id)","anchor":"c:delete/2"},{"id":"query_handle/0","deprecated":false,"title":"query_handle()","anchor":"c:query_handle/0"},{"id":"update/2","deprecated":false,"title":"update(id, member)","anchor":"c:update/2"},{"id":"wrap_qlc/1","deprecated":false,"title":"wrap_qlc(function)","anchor":"c:wrap_qlc/1"}],"key":"callbacks"},{"name":"Functions","nodes":[{"id":"fold/4","deprecated":false,"title":"fold(acc, guild_id, member_reducer, cache \\\\ Nostrum.Cache.MemberCache.ETS)","anchor":"fold/4"},{"id":"fold_by_user/4","deprecated":false,"title":"fold_by_user(acc, user_id, member_reducer, cache \\\\ Nostrum.Cache.MemberCache.ETS)","anchor":"fold_by_user/4"},{"id":"fold_with_users/4","deprecated":false,"title":"fold_with_users(acc, guild_id, fun, cache \\\\ Nostrum.Cache.MemberCache.ETS)","anchor":"fold_with_users/4"},{"id":"get/3","deprecated":false,"title":"get(guild_id, user_id, cache \\\\ Nostrum.Cache.MemberCache.ETS)","anchor":"get/3"},{"id":"get_with_user/3","deprecated":false,"title":"get_with_user(guild_id, member_id, cache \\\\ Nostrum.Cache.MemberCache.ETS)","anchor":"get_with_user/3"},{"id":"query_handle/0","deprecated":false,"title":"query_handle()","anchor":"query_handle/0"},{"id":"wrap_qlc/2","deprecated":false,"title":"wrap_qlc(cache \\\\ Nostrum.Cache.MemberCache.ETS, fun)","anchor":"wrap_qlc/2"}],"key":"functions"}],"nested_title":".MemberCache","nested_context":"Nostrum.Cache"},{"id":"Nostrum.Cache.MessageCache","deprecated":false,"group":"Cache","title":"Nostrum.Cache.MessageCache","sections":[{"id":"Writing your own message cache","anchor":"module-writing-your-own-message-cache"}],"nodeGroups":[{"name":"Types","nodes":[{"id":"timestamp_like/0","deprecated":false,"title":"timestamp_like()","anchor":"t:timestamp_like/0"}],"key":"types"},{"name":"Callbacks","nodes":[{"id":"bulk_delete/2","deprecated":false,"title":"bulk_delete(id, list)","anchor":"c:bulk_delete/2"},{"id":"channel_delete/1","deprecated":false,"title":"channel_delete(id)","anchor":"c:channel_delete/1"},{"id":"child_spec/1","deprecated":false,"title":"child_spec(term)","anchor":"c:child_spec/1"},{"id":"create/1","deprecated":false,"title":"create(map)","anchor":"c:create/1"},{"id":"delete/2","deprecated":false,"title":"delete(id, id)","anchor":"c:delete/2"},{"id":"get/1","deprecated":false,"title":"get(id)","anchor":"c:get/1"},{"id":"query_handle/0","deprecated":false,"title":"query_handle()","anchor":"c:query_handle/0"},{"id":"update/1","deprecated":false,"title":"update(map)","anchor":"c:update/1"},{"id":"wrap_qlc/1","deprecated":false,"title":"wrap_qlc(function)","anchor":"c:wrap_qlc/1"}],"key":"callbacks"},{"name":"Functions","nodes":[{"id":"get/1","deprecated":false,"title":"get(message_id)","anchor":"get/1"},{"id":"get_by_author/4","deprecated":false,"title":"get_by_author(author_id, after_timestamp \\\\ 0, before_timestamp \\\\ :infinity, cache \\\\ Nostrum.Cache.MessageCache.Noop)","anchor":"get_by_author/4"},{"id":"get_by_channel/4","deprecated":false,"title":"get_by_channel(channel_id, after_timestamp \\\\ 0, before_timestamp \\\\ :infinity, cache \\\\ Nostrum.Cache.MessageCache.Noop)","anchor":"get_by_channel/4"},{"id":"get_by_channel_and_author/5","deprecated":false,"title":"get_by_channel_and_author(channel_id, author_id, after_timestamp \\\\ 0, before_timestamp \\\\ :infinity, cache \\\\ Nostrum.Cache.MessageCache.Noop)","anchor":"get_by_channel_and_author/5"},{"id":"query_handle/0","deprecated":false,"title":"query_handle()","anchor":"query_handle/0"},{"id":"wrap_qlc/2","deprecated":false,"title":"wrap_qlc(cache \\\\ Nostrum.Cache.MessageCache.Noop, fun)","anchor":"wrap_qlc/2"}],"key":"functions"}],"nested_title":".MessageCache","nested_context":"Nostrum.Cache"},{"id":"Nostrum.Cache.PresenceCache","deprecated":false,"group":"Cache","title":"Nostrum.Cache.PresenceCache","sections":[{"id":"Writing your own presence cache","anchor":"module-writing-your-own-presence-cache"}],"nodeGroups":[{"name":"Types","nodes":[{"id":"presence/0","deprecated":false,"title":"presence()","anchor":"t:presence/0"}],"key":"types"},{"name":"Callbacks","nodes":[{"id":"bulk_create/2","deprecated":false,"title":"bulk_create(id, list)","anchor":"c:bulk_create/2"},{"id":"child_spec/1","deprecated":false,"title":"child_spec(term)","anchor":"c:child_spec/1"},{"id":"create/1","deprecated":false,"title":"create(presence)","anchor":"c:create/1"},{"id":"query_handle/0","deprecated":false,"title":"query_handle()","anchor":"c:query_handle/0"},{"id":"update/1","deprecated":false,"title":"update(map)","anchor":"c:update/1"},{"id":"wrap_qlc/1","deprecated":false,"title":"wrap_qlc(function)","anchor":"c:wrap_qlc/1"}],"key":"callbacks"},{"name":"Functions","nodes":[{"id":"get/3","deprecated":false,"title":"get(guild_id, user_id, cache \\\\ Nostrum.Cache.PresenceCache.ETS)","anchor":"get/3"},{"id":"get!/3","deprecated":false,"title":"get!(guild_id, user_id, cache \\\\ Nostrum.Cache.PresenceCache.ETS)","anchor":"get!/3"},{"id":"query_handle/0","deprecated":false,"title":"query_handle()","anchor":"query_handle/0"},{"id":"wrap_qlc/2","deprecated":false,"title":"wrap_qlc(cache \\\\ Nostrum.Cache.PresenceCache.ETS, fun)","anchor":"wrap_qlc/2"}],"key":"functions"}],"nested_title":".PresenceCache","nested_context":"Nostrum.Cache"},{"id":"Nostrum.Cache.UserCache","deprecated":false,"group":"Cache","title":"Nostrum.Cache.UserCache","sections":[],"nodeGroups":[{"name":"Callbacks","nodes":[{"id":"bulk_create/1","deprecated":false,"title":"bulk_create(user_payloads)","anchor":"c:bulk_create/1"},{"id":"child_spec/1","deprecated":false,"title":"child_spec(term)","anchor":"c:child_spec/1"},{"id":"create/1","deprecated":false,"title":"create(payload)","anchor":"c:create/1"},{"id":"delete/1","deprecated":false,"title":"delete(snowflake)","anchor":"c:delete/1"},{"id":"query_handle/0","deprecated":false,"title":"query_handle()","anchor":"c:query_handle/0"},{"id":"update/1","deprecated":false,"title":"update(payload)","anchor":"c:update/1"},{"id":"wrap_qlc/1","deprecated":false,"title":"wrap_qlc(function)","anchor":"c:wrap_qlc/1"}],"key":"callbacks"},{"name":"Functions","nodes":[{"id":"get/2","deprecated":false,"title":"get(user_id, cache \\\\ Nostrum.Cache.UserCache.ETS)","anchor":"get/2"},{"id":"get!/1","deprecated":false,"title":"get!(id)","anchor":"get!/1"},{"id":"query_handle/0","deprecated":false,"title":"query_handle()","anchor":"query_handle/0"},{"id":"wrap_qlc/2","deprecated":false,"title":"wrap_qlc(cache \\\\ Nostrum.Cache.UserCache.ETS, fun)","anchor":"wrap_qlc/2"}],"key":"functions"}],"nested_title":".UserCache","nested_context":"Nostrum.Cache"},{"id":"Nostrum.Struct.ApplicationCommand","deprecated":false,"group":"Structs","title":"Nostrum.Struct.ApplicationCommand","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"application_command_edit_map/0","deprecated":false,"title":"application_command_edit_map()","anchor":"t:application_command_edit_map/0"},{"id":"application_command_map/0","deprecated":false,"title":"application_command_map()","anchor":"t:application_command_map/0"},{"id":"application_command_permission_type/0","deprecated":false,"title":"application_command_permission_type()","anchor":"t:application_command_permission_type/0"},{"id":"application_command_permissions/0","deprecated":false,"title":"application_command_permissions()","anchor":"t:application_command_permissions/0"},{"id":"command_choice/0","deprecated":false,"title":"command_choice()","anchor":"t:command_choice/0"},{"id":"command_description/0","deprecated":false,"title":"command_description()","anchor":"t:command_description/0"},{"id":"command_name/0","deprecated":false,"title":"command_name()","anchor":"t:command_name/0"},{"id":"command_option/0","deprecated":false,"title":"command_option()","anchor":"t:command_option/0"},{"id":"command_option_type/0","deprecated":false,"title":"command_option_type()","anchor":"t:command_option_type/0"},{"id":"command_type/0","deprecated":false,"title":"command_type()","anchor":"t:command_type/0"}],"key":"types"}],"nested_title":".ApplicationCommand","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.ApplicationCommandInteractionData","deprecated":false,"group":"Structs","title":"Nostrum.Struct.ApplicationCommandInteractionData","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"component_type/0","deprecated":false,"title":"component_type()","anchor":"t:component_type/0"},{"id":"components/0","deprecated":false,"title":"components()","anchor":"t:components/0"},{"id":"custom_id/0","deprecated":false,"title":"custom_id()","anchor":"t:custom_id/0"},{"id":"id/0","deprecated":false,"title":"id()","anchor":"t:id/0"},{"id":"interaction_type/0","deprecated":false,"title":"interaction_type()","anchor":"t:interaction_type/0"},{"id":"name/0","deprecated":false,"title":"name()","anchor":"t:name/0"},{"id":"options/0","deprecated":false,"title":"options()","anchor":"t:options/0"},{"id":"resolved/0","deprecated":false,"title":"resolved()","anchor":"t:resolved/0"},{"id":"select_values/0","deprecated":false,"title":"select_values()","anchor":"t:select_values/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"target_id/0","deprecated":false,"title":"target_id()","anchor":"t:target_id/0"}],"key":"types"}],"nested_title":".ApplicationCommandInteractionData","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.ApplicationCommandInteractionDataOption","deprecated":false,"group":"Structs","title":"Nostrum.Struct.ApplicationCommandInteractionDataOption","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"focused/0","deprecated":false,"title":"focused()","anchor":"t:focused/0"},{"id":"name/0","deprecated":false,"title":"name()","anchor":"t:name/0"},{"id":"options/0","deprecated":false,"title":"options()","anchor":"t:options/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"type/0","deprecated":false,"title":"type()","anchor":"t:type/0"},{"id":"value/0","deprecated":false,"title":"value()","anchor":"t:value/0"}],"key":"types"}],"nested_title":".ApplicationCommandInteractionDataOption","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.ApplicationCommandInteractionDataResolved","deprecated":false,"group":"Structs","title":"Nostrum.Struct.ApplicationCommandInteractionDataResolved","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"attachments/0","deprecated":false,"title":"attachments()","anchor":"t:attachments/0"},{"id":"channels/0","deprecated":false,"title":"channels()","anchor":"t:channels/0"},{"id":"members/0","deprecated":false,"title":"members()","anchor":"t:members/0"},{"id":"messages/0","deprecated":false,"title":"messages()","anchor":"t:messages/0"},{"id":"roles/0","deprecated":false,"title":"roles()","anchor":"t:roles/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"users/0","deprecated":false,"title":"users()","anchor":"t:users/0"}],"key":"types"}],"nested_title":".ApplicationCommandInteractionDataResolved","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.AutoModerationRule","deprecated":false,"group":"Structs","title":"Nostrum.Struct.AutoModerationRule","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"actions/0","deprecated":false,"title":"actions()","anchor":"t:actions/0"},{"id":"creator_id/0","deprecated":false,"title":"creator_id()","anchor":"t:creator_id/0"},{"id":"enabled/0","deprecated":false,"title":"enabled()","anchor":"t:enabled/0"},{"id":"event_type/0","deprecated":false,"title":"event_type()","anchor":"t:event_type/0"},{"id":"exempt_channels/0","deprecated":false,"title":"exempt_channels()","anchor":"t:exempt_channels/0"},{"id":"exempt_roles/0","deprecated":false,"title":"exempt_roles()","anchor":"t:exempt_roles/0"},{"id":"guild_id/0","deprecated":false,"title":"guild_id()","anchor":"t:guild_id/0"},{"id":"id/0","deprecated":false,"title":"id()","anchor":"t:id/0"},{"id":"name/0","deprecated":false,"title":"name()","anchor":"t:name/0"},{"id":"preset_values/0","deprecated":false,"title":"preset_values()","anchor":"t:preset_values/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"trigger_metadata/0","deprecated":false,"title":"trigger_metadata()","anchor":"t:trigger_metadata/0"},{"id":"trigger_type/0","deprecated":false,"title":"trigger_type()","anchor":"t:trigger_type/0"}],"key":"types"}],"nested_title":".AutoModerationRule","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.AutoModerationRule.Action","deprecated":false,"group":"Structs","title":"Nostrum.Struct.AutoModerationRule.Action","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"action_type/0","deprecated":false,"title":"action_type()","anchor":"t:action_type/0"},{"id":"metadata/0","deprecated":false,"title":"metadata()","anchor":"t:metadata/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"}],"key":"types"}],"nested_title":".AutoModerationRule.Action","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.AutoModerationRule.ActionMetadata","deprecated":false,"group":"Structs","title":"Nostrum.Struct.AutoModerationRule.ActionMetadata","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"send_alert_message_metadata/0","deprecated":false,"title":"send_alert_message_metadata()","anchor":"t:send_alert_message_metadata/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"timeout_metadata/0","deprecated":false,"title":"timeout_metadata()","anchor":"t:timeout_metadata/0"}],"key":"types"}],"nested_title":".AutoModerationRule.ActionMetadata","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.AutoModerationRule.TriggerMetadata","deprecated":false,"group":"Structs","title":"Nostrum.Struct.AutoModerationRule.TriggerMetadata","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"keyword_metadata/0","deprecated":false,"title":"keyword_metadata()","anchor":"t:keyword_metadata/0"},{"id":"preset_value_metadata/0","deprecated":false,"title":"preset_value_metadata()","anchor":"t:preset_value_metadata/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"}],"key":"types"}],"nested_title":".AutoModerationRule.TriggerMetadata","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.Channel","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Channel","sections":[{"id":"Channel Struct","anchor":"module-channel-struct"},{"id":"Channel Caching","anchor":"module-channel-caching"},{"id":"Helper Functions","anchor":"module-helper-functions"},{"id":"Api Functions","anchor":"module-api-functions"},{"id":"Channel Types","anchor":"module-channel-types"}],"nodeGroups":[{"name":"Types","nodes":[{"id":"application_id/0","deprecated":false,"title":"application_id()","anchor":"t:application_id/0"},{"id":"applied_tags/0","deprecated":false,"title":"applied_tags()","anchor":"t:applied_tags/0"},{"id":"archive_timestamp/0","deprecated":false,"title":"archive_timestamp()","anchor":"t:archive_timestamp/0"},{"id":"archived/0","deprecated":false,"title":"archived()","anchor":"t:archived/0"},{"id":"auto_archive_duration/0","deprecated":false,"title":"auto_archive_duration()","anchor":"t:auto_archive_duration/0"},{"id":"bitrate/0","deprecated":false,"title":"bitrate()","anchor":"t:bitrate/0"},{"id":"channel_mention/0","deprecated":false,"title":"channel_mention()","anchor":"t:channel_mention/0"},{"id":"default_auto_archive_duration/0","deprecated":false,"title":"default_auto_archive_duration()","anchor":"t:default_auto_archive_duration/0"},{"id":"default_reaction_emoji/0","deprecated":false,"title":"default_reaction_emoji()","anchor":"t:default_reaction_emoji/0"},{"id":"default_thread_rate_limit_per_user/0","deprecated":false,"title":"default_thread_rate_limit_per_user()","anchor":"t:default_thread_rate_limit_per_user/0"},{"id":"dm_channel/0","deprecated":false,"title":"dm_channel()","anchor":"t:dm_channel/0"},{"id":"flags/0","deprecated":false,"title":"flags()","anchor":"t:flags/0"},{"id":"forum_tag/0","deprecated":false,"title":"forum_tag()","anchor":"t:forum_tag/0"},{"id":"group_dm_channel/0","deprecated":false,"title":"group_dm_channel()","anchor":"t:group_dm_channel/0"},{"id":"guild_category_channel/0","deprecated":false,"title":"guild_category_channel()","anchor":"t:guild_category_channel/0"},{"id":"guild_channel/0","deprecated":true,"title":"guild_channel()","anchor":"t:guild_channel/0"},{"id":"guild_forum_channel/0","deprecated":false,"title":"guild_forum_channel()","anchor":"t:guild_forum_channel/0"},{"id":"guild_id/0","deprecated":false,"title":"guild_id()","anchor":"t:guild_id/0"},{"id":"guild_news_channel/0","deprecated":false,"title":"guild_news_channel()","anchor":"t:guild_news_channel/0"},{"id":"guild_news_thread_channel/0","deprecated":false,"title":"guild_news_thread_channel()","anchor":"t:guild_news_thread_channel/0"},{"id":"guild_private_thread_channel/0","deprecated":false,"title":"guild_private_thread_channel()","anchor":"t:guild_private_thread_channel/0"},{"id":"guild_public_thread_channel/0","deprecated":false,"title":"guild_public_thread_channel()","anchor":"t:guild_public_thread_channel/0"},{"id":"guild_stage_voice_channel/0","deprecated":false,"title":"guild_stage_voice_channel()","anchor":"t:guild_stage_voice_channel/0"},{"id":"guild_store_channel/0","deprecated":false,"title":"guild_store_channel()","anchor":"t:guild_store_channel/0"},{"id":"guild_text_channel/0","deprecated":false,"title":"guild_text_channel()","anchor":"t:guild_text_channel/0"},{"id":"guild_voice_channel/0","deprecated":false,"title":"guild_voice_channel()","anchor":"t:guild_voice_channel/0"},{"id":"icon/0","deprecated":false,"title":"icon()","anchor":"t:icon/0"},{"id":"id/0","deprecated":false,"title":"id()","anchor":"t:id/0"},{"id":"join_timestamp/0","deprecated":false,"title":"join_timestamp()","anchor":"t:join_timestamp/0"},{"id":"last_message_id/0","deprecated":false,"title":"last_message_id()","anchor":"t:last_message_id/0"},{"id":"last_pin_timestamp/0","deprecated":false,"title":"last_pin_timestamp()","anchor":"t:last_pin_timestamp/0"},{"id":"locked/0","deprecated":false,"title":"locked()","anchor":"t:locked/0"},{"id":"member/0","deprecated":false,"title":"member()","anchor":"t:member/0"},{"id":"member_count/0","deprecated":false,"title":"member_count()","anchor":"t:member_count/0"},{"id":"message_count/0","deprecated":false,"title":"message_count()","anchor":"t:message_count/0"},{"id":"name/0","deprecated":false,"title":"name()","anchor":"t:name/0"},{"id":"newly_created/0","deprecated":false,"title":"newly_created()","anchor":"t:newly_created/0"},{"id":"nsfw/0","deprecated":false,"title":"nsfw()","anchor":"t:nsfw/0"},{"id":"owner_id/0","deprecated":false,"title":"owner_id()","anchor":"t:owner_id/0"},{"id":"parent_id/0","deprecated":false,"title":"parent_id()","anchor":"t:parent_id/0"},{"id":"permission_overwrites/0","deprecated":false,"title":"permission_overwrites()","anchor":"t:permission_overwrites/0"},{"id":"permissions/0","deprecated":false,"title":"permissions()","anchor":"t:permissions/0"},{"id":"position/0","deprecated":false,"title":"position()","anchor":"t:position/0"},{"id":"rate_limit_per_user/0","deprecated":false,"title":"rate_limit_per_user()","anchor":"t:rate_limit_per_user/0"},{"id":"recipients/0","deprecated":false,"title":"recipients()","anchor":"t:recipients/0"},{"id":"rtc_region/0","deprecated":false,"title":"rtc_region()","anchor":"t:rtc_region/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"text_channel/0","deprecated":true,"title":"text_channel()","anchor":"t:text_channel/0"},{"id":"thread_metadata/0","deprecated":false,"title":"thread_metadata()","anchor":"t:thread_metadata/0"},{"id":"topic/0","deprecated":false,"title":"topic()","anchor":"t:topic/0"},{"id":"type/0","deprecated":false,"title":"type()","anchor":"t:type/0"},{"id":"user_id/0","deprecated":false,"title":"user_id()","anchor":"t:user_id/0"},{"id":"user_limit/0","deprecated":false,"title":"user_limit()","anchor":"t:user_limit/0"},{"id":"video_quality_mode/0","deprecated":false,"title":"video_quality_mode()","anchor":"t:video_quality_mode/0"},{"id":"voice_channel/0","deprecated":true,"title":"voice_channel()","anchor":"t:voice_channel/0"}],"key":"types"},{"name":"Functions","nodes":[{"id":"mention/1","deprecated":false,"title":"mention(channel)","anchor":"mention/1"}],"key":"functions"}],"nested_title":".Channel","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.Component","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Component","sections":[{"id":"Action Row","anchor":"module-action-row"},{"id":"Buttons","anchor":"module-buttons"},{"id":"Link Buttons","anchor":"module-link-buttons"},{"id":"Interaction Buttons ( Non-link Buttons )","anchor":"module-interaction-buttons-non-link-buttons"},{"id":"🐼 Emoji Buttons","anchor":"module-emoji-buttons"},{"id":"Select Menu","anchor":"module-select-menu"},{"id":"Text Input","anchor":"module-text-input"}],"nodeGroups":[{"name":"Types","nodes":[{"id":"components/0","deprecated":false,"title":"components()","anchor":"t:components/0"},{"id":"custom_id/0","deprecated":false,"title":"custom_id()","anchor":"t:custom_id/0"},{"id":"disabled/0","deprecated":false,"title":"disabled()","anchor":"t:disabled/0"},{"id":"emoji/0","deprecated":false,"title":"emoji()","anchor":"t:emoji/0"},{"id":"label/0","deprecated":false,"title":"label()","anchor":"t:label/0"},{"id":"max_length/0","deprecated":false,"title":"max_length()","anchor":"t:max_length/0"},{"id":"max_values/0","deprecated":false,"title":"max_values()","anchor":"t:max_values/0"},{"id":"min_length/0","deprecated":false,"title":"min_length()","anchor":"t:min_length/0"},{"id":"min_values/0","deprecated":false,"title":"min_values()","anchor":"t:min_values/0"},{"id":"options/0","deprecated":false,"title":"options()","anchor":"t:options/0"},{"id":"placeholder/0","deprecated":false,"title":"placeholder()","anchor":"t:placeholder/0"},{"id":"required/0","deprecated":false,"title":"required()","anchor":"t:required/0"},{"id":"style/0","deprecated":false,"title":"style()","anchor":"t:style/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"type/0","deprecated":false,"title":"type()","anchor":"t:type/0"},{"id":"url/0","deprecated":false,"title":"url()","anchor":"t:url/0"},{"id":"value/0","deprecated":false,"title":"value()","anchor":"t:value/0"}],"key":"types"},{"name":"Callbacks","nodes":[{"id":"new/1","deprecated":false,"title":"new(opts)","anchor":"c:new/1"},{"id":"update/2","deprecated":false,"title":"update(t, opts)","anchor":"c:update/2"}],"key":"callbacks"},{"name":"Functions","nodes":[{"id":"to_struct/1","deprecated":false,"title":"to_struct(map)","anchor":"to_struct/1"}],"key":"functions"}],"nested_title":".Component","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.Component.ActionRow","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Component.ActionRow","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"}],"key":"types"},{"name":"Functions","nodes":[{"id":"action_row/1","deprecated":false,"title":"action_row(opts \\\\ [])","anchor":"action_row/1"},{"id":"append/2","deprecated":false,"title":"append(action_row, button)","anchor":"append/2"},{"id":"append_lazy/2","deprecated":false,"title":"append_lazy(action_row, button)","anchor":"append_lazy/2"},{"id":"flatten/1","deprecated":false,"title":"flatten(map)","anchor":"flatten/1"},{"id":"put/2","deprecated":false,"title":"put(component, select_menu)","anchor":"put/2"},{"id":"put_new/2","deprecated":false,"title":"put_new(component, list_of_components)","anchor":"put_new/2"}],"key":"functions"}],"nested_title":".Component.ActionRow","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.Component.Button","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Component.Button","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"interaction_button/0","deprecated":false,"title":"interaction_button()","anchor":"t:interaction_button/0"},{"id":"link_button/0","deprecated":false,"title":"link_button()","anchor":"t:link_button/0"},{"id":"opt/0","deprecated":false,"title":"opt()","anchor":"t:opt/0"},{"id":"opts/0","deprecated":false,"title":"opts()","anchor":"t:opts/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"}],"key":"types"},{"name":"Functions","nodes":[{"id":"button/1","deprecated":false,"title":"button(opts \\\\ [])","anchor":"button/1"},{"id":"disable/2","deprecated":false,"title":"disable(button, disabled)","anchor":"disable/2"},{"id":"flatten/1","deprecated":false,"title":"flatten(map)","anchor":"flatten/1"},{"id":"interaction_button/3","deprecated":false,"title":"interaction_button(label, custom_id, opts \\\\ [])","anchor":"interaction_button/3"},{"id":"link_button/3","deprecated":false,"title":"link_button(label, url, opts \\\\ [])","anchor":"link_button/3"},{"id":"put_style/2","deprecated":false,"title":"put_style(button, style)","anchor":"put_style/2"},{"id":"toggle/1","deprecated":false,"title":"toggle(button)","anchor":"toggle/1"}],"key":"functions"}],"nested_title":".Component.Button","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.Component.Option","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Component.Option","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"default/0","deprecated":false,"title":"default()","anchor":"t:default/0"},{"id":"description/0","deprecated":false,"title":"description()","anchor":"t:description/0"},{"id":"emoji/0","deprecated":false,"title":"emoji()","anchor":"t:emoji/0"},{"id":"label/0","deprecated":false,"title":"label()","anchor":"t:label/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"value/0","deprecated":false,"title":"value()","anchor":"t:value/0"}],"key":"types"}],"nested_title":".Component.Option","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.Component.SelectMenu","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Component.SelectMenu","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"opt/0","deprecated":false,"title":"opt()","anchor":"t:opt/0"},{"id":"opts/0","deprecated":false,"title":"opts()","anchor":"t:opts/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"}],"key":"types"},{"name":"Functions","nodes":[{"id":"flatten/1","deprecated":false,"title":"flatten(map)","anchor":"flatten/1"},{"id":"select_menu/2","deprecated":false,"title":"select_menu(custom_id, opts \\\\ [])","anchor":"select_menu/2"}],"key":"functions"}],"nested_title":".Component.SelectMenu","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.Component.TextInput","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Component.TextInput","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"opt/0","deprecated":false,"title":"opt()","anchor":"t:opt/0"},{"id":"opts/0","deprecated":false,"title":"opts()","anchor":"t:opts/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"}],"key":"types"},{"name":"Functions","nodes":[{"id":"flatten/1","deprecated":false,"title":"flatten(map)","anchor":"flatten/1"},{"id":"put_style/2","deprecated":false,"title":"put_style(text_input, style)","anchor":"put_style/2"},{"id":"text_input/3","deprecated":false,"title":"text_input(label, custom_id, opts \\\\ [])","anchor":"text_input/3"}],"key":"functions"}],"nested_title":".Component.TextInput","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.Embed","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Embed","sections":[{"id":"Building Embeds","anchor":"module-building-embeds"},{"id":"Using structs","anchor":"module-using-structs"}],"nodeGroups":[{"name":"Types","nodes":[{"id":"author/0","deprecated":false,"title":"author()","anchor":"t:author/0"},{"id":"color/0","deprecated":false,"title":"color()","anchor":"t:color/0"},{"id":"description/0","deprecated":false,"title":"description()","anchor":"t:description/0"},{"id":"fields/0","deprecated":false,"title":"fields()","anchor":"t:fields/0"},{"id":"footer/0","deprecated":false,"title":"footer()","anchor":"t:footer/0"},{"id":"image/0","deprecated":false,"title":"image()","anchor":"t:image/0"},{"id":"provider/0","deprecated":false,"title":"provider()","anchor":"t:provider/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"thumbnail/0","deprecated":false,"title":"thumbnail()","anchor":"t:thumbnail/0"},{"id":"timestamp/0","deprecated":false,"title":"timestamp()","anchor":"t:timestamp/0"},{"id":"title/0","deprecated":false,"title":"title()","anchor":"t:title/0"},{"id":"type/0","deprecated":false,"title":"type()","anchor":"t:type/0"},{"id":"url/0","deprecated":false,"title":"url()","anchor":"t:url/0"},{"id":"video/0","deprecated":false,"title":"video()","anchor":"t:video/0"}],"key":"types"},{"name":"Callbacks","nodes":[{"id":"author/1","deprecated":false,"title":"author(struct)","anchor":"c:author/1"},{"id":"color/1","deprecated":false,"title":"color(struct)","anchor":"c:color/1"},{"id":"description/1","deprecated":false,"title":"description(struct)","anchor":"c:description/1"},{"id":"fields/1","deprecated":false,"title":"fields(struct)","anchor":"c:fields/1"},{"id":"footer/1","deprecated":false,"title":"footer(struct)","anchor":"c:footer/1"},{"id":"image/1","deprecated":false,"title":"image(struct)","anchor":"c:image/1"},{"id":"thumbnail/1","deprecated":false,"title":"thumbnail(struct)","anchor":"c:thumbnail/1"},{"id":"timestamp/1","deprecated":false,"title":"timestamp(struct)","anchor":"c:timestamp/1"},{"id":"title/1","deprecated":false,"title":"title(struct)","anchor":"c:title/1"},{"id":"url/1","deprecated":false,"title":"url(struct)","anchor":"c:url/1"}],"key":"callbacks"},{"name":"Functions","nodes":[{"id":"from/1","deprecated":false,"title":"from(struct)","anchor":"from/1"},{"id":"put_author/4","deprecated":false,"title":"put_author(embed, name, url, icon_url)","anchor":"put_author/4"},{"id":"put_color/2","deprecated":false,"title":"put_color(embed, value)","anchor":"put_color/2"},{"id":"put_description/2","deprecated":false,"title":"put_description(embed, value)","anchor":"put_description/2"},{"id":"put_field/4","deprecated":false,"title":"put_field(embed, name, value, inline \\\\ nil)","anchor":"put_field/4"},{"id":"put_footer/3","deprecated":false,"title":"put_footer(embed, text, icon_url \\\\ nil)","anchor":"put_footer/3"},{"id":"put_image/2","deprecated":false,"title":"put_image(embed, url)","anchor":"put_image/2"},{"id":"put_thumbnail/2","deprecated":false,"title":"put_thumbnail(embed, url)","anchor":"put_thumbnail/2"},{"id":"put_timestamp/2","deprecated":false,"title":"put_timestamp(embed, value)","anchor":"put_timestamp/2"},{"id":"put_title/2","deprecated":false,"title":"put_title(embed, value)","anchor":"put_title/2"},{"id":"put_url/2","deprecated":false,"title":"put_url(embed, value)","anchor":"put_url/2"}],"key":"functions"}],"nested_title":".Embed","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.Embed.Author","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Embed.Author","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"icon_url/0","deprecated":false,"title":"icon_url()","anchor":"t:icon_url/0"},{"id":"name/0","deprecated":false,"title":"name()","anchor":"t:name/0"},{"id":"proxy_icon_url/0","deprecated":false,"title":"proxy_icon_url()","anchor":"t:proxy_icon_url/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"url/0","deprecated":false,"title":"url()","anchor":"t:url/0"}],"key":"types"}],"nested_title":".Embed.Author","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.Embed.Field","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Embed.Field","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"inline/0","deprecated":false,"title":"inline()","anchor":"t:inline/0"},{"id":"name/0","deprecated":false,"title":"name()","anchor":"t:name/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"value/0","deprecated":false,"title":"value()","anchor":"t:value/0"}],"key":"types"}],"nested_title":".Embed.Field","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.Embed.Footer","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Embed.Footer","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"icon_url/0","deprecated":false,"title":"icon_url()","anchor":"t:icon_url/0"},{"id":"proxy_icon_url/0","deprecated":false,"title":"proxy_icon_url()","anchor":"t:proxy_icon_url/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"text/0","deprecated":false,"title":"text()","anchor":"t:text/0"}],"key":"types"}],"nested_title":".Embed.Footer","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.Embed.Image","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Embed.Image","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"height/0","deprecated":false,"title":"height()","anchor":"t:height/0"},{"id":"proxy_url/0","deprecated":false,"title":"proxy_url()","anchor":"t:proxy_url/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"url/0","deprecated":false,"title":"url()","anchor":"t:url/0"},{"id":"width/0","deprecated":false,"title":"width()","anchor":"t:width/0"}],"key":"types"}],"nested_title":".Embed.Image","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.Embed.Provider","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Embed.Provider","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"name/0","deprecated":false,"title":"name()","anchor":"t:name/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"url/0","deprecated":false,"title":"url()","anchor":"t:url/0"}],"key":"types"}],"nested_title":".Embed.Provider","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.Embed.Thumbnail","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Embed.Thumbnail","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"height/0","deprecated":false,"title":"height()","anchor":"t:height/0"},{"id":"proxy_url/0","deprecated":false,"title":"proxy_url()","anchor":"t:proxy_url/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"url/0","deprecated":false,"title":"url()","anchor":"t:url/0"},{"id":"width/0","deprecated":false,"title":"width()","anchor":"t:width/0"}],"key":"types"}],"nested_title":".Embed.Thumbnail","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.Embed.Video","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Embed.Video","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"height/0","deprecated":false,"title":"height()","anchor":"t:height/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"url/0","deprecated":false,"title":"url()","anchor":"t:url/0"},{"id":"width/0","deprecated":false,"title":"width()","anchor":"t:width/0"}],"key":"types"}],"nested_title":".Embed.Video","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.Emoji","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Emoji","sections":[{"id":"Mentioning Emojis in Messages","anchor":"module-mentioning-emojis-in-messages"},{"id":"Using Emojis in the Api","anchor":"module-using-emojis-in-the-api"}],"nodeGroups":[{"name":"Types","nodes":[{"id":"animated/0","deprecated":false,"title":"animated()","anchor":"t:animated/0"},{"id":"api_name/0","deprecated":false,"title":"api_name()","anchor":"t:api_name/0"},{"id":"id/0","deprecated":false,"title":"id()","anchor":"t:id/0"},{"id":"managed/0","deprecated":false,"title":"managed()","anchor":"t:managed/0"},{"id":"name/0","deprecated":false,"title":"name()","anchor":"t:name/0"},{"id":"require_colons/0","deprecated":false,"title":"require_colons()","anchor":"t:require_colons/0"},{"id":"roles/0","deprecated":false,"title":"roles()","anchor":"t:roles/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"user/0","deprecated":false,"title":"user()","anchor":"t:user/0"}],"key":"types"},{"name":"Functions","nodes":[{"id":"api_name/1","deprecated":false,"title":"api_name(emoji)","anchor":"api_name/1"},{"id":"image_url/1","deprecated":false,"title":"image_url(emoji)","anchor":"image_url/1"},{"id":"mention/1","deprecated":false,"title":"mention(emoji)","anchor":"mention/1"}],"key":"functions"}],"nested_title":".Emoji","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.Guild","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Guild","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"afk_channel_id/0","deprecated":false,"title":"afk_channel_id()","anchor":"t:afk_channel_id/0"},{"id":"afk_timeout/0","deprecated":false,"title":"afk_timeout()","anchor":"t:afk_timeout/0"},{"id":"application_id/0","deprecated":false,"title":"application_id()","anchor":"t:application_id/0"},{"id":"available_guild/0","deprecated":false,"title":"available_guild()","anchor":"t:available_guild/0"},{"id":"banner/0","deprecated":false,"title":"banner()","anchor":"t:banner/0"},{"id":"channels/0","deprecated":false,"title":"channels()","anchor":"t:channels/0"},{"id":"default_message_notifications/0","deprecated":false,"title":"default_message_notifications()","anchor":"t:default_message_notifications/0"},{"id":"description/0","deprecated":false,"title":"description()","anchor":"t:description/0"},{"id":"discovery_splash/0","deprecated":false,"title":"discovery_splash()","anchor":"t:discovery_splash/0"},{"id":"emojis/0","deprecated":false,"title":"emojis()","anchor":"t:emojis/0"},{"id":"explicit_content_filter/0","deprecated":false,"title":"explicit_content_filter()","anchor":"t:explicit_content_filter/0"},{"id":"features/0","deprecated":false,"title":"features()","anchor":"t:features/0"},{"id":"guild_scheduled_events/0","deprecated":false,"title":"guild_scheduled_events()","anchor":"t:guild_scheduled_events/0"},{"id":"icon/0","deprecated":false,"title":"icon()","anchor":"t:icon/0"},{"id":"id/0","deprecated":false,"title":"id()","anchor":"t:id/0"},{"id":"joined_at/0","deprecated":false,"title":"joined_at()","anchor":"t:joined_at/0"},{"id":"large/0","deprecated":false,"title":"large()","anchor":"t:large/0"},{"id":"max_members/0","deprecated":false,"title":"max_members()","anchor":"t:max_members/0"},{"id":"max_presences/0","deprecated":false,"title":"max_presences()","anchor":"t:max_presences/0"},{"id":"max_stage_video_channel_users/0","deprecated":false,"title":"max_stage_video_channel_users()","anchor":"t:max_stage_video_channel_users/0"},{"id":"max_video_channel_users/0","deprecated":false,"title":"max_video_channel_users()","anchor":"t:max_video_channel_users/0"},{"id":"member_count/0","deprecated":false,"title":"member_count()","anchor":"t:member_count/0"},{"id":"mfa_level/0","deprecated":false,"title":"mfa_level()","anchor":"t:mfa_level/0"},{"id":"name/0","deprecated":false,"title":"name()","anchor":"t:name/0"},{"id":"nsfw_level/0","deprecated":false,"title":"nsfw_level()","anchor":"t:nsfw_level/0"},{"id":"owner_id/0","deprecated":false,"title":"owner_id()","anchor":"t:owner_id/0"},{"id":"preferred_locale/0","deprecated":false,"title":"preferred_locale()","anchor":"t:preferred_locale/0"},{"id":"premium_progress_bar_enabled/0","deprecated":false,"title":"premium_progress_bar_enabled()","anchor":"t:premium_progress_bar_enabled/0"},{"id":"premium_subscription_count/0","deprecated":false,"title":"premium_subscription_count()","anchor":"t:premium_subscription_count/0"},{"id":"premium_tier/0","deprecated":false,"title":"premium_tier()","anchor":"t:premium_tier/0"},{"id":"public_updates_channel_id/0","deprecated":false,"title":"public_updates_channel_id()","anchor":"t:public_updates_channel_id/0"},{"id":"region/0","deprecated":false,"title":"region()","anchor":"t:region/0"},{"id":"rest_guild/0","deprecated":false,"title":"rest_guild()","anchor":"t:rest_guild/0"},{"id":"roles/0","deprecated":false,"title":"roles()","anchor":"t:roles/0"},{"id":"rules_channel_id/0","deprecated":false,"title":"rules_channel_id()","anchor":"t:rules_channel_id/0"},{"id":"safety_alerts_channel_id/0","deprecated":false,"title":"safety_alerts_channel_id()","anchor":"t:safety_alerts_channel_id/0"},{"id":"splash/0","deprecated":false,"title":"splash()","anchor":"t:splash/0"},{"id":"stickers/0","deprecated":false,"title":"stickers()","anchor":"t:stickers/0"},{"id":"system_channel_flags/0","deprecated":false,"title":"system_channel_flags()","anchor":"t:system_channel_flags/0"},{"id":"system_channel_id/0","deprecated":false,"title":"system_channel_id()","anchor":"t:system_channel_id/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"threads/0","deprecated":false,"title":"threads()","anchor":"t:threads/0"},{"id":"unavailable/0","deprecated":false,"title":"unavailable()","anchor":"t:unavailable/0"},{"id":"unavailable_guild/0","deprecated":false,"title":"unavailable_guild()","anchor":"t:unavailable_guild/0"},{"id":"user_guild/0","deprecated":false,"title":"user_guild()","anchor":"t:user_guild/0"},{"id":"vanity_url_code/0","deprecated":false,"title":"vanity_url_code()","anchor":"t:vanity_url_code/0"},{"id":"verification_level/0","deprecated":false,"title":"verification_level()","anchor":"t:verification_level/0"},{"id":"voice_states/0","deprecated":false,"title":"voice_states()","anchor":"t:voice_states/0"},{"id":"welcome_screen/0","deprecated":false,"title":"welcome_screen()","anchor":"t:welcome_screen/0"},{"id":"widget_channel_id/0","deprecated":false,"title":"widget_channel_id()","anchor":"t:widget_channel_id/0"},{"id":"widget_enabled/0","deprecated":false,"title":"widget_enabled()","anchor":"t:widget_enabled/0"}],"key":"types"},{"name":"Functions","nodes":[{"id":"banner_url/2","deprecated":false,"title":"banner_url(guild, image_format \\\\ \"webp\")","anchor":"banner_url/2"},{"id":"discovery_splash_url/2","deprecated":false,"title":"discovery_splash_url(guild, image_format \\\\ \"webp\")","anchor":"discovery_splash_url/2"},{"id":"icon_url/2","deprecated":false,"title":"icon_url(guild, image_format \\\\ \"webp\")","anchor":"icon_url/2"},{"id":"splash_url/2","deprecated":false,"title":"splash_url(guild, image_format \\\\ \"webp\")","anchor":"splash_url/2"}],"key":"functions"}],"nested_title":".Guild","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.Guild.AuditLog","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Guild.AuditLog","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"entries/0","deprecated":false,"title":"entries()","anchor":"t:entries/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"users/0","deprecated":false,"title":"users()","anchor":"t:users/0"},{"id":"webhooks/0","deprecated":false,"title":"webhooks()","anchor":"t:webhooks/0"}],"key":"types"}],"nested_title":".Guild.AuditLog","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.Guild.AuditLogEntry","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Guild.AuditLogEntry","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"action_type/0","deprecated":false,"title":"action_type()","anchor":"t:action_type/0"},{"id":"changes/0","deprecated":false,"title":"changes()","anchor":"t:changes/0"},{"id":"id/0","deprecated":false,"title":"id()","anchor":"t:id/0"},{"id":"options/0","deprecated":false,"title":"options()","anchor":"t:options/0"},{"id":"reason/0","deprecated":false,"title":"reason()","anchor":"t:reason/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"target_id/0","deprecated":false,"title":"target_id()","anchor":"t:target_id/0"},{"id":"user_id/0","deprecated":false,"title":"user_id()","anchor":"t:user_id/0"}],"key":"types"}],"nested_title":".Guild.AuditLogEntry","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.Guild.Ban","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Guild.Ban","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"reason/0","deprecated":false,"title":"reason()","anchor":"t:reason/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"user/0","deprecated":false,"title":"user()","anchor":"t:user/0"}],"key":"types"}],"nested_title":".Guild.Ban","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.Guild.Integration","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Guild.Integration","sections":[{"id":"References","anchor":"module-references"}],"nodeGroups":[{"name":"Types","nodes":[{"id":"account/0","deprecated":false,"title":"account()","anchor":"t:account/0"},{"id":"application/0","deprecated":false,"title":"application()","anchor":"t:application/0"},{"id":"enabled/0","deprecated":false,"title":"enabled()","anchor":"t:enabled/0"},{"id":"guild_id/0","deprecated":false,"title":"guild_id()","anchor":"t:guild_id/0"},{"id":"id/0","deprecated":false,"title":"id()","anchor":"t:id/0"},{"id":"name/0","deprecated":false,"title":"name()","anchor":"t:name/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"type/0","deprecated":false,"title":"type()","anchor":"t:type/0"}],"key":"types"}],"nested_title":".Guild.Integration","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.Guild.Integration.Account","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Guild.Integration.Account","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"id/0","deprecated":false,"title":"id()","anchor":"t:id/0"},{"id":"name/0","deprecated":false,"title":"name()","anchor":"t:name/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"}],"key":"types"}],"nested_title":".Guild.Integration.Account","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.Guild.Integration.Application","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Guild.Integration.Application","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"bot/0","deprecated":false,"title":"bot()","anchor":"t:bot/0"},{"id":"description/0","deprecated":false,"title":"description()","anchor":"t:description/0"},{"id":"icon/0","deprecated":false,"title":"icon()","anchor":"t:icon/0"},{"id":"id/0","deprecated":false,"title":"id()","anchor":"t:id/0"},{"id":"name/0","deprecated":false,"title":"name()","anchor":"t:name/0"},{"id":"summary/0","deprecated":false,"title":"summary()","anchor":"t:summary/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"}],"key":"types"}],"nested_title":".Guild.Integration.Application","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.Guild.Member","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Guild.Member","sections":[{"id":"Mentioning Members in Messages","anchor":"module-mentioning-members-in-messages"}],"nodeGroups":[{"name":"Types","nodes":[{"id":"avatar/0","deprecated":false,"title":"avatar()","anchor":"t:avatar/0"},{"id":"communication_disabled_until/0","deprecated":false,"title":"communication_disabled_until()","anchor":"t:communication_disabled_until/0"},{"id":"deaf/0","deprecated":false,"title":"deaf()","anchor":"t:deaf/0"},{"id":"flags/0","deprecated":false,"title":"flags()","anchor":"t:flags/0"},{"id":"joined_at/0","deprecated":false,"title":"joined_at()","anchor":"t:joined_at/0"},{"id":"mute/0","deprecated":false,"title":"mute()","anchor":"t:mute/0"},{"id":"nick/0","deprecated":false,"title":"nick()","anchor":"t:nick/0"},{"id":"pending/0","deprecated":false,"title":"pending()","anchor":"t:pending/0"},{"id":"premium_since/0","deprecated":false,"title":"premium_since()","anchor":"t:premium_since/0"},{"id":"roles/0","deprecated":false,"title":"roles()","anchor":"t:roles/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"user_id/0","deprecated":false,"title":"user_id()","anchor":"t:user_id/0"}],"key":"types"},{"name":"Functions","nodes":[{"id":"avatar_url/3","deprecated":false,"title":"avatar_url(member, guild_id, image_format \\\\ \"png\")","anchor":"avatar_url/3"},{"id":"guild_channel_permissions/3","deprecated":false,"title":"guild_channel_permissions(member, guild, channel_id)","anchor":"guild_channel_permissions/3"},{"id":"guild_permissions/2","deprecated":false,"title":"guild_permissions(member, guild)","anchor":"guild_permissions/2"},{"id":"mention/1","deprecated":false,"title":"mention(member)","anchor":"mention/1"},{"id":"top_role/2","deprecated":false,"title":"top_role(member, guild)","anchor":"top_role/2"}],"key":"functions"}],"nested_title":".Guild.Member","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.Guild.Member.Flags","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Guild.Member.Flags","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"bypasses_verification/0","deprecated":false,"title":"bypasses_verification()","anchor":"t:bypasses_verification/0"},{"id":"completed_onboarding/0","deprecated":false,"title":"completed_onboarding()","anchor":"t:completed_onboarding/0"},{"id":"did_rejoin/0","deprecated":false,"title":"did_rejoin()","anchor":"t:did_rejoin/0"},{"id":"flags/0","deprecated":false,"title":"flags()","anchor":"t:flags/0"},{"id":"started_onboarding/0","deprecated":false,"title":"started_onboarding()","anchor":"t:started_onboarding/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"}],"key":"types"},{"name":"Functions","nodes":[{"id":"from_integer/1","deprecated":false,"title":"from_integer(flag_value)","anchor":"from_integer/1"},{"id":"to_integer/1","deprecated":false,"title":"to_integer(flag_struct)","anchor":"to_integer/1"}],"key":"functions"}],"nested_title":".Guild.Member.Flags","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.Guild.Role","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Guild.Role","sections":[{"id":"Mentioning Roles in Messages","anchor":"module-mentioning-roles-in-messages"}],"nodeGroups":[{"name":"Types","nodes":[{"id":"color/0","deprecated":false,"title":"color()","anchor":"t:color/0"},{"id":"hoist/0","deprecated":false,"title":"hoist()","anchor":"t:hoist/0"},{"id":"icon/0","deprecated":false,"title":"icon()","anchor":"t:icon/0"},{"id":"id/0","deprecated":false,"title":"id()","anchor":"t:id/0"},{"id":"managed/0","deprecated":false,"title":"managed()","anchor":"t:managed/0"},{"id":"mentionable/0","deprecated":false,"title":"mentionable()","anchor":"t:mentionable/0"},{"id":"name/0","deprecated":false,"title":"name()","anchor":"t:name/0"},{"id":"permissions/0","deprecated":false,"title":"permissions()","anchor":"t:permissions/0"},{"id":"position/0","deprecated":false,"title":"position()","anchor":"t:position/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"unicode_emoji/0","deprecated":false,"title":"unicode_emoji()","anchor":"t:unicode_emoji/0"}],"key":"types"},{"name":"Functions","nodes":[{"id":"mention/1","deprecated":false,"title":"mention(role)","anchor":"mention/1"}],"key":"functions"}],"nested_title":".Guild.Role","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.Guild.ScheduledEvent","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Guild.ScheduledEvent","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"channel_id/0","deprecated":false,"title":"channel_id()","anchor":"t:channel_id/0"},{"id":"creator/0","deprecated":false,"title":"creator()","anchor":"t:creator/0"},{"id":"creator_id/0","deprecated":false,"title":"creator_id()","anchor":"t:creator_id/0"},{"id":"description/0","deprecated":false,"title":"description()","anchor":"t:description/0"},{"id":"entity_id/0","deprecated":false,"title":"entity_id()","anchor":"t:entity_id/0"},{"id":"entity_metadata/0","deprecated":false,"title":"entity_metadata()","anchor":"t:entity_metadata/0"},{"id":"entity_type/0","deprecated":false,"title":"entity_type()","anchor":"t:entity_type/0"},{"id":"guild_id/0","deprecated":false,"title":"guild_id()","anchor":"t:guild_id/0"},{"id":"id/0","deprecated":false,"title":"id()","anchor":"t:id/0"},{"id":"name/0","deprecated":false,"title":"name()","anchor":"t:name/0"},{"id":"privacy_level/0","deprecated":false,"title":"privacy_level()","anchor":"t:privacy_level/0"},{"id":"scheduled_end_time/0","deprecated":false,"title":"scheduled_end_time()","anchor":"t:scheduled_end_time/0"},{"id":"scheduled_start_time/0","deprecated":false,"title":"scheduled_start_time()","anchor":"t:scheduled_start_time/0"},{"id":"status/0","deprecated":false,"title":"status()","anchor":"t:status/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"user_count/0","deprecated":false,"title":"user_count()","anchor":"t:user_count/0"}],"key":"types"},{"name":"Functions","nodes":[{"id":"to_struct/1","deprecated":false,"title":"to_struct(map)","anchor":"to_struct/1"}],"key":"functions"}],"nested_title":".Guild.ScheduledEvent","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.Guild.ScheduledEvent.EntityMetadata","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Guild.ScheduledEvent.EntityMetadata","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"location/0","deprecated":false,"title":"location()","anchor":"t:location/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"}],"key":"types"}],"nested_title":".Guild.ScheduledEvent.EntityMetadata","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.Guild.ScheduledEvent.User","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Guild.ScheduledEvent.User","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"event_id/0","deprecated":false,"title":"event_id()","anchor":"t:event_id/0"},{"id":"member/0","deprecated":false,"title":"member()","anchor":"t:member/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"user/0","deprecated":false,"title":"user()","anchor":"t:user/0"}],"key":"types"},{"name":"Functions","nodes":[{"id":"to_struct/1","deprecated":false,"title":"to_struct(map)","anchor":"to_struct/1"}],"key":"functions"}],"nested_title":".Guild.ScheduledEvent.User","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.Guild.SystemChannelFlags","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Guild.SystemChannelFlags","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"flags/0","deprecated":false,"title":"flags()","anchor":"t:flags/0"},{"id":"suppress_guild_reminder_notifications/0","deprecated":false,"title":"suppress_guild_reminder_notifications()","anchor":"t:suppress_guild_reminder_notifications/0"},{"id":"suppress_join_notification_replies/0","deprecated":false,"title":"suppress_join_notification_replies()","anchor":"t:suppress_join_notification_replies/0"},{"id":"suppress_join_notifications/0","deprecated":false,"title":"suppress_join_notifications()","anchor":"t:suppress_join_notifications/0"},{"id":"suppress_premium_subscriptions/0","deprecated":false,"title":"suppress_premium_subscriptions()","anchor":"t:suppress_premium_subscriptions/0"},{"id":"suppress_role_subscription_purchase_notifications/0","deprecated":false,"title":"suppress_role_subscription_purchase_notifications()","anchor":"t:suppress_role_subscription_purchase_notifications/0"},{"id":"suppress_role_subscription_purchase_notifications_replies/0","deprecated":false,"title":"suppress_role_subscription_purchase_notifications_replies()","anchor":"t:suppress_role_subscription_purchase_notifications_replies/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"}],"key":"types"},{"name":"Functions","nodes":[{"id":"from_integer/1","deprecated":false,"title":"from_integer(flag_value)","anchor":"from_integer/1"},{"id":"to_integer/1","deprecated":false,"title":"to_integer(flag_struct)","anchor":"to_integer/1"}],"key":"functions"}],"nested_title":".Guild.SystemChannelFlags","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.Guild.UnavailableGuild","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Guild.UnavailableGuild","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"id/0","deprecated":false,"title":"id()","anchor":"t:id/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"unavailable/0","deprecated":false,"title":"unavailable()","anchor":"t:unavailable/0"}],"key":"types"},{"name":"Functions","nodes":[{"id":"to_struct/1","deprecated":false,"title":"to_struct(map)","anchor":"to_struct/1"}],"key":"functions"}],"nested_title":".Guild.UnavailableGuild","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.Interaction","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Interaction","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"application_id/0","deprecated":false,"title":"application_id()","anchor":"t:application_id/0"},{"id":"channel/0","deprecated":false,"title":"channel()","anchor":"t:channel/0"},{"id":"channel_id/0","deprecated":false,"title":"channel_id()","anchor":"t:channel_id/0"},{"id":"data/0","deprecated":false,"title":"data()","anchor":"t:data/0"},{"id":"guild_id/0","deprecated":false,"title":"guild_id()","anchor":"t:guild_id/0"},{"id":"guild_locale/0","deprecated":false,"title":"guild_locale()","anchor":"t:guild_locale/0"},{"id":"id/0","deprecated":false,"title":"id()","anchor":"t:id/0"},{"id":"locale/0","deprecated":false,"title":"locale()","anchor":"t:locale/0"},{"id":"member/0","deprecated":false,"title":"member()","anchor":"t:member/0"},{"id":"message/0","deprecated":false,"title":"message()","anchor":"t:message/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"token/0","deprecated":false,"title":"token()","anchor":"t:token/0"},{"id":"type/0","deprecated":false,"title":"type()","anchor":"t:type/0"},{"id":"user/0","deprecated":false,"title":"user()","anchor":"t:user/0"},{"id":"version/0","deprecated":false,"title":"version()","anchor":"t:version/0"}],"key":"types"}],"nested_title":".Interaction","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.Invite","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Invite","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"approximate_member_count/0","deprecated":false,"title":"approximate_member_count()","anchor":"t:approximate_member_count/0"},{"id":"approximate_presence_count/0","deprecated":false,"title":"approximate_presence_count()","anchor":"t:approximate_presence_count/0"},{"id":"channel/0","deprecated":false,"title":"channel()","anchor":"t:channel/0"},{"id":"code/0","deprecated":false,"title":"code()","anchor":"t:code/0"},{"id":"created_at/0","deprecated":false,"title":"created_at()","anchor":"t:created_at/0"},{"id":"detailed_invite/0","deprecated":false,"title":"detailed_invite()","anchor":"t:detailed_invite/0"},{"id":"guild/0","deprecated":false,"title":"guild()","anchor":"t:guild/0"},{"id":"inviter/0","deprecated":false,"title":"inviter()","anchor":"t:inviter/0"},{"id":"max_age/0","deprecated":false,"title":"max_age()","anchor":"t:max_age/0"},{"id":"max_uses/0","deprecated":false,"title":"max_uses()","anchor":"t:max_uses/0"},{"id":"simple_invite/0","deprecated":false,"title":"simple_invite()","anchor":"t:simple_invite/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"target_user/0","deprecated":false,"title":"target_user()","anchor":"t:target_user/0"},{"id":"target_user_type/0","deprecated":false,"title":"target_user_type()","anchor":"t:target_user_type/0"},{"id":"temporary/0","deprecated":false,"title":"temporary()","anchor":"t:temporary/0"},{"id":"uses/0","deprecated":false,"title":"uses()","anchor":"t:uses/0"}],"key":"types"}],"nested_title":".Invite","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.Message","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Message","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"activity/0","deprecated":false,"title":"activity()","anchor":"t:activity/0"},{"id":"application/0","deprecated":false,"title":"application()","anchor":"t:application/0"},{"id":"application_id/0","deprecated":false,"title":"application_id()","anchor":"t:application_id/0"},{"id":"attachments/0","deprecated":false,"title":"attachments()","anchor":"t:attachments/0"},{"id":"author/0","deprecated":false,"title":"author()","anchor":"t:author/0"},{"id":"channel_id/0","deprecated":false,"title":"channel_id()","anchor":"t:channel_id/0"},{"id":"components/0","deprecated":false,"title":"components()","anchor":"t:components/0"},{"id":"content/0","deprecated":false,"title":"content()","anchor":"t:content/0"},{"id":"edited_timestamp/0","deprecated":false,"title":"edited_timestamp()","anchor":"t:edited_timestamp/0"},{"id":"embeds/0","deprecated":false,"title":"embeds()","anchor":"t:embeds/0"},{"id":"guild_id/0","deprecated":false,"title":"guild_id()","anchor":"t:guild_id/0"},{"id":"id/0","deprecated":false,"title":"id()","anchor":"t:id/0"},{"id":"interaction/0","deprecated":false,"title":"interaction()","anchor":"t:interaction/0"},{"id":"member/0","deprecated":false,"title":"member()","anchor":"t:member/0"},{"id":"mention_channels/0","deprecated":false,"title":"mention_channels()","anchor":"t:mention_channels/0"},{"id":"mention_everyone/0","deprecated":false,"title":"mention_everyone()","anchor":"t:mention_everyone/0"},{"id":"mention_roles/0","deprecated":false,"title":"mention_roles()","anchor":"t:mention_roles/0"},{"id":"mentions/0","deprecated":false,"title":"mentions()","anchor":"t:mentions/0"},{"id":"message_reference/0","deprecated":false,"title":"message_reference()","anchor":"t:message_reference/0"},{"id":"nonce/0","deprecated":false,"title":"nonce()","anchor":"t:nonce/0"},{"id":"pinned/0","deprecated":false,"title":"pinned()","anchor":"t:pinned/0"},{"id":"poll/0","deprecated":false,"title":"poll()","anchor":"t:poll/0"},{"id":"reactions/0","deprecated":false,"title":"reactions()","anchor":"t:reactions/0"},{"id":"referenced_message/0","deprecated":false,"title":"referenced_message()","anchor":"t:referenced_message/0"},{"id":"sticker_items/0","deprecated":false,"title":"sticker_items()","anchor":"t:sticker_items/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"thread/0","deprecated":false,"title":"thread()","anchor":"t:thread/0"},{"id":"timestamp/0","deprecated":false,"title":"timestamp()","anchor":"t:timestamp/0"},{"id":"tts/0","deprecated":false,"title":"tts()","anchor":"t:tts/0"},{"id":"type/0","deprecated":false,"title":"type()","anchor":"t:type/0"},{"id":"webhook_id/0","deprecated":false,"title":"webhook_id()","anchor":"t:webhook_id/0"}],"key":"types"},{"name":"Functions","nodes":[{"id":"to_url/1","deprecated":false,"title":"to_url(message)","anchor":"to_url/1"}],"key":"functions"}],"nested_title":".Message","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.Message.Activity","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Message.Activity","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"party_id/0","deprecated":false,"title":"party_id()","anchor":"t:party_id/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"type/0","deprecated":false,"title":"type()","anchor":"t:type/0"}],"key":"types"}],"nested_title":".Message.Activity","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.Message.Application","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Message.Application","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"cover_image/0","deprecated":false,"title":"cover_image()","anchor":"t:cover_image/0"},{"id":"description/0","deprecated":false,"title":"description()","anchor":"t:description/0"},{"id":"icon/0","deprecated":false,"title":"icon()","anchor":"t:icon/0"},{"id":"id/0","deprecated":false,"title":"id()","anchor":"t:id/0"},{"id":"name/0","deprecated":false,"title":"name()","anchor":"t:name/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"}],"key":"types"}],"nested_title":".Message.Application","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.Message.Attachment","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Message.Attachment","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"filename/0","deprecated":false,"title":"filename()","anchor":"t:filename/0"},{"id":"height/0","deprecated":false,"title":"height()","anchor":"t:height/0"},{"id":"id/0","deprecated":false,"title":"id()","anchor":"t:id/0"},{"id":"proxy_url/0","deprecated":false,"title":"proxy_url()","anchor":"t:proxy_url/0"},{"id":"size/0","deprecated":false,"title":"size()","anchor":"t:size/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"url/0","deprecated":false,"title":"url()","anchor":"t:url/0"},{"id":"width/0","deprecated":false,"title":"width()","anchor":"t:width/0"}],"key":"types"}],"nested_title":".Message.Attachment","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.Message.Component","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Message.Component","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"components/0","deprecated":false,"title":"components()","anchor":"t:components/0"},{"id":"custom_id/0","deprecated":false,"title":"custom_id()","anchor":"t:custom_id/0"},{"id":"disabled/0","deprecated":false,"title":"disabled()","anchor":"t:disabled/0"},{"id":"emoji/0","deprecated":false,"title":"emoji()","anchor":"t:emoji/0"},{"id":"label/0","deprecated":false,"title":"label()","anchor":"t:label/0"},{"id":"max_length/0","deprecated":false,"title":"max_length()","anchor":"t:max_length/0"},{"id":"max_values/0","deprecated":false,"title":"max_values()","anchor":"t:max_values/0"},{"id":"min_length/0","deprecated":false,"title":"min_length()","anchor":"t:min_length/0"},{"id":"min_values/0","deprecated":false,"title":"min_values()","anchor":"t:min_values/0"},{"id":"options/0","deprecated":false,"title":"options()","anchor":"t:options/0"},{"id":"placeholder/0","deprecated":false,"title":"placeholder()","anchor":"t:placeholder/0"},{"id":"required/0","deprecated":false,"title":"required()","anchor":"t:required/0"},{"id":"style/0","deprecated":false,"title":"style()","anchor":"t:style/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"type/0","deprecated":false,"title":"type()","anchor":"t:type/0"},{"id":"url/0","deprecated":false,"title":"url()","anchor":"t:url/0"},{"id":"value/0","deprecated":false,"title":"value()","anchor":"t:value/0"}],"key":"types"}],"nested_title":".Message.Component","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.Message.Poll","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Message.Poll","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"allow_multiselect/0","deprecated":false,"title":"allow_multiselect()","anchor":"t:allow_multiselect/0"},{"id":"answers/0","deprecated":false,"title":"answers()","anchor":"t:answers/0"},{"id":"duration/0","deprecated":false,"title":"duration()","anchor":"t:duration/0"},{"id":"expiry/0","deprecated":false,"title":"expiry()","anchor":"t:expiry/0"},{"id":"layout_type/0","deprecated":false,"title":"layout_type()","anchor":"t:layout_type/0"},{"id":"question/0","deprecated":false,"title":"question()","anchor":"t:question/0"},{"id":"results/0","deprecated":false,"title":"results()","anchor":"t:results/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"}],"key":"types"},{"name":"Functions","nodes":[{"id":"create_poll/2","deprecated":false,"title":"create_poll(question_text, list)","anchor":"create_poll/2"},{"id":"put_answer/2","deprecated":false,"title":"put_answer(poll, answer)","anchor":"put_answer/2"},{"id":"put_answer/3","deprecated":false,"title":"put_answer(poll, answer, list)","anchor":"put_answer/3"}],"key":"functions"}],"nested_title":".Message.Poll","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.Message.Poll.Answer","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Message.Poll.Answer","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"answer_id/0","deprecated":false,"title":"answer_id()","anchor":"t:answer_id/0"},{"id":"poll_media/0","deprecated":false,"title":"poll_media()","anchor":"t:poll_media/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"}],"key":"types"}],"nested_title":".Message.Poll.Answer","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.Message.Poll.MediaObject","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Message.Poll.MediaObject","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"emoji/0","deprecated":false,"title":"emoji()","anchor":"t:emoji/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"text/0","deprecated":false,"title":"text()","anchor":"t:text/0"}],"key":"types"}],"nested_title":".Message.Poll.MediaObject","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.Message.Poll.Results","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Message.Poll.Results","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"answer_counts/0","deprecated":false,"title":"answer_counts()","anchor":"t:answer_counts/0"},{"id":"is_finalized/0","deprecated":false,"title":"is_finalized()","anchor":"t:is_finalized/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"}],"key":"types"}],"nested_title":".Message.Poll.Results","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.Message.Reaction","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Message.Reaction","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"count/0","deprecated":false,"title":"count()","anchor":"t:count/0"},{"id":"emoji/0","deprecated":false,"title":"emoji()","anchor":"t:emoji/0"},{"id":"me/0","deprecated":false,"title":"me()","anchor":"t:me/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"}],"key":"types"}],"nested_title":".Message.Reaction","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.Message.Reference","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Message.Reference","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"channel_id/0","deprecated":false,"title":"channel_id()","anchor":"t:channel_id/0"},{"id":"guild_id/0","deprecated":false,"title":"guild_id()","anchor":"t:guild_id/0"},{"id":"message_id/0","deprecated":false,"title":"message_id()","anchor":"t:message_id/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"}],"key":"types"}],"nested_title":".Message.Reference","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.Overwrite","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Overwrite","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"allow/0","deprecated":false,"title":"allow()","anchor":"t:allow/0"},{"id":"deny/0","deprecated":false,"title":"deny()","anchor":"t:deny/0"},{"id":"id/0","deprecated":false,"title":"id()","anchor":"t:id/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"type/0","deprecated":false,"title":"type()","anchor":"t:type/0"}],"key":"types"}],"nested_title":".Overwrite","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.Sticker","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Sticker","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"available/0","deprecated":false,"title":"available()","anchor":"t:available/0"},{"id":"description/0","deprecated":false,"title":"description()","anchor":"t:description/0"},{"id":"format_type/0","deprecated":false,"title":"format_type()","anchor":"t:format_type/0"},{"id":"guild_id/0","deprecated":false,"title":"guild_id()","anchor":"t:guild_id/0"},{"id":"id/0","deprecated":false,"title":"id()","anchor":"t:id/0"},{"id":"name/0","deprecated":false,"title":"name()","anchor":"t:name/0"},{"id":"pack_id/0","deprecated":false,"title":"pack_id()","anchor":"t:pack_id/0"},{"id":"sort_value/0","deprecated":false,"title":"sort_value()","anchor":"t:sort_value/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"tags/0","deprecated":false,"title":"tags()","anchor":"t:tags/0"},{"id":"type/0","deprecated":false,"title":"type()","anchor":"t:type/0"},{"id":"user/0","deprecated":false,"title":"user()","anchor":"t:user/0"}],"key":"types"},{"name":"Functions","nodes":[{"id":"cdn_url/1","deprecated":false,"title":"cdn_url(map)","anchor":"cdn_url/1"}],"key":"functions"}],"nested_title":".Sticker","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.Sticker.Pack","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Sticker.Pack","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"banner_asset_id/0","deprecated":false,"title":"banner_asset_id()","anchor":"t:banner_asset_id/0"},{"id":"cover_sticker_id/0","deprecated":false,"title":"cover_sticker_id()","anchor":"t:cover_sticker_id/0"},{"id":"description/0","deprecated":false,"title":"description()","anchor":"t:description/0"},{"id":"id/0","deprecated":false,"title":"id()","anchor":"t:id/0"},{"id":"name/0","deprecated":false,"title":"name()","anchor":"t:name/0"},{"id":"sku_id/0","deprecated":false,"title":"sku_id()","anchor":"t:sku_id/0"},{"id":"stickers/0","deprecated":false,"title":"stickers()","anchor":"t:stickers/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"}],"key":"types"},{"name":"Functions","nodes":[{"id":"banner_url/1","deprecated":false,"title":"banner_url(map)","anchor":"banner_url/1"}],"key":"functions"}],"nested_title":".Sticker.Pack","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.ThreadMember","deprecated":false,"group":"Structs","title":"Nostrum.Struct.ThreadMember","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"flags/0","deprecated":false,"title":"flags()","anchor":"t:flags/0"},{"id":"guild_id/0","deprecated":false,"title":"guild_id()","anchor":"t:guild_id/0"},{"id":"id/0","deprecated":false,"title":"id()","anchor":"t:id/0"},{"id":"join_timestamp/0","deprecated":false,"title":"join_timestamp()","anchor":"t:join_timestamp/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"user_id/0","deprecated":false,"title":"user_id()","anchor":"t:user_id/0"}],"key":"types"}],"nested_title":".ThreadMember","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.User","deprecated":false,"group":"Structs","title":"Nostrum.Struct.User","sections":[{"id":"Mentioning Users in Messages","anchor":"module-mentioning-users-in-messages"},{"id":"User vs. Member","anchor":"module-user-vs-member"}],"nodeGroups":[{"name":"Types","nodes":[{"id":"avatar/0","deprecated":false,"title":"avatar()","anchor":"t:avatar/0"},{"id":"bot/0","deprecated":false,"title":"bot()","anchor":"t:bot/0"},{"id":"discriminator/0","deprecated":false,"title":"discriminator()","anchor":"t:discriminator/0"},{"id":"global_name/0","deprecated":false,"title":"global_name()","anchor":"t:global_name/0"},{"id":"id/0","deprecated":false,"title":"id()","anchor":"t:id/0"},{"id":"public_flags/0","deprecated":false,"title":"public_flags()","anchor":"t:public_flags/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"username/0","deprecated":false,"title":"username()","anchor":"t:username/0"}],"key":"types"},{"name":"Functions","nodes":[{"id":"avatar_url/2","deprecated":false,"title":"avatar_url(user, image_format \\\\ \"webp\")","anchor":"avatar_url/2"},{"id":"full_name/1","deprecated":false,"title":"full_name(user)","anchor":"full_name/1"},{"id":"mention/1","deprecated":false,"title":"mention(user)","anchor":"mention/1"}],"key":"functions"}],"nested_title":".User","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.User.Connection","deprecated":false,"group":"Structs","title":"Nostrum.Struct.User.Connection","sections":[],"nested_title":".User.Connection","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.User.Flags","deprecated":false,"group":"Structs","title":"Nostrum.Struct.User.Flags","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"bug_hunter_level_1/0","deprecated":false,"title":"bug_hunter_level_1()","anchor":"t:bug_hunter_level_1/0"},{"id":"bug_hunter_level_2/0","deprecated":false,"title":"bug_hunter_level_2()","anchor":"t:bug_hunter_level_2/0"},{"id":"early_supporter/0","deprecated":false,"title":"early_supporter()","anchor":"t:early_supporter/0"},{"id":"flags/0","deprecated":false,"title":"flags()","anchor":"t:flags/0"},{"id":"hypesquad_balance/0","deprecated":false,"title":"hypesquad_balance()","anchor":"t:hypesquad_balance/0"},{"id":"hypesquad_bravery/0","deprecated":false,"title":"hypesquad_bravery()","anchor":"t:hypesquad_bravery/0"},{"id":"hypesquad_brilliance/0","deprecated":false,"title":"hypesquad_brilliance()","anchor":"t:hypesquad_brilliance/0"},{"id":"hypesquad_events/0","deprecated":false,"title":"hypesquad_events()","anchor":"t:hypesquad_events/0"},{"id":"partner/0","deprecated":false,"title":"partner()","anchor":"t:partner/0"},{"id":"raw_flags/0","deprecated":false,"title":"raw_flags()","anchor":"t:raw_flags/0"},{"id":"staff/0","deprecated":false,"title":"staff()","anchor":"t:staff/0"},{"id":"system/0","deprecated":false,"title":"system()","anchor":"t:system/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"team_user/0","deprecated":false,"title":"team_user()","anchor":"t:team_user/0"},{"id":"verified_bot/0","deprecated":false,"title":"verified_bot()","anchor":"t:verified_bot/0"},{"id":"verified_developer/0","deprecated":false,"title":"verified_developer()","anchor":"t:verified_developer/0"}],"key":"types"},{"name":"Functions","nodes":[{"id":"from_integer/1","deprecated":false,"title":"from_integer(flag_value)","anchor":"from_integer/1"},{"id":"to_integer/1","deprecated":false,"title":"to_integer(flag_struct)","anchor":"to_integer/1"}],"key":"functions"}],"nested_title":".User.Flags","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.VoiceRegion","deprecated":false,"group":"Structs","title":"Nostrum.Struct.VoiceRegion","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"}],"key":"types"}],"nested_title":".VoiceRegion","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.VoiceWSState","deprecated":false,"group":"Structs","title":"Nostrum.Struct.VoiceWSState","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"channel_id/0","deprecated":false,"title":"channel_id()","anchor":"t:channel_id/0"},{"id":"conn/0","deprecated":false,"title":"conn()","anchor":"t:conn/0"},{"id":"conn_pid/0","deprecated":false,"title":"conn_pid()","anchor":"t:conn_pid/0"},{"id":"gateway/0","deprecated":false,"title":"gateway()","anchor":"t:gateway/0"},{"id":"guild_id/0","deprecated":false,"title":"guild_id()","anchor":"t:guild_id/0"},{"id":"heartbeat_ack/0","deprecated":false,"title":"heartbeat_ack()","anchor":"t:heartbeat_ack/0"},{"id":"heartbeat_interval/0","deprecated":false,"title":"heartbeat_interval()","anchor":"t:heartbeat_interval/0"},{"id":"heartbeat_ref/0","deprecated":false,"title":"heartbeat_ref()","anchor":"t:heartbeat_ref/0"},{"id":"identified/0","deprecated":false,"title":"identified()","anchor":"t:identified/0"},{"id":"last_heartbeat_ack/0","deprecated":false,"title":"last_heartbeat_ack()","anchor":"t:last_heartbeat_ack/0"},{"id":"last_heartbeat_send/0","deprecated":false,"title":"last_heartbeat_send()","anchor":"t:last_heartbeat_send/0"},{"id":"secret_key/0","deprecated":false,"title":"secret_key()","anchor":"t:secret_key/0"},{"id":"session/0","deprecated":false,"title":"session()","anchor":"t:session/0"},{"id":"ssrc_map/0","deprecated":false,"title":"ssrc_map()","anchor":"t:ssrc_map/0"},{"id":"stream/0","deprecated":false,"title":"stream()","anchor":"t:stream/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"token/0","deprecated":false,"title":"token()","anchor":"t:token/0"}],"key":"types"}],"nested_title":".VoiceWSState","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.WSState","deprecated":false,"group":"Structs","title":"Nostrum.Struct.WSState","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"compress_ctx/0","deprecated":false,"title":"compress_ctx()","anchor":"t:compress_ctx/0"},{"id":"conn/0","deprecated":false,"title":"conn()","anchor":"t:conn/0"},{"id":"conn_pid/0","deprecated":false,"title":"conn_pid()","anchor":"t:conn_pid/0"},{"id":"gateway/0","deprecated":false,"title":"gateway()","anchor":"t:gateway/0"},{"id":"heartbeat_ack/0","deprecated":false,"title":"heartbeat_ack()","anchor":"t:heartbeat_ack/0"},{"id":"heartbeat_interval/0","deprecated":false,"title":"heartbeat_interval()","anchor":"t:heartbeat_interval/0"},{"id":"last_heartbeat_ack/0","deprecated":false,"title":"last_heartbeat_ack()","anchor":"t:last_heartbeat_ack/0"},{"id":"last_heartbeat_send/0","deprecated":false,"title":"last_heartbeat_send()","anchor":"t:last_heartbeat_send/0"},{"id":"resume_gateway/0","deprecated":false,"title":"resume_gateway()","anchor":"t:resume_gateway/0"},{"id":"seq/0","deprecated":false,"title":"seq()","anchor":"t:seq/0"},{"id":"session/0","deprecated":false,"title":"session()","anchor":"t:session/0"},{"id":"shard_num/0","deprecated":false,"title":"shard_num()","anchor":"t:shard_num/0"},{"id":"stream/0","deprecated":false,"title":"stream()","anchor":"t:stream/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"total_shards/0","deprecated":false,"title":"total_shards()","anchor":"t:total_shards/0"}],"key":"types"}],"nested_title":".WSState","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.Webhook","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Webhook","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"avatar/0","deprecated":false,"title":"avatar()","anchor":"t:avatar/0"},{"id":"channel_id/0","deprecated":false,"title":"channel_id()","anchor":"t:channel_id/0"},{"id":"guild_id/0","deprecated":false,"title":"guild_id()","anchor":"t:guild_id/0"},{"id":"id/0","deprecated":false,"title":"id()","anchor":"t:id/0"},{"id":"name/0","deprecated":false,"title":"name()","anchor":"t:name/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"token/0","deprecated":false,"title":"token()","anchor":"t:token/0"},{"id":"user/0","deprecated":false,"title":"user()","anchor":"t:user/0"}],"key":"types"}],"nested_title":".Webhook","nested_context":"Nostrum.Struct"},{"id":"Nostrum.Struct.Event.AutoModerationRuleExecute","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Event.AutoModerationRuleExecute","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"action/0","deprecated":false,"title":"action()","anchor":"t:action/0"},{"id":"alert_system_message_id/0","deprecated":false,"title":"alert_system_message_id()","anchor":"t:alert_system_message_id/0"},{"id":"channel_id/0","deprecated":false,"title":"channel_id()","anchor":"t:channel_id/0"},{"id":"content/0","deprecated":false,"title":"content()","anchor":"t:content/0"},{"id":"guild_id/0","deprecated":false,"title":"guild_id()","anchor":"t:guild_id/0"},{"id":"matched_content/0","deprecated":false,"title":"matched_content()","anchor":"t:matched_content/0"},{"id":"matched_keyword/0","deprecated":false,"title":"matched_keyword()","anchor":"t:matched_keyword/0"},{"id":"message_id/0","deprecated":false,"title":"message_id()","anchor":"t:message_id/0"},{"id":"rule_id/0","deprecated":false,"title":"rule_id()","anchor":"t:rule_id/0"},{"id":"rule_trigger_type/0","deprecated":false,"title":"rule_trigger_type()","anchor":"t:rule_trigger_type/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"user_id/0","deprecated":false,"title":"user_id()","anchor":"t:user_id/0"}],"key":"types"}],"nested_title":".AutoModerationRuleExecute","nested_context":"Nostrum.Struct.Event"},{"id":"Nostrum.Struct.Event.ChannelPinsUpdate","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Event.ChannelPinsUpdate","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"channel_id/0","deprecated":false,"title":"channel_id()","anchor":"t:channel_id/0"},{"id":"guild_id/0","deprecated":false,"title":"guild_id()","anchor":"t:guild_id/0"},{"id":"last_pin_timestamp/0","deprecated":false,"title":"last_pin_timestamp()","anchor":"t:last_pin_timestamp/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"}],"key":"types"}],"nested_title":".ChannelPinsUpdate","nested_context":"Nostrum.Struct.Event"},{"id":"Nostrum.Struct.Event.GuildBanAdd","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Event.GuildBanAdd","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"guild_id/0","deprecated":false,"title":"guild_id()","anchor":"t:guild_id/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"user/0","deprecated":false,"title":"user()","anchor":"t:user/0"}],"key":"types"}],"nested_title":".GuildBanAdd","nested_context":"Nostrum.Struct.Event"},{"id":"Nostrum.Struct.Event.GuildBanRemove","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Event.GuildBanRemove","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"guild_id/0","deprecated":false,"title":"guild_id()","anchor":"t:guild_id/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"user/0","deprecated":false,"title":"user()","anchor":"t:user/0"}],"key":"types"}],"nested_title":".GuildBanRemove","nested_context":"Nostrum.Struct.Event"},{"id":"Nostrum.Struct.Event.GuildIntegrationDelete","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Event.GuildIntegrationDelete","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"application_id/0","deprecated":false,"title":"application_id()","anchor":"t:application_id/0"},{"id":"guild_id/0","deprecated":false,"title":"guild_id()","anchor":"t:guild_id/0"},{"id":"id/0","deprecated":false,"title":"id()","anchor":"t:id/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"}],"key":"types"}],"nested_title":".GuildIntegrationDelete","nested_context":"Nostrum.Struct.Event"},{"id":"Nostrum.Struct.Event.GuildIntegrationsUpdate","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Event.GuildIntegrationsUpdate","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"guild_id/0","deprecated":false,"title":"guild_id()","anchor":"t:guild_id/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"}],"key":"types"}],"nested_title":".GuildIntegrationsUpdate","nested_context":"Nostrum.Struct.Event"},{"id":"Nostrum.Struct.Event.GuildScheduledEventUserAdd","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Event.GuildScheduledEventUserAdd","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"guild_id/0","deprecated":false,"title":"guild_id()","anchor":"t:guild_id/0"},{"id":"guild_scheduled_event_id/0","deprecated":false,"title":"guild_scheduled_event_id()","anchor":"t:guild_scheduled_event_id/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"user_id/0","deprecated":false,"title":"user_id()","anchor":"t:user_id/0"}],"key":"types"}],"nested_title":".GuildScheduledEventUserAdd","nested_context":"Nostrum.Struct.Event"},{"id":"Nostrum.Struct.Event.GuildScheduledEventUserRemove","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Event.GuildScheduledEventUserRemove","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"guild_id/0","deprecated":false,"title":"guild_id()","anchor":"t:guild_id/0"},{"id":"guild_scheduled_event_id/0","deprecated":false,"title":"guild_scheduled_event_id()","anchor":"t:guild_scheduled_event_id/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"user_id/0","deprecated":false,"title":"user_id()","anchor":"t:user_id/0"}],"key":"types"}],"nested_title":".GuildScheduledEventUserRemove","nested_context":"Nostrum.Struct.Event"},{"id":"Nostrum.Struct.Event.InviteCreate","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Event.InviteCreate","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"channel_id/0","deprecated":false,"title":"channel_id()","anchor":"t:channel_id/0"},{"id":"code/0","deprecated":false,"title":"code()","anchor":"t:code/0"},{"id":"created_at/0","deprecated":false,"title":"created_at()","anchor":"t:created_at/0"},{"id":"guild_id/0","deprecated":false,"title":"guild_id()","anchor":"t:guild_id/0"},{"id":"inviter/0","deprecated":false,"title":"inviter()","anchor":"t:inviter/0"},{"id":"max_age/0","deprecated":false,"title":"max_age()","anchor":"t:max_age/0"},{"id":"max_uses/0","deprecated":false,"title":"max_uses()","anchor":"t:max_uses/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"target_user/0","deprecated":false,"title":"target_user()","anchor":"t:target_user/0"},{"id":"target_user_type/0","deprecated":false,"title":"target_user_type()","anchor":"t:target_user_type/0"},{"id":"temporary/0","deprecated":false,"title":"temporary()","anchor":"t:temporary/0"},{"id":"uses/0","deprecated":false,"title":"uses()","anchor":"t:uses/0"}],"key":"types"}],"nested_title":".InviteCreate","nested_context":"Nostrum.Struct.Event"},{"id":"Nostrum.Struct.Event.InviteDelete","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Event.InviteDelete","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"channel_id/0","deprecated":false,"title":"channel_id()","anchor":"t:channel_id/0"},{"id":"code/0","deprecated":false,"title":"code()","anchor":"t:code/0"},{"id":"guild_id/0","deprecated":false,"title":"guild_id()","anchor":"t:guild_id/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"}],"key":"types"}],"nested_title":".InviteDelete","nested_context":"Nostrum.Struct.Event"},{"id":"Nostrum.Struct.Event.MessageDelete","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Event.MessageDelete","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"channel_id/0","deprecated":false,"title":"channel_id()","anchor":"t:channel_id/0"},{"id":"deleted_message/0","deprecated":false,"title":"deleted_message()","anchor":"t:deleted_message/0"},{"id":"guild_id/0","deprecated":false,"title":"guild_id()","anchor":"t:guild_id/0"},{"id":"id/0","deprecated":false,"title":"id()","anchor":"t:id/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"}],"key":"types"}],"nested_title":".MessageDelete","nested_context":"Nostrum.Struct.Event"},{"id":"Nostrum.Struct.Event.MessageDeleteBulk","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Event.MessageDeleteBulk","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"channel_id/0","deprecated":false,"title":"channel_id()","anchor":"t:channel_id/0"},{"id":"deleted_messages/0","deprecated":false,"title":"deleted_messages()","anchor":"t:deleted_messages/0"},{"id":"guild_id/0","deprecated":false,"title":"guild_id()","anchor":"t:guild_id/0"},{"id":"ids/0","deprecated":false,"title":"ids()","anchor":"t:ids/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"}],"key":"types"}],"nested_title":".MessageDeleteBulk","nested_context":"Nostrum.Struct.Event"},{"id":"Nostrum.Struct.Event.MessageReactionAdd","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Event.MessageReactionAdd","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"channel_id/0","deprecated":false,"title":"channel_id()","anchor":"t:channel_id/0"},{"id":"emoji/0","deprecated":false,"title":"emoji()","anchor":"t:emoji/0"},{"id":"guild_id/0","deprecated":false,"title":"guild_id()","anchor":"t:guild_id/0"},{"id":"member/0","deprecated":false,"title":"member()","anchor":"t:member/0"},{"id":"message_id/0","deprecated":false,"title":"message_id()","anchor":"t:message_id/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"user_id/0","deprecated":false,"title":"user_id()","anchor":"t:user_id/0"}],"key":"types"}],"nested_title":".MessageReactionAdd","nested_context":"Nostrum.Struct.Event"},{"id":"Nostrum.Struct.Event.MessageReactionRemove","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Event.MessageReactionRemove","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"channel_id/0","deprecated":false,"title":"channel_id()","anchor":"t:channel_id/0"},{"id":"emoji/0","deprecated":false,"title":"emoji()","anchor":"t:emoji/0"},{"id":"guild_id/0","deprecated":false,"title":"guild_id()","anchor":"t:guild_id/0"},{"id":"message_id/0","deprecated":false,"title":"message_id()","anchor":"t:message_id/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"user_id/0","deprecated":false,"title":"user_id()","anchor":"t:user_id/0"}],"key":"types"}],"nested_title":".MessageReactionRemove","nested_context":"Nostrum.Struct.Event"},{"id":"Nostrum.Struct.Event.MessageReactionRemoveAll","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Event.MessageReactionRemoveAll","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"channel_id/0","deprecated":false,"title":"channel_id()","anchor":"t:channel_id/0"},{"id":"guild_id/0","deprecated":false,"title":"guild_id()","anchor":"t:guild_id/0"},{"id":"message_id/0","deprecated":false,"title":"message_id()","anchor":"t:message_id/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"}],"key":"types"}],"nested_title":".MessageReactionRemoveAll","nested_context":"Nostrum.Struct.Event"},{"id":"Nostrum.Struct.Event.MessageReactionRemoveEmoji","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Event.MessageReactionRemoveEmoji","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"channel_id/0","deprecated":false,"title":"channel_id()","anchor":"t:channel_id/0"},{"id":"emoji/0","deprecated":false,"title":"emoji()","anchor":"t:emoji/0"},{"id":"guild_id/0","deprecated":false,"title":"guild_id()","anchor":"t:guild_id/0"},{"id":"message_id/0","deprecated":false,"title":"message_id()","anchor":"t:message_id/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"}],"key":"types"}],"nested_title":".MessageReactionRemoveEmoji","nested_context":"Nostrum.Struct.Event"},{"id":"Nostrum.Struct.Event.PartialApplication","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Event.PartialApplication","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"flags/0","deprecated":false,"title":"flags()","anchor":"t:flags/0"},{"id":"id/0","deprecated":false,"title":"id()","anchor":"t:id/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"}],"key":"types"}],"nested_title":".PartialApplication","nested_context":"Nostrum.Struct.Event"},{"id":"Nostrum.Struct.Event.PollVoteChange","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Event.PollVoteChange","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"answer_id/0","deprecated":false,"title":"answer_id()","anchor":"t:answer_id/0"},{"id":"channel_id/0","deprecated":false,"title":"channel_id()","anchor":"t:channel_id/0"},{"id":"guild_id/0","deprecated":false,"title":"guild_id()","anchor":"t:guild_id/0"},{"id":"message_id/0","deprecated":false,"title":"message_id()","anchor":"t:message_id/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"type/0","deprecated":false,"title":"type()","anchor":"t:type/0"},{"id":"user_id/0","deprecated":false,"title":"user_id()","anchor":"t:user_id/0"}],"key":"types"}],"nested_title":".PollVoteChange","nested_context":"Nostrum.Struct.Event"},{"id":"Nostrum.Struct.Event.Ready","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Event.Ready","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"application/0","deprecated":false,"title":"application()","anchor":"t:application/0"},{"id":"guilds/0","deprecated":false,"title":"guilds()","anchor":"t:guilds/0"},{"id":"resume_gateway_url/0","deprecated":false,"title":"resume_gateway_url()","anchor":"t:resume_gateway_url/0"},{"id":"session_id/0","deprecated":false,"title":"session_id()","anchor":"t:session_id/0"},{"id":"shard/0","deprecated":false,"title":"shard()","anchor":"t:shard/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"user/0","deprecated":false,"title":"user()","anchor":"t:user/0"},{"id":"v/0","deprecated":false,"title":"v()","anchor":"t:v/0"}],"key":"types"}],"nested_title":".Ready","nested_context":"Nostrum.Struct.Event"},{"id":"Nostrum.Struct.Event.SpeakingUpdate","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Event.SpeakingUpdate","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"channel_id/0","deprecated":false,"title":"channel_id()","anchor":"t:channel_id/0"},{"id":"current_url/0","deprecated":false,"title":"current_url()","anchor":"t:current_url/0"},{"id":"guild_id/0","deprecated":false,"title":"guild_id()","anchor":"t:guild_id/0"},{"id":"speaking/0","deprecated":false,"title":"speaking()","anchor":"t:speaking/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"timed_out/0","deprecated":false,"title":"timed_out()","anchor":"t:timed_out/0"}],"key":"types"}],"nested_title":".SpeakingUpdate","nested_context":"Nostrum.Struct.Event"},{"id":"Nostrum.Struct.Event.ThreadListSync","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Event.ThreadListSync","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"channel_ids/0","deprecated":false,"title":"channel_ids()","anchor":"t:channel_ids/0"},{"id":"guid_id/0","deprecated":false,"title":"guid_id()","anchor":"t:guid_id/0"},{"id":"members/0","deprecated":false,"title":"members()","anchor":"t:members/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"threads/0","deprecated":false,"title":"threads()","anchor":"t:threads/0"}],"key":"types"}],"nested_title":".ThreadListSync","nested_context":"Nostrum.Struct.Event"},{"id":"Nostrum.Struct.Event.ThreadMembersUpdate","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Event.ThreadMembersUpdate","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"added_members/0","deprecated":false,"title":"added_members()","anchor":"t:added_members/0"},{"id":"guild_id/0","deprecated":false,"title":"guild_id()","anchor":"t:guild_id/0"},{"id":"id/0","deprecated":false,"title":"id()","anchor":"t:id/0"},{"id":"member_count/0","deprecated":false,"title":"member_count()","anchor":"t:member_count/0"},{"id":"removed_member_ids/0","deprecated":false,"title":"removed_member_ids()","anchor":"t:removed_member_ids/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"}],"key":"types"}],"nested_title":".ThreadMembersUpdate","nested_context":"Nostrum.Struct.Event"},{"id":"Nostrum.Struct.Event.TypingStart","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Event.TypingStart","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"channel_id/0","deprecated":false,"title":"channel_id()","anchor":"t:channel_id/0"},{"id":"guild_id/0","deprecated":false,"title":"guild_id()","anchor":"t:guild_id/0"},{"id":"member/0","deprecated":false,"title":"member()","anchor":"t:member/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"timestamp/0","deprecated":false,"title":"timestamp()","anchor":"t:timestamp/0"},{"id":"user_id/0","deprecated":false,"title":"user_id()","anchor":"t:user_id/0"}],"key":"types"}],"nested_title":".TypingStart","nested_context":"Nostrum.Struct.Event"},{"id":"Nostrum.Struct.Event.VoiceReady","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Event.VoiceReady","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"channel_id/0","deprecated":false,"title":"channel_id()","anchor":"t:channel_id/0"},{"id":"guild_id/0","deprecated":false,"title":"guild_id()","anchor":"t:guild_id/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"}],"key":"types"}],"nested_title":".VoiceReady","nested_context":"Nostrum.Struct.Event"},{"id":"Nostrum.Struct.Event.VoiceServerUpdate","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Event.VoiceServerUpdate","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"endpoint/0","deprecated":false,"title":"endpoint()","anchor":"t:endpoint/0"},{"id":"guild_id/0","deprecated":false,"title":"guild_id()","anchor":"t:guild_id/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"token/0","deprecated":false,"title":"token()","anchor":"t:token/0"}],"key":"types"}],"nested_title":".VoiceServerUpdate","nested_context":"Nostrum.Struct.Event"},{"id":"Nostrum.Struct.Event.VoiceState","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Event.VoiceState","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"channel_id/0","deprecated":false,"title":"channel_id()","anchor":"t:channel_id/0"},{"id":"deaf/0","deprecated":false,"title":"deaf()","anchor":"t:deaf/0"},{"id":"guild_id/0","deprecated":false,"title":"guild_id()","anchor":"t:guild_id/0"},{"id":"member/0","deprecated":false,"title":"member()","anchor":"t:member/0"},{"id":"mute/0","deprecated":false,"title":"mute()","anchor":"t:mute/0"},{"id":"request_to_speak_timestamp/0","deprecated":false,"title":"request_to_speak_timestamp()","anchor":"t:request_to_speak_timestamp/0"},{"id":"self_deaf/0","deprecated":false,"title":"self_deaf()","anchor":"t:self_deaf/0"},{"id":"self_mute/0","deprecated":false,"title":"self_mute()","anchor":"t:self_mute/0"},{"id":"self_stream/0","deprecated":false,"title":"self_stream()","anchor":"t:self_stream/0"},{"id":"self_video/0","deprecated":false,"title":"self_video()","anchor":"t:self_video/0"},{"id":"session_id/0","deprecated":false,"title":"session_id()","anchor":"t:session_id/0"},{"id":"suppress/0","deprecated":false,"title":"suppress()","anchor":"t:suppress/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"},{"id":"user_id/0","deprecated":false,"title":"user_id()","anchor":"t:user_id/0"}],"key":"types"}],"nested_title":".VoiceState","nested_context":"Nostrum.Struct.Event"},{"id":"Nostrum.Constants.ApplicationCommandOptionType","deprecated":false,"group":"Constants","title":"Nostrum.Constants.ApplicationCommandOptionType","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"attachment/0","deprecated":false,"title":"attachment()","anchor":"attachment/0"},{"id":"boolean/0","deprecated":false,"title":"boolean()","anchor":"boolean/0"},{"id":"channel/0","deprecated":false,"title":"channel()","anchor":"channel/0"},{"id":"integer/0","deprecated":false,"title":"integer()","anchor":"integer/0"},{"id":"mentionable/0","deprecated":false,"title":"mentionable()","anchor":"mentionable/0"},{"id":"number/0","deprecated":false,"title":"number()","anchor":"number/0"},{"id":"role/0","deprecated":false,"title":"role()","anchor":"role/0"},{"id":"string/0","deprecated":false,"title":"string()","anchor":"string/0"},{"id":"sub_command/0","deprecated":false,"title":"sub_command()","anchor":"sub_command/0"},{"id":"sub_command_group/0","deprecated":false,"title":"sub_command_group()","anchor":"sub_command_group/0"},{"id":"user/0","deprecated":false,"title":"user()","anchor":"user/0"}],"key":"functions"}],"nested_title":".ApplicationCommandOptionType","nested_context":"Nostrum.Constants"},{"id":"Nostrum.Constants.ApplicationCommandPermissionType","deprecated":false,"group":"Constants","title":"Nostrum.Constants.ApplicationCommandPermissionType","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"channel/0","deprecated":false,"title":"channel()","anchor":"channel/0"},{"id":"role/0","deprecated":false,"title":"role()","anchor":"role/0"},{"id":"user/0","deprecated":false,"title":"user()","anchor":"user/0"}],"key":"functions"}],"nested_title":".ApplicationCommandPermissionType","nested_context":"Nostrum.Constants"},{"id":"Nostrum.Constants.ApplicationCommandType","deprecated":false,"group":"Constants","title":"Nostrum.Constants.ApplicationCommandType","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"chat_input/0","deprecated":false,"title":"chat_input()","anchor":"chat_input/0"},{"id":"message/0","deprecated":false,"title":"message()","anchor":"message/0"},{"id":"user/0","deprecated":false,"title":"user()","anchor":"user/0"}],"key":"functions"}],"nested_title":".ApplicationCommandType","nested_context":"Nostrum.Constants"},{"id":"Nostrum.Constants.ButtonStyle","deprecated":false,"group":"Constants","title":"Nostrum.Constants.ButtonStyle","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"danger/0","deprecated":false,"title":"danger()","anchor":"danger/0"},{"id":"link/0","deprecated":false,"title":"link()","anchor":"link/0"},{"id":"primary/0","deprecated":false,"title":"primary()","anchor":"primary/0"},{"id":"secondary/0","deprecated":false,"title":"secondary()","anchor":"secondary/0"},{"id":"success/0","deprecated":false,"title":"success()","anchor":"success/0"}],"key":"functions"}],"nested_title":".ButtonStyle","nested_context":"Nostrum.Constants"},{"id":"Nostrum.Constants.ChannelType","deprecated":false,"group":"Constants","title":"Nostrum.Constants.ChannelType","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"announcement_thread/0","deprecated":false,"title":"announcement_thread()","anchor":"announcement_thread/0"},{"id":"dm/0","deprecated":false,"title":"dm()","anchor":"dm/0"},{"id":"group_db/0","deprecated":false,"title":"group_db()","anchor":"group_db/0"},{"id":"guild_announcement/0","deprecated":false,"title":"guild_announcement()","anchor":"guild_announcement/0"},{"id":"guild_category/0","deprecated":false,"title":"guild_category()","anchor":"guild_category/0"},{"id":"guild_directory/0","deprecated":false,"title":"guild_directory()","anchor":"guild_directory/0"},{"id":"guild_forum/0","deprecated":false,"title":"guild_forum()","anchor":"guild_forum/0"},{"id":"guild_text/0","deprecated":false,"title":"guild_text()","anchor":"guild_text/0"},{"id":"guild_voice/0","deprecated":false,"title":"guild_voice()","anchor":"guild_voice/0"},{"id":"private_thread/0","deprecated":false,"title":"private_thread()","anchor":"private_thread/0"},{"id":"public_thread/0","deprecated":false,"title":"public_thread()","anchor":"public_thread/0"}],"key":"functions"}],"nested_title":".ChannelType","nested_context":"Nostrum.Constants"},{"id":"Nostrum.Constants.ComponentType","deprecated":false,"group":"Constants","title":"Nostrum.Constants.ComponentType","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"action_row/0","deprecated":false,"title":"action_row()","anchor":"action_row/0"},{"id":"button/0","deprecated":false,"title":"button()","anchor":"button/0"},{"id":"channel_select/0","deprecated":false,"title":"channel_select()","anchor":"channel_select/0"},{"id":"mentionable_select/0","deprecated":false,"title":"mentionable_select()","anchor":"mentionable_select/0"},{"id":"role_select/0","deprecated":false,"title":"role_select()","anchor":"role_select/0"},{"id":"string_select/0","deprecated":false,"title":"string_select()","anchor":"string_select/0"},{"id":"text_input/0","deprecated":false,"title":"text_input()","anchor":"text_input/0"},{"id":"user_select/0","deprecated":false,"title":"user_select()","anchor":"user_select/0"}],"key":"functions"}],"nested_title":".ComponentType","nested_context":"Nostrum.Constants"},{"id":"Nostrum.Constants.InteractionCallbackType","deprecated":false,"group":"Constants","title":"Nostrum.Constants.InteractionCallbackType","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"application_command_autocomplete_result/0","deprecated":false,"title":"application_command_autocomplete_result()","anchor":"application_command_autocomplete_result/0"},{"id":"channel_message_with_source/0","deprecated":false,"title":"channel_message_with_source()","anchor":"channel_message_with_source/0"},{"id":"deferred_channel_message_with_source/0","deprecated":false,"title":"deferred_channel_message_with_source()","anchor":"deferred_channel_message_with_source/0"},{"id":"deferred_update_message/0","deprecated":false,"title":"deferred_update_message()","anchor":"deferred_update_message/0"},{"id":"modal/0","deprecated":false,"title":"modal()","anchor":"modal/0"},{"id":"pong/0","deprecated":false,"title":"pong()","anchor":"pong/0"},{"id":"update_message/0","deprecated":false,"title":"update_message()","anchor":"update_message/0"}],"key":"functions"}],"nested_title":".InteractionCallbackType","nested_context":"Nostrum.Constants"},{"id":"Nostrum.Constants.InteractionType","deprecated":false,"group":"Constants","title":"Nostrum.Constants.InteractionType","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"application_command/0","deprecated":false,"title":"application_command()","anchor":"application_command/0"},{"id":"application_command_autocomplete/0","deprecated":false,"title":"application_command_autocomplete()","anchor":"application_command_autocomplete/0"},{"id":"message_component/0","deprecated":false,"title":"message_component()","anchor":"message_component/0"},{"id":"modal_submit/0","deprecated":false,"title":"modal_submit()","anchor":"modal_submit/0"},{"id":"ping/0","deprecated":false,"title":"ping()","anchor":"ping/0"}],"key":"functions"}],"nested_title":".InteractionType","nested_context":"Nostrum.Constants"},{"id":"Nostrum.Constants.TextInputStyle","deprecated":false,"group":"Constants","title":"Nostrum.Constants.TextInputStyle","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"paragraph/0","deprecated":false,"title":"paragraph()","anchor":"paragraph/0"},{"id":"short/0","deprecated":false,"title":"short()","anchor":"short/0"}],"key":"functions"}],"nested_title":".TextInputStyle","nested_context":"Nostrum.Constants"},{"id":"Nostrum.Constants.WebhookType","deprecated":false,"group":"Constants","title":"Nostrum.Constants.WebhookType","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"application/0","deprecated":false,"title":"application()","anchor":"application/0"},{"id":"channel_follower/0","deprecated":false,"title":"channel_follower()","anchor":"channel_follower/0"},{"id":"incoming/0","deprecated":false,"title":"incoming()","anchor":"incoming/0"}],"key":"functions"}],"nested_title":".WebhookType","nested_context":"Nostrum.Constants"},{"id":"Nostrum.Snowflake","deprecated":false,"group":"Utilities","title":"Nostrum.Snowflake","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"external_snowflake/0","deprecated":false,"title":"external_snowflake()","anchor":"t:external_snowflake/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"}],"key":"types"},{"name":"Functions","nodes":[{"id":"cast/1","deprecated":false,"title":"cast(value)","anchor":"cast/1"},{"id":"cast!/1","deprecated":false,"title":"cast!(value)","anchor":"cast!/1"},{"id":"creation_time/1","deprecated":false,"title":"creation_time(snowflake)","anchor":"creation_time/1"},{"id":"dump/1","deprecated":false,"title":"dump(snowflake)","anchor":"dump/1"},{"id":"from_datetime/1","deprecated":false,"title":"from_datetime(datetime)","anchor":"from_datetime/1"},{"id":"from_datetime!/1","deprecated":false,"title":"from_datetime!(datetime)","anchor":"from_datetime!/1"},{"id":"is_snowflake/1","deprecated":false,"title":"is_snowflake(term)","anchor":"is_snowflake/1"}],"key":"functions"}]},{"id":"Nostrum.Token","deprecated":false,"group":"Utilities","title":"Nostrum.Token","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"check_token!/0","deprecated":false,"title":"check_token!()","anchor":"check_token!/0"},{"id":"check_token!/1","deprecated":false,"title":"check_token!(token)","anchor":"check_token!/1"}],"key":"functions"}]},{"id":"Nostrum.Util","deprecated":false,"group":"Utilities","title":"Nostrum.Util","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"enum_to_struct/2","deprecated":false,"title":"enum_to_struct(enum, struct)","anchor":"enum_to_struct/2"},{"id":"gateway/0","deprecated":false,"title":"gateway()","anchor":"gateway/0"},{"id":"get_all_shard_latencies/0","deprecated":false,"title":"get_all_shard_latencies()","anchor":"get_all_shard_latencies/0"},{"id":"get_shard_latency/1","deprecated":false,"title":"get_shard_latency(state)","anchor":"get_shard_latency/1"},{"id":"map_update_if_present/3","deprecated":false,"title":"map_update_if_present(map, key, fun)","anchor":"map_update_if_present/3"},{"id":"maybe_to_atom/1","deprecated":false,"title":"maybe_to_atom(token)","anchor":"maybe_to_atom/1"},{"id":"maybe_to_datetime/1","deprecated":false,"title":"maybe_to_datetime(dt)","anchor":"maybe_to_datetime/1"},{"id":"maybe_to_unixtime/1","deprecated":false,"title":"maybe_to_unixtime(stamp)","anchor":"maybe_to_unixtime/1"},{"id":"now/0","deprecated":false,"title":"now()","anchor":"now/0"},{"id":"now_iso/0","deprecated":false,"title":"now_iso()","anchor":"now_iso/0"},{"id":"num_shards/0","deprecated":false,"title":"num_shards()","anchor":"num_shards/0"},{"id":"safe_atom_map/1","deprecated":false,"title":"safe_atom_map(term)","anchor":"safe_atom_map/1"},{"id":"unused_atoms/0","deprecated":false,"title":"unused_atoms()","anchor":"unused_atoms/0"},{"id":"usec_now/0","deprecated":false,"title":"usec_now()","anchor":"usec_now/0"}],"key":"functions"}]},{"id":"Nostrum.Store.GuildShardMapping","deprecated":false,"group":"Stores","title":"Nostrum.Store.GuildShardMapping","sections":[{"id":"Purpose","anchor":"module-purpose"},{"id":"Configuration","anchor":"module-configuration"}],"nodeGroups":[{"name":"Callbacks","nodes":[{"id":"child_spec/1","deprecated":false,"title":"child_spec(term)","anchor":"c:child_spec/1"},{"id":"create/2","deprecated":false,"title":"create(id, shard_num)","anchor":"c:create/2"},{"id":"delete/1","deprecated":false,"title":"delete(id)","anchor":"c:delete/1"},{"id":"get/1","deprecated":false,"title":"get(id)","anchor":"c:get/1"}],"key":"callbacks"},{"name":"Functions","nodes":[{"id":"create/2","deprecated":false,"title":"create(guild_id, shard_num)","anchor":"create/2"},{"id":"delete/1","deprecated":false,"title":"delete(guild_id)","anchor":"delete/1"},{"id":"get/1","deprecated":false,"title":"get(guild_id)","anchor":"get/1"}],"key":"functions"}],"nested_title":".GuildShardMapping","nested_context":"Nostrum.Store"},{"id":"Nostrum.Store.Supervisor","deprecated":false,"group":"Stores","title":"Nostrum.Store.Supervisor","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"child_spec/1","deprecated":false,"title":"child_spec(init_arg)","anchor":"child_spec/1"},{"id":"init/1","deprecated":false,"title":"init(list)","anchor":"init/1"},{"id":"start_link/1","deprecated":false,"title":"start_link(list)","anchor":"start_link/1"}],"key":"functions"}],"nested_title":".Supervisor","nested_context":"Nostrum.Store"},{"id":"Nostrum.Store.UnavailableGuild","deprecated":false,"group":"Stores","title":"Nostrum.Store.UnavailableGuild","sections":[{"id":"Purpose","anchor":"module-purpose"},{"id":"Configuration","anchor":"module-configuration"},{"id":"Implementation","anchor":"module-implementation"}],"nodeGroups":[{"name":"Callbacks","nodes":[{"id":"child_spec/1","deprecated":false,"title":"child_spec(term)","anchor":"c:child_spec/1"},{"id":"create/1","deprecated":false,"title":"create(id)","anchor":"c:create/1"},{"id":"is?/1","deprecated":false,"title":"is?(id)","anchor":"c:is?/1"}],"key":"callbacks"},{"name":"Functions","nodes":[{"id":"create/1","deprecated":false,"title":"create(guild_id)","anchor":"create/1"},{"id":"is?/1","deprecated":false,"title":"is?(guild_id)","anchor":"is?/1"}],"key":"functions"}],"nested_title":".UnavailableGuild","nested_context":"Nostrum.Store"},{"id":"Nostrum.Cache.MessageCache.Mnesia","deprecated":false,"group":"Pluggable caches & stores","title":"Nostrum.Cache.MessageCache.Mnesia","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"bulk_delete/2","deprecated":false,"title":"bulk_delete(channel_id, message_ids)","anchor":"bulk_delete/2"},{"id":"channel_delete/1","deprecated":false,"title":"channel_delete(channel_id)","anchor":"channel_delete/1"},{"id":"child_spec/1","deprecated":false,"title":"child_spec(init_arg)","anchor":"child_spec/1"},{"id":"clear/0","deprecated":false,"title":"clear()","anchor":"clear/0"},{"id":"create/1","deprecated":false,"title":"create(payload)","anchor":"create/1"},{"id":"delete/2","deprecated":false,"title":"delete(channel_id, message_id)","anchor":"delete/2"},{"id":"get/1","deprecated":false,"title":"get(message_id)","anchor":"get/1"},{"id":"init/1","deprecated":false,"title":"init(init_arg)","anchor":"init/1"},{"id":"query_handle/0","deprecated":false,"title":"query_handle()","anchor":"query_handle/0"},{"id":"start_link/1","deprecated":false,"title":"start_link(init_arg)","anchor":"start_link/1"},{"id":"table/0","deprecated":false,"title":"table()","anchor":"table/0"},{"id":"teardown/0","deprecated":false,"title":"teardown()","anchor":"teardown/0"},{"id":"update/1","deprecated":false,"title":"update(payload)","anchor":"update/1"},{"id":"wrap_qlc/1","deprecated":false,"title":"wrap_qlc(fun)","anchor":"wrap_qlc/1"}],"key":"functions"}],"nested_title":".MessageCache.Mnesia","nested_context":"Nostrum.Cache"},{"id":"Nostrum.Cache.MessageCache.Noop","deprecated":false,"group":"Pluggable caches & stores","title":"Nostrum.Cache.MessageCache.Noop","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"child_spec/1","deprecated":false,"title":"child_spec(init_arg)","anchor":"child_spec/1"},{"id":"start_link/1","deprecated":false,"title":"start_link(init_arg)","anchor":"start_link/1"}],"key":"functions"}],"nested_title":".MessageCache.Noop","nested_context":"Nostrum.Cache"},{"id":"Nostrum.Cache.ChannelGuildMapping.ETS","deprecated":false,"group":"Pluggable caches & stores","title":"Nostrum.Cache.ChannelGuildMapping.ETS","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"child_spec/1","deprecated":false,"title":"child_spec(init_arg)","anchor":"child_spec/1"},{"id":"create/2","deprecated":false,"title":"create(channel_id, guild_id)","anchor":"create/2"},{"id":"delete/1","deprecated":false,"title":"delete(channel_id)","anchor":"delete/1"},{"id":"get/1","deprecated":false,"title":"get(channel_id)","anchor":"get/1"},{"id":"init/1","deprecated":false,"title":"init(init_arg)","anchor":"init/1"},{"id":"start_link/1","deprecated":false,"title":"start_link(init_arg)","anchor":"start_link/1"},{"id":"table/0","deprecated":false,"title":"table()","anchor":"table/0"}],"key":"functions"}],"nested_title":".ETS","nested_context":"Nostrum.Cache.ChannelGuildMapping"},{"id":"Nostrum.Cache.ChannelGuildMapping.Mnesia","deprecated":false,"group":"Pluggable caches & stores","title":"Nostrum.Cache.ChannelGuildMapping.Mnesia","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"child_spec/1","deprecated":false,"title":"child_spec(init_arg)","anchor":"child_spec/1"},{"id":"create/2","deprecated":false,"title":"create(channel_id, guild_id)","anchor":"create/2"},{"id":"delete/1","deprecated":false,"title":"delete(channel_id)","anchor":"delete/1"},{"id":"get/1","deprecated":false,"title":"get(channel_id)","anchor":"get/1"},{"id":"init/1","deprecated":false,"title":"init(init_arg)","anchor":"init/1"},{"id":"start_link/1","deprecated":false,"title":"start_link(init_arg)","anchor":"start_link/1"},{"id":"table/0","deprecated":false,"title":"table()","anchor":"table/0"},{"id":"teardown/0","deprecated":false,"title":"teardown()","anchor":"teardown/0"}],"key":"functions"}],"nested_title":".Mnesia","nested_context":"Nostrum.Cache.ChannelGuildMapping"},{"id":"Nostrum.Cache.ChannelGuildMapping.NoOp","deprecated":false,"group":"Pluggable caches & stores","title":"Nostrum.Cache.ChannelGuildMapping.NoOp","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"child_spec/1","deprecated":false,"title":"child_spec(init_arg)","anchor":"child_spec/1"},{"id":"start_link/1","deprecated":false,"title":"start_link(init_arg)","anchor":"start_link/1"}],"key":"functions"}],"nested_title":".NoOp","nested_context":"Nostrum.Cache.ChannelGuildMapping"},{"id":"Nostrum.Cache.GuildCache.ETS","deprecated":false,"group":"Pluggable caches & stores","title":"Nostrum.Cache.GuildCache.ETS","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"channel_create/2","deprecated":false,"title":"channel_create(guild_id, channel)","anchor":"channel_create/2"},{"id":"channel_delete/2","deprecated":false,"title":"channel_delete(guild_id, channel_id)","anchor":"channel_delete/2"},{"id":"channel_update/2","deprecated":false,"title":"channel_update(guild_id, channel)","anchor":"channel_update/2"},{"id":"child_spec/1","deprecated":false,"title":"child_spec(init_arg)","anchor":"child_spec/1"},{"id":"create/1","deprecated":false,"title":"create(payload)","anchor":"create/1"},{"id":"delete/1","deprecated":false,"title":"delete(guild_id)","anchor":"delete/1"},{"id":"emoji_update/2","deprecated":false,"title":"emoji_update(guild_id, emojis)","anchor":"emoji_update/2"},{"id":"init/1","deprecated":false,"title":"init(init_arg)","anchor":"init/1"},{"id":"member_count_down/1","deprecated":false,"title":"member_count_down(guild_id)","anchor":"member_count_down/1"},{"id":"member_count_up/1","deprecated":false,"title":"member_count_up(guild_id)","anchor":"member_count_up/1"},{"id":"query_handle/0","deprecated":false,"title":"query_handle()","anchor":"query_handle/0"},{"id":"role_create/2","deprecated":false,"title":"role_create(guild_id, role)","anchor":"role_create/2"},{"id":"role_delete/2","deprecated":false,"title":"role_delete(guild_id, role_id)","anchor":"role_delete/2"},{"id":"role_update/2","deprecated":false,"title":"role_update(guild_id, role)","anchor":"role_update/2"},{"id":"start_link/1","deprecated":false,"title":"start_link(init_arg)","anchor":"start_link/1"},{"id":"stickers_update/2","deprecated":false,"title":"stickers_update(guild_id, stickers)","anchor":"stickers_update/2"},{"id":"tabname/0","deprecated":false,"title":"tabname()","anchor":"tabname/0"},{"id":"update/1","deprecated":false,"title":"update(payload)","anchor":"update/1"},{"id":"voice_state_update/2","deprecated":false,"title":"voice_state_update(guild_id, payload)","anchor":"voice_state_update/2"}],"key":"functions"}],"nested_title":".ETS","nested_context":"Nostrum.Cache.GuildCache"},{"id":"Nostrum.Cache.GuildCache.Mnesia","deprecated":false,"group":"Pluggable caches & stores","title":"Nostrum.Cache.GuildCache.Mnesia","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"channel_create/2","deprecated":false,"title":"channel_create(guild_id, channel)","anchor":"channel_create/2"},{"id":"channel_delete/2","deprecated":false,"title":"channel_delete(guild_id, channel_id)","anchor":"channel_delete/2"},{"id":"channel_update/2","deprecated":false,"title":"channel_update(guild_id, channel)","anchor":"channel_update/2"},{"id":"child_spec/1","deprecated":false,"title":"child_spec(init_arg)","anchor":"child_spec/1"},{"id":"clear/0","deprecated":false,"title":"clear()","anchor":"clear/0"},{"id":"create/1","deprecated":false,"title":"create(payload)","anchor":"create/1"},{"id":"delete/1","deprecated":false,"title":"delete(guild_id)","anchor":"delete/1"},{"id":"emoji_update/2","deprecated":false,"title":"emoji_update(guild_id, payload)","anchor":"emoji_update/2"},{"id":"init/1","deprecated":false,"title":"init(init_arg)","anchor":"init/1"},{"id":"member_count_down/1","deprecated":false,"title":"member_count_down(guild_id)","anchor":"member_count_down/1"},{"id":"member_count_up/1","deprecated":false,"title":"member_count_up(guild_id)","anchor":"member_count_up/1"},{"id":"query_handle/0","deprecated":false,"title":"query_handle()","anchor":"query_handle/0"},{"id":"role_create/2","deprecated":false,"title":"role_create(guild_id, payload)","anchor":"role_create/2"},{"id":"role_delete/2","deprecated":false,"title":"role_delete(guild_id, role_id)","anchor":"role_delete/2"},{"id":"role_update/2","deprecated":false,"title":"role_update(guild_id, role)","anchor":"role_update/2"},{"id":"start_link/1","deprecated":false,"title":"start_link(init_arg)","anchor":"start_link/1"},{"id":"stickers_update/2","deprecated":false,"title":"stickers_update(guild_id, stickers)","anchor":"stickers_update/2"},{"id":"table/0","deprecated":false,"title":"table()","anchor":"table/0"},{"id":"teardown/0","deprecated":false,"title":"teardown()","anchor":"teardown/0"},{"id":"update/1","deprecated":false,"title":"update(payload)","anchor":"update/1"},{"id":"voice_state_update/2","deprecated":false,"title":"voice_state_update(guild_id, payload)","anchor":"voice_state_update/2"},{"id":"wrap_qlc/1","deprecated":false,"title":"wrap_qlc(fun)","anchor":"wrap_qlc/1"}],"key":"functions"}],"nested_title":".Mnesia","nested_context":"Nostrum.Cache.GuildCache"},{"id":"Nostrum.Cache.GuildCache.NoOp","deprecated":false,"group":"Pluggable caches & stores","title":"Nostrum.Cache.GuildCache.NoOp","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"child_spec/1","deprecated":false,"title":"child_spec(init_arg)","anchor":"child_spec/1"},{"id":"init/1","deprecated":false,"title":"init(init_arg)","anchor":"init/1"},{"id":"start_link/1","deprecated":false,"title":"start_link(init_arg)","anchor":"start_link/1"}],"key":"functions"}],"nested_title":".NoOp","nested_context":"Nostrum.Cache.GuildCache"},{"id":"Nostrum.Cache.MemberCache.ETS","deprecated":false,"group":"Pluggable caches & stores","title":"Nostrum.Cache.MemberCache.ETS","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"bulk_create/2","deprecated":false,"title":"bulk_create(guild_id, members)","anchor":"bulk_create/2"},{"id":"child_spec/1","deprecated":false,"title":"child_spec(init_arg)","anchor":"child_spec/1"},{"id":"clear/0","deprecated":false,"title":"clear()","anchor":"clear/0"},{"id":"create/2","deprecated":false,"title":"create(guild_id, payload)","anchor":"create/2"},{"id":"delete/2","deprecated":false,"title":"delete(guild_id, user_id)","anchor":"delete/2"},{"id":"init/1","deprecated":false,"title":"init(init_arg)","anchor":"init/1"},{"id":"query_handle/0","deprecated":false,"title":"query_handle()","anchor":"query_handle/0"},{"id":"start_link/1","deprecated":false,"title":"start_link(init_arg)","anchor":"start_link/1"},{"id":"table/0","deprecated":false,"title":"table()","anchor":"table/0"},{"id":"update/2","deprecated":false,"title":"update(guild_id, payload)","anchor":"update/2"},{"id":"wrap_qlc/1","deprecated":false,"title":"wrap_qlc(fun)","anchor":"wrap_qlc/1"}],"key":"functions"}],"nested_title":".ETS","nested_context":"Nostrum.Cache.MemberCache"},{"id":"Nostrum.Cache.MemberCache.Mnesia","deprecated":false,"group":"Pluggable caches & stores","title":"Nostrum.Cache.MemberCache.Mnesia","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"bulk_create/2","deprecated":false,"title":"bulk_create(guild_id, members)","anchor":"bulk_create/2"},{"id":"child_spec/1","deprecated":false,"title":"child_spec(init_arg)","anchor":"child_spec/1"},{"id":"clear/0","deprecated":false,"title":"clear()","anchor":"clear/0"},{"id":"create/2","deprecated":false,"title":"create(guild_id, payload)","anchor":"create/2"},{"id":"delete/2","deprecated":false,"title":"delete(guild_id, user_id)","anchor":"delete/2"},{"id":"init/1","deprecated":false,"title":"init(init_arg)","anchor":"init/1"},{"id":"query_handle/0","deprecated":false,"title":"query_handle()","anchor":"query_handle/0"},{"id":"start_link/1","deprecated":false,"title":"start_link(init_arg)","anchor":"start_link/1"},{"id":"table/0","deprecated":false,"title":"table()","anchor":"table/0"},{"id":"teardown/0","deprecated":false,"title":"teardown()","anchor":"teardown/0"},{"id":"update/2","deprecated":false,"title":"update(guild_id, payload)","anchor":"update/2"},{"id":"wrap_qlc/1","deprecated":false,"title":"wrap_qlc(fun)","anchor":"wrap_qlc/1"}],"key":"functions"}],"nested_title":".Mnesia","nested_context":"Nostrum.Cache.MemberCache"},{"id":"Nostrum.Cache.MemberCache.NoOp","deprecated":false,"group":"Pluggable caches & stores","title":"Nostrum.Cache.MemberCache.NoOp","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"child_spec/1","deprecated":false,"title":"child_spec(init_arg)","anchor":"child_spec/1"},{"id":"start_link/1","deprecated":false,"title":"start_link(init_arg)","anchor":"start_link/1"}],"key":"functions"}],"nested_title":".NoOp","nested_context":"Nostrum.Cache.MemberCache"},{"id":"Nostrum.Cache.PresenceCache.ETS","deprecated":false,"group":"Pluggable caches & stores","title":"Nostrum.Cache.PresenceCache.ETS","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"bulk_create/2","deprecated":false,"title":"bulk_create(guild_id, presences)","anchor":"bulk_create/2"},{"id":"child_spec/1","deprecated":false,"title":"child_spec(init_arg)","anchor":"child_spec/1"},{"id":"create/1","deprecated":false,"title":"create(presence)","anchor":"create/1"},{"id":"init/1","deprecated":false,"title":"init(init_arg)","anchor":"init/1"},{"id":"query_handle/0","deprecated":false,"title":"query_handle()","anchor":"query_handle/0"},{"id":"start_link/1","deprecated":false,"title":"start_link(init_arg)","anchor":"start_link/1"},{"id":"table/0","deprecated":false,"title":"table()","anchor":"table/0"},{"id":"update/1","deprecated":false,"title":"update(new)","anchor":"update/1"}],"key":"functions"}],"nested_title":".ETS","nested_context":"Nostrum.Cache.PresenceCache"},{"id":"Nostrum.Cache.PresenceCache.Mnesia","deprecated":false,"group":"Pluggable caches & stores","title":"Nostrum.Cache.PresenceCache.Mnesia","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"bulk_create/2","deprecated":false,"title":"bulk_create(guild_id, presences)","anchor":"bulk_create/2"},{"id":"child_spec/1","deprecated":false,"title":"child_spec(init_arg)","anchor":"child_spec/1"},{"id":"clear/0","deprecated":false,"title":"clear()","anchor":"clear/0"},{"id":"create/1","deprecated":false,"title":"create(presence)","anchor":"create/1"},{"id":"init/1","deprecated":false,"title":"init(init_arg)","anchor":"init/1"},{"id":"query_handle/0","deprecated":false,"title":"query_handle()","anchor":"query_handle/0"},{"id":"start_link/1","deprecated":false,"title":"start_link(init_arg)","anchor":"start_link/1"},{"id":"table/0","deprecated":false,"title":"table()","anchor":"table/0"},{"id":"teardown/0","deprecated":false,"title":"teardown()","anchor":"teardown/0"},{"id":"update/1","deprecated":false,"title":"update(new)","anchor":"update/1"},{"id":"wrap_qlc/1","deprecated":false,"title":"wrap_qlc(fun)","anchor":"wrap_qlc/1"}],"key":"functions"}],"nested_title":".Mnesia","nested_context":"Nostrum.Cache.PresenceCache"},{"id":"Nostrum.Cache.PresenceCache.NoOp","deprecated":false,"group":"Pluggable caches & stores","title":"Nostrum.Cache.PresenceCache.NoOp","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"child_spec/1","deprecated":false,"title":"child_spec(init_arg)","anchor":"child_spec/1"},{"id":"init/1","deprecated":false,"title":"init(init_arg)","anchor":"init/1"},{"id":"start_link/1","deprecated":false,"title":"start_link(init_arg)","anchor":"start_link/1"}],"key":"functions"}],"nested_title":".NoOp","nested_context":"Nostrum.Cache.PresenceCache"},{"id":"Nostrum.Cache.UserCache.ETS","deprecated":false,"group":"Pluggable caches & stores","title":"Nostrum.Cache.UserCache.ETS","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"bulk_create/1","deprecated":false,"title":"bulk_create(users)","anchor":"bulk_create/1"},{"id":"child_spec/1","deprecated":false,"title":"child_spec(init_arg)","anchor":"child_spec/1"},{"id":"create/1","deprecated":false,"title":"create(payload)","anchor":"create/1"},{"id":"init/1","deprecated":false,"title":"init(init_arg)","anchor":"init/1"},{"id":"query_handle/0","deprecated":false,"title":"query_handle()","anchor":"query_handle/0"},{"id":"start_link/1","deprecated":false,"title":"start_link(init_arg)","anchor":"start_link/1"},{"id":"table/0","deprecated":false,"title":"table()","anchor":"table/0"},{"id":"update/1","deprecated":false,"title":"update(info)","anchor":"update/1"}],"key":"functions"}],"nested_title":".ETS","nested_context":"Nostrum.Cache.UserCache"},{"id":"Nostrum.Cache.UserCache.Mnesia","deprecated":false,"group":"Pluggable caches & stores","title":"Nostrum.Cache.UserCache.Mnesia","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"bulk_create/1","deprecated":false,"title":"bulk_create(users)","anchor":"bulk_create/1"},{"id":"child_spec/1","deprecated":false,"title":"child_spec(init_arg)","anchor":"child_spec/1"},{"id":"clear/0","deprecated":false,"title":"clear()","anchor":"clear/0"},{"id":"create/1","deprecated":false,"title":"create(payload)","anchor":"create/1"},{"id":"delete/1","deprecated":false,"title":"delete(user_id)","anchor":"delete/1"},{"id":"init/1","deprecated":false,"title":"init(init_arg)","anchor":"init/1"},{"id":"query_handle/0","deprecated":false,"title":"query_handle()","anchor":"query_handle/0"},{"id":"start_link/1","deprecated":false,"title":"start_link(init_arg)","anchor":"start_link/1"},{"id":"table/0","deprecated":false,"title":"table()","anchor":"table/0"},{"id":"teardown/0","deprecated":false,"title":"teardown()","anchor":"teardown/0"},{"id":"update/1","deprecated":false,"title":"update(payload)","anchor":"update/1"},{"id":"wrap_qlc/1","deprecated":false,"title":"wrap_qlc(fun)","anchor":"wrap_qlc/1"}],"key":"functions"}],"nested_title":".Mnesia","nested_context":"Nostrum.Cache.UserCache"},{"id":"Nostrum.Cache.UserCache.NoOp","deprecated":false,"group":"Pluggable caches & stores","title":"Nostrum.Cache.UserCache.NoOp","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"child_spec/1","deprecated":false,"title":"child_spec(init_arg)","anchor":"child_spec/1"},{"id":"start_link/1","deprecated":false,"title":"start_link(init_arg)","anchor":"start_link/1"}],"key":"functions"}],"nested_title":".NoOp","nested_context":"Nostrum.Cache.UserCache"},{"id":"Nostrum.Store.GuildShardMapping.ETS","deprecated":false,"group":"Pluggable caches & stores","title":"Nostrum.Store.GuildShardMapping.ETS","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"child_spec/1","deprecated":false,"title":"child_spec(init_arg)","anchor":"child_spec/1"},{"id":"create/2","deprecated":false,"title":"create(guild_id, shard_num)","anchor":"create/2"},{"id":"delete/1","deprecated":false,"title":"delete(guild_id)","anchor":"delete/1"},{"id":"get/1","deprecated":false,"title":"get(guild_id)","anchor":"get/1"},{"id":"init/1","deprecated":false,"title":"init(init_arg)","anchor":"init/1"},{"id":"start_link/1","deprecated":false,"title":"start_link(init_arg)","anchor":"start_link/1"},{"id":"table/0","deprecated":false,"title":"table()","anchor":"table/0"}],"key":"functions"}],"nested_title":".ETS","nested_context":"Nostrum.Store.GuildShardMapping"},{"id":"Nostrum.Store.GuildShardMapping.Mnesia","deprecated":false,"group":"Pluggable caches & stores","title":"Nostrum.Store.GuildShardMapping.Mnesia","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"child_spec/1","deprecated":false,"title":"child_spec(init_arg)","anchor":"child_spec/1"},{"id":"create/2","deprecated":false,"title":"create(guild_id, shard_num)","anchor":"create/2"},{"id":"delete/1","deprecated":false,"title":"delete(guild_id)","anchor":"delete/1"},{"id":"get/1","deprecated":false,"title":"get(guild_id)","anchor":"get/1"},{"id":"init/1","deprecated":false,"title":"init(init_arg)","anchor":"init/1"},{"id":"start_link/1","deprecated":false,"title":"start_link(init_arg)","anchor":"start_link/1"},{"id":"table/0","deprecated":false,"title":"table()","anchor":"table/0"},{"id":"teardown/0","deprecated":false,"title":"teardown()","anchor":"teardown/0"}],"key":"functions"}],"nested_title":".Mnesia","nested_context":"Nostrum.Store.GuildShardMapping"},{"id":"Nostrum.Store.UnavailableGuild.ETS","deprecated":false,"group":"Pluggable caches & stores","title":"Nostrum.Store.UnavailableGuild.ETS","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"child_spec/1","deprecated":false,"title":"child_spec(init_arg)","anchor":"child_spec/1"},{"id":"create/1","deprecated":false,"title":"create(guild_id)","anchor":"create/1"},{"id":"init/1","deprecated":false,"title":"init(init_arg)","anchor":"init/1"},{"id":"is?/1","deprecated":false,"title":"is?(guild_id)","anchor":"is?/1"},{"id":"start_link/1","deprecated":false,"title":"start_link(init_arg)","anchor":"start_link/1"},{"id":"table/0","deprecated":false,"title":"table()","anchor":"table/0"}],"key":"functions"}],"nested_title":".ETS","nested_context":"Nostrum.Store.UnavailableGuild"},{"id":"Nostrum.Store.UnavailableGuild.Mnesia","deprecated":false,"group":"Pluggable caches & stores","title":"Nostrum.Store.UnavailableGuild.Mnesia","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"child_spec/1","deprecated":false,"title":"child_spec(init_arg)","anchor":"child_spec/1"},{"id":"create/1","deprecated":false,"title":"create(guild_id)","anchor":"create/1"},{"id":"init/1","deprecated":false,"title":"init(init_arg)","anchor":"init/1"},{"id":"is?/1","deprecated":false,"title":"is?(guild_id)","anchor":"is?/1"},{"id":"start_link/1","deprecated":false,"title":"start_link(init_arg)","anchor":"start_link/1"},{"id":"table/0","deprecated":false,"title":"table()","anchor":"table/0"},{"id":"teardown/0","deprecated":false,"title":"teardown()","anchor":"teardown/0"}],"key":"functions"}],"nested_title":".Mnesia","nested_context":"Nostrum.Store.UnavailableGuild"},{"id":"Nostrum.Api.Ratelimiter","deprecated":false,"group":"Internal modules","title":"Nostrum.Api.Ratelimiter","sections":[{"id":"Purpose","anchor":"module-purpose"},{"id":"Asynchronous requests","anchor":"module-asynchronous-requests"},{"id":"Multi-node","anchor":"module-multi-node"},{"id":"Inner workings","anchor":"module-inner-workings"}],"nodeGroups":[{"name":"Types","nodes":[{"id":"bucket/0","deprecated":false,"title":"bucket()","anchor":"t:bucket/0"},{"id":"queued_request/0","deprecated":false,"title":"queued_request()","anchor":"t:queued_request/0"},{"id":"remaining/0","deprecated":false,"title":"remaining()","anchor":"t:remaining/0"},{"id":"request/0","deprecated":false,"title":"request()","anchor":"t:request/0"},{"id":"state/0","deprecated":false,"title":"state()","anchor":"t:state/0"}],"key":"types"},{"name":"Functions","nodes":[{"id":"callback_mode/0","deprecated":false,"title":"callback_mode()","anchor":"callback_mode/0"},{"id":"child_spec/1","deprecated":false,"title":"child_spec(opts)","anchor":"child_spec/1"},{"id":"code_change/4","deprecated":false,"title":"code_change(version, state, data, extra)","anchor":"code_change/4"},{"id":"connected/3","deprecated":false,"title":"connected(arg1, request, data)","anchor":"connected/3"},{"id":"connecting/3","deprecated":false,"title":"connecting(arg1, arg2, data)","anchor":"connecting/3"},{"id":"disconnected/3","deprecated":false,"title":"disconnected(arg, arg2, data)","anchor":"disconnected/3"},{"id":"get_endpoint/2","deprecated":false,"title":"get_endpoint(route, method)","anchor":"get_endpoint/2"},{"id":"global_limit/3","deprecated":false,"title":"global_limit(arg1, next, data)","anchor":"global_limit/3"},{"id":"init/1","deprecated":false,"title":"init(token)","anchor":"init/1"},{"id":"queue/1","deprecated":false,"title":"queue(request)","anchor":"queue/1"},{"id":"start_link/1","deprecated":false,"title":"start_link(arg)","anchor":"start_link/1"}],"key":"functions"}]},{"id":"Nostrum.Shard.Session","deprecated":false,"group":"Internal modules","title":"Nostrum.Shard.Session","sections":[{"id":"Purpose","anchor":"module-purpose"},{"id":"Inner workings","anchor":"module-inner-workings"}],"nodeGroups":[{"name":"Functions","nodes":[{"id":"callback_mode/0","deprecated":false,"title":"callback_mode()","anchor":"callback_mode/0"},{"id":"child_spec/1","deprecated":false,"title":"child_spec(opts)","anchor":"child_spec/1"},{"id":"connected/3","deprecated":false,"title":"connected(arg1, request, data)","anchor":"connected/3"},{"id":"connecting_http/3","deprecated":false,"title":"connecting_http(arg1, from, data)","anchor":"connecting_http/3"},{"id":"connecting_ws/3","deprecated":false,"title":"connecting_ws(arg1, arg2, data)","anchor":"connecting_ws/3"},{"id":"disconnect/1","deprecated":false,"title":"disconnect(pid)","anchor":"disconnect/1"},{"id":"disconnect/2","deprecated":false,"title":"disconnect(pid, timeout)","anchor":"disconnect/2"},{"id":"disconnected/3","deprecated":false,"title":"disconnected(arg1, arg2, data)","anchor":"disconnected/3"},{"id":"format_status/1","deprecated":false,"title":"format_status(state)","anchor":"format_status/1"},{"id":"get_ws_state/1","deprecated":false,"title":"get_ws_state(pid)","anchor":"get_ws_state/1"},{"id":"init/1","deprecated":false,"title":"init(arg1)","anchor":"init/1"},{"id":"request_guild_members/3","deprecated":false,"title":"request_guild_members(pid, guild_id, limit \\\\ 0)","anchor":"request_guild_members/3"},{"id":"start_link/2","deprecated":false,"title":"start_link(opts, statem_opts)","anchor":"start_link/2"},{"id":"update_status/5","deprecated":false,"title":"update_status(pid, status, game, stream, type)","anchor":"update_status/5"},{"id":"update_voice_state/5","deprecated":false,"title":"update_voice_state(pid, guild_id, channel_id, self_mute, self_deaf)","anchor":"update_voice_state/5"}],"key":"functions"}]},{"id":"Nostrum.Shard.Session.Compression","deprecated":false,"group":"Internal modules","title":"Nostrum.Shard.Session.Compression","sections":[],"nodeGroups":[{"name":"Callbacks","nodes":[{"id":"create_context/0","deprecated":false,"title":"create_context()","anchor":"c:create_context/0"},{"id":"inflate/2","deprecated":false,"title":"inflate(reference, iodata)","anchor":"c:inflate/2"},{"id":"reset_context/1","deprecated":false,"title":"reset_context(reference)","anchor":"c:reset_context/1"}],"key":"callbacks"}]},{"id":"Nostrum.Shard.Session.Compression.Zlib","deprecated":false,"group":"Internal modules","title":"Nostrum.Shard.Session.Compression.Zlib","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"create_context/0","deprecated":false,"title":"create_context()","anchor":"create_context/0"},{"id":"inflate/2","deprecated":false,"title":"inflate(ctx, frame)","anchor":"inflate/2"},{"id":"reset_context/1","deprecated":false,"title":"reset_context(ctx)","anchor":"reset_context/1"}],"key":"functions"}]},{"id":"Nostrum.Shard.Session.Compression.Zstd","deprecated":false,"group":"Internal modules","title":"Nostrum.Shard.Session.Compression.Zstd","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"check_available!/0","deprecated":false,"title":"check_available!()","anchor":"check_available!/0"},{"id":"create_context/0","deprecated":false,"title":"create_context()","anchor":"create_context/0"},{"id":"inflate/2","deprecated":false,"title":"inflate(ctx, frame)","anchor":"inflate/2"},{"id":"reset_context/1","deprecated":false,"title":"reset_context(ctx)","anchor":"reset_context/1"}],"key":"functions"}]},{"id":"Nostrum.Shard.Supervisor","deprecated":false,"group":"Internal modules","title":"Nostrum.Shard.Supervisor","sections":[{"id":"Implementation","anchor":"module-implementation"}],"nodeGroups":[{"name":"Types","nodes":[{"id":"resume_information/0","deprecated":false,"title":"resume_information()","anchor":"t:resume_information/0"},{"id":"shard_num/0","deprecated":false,"title":"shard_num()","anchor":"t:shard_num/0"},{"id":"total_shards/0","deprecated":false,"title":"total_shards()","anchor":"t:total_shards/0"}],"key":"types"},{"name":"Functions","nodes":[{"id":"child_spec/1","deprecated":false,"title":"child_spec(arg)","anchor":"child_spec/1"},{"id":"connect/2","deprecated":false,"title":"connect(shard_num, total_shards)","anchor":"connect/2"},{"id":"disconnect/1","deprecated":false,"title":"disconnect(shard_num)","anchor":"disconnect/1"},{"id":"reconnect/1","deprecated":false,"title":"reconnect(opts)","anchor":"reconnect/1"},{"id":"start_link/1","deprecated":false,"title":"start_link(args)","anchor":"start_link/1"},{"id":"update_status/4","deprecated":false,"title":"update_status(status, game, stream, type)","anchor":"update_status/4"},{"id":"update_voice_state/4","deprecated":false,"title":"update_voice_state(guild_id, channel_id, self_mute, self_deaf)","anchor":"update_voice_state/4"}],"key":"functions"}]},{"id":"Nostrum.StateMachineTranslator","deprecated":false,"group":"Internal modules","title":"Nostrum.StateMachineTranslator","sections":[{"id":"Reasoning","anchor":"module-reasoning"}],"nodeGroups":[{"name":"Functions","nodes":[{"id":"translate/4","deprecated":false,"title":"translate(min_level, arg2, arg3, arg4)","anchor":"translate/4"}],"key":"functions"}]},{"id":"Nostrum.Error.ApiError","deprecated":false,"group":"Exceptions","title":"Nostrum.Error.ApiError","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"detailed_error/0","deprecated":false,"title":"detailed_error()","anchor":"t:detailed_error/0"},{"id":"discord_status_code/0","deprecated":false,"title":"discord_status_code()","anchor":"t:discord_status_code/0"},{"id":"error/0","deprecated":false,"title":"error()","anchor":"t:error/0"},{"id":"error_list_map/0","deprecated":false,"title":"error_list_map()","anchor":"t:error_list_map/0"},{"id":"errors/0","deprecated":false,"title":"errors()","anchor":"t:errors/0"},{"id":"response/0","deprecated":false,"title":"response()","anchor":"t:response/0"},{"id":"status_code/0","deprecated":false,"title":"status_code()","anchor":"t:status_code/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"}],"key":"types"}]},{"id":"Nostrum.Error.CacheError","deprecated":false,"group":"Exceptions","title":"Nostrum.Error.CacheError","sections":[]},{"id":"Nostrum.Error.VoiceError","deprecated":false,"group":"Exceptions","title":"Nostrum.Error.VoiceError","sections":[]}],"extras":[{"id":"api-reference","group":"","title":"API Reference","headers":[{"id":"Modules","anchor":"modules"},{"id":"Mix Tasks","anchor":"mix-tasks"}]},{"id":"intro","group":"","title":"Introduction","headers":[{"id":"Setup","anchor":"setup"},{"id":"Configuration options","anchor":"configuration-options"},{"id":"Logging","anchor":"logging"},{"id":"Example bots","anchor":"example-bots"}]},{"id":"api-4","group":"","title":"API","headers":[{"id":"Banged (!) API methods","anchor":"banged-api-methods"},{"id":"Abstractions","anchor":"abstractions"},{"id":"Ratelimiting","anchor":"ratelimiting"},{"id":"REST-only","anchor":"rest-only"}]},{"id":"application_commands","group":"","title":"Application commands","headers":[{"id":"Permissions required","anchor":"permissions-required"},{"id":"Getting started","anchor":"getting-started"},{"id":"Receiving interactions","anchor":"receiving-interactions"},{"id":"Responding to interactions","anchor":"responding-to-interactions"}]},{"id":"gateway_intents","group":"","title":"Gateway Intents","headers":[]},{"id":"event_handling","group":"Functionality","title":"Event handling","headers":[]},{"id":"state","group":"Functionality","title":"State","headers":[{"id":"Caches","anchor":"caches"},{"id":"Query list comprehensions","anchor":"query-list-comprehensions"},{"id":"Internal state","anchor":"internal-state"}]},{"id":"voice-3","group":"Functionality","title":"Voice","headers":[{"id":"Voice channels","anchor":"voice-channels"},{"id":"FFmpeg","anchor":"ffmpeg"},{"id":"youtube-dl","anchor":"youtube-dl"},{"id":"streamlink","anchor":"streamlink"},{"id":"Audio Timeout","anchor":"audio-timeout"},{"id":"Audio Frames Per Burst","anchor":"audio-frames-per-burst"},{"id":"Voice Events","anchor":"voice-events"},{"id":"Encryption Modes","anchor":"encryption-modes"}]},{"id":"gateway_compression","group":"Advanced","title":"Gateway Compression","headers":[{"id":"Using :zstd compression","anchor":"using-zstd-compression"}]},{"id":"hot_code_upgrade","group":"Advanced","title":"Hot code upgrade","headers":[]},{"id":"manual_sharding","group":"Advanced","title":"Manual Sharding","headers":[{"id":"Reconnection example","anchor":"reconnection-example"}]},{"id":"multi_node","group":"Advanced","title":"Multi-node","headers":[{"id":"High availability","anchor":"high-availability"}]},{"id":"pluggable_caching","group":"Advanced","title":"Pluggable caching","headers":[{"id":"Implementations","anchor":"implementations"},{"id":"Cache invalidation","anchor":"cache-invalidation"},{"id":"Cache performance","anchor":"cache-performance"}]},{"id":"api-1","group":"Cheat Sheets","title":"API Usage","headers":[{"id":"Messages","anchor":"messages"},{"id":"Miscellaneous","anchor":"miscellaneous"}]},{"id":"qlc","group":"Cheat Sheets","title":"QLC Usage","headers":[{"id":"Examples","anchor":"examples"},{"id":"Debugging QLC","anchor":"debugging-qlc"}]},{"id":"voice-2","group":"Cheat Sheets","title":"Voice Usage","headers":[{"id":"Playing Audio","anchor":"playing-audio"},{"id":"Audio FFmpeg options","anchor":"audio-ffmpeg-options"}]}],"tasks":[{"id":"Mix.Tasks.Gh.Docs","deprecated":false,"group":"","title":"mix gh.docs","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"run/1","deprecated":false,"title":"run(_)","anchor":"run/1"}],"key":"functions"}]}]} \ No newline at end of file diff --git a/event_handling.html b/event_handling.html index 5effe2978..0fa77320c 100644 --- a/event_handling.html +++ b/event_handling.html @@ -14,7 +14,7 @@ - + diff --git a/gateway_compression.html b/gateway_compression.html index 243cb3edb..da231c46d 100644 --- a/gateway_compression.html +++ b/gateway_compression.html @@ -14,7 +14,7 @@ - + @@ -147,12 +147,12 @@

Using :zstd compression

Using :zstd depends on the :ezstd library, -so you will have to add this dependency to your mix.exs file:

  defp deps do
-    [
-      {:nostrum, ...},
-      {:ezstd, "~> 1.1"} # new dependency
-    ]
-  end

:ezstd NIFs

Some functionality of :ezstd depends on Erlang NIFs (Natively Implemented +so you will have to add this dependency to your mix.exs file:

  defp deps do
+    [
+      {:nostrum, ...},
+      {:ezstd, "~> 1.1"} # new dependency
+    ]
+  end

:ezstd NIFs

Some functionality of :ezstd depends on Erlang NIFs (Natively Implemented Functions). This means that a proper compiler installation as well as other build tools like git may be necessary at the stage where you compile your dependencies.

It may be useful to run mix deps.compile in any build systems to ensure that diff --git a/gateway_intents.html b/gateway_intents.html index f4678f9b0..703f3fb88 100644 --- a/gateway_intents.html +++ b/gateway_intents.html @@ -14,7 +14,7 @@ - + @@ -138,10 +138,10 @@

The Discord API allows you to fine tune the payloads that are received by your bot through gateway intents.

When connecting to Discord you can instruct Discord on which events you want to receive (i.e. messages, user presences, etc.).

Nostrum allows you to set these intents within your configuration, by default all non-privileged intents are enabled.

To pass intents you should use the following configuration:

config :nostrum,
   token: "bot_token",
-  gateway_intents: [
+  gateway_intents: [
     :guilds,
     # other gateway intents
-  ]

Possible intents (and the gateway events they correspond to) are:

guilds:
+  ]

Possible intents (and the gateway events they correspond to) are:

guilds:
   - GUILD_CREATE
   - GUILD_UPDATE
   - GUILD_DELETE
diff --git a/hot_code_upgrade.html b/hot_code_upgrade.html
index 0f2464322..e01146396 100644
--- a/hot_code_upgrade.html
+++ b/hot_code_upgrade.html
@@ -14,7 +14,7 @@
 
     
     
-    
+    
     
     
 
diff --git a/intro.html b/intro.html
index 2a5bc5886..d33d63734 100644
--- a/intro.html
+++ b/intro.html
@@ -14,7 +14,7 @@
 
     
     
-    
+    
     
     
 
@@ -145,11 +145,11 @@ 

There are two versions of nostrum, a stable version released on Hex and a dev version on GitHub. The dev version will be more up to date but will likely -have more errors.

def deps do
-  [{:nostrum, "~> 0.10"}]
+have more errors.

def deps do
+  [{:nostrum, "~> 0.10"}]
   # Or, for bleeding edge changes:
   # [{:nostrum, github: "Kraigie/nostrum"}]
-end

Next up, you need to configure nostrum. The most basic configuration is simply +end

Next up, you need to configure nostrum. The most basic configuration is simply setting a token to log in with:

config :nostrum,
   token: "666"  # The token of your bot as a string

@@ -225,7 +225,7 @@

nostrum uses Elixir's standard logger to inform you about regular and irregular events. Normal messages include Discord-requested shard reconnections and the IDENTIFY and READY events.

The following metadata fields through logger:

  • shard - Id of the shard on which the event occurred
  • guild - Name of the guild on which the voice connection event occurred
  • channel - Name of the channel on which the voice connection event occurred

To enable this metadata, logger can be configured as such:

config :logger, :console,
-  metadata: [:shard, :guild, :channel]

For more information on how this works, and how to change the logging + metadata: [:shard, :guild, :channel]

For more information on how this works, and how to change the logging configuration for nostrum on its own, please see the Logger documentation

diff --git a/manual_sharding.html b/manual_sharding.html index 1eefb30d4..6140f379d 100644 --- a/manual_sharding.html +++ b/manual_sharding.html @@ -14,7 +14,7 @@ - + @@ -148,12 +148,12 @@

Reconnection example

# On Node A
-iex> Nostrum.Shard.Supervisor.connect(0, 1)
-iex> resume_info = Nostrum.Shard.Supervisor.disconnect(0)
-%{shard_num: 0, ...}
+iex> Nostrum.Shard.Supervisor.connect(0, 1)
+iex> resume_info = Nostrum.Shard.Supervisor.disconnect(0)
+%{shard_num: 0, ...}
 
 # On another node
-iex> Nostrum.Shard.Supervisor.reconnect(resume_info)

Discord will perform a best effort attempt to resume the gateway from the time +iex> Nostrum.Shard.Supervisor.reconnect(resume_info)

Discord will perform a best effort attempt to resume the gateway from the time of disconnection, relaying any missed events. Resumption is not guaranteed to work, in the event it fails Nostrum will reconnect the shard from scratch, though this may mean some events are missed.

diff --git a/multi_node.html b/multi_node.html index b870d6b39..e4210f2df 100644 --- a/multi_node.html +++ b/multi_node.html @@ -14,7 +14,7 @@ - + @@ -168,28 +168,28 @@

feature to include nostrum into our supervision tree. You also need to explicitly include nostrum's dependencies to ensure they are started, as the regular nostrum application startup won't handle it for you. This can be done by -changing your application definition in mix.exs as follows:

  def application do
-    [
-      mod: {MyBot.Application, []},
-      included_applications: [:nostrum],
+changing your application definition in mix.exs as follows:

  def application do
+    [
+      mod: {MyBot.Application, []},
+      included_applications: [:nostrum],
       # You can see this with `mix app.tree nostrum`
-      extra_applications: [:certifi, :gun, :inets, :jason, :mime]
+      extra_applications: [:certifi, :gun, :inets, :jason, :mime]
       # ...
-    ]
-  end

You also need to set runtime: false for :nostrum itself in your + ] + end

You also need to set runtime: false for :nostrum itself in your dependencies, and any dependencies of your app that depend on :nostrum, such -as command frameworks like :nosedrum:

  defp deps do
-    [
-      {:nostrum, "~> 0.10", runtime: false},
+as command frameworks like :nosedrum:

  defp deps do
+    [
+      {:nostrum, "~> 0.10", runtime: false},
       # {:nosedrum, "~> 0.6", runtime: false},
-    ]
-  end

You now need to add nostrum to your applications' children to start it as part -of your app:

  def start(type, args) do
-    children = [
+    ]
+  end

You now need to add nostrum to your applications' children to start it as part +of your app:

  def start(type, args) do
+    children = [
       Nostrum.Application,
       # ...
-    ]
-  end

If you want to run some logic ahead of starting nostrum, you can naturally also + ] + end

If you want to run some logic ahead of starting nostrum, you can naturally also put it later into the list.

You can start your bot now, and it's going to run. If you look at your bot's application in :observer, you will see that nostrum has now become one with your bot. We call that integration engineering.

Now that our app bundles everything it needs with itself, this means starting @@ -206,18 +206,18 @@

Erlang configuration files, for releases you can use your regular config/prod.exs. We will set up the following:

  • Instruct OTP that our app, :mybot is a distributed app, and give it the hosts to run it on.

  • On startup, tell OTP it should wait for the other nodes to become available.

With the Erlang configuration files, this can be done as follows:

% mybot_joe.config
-[{kernel,
-  [{distributed, [{mybot, 5000, [joe@HOSTNAME, {mike@HOSTNAME, robert@HOSTNAME}]}]},
-   {sync_nodes_mandatory, [mike@HOSTNAME, robert@HOSTNAME]},
-   {sync_nodes_timeout, 30000}]}].
% mybot_robert.config
-[{kernel,
-  [{distributed, [{mybot, 5000, [joe@HOSTNAME, {mike@HOSTNAME, robert@HOSTNAME}]}]},
-   {sync_nodes_mandatory, [joe@HOSTNAME, mike@HOSTNAME]},
-   {sync_nodes_timeout, 30000}]}].
% mybot_mike.config
-[{kernel,
-  [{distributed, [{mybot, 5000, [joe@HOSTNAME, {mike@HOSTNAME, robert@HOSTNAME}]}]},
-   {sync_nodes_mandatory, [joe@HOSTNAME, robert@HOSTNAME]},
-   {sync_nodes_timeout, 30000}]}].

Note the only thing that changes is the sync_node_mandatory setting, which +[{kernel, + [{distributed, [{mybot, 5000, [joe@HOSTNAME, {mike@HOSTNAME, robert@HOSTNAME}]}]}, + {sync_nodes_mandatory, [mike@HOSTNAME, robert@HOSTNAME]}, + {sync_nodes_timeout, 30000}]}].

% mybot_robert.config
+[{kernel,
+  [{distributed, [{mybot, 5000, [joe@HOSTNAME, {mike@HOSTNAME, robert@HOSTNAME}]}]},
+   {sync_nodes_mandatory, [joe@HOSTNAME, mike@HOSTNAME]},
+   {sync_nodes_timeout, 30000}]}].
% mybot_mike.config
+[{kernel,
+  [{distributed, [{mybot, 5000, [joe@HOSTNAME, {mike@HOSTNAME, robert@HOSTNAME}]}]},
+   {sync_nodes_mandatory, [joe@HOSTNAME, robert@HOSTNAME]},
+   {sync_nodes_timeout, 30000}]}].

Note the only thing that changes is the sync_node_mandatory setting, which instructs OTP which hosts to wait for on startup. The other settings must match. These options instructs OTP that our app :mybot is distributed and should be started at :joe@HOSTNAME first. If that fails, it moves to :robert@HOSTNAME diff --git a/pluggable_caching.html b/pluggable_caching.html index 61f2249e7..f8fb901e5 100644 --- a/pluggable_caching.html +++ b/pluggable_caching.html @@ -14,7 +14,7 @@ - + @@ -153,9 +153,9 @@

time. A common situation is that you don't want to cache presences in your bot, most likely you don't care about user's status, so you can disable it altogether by using the NoOp presence cache:

config :nostrum,
-  caches: %{
+  caches: %{
     presences: Nostrum.Cache.PresenceCache.NoOp
-  }

In addition to regular caches that associate Discord snowflakes with the proper + }

In addition to regular caches that associate Discord snowflakes with the proper "full" object, nostrum also maintains junction table-like mappings that allow you to find the matching object from one cache in another. One example for this is Nostrum.Cache.ChannelGuildMapping.

Nostrum also ships with Mnesia-based caches. These are only compiled in when diff --git a/qlc.html b/qlc.html index 57a188bec..050d34ef4 100644 --- a/qlc.html +++ b/qlc.html @@ -16,7 +16,7 @@ - + @@ -143,7 +143,7 @@

QLC Usage

-

This cheat sheet covers some example queries using Query-List Comprehensions in Erlang, as well as some debugging tips.

QLC modules must include this library include as part of their prelude:

-include_lib("stdlib/include/qlc.hrl").

As per the Erlang docs for QLC:

This causes a parse transform to substitute a fun for the QLC. The (compiled) fun is called when the query handle is evaluated.

+

This cheat sheet covers some example queries using Query-List Comprehensions in Erlang, as well as some debugging tips.

QLC modules must include this library include as part of their prelude:

-include_lib("stdlib/include/qlc.hrl").

As per the Erlang docs for QLC:

This causes a parse transform to substitute a fun for the QLC. The (compiled) fun is called when the query handle is evaluated.

@@ -155,50 +155,50 @@

Fetch role members

-
find_role_users(RequestedGuildId, RoleId, MemberCache) ->
-    qlc:q([Member || {{GuildId, MemberId}, Member} <- MemberCache:query_handle(),
+
find_role_users(RequestedGuildId, RoleId, MemberCache) ->
+    qlc:q([Member || {{GuildId, MemberId}, Member} <- MemberCache:query_handle(),
                    % Filter to member objects of the selected guild
                    GuildId =:= RequestedGuildId,
                    % Filter to members of the provided role
-                   lists:member(RoleId, map_get(roles, Member))]).

+ lists:member(RoleId, map_get(roles, Member))]).

Fetch guilds over a certain size

-
find_large_communities(Threshold, GuildCache) ->
-    qlc:q([Guild || {_, Guild} <- GuildCache:query_handle(),
+
find_large_communities(Threshold, GuildCache) ->
+    qlc:q([Guild || {_, Guild} <- GuildCache:query_handle(),
                     % Filter for guilds that are over the provided size
-                    map_get(member_count, Guild) > Threshold]).

+ map_get(member_count, Guild) > Threshold]).

Find all online users in a guild

-
find_online_users(RequestedGuildId, PresenceCache, UserCache) ->
-    qlc:q([User || {{GuildId, PresenceUserId}, Presence} <- PresenceCache:query_handle(),
+
find_online_users(RequestedGuildId, PresenceCache, UserCache) ->
+    qlc:q([User || {{GuildId, PresenceUserId}, Presence} <- PresenceCache:query_handle(),
                    % Filter to members in the requested guild ID
                    GuildId =:= RequestedGuildId,
                    % Fetch any members where the status is not offline
-                   map_get(status, Presence) /= offline,
+                   map_get(status, Presence) /= offline,
                    % Join the found users on the UserCache
-                   {UserId, User} <- UserCache:query_handle(),
+                   {UserId, User} <- UserCache:query_handle(),
                    % Return the users that match the found presences
-                   UserId =:= PresenceUserId]).

This depends on the guild presences intent being enabled and the bot storing received presences in the presence cache.

+ UserId =:= PresenceUserId]).

This depends on the guild presences intent being enabled and the bot storing received presences in the presence cache.

Getting the largest N guilds

-
top_guilds(N, GuildCache) ->
-  Q = qlc:q([{MemberCount, Guild} || {_Id, #{member_count := MemberCount} = Guild} <- GuildCache:query_handle()]),
-  Q2 = qlc:keysort(1, Q, [{order, descending}]),
-  GuildCache:wrap_qlc(fun () ->
-    C = qlc:cursor(Q2),
-    R = qlc:next_answers(C, N),
-    ok = qlc:delete_cursor(C),
+
top_guilds(N, GuildCache) ->
+  Q = qlc:q([{MemberCount, Guild} || {_Id, #{member_count := MemberCount} = Guild} <- GuildCache:query_handle()]),
+  Q2 = qlc:keysort(1, Q, [{order, descending}]),
+  GuildCache:wrap_qlc(fun () ->
+    C = qlc:cursor(Q2),
+    R = qlc:next_answers(C, N),
+    ok = qlc:delete_cursor(C),
     R
-  end).

+ end).

@@ -210,18 +210,18 @@

View query info

-

You can use :qlc.info/1 to evaluate how Erlang will parse a query. You can read the Erlang docs for an explanation of the value returned by this call

:qlc.info(
-    :my_queries.find_users(..., Nostrum.Cache.UserCache)
-)

+

You can use :qlc.info/1 to evaluate how Erlang will parse a query. You can read the Erlang docs for an explanation of the value returned by this call

:qlc.info(
+    :my_queries.find_users(..., Nostrum.Cache.UserCache)
+)

Sampling a query

-

You can return only X records that match a query using :qlc.next_answers/2, passing in the query as the first argument and the number of answers to return as the second argument.

:qlc.next_answers(
-    :my_queries.find_users(..., Nostrum.Cache.UserCache),
+

You can return only X records that match a query using :qlc.next_answers/2, passing in the query as the first argument and the number of answers to return as the second argument.

:qlc.next_answers(
+    :my_queries.find_users(..., Nostrum.Cache.UserCache),
     5
-)
+
)
diff --git a/search.html b/search.html index 95da41f6e..609faef2f 100644 --- a/search.html +++ b/search.html @@ -16,7 +16,7 @@ - + @@ -133,7 +133,7 @@

- +

diff --git a/state.html b/state.html index 7c1021a82..6acf80c86 100644 --- a/state.html +++ b/state.html @@ -14,7 +14,7 @@ - + @@ -166,31 +166,31 @@

Below you can find some example queries using QLC.

% src/nostrum_queries.erl
 
--module(nostrum_queries).
--export([find_role_users/4, find_large_communities/2]).
+-module(nostrum_queries).
+-export([find_role_users/4, find_large_communities/2]).
 
--include_lib("stdlib/include/qlc.hrl").
+-include_lib("stdlib/include/qlc.hrl").
 
 % Find the Nostrum.Struct.User and Member objects of all members in a specific guild role.
-find_role_users(RequestedGuildId, RoleId, MemberCache, UserCache) ->
-    qlc:q([{User, Member} || {{GuildId, MemberId}, Member} <- MemberCache:query_handle(),
+find_role_users(RequestedGuildId, RoleId, MemberCache, UserCache) ->
+    qlc:q([{User, Member} || {{GuildId, MemberId}, Member} <- MemberCache:query_handle(),
                    % Filter to member objects of the selected guild
                    GuildId =:= RequestedGuildId,
                    % Filter to members of the provided role
-                   lists:member(RoleId, map_get(roles, Member)),
+                   lists:member(RoleId, map_get(roles, Member)),
                    % Get a handle on the UserCache table
-                   {UserId, User} <- UserCache:query_handle(),
+                   {UserId, User} <- UserCache:query_handle(),
                    % Find the User struct that matches the found Member
-                   MemberId =:= UserId]).
+                   MemberId =:= UserId]).
 
 % Find all communities in the Guild cache with the COMMUNITY guild feature
 % that are over a certain threshold in user size
-find_large_communities(Threshold, GuildCache) ->
-    qlc:q([Guild || {_, Guild} <- GuildCache:query_handle(),
+find_large_communities(Threshold, GuildCache) ->
+    qlc:q([Guild || {_, Guild} <- GuildCache:query_handle(),
                     % Filter for guilds that are over the provided size
-                    map_get(member_count, Guild) > Threshold,
+                    map_get(member_count, Guild) > Threshold,
                     % Filter for guilds that have COMMUNITY in the features field
-                    lists:member(<<"COMMUNITY">>, map_get(features, Guild))]).

nostrum_queries:find_role_users/4 fetches all users in the specified guild + lists:member(<<"COMMUNITY">>, map_get(features, Guild))]).

nostrum_queries:find_role_users/4 fetches all users in the specified guild (RequestedGuildId) with the role RoleId. The code is annotated, but step-by-step the flow is: the member cache is filtered down to all members in the guild, then using lists:member/2 we check for role membership, and finally @@ -199,7 +199,7 @@

COMMUNITY guild feature set to true in the Discord UI. It is easy to follow the flow of this query by the annotations, with only some minor things to note such as needing to use <<"bitstring">> bit syntax to represent the strings, -which is implicit in Elixir.

In Elixir, you can call these queries like so using :qlc.eval/1:

matching_guilds = :qlc.eval(:nostrum_queries.find_large_communities(50, Nostrum.Cache.GuildCache))

+which is implicit in Elixir.

In Elixir, you can call these queries like so using :qlc.eval/1:

matching_guilds = :qlc.eval(:nostrum_queries.find_large_communities(50, Nostrum.Cache.GuildCache))

diff --git a/voice-2.html b/voice-2.html index a7cd6ad91..d890e5997 100644 --- a/voice-2.html +++ b/voice-2.html @@ -16,7 +16,7 @@ - + @@ -155,33 +155,33 @@

Playing immediately with a try_play function

-
def try_play(guild_id, url, type, opts \\ []) do
-  case Voice.play(guild_id, url, type, opts) do
-    {:error, _msg} ->
+
def try_play(guild_id, url, type, opts \\ []) do
+  case Voice.play(guild_id, url, type, opts) do
+    {:error, _msg} ->
       # Wait for handshaking to complete
-      Process.sleep(100)
-      try_play(guild_id, url, type, opts)
+      Process.sleep(100)
+      try_play(guild_id, url, type, opts)
 
     _ ->
       :ok
-  end
-end
iex> Voice.join_channel(guild_id, channel_id)
-iex> try_play(guild_id, "./song.mp3", :url)

+ end +end

iex> Voice.join_channel(guild_id, channel_id)
+iex> try_play(guild_id, "./song.mp3", :url)

Playing immediately using Nostrum.Voice.ready?/1

-
def play_when_ready(guild_id, url, type, opts \\ []) do
-  if Voice.ready?(guild_id) do
-    Voice.play(guild_id, url, type, opts)
-  else
+
def play_when_ready(guild_id, url, type, opts \\ []) do
+  if Voice.ready?(guild_id) do
+    Voice.play(guild_id, url, type, opts)
+  else
     # Wait for handshaking to complete
-    Process.sleep(25)
-    play_when_ready(guild_id, url, type, opts)
-  end
-end
iex> Voice.join_channel(guild_id, channel_id)
-iex> play_when_ready(guild_id, "https://youtu.be/b4RJ-QGOtw4", :ytdl)

+ Process.sleep(25) + play_when_ready(guild_id, url, type, opts) + end +end

iex> Voice.join_channel(guild_id, channel_id)
+iex> play_when_ready(guild_id, "https://youtu.be/b4RJ-QGOtw4", :ytdl)

@@ -190,11 +190,11 @@

alias Nostrum.Struct.Event.VoiceReady
 alias Nostrum.Voice
 
-def handle_event({:VOICE_READY, %VoiceReady{guild_id: guild_id} = _event, _v_ws_state}) do
-  Voice.play(guild_id, "~/loud_noise.mp3", :url, volume: 10)
-end

Once the voice handshake has completed, audio will begin playing +def handle_event({:VOICE_READY, %VoiceReady{guild_id: guild_id} = _event, _v_ws_state}) do + Voice.play(guild_id, "~/loud_noise.mp3", :url, volume: 10) +end

Once the voice handshake has completed, audio will begin playing without the need for polling functions like try_play/4 or play_when_ready/4 -as shown in the other examples

iex> Voice.join_channel(guild_id, channel_id)
+as shown in the other examples

iex> Voice.join_channel(guild_id, channel_id)
 # Playback will start automatically when ready

@@ -207,40 +207,40 @@

Volume

-

Half volume

Voice.play(guild_id, "~/final_mix.wav", :url, 
+

Half volume

Voice.play(guild_id, "~/final_mix.wav", :url, 
   volume: 0.5
-)

Extreme clipping

Voice.play(guild_id, "~/boost_this.m4a", :url, 
+)

Extreme clipping

Voice.play(guild_id, "~/boost_this.m4a", :url, 
   volume: 100
-)

Normal volume with inverted phase

Voice.play(guild_id, "~/music.mp3", :url, 
+)

Normal volume with inverted phase

Voice.play(guild_id, "~/music.mp3", :url, 
   volume: -1.0
-)

+)

Start position and duration

-

Start at 37.8 seconds

Voice.play(guild_id, "https://youtu.be/b4RJ-QGOtw4", :ytdl, 
+

Start at 37.8 seconds

Voice.play(guild_id, "https://youtu.be/b4RJ-QGOtw4", :ytdl, 
   start_pos: "0:37.8"
-)

Play the first at 15.3 seconds from the beginning

Voice.play(guild_id, "https://youtu.be/b4RJ-QGOtw4", :ytdl, 
+)

Play the first at 15.3 seconds from the beginning

Voice.play(guild_id, "https://youtu.be/b4RJ-QGOtw4", :ytdl, 
   duration: "15.3"
-)

Play for 80 seconds (equivalently 1:20) starting from 90 seconds (equivalently 1:30) in

Voice.play(guild_id, "~/music.mp3", :url, 
+)

Play for 80 seconds (equivalently 1:20) starting from 90 seconds (equivalently 1:30) in

Voice.play(guild_id, "~/music.mp3", :url, 
   start_pos: "90", 
   duration: "80"
-)

+)

Advanced audio filtering

-

Cutoff filters

Low-pass filter at 1200 Hz, high-pass filter at 300 Hz

Voice.play(guild_id, "https://youtu.be/0ngcL_5ekXo", :ytdl,
+

Cutoff filters

Low-pass filter at 1200 Hz, high-pass filter at 300 Hz

Voice.play(guild_id, "https://youtu.be/0ngcL_5ekXo", :ytdl,
   filter: "lowpass=f=1200",
   filter: "highpass=f=300"
-)

Sample rate

Play at half tempo and pitch (assumes a 48kHz sample rate)

Voice.play(guild_id, "https://youtu.be/0ngcL_5ekXo", :ytdl,
+)

Sample rate

Play at half tempo and pitch (assumes a 48kHz sample rate)

Voice.play(guild_id, "https://youtu.be/0ngcL_5ekXo", :ytdl,
   filter: "asetrate=48000*0.5"
-)

Play at 30% higher tempo and pitch. Realtime must be set to false for ffmpeg to keep up with faster-than-normal playback.

Voice.play(guild_id, "https://youtu.be/0ngcL_5ekXo", :ytdl,
+)

Play at 30% higher tempo and pitch. Realtime must be set to false for ffmpeg to keep up with faster-than-normal playback.

Voice.play(guild_id, "https://youtu.be/0ngcL_5ekXo", :ytdl,
   realtime: false,
   filter: "asetrate=48000*1.3"
-)

Heavily distorted and effected lo-fi FX chain

Voice.play(guild_id, "https://youtu.be/Hd_giv-wcJU", :ytdl,
+)

Heavily distorted and effected lo-fi FX chain

Voice.play(guild_id, "https://youtu.be/Hd_giv-wcJU", :ytdl,
   volume: 3,
   start_pos: "0:55",
   filter: "asetrate=48000*0.73",
@@ -248,7 +248,7 @@ 

Cutoff filters

Low-pass filter at 1200 Hz, high-pass filter at 300 Hz filter: "vibrato=f=1:d=0.8", filter: "lowpass=f=1200", filter: "aphaser=in_gain=0.4:out_gain=0.5:delay=3.0:decay=0.3:speed=0.3:type=t" -)

+)
diff --git a/voice-3.html b/voice-3.html index 101b328c1..8e042bb9f 100644 --- a/voice-3.html +++ b/voice-3.html @@ -14,7 +14,7 @@ - + @@ -195,8 +195,8 @@

currently works with both of these services. If the short, human-readable url of the streaming service doesn't work with streamlink out of the box, you may have more luck extracting the underlying raw stream url. These are typically long URLs that end in .m3u8 or .hls. If you have youtube-dl installed, -you can attempt to get this URL by running the following:

{raw_url, 0} = System.cmd("youtube-dl", ["-f", "best", "-g", url])
-raw_url = raw_url |> String.trim()

+you can attempt to get this URL by running the following:

{raw_url, 0} = System.cmd("youtube-dl", ["-f", "best", "-g", url])
+raw_url = raw_url |> String.trim()

@@ -269,16 +269,16 @@

Nostrum.Consumer.voice_ready/0 event can be used by the bot to begin playing audio as soon as it is able to. The alternative approach for this use case that is not event-driven is to periodically call Nostrum.Voice.ready?/1 and wait for it to return true as the trigger to -begin playing. Another common approach is to define a try_play function as follows:

def try_play(guild_id, url, type, opts \\ []) do
-  case Nostrum.Voice.play(guild_id, url, type, opts) do
-    {:error, _msg} ->
-      Process.sleep(100)
-      try_play(guild_id, url, type, opts)
+begin playing. Another common approach is to define a try_play function as follows:

def try_play(guild_id, url, type, opts \\ []) do
+  case Nostrum.Voice.play(guild_id, url, type, opts) do
+    {:error, _msg} ->
+      Process.sleep(100)
+      try_play(guild_id, url, type, opts)
 
     _ ->
       :ok
-  end
-end

Note that the third element in the event is of type Nostrum.Struct.VoiceWSState.t/0 and + end +end

Note that the third element in the event is of type Nostrum.Struct.VoiceWSState.t/0 and not Nostrum.Struct.WSState.t/0.

The Nostrum.Consumer.voice_incoming_packet/0 event is generated by Nostrum. None will be generated by default. You must first be connected to a voice channel, call the Nostrum.Voice.start_listen_async/1 function, then have another user in the same voice channel speak. If these conditions are met, an event