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.
| 80 81 82 83 84 | # File 'lib/discorb/app_command.rb', line 80 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.
| 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 | # File 'lib/discorb/app_command.rb', line 113 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.
| 39 40 41 42 43 44 | # File 'lib/discorb/app_command.rb', line 39 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.
| 61 62 63 64 65 66 | # File 'lib/discorb/app_command.rb', line 61 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.
| 98 99 100 101 102 | # File 'lib/discorb/app_command.rb', line 98 def user_command(command_name, guild_ids: nil, &block) command = Discorb::ApplicationCommand::Command.new(command_name, guild_ids, block, 2) @commands << command command end |