Kaynağa Gözat

fix bugs and add all NPC chars to db

Kylie Jo Swistak 6 yıl önce
ebeveyn
işleme
44b95c158f
5 değiştirilmiş dosya ile 269 ekleme ve 17 silme
  1. 4 3
      app/models/characters.rb
  2. 32 4
      app/responses/character.rb
  3. 1 1
      app/responses/reject.rb
  4. 6 6
      bot.rb
  5. 226 3
      db/schema.sql

+ 4 - 3
app/models/characters.rb

@@ -95,10 +95,9 @@ class Character < ActiveRecord::Base
     end
 
     user = User.find_by(id: user_id[1])
+    member = event.server.member(user_id[1]) if user
 
-    if user
-      member = event.server.member(user_id[1])
-
+    if member
       allowed_chars = (user.level / 10 + 1)
       allowed_chars += 1 if member.roles.map(&:name).include?("Nitro Booster")
       active_chars =
@@ -109,6 +108,8 @@ class Character < ActiveRecord::Base
         active == "Personal Character" && !active_chars.include?(edit_url)
 
       too_many = new_active ? active_chars.count >= allowed_chars : false
+    elsif user && !member
+      approval_react(event)
     end
 
     if user && member

+ 32 - 4
app/responses/character.rb

@@ -185,12 +185,15 @@ end
 def char_list_embed(chars, user = nil)
   fields = []
   active = []
+  inactive= []
   npcs = []
 
   chars.each do |char|
     case char.active
     when 'Active'
       active.push char.name
+    when 'Inactive'
+      inactive.push char.name
     when 'NPC'
       npcs.push char.name
     end
@@ -201,6 +204,11 @@ def char_list_embed(chars, user = nil)
     value: active.join(", ")
   })if active.length > 0
 
+  fields.push({
+    name: 'Inactive Characters',
+    value: inactive.join(", ")
+  })if inactive.length > 0
+
   fields.push({
     name: 'NPCs',
     value: npcs.join(", ")
@@ -224,6 +232,7 @@ end
 def user_char_embed(chars, user)
   fields = []
   active = []
+  inactive = []
   npcs = []
   user_name = user.nickname || user.name
 
@@ -231,6 +240,8 @@ def user_char_embed(chars, user)
     case char.active
     when 'Active'
       active.push char
+    when 'Inactive'
+      inactive.push char.name
     when 'NPC'
       npcs.push char.name
     end
@@ -243,6 +254,13 @@ def user_char_embed(chars, user)
     })
   end
 
+  unless inactive.empty?
+    fields.push({
+      name: "#{user_name}'s Inactive Characters",
+      value: inactive.join(", ")
+    })
+  end
+
   unless npcs.empty?
     fields.push({ name: "#{user_name}'s NPCs", value: npcs.join(", ") })
   end
@@ -275,13 +293,23 @@ def dup_char_embed(chars, name)
 end
 
 def char_image_embed(char, image, user, color)
-  footer = "#{user.name}##{user.tag} | #{char.active}" +
-    " | #{image.category}"
+  user_name = case user
+              when String
+                user.capitalize
+              when nil
+                'Unknown User'
+              else
+                "#{user.name}##{user.tag}"
+              end
+
+  footer_text = "#{user_name} | #{char.active}"
+  footer_text += " | #{char.rating}" if char.rating
+  footer_text += " | #{image.category}"
 
   Embed.new(
     footer: {
-      icon_url: user.avatar_url,
-      text: footer
+      icon_url: user&.avatar_url,
+      text: footer_text
     },
     title: "#{char.name} | #{image.keyword}",
     color: color,

+ 1 - 1
app/responses/reject.rb

@@ -130,7 +130,7 @@ def user_img_app(event)
     ]
   )
 
-  embed.thumbnail.url = app.thumbnail.url if app.thumbnail
+  embed.thumbnail = { url: app.thumbnail.url } if app.thumbnail
   embed
 end
 

+ 6 - 6
bot.rb

@@ -233,14 +233,12 @@ opts = {
   "name" => "list all images"
 }
 desc = "View, add and edit your characters' images"
-image = Command.new(:image, desc, opts) do |event, name, keyword, tag, url|
+image = Command.new(:image, desc, opts) do |event, name, keyword, tag, url, id|
   user = event.author
-  chars = []
 
   char =
-    if user.roles.map(&:name).include?('Guild Masters')
-      chars = Character.where(name: name)
-      chars.first if chars.length == 1
+    if id
+      Character.where(user_id: id).find_by!(name: name) if name
     else
       Character.where(user_id: user.id).find_by!(name: name) if name
     end
@@ -795,6 +793,8 @@ bot.reaction_add do |event|
     reject.react(Emoji::CROSS)
     reject.react(Emoji::CRAYON)
 
+  when [:character_application, :cross]
+    event.message.delete
   when [:character_rejection, :check]
     user = event.server.member(UID.match(app.description)[1])
     embed = user_char_app(event)
@@ -812,7 +812,7 @@ bot.reaction_add do |event|
       "",
       35,
       false,
-      self_edit_embed(app, URL::CHARACTER)
+      self_edit_embed(app, Url::CHARACTER)
     )
 
   when [:new_app, :phone]

Dosya farkı çok büyük olduğundan ihmal edildi
+ 226 - 3
db/schema.sql


Bu fark içinde çok fazla dosya değişikliği olduğu için bazı dosyalar gösterilmiyor