diff options
| author | 2019-02-18 09:23:05 +0100 | |
|---|---|---|
| committer | 2019-02-18 09:23:05 +0100 | |
| commit | a8942ff9ef5d6427f1862d5fded0a78b5298663c (patch) | |
| tree | 9964e39fee46efa1a815409d287f3a90614c7374 | |
| parent | Merge branch 'master' into bb-improvements (diff) | |
| parent | Merge pull request #312 from python-discord/fix-create-team (diff) | |
Merge branch 'master' into bb-improvements
| -rw-r--r-- | bot/cogs/jams.py | 41 |
1 files changed, 34 insertions, 7 deletions
diff --git a/bot/cogs/jams.py b/bot/cogs/jams.py index e68aa3d2f..96b98e559 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(":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)} " + "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)) |