תזכורות בבוט

סקירה קצרה

מערכת התזכורות מאפשרת למשתמשי הבוט ליצור, לדחות ולנהל תזכורות אישיות דרך שיחה אינטראקטיבית או פקודות קצרות. המידע נשמר ב-MongoDB (reminders/database.py) ומנוהל דרך ישויות Reminder ו-ReminderConfig.

פקודות עיקריות

  • /remind – פותח אשף אינטראקטיבי: כותרת → זמן → תיאור.

  • /remind "כותרת" tomorrow 10:00 – יצירה מהירה עם פרמטרים בשורה אחת (סיומות נפוצות: tomorrow 10:00, in 2 hours, בעוד 30 דקות).

  • /reminders – מציג רשימת תזכורות פעילות עם כפתורי השלמה/עריכה/מחיקה.

  • /cancel – ביטול האשף בכל שלב.

איך הוויזרד עובד

  1. כותרת – חובה; עוברת ולידציה מול ReminderValidator.

  2. בחירת זמן – כפתורי קיצור (15/30 דקות, שעה, מחר 09:00, שבוע) או קלט חופשי שנפרש ע“י reminders.utils.parse_time.

  3. תיאור – אופציונלי; ניתן לדלג עם /skip או ”דלג“.

  4. בסיום נוצרת רשומה חדשה דרך RemindersDB.create_reminder ומתוזמן job ייעודי ב-JobQueue.

טיפים לשימוש בפקודה מהירה

/remind "לעדכן לוגים" in 45 minutes
/remind "פגישת סנכרון" 2025-01-15 14:00
/remind "לשלוח PR" בעעוד שעה

המרכאות סביב הכותרת חובה כאשר משתמשים בנתיב המהיר. כל מה שלאחר הכותרת מתפרש כזמן.

ניהול התזכורות

  • בחלון הרשימה מוצג לכל תזכורת כפתור (סימון כהושלמה), ✏️ (עריכה), 🗑️ (מחיקה).

  • בעת התראת ”⏰ תזכורת“ מתקבלים גם כפתורי דחייה (15/60/180 דקות או ”מחר“).

  • עריכה מתבצעת בשני שלבים: בחירת שדה דרך כפתורים ואז שליחת קלט חופשי (כולל תמיכה ב-/skip לניקוי תיאור).

  • ניתן לדחות תזכורת גם לאחר שנשלחה; המערכת תעדכן את ה-job הקיים ותשמור סטטוס SNOOZED.

מגבלות ומדיניות

  • עד 50 תזכורות פעילות למשתמש (ReminderConfig.max_reminders_per_user).

  • כותרת עד 200 תווים, תיאור עד 1000 תווים וללא תווים בעייתיים כמו <>[]{}.

  • זמן חייב להיות בעתיד ולא יותר משנה קדימה.

  • ברירת המחדל לאזור זמן היא Asia/Jerusalem; ניתן להתאים בעתיד דרך DB אם מוסיפים שדה user_timezone.

מתזמן והתאוששות

  • reminders/scheduler.py טוען תזכורות ממתינות ואת אלה שמתוזמנות קדימה ומריץ אותן ב-JobQueue.

  • בעת אתחול, המתזמן מסמן תזכורות עבר שנשלחו אך לא הושלמו, כך שכפתורי השלמה עדיין עובדים.

  • תזכורות מחזוריות (Daily/Weekly/Monthly) נוצרות מחדש באמצעות handle_recurring_reminders שמופעל פעם בשעה.

חיבור לקוד

  • חיבור ל-PTB: reminders.handlers.setup_reminder_handlers(application) מוסיף את האשף, רשימת התזכורות וטיפול ב-callbackים.

  • Scheduler: reminders.scheduler.setup_reminder_scheduler(application) מוודא שטעינת התזמונים מתבצעת אחרי עליית הבוט.

קישורים