This commit resolves several issues with the notification scheduler:
- DMs are no longer delayed, and notifications are sent at the correct times.
- The lesson selection logic now correctly identifies the next lesson.
- The Discord webhook now sends notifications reliably.
A new, robust scheduler has been implemented to prevent missed notifications due to timing drift, and the `Run` function has been refactored to ensure the correct lesson is always selected. Additionally, a check has been added to prevent silent webhook failures when the URL is not configured.
This commit resolves the TODO in the `checkTimetableChangesForUser` function in `Botrun/BotStart.go`.
The new implementation fetches the user's timetable by calling the `Untis.Auth` and `Untis.Timetable` functions. It then compares the new timetable with the previous one and sends a notification if there are any changes.
As part of this change, the `Bot` directory was renamed to `Untis` to follow Go conventions, and the import paths were updated in `Botrun/BotStart.go` and `main.go`. The `.gitignore` file was also updated to ignore the build artifact.
Refactors the application to support multiple users for timetable logging.
- User accounts added via a Discord command are now stored in `accounts.json`.
- The main scheduling loop now fetches timetables for all registered users, in addition to the default user defined in the `.env` file.
- Notifications for registered users are now sent as direct messages, providing personalized updates. The default user continues to use the existing webhook.
- User-specific data files (e.g., `timetable_filled_<userID>.json`) are now used to keep each user's data separate.
- Error handling has been improved to prevent the application from crashing if an operation fails for a single user.