From 9a999fb34b581c91072433fd8d62cb2406d65187 Mon Sep 17 00:00:00 2001 From: Stijn De Clercq Date: Thu, 10 Feb 2022 19:34:40 +0100 Subject: [PATCH 1/2] Automatically join threads, add placeholder code for pin context menu --- cogs/context_menus/school_cm.py | 32 ++++++++++++++++++++++++++++++++ cogs/events.py | 6 ++++++ cogs/school.py | 2 +- 3 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 cogs/context_menus/school_cm.py diff --git a/cogs/context_menus/school_cm.py b/cogs/context_menus/school_cm.py new file mode 100644 index 0000000..f65e609 --- /dev/null +++ b/cogs/context_menus/school_cm.py @@ -0,0 +1,32 @@ +import discord +from discord import ApplicationContext +from discord.ext import commands +from discord.commands import message_command + +from startup.didier import Didier + + +class SchoolCM(commands.Cog): + def __init__(self, client: Didier): + self.client: Didier = client + + @message_command(name="Pin") + async def _pin_cm(self, ctx: ApplicationContext, message: discord.Message): + # In case people abuse, check if they're blacklisted + blacklist = [] + + if ctx.user.id in blacklist: + return await ctx.respond(":angry:", ephemeral=True) + + if message.is_system(): + return await ctx.respond("Dus jij wil system messages pinnen?\nMag niet.", ephemeral=True) + + await message.pin(reason=f"Didier Pin door {ctx.user.display_name}") + await ctx.respond("📌", ephemeral=True) + + +def setup(client: Didier): + # client.add_cog(SchoolCM(client)) + # TODO wait for bug to be fixed in lib then uncomment this + # when used in dm, tries to create a DM with the bot? + pass diff --git a/cogs/events.py b/cogs/events.py index 67abe79..7668d40 100644 --- a/cogs/events.py +++ b/cogs/events.py @@ -78,6 +78,12 @@ class Events(commands.Cog): # Earn XP & Message count stats.sentMessage(message) + @commands.Cog.listener() + async def on_thread_join(self, thread: discord.Thread): + # Join threads automatically + if thread.me is None: + await thread.join() + @commands.Cog.listener() async def on_command(self, ctx): """ diff --git a/cogs/school.py b/cogs/school.py index 520c87f..51066f2 100644 --- a/cogs/school.py +++ b/cogs/school.py @@ -82,7 +82,7 @@ class School(commands.Cog): if message.is_system(): return await ctx.send("Dus jij wil system messages pinnen?\nMag niet.") - await message.pin(reason="Didier Pin door {}".format(ctx.author.display_name)) + await message.pin(reason=f"Didier Pin door {ctx.author.display_name}") await ctx.message.add_reaction("✅") @commands.command(name="Deadlines", aliases=["dl"]) From a734191973a933e2353d6006eb0f3adbe0746f8a Mon Sep 17 00:00:00 2001 From: Stijn De Clercq Date: Thu, 10 Feb 2022 19:55:04 +0100 Subject: [PATCH 2/2] Add command to join threads that Didier is not in yet --- cogs/events.py | 5 ++++- cogs/other.py | 11 +++++++++++ files/help.json | 1 + 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/cogs/events.py b/cogs/events.py index 7668d40..284acd8 100644 --- a/cogs/events.py +++ b/cogs/events.py @@ -109,6 +109,7 @@ class Events(commands.Cog): # Don't handle commands that have their own custom error handler if hasattr(ctx.command, 'on_error'): return + # Someone just mentioned Didier without calling a real command, # don't care about this error if isinstance(err, (commands.CommandNotFound, commands.CheckFailure, commands.TooManyArguments, commands.ExpectedClosingQuoteError), ): @@ -120,9 +121,11 @@ class Events(commands.Cog): await ctx.send("Geen message gevonden die overeenkomt met het opgegeven argument.") elif isinstance(err, (commands.ChannelNotFound, commands.ChannelNotReadable)): await ctx.send("Geen channel gevonden dat overeenkomt met het opgegeven argument.") + elif isinstance(err, commands.ThreadNotFound): + await ctx.reply("Thread niet gevonden.", mention_author=False) # Someone forgot an argument or passed an invalid argument elif isinstance(err, (commands.BadArgument, commands.MissingRequiredArgument, commands.UnexpectedQuoteError)): - await ctx.send("Controleer je argumenten.") + await ctx.reply("Controleer je argumenten.", mention_author=False) else: usage = stringFormatters.format_command_usage(ctx) await self.sendErrorEmbed(err, "Command", usage) diff --git a/cogs/other.py b/cogs/other.py index 859c55d..efddcab 100644 --- a/cogs/other.py +++ b/cogs/other.py @@ -1,3 +1,4 @@ +import discord from discord.ext import commands from data.embeds.snipe import EditSnipe, DeleteSnipe @@ -24,6 +25,16 @@ class Other(commands.Cog): """ await custom_commands.CommandsList(ctx).send() + @commands.command(name="Join", usage="[Thread]") + @help.Category(category=Category.Didier) + async def join_thread(self, ctx, thread: discord.Thread): + """ + Join threads + """ + if thread.me is None: + await thread.join() + await ctx.message.add_reaction("✅") + @commands.command(name="Snipe") @help.Category(category=Category.Other) async def snipe(self, ctx): diff --git a/files/help.json b/files/help.json index f14e6f1..c15ecb7 100644 --- a/files/help.json +++ b/files/help.json @@ -55,6 +55,7 @@ "inspire": "Genereer quotes via [InspiroBot](https://inspirobot.me/).", "inventory": "Bekijk de items in jouw inventory.", "invest": "Investeer [Aantal] Didier Dinks in jouw Didier Bank om rente te vergaren.", + "join": "Laat Didier [Thread] joinen.", "jpl": "Informatie over de Jupiler Pro League.", "jpl matches": "Bekijk de wedstrijden die gespeeld worden op [Week]. Default naar de huidige speeldag.", "jpl table": "De huidige stand van het klassement.",