diff options
| author | 2019-02-16 14:41:49 +0000 | |
|---|---|---|
| committer | 2019-02-16 14:41:49 +0000 | |
| commit | 8190279b2bee9eca1d07915215c7d85d655460b4 (patch) | |
| tree | d9ffbaadd3ff915d3b1c5b3539ae760d2f1d63f8 | |
| parent | Merge pull request #301 from Refisio/rules_command (diff) | |
Add team creator command, createteam
| -rw-r--r-- | bot/cogs/jams.py | 72 | 
1 files changed, 72 insertions, 0 deletions
| diff --git a/bot/cogs/jams.py b/bot/cogs/jams.py new file mode 100644 index 000000000..c664d759a --- /dev/null +++ b/bot/cogs/jams.py @@ -0,0 +1,72 @@ +import logging + +from discord import PermissionOverwrite, Member, utils +from discord.ext import commands + +from bot.decorators import with_role +from bot.constants import Roles + +log = logging.getLogger(__name__) + +class CodeJams: +    """ +    A cog for managing the code-jam related parts of our server +    """ + +    def __init__(self, bot: commands.Bot): +        self.bot = bot + +    @commands.command() +    @with_role(Roles.admin) +    async def createteam( +        self, ctx: commands.Context, +        team_name: str, members: commands.Greedy[Member] +    ): +        code_jam_category = utils.get(ctx.guild.categories, name="Code Jam") + +        if code_jam_category is None: +            log.info("Code Jam category not found, creating it.") + +            category_overwrites = { +                ctx.guild.default_role: PermissionOverwrite(read_messages=False), +                ctx.guild.me: PermissionOverwrite(read_messages=True) +            } + +            code_jam_category = await ctx.guild.create_category_channel( +                "Code Jam", +                overwrites=category_overwrites, +                reason="It's code jam time!" +            ) +         +        # First member is always the team leader +        team_channel_overwrites = { +            members[0]: PermissionOverwrite(manage_messages=True, read_messages=True, manage_webhooks=True), +            ctx.guild.default_role: PermissionOverwrite(read_messages=False), +            ctx.guild.get_role(Roles.developer): PermissionOverwrite(read_messages=False) +        } + +        # Rest of members should just have read_messages +        for member in members[1:]: +            team_channel_overwrites[member] = PermissionOverwrite(read_messages=True) + +        # Create a channel for the team +        team_channel = await ctx.guild.create_text_channel( +            team_name, +            overwrites=team_channel_overwrites, +            category=code_jam_category +        ) + +        # Assign team leader role +        await members[0].add_roles(ctx.guild.get_role(Roles.team_leader)) + +        # Assign rest of roles +        jammer_role = ctx.guild.get_role(Roles.jammer) +        for member in members: +            await member.add_roles(jammer_role) + +        await ctx.send(f":ok_hand: Team created: {team_channel.mention}") + + +def setup(bot): +    bot.add_cog(CodeJams(bot)) +    log.info("Cog loaded: CodeJams")
\ No newline at end of file | 
