Forráskód Böngészése

Fixed the duplicate problem

BaumSplitter41 1 hónapja
szülő
commit
ffc49de010
1 módosított fájl, 19 hozzáadás és 23 törlés
  1. 19 23
      VPD_BOT/cogs/change_name_badge.py

+ 19 - 23
VPD_BOT/cogs/change_name_badge.py

@@ -112,35 +112,34 @@ class changedcname(commands.Cog):
                     users.append(user)
                     break
         
-
-        # check on duplicates
+        #check on duplicates
+        valid_users_map = {}
+        blacklisted_ids = set()
+        ignored_duplicates = []
         unique_users = []
         unique_badgenr = []
         unique_charinfo = []
-        seen_user_ids = []  # To track seen user IDs
-        ignored_duplicates = []  # To track and ignore duplicate users
 
         for user, badge, cinfo in zip(users, badgenr, charinfo):
             if user is None:
                 continue 
-            user_id = user.id
-
-            if user_id in seen_user_ids:
-                #print(f"Duplicate user found: {user.name} (ID: {user.id})")
-                ignored_duplicates.append(user.id)
-                ignored_duplicates.append(badge)
-                ignored_duplicates.append(cinfo)
-                #remove the duplicate user
-                if user in unique_users:
-                    unique_badgenr.remove(badge)
-                    unique_users.remove(user)
-                    unique_charinfo.remove(cinfo)
+            
+            #delete users if they are duplicated
+            if user_id in blacklisted_ids:
+                ignored_duplicates.append((user, badge, cinfo))
                 continue
+            elif user_id in valid_users_map:
+                first_entry = valid_users_map.pop(user_id)
+                ignored_duplicates.append(first_entry)
+                ignored_duplicates.append((user, badge, cinfo))
+                blacklisted_ids.add(user_id)
             else:
-                seen_user_ids.append(user_id)
-                unique_users.append(user)
-                unique_badgenr.append(badge)
-                unique_charinfo.append(cinfo)
+                valid_users_map[user_id] = (user, badge, cinfo)
+
+        for user, badge, cinfo in valid_users_map.values():
+            unique_users.append(user)
+            unique_badgenr.append(badge)
+            unique_charinfo.append(cinfo)
 
         users = unique_users
         badgenr = unique_badgenr
@@ -168,12 +167,9 @@ class changedcname(commands.Cog):
             except Exception as e:
                 #print(f"Failed to change nickname for {user.name}: {e}")
                 continue
-
       
         cursor.close()
         conn.close()
 
-
-
 def setup(bot: discord.Bot):
     bot.add_cog(changedcname(bot))