| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- HELP_BLUE = "#4976ca"
- def command_list_embed(commands, restriction = nil)
- fields = []
- desc = "To learn more about any of the listed commands," +
- " use `pkmn-help [command]`"
- commands.each do |cmd|
- fields.push({name: "pkmn-#{cmd.name}", value: cmd.cmd.description})
- end
- case restriction
- when :pm
- title = "PM Commands"
- desc = "Can only be used in a PM with <@639191920786276378> \n" +
- "To learn more about any of the listed commands, use `pkmn-help [command]`"
- else
- end
- Embed.new(
- title: title || "Commands",
- description: desc,
- color: HELP_BLUE,
- fields: fields
- )
- end
- def command_help(command, event)
- embed = Embed.new(
- title: command.to_s.gsub('Command', ' Command'),
- description: command.cmd.description,
- color: HELP_BLUE,
- footer: { text: "For more help, ask a Guild Master!" }
- )
- # Apply options, if there are any
- fields = command_usage(command, event) unless command.cmd.options.empty?
- # If in the admin channel, show additional admin options
- fields = admin_options(command, fields) if event.channel.id == ENV['ADMIN_CH'].to_i
- # Apply fields and return
- embed.fields = fields
- embed
- end
- def command_usage(command, event)
- # save the options, to shorten the logic later
- opts = command.cmd.options
- example = command.example_command(event)
- fields = []
- # Add navigation information, if there is any
- fields.push({
- name: "Reaction Navigation",
- value: opts[:nav].map{ |k,v| "#{v[0]} - `#{k}` - #{v[1]}" }.join("\n")
- }) if opts[:nav]
- # Save the command with its options, and the option instructions
- structure = "```pkmn-#{command.name} #{opts[:usage].map{ |k,v| k }.join(' | ')}```"
- instructions = opts[:usage].map{ |k,v| "- `#{k}` -- #{v}" }.join("\n")
- # Add usage information
- fields.push({
- name: "Command Usage",
- value: "#{structure}\n#{instructions}"
- })
- # Add an example command
- fields.push({
- name: "Example",
- value: "```pkmn-#{command.name} #{example.join(' | ')}```"
- })
- end
- def admin_options(command, fields)
- # Find the admin options, and return if there are none
- r_opts = command.admin_opts
- return fields unless r_opts
- # Save the command with its options, and the option instructions
- structure = "```pkmn-#{command.name} #{r_opts[:usage].map{ |k,v| k }.join(' | ')}```"
- instructions = r_opts[:usage].map{ |k,v| "- `#{k}` -- #{v}" }.join("\n")
- # Add usage information
- fields.push({
- name: "Administrator Options",
- value: "#{structure}\n#{instructions}"
- })
- fields
- end
- def command_error(title, command, event=nil)
- embed = Embed.new(
- title: title,
- description: command.cmd.description,
- color: ERROR_RED,
- footer: { text: "For more help, ask a Guild Master!" }
- )
- # Apply options, if there are any
- fields = command_usage(command, event) unless command.cmd.options.empty?
- # If in the admin channel, show additional admin options
- fields = admin_options(command, fields) if event&.channel&.id == ENV['ADMIN_CH'].to_i
- # Apply fields and return
- embed.fields = fields
- embed
- end
|