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

Fixing ids, letting message id write in the config file and reade it from there.

BaumSplitter41 1 hete
szülő
commit
3c4840727e
2 módosított fájl, 28 hozzáadás és 15 törlés
  1. 27 15
      VPD_BOT/cogs/reaction_roles.py
  2. 1 0
      VPD_BOT/config.cfg

+ 27 - 15
VPD_BOT/cogs/reaction_roles.py

@@ -19,16 +19,25 @@ class reactionroles(commands.Cog):
     
     def _get_roles(self):
         config = self._load_config()
-        role_ids = [int(role_ids.strip()) for role_id in config["Reactionroles"]["reactionroles_role_ids"].split(",")]
-        roles = [self.bot.get_roles(role_ids) for role_id in role_ids]
+        role_ids = [int(role_id.strip()) for role_id in config["Reactionroles"]["reactionroles_role_ids"].split(",")]
+        roles = [self.bot.get_role(role_id) for role_id in role_ids]
         if any(role is None for role in roles):
             print(f"One or more roles with IDs {role_ids} not found.")
             return
         return roles
     def _get_emojis(self):
         config = self._load_config()
-        emojis = [int(emojis.strip()) for emoji in config["Reactionroles"]["reactionroles_emojis"].split(",")]
+        emojis = [int(emoji.strip()) for emoji in config["Reactionroles"]["reactionroles_emojis"].split(",")]
         return emojis
+    def _get_message_id(self):
+        config = self._load_config()
+        message_id = int(config["Reactionroles"]["reactionroles_message_id"].strip())
+        return message_id
+    def _write_message_id(self, message_id):
+        config = self._load_config()
+        config["Reactionroles"]["reactionroles_message_id"] = str(message_id)
+        with open('config.cfg', 'w') as configfile:
+            config.write(configfile)
     
     #Get the reaction role embed text from the .json file
     def _reaction_role_embed(self):
@@ -88,7 +97,7 @@ class reactionroles(commands.Cog):
         message = await channel.send(embed=embed)
         await ctx.respond(f"Reaction role message has been set up in {channel.mention}.", ephemeral=True)
         # Add reactions to the message
-        emojis = self._reaction_role_embed()
+        emojis = self._get_emojis()
         if emojis is None:
             await ctx.respond("Failed to load emojis from config.", ephemeral=True)
             return
@@ -98,7 +107,8 @@ class reactionroles(commands.Cog):
             except Exception as e:
                 await ctx.respond(f"Failed to add reaction {emoji}: {e}", ephemeral=True)
         message_id = message.id
-        return message_id
+        self._write_message_id(self, message_id)
+        
         
 #-----------------------------------------------#
 
@@ -106,13 +116,14 @@ class reactionroles(commands.Cog):
     @commands.Cog.listener()
     async def on_raw_reaction_add(self, payload):
         #Get variables
-        user = self.bot.get_user(payload.user_id)
-        guild = self.bot.get_guild(payload.guild_id)
+        user = self.bot._get_user(payload.user_id)
+        guild = self.bot._get_guild(payload.guild_id)
         if user.bot:
             return
-        message_id = self.reactionmsg(ctx=None) 
-        if payload.message_id != message_id:
+        message_id = self._get_message_id()
+        if message_id is None:
             return
+        message = await guild.fetch_message(message_id)
         emojis = self._get_emojis()
         if emojis is None:
             return
@@ -127,7 +138,7 @@ class reactionroles(commands.Cog):
             if payload.emoji.id == emoji:
                 await user.add_roles(role)
                 remove_reaction = discord.utils.get(guild.emojis, id=emoji)
-                await payload.member.remove_reaction(remove_reaction, payload.message_id)
+                await payload.member.remove_reaction(remove_reaction, message)
                 break
 
 
@@ -135,13 +146,14 @@ class reactionroles(commands.Cog):
     @commands.Cog.listener()
     async def on_raw_reaction_remove(self, payload):
         #Get variables
-        user = self.bot.get_user(payload.user_id)
-        guild = self.bot.get_guild(payload.guild_id)
+        user = self.bot._get_user(payload.user_id)
+        guild = self.bot._get_guild(payload.guild_id)
         if user.bot:
             return
-        message_id = self.reactionmsg(ctx=None) 
-        if payload.message_id != message_id:
+        message_id = self._get_message_id()
+        if message_id is None:
             return
+        message = await guild.fetch_message(message_id)
         emojis = self._get_emojis()
         if emojis is None:
             return
@@ -156,7 +168,7 @@ class reactionroles(commands.Cog):
             if payload.emoji.id == emoji:
                 await user.remove_roles(role)
                 remove_reaction = discord.utils.get(guild.emojis, id=emoji)
-                await payload.member.remove_reaction(remove_reaction, payload.message_id)
+                await payload.member.remove_reaction(remove_reaction, message)
                 break
         
         

+ 1 - 0
VPD_BOT/config.cfg

@@ -5,6 +5,7 @@ rules_roles = 1442528544394575892, 1482816135190679613
 
 reactionroles_role_ids = 1498348240460845186, 1498348429590397018, 1498348683631263914, 1498348483864821791
 reactionroles_emojis = 🔔, 🛠, 🎉, 🎮
+reactionroles_message_id = 
 
 
 # Channel IDs for the logs