Class: Discordrb::Interactions::OptionBuilder
- Inherits:
-
Object
- Object
- Discordrb::Interactions::OptionBuilder
- Defined in:
- lib/discordrb/data/interaction.rb
Overview
A builder for defining slash commands options.
Constant Summary collapse
- CHANNEL_TYPES =
Channel types that can be provided to #channel
{ text: 0, dm: 1, voice: 2, group_dm: 3, category: 4, news: 5, store: 6, news_thread: 10, public_thread: 11, private_thread: 12, stage: 13 }.freeze
Instance Attribute Summary collapse
- #options ⇒ Array<Hash> readonly
Instance Method Summary collapse
-
#attachment(name, description, required: nil) ⇒ Object
Hash.
-
#boolean(name, description, required: nil) ⇒ Object
Hash.
-
#channel(name, description, required: nil, types: nil) ⇒ Object
Hash.
-
#integer(name, description, required: nil, min_value: nil, max_value: nil, choices: nil, autocomplete: nil) ⇒ Object
Hash.
-
#mentionable(name, description, required: nil) ⇒ Object
Hash.
-
#number(name, description, required: nil, min_value: nil, max_value: nil, choices: nil, autocomplete: nil) ⇒ Object
Hash.
-
#role(name, description, required: nil) ⇒ Object
Hash.
-
#string(name, description, required: nil, min_length: nil, max_length: nil, choices: nil, autocomplete: nil) ⇒ Object
Hash.
-
#subcommand(name, description) {|| ... } ⇒ Object
Hash.
-
#subcommand_group(name, description) {|| ... } ⇒ Object
Hash.
- #to_a ⇒ Array<Hash>
-
#user(name, description, required: nil) ⇒ Object
Hash.
Instance Attribute Details
#options ⇒ Array<Hash> (readonly)
610 611 612 |
# File 'lib/discordrb/data/interaction.rb', line 610 def @options end |
Instance Method Details
#attachment(name, description, required: nil) ⇒ Object
Returns Hash.
737 738 739 |
# File 'lib/discordrb/data/interaction.rb', line 737 def (name, description, required: nil) option(TYPES[:attachment], name, description, required: required) end |
#boolean(name, description, required: nil) ⇒ Object
Returns Hash.
683 684 685 |
# File 'lib/discordrb/data/interaction.rb', line 683 def boolean(name, description, required: nil) option(TYPES[:boolean], name, description, required: required) end |
#channel(name, description, required: nil, types: nil) ⇒ Object
Returns Hash.
700 701 702 703 |
# File 'lib/discordrb/data/interaction.rb', line 700 def channel(name, description, required: nil, types: nil) types = types&.collect { |type| type.is_a?(Numeric) ? type : CHANNEL_TYPES[type] } option(TYPES[:channel], name, description, required: required, channel_types: types) end |
#integer(name, description, required: nil, min_value: nil, max_value: nil, choices: nil, autocomplete: nil) ⇒ Object
Returns Hash.
674 675 676 677 |
# File 'lib/discordrb/data/interaction.rb', line 674 def integer(name, description, required: nil, min_value: nil, max_value: nil, choices: nil, autocomplete: nil) option(TYPES[:integer], name, description, required: required, min_value: min_value, max_value: max_value, choices: choices, autocomplete: autocomplete) end |
#mentionable(name, description, required: nil) ⇒ Object
Returns Hash.
717 718 719 |
# File 'lib/discordrb/data/interaction.rb', line 717 def mentionable(name, description, required: nil) option(TYPES[:mentionable], name, description, required: required) end |
#number(name, description, required: nil, min_value: nil, max_value: nil, choices: nil, autocomplete: nil) ⇒ Object
Returns Hash.
728 729 730 731 |
# File 'lib/discordrb/data/interaction.rb', line 728 def number(name, description, required: nil, min_value: nil, max_value: nil, choices: nil, autocomplete: nil) option(TYPES[:number], name, description, required: required, min_value: min_value, max_value: max_value, choices: choices, autocomplete: autocomplete) end |
#role(name, description, required: nil) ⇒ Object
Returns Hash.
709 710 711 |
# File 'lib/discordrb/data/interaction.rb', line 709 def role(name, description, required: nil) option(TYPES[:role], name, description, required: required) end |
#string(name, description, required: nil, min_length: nil, max_length: nil, choices: nil, autocomplete: nil) ⇒ Object
Returns Hash.
661 662 663 664 |
# File 'lib/discordrb/data/interaction.rb', line 661 def string(name, description, required: nil, min_length: nil, max_length: nil, choices: nil, autocomplete: nil) option(TYPES[:string], name, description, required: required, min_length: min_length, max_length: max_length, choices: choices, autocomplete: autocomplete) end |
#subcommand(name, description) {|| ... } ⇒ Object
Returns Hash.
627 628 629 630 631 632 |
# File 'lib/discordrb/data/interaction.rb', line 627 def subcommand(name, description) builder = OptionBuilder.new yield builder if block_given? option(TYPES[:subcommand], name, description, options: builder.to_a) end |
#subcommand_group(name, description) {|| ... } ⇒ Object
Returns Hash.
646 647 648 649 650 651 |
# File 'lib/discordrb/data/interaction.rb', line 646 def subcommand_group(name, description) builder = OptionBuilder.new yield builder option(TYPES[:subcommand_group], name, description, options: builder.to_a) end |
#to_a ⇒ Array<Hash>
767 768 769 |
# File 'lib/discordrb/data/interaction.rb', line 767 def to_a @options end |
#user(name, description, required: nil) ⇒ Object
Returns Hash.
691 692 693 |
# File 'lib/discordrb/data/interaction.rb', line 691 def user(name, description, required: nil) option(TYPES[:user], name, description, required: required) end |