From ae8f276c44da4336fe6e927d14d267d1e3a6567f Mon Sep 17 00:00:00 2001 From: Joseph Banks Date: Sat, 16 Feb 2019 23:34:33 +0000 Subject: Add voice channel support to the team creation command and fix a bug which meant some users did not have permissions added --- bot/cogs/jams.py | 41 ++++++++++++++++++++++++++++++++++------- 1 file changed, 34 insertions(+), 7 deletions(-) diff --git a/bot/cogs/jams.py b/bot/cogs/jams.py index e68aa3d2f..bb2ad67ce 100644 --- a/bot/cogs/jams.py +++ b/bot/cogs/jams.py @@ -24,11 +24,22 @@ class CodeJams: team_name: str, members: commands.Greedy[Member] ): """ - Create a team channel in the Code Jams category, assign roles and then add - overwrites for the team. + Create a team channel (both voice and text) in the Code Jams category, assign roles + and then add overwrites for the team. The first user passed will always be the team leader. """ + + # We had a little issue during Code Jam 4 here, the greedy converter did it's job + # and ignored anything which wasn't a valid argument which left us with teams of + # two members or at some times even 1 member. This fixes that by checking that there + # are always 3 members in the members list. + if len(members) < 3: + await ctx.send(f":no_entry_sign: One of your arguments was invalid - there must be a " + f"minimum of 3 valid members in your team. Found: {len(members)} " + f"members") + return + code_jam_category = utils.get(ctx.guild.categories, name="Code Jam") if code_jam_category is None: @@ -50,23 +61,39 @@ class CodeJams: members[0]: PermissionOverwrite( manage_messages=True, read_messages=True, - manage_webhooks=True + manage_webhooks=True, + connect=True ), - ctx.guild.default_role: PermissionOverwrite(read_messages=False), - ctx.guild.get_role(Roles.developer): PermissionOverwrite(read_messages=False) + ctx.guild.default_role: PermissionOverwrite(read_messages=False, connect=False), + ctx.guild.get_role(Roles.developer): PermissionOverwrite( + read_messages=False, + connect=False + ) } # Rest of members should just have read_messages for member in members[1:]: - team_channel_overwrites[member] = PermissionOverwrite(read_messages=True) + team_channel_overwrites[member] = PermissionOverwrite( + read_messages=True, + connect=True + ) - # Create a channel for the team + # Create a text channel for the team team_channel = await ctx.guild.create_text_channel( team_name, overwrites=team_channel_overwrites, category=code_jam_category ) + # Create a voice channel for the team + team_voice_name = " ".join(team_name.split("-")).title() + + await ctx.guild.create_voice_channel( + team_voice_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)) -- cgit v1.2.3 From e4d0bb02e409ab2a89deadcb6db4804706213302 Mon Sep 17 00:00:00 2001 From: Joseph Banks Date: Sun, 17 Feb 2019 20:07:04 +0000 Subject: Address Johannes Christ's review comments --- bot/cogs/jams.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bot/cogs/jams.py b/bot/cogs/jams.py index bb2ad67ce..96b98e559 100644 --- a/bot/cogs/jams.py +++ b/bot/cogs/jams.py @@ -35,9 +35,9 @@ class CodeJams: # two members or at some times even 1 member. This fixes that by checking that there # are always 3 members in the members list. if len(members) < 3: - await ctx.send(f":no_entry_sign: One of your arguments was invalid - there must be a " + await ctx.send(":no_entry_sign: One of your arguments was invalid - there must be a " f"minimum of 3 valid members in your team. Found: {len(members)} " - f"members") + "members") return code_jam_category = utils.get(ctx.guild.categories, name="Code Jam") -- cgit v1.2.3