From 8190279b2bee9eca1d07915215c7d85d655460b4 Mon Sep 17 00:00:00 2001 From: Joseph Banks Date: Sat, 16 Feb 2019 14:41:49 +0000 Subject: Add team creator command, createteam --- bot/cogs/jams.py | 72 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 bot/cogs/jams.py 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 -- cgit v1.2.3 From c573de17197bb269f70ad0d179a20ae1162de95a Mon Sep 17 00:00:00 2001 From: Joseph Banks Date: Sat, 16 Feb 2019 14:42:09 +0000 Subject: Add team_leaders to roles config --- bot/constants.py | 1 + config-default.yml | 1 + 2 files changed, 2 insertions(+) diff --git a/bot/constants.py b/bot/constants.py index ab62cd79d..5b9b45c1c 100644 --- a/bot/constants.py +++ b/bot/constants.py @@ -372,6 +372,7 @@ class Roles(metaclass=YAMLGetter): owner: int verified: int helpers: int + team_leader: int class Guild(metaclass=YAMLGetter): diff --git a/config-default.yml b/config-default.yml index 747fa7fab..110dd12dd 100644 --- a/config-default.yml +++ b/config-default.yml @@ -134,6 +134,7 @@ guild: verified: 352427296948486144 helpers: 267630620367257601 rockstars: &ROCKSTARS_ROLE 458226413825294336 + team_leader: 501324292341104650 filter: -- cgit v1.2.3 From 73694f8a790bde8ca67e7b0821f0a92ddec84e10 Mon Sep 17 00:00:00 2001 From: Joseph Banks Date: Sat, 16 Feb 2019 14:42:21 +0000 Subject: Enable loading of the jams cog --- bot/__main__.py | 1 + 1 file changed, 1 insertion(+) diff --git a/bot/__main__.py b/bot/__main__.py index 568285cc3..acb4c372d 100644 --- a/bot/__main__.py +++ b/bot/__main__.py @@ -78,6 +78,7 @@ bot.load_extension("bot.cogs.token_remover") bot.load_extension("bot.cogs.utils") bot.load_extension("bot.cogs.wolfram") bot.load_extension("bot.cogs.free") +bot.load_extension("bot.cogs.jams") if has_rmq: bot.load_extension("bot.cogs.rmq") -- cgit v1.2.3 From 4dcc9724817ffd9d85d78dd50d85f084ed7ac677 Mon Sep 17 00:00:00 2001 From: Joseph Banks Date: Sat, 16 Feb 2019 14:48:15 +0000 Subject: Add a docstring to the createteam command --- bot/cogs/jams.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/bot/cogs/jams.py b/bot/cogs/jams.py index c664d759a..746f42106 100644 --- a/bot/cogs/jams.py +++ b/bot/cogs/jams.py @@ -22,6 +22,12 @@ class CodeJams: self, ctx: commands.Context, 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. + + The first user passed will always be the team leader. + """ code_jam_category = utils.get(ctx.guild.categories, name="Code Jam") if code_jam_category is None: -- cgit v1.2.3 From 21913619f40b3a253602d7ee107c144ad6b02d04 Mon Sep 17 00:00:00 2001 From: Joseph Banks Date: Sat, 16 Feb 2019 14:49:16 +0000 Subject: Change a particularly nasty line --- bot/cogs/jams.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/bot/cogs/jams.py b/bot/cogs/jams.py index 746f42106..a88d80c32 100644 --- a/bot/cogs/jams.py +++ b/bot/cogs/jams.py @@ -46,7 +46,11 @@ class CodeJams: # First member is always the team leader team_channel_overwrites = { - members[0]: PermissionOverwrite(manage_messages=True, read_messages=True, manage_webhooks=True), + 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) } -- cgit v1.2.3 From 5a9a135bd1f69b0ca79c0a45aa432d125bba5cf7 Mon Sep 17 00:00:00 2001 From: Joseph Banks Date: Sat, 16 Feb 2019 14:52:47 +0000 Subject: Flake8 --- bot/cogs/jams.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/bot/cogs/jams.py b/bot/cogs/jams.py index a88d80c32..ec16d0448 100644 --- a/bot/cogs/jams.py +++ b/bot/cogs/jams.py @@ -1,13 +1,14 @@ import logging -from discord import PermissionOverwrite, Member, utils +from discord import Member, PermissionOverwrite, utils from discord.ext import commands -from bot.decorators import with_role from bot.constants import Roles +from bot.decorators import with_role log = logging.getLogger(__name__) + class CodeJams: """ A cog for managing the code-jam related parts of our server @@ -43,7 +44,7 @@ class CodeJams: overwrites=category_overwrites, reason="It's code jam time!" ) - + # First member is always the team leader team_channel_overwrites = { members[0]: PermissionOverwrite( @@ -79,4 +80,4 @@ class CodeJams: def setup(bot): bot.add_cog(CodeJams(bot)) - log.info("Cog loaded: CodeJams") \ No newline at end of file + log.info("Cog loaded: CodeJams") -- cgit v1.2.3 From 24610458a3c0379129552b4ed6204b261cbc243b Mon Sep 17 00:00:00 2001 From: Leon Sandøy Date: Sat, 16 Feb 2019 15:01:42 +0000 Subject: Update bot/cogs/jams.py Co-Authored-By: jos-b --- bot/cogs/jams.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bot/cogs/jams.py b/bot/cogs/jams.py index ec16d0448..e68aa3d2f 100644 --- a/bot/cogs/jams.py +++ b/bot/cogs/jams.py @@ -11,7 +11,7 @@ log = logging.getLogger(__name__) class CodeJams: """ - A cog for managing the code-jam related parts of our server + Manages the code-jam related parts of our server """ def __init__(self, bot: commands.Bot): -- cgit v1.2.3 From 228ac4f3df1e1b127cb4c767ce6a222ce94d2a9a Mon Sep 17 00:00:00 2001 From: Joseph Banks Date: Sat, 16 Feb 2019 15:02:24 +0000 Subject: Sort the loading of cogs --- bot/__main__.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/bot/__main__.py b/bot/__main__.py index acb4c372d..6928a3960 100644 --- a/bot/__main__.py +++ b/bot/__main__.py @@ -38,11 +38,11 @@ else: log.warning("Timed out while waiting for RabbitMQ") # Internal/debug -bot.load_extension("bot.cogs.logging") -bot.load_extension("bot.cogs.security") bot.load_extension("bot.cogs.events") bot.load_extension("bot.cogs.filtering") +bot.load_extension("bot.cogs.logging") bot.load_extension("bot.cogs.modlog") +bot.load_extension("bot.cogs.security") # Commands, etc bot.load_extension("bot.cogs.antispam") @@ -60,12 +60,13 @@ if not DEBUG_MODE: # Feature cogs bot.load_extension("bot.cogs.alias") -bot.load_extension("bot.cogs.deployment") bot.load_extension("bot.cogs.defcon") +bot.load_extension("bot.cogs.deployment") bot.load_extension("bot.cogs.eval") +bot.load_extension("bot.cogs.free") bot.load_extension("bot.cogs.fun") -bot.load_extension("bot.cogs.superstarify") bot.load_extension("bot.cogs.information") +bot.load_extension("bot.cogs.jams") bot.load_extension("bot.cogs.moderation") bot.load_extension("bot.cogs.off_topic_names") bot.load_extension("bot.cogs.reddit") @@ -73,12 +74,11 @@ bot.load_extension("bot.cogs.reminders") bot.load_extension("bot.cogs.site") bot.load_extension("bot.cogs.snakes") bot.load_extension("bot.cogs.snekbox") +bot.load_extension("bot.cogs.superstarify") bot.load_extension("bot.cogs.tags") bot.load_extension("bot.cogs.token_remover") bot.load_extension("bot.cogs.utils") bot.load_extension("bot.cogs.wolfram") -bot.load_extension("bot.cogs.free") -bot.load_extension("bot.cogs.jams") if has_rmq: bot.load_extension("bot.cogs.rmq") -- cgit v1.2.3