unit.py 4.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  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 unit(commands.Cog):
  7. def __init__(self, bot: discord.Bot):
  8. self.bot = bot
  9. #Command initialization
  10. @slash_command(name="unit", description= "Add or remove a department member to/from a unit")
  11. async def unit(
  12. self,
  13. ctx,
  14. user: str = Option(discord.User, "Select User", required=True),
  15. unit: str = Option(str, "Select Unit", required=True)
  16. ):
  17. if user not in ctx.guild.members:
  18. await ctx.respond("The selected user is not a member on this Server!", ephemeral=True)
  19. return
  20. elif user == self.bot.user:
  21. await ctx.respond(f"This is me - the {self.bot.user}", ephemeral=True)
  22. return
  23. elif user == ctx.author:
  24. await ctx.respond("You cannot promote yourself!", ephemeral=True)
  25. return
  26. server = ctx.guild
  27. config = configparser.RawConfigParser()
  28. configFilePath = r'config.cfg'
  29. config.read_file(open(configFilePath))
  30. #Role configuration
  31. department1_role_id = config.get('Einweisung', 'department1_role_id')
  32. department1_role = ctx.guild.get_role(int(department1_role_id))
  33. #department2_role_id = config.get('Role Management', 'department2_role_id')
  34. #department2_role = ctx.guild.get_role(int(department2_role_id))
  35. department1_head_unit_id = int(config.get('Role Management', 'department1_head_unit'))
  36. department1_head_unit = server.get_role(department1_head_unit_id)
  37. department1_supervisor_role_id = int(config.get('Einweisung', 'department1_supervisor_id'))
  38. department1_supervisor_role = server.get_role(department1_supervisor_role_id)
  39. department1_units_id = config.get('Role Management', 'department1_units').split(', ')
  40. department1_units = [ctx.guild.get_role(int(role_id)) for role_id in department1_units_id]
  41. #department2_units_id = config.get('Role Management', 'department2_units').split(', ')
  42. #department2_units = [ctx.guild.get_role(int(role_id)) for role_id in
  43. #department2_head_unit_id = int(config.get('Role Management', 'department2_head_unit'))
  44. #department2_head_unit = server.get_role(department2_head_unit_id)
  45. #department2_supervisor_role_id = int(config.get('Einweisung', 'department2_supervisor_id'))
  46. #department2_supervisor_role = server.get_role(department2_supervisor_role_id)
  47. if department1_role in user.roles:
  48. units = department1_units
  49. supervisor_role = department1_supervisor_role
  50. head_unit_role = department1_head_unit
  51. #elif department2_role in user.roles:
  52. #units = "department2"
  53. #supervisor_role = department2_supervisor_role
  54. #head_unit_role = department2_head_unit
  55. else:
  56. await ctx.respond("The selected user is not a member of any department!", ephemeral=True)
  57. return
  58. #Command implementation
  59. if unit == "Detective":
  60. unit_role = units[0]
  61. elif unit == "SWAT":
  62. unit_role = units[1]
  63. elif unit == "Canine":
  64. unit_role = units[2]
  65. elif unit == "Air Support":
  66. unit_role = units[3]
  67. else:
  68. await ctx.respond("The selected unit does not exist!", ephemeral=True)
  69. return
  70. if ctx.author == supervisor_role or ctx.author == head_unit_role:
  71. if unit_role in user.roles:
  72. await user.remove_roles(unit_role)
  73. await ctx.respond(f"The user {user.mention} has been removed from the unit successfully!", ephemeral=True)
  74. else:
  75. await user.add_roles(unit_role)
  76. await ctx.respond(f"The user {user.mention} has been added to the unit successfully!", ephemeral=True)
  77. else:
  78. await ctx.respond("You do not have permission to use this command!", ephemeral=True)
  79. return
  80. def setup(bot: discord.Bot):
  81. bot.add_cog(unit(bot))