character_app.rb 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. require './app/app_forms/app_form.rb'
  2. class CharacterApplication < ApplicationForm
  3. def self.process
  4. @process ||= Application.new('Character Application') do |event|
  5. # Calculate majority, and check votes
  6. maj = majority(event)
  7. check_votes(event, maj)
  8. rescue StandardError => e
  9. error_embed(e.message)
  10. end
  11. end
  12. def self.approve(event)
  13. # Save the application, and member if they exist
  14. app = event.message.embeds.first
  15. user_id = app.description.match(UID)
  16. member = event.server.member(user_id[1])
  17. # Save character and default image
  18. character = CharacterController.edit_character(app)
  19. ImageController.default_image(app.image&.url, character.id, character.rating)
  20. # Determine appropriate channel
  21. channel = case character.rating
  22. when /sfw/i then ENV['CHAR_CH']
  23. when /nsfw/i then ENV['CHAR_NSFW_CH']
  24. when /hidden/i then member.dm
  25. end
  26. # Create reply
  27. reply = BotResponse.new(
  28. destination: channel,
  29. text: "Good News, <@#{character.user_id}>! Your character was approved!",
  30. embed: character_embed(character: character, event: event)
  31. )
  32. # Delete app from approval channel, and reply
  33. event.message.delete
  34. reply
  35. end
  36. def self.deny(event)
  37. # Create App Rejection
  38. reply = BotResponse.new(
  39. embed: reject_app(event.message.embeds.first, :character),
  40. reactions: CharApp::REJECT_MESSAGES.map{ |k,v| k }.push(Emoji::CHECK)
  41. )
  42. # Delete app, and reply
  43. event.message.delete
  44. reply
  45. end
  46. def self.edit(event)
  47. # Save the application
  48. app = event.message.embeds.first
  49. # Create link embed
  50. reply = BotResponse.new(
  51. destination: event.channel.id,
  52. embed: self_edit_embed(app.footer.text, Url::CHARACTER),
  53. timer: 35
  54. )
  55. # Delete app and reply
  56. event.message.delete
  57. reply
  58. end
  59. end