require './app/commands/base_command.rb' class InventoryCommand < BaseCommand def self.opts { usage: { item: 'Searches for an item by name', amount: 'Specifies the amount of the item to add or remove', character: 'Searches for your character by the specified name' } } end def self.cmd desc = "Add and remove items from characters' inventories" @cmd ||= Command.new(:inv, desc, opts) do |event, item, amount, name| # Find character and item character = Character.restricted_find(name, event.author, ['Archived']) item = Item.find_by!('name ilike ?', item) # Return if amount is not a number raise 'Invalid Amount!' if amount.to_i == 0 InventoryController.edit_inventory(item, amount.to_i, character, event) rescue ActiveRecord::RecordNotFound => e error_embed(e.message) rescue StandardError => e error_embed(e.message) end end def self.example_command(_event=nil) [ Item.order('RANDOM()').first.name, ["-#{rand(1..5)}", rand(1..5)].sample, Character.where.not(active: 'Deleted').order('RANDOM()').first.name ] end end