Spaces:
Runtime error
Runtime error
| import discord | |
| from discord.ext import commands | |
| from datetime import datetime | |
| from apscheduler.schedulers.asyncio import AsyncIOScheduler | |
| from database.database import get_db | |
| from database.models import Assessment | |
| from configuration.config import CHANNEL_ID | |
| class Tasks(commands.Cog): | |
| def __init__(self, bot): | |
| self.bot = bot | |
| self.scheduler = AsyncIOScheduler() | |
| self.scheduler.start() | |
| # Add job if not already present (though in a cog, we usually just add it on load) | |
| if not self.scheduler.get_job("daily_reminder"): | |
| self.scheduler.add_job(self.daily_assessment_reminder, 'cron', hour=18, minute=0, id="daily_reminder") | |
| async def daily_assessment_reminder(self): | |
| today = datetime.now().strftime("%Y-%m-%d") | |
| db = get_db() | |
| try: | |
| assessments = db.query(Assessment).filter(Assessment.date == today).all() | |
| if assessments and CHANNEL_ID: | |
| channel = self.bot.get_channel(CHANNEL_ID) | |
| if channel: | |
| msg = "**🔔 Today's Assessments Reminder**\n\n" | |
| for a in assessments: | |
| time = a.time or "Time not set" | |
| desc = a.description or "No description" | |
| msg += f"• **{a.subject}**: {desc} at {time}\n" | |
| await channel.send("@Class\n" + msg) | |
| finally: | |
| db.close() | |
| def cog_unload(self): | |
| self.scheduler.shutdown() | |
| async def setup(bot): | |
| await bot.add_cog(Tasks(bot)) | |