Skip to content

Commit 7474798

Browse files
RainzDevanemoijereja-eden
authored andcommitted
removed tasks.loop & added call_later for better task scheduling
1 parent 262a25a commit 7474798

File tree

1 file changed

+9
-20
lines changed

1 file changed

+9
-20
lines changed

tux/cogs/utility/remindme.py

Lines changed: 9 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import contextlib
22
import datetime
3+
import asyncio
34

45
import discord
56
from discord.ext import commands, tasks
@@ -16,25 +17,10 @@ class RemindMe(commands.Cog):
1617
def __init__(self, bot: Tux) -> None:
1718
self.bot = bot
1819
self.db = DatabaseController()
19-
self.check_reminders.start()
2020
self.remindme.usage = generate_usage(self.remindme)
2121

22-
@tasks.loop(seconds=120)
23-
async def check_reminders(self):
24-
reminders = await self.db.reminder.get_unsent_reminders()
25-
26-
try:
27-
for reminder in reminders:
28-
await self.send_reminder(reminder)
29-
await self.db.reminder.update_reminder_status(reminder.reminder_id, sent=True)
30-
logger.debug(f'Status of reminder {reminder.reminder_id} updated to "sent".')
31-
32-
except Exception as e:
33-
logger.error(f"Error sending reminders: {e}")
34-
35-
async def send_reminder(self, reminder: Reminder) -> None:
36-
user = self.bot.get_user(reminder.reminder_user_id)
3722

23+
async def send_reminder(self, user: discord.User, reminder: Reminder) -> None:
3824
if user is not None:
3925
embed = EmbedCreator.create_embed(
4026
bot=self.bot,
@@ -69,9 +55,10 @@ async def send_reminder(self, reminder: Reminder) -> None:
6955
f"Failed to send reminder {reminder.reminder_id}, user with ID {reminder.reminder_user_id} not found.",
7056
)
7157

72-
@check_reminders.before_loop
73-
async def before_check_reminders(self):
74-
await self.bot.wait_until_ready()
58+
try:
59+
await self.db.reminder.delete_reminder_by_id(reminder.reminder_id)
60+
except Exception as e:
61+
logger.error(f"Failed to delete reminder: {e}")
7562

7663
@commands.hybrid_command(
7764
name="remindme",
@@ -120,7 +107,7 @@ async def remindme(
120107
expires_at = datetime.datetime.now(datetime.UTC) + datetime.timedelta(seconds=seconds)
121108

122109
try:
123-
await self.db.reminder.insert_reminder(
110+
reminder_obj = await self.db.reminder.insert_reminder(
124111
reminder_user_id=ctx.author.id,
125112
reminder_content=reminder,
126113
reminder_expires_at=expires_at,
@@ -154,6 +141,8 @@ async def remindme(
154141

155142
logger.error(f"Error creating reminder: {e}")
156143

144+
self.bot.loop.call_later(seconds, asyncio.create_task, self.send_reminder(ctx.author, reminder_obj))
145+
157146
await ctx.reply(embed=embed, ephemeral=True)
158147

159148

0 commit comments

Comments
 (0)