Module: Discorb::ApplicationCommand::Handler
- Included in:
- Client
- Defined in:
- lib/discorb/app_command.rb
Overview
Module to handle application commands.
Instance Method Summary collapse
-
#message_command(command_name, guild_ids: nil, &block) {|interaction, message| ... } ⇒ Discorb::ApplicationCommand::Command
Add message context menu command.
-
#setup_commands(token = nil, guild_ids: nil) -> Object
Setup commands.
-
#slash(command_name, description, options = {}, guild_ids: nil, &block) -> Discorb::ApplicationCommand::Command::SlashCommand
Add new top-level command.
-
#slash_group(command_name, description, guild_ids: nil) {|group| ... } ⇒ Discorb::ApplicationCommand::Command::GroupCommand
Add new command with group.
-
#user_command(command_name, guild_ids: nil, &block) {|interaction, user| ... } ⇒ Discorb::ApplicationCommand::Command
Add user context menu command.
Instance Method Details
#message_command(command_name, guild_ids: nil, &block) {|interaction, message| ... } ⇒ Discorb::ApplicationCommand::Command
Add message context menu command.
76 77 78 79 80 |
# File 'lib/discorb/app_command.rb', line 76 def (command_name, guild_ids: nil, &block) command = Discorb::ApplicationCommand::Command.new(command_name, guild_ids, block, 3) @commands << command command end |
#setup_commands(token = nil, guild_ids: nil) -> Object
Note:
token
parameter only required if you don't run client.
Setup commands.
109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 |
# File 'lib/discorb/app_command.rb', line 109 def setup_commands(token = nil, guild_ids: nil) Async do @token ||= token @http = HTTP.new(self) global_commands = @commands.select { |c| c.guild_ids == false or c.guild_ids == [] } local_commands = @commands.select { |c| c.guild_ids.is_a?(Array) and c.guild_ids.any? } default_commands = @commands.select { |c| c.guild_ids.nil? } if guild_ids.is_a?(Array) default_commands.each do |command| command.instance_variable_set(:@guild_ids, guild_ids) end local_commands += default_commands else global_commands += default_commands end final_guild_ids = local_commands.map(&:guild_ids).flatten.map(&:to_s).uniq app_info = fetch_application.wait http.put("/applications/#{app_info.id}/commands", global_commands.map(&:to_hash)).wait unless global_commands.empty? final_guild_ids.each do |guild_id| commands = local_commands.select { |c| c.guild_ids.include?(guild_id) } http.put("/applications/#{app_info.id}/guilds/#{guild_id}/commands", commands.map(&:to_hash)).wait end unless final_guild_ids.empty? @log.info "Successfully setup commands" end end |
#slash(command_name, description, options = {}, guild_ids: nil, &block) -> Discorb::ApplicationCommand::Command::SlashCommand
Add new top-level command.
35 36 37 38 39 40 |
# File 'lib/discorb/app_command.rb', line 35 def slash(command_name, description, = {}, guild_ids: nil, &block) command = Discorb::ApplicationCommand::Command::SlashCommand.new(command_name, description, , guild_ids, block, 1, "") @commands << command @bottom_commands << command command end |
#slash_group(command_name, description, guild_ids: nil) {|group| ... } ⇒ Discorb::ApplicationCommand::Command::GroupCommand
Add new command with group.
57 58 59 60 61 62 |
# File 'lib/discorb/app_command.rb', line 57 def slash_group(command_name, description, guild_ids: nil, &block) command = Discorb::ApplicationCommand::Command::GroupCommand.new(command_name, description, guild_ids, nil, self) command.yield_self(&block) if block_given? @commands << command command end |
#user_command(command_name, guild_ids: nil, &block) {|interaction, user| ... } ⇒ Discorb::ApplicationCommand::Command
Add user context menu command.
94 95 96 97 98 |
# File 'lib/discorb/app_command.rb', line 94 def user_command(command_name, guild_ids: nil, &block) command = Discorb::ApplicationCommand::Command.new(command_name, guild_ids, block, 2) @commands << command command end |