| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- import discord
- from discord.ext import commands
- from discord.commands import Option
- from discord.commands import slash_command
- import configparser
- class fire(commands.Cog):
- def __init__(self, bot: discord.Bot):
- self.bot = bot
- #Command initialization
- @slash_command(name="fire", description= "Fire a department member from their position")
- async def fire(
- 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_role_id = config.get('Einweisung', 'department1_role_id')
- department1_role = ctx.guild.get_role(int(department1_role_id))
- 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_command_id = int(config.get('Role Management', 'department1_command'))
- department1_command_role = server.get_role(department1_command_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_role_id = config.get('Role Management', 'department2_role_id')
- #department2_role = ctx.guild.get_role(int(department2_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_command_id = int(config.get('Role Management', 'department2_command'))
- #department2_command_role = server.get_role(department2_command_id)
- #department2_supervisor_role_id = int(config.get('Einweisung', 'department2_supervisor_id'))
- #department2_supervisor_role = server.get_role(department2_supervisor_role_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_units_id]
- #Command implementation
- remove_access_role_on_fire = config.get('Role Management', 'remove_access_role_on_fire')
- remove_access_role_on_fire = str(remove_access_role_on_fire).lower()
- if remove_access_role_on_fire == "true":
- access_role_id = config.get('Einweisung', 'access_role_id')
- access_role = ctx.guild.get_role(int(access_role_id))
- if department1_command_role in ctx.author.roles:
- ranks = department1_ranks
- supervisor_role = department1_supervisor_role
- command_role = department1_command_role
- units = department1_units
- department = department1_role
- #elif department2_command_role in ctx.author.roles:
- #ranks = department2_ranks
- #supervisor_role = department2_supervisor_role
- #command_role = department2_command_role
- #units = department2_units
- #department = department2_role
- else:
- await ctx.respond("The User is not Part of your Department", ephemeral=True)
- return
-
- if command_role in ctx.author.roles:
- user_roles = user.roles
- if remove_access_role_on_fire == "true":
- await user.remove_roles(access_role)
- await user.remove_roles(department)
- for rank in ranks:
- if rank in user_roles:
- await user.remove_roles(rank)
- for unit in units:
- if unit in user_roles:
- await user.remove_roles(unit)
- if supervisor_role in user_roles:
- await user.remove_roles(supervisor_role)
- elif command_role in user_roles:
- await user.remove_roles(command_role)
- await ctx.respond(f"{user.mention} has been fired from their position and all department roles have been removed.", 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(fire(bot))
|