| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- import discord
- from discord.ext import commands
- from discord.commands import Option
- from discord.commands import slash_command
- import configparser
- class unit(commands.Cog):
- def __init__(self, bot: discord.Bot):
- self.bot = bot
- #Command initialization
- @slash_command(name="unit", description= "Add or remove a department member to/from a unit")
- async def unit(
- self,
- ctx,
- user: str = Option(discord.User, "Select User", required=True),
- unit: str = Option(str, "Select Unit", 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_role_id = config.get('Einweisung', 'department1_role_id')
- department1_role = ctx.guild.get_role(int(department1_role_id))
- #department2_role_id = config.get('Role Management', 'department2_role_id')
- #department2_role = ctx.guild.get_role(int(department2_role_id))
- department1_head_unit_id = int(config.get('Role Management', 'department1_head_unit'))
- department1_head_unit = server.get_role(department1_head_unit_id)
- department1_supervisor_role_id = int(config.get('Einweisung', 'department1_supervisor_id'))
- department1_supervisor_role = server.get_role(department1_supervisor_role_id)
- department1_units_id = config.get('Role Management', 'department1_units').split(', ')
- department1_units = [ctx.guild.get_role(int(role_id)) for role_id in department1_units_id]
- #department2_units_id = config.get('Role Management', 'department2_units').split(', ')
- #department2_units = [ctx.guild.get_role(int(role_id)) for role_id in
- #department2_head_unit_id = int(config.get('Role Management', 'department2_head_unit'))
- #department2_head_unit = server.get_role(department2_head_unit_id)
- #department2_supervisor_role_id = int(config.get('Einweisung', 'department2_supervisor_id'))
- #department2_supervisor_role = server.get_role(department2_supervisor_role_id)
- if department1_role in user.roles:
- units = department1_units
- supervisor_role = department1_supervisor_role
- head_unit_role = department1_head_unit
- #elif department2_role in user.roles:
- #units = "department2"
- #supervisor_role = department2_supervisor_role
- #head_unit_role = department2_head_unit
- else:
- await ctx.respond("The selected user is not a member of any department!", ephemeral=True)
- return
-
- #Command implementation
- if unit == "Detective":
- unit_role = units[0]
- elif unit == "SWAT":
- unit_role = units[1]
- elif unit == "Canine":
- unit_role = units[2]
- elif unit == "Air Support":
- unit_role = units[3]
- else:
- await ctx.respond("The selected unit does not exist!", ephemeral=True)
- return
- if supervisor_role in ctx.author.roles or head_unit_role in ctx.author.roles:
- if unit_role in user.roles:
- await user.remove_roles(unit_role)
- await ctx.respond(f"The user {user.mention} has been removed from the unit successfully!", ephemeral=True)
- else:
- await user.add_roles(unit_role)
- await ctx.respond(f"The user {user.mention} has been added to the unit successfully!", ephemeral=True)
- else:
- await ctx.respond("You do not have permission to use this command!", ephemeral=True)
- return
-
- def setup(bot: discord.Bot):
- bot.add_cog(unit(bot))
|