diff --git a/matchy/cogs/matcher.py b/matchy/cogs/matcher.py index aa911c4..6db1da9 100644 --- a/matchy/cogs/matcher.py +++ b/matchy/cogs/matcher.py @@ -210,15 +210,28 @@ class MatcherCog(commands.Cog): async def run_hourly_tasks(self): """Run any hourly tasks we have""" + # Send a reminder for anything that will be active in 1 day + for (channel, _) in state.State.get_active_match_tasks(datetime.now() + timedelta(days=1)): + logger.info("Reminding about scheduled task in %s", channel) + msg_channel = self.bot.get_channel(int(channel)) + await msg_channel.send(strings.reminder()) + + # Match groups for anything active right now for (channel, min) in state.State.get_active_match_tasks(): logger.info("Scheduled match task triggered in %s", channel) msg_channel = self.bot.get_channel(int(channel)) await match_groups_in_channel(msg_channel, min) - for (channel, _) in state.State.get_active_match_tasks(datetime.now() + timedelta(days=1)): - logger.info("Reminding about scheduled task in %s", channel) + # Send a reminder to threads for a match that happened two days ago + for (channel, _) in state.State.get_active_match_tasks(datetime.now() - timedelta(days=2)): + logger.info("Sending reminders to threads in %s", channel) msg_channel = self.bot.get_channel(int(channel)) - await msg_channel.send(strings.reminder()) + # Find any threads that need + for thread in msg_channel.threads: + # Only regard threads the bot created + # And that have no additional messages + if thread.owner.id == self.bot.user.id and thread.message_count <= 1: + await thread.send(strings.thread_reminder()) # Increment when adjusting the custom_id so we don't confuse old users @@ -272,11 +285,14 @@ async def match_groups_in_channel(channel: discord.channel, min: int): strings.matched_up([m.mention for m in group])) # Set up a thread for this match if the bot has permissions to do so if channel.permissions_for(channel.guild.me).create_public_threads: - await channel.create_thread( + thread = await channel.create_thread( name=strings.thread_title([m.display_name for m in group]), message=message, reason="Creating a matching thread") + # Send a message with a suggested time to the channel + await thread.send(f"{strings.thread_message()} {strings.time_suggestion()}") + # Close off with a message await channel.send(strings.matching_done()) # Save the groups to the history diff --git a/matchy/cogs/strings.py b/matchy/cogs/strings.py index a617194..258b071 100644 --- a/matchy/cogs/strings.py +++ b/matchy/cogs/strings.py @@ -145,6 +145,16 @@ Make sure you're /pause'd if you need to be, or /join in ASAP!""", ] +@randomised +def thread_reminder(): return [ + "Hey friends, just checking in! No worries if you're too busy this week", + "Bork bork, quick reminder in case y'all forgot!", + "Hey matchees, how's your week going?", + "Hey everyone, don't forget to check in with eachother!", + "Quick friendly nudge, how're you all doing?", +] + + @randomised def matching(): return [ "Matchy is matching matchees...", @@ -174,6 +184,36 @@ def matched_up(ms): return [ ] +@randomised +def thread_message(): return [ + "Hey peeps :)", + "How is everyone?", + "Bork!", + "Hey kiddos :)", + "Ahoy!", + "Great to see y'all here.", + "Icebreaker! What's your favourite pokemon?", + "I'm hungry, would a lasagna count as a sandwich?", + "What's your favourite keyboard key?", + "I'm confused thinking... Is a train just a sideways elevator?", + "Humans are weird, why do you have moustaches above your eyes?" +] + + +@randomised +def time_suggestion(): return [ + "Can I suggest a quick call on Wednesday?", + "Remember to organise a chat if you're up for it!", + "How about throwing something in the calendar for Friday?", + "Would 10am on Thursday work for people?", + "How about a call this afternoon?", + "Would a chat the start of a weekday work?", + "How's about organising a quick call sometime this week?", + "When's everyone available for a short hangout?", + "It's best to pick a time to drop in a call or meet up, if everyone is up for it!", +] + + @randomised def thread_title(ms): return [ f"{format_list(ms)}", diff --git a/requirements.txt b/requirements.txt index fdcdbe6..99d752f 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,8 +1,8 @@ -coverage==7.6.1 +coverage==7.6.10 discord.py==2.4.0 dpytest==0.7.0 flake8==7.1.1 pytest==8.3.3 -pytest-asyncio==0.24.0 +pytest-asyncio==0.25.2 pytest-cov==5.0.0 schema==0.7.7 \ No newline at end of file