Skip to content

Commit 75bc3af

Browse files
RainzDevanemoijereja-eden
authored andcommitted
added on_ready
1 parent c1e496f commit 75bc3af

File tree

1 file changed

+26
-9
lines changed

1 file changed

+26
-9
lines changed

tux/cogs/utility/remindme.py

Lines changed: 26 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
import asyncio
21
import contextlib
32
import datetime
3+
import asyncio
44

55
import discord
6-
from discord.ext import commands
6+
from discord.ext import commands, tasks
77
from loguru import logger
88

99
from prisma.models import Reminder
@@ -18,13 +18,11 @@ def __init__(self, bot: Tux) -> None:
1818
self.bot = bot
1919
self.db = DatabaseController()
2020
self.remindme.usage = generate_usage(self.remindme)
21+
self._initialized = False
2122

22-
async def send_reminder(self, user_id: int, reminder: Reminder) -> None:
23-
user = self.bot.get_user(user_id)
24-
25-
if user is None:
26-
user = await self.bot.fetch_user(user_id)
2723

24+
async def send_reminder(self, reminder: Reminder) -> None:
25+
user = self.bot.get_user(reminder.reminder_user_id)
2826
if user is not None:
2927
embed = EmbedCreator.create_embed(
3028
bot=self.bot,
@@ -64,6 +62,25 @@ async def send_reminder(self, user_id: int, reminder: Reminder) -> None:
6462
except Exception as e:
6563
logger.error(f"Failed to delete reminder: {e}")
6664

65+
@commands.Cog.listener()
66+
async def on_ready(self) -> None:
67+
if self._initialized:
68+
return
69+
70+
self._initialized = True
71+
72+
reminders = await self.db.reminder.get_all_reminders()
73+
dt_now = datetime.datetime.now(datetime.UTC)
74+
75+
for reminder in reminders:
76+
seconds = (reminder.reminder_expires_at - dt_now).total_seconds()
77+
78+
if seconds <= 0:
79+
await self.send_reminder(reminder)
80+
continue
81+
82+
self.bot.loop.call_later(seconds, asyncio.create_task, self.send_reminder(reminder))
83+
6784
@commands.hybrid_command(
6885
name="remindme",
6986
description="Set a reminder for yourself",
@@ -130,7 +147,7 @@ async def remindme(
130147

131148
embed.add_field(
132149
name="Note",
133-
value="- If you have DMs closed, we will attempt to send it in this channel instead.",
150+
value="- If you have DMs closed, we will attempt to send it in this channel instead.\n"
134151
)
135152

136153
except Exception as e:
@@ -144,7 +161,7 @@ async def remindme(
144161

145162
logger.error(f"Error creating reminder: {e}")
146163

147-
self.bot.loop.call_later(seconds, asyncio.create_task, self.send_reminder(ctx.author.id, reminder_obj))
164+
self.bot.loop.call_later(seconds, asyncio.create_task, self.send_reminder(reminder_obj))
148165

149166
await ctx.reply(embed=embed, ephemeral=True)
150167

0 commit comments

Comments
 (0)