fire.py 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  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 fire(commands.Cog):
  7. def __init__(self, bot: discord.Bot):
  8. self.bot = bot
  9. #Command initialization
  10. @slash_command(name="fire", description= "Fire a department member from their position")
  11. async def fire(
  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_role_id = config.get('Einweisung', 'department1_role_id')
  31. department1_role = server.get_role(int(department1_role_id))
  32. department1_ranks_ids = config.get('Role Management', 'department1_ranks').split(', ')
  33. department1_ranks = [ctx.guild.get_role(int(role_id)) for role_id in department1_ranks_ids]
  34. department1_command_id = int(config.get('Role Management', 'department1_command'))
  35. department1_command_role = server.get_role(department1_command_id)
  36. department1_supervisor_role_id = int(config.get('Einweisung', 'department1_supervisor_id'))
  37. department1_supervisor_role = server.get_role(department1_supervisor_role_id)
  38. department1_units_id = config.get('Role Management', 'department1_units').split(', ')
  39. department1_units = [ctx.guild.get_role(int(role_id)) for role_id in department1_units_id]
  40. department1_unit_label_id = int(config.get('Einweisung', 'department1_unit_role_id'))
  41. department1_unit_label = server.get_role(department1_unit_label_id)
  42. #department2_role_id = config.get('Role Management', 'department2_role_id')
  43. #department2_role = server.get_role(int(department2_role_id))
  44. #department2_ranks_ids = config.get('Role Management', 'department2_ranks').split(', ')
  45. #department2_ranks = [ctx.guild.get_role(int(role_id)) for role_id in department2_ranks_ids]
  46. #department2_command_id = int(config.get('Role Management', 'department2_command'))
  47. #department2_command_role = server.get_role(department2_command_id)
  48. #department2_supervisor_role_id = int(config.get('Einweisung', 'department2_supervisor_id'))
  49. #department2_supervisor_role = server.get_role(department2_supervisor_role_id)
  50. #department2_units_id = config.get('Role Management', 'department2_units').split(', ')
  51. #department2_units = [ctx.guild.get_role(int(role_id)) for role_id in department2_units_id]
  52. #Command implementation
  53. remove_access_role_on_fire = config.get('Role Management', 'remove_access_role_on_fire')
  54. remove_access_role_on_fire = str(remove_access_role_on_fire).lower()
  55. if department1_command_role in ctx.author.roles:
  56. ranks = department1_ranks
  57. supervisor_role = department1_supervisor_role
  58. command_role = department1_command_role
  59. units = department1_units
  60. department = department1_role
  61. #elif department2_command_role in ctx.author.roles:
  62. #ranks = department2_ranks
  63. #supervisor_role = department2_supervisor_role
  64. #command_role = department2_command_role
  65. #units = department2_units
  66. #department = department2_role
  67. else:
  68. await ctx.respond("The User is not Part of your Department", ephemeral=True)
  69. return
  70. if command_role in ctx.author.roles:
  71. user_roles = user.roles
  72. if remove_access_role_on_fire == "true":
  73. access_role_id = config.get('Einweisung', 'acces_role_id')
  74. access_role = server.get_role(int(access_role_id))
  75. await user.remove_roles(access_role)
  76. if department in user_roles:
  77. await user.remove_roles(department)
  78. if department1_unit_label in user_roles:
  79. await user.remove_roles(department1_unit_label)
  80. for rank in ranks:
  81. if rank in user_roles:
  82. await user.remove_roles(rank)
  83. for unit in units:
  84. if unit in user_roles:
  85. await user.remove_roles(unit)
  86. if supervisor_role in user_roles:
  87. await user.remove_roles(supervisor_role)
  88. elif command_role in user_roles:
  89. await user.remove_roles(command_role)
  90. await ctx.respond(f"{user.mention} has been fired from their position and all department roles have been removed.", ephemeral=True)
  91. else:
  92. await ctx.respond("You do not have permission to use this command!", ephemeral=True)
  93. return
  94. def setup(bot: discord.Bot):
  95. bot.add_cog(fire(bot))