Handlers
תיעוד של כל ה-handlers בפרויקט.
זרימת פקודה בסיסית
התרשים הבא מציג את הזרימה הכללית של פקודה מהמשתמש ועד לתגובה:
graph LR
A[User Command] --> B{Permission Check}
B -->|Authorized| C[Validate Args]
B -->|Denied| D[Error Response]
C --> E[Metrics Collection]
E --> F[Execute Command]
F --> G[Format Response]
G --> H[Send to User]
F --> I[Log Metrics]
I --> J{Alert Check}
J -->|Threshold Exceeded| K[Trigger Alert]
J -->|Normal| L[Store Metrics]
שלבי הזרימה:
Permission Check: בדיקת הרשאות המשתמש לפקודה
Validate Args: אימות הפרמטרים שהועברו
Metrics Collection: איסוף מטריקות לפני ביצוע
Execute Command: הרצת הפקודה בפועל
Log Metrics: רישום המטריקות לניטור
Alert Check: בדיקה האם יש לשלוח התראה
ארכיטקטורת Handlers
התרשים הבא מציג את הקשר בין ה-Handlers השונים לשירותים:
graph TB
subgraph "Bot Interface"
U[User Input] --> DP[Dispatcher]
end
subgraph "Command Handlers"
DP --> SH[/status Handler]
DP --> EH[/errors Handler]
DP --> LH[/latency Handler]
DP --> RH[/rate_limit Handler]
DP --> TH[/triage Handler]
DP --> DH[/dashboard Handler]
end
subgraph "Services Layer"
SH --> HS[Health Service]
EH --> MS[Metrics Service]
LH --> MS
RH --> GS[GitHub Service]
TH --> IS[Investigation Service]
DH --> AS[Aggregation Service]
end
subgraph "Data Layer"
HS --> DB[(Database)]
MS --> DB
MS --> RC[(Redis)]
GS --> GA[GitHub API]
IS --> DB
IS --> ES[Elastic/Logs]
AS --> DB
end
הסבר השכבות:
Bot Interface: קבלת קלט מהמשתמש וניתוב לפקודה המתאימה
Command Handlers: טיפול בפקודות ספציפיות (status, errors, latency וכו«)
Services Layer: שירותי הליבה שמבצעים את הלוגיקה העסקית
Data Layer: שכבת הנתונים - DB, Cache, APIs חיצוניים
ראה גם
ארכיטקטורה כללית: ארכיטקטורה
Services: Services
Resilience: Resilience לשירותים חיצוניים
Show Command
File View Handler
Pagination Handler
- handlers.pagination.build_pagination_row(page, total_items, page_size, callback_prefix)[מקור]
Return a row of pagination buttons [prev,next] or None if not needed.
page: current 1-based page index
total_items: total number of items
page_size: items per page
callback_prefix: for example
files_page_→ formats as{prefix}{page_num}
Save Flow Handler
- handlers.save_flow.emit_event(event, severity='info', **fields)[מקור]
- async handlers.save_flow.long_collect_timeout_job(context)[מקור]
קריאת טיימאאוט: מסכם ומתקדם לפי חלקים שנאספו.
- פרמטרים:
context (telegram.ext.ContextTypes.DEFAULT_TYPE)
- async handlers.save_flow.start_save_flow(update, context)[מקור]
- Return type:
- פרמטרים:
context (telegram.ext.ContextTypes.DEFAULT_TYPE)
- async handlers.save_flow.start_add_code_menu(update, context)[מקור]
תפריט בחירת מצב הוספת קוד: רגיל או איסוף ארוך
- Return type:
- פרמטרים:
context (telegram.ext.ContextTypes.DEFAULT_TYPE)
- async handlers.save_flow.start_long_collect(update, context)[מקור]
כניסה למצב איסוף קוד ארוך
- Return type:
- פרמטרים:
context (telegram.ext.ContextTypes.DEFAULT_TYPE)
- async handlers.save_flow.long_collect_receive(update, context)[מקור]
קבלת חלק קוד נוסף במצב איסוף
- Return type:
- פרמטרים:
context (telegram.ext.ContextTypes.DEFAULT_TYPE)
- async handlers.save_flow.long_collect_done(update, context)[מקור]
סיום איסוף, איחוד ושילוב לזרימת שמירה רגילה
- Return type:
- פרמטרים:
context (telegram.ext.ContextTypes.DEFAULT_TYPE)
- async handlers.save_flow.get_code(update, context)[מקור]
- Return type:
- פרמטרים:
context (telegram.ext.ContextTypes.DEFAULT_TYPE)
- async handlers.save_flow.get_filename(update, context)[מקור]
- Return type:
- פרמטרים:
context (telegram.ext.ContextTypes.DEFAULT_TYPE)
- async handlers.save_flow.get_note(update, context)[מקור]
- Return type:
- פרמטרים:
context (telegram.ext.ContextTypes.DEFAULT_TYPE)
- async handlers.save_flow.save_file_final(update, context, filename, user_id)[מקור]
States Handler
GitHub Handlers
החבילה handlers.github מרכזת את כל הפקודות, התפריטים ומסכי
השיתוף/העלאה מול GitHub. קובץ __init__.py מחזיק תיעוד והגדרות
משותפות (קבועים, Enums והפניות לאירועים), בעוד שהמודולים הפנימיים
מטפלים בכל שלב בזרימת המשתמש – החל משליחת תפריט הבחירה ועד העלאת ZIP
או ענף מלא. השתמשו בחבילה זו כשאתם צריכים להריץ Callback ספציפי
באופן ידני מתוך טסטים או בוטי תחזוקה.
Document Flow
Drive Utilities
חבילת Google Drive עושה שימוש בעזרי תזמון שמנרמלים נתונים ישנים מול
מבנה ההעדפות החדש ב-UI. המודול handlers.drive.utils מספק פונקציה
יחידה, extract_schedule_key, שמחלצת את מפתח התזמון (schedule /
schedule_key) מתוך מילוני העדפות ורסטיליים. חשוב להשתמש בה לפני
שמחשבנים גיבוי אוטומטי כדי להימנע ממצב בו משתמש ותיק נשאר עם ערך ריק.