Class: OnyxCord::Interactions::OptionBuilder
- Inherits:
-
Object
- Object
- OnyxCord::Interactions::OptionBuilder
- Defined in:
- lib/onyxcord/interactions/internal/option_builder.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, name_localizations: nil, description_localizations: nil) ⇒ Object
Hash.
-
#boolean(name, description, required: nil, name_localizations: nil, description_localizations: nil) ⇒ Object
Hash.
-
#channel(name, description, required: nil, types: nil, name_localizations: nil, description_localizations: nil) ⇒ Object
Hash.
-
#integer(name, description, required: nil, min_value: nil, max_value: nil, choices: nil, autocomplete: nil, name_localizations: nil, description_localizations: nil, choice_localizations: nil) ⇒ Object
Hash.
-
#mentionable(name, description, required: nil, name_localizations: nil, description_localizations: nil) ⇒ Object
Hash.
-
#number(name, description, required: nil, min_value: nil, max_value: nil, choices: nil, autocomplete: nil, name_localizations: nil, description_localizations: nil, choice_localizations: nil) ⇒ Object
Hash.
-
#role(name, description, required: nil, name_localizations: nil, description_localizations: nil) ⇒ Object
Hash.
-
#string(name, description, required: nil, min_length: nil, max_length: nil, choices: nil, autocomplete: nil, name_localizations: nil, description_localizations: nil, choice_localizations: nil) ⇒ Object
Hash.
-
#subcommand(name, description) {|| ... } ⇒ Object
Hash.
-
#subcommand_group(name, description) {|| ... } ⇒ Object
Hash.
- #to_a ⇒ Array<Hash>
-
#user(name, description, required: nil, name_localizations: nil, description_localizations: nil) ⇒ Object
Hash.
Instance Attribute Details
#options ⇒ Array<Hash> (readonly)
38 39 40 |
# File 'lib/onyxcord/interactions/internal/option_builder.rb', line 38 def @options end |
Instance Method Details
#attachment(name, description, required: nil, name_localizations: nil, description_localizations: nil) ⇒ Object
Returns Hash.
179 180 181 182 |
# File 'lib/onyxcord/interactions/internal/option_builder.rb', line 179 def (name, description, required: nil, name_localizations: nil, description_localizations: nil) option(TYPES[:attachment], name, description, required: required, name_localizations: name_localizations, description_localizations: description_localizations) end |
#boolean(name, description, required: nil, name_localizations: nil, description_localizations: nil) ⇒ Object
Returns Hash.
117 118 119 120 |
# File 'lib/onyxcord/interactions/internal/option_builder.rb', line 117 def boolean(name, description, required: nil, name_localizations: nil, description_localizations: nil) option(TYPES[:boolean], name, description, required: required, name_localizations: name_localizations, description_localizations: description_localizations) end |
#channel(name, description, required: nil, types: nil, name_localizations: nil, description_localizations: nil) ⇒ Object
Returns Hash.
136 137 138 139 140 |
# File 'lib/onyxcord/interactions/internal/option_builder.rb', line 136 def channel(name, description, required: nil, types: nil, name_localizations: nil, description_localizations: nil) types = types&.collect { |type| type.is_a?(Numeric) ? type : CHANNEL_TYPES[type] } option(TYPES[:channel], name, description, required: required, channel_types: types, name_localizations: name_localizations, description_localizations: description_localizations) end |
#integer(name, description, required: nil, min_value: nil, max_value: nil, choices: nil, autocomplete: nil, name_localizations: nil, description_localizations: nil, choice_localizations: nil) ⇒ Object
Returns Hash.
105 106 107 108 109 110 111 |
# File 'lib/onyxcord/interactions/internal/option_builder.rb', line 105 def integer(name, description, required: nil, min_value: nil, max_value: nil, choices: nil, autocomplete: nil, name_localizations: nil, description_localizations: nil, choice_localizations: nil) option(TYPES[:integer], name, description, required: required, min_value: min_value, max_value: max_value, choices: choices, autocomplete: autocomplete, name_localizations: name_localizations, description_localizations: description_localizations, choice_localizations: choice_localizations) end |
#mentionable(name, description, required: nil, name_localizations: nil, description_localizations: nil) ⇒ Object
Returns Hash.
155 156 157 158 |
# File 'lib/onyxcord/interactions/internal/option_builder.rb', line 155 def mentionable(name, description, required: nil, name_localizations: nil, description_localizations: nil) option(TYPES[:mentionable], name, description, required: required, name_localizations: name_localizations, description_localizations: description_localizations) end |
#number(name, description, required: nil, min_value: nil, max_value: nil, choices: nil, autocomplete: nil, name_localizations: nil, description_localizations: nil, choice_localizations: nil) ⇒ Object
Returns Hash.
167 168 169 170 171 172 173 |
# File 'lib/onyxcord/interactions/internal/option_builder.rb', line 167 def number(name, description, required: nil, min_value: nil, max_value: nil, choices: nil, autocomplete: nil, name_localizations: nil, description_localizations: nil, choice_localizations: nil) option(TYPES[:number], name, description, required: required, min_value: min_value, max_value: max_value, choices: choices, autocomplete: autocomplete, name_localizations: name_localizations, description_localizations: description_localizations, choice_localizations: choice_localizations) end |
#role(name, description, required: nil, name_localizations: nil, description_localizations: nil) ⇒ Object
Returns Hash.
146 147 148 149 |
# File 'lib/onyxcord/interactions/internal/option_builder.rb', line 146 def role(name, description, required: nil, name_localizations: nil, description_localizations: nil) option(TYPES[:role], name, description, required: required, name_localizations: name_localizations, description_localizations: description_localizations) end |
#string(name, description, required: nil, min_length: nil, max_length: nil, choices: nil, autocomplete: nil, name_localizations: nil, description_localizations: nil, choice_localizations: nil) ⇒ Object
Returns Hash.
89 90 91 92 93 94 95 |
# File 'lib/onyxcord/interactions/internal/option_builder.rb', line 89 def string(name, description, required: nil, min_length: nil, max_length: nil, choices: nil, autocomplete: nil, name_localizations: nil, description_localizations: nil, choice_localizations: nil) option(TYPES[:string], name, description, required: required, min_length: min_length, max_length: max_length, choices: choices, autocomplete: autocomplete, name_localizations: name_localizations, description_localizations: description_localizations, choice_localizations: choice_localizations) end |
#subcommand(name, description) {|| ... } ⇒ Object
Returns Hash.
55 56 57 58 59 60 |
# File 'lib/onyxcord/interactions/internal/option_builder.rb', line 55 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.
74 75 76 77 78 79 |
# File 'lib/onyxcord/interactions/internal/option_builder.rb', line 74 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>
212 213 214 |
# File 'lib/onyxcord/interactions/internal/option_builder.rb', line 212 def to_a @options end |
#user(name, description, required: nil, name_localizations: nil, description_localizations: nil) ⇒ Object
Returns Hash.
126 127 128 129 |
# File 'lib/onyxcord/interactions/internal/option_builder.rb', line 126 def user(name, description, required: nil, name_localizations: nil, description_localizations: nil) option(TYPES[:user], name, description, required: required, name_localizations: name_localizations, description_localizations: description_localizations) end |