Compare commits
20 commits
fix-schedu
...
main
Author | SHA1 | Date | |
---|---|---|---|
647c0266e1 | |||
c8bfa837aa | |||
20b0ba08cd | |||
f07d52bf19 | |||
84f18bceec | |||
e8f5350b8e | |||
e0e927fead | |||
fb4647c4e0 | |||
66d3fe3e5c | |||
77d533fbcb | |||
86d0075e5d | |||
10e3dd3b36 | |||
472f67b3f6 | |||
f7898892e6 | |||
455f202364 | |||
367d12578c | |||
dabd0d9b18 | |||
3b813a63da | |||
e8c5ac9939 | |||
6d6f9d25f9 |
4 changed files with 63 additions and 7 deletions
|
@ -17,7 +17,7 @@ Matchy supports a bunch of user, `matcher` and bot owner commands. `/` commands
|
|||
| /pause | user | Pauses the user for `days: int` days |
|
||||
| /list | user | Lists the current matchees and scheduled matches |
|
||||
| /match | user* | Shares a preview of the matchee groups of size `group_min: int` with the user. *Offers a button to post the match to `matcher` users |
|
||||
| /schedule | `matcher` | Schedules a match every week with `group_min: int` users on `weekday: int` day and at `hour: int` hour. Can pass `cancel: True` to stop the schedule |
|
||||
| /schedule | `matcher` | Schedules a match every week with `group_min: int` users on `weekday: int` and at `hour: int`, on a weekly `cadence: int`.<br>Can pass `cancel: True` to stop the schedule |
|
||||
| /cancel | `matcher` | Cancels any scheduled matches in this channel |
|
||||
| $sync | bot owner | Syncs bot command data with the discord servers |
|
||||
| $close | bot owner | Closes the bot connection so the bot quits safely |
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)}",
|
||||
|
|
|
@ -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
|
Loading…
Add table
Reference in a new issue