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
@@ -588,10 +588,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
@@ -626,10 +626,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`
@@ -664,11 +664,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)
+[]
@@ -698,10 +698,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
@@ -736,7 +736,7 @@ to_bit(permission)
Examples
-iex> Nostrum.Permission.to_bit(:administrator)
+iex> Nostrum.Permission.to_bit(:administrator)
8
@@ -771,7 +771,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.html b/Nostrum.Shard.Session.html
index a17ef0d8e..a344f30d9 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 9522fec18..e07e4ce21 100644
--- a/Nostrum.Shard.Supervisor.html
+++ b/Nostrum.Shard.Supervisor.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Nostrum.Snowflake.html b/Nostrum.Snowflake.html
index 3239f051c..7d6a975a5 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 cb22c430b..46ebb21bd 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 f887380ae..f3590cbef 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 02344e4d5..c24c2071d 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 88830d433..291adad86 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 1d1c703d0..f771553bd 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 11f3e91bc..142e228b9 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 b851c8b2a..50c09236b 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 fb4fc98a4..e7b2380eb 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 def625fc5..be271b8a2 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 da37bb4d4..f759f1873 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 a9fe0a792..39e193e5c 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 31d2a9859..1d0fc681d 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 da0513364..abca13f7d 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 b90f8b8b2..0d41b2e25 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 7bdcadfa8..9837c772d 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 36bc3252f..13ee502a2 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 5e9235429..f6987b3ec 100644
--- a/Nostrum.Struct.Channel.html
+++ b/Nostrum.Struct.Channel.html
@@ -14,7 +14,7 @@
-
+
@@ -145,54 +145,38 @@
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()
-"<#766435015768539156>"
}
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>"
+
- Channel Cache
+ Channel Caching
-The ChannelCache
module provides functionality for you to retrieve information about any channel that your application can see. It provides two functions: get/1
and get!/1
.
+
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.
Once you have a guild ID, you can use the Nostrum.Cache.GuildCache
to fetch the guild and all channels, then use the Nostrum.Struct.Guild.channels/0
field to find the channel.
Example
-
-Nostrum.Cache.ChannelCache.get!(827333533688397865)
-%Nostrum.Struct.Channel{
- application_id: nil,
- bitrate: nil,
- guild_id: 766435015768539156,
- icon: nil,
- id: 827333533688397865,
- last_message_id: nil,
- last_pin_timestamp: nil,
- name: "announcements",
- nsfw: false,
- owner_id: nil,
- parent_id: nil,
- permission_overwrites: [
- %Nostrum.Struct.Overwrite{
- allow: 0,
- deny: 2048,
- id: 766435015768539156,
- type: :role
- }
- ],
- position: 1,
- recipients: nil,
- topic: nil,
- type: 5,
- user_limit: nil
-}
More details of the cache can be found at Nostrum.Cache.ChannelCache
.
+
+> guild_id = Nostrum.Cache.ChannelGuildMapping.get(1229955694258684005)
+1226944827137069107
+> {:ok, guild} = Nostrum.Cache.GuildCache.get(guild_id)
+{:ok,
+ %Nostrum.Struct.Guild{
+ id: 1226944827137069107,
+ name: "Craig Cat Zone",
+ ...
+}}
+> guild.channels[channel_id].name
+"cat-general"
@@ -819,7 +803,7 @@
application_id()
-
+
View Source
@@ -847,7 +831,7 @@ application_id()
applied_tags()
-
+
View Source
@@ -877,7 +861,7 @@ applied_tags()
archive_timestamp()
-
+
View Source
@@ -907,7 +891,7 @@ archive_timestamp()
archived()
-
+
View Source
@@ -937,7 +921,7 @@ archived()
auto_archive_duration()
-
+
View Source
@@ -967,7 +951,7 @@ auto_archive_duration()
bitrate()
-
+
View Source
@@ -995,7 +979,7 @@ bitrate()
channel_mention()
-
+
View Source
@@ -1056,7 +1040,7 @@ channel_mention()
default_auto_archive_duration()
-
+
View Source
@@ -1086,7 +1070,7 @@ default_auto_archive_duration()
default_reaction_emoji()
-
+
View Source
@@ -1117,7 +1101,7 @@ default_reaction_emoji()
default_thread_rate_limit_per_user()
-
+
View Source
@@ -1147,7 +1131,7 @@ default_thread_rate_limit_per_user()
dm_channel()
-
+
View Source
@@ -1207,7 +1191,7 @@ dm_channel()
flags()
-
+
View Source
@@ -1237,7 +1221,7 @@ flags()
forum_tag()
-
+
View Source
@@ -1274,7 +1258,7 @@ forum_tag()
group_dm_channel()
-
+
View Source
@@ -1334,7 +1318,7 @@ group_dm_channel()
guild_category_channel()
-
+
View Source
@@ -1394,7 +1378,7 @@ guild_category_channel()
guild_channel()
-
+
View Source
@@ -1427,7 +1411,7 @@ guild_channel()
guild_forum_channel()
-
+
View Source
@@ -1489,7 +1473,7 @@ guild_forum_channel()
guild_id()
-
+
View Source
@@ -1517,7 +1501,7 @@ guild_id()
guild_news_channel()
-
+
View Source
@@ -1579,7 +1563,7 @@ guild_news_channel()
guild_news_thread_channel()
-
+
View Source
@@ -1641,7 +1625,7 @@ guild_news_thread_channel()
guild_private_thread_channel()
-
+
View Source
@@ -1703,7 +1687,7 @@ guild_private_thread_channel()
guild_public_thread_channel()
-
+
View Source
@@ -1765,7 +1749,7 @@ guild_public_thread_channel()
guild_stage_voice_channel()
-
+
View Source
@@ -1827,7 +1811,7 @@ guild_stage_voice_channel()
guild_store_channel()
-
+
View Source
@@ -1889,7 +1873,7 @@ guild_store_channel()
guild_text_channel()
-
+
View Source
@@ -1949,7 +1933,7 @@ guild_text_channel()
guild_voice_channel()
-
+
View Source
@@ -2009,7 +1993,7 @@ guild_voice_channel()
icon()
-
+
View Source
@@ -2037,7 +2021,7 @@ icon()
id()
-
+
View Source
@@ -2065,7 +2049,7 @@ id()
join_timestamp()
-
+
View Source
@@ -2095,7 +2079,7 @@ join_timestamp()
last_message_id()
-
+
View Source
@@ -2123,7 +2107,7 @@ last_message_id()
last_pin_timestamp()
-
+
View Source
@@ -2151,7 +2135,7 @@ last_pin_timestamp()
locked()
-
+
View Source
@@ -2181,7 +2165,7 @@ locked()
member()
-
+
View Source
@@ -2216,7 +2200,7 @@ member()
member_count()
-
+
View Source
@@ -2246,7 +2230,7 @@ member_count()
message_count()
-
+
View Source
@@ -2276,7 +2260,7 @@ message_count()
name()
-
+
View Source
@@ -2304,7 +2288,7 @@ name()
newly_created()
-
+
View Source
@@ -2334,7 +2318,7 @@ newly_created()
nsfw()
-
+
View Source
@@ -2362,7 +2346,7 @@ nsfw()
owner_id()
-
+
View Source
@@ -2390,7 +2374,7 @@ owner_id()
parent_id()
-
+
View Source
@@ -2418,7 +2402,7 @@ parent_id()
permission_overwrites()
-
+
View Source
@@ -2446,7 +2430,7 @@ permission_overwrites()
permissions()
-
+
View Source
@@ -2476,7 +2460,7 @@ permissions()
position()
-
+
View Source
@@ -2504,7 +2488,7 @@ position()
rate_limit_per_user()
-
+
View Source
@@ -2534,7 +2518,7 @@ rate_limit_per_user()
recipients()
-
+
View Source
@@ -2562,7 +2546,7 @@ recipients()
rtc_region()
-
+
View Source
@@ -2592,7 +2576,7 @@ rtc_region()
t()
-
+
View Source
@@ -2632,7 +2616,7 @@ t()
text_channel()
-
+
View Source
@@ -2664,7 +2648,7 @@ text_channel()
thread_metadata()
-
+
View Source
@@ -2701,7 +2685,7 @@ thread_metadata()
topic()
-
+
View Source
@@ -2729,7 +2713,7 @@ topic()
type()
-
+
View Source
@@ -2757,7 +2741,7 @@ type()
user_id()
-
+
View Source
@@ -2787,7 +2771,7 @@ user_id()
user_limit()
-
+
View Source
@@ -2815,7 +2799,7 @@ user_limit()
video_quality_mode()
-
+
View Source
@@ -2845,7 +2829,7 @@ video_quality_mode()
voice_channel()
-
+
View Source
@@ -2889,7 +2873,7 @@
mention(channel)
-
+
View Source
@@ -2917,8 +2901,8 @@ mention(channel)
Examples
-Nostrum.Cache.ChannelCache.get(381889573426429952)
-|> Nostrum.Struct.Channel.mention()
+channel
+|> Nostrum.Struct.Channel.mention()
"<#381889573426429952>"
diff --git a/Nostrum.Struct.Component.ActionRow.html b/Nostrum.Struct.Component.ActionRow.html
index 6ab543e94..26e1fc7a2 100644
--- a/Nostrum.Struct.Component.ActionRow.html
+++ b/Nostrum.Struct.Component.ActionRow.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Nostrum.Struct.Component.Button.html b/Nostrum.Struct.Component.Button.html
index cfa3b1eb1..7773eeb01 100644
--- a/Nostrum.Struct.Component.Button.html
+++ b/Nostrum.Struct.Component.Button.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Nostrum.Struct.Component.Option.html b/Nostrum.Struct.Component.Option.html
index e28c98344..4eb62c975 100644
--- a/Nostrum.Struct.Component.Option.html
+++ b/Nostrum.Struct.Component.Option.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Nostrum.Struct.Component.SelectMenu.html b/Nostrum.Struct.Component.SelectMenu.html
index 78665d072..a5395a597 100644
--- a/Nostrum.Struct.Component.SelectMenu.html
+++ b/Nostrum.Struct.Component.SelectMenu.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Nostrum.Struct.Component.TextInput.html b/Nostrum.Struct.Component.TextInput.html
index 245f77691..7fcfea74d 100644
--- a/Nostrum.Struct.Component.TextInput.html
+++ b/Nostrum.Struct.Component.TextInput.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Nostrum.Struct.Component.html b/Nostrum.Struct.Component.html
index 159248ff0..98830e5de 100644
--- a/Nostrum.Struct.Component.html
+++ b/Nostrum.Struct.Component.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Nostrum.Struct.Embed.Author.html b/Nostrum.Struct.Embed.Author.html
index 05ecfe482..4650e7947 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 b89304b32..54741d84d 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 f3dd21d3f..a56ba79cb 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 c76131107..d02d60090 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 93c5c8247..6e6ad9c1a 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 073bc3677..8265152a7 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 a11b15c1f..88fa4b3fe 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 23a12157c..cc52d4595 100644
--- a/Nostrum.Struct.Embed.html
+++ b/Nostrum.Struct.Embed.html
@@ -14,7 +14,7 @@
-
+
@@ -148,63 +148,63 @@
Nostrum.Struct.Embed
s 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.Embed
s 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"}
+ ]
+}
@@ -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 ad687a975..9bbe5860f 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 2a41d9784..ac7ca975d 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 cff3ef432..626da0c1a 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 d1a7f205b..cf7c193f5 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 a485f8435..51d047a93 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 21cd10e1a..b76a5f368 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 01b6f8ca7..b3361ad50 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 e536b7b47..b51192881 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 9673c88ef..69dfdd1f5 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 642b938ef..3561ed047 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 cd76bb025..d168c4144 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 b3f7343d3..94db41812 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 292186fb1..f97e61c31 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 0950dc0e3..76327f396 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 90fb576ad..1b202ed4a 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 2ec8650bf..3902c8f6f 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 1440412e7..47bd70fcb 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 416235797..959753a84 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 eb6df5960..2f547eaae 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 c9e12cbdb..565ef9741 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 981306fcb..347f15da8 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 22c278943..045cca762 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 3c8b3221c..2fb6f5a60 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 47c3dd6da..b0f1a3266 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 afc3379cf..37ca5da01 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 93114ca62..9f99319c6 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 f62b0493e..ec3fd7627 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 ab25d84c5..b945226a0 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 a5e4d2990..27aba7ec5 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 c455038be..fd05092fc 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 3df06747f..be1ff219f 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 b9c352aab..ea0507ef3 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 98b89c656..0d39e6b75 100644
--- a/Nostrum.Struct.Guild.Integration.html
+++ b/Nostrum.Struct.Guild.Integration.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Nostrum.Struct.Guild.Member.html b/Nostrum.Struct.Guild.Member.html
index db4ed6e7c..a26309362 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>"}
@@ -639,10 +639,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]
@@ -677,9 +677,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]
@@ -714,8 +714,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 ff08d158c..470ae4b7e 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 bc80c8cdb..dc4b95fb3 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 76f2fecb0..68502ca7d 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 b01b0b94d..ccabbc068 100644
--- a/Nostrum.Struct.Guild.ScheduledEvent.html
+++ b/Nostrum.Struct.Guild.ScheduledEvent.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Nostrum.Struct.Guild.UnavailableGuild.html b/Nostrum.Struct.Guild.UnavailableGuild.html
index d5b975c48..ada07aaba 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 ef32c3464..a3ec63b52 100644
--- a/Nostrum.Struct.Guild.html
+++ b/Nostrum.Struct.Guild.html
@@ -14,7 +14,7 @@
-
+
@@ -1702,15 +1702,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
@@ -1747,15 +1747,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 21f5acc1b..3f414d04b 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 e6ded7411..50366027e 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 fc19b7761..11a152c2f 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 2f0ebdbe6..975a3d446 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 2a1b6d8e1..43c1edad3 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 89264dfb5..dcc471c6a 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 4941178a9..844107da7 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 f8ad67885..8f0f691c9 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 5c68b2a36..185a96667 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 ae4d363fa..ecc4072cd 100644
--- a/Nostrum.Struct.Message.Poll.html
+++ b/Nostrum.Struct.Message.Poll.html
@@ -14,7 +14,7 @@
-
+
@@ -566,11 +566,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 2b288ee49..0141d57de 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 bb0ad9356..1488a55fc 100644
--- a/Nostrum.Struct.Message.Reference.html
+++ b/Nostrum.Struct.Message.Reference.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Nostrum.Struct.Message.Sticker.html b/Nostrum.Struct.Message.Sticker.html
index f7c2a4ea9..227aa01dd 100644
--- a/Nostrum.Struct.Message.Sticker.html
+++ b/Nostrum.Struct.Message.Sticker.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Nostrum.Struct.Message.html b/Nostrum.Struct.Message.html
index 05fe3b264..04c074c48 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 4c50bdb63..4cfbe43f0 100644
--- a/Nostrum.Struct.Overwrite.html
+++ b/Nostrum.Struct.Overwrite.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Nostrum.Struct.ThreadMember.html b/Nostrum.Struct.ThreadMember.html
index ead7ad389..04e11dc66 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 f6393947d..d9333007a 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 67960e464..39595233a 100644
--- a/Nostrum.Struct.User.Flags.html
+++ b/Nostrum.Struct.User.Flags.html
@@ -14,7 +14,7 @@
-
+
@@ -818,8 +818,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,
@@ -833,7 +833,7 @@ from_integer(flag_value)
team_user: false,
verified_bot: false,
verified_developer: true
-}
+}
@@ -867,7 +867,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,
@@ -881,8 +881,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 52d3e8902..215304970 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>"}
@@ -698,22 +698,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"
@@ -749,13 +749,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"
@@ -790,8 +790,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 1ed5bc9e5..8e2d4dee4 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 2fc14a688..034711607 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 9261d83be..69cd41f15 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 65c8d9c09..b9f310ddb 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 b162f458f..57f0a6070 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 3c8638dca..e78278e7b 100644
--- a/Nostrum.Util.html
+++ b/Nostrum.Util.html
@@ -14,7 +14,7 @@
-
+
diff --git a/Nostrum.Voice.html b/Nostrum.Voice.html
index c1df6911e..3d8732d5f 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()
@@ -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 727cb8db2..f95cbcefb 100644
Binary files a/Nostrum.epub and b/Nostrum.epub differ
diff --git a/api-reference.html b/api-reference.html
index b48e5ecdb..4398fc0f2 100644
--- a/api-reference.html
+++ b/api-reference.html
@@ -14,7 +14,7 @@
-
+
@@ -172,42 +172,6 @@
Supervises caches for nostrum structures.
-
-
-
-
-
Cache behaviour & dispatcher for direct message channels.
-
-
-
-
-
-
An ETS-based cache for channels outside of guilds.
-
-
-
-
-
-
An Mnesia-based cache for channels outside of guilds.
-
-
-
-
-
-
A NoOp implementation for the ChannelCache
-
diff --git a/api.html b/api.html
index 1425be202..59c012fbe 100644
--- a/api.html
+++ b/api.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/application_commands.html b/application_commands.html
index dc9560642..b075f4415 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-40BAA532.js b/dist/search_data-40BAA532.js
deleted file mode 100644
index 508e05dcb..000000000
--- a/dist/search_data-40BAA532.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_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_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_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_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_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_token/0","doc":"Returns the token of the bot.","ref":"Nostrum.Api.html#get_token/0"},{"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_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_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\n\n # Default event handler, if you don't include this, your consumer WILL crash if\n # you don't have a method definition for each event type.\n def handle_event(_event) do\n :noop\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_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.Cache.CacheSupervisor","doc":"Supervises caches for nostrum structures.\n\nSee the documentation for the relevant submodules for details:\n\n- `Nostrum.Cache.ChannelCache`\n- `Nostrum.Cache.GuildCache`\n- `Nostrum.Cache.Me`\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.ChannelCache","doc":"Cache behaviour & dispatcher for direct message channels.\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.\nThe user-facing functions for reading the cache can be found in the \"Reading\nthe cache\" section.\n\nBy default, Elixir.Nostrum.Cache.ChannelCache.ETS will be used for caching channels.\nYou can override this in the `:caches` option of the `:nostrum` application\nby setting the `:channels` field to a different module implementing the\n`Nostrum.Cache.ChannelCache` behaviour. Any module below\n`Nostrum.Cache.ChannelCache` can be used as a cache.","ref":"Nostrum.Cache.ChannelCache.html"},{"type":"behaviour","title":"Writing your own channel cache - Nostrum.Cache.ChannelCache","doc":"As with the other caches, the channel cache API consists of three parts:\n\n- Functions called by nostrum, such as `c:create/1` or `c:update/1`. These\n**do not create any objects in the Discord API**, they are purely created to\nupdate the cached data from data that Discord sends us. If you want to create\nobjects on Discord, use the functions exposed by `Nostrum.Api` instead.\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 channel 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.ChannelCache.html#module-writing-your-own-channel-cache"},{"type":"callback","title":"Nostrum.Cache.ChannelCache.child_spec/1","doc":"Retrieve the child specification for starting this mapping under a supervisor.","ref":"Nostrum.Cache.ChannelCache.html#c:child_spec/1"},{"type":"callback","title":"Nostrum.Cache.ChannelCache.create/1","doc":"Create a channel in the cache.","ref":"Nostrum.Cache.ChannelCache.html#c:create/1"},{"type":"callback","title":"Nostrum.Cache.ChannelCache.delete/1","doc":"Delete a channel from the cache.\n\nReturn the old channel if it was cached, or `nil` otherwise.","ref":"Nostrum.Cache.ChannelCache.html#c:delete/1"},{"type":"function","title":"Nostrum.Cache.ChannelCache.get/1","doc":"Look up a channel in the cache, by message or ID.\n\nAn optional second argument can be passed to select the cache to read from.","ref":"Nostrum.Cache.ChannelCache.html#get/1"},{"type":"function","title":"Nostrum.Cache.ChannelCache.get/2","doc":"","ref":"Nostrum.Cache.ChannelCache.html#get/2"},{"type":"function","title":"Nostrum.Cache.ChannelCache.get!/1","doc":"Same as `get/1`, but raises `Nostrum.Error.CacheError` in case of failure.","ref":"Nostrum.Cache.ChannelCache.html#get!/1"},{"type":"function","title":"Nostrum.Cache.ChannelCache.get!/2","doc":"","ref":"Nostrum.Cache.ChannelCache.html#get!/2"},{"type":"function","title":"Nostrum.Cache.ChannelCache.query_handle/0","doc":"Return the QLC handle of the configured cache.","ref":"Nostrum.Cache.ChannelCache.html#query_handle/0"},{"type":"callback","title":"Nostrum.Cache.ChannelCache.query_handle/0","doc":"Return a QLC query handle for cache read operations.\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 `{channel_id, channel}`, where:\n- `channel_id` is a `t:Nostrum.Struct.Channel.id/0`, and\n- `channel` is a `t:Nostrum.Struct.Channel.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.ChannelCache.html#c:query_handle/0"},{"type":"callback","title":"Nostrum.Cache.ChannelCache.update/1","doc":"Update a channel from upstream data.\n\nReturn the original channel before the update, and the updated channel.","ref":"Nostrum.Cache.ChannelCache.html#c:update/1"},{"type":"callback","title":"Nostrum.Cache.ChannelCache.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.ChannelCache.html#c:wrap_qlc/1"},{"type":"type","title":"Nostrum.Cache.ChannelCache.reason/0","doc":"Specifies the reason for why a lookup operation has failed.","ref":"Nostrum.Cache.ChannelCache.html#t:reason/0"},{"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.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.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 Cache - Nostrum.Struct.Channel","doc":"The [`ChannelCache`](`Nostrum.Cache.ChannelCache`) module provides functionality for you to retrieve information about any channel that your application can see. It provides two functions: [`get/1`](`Nostrum.Cache.ChannelCache.get/1`) and [`get!/1`](`Nostrum.Cache.ChannelCache.get!/1`).","ref":"Nostrum.Struct.Channel.html#module-channel-cache"},{"type":"module","title":"Example - Nostrum.Struct.Channel","doc":"```elixir\nNostrum.Cache.ChannelCache.get!(827333533688397865)\n%Nostrum.Struct.Channel{\n application_id: nil,\n bitrate: nil,\n guild_id: 766435015768539156,\n icon: nil,\n id: 827333533688397865,\n last_message_id: nil,\n last_pin_timestamp: nil,\n name: \"announcements\",\n nsfw: false,\n owner_id: nil,\n parent_id: nil,\n permission_overwrites: [\n %Nostrum.Struct.Overwrite{\n allow: 0,\n deny: 2048,\n id: 766435015768539156,\n type: :role\n }\n ],\n position: 1,\n recipients: nil,\n topic: nil,\n type: 5,\n user_limit: nil\n}\n```\n\nMore details of the cache can be found at `Nostrum.Cache.ChannelCache`.","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\nNostrum.Cache.ChannelCache.get(381889573426429952)\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 command 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.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.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.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.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.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.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.splash/0","doc":"The hash of the guild's splash","ref":"Nostrum.Struct.Guild.html#t:splash/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.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.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.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.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.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.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.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.Message.Sticker","doc":"A `Nostrum.Struct.Message.Sticker` represents a sticker that can be sent inside a `Nostrum.Struct.Message`.\n\nMore information can be found on the [Discord API Sticker Object Documentation.](https://discord.com/developers/docs/resources/sticker#sticker-object-sticker-structure)","ref":"Nostrum.Struct.Message.Sticker.html"},{"type":"type","title":"Nostrum.Struct.Message.Sticker.available/0","doc":"Whether this guild sticker can be used, may be false due to loss of Server Boosts","ref":"Nostrum.Struct.Message.Sticker.html#t:available/0"},{"type":"type","title":"Nostrum.Struct.Message.Sticker.description/0","doc":"Description of the sticker","ref":"Nostrum.Struct.Message.Sticker.html#t:description/0"},{"type":"type","title":"Nostrum.Struct.Message.Sticker.format_type/0","doc":"[Discord API Sticker Object Format Type Documentation](https://discord.com/developers/docs/resources/sticker#sticker-object-sticker-format-types)\n\n- `1` - `PNG`\n- `2` - `APNG`\n- `3` - `LOTTIE`","ref":"Nostrum.Struct.Message.Sticker.html#t:format_type/0"},{"type":"type","title":"Nostrum.Struct.Message.Sticker.guild_id/0","doc":"Id of the guild that owns this sticker","ref":"Nostrum.Struct.Message.Sticker.html#t:guild_id/0"},{"type":"type","title":"Nostrum.Struct.Message.Sticker.id/0","doc":"Id of the sticker","ref":"Nostrum.Struct.Message.Sticker.html#t:id/0"},{"type":"type","title":"Nostrum.Struct.Message.Sticker.name/0","doc":"Name of the sticker","ref":"Nostrum.Struct.Message.Sticker.html#t:name/0"},{"type":"type","title":"Nostrum.Struct.Message.Sticker.pack_id/0","doc":"Id of the pack the sticker is from","ref":"Nostrum.Struct.Message.Sticker.html#t:pack_id/0"},{"type":"type","title":"Nostrum.Struct.Message.Sticker.sort_value/0","doc":"The sticker's sort order within its pack","ref":"Nostrum.Struct.Message.Sticker.html#t:sort_value/0"},{"type":"type","title":"Nostrum.Struct.Message.Sticker.t/0","doc":"","ref":"Nostrum.Struct.Message.Sticker.html#t:t/0"},{"type":"type","title":"Nostrum.Struct.Message.Sticker.tags/0","doc":"Discord name of a unicode emoji representing the sticker's expression. for standard stickers, a comma-separated list of related expressions.","ref":"Nostrum.Struct.Message.Sticker.html#t:tags/0"},{"type":"type","title":"Nostrum.Struct.Message.Sticker.type/0","doc":"[Discord API Sticker Object Type Documentation](https://discord.com/developers/docs/resources/sticker#sticker-object-sticker-types)\n\n- `1` - `STANDARD` an official sticker in a pack, part of Nitro or in a removed purchasable pack\n- `2` - `GUILD` a sticker uploaded to a Boosted guild for the guild's members","ref":"Nostrum.Struct.Message.Sticker.html#t:type/0"},{"type":"type","title":"Nostrum.Struct.Message.Sticker.user/0","doc":"User that uploaded the guild sticker","ref":"Nostrum.Struct.Message.Sticker.html#t:user/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.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.email/0","doc":"The user's email","ref":"Nostrum.Struct.User.html#t:email/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.mfa_enabled/0","doc":"Whether the user has two factor enabled","ref":"Nostrum.Struct.User.html#t:mfa_enabled/0"},{"type":"type","title":"Nostrum.Struct.User.public_flags/0","doc":"The user's public flags","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":"type","title":"Nostrum.Struct.User.verified/0","doc":"Whether the email on the account has been verified","ref":"Nostrum.Struct.User.html#t:verified/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.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.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":"type","title":"Nostrum.Struct.WSState.zlib_ctx/0","doc":"Reference to the current zlib context","ref":"Nostrum.Struct.WSState.html#t:zlib_ctx/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.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.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.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.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\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`","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.ChannelCache.ETS","doc":"An ETS-based cache for channels outside of guilds.\n\nThe supervisor defined by this module will set up the ETS table associated\nwith it.\n\nIf you need to get the table reference for the table used by this module,\nplease use the `table/0` function.\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.ChannelCache` directly, which will dispatch to the configured\ncache.","ref":"Nostrum.Cache.ChannelCache.ETS.html"},{"type":"function","title":"Nostrum.Cache.ChannelCache.ETS.child_spec/1","doc":"Returns a specification to start this module under a supervisor.\n\nSee `Supervisor`.","ref":"Nostrum.Cache.ChannelCache.ETS.html#child_spec/1"},{"type":"function","title":"Nostrum.Cache.ChannelCache.ETS.create/1","doc":"Converts and creates the given map as a channel in the cache.","ref":"Nostrum.Cache.ChannelCache.ETS.html#create/1"},{"type":"function","title":"Nostrum.Cache.ChannelCache.ETS.delete/1","doc":"Delete the channel from the cache by ID.","ref":"Nostrum.Cache.ChannelCache.ETS.html#delete/1"},{"type":"function","title":"Nostrum.Cache.ChannelCache.ETS.init/1","doc":"Set up the cache's ETS table.","ref":"Nostrum.Cache.ChannelCache.ETS.html#init/1"},{"type":"function","title":"Nostrum.Cache.ChannelCache.ETS.query_handle/0","doc":"Retrieve a query handle for usage with QLC.","ref":"Nostrum.Cache.ChannelCache.ETS.html#query_handle/0"},{"type":"function","title":"Nostrum.Cache.ChannelCache.ETS.start_link/1","doc":"Start the supervisor.","ref":"Nostrum.Cache.ChannelCache.ETS.html#start_link/1"},{"type":"function","title":"Nostrum.Cache.ChannelCache.ETS.table/0","doc":"Retrieve the ETS table reference used for the cache.","ref":"Nostrum.Cache.ChannelCache.ETS.html#table/0"},{"type":"function","title":"Nostrum.Cache.ChannelCache.ETS.update/1","doc":"Update the given channel in the cache.","ref":"Nostrum.Cache.ChannelCache.ETS.html#update/1"},{"type":"module","title":"Nostrum.Cache.ChannelCache.Mnesia","doc":"An Mnesia-based cache for channels outside of 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.ChannelCache.Mnesia.html"},{"type":"function","title":"Nostrum.Cache.ChannelCache.Mnesia.child_spec/1","doc":"Returns a specification to start this module under a supervisor.\n\nSee `Supervisor`.","ref":"Nostrum.Cache.ChannelCache.Mnesia.html#child_spec/1"},{"type":"function","title":"Nostrum.Cache.ChannelCache.Mnesia.clear/0","doc":"Clear any objects in the cache.","ref":"Nostrum.Cache.ChannelCache.Mnesia.html#clear/0"},{"type":"function","title":"Nostrum.Cache.ChannelCache.Mnesia.create/1","doc":"Creates the given channel in the cache.","ref":"Nostrum.Cache.ChannelCache.Mnesia.html#create/1"},{"type":"function","title":"Nostrum.Cache.ChannelCache.Mnesia.delete/1","doc":"Delete the channel from the cache by ID.","ref":"Nostrum.Cache.ChannelCache.Mnesia.html#delete/1"},{"type":"function","title":"Nostrum.Cache.ChannelCache.Mnesia.init/1","doc":"Set up the cache's Mnesia table.","ref":"Nostrum.Cache.ChannelCache.Mnesia.html#init/1"},{"type":"function","title":"Nostrum.Cache.ChannelCache.Mnesia.query_handle/0","doc":"Retrieve a QLC query handle for the channel cache.","ref":"Nostrum.Cache.ChannelCache.Mnesia.html#query_handle/0"},{"type":"function","title":"Nostrum.Cache.ChannelCache.Mnesia.start_link/1","doc":"Start the supervisor.","ref":"Nostrum.Cache.ChannelCache.Mnesia.html#start_link/1"},{"type":"function","title":"Nostrum.Cache.ChannelCache.Mnesia.table/0","doc":"Retrieve the table name used by the cache.","ref":"Nostrum.Cache.ChannelCache.Mnesia.html#table/0"},{"type":"function","title":"Nostrum.Cache.ChannelCache.Mnesia.teardown/0","doc":"Drop the table used for caching.","ref":"Nostrum.Cache.ChannelCache.Mnesia.html#teardown/0"},{"type":"function","title":"Nostrum.Cache.ChannelCache.Mnesia.update/1","doc":"Update the given channel in the cache.","ref":"Nostrum.Cache.ChannelCache.Mnesia.html#update/1"},{"type":"function","title":"Nostrum.Cache.ChannelCache.Mnesia.wrap_qlc/1","doc":"Wrap QLC operations in a transaction.","ref":"Nostrum.Cache.ChannelCache.Mnesia.html#wrap_qlc/1"},{"type":"module","title":"Nostrum.Cache.ChannelCache.NoOp","doc":"A NoOp implementation for the ChannelCache\n\nThis cache does nothing, enable it if you dont need to cache channels","ref":"Nostrum.Cache.ChannelCache.NoOp.html"},{"type":"function","title":"Nostrum.Cache.ChannelCache.NoOp.child_spec/1","doc":"Returns a specification to start this module under a supervisor.\n\nSee `Supervisor`.","ref":"Nostrum.Cache.ChannelCache.NoOp.html#child_spec/1"},{"type":"function","title":"Nostrum.Cache.ChannelCache.NoOp.start_link/1","doc":"Start the supervisor.","ref":"Nostrum.Cache.ChannelCache.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.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.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 the given member for the given guild 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.","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.disconnected/3","doc":"","ref":"Nostrum.Shard.Session.html#disconnected/3"},{"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":"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.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":"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.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](events.html) - Handling events from Discord as they come in.\n* [Voice](voice.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.8\"}]\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- `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`.","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.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.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`.","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`.","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- A more complex and active bot, bolt, can be found [here](https://github.com/jchristgit/bolt).\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\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.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.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.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.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.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":"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.\n\nAs an example, Nosedrum has a function to find a guild member by username and\ndiscriminator. This is internally implemented with the following query:\n\n```erl\nfind_by(RequestedGuildId, Name, Discriminator, MemberCache, UserCache) ->\n qlc:q([Member || {{GuildId, MemberId}, Member} <- MemberCache:query_handle(),\n GuildId =:= RequestedGuildId,\n {UserId, User} <- UserCache:query_handle(),\n MemberId =:= UserId,\n map_get(username, User) =:= Name,\n map_get(discriminator, User) =:= Discriminator]).\n```\n\nBy [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#query-list-comprehensions"},{"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":"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 fromthe\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":"Voice","doc":"# Voice","ref":"voice.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.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.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`.","ref":"voice.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.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.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.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.html#voice-events"},{"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\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"},{"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/users_guide.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.\n\nThese cache adapters presently also don't send out any data they receive either:\nthis means that for caches using the NoOp cache adapters, you won't receive any\ngateway events.","ref":"pluggable_caching.html#noop-caching"},{"type":"extras","title":"Cache invalidation - Pluggable caching","doc":"nostrum does not invalidate cache 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.","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":"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, :kcl, :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.8\", 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":"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"}],"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-735F4D48.js b/dist/search_data-735F4D48.js
new file mode 100644
index 000000000..6b4523378
--- /dev/null
+++ b/dist/search_data-735F4D48.js
@@ -0,0 +1 @@
+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_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_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_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_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_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_token/0","doc":"Returns the token of the bot.","ref":"Nostrum.Api.html#get_token/0"},{"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_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_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\n\n # Default event handler, if you don't include this, your consumer WILL crash if\n # you don't have a method definition for each event type.\n def handle_event(_event) do\n :noop\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_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.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.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.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.","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 command 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.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.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.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.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.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.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.splash/0","doc":"The hash of the guild's splash","ref":"Nostrum.Struct.Guild.html#t:splash/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.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.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.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.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.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.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.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.Message.Sticker","doc":"A `Nostrum.Struct.Message.Sticker` represents a sticker that can be sent inside a `Nostrum.Struct.Message`.\n\nMore information can be found on the [Discord API Sticker Object Documentation.](https://discord.com/developers/docs/resources/sticker#sticker-object-sticker-structure)","ref":"Nostrum.Struct.Message.Sticker.html"},{"type":"type","title":"Nostrum.Struct.Message.Sticker.available/0","doc":"Whether this guild sticker can be used, may be false due to loss of Server Boosts","ref":"Nostrum.Struct.Message.Sticker.html#t:available/0"},{"type":"type","title":"Nostrum.Struct.Message.Sticker.description/0","doc":"Description of the sticker","ref":"Nostrum.Struct.Message.Sticker.html#t:description/0"},{"type":"type","title":"Nostrum.Struct.Message.Sticker.format_type/0","doc":"[Discord API Sticker Object Format Type Documentation](https://discord.com/developers/docs/resources/sticker#sticker-object-sticker-format-types)\n\n- `1` - `PNG`\n- `2` - `APNG`\n- `3` - `LOTTIE`","ref":"Nostrum.Struct.Message.Sticker.html#t:format_type/0"},{"type":"type","title":"Nostrum.Struct.Message.Sticker.guild_id/0","doc":"Id of the guild that owns this sticker","ref":"Nostrum.Struct.Message.Sticker.html#t:guild_id/0"},{"type":"type","title":"Nostrum.Struct.Message.Sticker.id/0","doc":"Id of the sticker","ref":"Nostrum.Struct.Message.Sticker.html#t:id/0"},{"type":"type","title":"Nostrum.Struct.Message.Sticker.name/0","doc":"Name of the sticker","ref":"Nostrum.Struct.Message.Sticker.html#t:name/0"},{"type":"type","title":"Nostrum.Struct.Message.Sticker.pack_id/0","doc":"Id of the pack the sticker is from","ref":"Nostrum.Struct.Message.Sticker.html#t:pack_id/0"},{"type":"type","title":"Nostrum.Struct.Message.Sticker.sort_value/0","doc":"The sticker's sort order within its pack","ref":"Nostrum.Struct.Message.Sticker.html#t:sort_value/0"},{"type":"type","title":"Nostrum.Struct.Message.Sticker.t/0","doc":"","ref":"Nostrum.Struct.Message.Sticker.html#t:t/0"},{"type":"type","title":"Nostrum.Struct.Message.Sticker.tags/0","doc":"Discord name of a unicode emoji representing the sticker's expression. for standard stickers, a comma-separated list of related expressions.","ref":"Nostrum.Struct.Message.Sticker.html#t:tags/0"},{"type":"type","title":"Nostrum.Struct.Message.Sticker.type/0","doc":"[Discord API Sticker Object Type Documentation](https://discord.com/developers/docs/resources/sticker#sticker-object-sticker-types)\n\n- `1` - `STANDARD` an official sticker in a pack, part of Nitro or in a removed purchasable pack\n- `2` - `GUILD` a sticker uploaded to a Boosted guild for the guild's members","ref":"Nostrum.Struct.Message.Sticker.html#t:type/0"},{"type":"type","title":"Nostrum.Struct.Message.Sticker.user/0","doc":"User that uploaded the guild sticker","ref":"Nostrum.Struct.Message.Sticker.html#t:user/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.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.email/0","doc":"The user's email","ref":"Nostrum.Struct.User.html#t:email/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.mfa_enabled/0","doc":"Whether the user has two factor enabled","ref":"Nostrum.Struct.User.html#t:mfa_enabled/0"},{"type":"type","title":"Nostrum.Struct.User.public_flags/0","doc":"The user's public flags","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":"type","title":"Nostrum.Struct.User.verified/0","doc":"Whether the email on the account has been verified","ref":"Nostrum.Struct.User.html#t:verified/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.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.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":"type","title":"Nostrum.Struct.WSState.zlib_ctx/0","doc":"Reference to the current zlib context","ref":"Nostrum.Struct.WSState.html#t:zlib_ctx/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.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.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.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.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\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`","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.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.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.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 the given member for the given guild 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.","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.disconnected/3","doc":"","ref":"Nostrum.Shard.Session.html#disconnected/3"},{"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":"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.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":"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.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](events.html) - Handling events from Discord as they come in.\n* [Voice](voice.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.8\"}]\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- `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`.","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.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.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`.","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`.","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- A more complex and active bot, bolt, can be found [here](https://github.com/jchristgit/bolt).\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\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.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.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.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.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.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":"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.\n\nAs an example, Nosedrum has a function to find a guild member by username and\ndiscriminator. This is internally implemented with the following query:\n\n```erl\nfind_by(RequestedGuildId, Name, Discriminator, MemberCache, UserCache) ->\n qlc:q([Member || {{GuildId, MemberId}, Member} <- MemberCache:query_handle(),\n GuildId =:= RequestedGuildId,\n {UserId, User} <- UserCache:query_handle(),\n MemberId =:= UserId,\n map_get(username, User) =:= Name,\n map_get(discriminator, User) =:= Discriminator]).\n```\n\nBy [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#query-list-comprehensions"},{"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":"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 fromthe\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":"Voice","doc":"# Voice","ref":"voice.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.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.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`.","ref":"voice.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.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.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.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.html#voice-events"},{"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\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"},{"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/users_guide.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.\n\nThese cache adapters presently also don't send out any data they receive either:\nthis means that for caches using the NoOp cache adapters, you won't receive any\ngateway events.","ref":"pluggable_caching.html#noop-caching"},{"type":"extras","title":"Cache invalidation - Pluggable caching","doc":"nostrum does not invalidate cache 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.","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":"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, :kcl, :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.8\", 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":"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"}],"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-7079D557.js b/dist/sidebar_items-7079D557.js
deleted file mode 100644
index cb8f6f9d9..000000000
--- a/dist/sidebar_items-7079D557.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_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, options)","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_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_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_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_token/0","deprecated":false,"title":"get_token()","anchor":"get_token/0"},{"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_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_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_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.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.ChannelCache","deprecated":false,"group":"Cache","title":"Nostrum.Cache.ChannelCache","sections":[{"id":"Writing your own channel cache","anchor":"module-writing-your-own-channel-cache"}],"nodeGroups":[{"name":"Types","nodes":[{"id":"reason/0","deprecated":false,"title":"reason()","anchor":"t:reason/0"}],"key":"types"},{"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(map)","anchor":"c:create/1"},{"id":"delete/1","deprecated":false,"title":"delete(id)","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(t)","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(channel_or_message)","anchor":"get/1"},{"id":"get/2","deprecated":false,"title":"get(channel_id, cache)","anchor":"get/2"},{"id":"get!/1","deprecated":false,"title":"get!(channel_or_message)","anchor":"get!/1"},{"id":"get!/2","deprecated":false,"title":"get!(channel_id, cache)","anchor":"get!/2"},{"id":"query_handle/0","deprecated":false,"title":"query_handle()","anchor":"query_handle/0"}],"key":"functions"}],"nested_title":".ChannelCache","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":"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.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 Cache","anchor":"module-channel-cache"},{"id":"Example","anchor":"module-example"},{"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":"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":"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":"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":"owner_id/0","deprecated":false,"title":"owner_id()","anchor":"t:owner_id/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":"splash/0","deprecated":false,"title":"splash()","anchor":"t:splash/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":"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":"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":"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":"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":"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":"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.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.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.Message.Sticker","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Message.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"}],"nested_title":".Message.Sticker","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.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":"email/0","deprecated":false,"title":"email()","anchor":"t:email/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":"mfa_enabled/0","deprecated":false,"title":"mfa_enabled()","anchor":"t:mfa_enabled/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"},{"id":"verified/0","deprecated":false,"title":"verified()","anchor":"t:verified/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":"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":"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"},{"id":"zlib_ctx/0","deprecated":false,"title":"zlib_ctx()","anchor":"t:zlib_ctx/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":"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":"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":"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":"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(stamp)","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.ChannelCache.ETS","deprecated":false,"group":"Pluggable caches & stores","title":"Nostrum.Cache.ChannelCache.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(channel)","anchor":"create/1"},{"id":"delete/1","deprecated":false,"title":"delete(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":"update/1","deprecated":false,"title":"update(channel)","anchor":"update/1"}],"key":"functions"}],"nested_title":".ETS","nested_context":"Nostrum.Cache.ChannelCache"},{"id":"Nostrum.Cache.ChannelCache.Mnesia","deprecated":false,"group":"Pluggable caches & stores","title":"Nostrum.Cache.ChannelCache.Mnesia","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"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(channel)","anchor":"create/1"},{"id":"delete/1","deprecated":false,"title":"delete(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(channel)","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.ChannelCache"},{"id":"Nostrum.Cache.ChannelCache.NoOp","deprecated":false,"group":"Pluggable caches & stores","title":"Nostrum.Cache.ChannelCache.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.ChannelCache"},{"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":"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":"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(list)","anchor":"init/1"},{"id":"queue/1","deprecated":false,"title":"queue(request)","anchor":"queue/1"},{"id":"start_link/1","deprecated":false,"title":"start_link(opts)","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":"disconnected/3","deprecated":false,"title":"disconnected(arg1, arg2, data)","anchor":"disconnected/3"},{"id":"get_ws_state/1","deprecated":false,"title":"get_ws_state(pid)","anchor":"get_ws_state/1"},{"id":"init/1","deprecated":false,"title":"init(list)","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(shard_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.Supervisor","deprecated":false,"group":"Internal modules","title":"Nostrum.Shard.Supervisor","sections":[{"id":"Implementation","anchor":"module-implementation"}],"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(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","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":"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":"event_handling","group":"Functionality","title":"Event handling","headers":[]},{"id":"voice","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":"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":"multi_node","group":"Advanced","title":"Multi-node","headers":[{"id":"High availability","anchor":"high-availability"}]},{"id":"hot_code_upgrade","group":"Advanced","title":"Hot code upgrade","headers":[]}],"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-7AD0E00D.js b/dist/sidebar_items-7AD0E00D.js
new file mode 100644
index 000000000..5e9f8f283
--- /dev/null
+++ b/dist/sidebar_items-7AD0E00D.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_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, options)","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_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_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_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_token/0","deprecated":false,"title":"get_token()","anchor":"get_token/0"},{"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_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_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_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.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":"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.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":"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":"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":"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":"owner_id/0","deprecated":false,"title":"owner_id()","anchor":"t:owner_id/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":"splash/0","deprecated":false,"title":"splash()","anchor":"t:splash/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":"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":"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":"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":"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":"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":"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.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.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.Message.Sticker","deprecated":false,"group":"Structs","title":"Nostrum.Struct.Message.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"}],"nested_title":".Message.Sticker","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.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":"email/0","deprecated":false,"title":"email()","anchor":"t:email/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":"mfa_enabled/0","deprecated":false,"title":"mfa_enabled()","anchor":"t:mfa_enabled/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"},{"id":"verified/0","deprecated":false,"title":"verified()","anchor":"t:verified/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":"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":"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"},{"id":"zlib_ctx/0","deprecated":false,"title":"zlib_ctx()","anchor":"t:zlib_ctx/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":"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":"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":"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":"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(stamp)","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.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":"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":"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(list)","anchor":"init/1"},{"id":"queue/1","deprecated":false,"title":"queue(request)","anchor":"queue/1"},{"id":"start_link/1","deprecated":false,"title":"start_link(opts)","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":"disconnected/3","deprecated":false,"title":"disconnected(arg1, arg2, data)","anchor":"disconnected/3"},{"id":"get_ws_state/1","deprecated":false,"title":"get_ws_state(pid)","anchor":"get_ws_state/1"},{"id":"init/1","deprecated":false,"title":"init(list)","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(shard_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.Supervisor","deprecated":false,"group":"Internal modules","title":"Nostrum.Shard.Supervisor","sections":[{"id":"Implementation","anchor":"module-implementation"}],"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(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","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":"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":"event_handling","group":"Functionality","title":"Event handling","headers":[]},{"id":"voice","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":"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":"multi_node","group":"Advanced","title":"Multi-node","headers":[{"id":"High availability","anchor":"high-availability"}]},{"id":"hot_code_upgrade","group":"Advanced","title":"Hot code upgrade","headers":[]}],"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 12e090ce0..a4a83a107 100644
--- a/event_handling.html
+++ b/event_handling.html
@@ -14,7 +14,7 @@
-
+
diff --git a/gateway_intents.html b/gateway_intents.html
index 287c5482c..4e10e42da 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 30dd9f867..9686a20f0 100644
--- a/hot_code_upgrade.html
+++ b/hot_code_upgrade.html
@@ -14,7 +14,7 @@
-
+
diff --git a/intro.html b/intro.html
index 894b1d72e..ff97ccf6e 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.8"}]
+have more errors.def deps do
+ [{:nostrum, "~> 0.8"}]
# 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
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/multi_node.html b/multi_node.html
index e8e6363ce..3c9f452f4 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, :kcl, :mime]
+ extra_applications: [:certifi, :gun, :inets, :jason, :kcl, :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.8", runtime: false},
+as command frameworks like :nosedrum
: defp deps do
+ [
+ {:nostrum, "~> 0.8", 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 3736f04df..0a6860d85 100644
--- a/pluggable_caching.html
+++ b/pluggable_caching.html
@@ -14,7 +14,7 @@
-
+
@@ -144,9 +144,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/search.html b/search.html
index c83dca83d..dec0b0591 100644
--- a/search.html
+++ b/search.html
@@ -16,7 +16,7 @@
-
+
@@ -133,7 +133,7 @@
-
+