crux_structs v0.2.3 Crux.Structs.Channel View Source

Represents a Discord Channel Object.

List of where every property can be present:

PropertyText (0)DM (1)Voice (2)Group (3)Category (4)News (5)
application_idnononoyesnono
bitratenonoyesnonono
guild_idyesnoyesnoyesyes
iconnononoyesnono
idyesyesyesyesyesyes
last_message_idyesyesnoyesnoyes
last_pin_timestampyesyesnoyesnoyes
nameyesnoyesyesyesyes
nsfwyesnonononoyes
owner_idnononoyesnono
parent_idyesnoyesnonoyes
permission_overwritesyesnoyesnoyesyes
positionyesnoyesnoyesyes
rate_limit_per_useryesnonononono
recipientsnoyes<br>(One Element)noyesnono
topicyesnoyesnoyesyes
type012345
user_limitnonoyesnonono

Differences opposed to the Discord API Object:

  • :recipients is a MapSet of user ids

Link to this section Summary

Types

All available types that can be resolved into a channel id.

All available types that can be resolved into a channel position.

t()
TypeIDDescription
GUILD_TEXT0A text channel within a guild.
DM1A direct text channel between two users.
GUILD_VOICE2A voice channel withing a guild.
GROUP_DM3A direct channel between multiple users.<br>Bots do not have access to those.
GUILD_CATEGORY4An organizational category.
GUILD_NEWS5A text channel users can follow and crosspost messages to.<br>Bots can not publish messages.
GUILD_STORE6A channel in which game developers can sell their game.<br>Bots can not interact with those.

For more information see the Discord Developer Documentation.

Functions

Creates a t:Crux.Structs.Channel.t/0 struct from raw data.

Resolves a t:position_resolvable/0 into a channel position.

Converts a t:Crux.Structs.Channel.t/0 into its discord mention format.

Link to this section Types

Link to this type

id_resolvable()

View Source (since 0.2.1)

Specs

All available types that can be resolved into a channel id.

Link to this type

position_resolvable()

View Source (since 0.2.1)

Specs

position_resolvable() ::
  Crux.Structs.Channel.t()
  | %{channel: id_resolvable(), position: integer()}
  | {id_resolvable(), integer()}
  | %{id: id_resolvable(), position: integer()}

All available types that can be resolved into a channel position.

Specs

t() :: %Crux.Structs.Channel{
  application_id: Crux.Structs.Snowflake.t(),
  bitrate: integer(),
  guild_id: Crux.Structs.Snowflake.t(),
  icon: String.t(),
  id: Crux.Structs.Snowflake.t(),
  last_message_id: Crux.Structs.Snowflake.t(),
  last_pin_timestamp: String.t(),
  name: String.t(),
  nsfw: boolean(),
  owner_id: Crux.Structs.Snowflake.t(),
  parent_id: Crux.Structs.Snowflake.t(),
  permission_overwrites: %{
    optional(Crux.Structs.Snowflake.t()) => Crux.Structs.Overwrite.t()
  },
  position: integer(),
  rate_limit_per_user: integer(),
  recipients: MapSet.t(Crux.Structs.Snowflake.t()),
  topic: String.t(),
  type: type(),
  user_limit: non_neg_integer()
}

Specs

type() :: non_neg_integer()
TypeIDDescription
GUILD_TEXT0A text channel within a guild.
DM1A direct text channel between two users.
GUILD_VOICE2A voice channel withing a guild.
GROUP_DM3A direct channel between multiple users.<br>Bots do not have access to those.
GUILD_CATEGORY4An organizational category.
GUILD_NEWS5A text channel users can follow and crosspost messages to.<br>Bots can not publish messages.
GUILD_STORE6A channel in which game developers can sell their game.<br>Bots can not interact with those.

For more information see the Discord Developer Documentation.

Link to this section Functions

Link to this function

create(data)

View Source (since 0.1.0)

Specs

create(data :: map()) :: t()

Creates a t:Crux.Structs.Channel.t/0 struct from raw data.

Automatically invoked by Crux.Structs.create/2

Link to this function

resolve_id(resolvable)

View Source (since 0.2.1)

Specs

resolve_id(id_resolvable()) :: Crux.Structs.Snowflake.t() | nil

Resolves the id of a t:Crux.Structs.Channel.t/0.

Automatically invoked by Crux.Structs.resolve_id/2.

  iex> %Crux.Structs.Message{channel_id: 222079895583457280}
  ...> |> Crux.Structs.Channel.resolve_id()
  222079895583457280

  iex> %Crux.Structs.Channel{id: 222079895583457280}
  ...> |> Crux.Structs.Channel.resolve_id()
  222079895583457280

  iex> 222079895583457280
  ...> |> Crux.Structs.Channel.resolve_id()
  222079895583457280

  iex> "222079895583457280"
  ...> |> Crux.Structs.Channel.resolve_id()
  222079895583457280
Link to this function

resolve_position(resolvable)

View Source (since 0.2.1)

Specs

resolve_position(position_resolvable()) ::
  %{id: Crux.Structs.Snowflake.t(), position: integer()} | nil

Resolves a t:position_resolvable/0 into a channel position.

Examples

  iex> %Crux.Structs.Channel{id: 222079895583457280, position: 5}
  ...> |> Crux.Structs.Channel.resolve_position()
  %{id: 222079895583457280, position: 5}

  iex> {%Crux.Structs.Channel{id: 222079895583457280}, 5}
  ...> |> Crux.Structs.Channel.resolve_position()
  %{id: 222079895583457280, position: 5}

  iex> {222079895583457280, 5}
  ...> |> Crux.Structs.Channel.resolve_position()
  %{id: 222079895583457280, position: 5}

  iex> %{id: 222079895583457280, position: 5}
  ...> |> Crux.Structs.Channel.resolve_position()
  %{id: 222079895583457280, position: 5}

  iex> %{channel: 222079895583457280, position: 5}
  ...> |> Crux.Structs.Channel.resolve_position()
  %{id: 222079895583457280, position: 5}

  iex> {nil, 5}
  ...> |> Crux.Structs.Channel.resolve_position()
  nil
Link to this function

to_mention(channel)

View Source (since 0.1.1)

Specs

to_mention(user :: Crux.Structs.Channel.t()) :: String.t()

Converts a t:Crux.Structs.Channel.t/0 into its discord mention format.

Example

iex> %Crux.Structs.Channel{id: 316880197314019329}
...> |> Crux.Structs.Channel.to_mention()
"<#316880197314019329>"