require './app/commands/base_command.rb' class HelpCommand < BaseCommand def self.opts { usage: { command: 'Searches for a command based on its name, the part that ' + 'comes after `pkmn-`. If no command is given, R0ry will list available commands' } } end def self.cmd desc = "Displays helpful information for R0ry's commands" @cmd ||= Command.new(:help, desc, opts) do |event, command| # Short name for the command requested, if exists cmd_name = command.match(/(pkmn-)?(\w+)/)[2] if command all_cmds = BaseCommand.descendants # --Execution-- # When a command is specified case command when /admin/i && event.channel.id == ENV['ADMIN_CH'] when nil # List of commands, by restrictions: server, and pm server_commands = all_cmds.filter { |bc| bc.restricted_to.nil? } pm_commands = all_cmds.filter { |bc| bc.restricted_to == :pm } reply = [] reply.push(BotResponse.new(embed: command_list_embed(pm_commands, :pm))) reply.push(BotResponse.new(embed: command_list_embed(server_commands))) reply else # Find the command, and display cmd = all_cmds.find { |bc| bc.name == cmd_name.to_sym } command_help(cmd, event) end rescue StandardError command_error('Command not found!', HelpCommand) end end def self.example_command(_event=nil) case ['', 'command'].sample when '' [] when 'command' [BaseCommand.descendants.sample.name] end end end