Explorar el Código

fixing not working function

BaumSplitter41 hace 1 semana
padre
commit
93ba1b8740
Se han modificado 1 ficheros con 29 adiciones y 23 borrados
  1. 29 23
      VPD_BOT/cogs/reaction_roles.py

+ 29 - 23
VPD_BOT/cogs/reaction_roles.py

@@ -7,7 +7,7 @@ import time
 import json
 from pathlib import Path
 
-class reactionroles(commands.Cog):
+class Reactionroles(commands.Cog):
     def __init__(self, bot: discord.Bot):
         self.bot = bot
     
@@ -52,9 +52,6 @@ class reactionroles(commands.Cog):
         if not entries or not isinstance(entries[0], dict):
             print("The .json file has an unexpected structure.")
             return
-        if not entries:
-            print("The .json file is empty.")
-            return
 
         entry = entries[0]
         jstitle = entry.get("title", "Reaction Roles")
@@ -113,9 +110,7 @@ class reactionroles(commands.Cog):
         if member is None or member.bot:
             return
         message_id = self._get_message_id()
-        if message_id is None:
-            print("Message ID is not set in config.")
-            return
+
         emojis = self._get_emojis()
         if emojis is None:
             print("Emojis are not set in config.")
@@ -135,18 +130,8 @@ class reactionroles(commands.Cog):
         roles = [guild.get_role(role_id) for role_id in role_ids]
         
 
-        #Add the role to the user
-        """for emoji, role in zip(emojis, roles):
-            if payload.emoji.id == emoji:
-                try:
-                    await member.add_roles(role)
-                    remove_reaction = discord.utils.get(guild.emojis, id=emoji)
-                    await payload.member.remove_reaction(remove_reaction, message_id)
-                    break
-                except Exception as e:
-                    print(f"Failed to add role {role.name} to user {member.name}: {e}")
-                    break"""
-        for i in range(len(emojis)):
+        #Add role function        
+        """for i in range(len(emojis)):
             if payload.emoji.name == emojis[i]:
                 print(f"Adding role {roles[i].name} to user {member.name} for emoji {emojis[i]}.")
                 try:
@@ -160,12 +145,33 @@ class reactionroles(commands.Cog):
                     if channel is not None:
                         message = await channel.fetch_message(message_id)
                         await message.remove_reaction(payload.emoji, member)
+                except Exception as e:
+                    print(f"Failed to remove reaction {payload.emoji} from user {member.name}: {e}")
                     break
+            else:
+                print(f"Emoji {payload.emoji} does not match {emojis[i]} for role {roles[i].name}.")"""
+
+
+        for emoji, role in zip(emojis, roles):
+            if payload.emoji.name == emoji:
+                print(f"Adding role {role.name} to user {member.name} for emoji {emoji}.")
+                try:
+                    await member.add_roles(role)
+                    print(f"Added role {role.name} to user {member.name}.")
+                except Exception as e:
+                    print(f"Failed to add role {role.name} to user {member.name}: {e}")
+                    break
+                try:
+                    channel = self.bot.get_channel(payload.channel_id)
+                    if channel is not None:
+                        message = await channel.fetch_message(message_id)
+                        await message.remove_reaction(payload.emoji, member)
+                        break
                 except Exception as e:
                     print(f"Failed to remove reaction {payload.emoji} from user {member.name}: {e}")
                     break
             else:
-                print(f"Emoji {payload.emoji} does not match {emojis[i]} for role {roles[i].name}.")
+                print(f"Emoji {payload.emoji} does not match {emoji} for role {role.name}.")
 
 
 
@@ -202,7 +208,7 @@ class reactionroles(commands.Cog):
         roles = [guild.get_role(role_id) for role_id in role_ids]
         
 
-        #Add the role to the user
+        #Role remove function
         for emoji, role in zip(emojis, roles):
             if payload.emoji.name == emoji:
                 print(f"Removing role {role.name} from user {member.name} for emoji {emoji}.")
@@ -217,7 +223,7 @@ class reactionroles(commands.Cog):
                     if channel is not None:
                         message = await channel.fetch_message(message_id)
                         await message.remove_reaction(payload.emoji, member)
-                    break
+                        break
                 except Exception as e:
                     print(f"Failed to remove reaction {payload.emoji} from user {member.name}: {e}")
                     break
@@ -226,4 +232,4 @@ class reactionroles(commands.Cog):
         
         
 def setup(bot: discord.Bot):
-    bot.add_cog(reactionroles(bot))
+    bot.add_cog(Reactionroles(bot))