Browse Source

add emoji constants, complete app rejection process

Kylie Jo Swistak 6 năm trước cách đây
mục cha
commit
88eee72869
2 tập tin đã thay đổi với 109 bổ sung9 xóa
  1. 75 9
      bot.rb
  2. 34 0
      lib/emoji.rb

+ 75 - 9
bot.rb

@@ -8,6 +8,7 @@ BOT_ENV = ENV.fetch('BOT_ENV') { 'development' }
 Bundler.require(:default, BOT_ENV)
 
 require 'active_record'
+require_relative 'lib/emoji'
 
 # Constants: such as roles and channel ids
 
@@ -63,8 +64,8 @@ def check_user(event)
     characters = Character.where(user_id: user_id[1]).count
 
     if characters < allowed_characters && characters < 6
-      event.message.react("🇾")
-      event.message.react("🇳")
+      event.message.react(Emoji::Y)
+      event.message.react(Emoji::N)
     else
       event.server.member(user_id[1]).dm("You have too many characters!\nPlease deactivate and try again #{edit_url[1]}")
       event.message.delete
@@ -259,17 +260,18 @@ bot.message do |event|
   if event.author.id == APP_BOT
     check_user(event)
   end
+
 end
 
 # This will trigger on every reaction is added in discord
 bot.reaction_add do |event|
+  content = event.message.content
+
   if event.message.author.id == APP_BOT
-    yes = event.message.reacted_with("🇾").count
-    no = event.message.reacted_with("🇳").count
-    maj = event.server.roles.find{ |r| r.id == ADMINS }.members.count
-    maj = maj / 2
+    maj = event.server.roles.find{ |r| r.id == ADMINS }.members.count / 2
+    maj = 1
 
-    if yes > maj
+    if event.message.reacted_with(Emoji::Y).count > maj
       msg = event.message.content.split("\n")
       uid = /<@([0-9]+)>/.match(event.message.content)
       member = event.server.member(uid[1])
@@ -277,8 +279,7 @@ bot.reaction_add do |event|
       embed = edit_character(msg, member)
 
       if embed
-        # Bot doesn't have permission to delete messages :(
-        #event.message.delete
+        event.message.delete
 
         bot.send_message(
           CHAR_CHANNEL,
@@ -289,6 +290,71 @@ bot.reaction_add do |event|
       else
         event.respond("Something went wrong")
       end
+    elsif event.message.reacted_with(Emoji::N).count > maj
+      message = event.message.content
+      split_message = message.split("\n")
+
+      i = 0
+      split_message.each do |row|
+        if row.match(/\*\*/)
+          if row.match(/>>>/)
+            row.insert 5, "#{Emoji::ALL[i]} "
+            i += 1
+          else
+            row.insert 0, "#{Emoji::ALL[i]} "
+            i += 1
+          end
+        end
+      end
+
+      edited_message = split_message.join("\n")
+      new_message = "**_APPLICATION REJECTED!!_**\n--------------\n\n#{edited_message}\n\n\nPlease indicate what needs to be updated with the corresponding reactions!\nWhen you're done hit #{Emoji::CHECK}, or to dismiss hit #{Emoji::CROSS}"
+
+      event.message.delete
+      rejected = event.respond(new_message)
+
+      j = 0
+      i.times do
+        rejected.react(Emoji::ALL[j])
+        j += 1
+      end
+
+      rejected.react(Emoji::CHECK)
+      rejected.react(Emoji::CROSS)
+    end
+  end
+
+  if event.message.from_bot? && content.match(/\*\*\_APPLICATION\sREJECTED\!\!\_\*\*/)
+    if event.message.reacted_with(Emoji::CHECK).count > 1
+      reactions = event.message.reactions
+
+      edit_url = /Edit\sKey\s\(ignore\):\s([\s\S]*)/.match(content)
+      user_id = /<@([0-9]+)>/.match(content)
+      member = event.server.member(user_id[1])
+
+      message = "Your application has been rejected!\nPlease fix the following lines, and resubmit here:\n#{APP_FORM}#{edit_url[1]}"
+      rows = reactions.count - 2
+      i = 0
+
+      rows.times do
+        if reactions[Emoji::ALL[i]].count > 1
+          row = /#{Emoji::ALL[i]}\s(.*)/.match(content)
+          message += "\n> #{row[1]}"
+        end
+
+        i += 1
+      end
+
+      temp_message = "Your application has been rejected!\nPlease fix the following lines, and resubmit here:\n[users url goes here]"
+      message = "Your application has been rejected!\nPlease fix the following lines, and resubmit here:\n#{APP_FORM}#{edit_url[1]}"
+
+      event.message.delete
+      event.send_temporary_message(temp_message, 15)
+
+      member.dm(message)
+
+    elsif event.message.reacted_with(Emoji::CROSS).count > 1
+      event.message.delete
     end
   end
 end

+ 34 - 0
lib/emoji.rb

@@ -0,0 +1,34 @@
+# frozen_string_literal: true
+
+module Emoji
+  A = "🇦"
+  B = "🇧"
+  C = "🇨"
+  D = "🇩"
+  E = "🇪"
+  F = "🇫"
+  G = "🇬"
+  H = "🇭"
+  I = "🇮"
+  J = "🇯"
+  K = "🇰"
+  L = "🇱"
+  M = "🇲"
+  N = "🇳"
+  O = "🇴"
+  P = "🇵"
+  Q = "🇶"
+  R = "🇷"
+  S = "🇸"
+  T = "🇹"
+  U = "🇺"
+  V = "🇻"
+  W = "🇼"
+  X = "🇽"
+  Y = "🇾"
+  Z = "🇿"
+  CHECK = "✅"
+  CROSS = "❌"
+
+  ALL = [A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z]
+end