stats.rb 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. require './app/commands/base_command.rb'
  2. class StatsCommand < BaseCommand
  3. def self.opts
  4. {
  5. usage: {
  6. user: "Searches for a discord user (need to @ them)",
  7. all: "Used to specify you'd like to view all stats, instead of level" +
  8. " progress. If empty, will show level image"
  9. }
  10. }
  11. end
  12. def self.cmd
  13. desc = "Shows a user's stats, level, rank, and experience"
  14. @cmd ||= Command.new(:stats, desc, opts) do |event, name, all|
  15. if name.match(/ghosts?/i) && Util::Roles.admin?(event.author)
  16. return UserController.fetch_ghost_users(event)
  17. end
  18. # Find appropriate User and Server Member
  19. user = User.find(UID.match(name)[1])
  20. member = event.server.member(UID.match(name)[1])
  21. case all
  22. when /all/i
  23. # Display all User stats
  24. show_stats(user, member)
  25. when /reroll/i
  26. if Util::Roles.admin?(event.author)
  27. # Generate new stats
  28. user.make_stats
  29. user.reload
  30. # Display
  31. show_stats(user, member)
  32. else
  33. # Can only re-roll if admin
  34. error_embed("Not Authorized!")
  35. end
  36. else
  37. # Generate stats image, and reply
  38. output_file = UsersController.stat_image(user, member)
  39. BotResponse.new(destination: event.channel.id, file: output_file)
  40. end
  41. rescue ActiveRecord::RecordNotFound => e
  42. error_embed(e.message)
  43. rescue StandardError => e
  44. error_embed(e.message)
  45. end
  46. end
  47. def self.example_command(event)
  48. user_id = Character.where(active: 'Active').order('RANDOM()').first.user_id
  49. member = event&.server&.member(user_id)
  50. member_name = member&.nickname || member&.name || 'user_name'
  51. case ['', 'all'].sample
  52. when ''
  53. ["@#{member_name}"]
  54. when 'all'
  55. ["@#{member_name}", "all"]
  56. end
  57. end
  58. def self.admin_opts
  59. {
  60. usage: {
  61. user: "@user",
  62. reroll: "Reroll will reroll user's stats"
  63. }
  64. }
  65. end
  66. end