Module: Discorb::ApplicationCommand::Handler
- Included in:
- Client, Extension::ClassMethods
- 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.
81 82 83 84 85 |
# File 'lib/discorb/app_command.rb', line 81 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.
115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 |
# File 'lib/discorb/app_command.rb', line 115 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.request( Route.new( "/applications/#{app_info.id}/commands", "//applications/:application_id/commands", :put ), global_commands.map(&:to_hash) ).wait unless global_commands.empty? if ENV["DISCORB_CLI_FLAG"] == "setup" sputs "Registered commands for global:" global_commands.each do |command| iputs "- #{command.name}" end end final_guild_ids.each do |guild_id| commands = local_commands.select { |c| c.guild_ids.include?(guild_id) } @http.request( Route.new("/applications/#{app_info.id}/guilds/#{guild_id}/commands", "//applications/:application_id/guilds/:guild_id/commands", :put), commands.map(&:to_hash) ).wait sputs "Registered commands for #{guild_id}:" commands.each do |command| iputs "- #{command.name}" end 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.
40 41 42 43 44 45 |
# File 'lib/discorb/app_command.rb', line 40 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.
62 63 64 65 66 67 |
# File 'lib/discorb/app_command.rb', line 62 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.
99 100 101 102 103 |
# File 'lib/discorb/app_command.rb', line 99 def user_command(command_name, guild_ids: nil, &block) command = Discorb::ApplicationCommand::Command.new(command_name, guild_ids, block, 2) @commands << command command end |