View Source Nostrum.Struct.Message.Component (Nostrum v0.9.0)

A component attached to a message.

Note that the fields present depend on the type/0 of the component object.

See the Discord API Component Object Documentation for more information.

Summary

Types

Child components for action rows.

A developer-defined identifier for the component.

Whether the component is disabled.

Partial emoji of the button.

Text that appears on the button, or above the text input.

Maximum length of the input text.

Maximum number of items that must be chosen.

Minimum length of the input text.

Minimum number of items that must be chosen.

Choices of the select menu.

Custom placeholder text if nothing is selected.

Whether the component is required to be filled, defaults to false.

An integer representing the style of the button or text input.

t()

Represents a message component.

Component type.

URL for link-style buttons.

The current value of the component.

Types

Link to this type

components()

View Source (since 0.5.0)
@type components() :: [t()]

Child components for action rows.

Only present for action rows.

Link to this type

custom_id()

View Source (since 0.5.0)
@type custom_id() :: String.t() | nil

A developer-defined identifier for the component.

Maximum of 100 characters. Only present for buttons and select menus.

Link to this type

disabled()

View Source (since 0.5.0)
@type disabled() :: boolean() | nil

Whether the component is disabled.

Only present for buttons and select menus.

@type emoji() :: Nostrum.Struct.Emoji.t() | nil

Partial emoji of the button.

Only present for buttons. The following fields are set:

  • name
  • id
  • animated
@type label() :: String.t() | nil

Text that appears on the button, or above the text input.

Maximum of 80 characters. Only present for buttons and text input.

Link to this type

max_length()

View Source (since 0.5.1)
@type max_length() :: 1..4000 | nil

Maximum length of the input text.

Defaults to 1. Maximum of 4000. Only present for text inputs.

Link to this type

max_values()

View Source (since 0.5.0)
@type max_values() :: 1..25 | nil

Maximum number of items that must be chosen.

Defaults to 1. Maximum of 25. Only present for select menus.

Link to this type

min_length()

View Source (since 0.5.1)
@type min_length() :: 0..4000 | nil

Minimum length of the input text.

Defaults to 0. Maximum of 4000. Only present for text inputs.

Link to this type

min_values()

View Source (since 0.5.0)
@type min_values() :: 0..25 | nil

Minimum number of items that must be chosen.

Defaults to 1. Minimum of 0. Maximum of 25. Only present for select menus.

Link to this type

options()

View Source (since 0.5.0)
@type options() ::
  [
    %{
      :label => String.t(),
      :value => String.t(),
      optional(:description) => String.t(),
      optional(:emoji) => %{
        id: Nostrum.Struct.Emoji.id(),
        name: Nostrum.Struct.Emoji.name(),
        animated: Nostrum.Struct.Emoji.animated()
      },
      optional(:default) => boolean()
    }
  ]
  | nil

Choices of the select menu.

Maximum of 25 options. Only present for select menus.

References

See Discord Developer Portal: Select Option Structure.

Link to this type

placeholder()

View Source (since 0.5.0)
@type placeholder() :: String.t() | nil

Custom placeholder text if nothing is selected.

Maximum of 100 characters. Only present for select menus and text inputs.

Link to this type

required()

View Source (since 0.5.1)
@type required() :: boolean() | nil

Whether the component is required to be filled, defaults to false.

Only present for text inputs.

@type style() :: 1 | 2 | 3 | 4 | 5 | nil

An integer representing the style of the button or text input.

Only present for buttons and text input.

Values (Button)

  • 1: Primary - blurple, custom_id required.
  • 2: Secondary - grey, custom_id required.
  • 3: Success - green, custom_id required.
  • 4: Danger - red, custom_id required.
  • 5: Link - grey, url required, navigates to the URL.

Values (Text Input)

  • 1: Short - A single line text input.
  • 2: Paragraph - A multi-line text input.

References

See Discord Developer Portal: Button Styles.

@type t() :: %Nostrum.Struct.Message.Component{
  components: components(),
  custom_id: custom_id(),
  disabled: disabled(),
  emoji: emoji(),
  label: label(),
  max_length: max_length(),
  max_values: max_values(),
  min_length: min_length(),
  min_values: min_values(),
  options: options(),
  placeholder: placeholder(),
  required: required(),
  style: style(),
  type: type(),
  url: url(),
  value: value()
}

Represents a message component.

@type type() :: 1 | 2 | 3 | 4

Component type.

This field is always set.

Values

  • 1: Action Row - A container for other components.
  • 2: Button - A button object.
  • 3: Select Menu - A select menu for picking from choices.
  • 4: Text Input - A text input field.

References

See Discord Developer Portal: Component Types.

@type url() :: String.t() | nil

URL for link-style buttons.

Only present for buttons.

@type value() :: String.t() | nil

The current value of the component.

When creating a new component, this will be its pre-filled value if present. Only present for text inputs.