promotion.py 3.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. import discord
  2. from discord.ext import commands
  3. from discord.commands import Option
  4. from discord.commands import slash_command
  5. import configparser
  6. class promotion(commands.Cog):
  7. def __init__(self, bot: discord.Bot):
  8. self.bot = bot
  9. #Command initialization
  10. @slash_command(name="promotion", description= "Promote a department member to the next rank")
  11. async def promotion(
  12. self,
  13. ctx,
  14. user: str = Option(discord.User, "Select User", required=True),
  15. ):
  16. if user not in ctx.guild.members:
  17. await ctx.respond("The selected user is not a member on this Server!", ephemeral=True)
  18. return
  19. elif user == self.bot.user:
  20. await ctx.respond(f"This is me - the {self.bot.user}", ephemeral=True)
  21. return
  22. elif user == ctx.author:
  23. await ctx.respond("You cannot promote yourself!", ephemeral=True)
  24. return
  25. server = ctx.guild
  26. config = configparser.RawConfigParser()
  27. configFilePath = r'config.cfg'
  28. config.read_file(open(configFilePath))
  29. #Role Configuration
  30. department1_ranks_ids = config.get('Role Management', 'department1_ranks').split(', ')
  31. department1_ranks = [ctx.guild.get_role(int(role_id)) for role_id in department1_ranks_ids]
  32. department1_command_id = int(config.get('Role Management', 'department1_command'))
  33. department1_command_role = server.get_role(department1_command_id)
  34. department1_supervisor_role_id = int(config.get('Einweisung', 'department1_supervisor_id'))
  35. department1_supervisor_role = server.get_role(department1_supervisor_role_id)
  36. #department2_ranks_ids = config.get('Role Management', 'department2_ranks').split(', ')
  37. #department2_ranks = [ctx.guild.get_role(int(role_id)) for role_id in department2_ranks_ids]
  38. #department2_command_id = int(config.get('Role Management', 'department2_command'))
  39. #department2_command_role = server.get_role(department2_command_id)
  40. #department2_supervisor_role_id = int(config.get('Einweisung', 'department2_supervisor_id'))
  41. #department2_supervisor_role = server.get_role(department2_supervisor_role_id)
  42. #Command implementation
  43. if department1_command_role in ctx.author.roles:
  44. ranks = department1_ranks
  45. supervisor_role = department1_supervisor_role
  46. command_role = department1_command_role
  47. #elif department2_command_role in ctx.author.roles:
  48. #ranks = department2_ranks
  49. #supervisor_role = department2_supervisor_role
  50. #command_role = department2_command_role
  51. else:
  52. await ctx.respond("You do not have permission to use this command!", ephemeral=True)
  53. return
  54. user_roles = user.roles
  55. user_rank = None
  56. for rank in ranks:
  57. if rank in user_roles:
  58. user_rank = rank
  59. break
  60. if user_rank is None:
  61. await ctx.respond("The selected user does not have a rank that can be promoted!", ephemeral=True)
  62. return
  63. current_rank_index = ranks.index(user_rank)
  64. if current_rank_index == len(ranks) - 1:
  65. await ctx.respond("The selected user is already at the highest rank!", ephemeral=True)
  66. return
  67. new_rank = ranks[current_rank_index + 1]
  68. if new_rank == ranks[6]:
  69. await user.add_roles(command_role)
  70. elif new_rank == ranks[4]:
  71. await user.add_roles(supervisor_role)
  72. await user.remove_roles(user_rank)
  73. await user.add_roles(new_rank)
  74. await ctx.respond(f"{user.mention} has been promoted to {new_rank.name}!", ephemeral=True)
  75. def setup(bot: discord.Bot):
  76. bot.add_cog(promotion(bot))