Bladeren bron

Added a promotion cog to manage user promotions and updated the config file to include role management settings.

BaumSplitter41 4 maanden geleden
bovenliggende
commit
9f364f2fbf
2 gewijzigde bestanden met toevoegingen van 82 en 2 verwijderingen
  1. 70 0
      VPD_BOT/cogs/promotion.py
  2. 12 2
      VPD_BOT/config.cfg

+ 70 - 0
VPD_BOT/cogs/promotion.py

@@ -0,0 +1,70 @@
+import discord
+from discord.ext import commands
+from discord.commands import Option
+from discord.commands import slash_command
+import configparser
+
+
+class helpcache(commands.Cog):
+    def __init__(self, bot: discord.Bot):
+        self.bot = bot
+
+
+#Command initialization
+    @slash_command(name="promotion", description= "Promote a department member   to the next rank")
+    async def promotion(
+        self,
+        ctx,
+        user: str = Option(discord.User, "Select User", required=True),
+    ):
+    if user not in ctx.guild.members:
+        await ctx.respond("The selected user is not a member on this Server!", ephemeral=True)
+        return
+    elif user == self.bot.user:
+        await ctx.respond(f"This is me - the {self.bot.user}", ephemeral=True)
+        return
+    elif user == ctx.author:
+        await ctx.respond("You cannot promote yourself!", ephemeral=True)
+        return
+    server = ctx.guild
+    config = configparser.RawConfigParser()
+    configFilePath = r'config.cfg'
+    config.read_file(open(configFilePath))
+    
+    #Role Configuration
+    department1_ranks_ids = config.get('Role Management', 'department1_ranks').split(', ')
+    department1_ranks = [ctx.guild.get_role(int(role_id)) for role_id in department1_ranks_ids]
+    department1_supervisor_role_id = int(config.get('Einweisung', 'department1_supervisor_id'))
+    department1_supervisor_role = server.get_role(department1_supervisor_role_id)
+
+    #department2_ranks_ids = config.get('Role Management', 'department2_ranks').split(', ')
+    #department2_ranks = [ctx.guild.get_role(int(role_id)) for role_id in department2_ranks_ids]
+    #department2_supervisor_role_id = int(config.get('Einweisung', 'department2_supervisor_id'))
+    #department2_supervisor_role = server.get_role(department2_supervisor_role_id)
+
+    #Command implementation
+    if ctx.author.roles.contains(department1_supervisor_role):
+        ranks = department1_ranks
+    #elif ctx.author.roles.contains(department2_supervisor_role):
+        #ranks = department2_ranks
+    else:
+        await ctx.respond("You do not have permission to use this command!", ephemeral=True)
+        return
+    
+    user_roles = user.roles
+    user_rank = None
+    for rank in ranks:
+        if rank in user_roles:
+            user_rank = rank
+            break
+    if user_rank is None:
+        await ctx.respond("The selected user does not have a rank that can be promoted!", ephemeral=True)
+        return
+    current_rank_index = ranks.index(user_rank)
+    if current_rank_index == len(ranks) - 1:
+        await ctx.respond("The selected user is already at the highest rank!", ephemeral=True)
+        return
+    new_rank = ranks[current_rank_index + 1]
+    await user.remove_roles(user_rank)
+    await user.add_roles(new_rank)
+    await ctx.respond(f"{user.mention} has been promoted to {new_rank.name}!", ephemeral=True)

+ 12 - 2
VPD_BOT/config.cfg

@@ -1,15 +1,18 @@
-#Reactionroles Rules
+#Reactionroles Rules (/verify)
 [Reactionroles Rules]
 label_rules = Verifizieren
 rules_role = 1442528544394575892
 
+# Channel IDs for the logs
 [Logs]
 channel_log = 1448305623287464050
 ban_log = 1447580463668400305
 
+#Role IDs for the Teamroles
 [Team Roles]
 team_role_id = 1447295632774660158
 
+# Role IDs for the Departments (/einweisung)
 [Einweisung]
 acces_role_id = 1449145241813647380
 
@@ -19,4 +22,11 @@ department1_deputy_id = 1459935618371948743
 
 department2_supervisor_id = 
 department2_role_id = 
-department2_deputy_id =
+department2_deputy_id =
+
+[Role Management]
+department1_ranks = 1459935618371948743, 1459935662102020279, 1459935773108338921, 1459935923608223766, 1459945390571782245, 1459945659548565634, 1459936064612466861, 1459936186922700912, 1459936215766667448, 1459936269168541736, 1459936307974373427 
+department1_units = 1451668309648084992, 1450499642637811764, 1448793349627838556, 1450499400488058930
+
+department2_ranks =
+department2_units =