שיתוף קוד (חשוב)

summary:

כפתור ”🔗 שתף קוד“ יוצר שיתוף מהיר של קובץ דרך GitHub Gist או Pastebin. הכפתור נושא את ה-ObjectId של הגרסה שהייתה קיימת כשהוא נוצר, ולכן הוא מצמיד גרסה ואינו מבטיח את התוכן העדכני.

מה זה עושה?

כפתור ”🔗 שתף קוד“ מאפשר ליצור שיתוף מהיר של קובץ קוד דרך GitHub Gist או Pastebin.

יש שתי צורות ל-callback_data של הכפתור, והן מתנהגות אחרת:

  • share_menu_id:<ObjectId> — המזהה נצרב בכפתור. זה המסלול ברוב המקומות (handlers/documents.py, handlers/save_flow.py, large_files_handler.py).

  • share_menu_idx:<אינדקס> — הכפתור נושא אינדקס לתוך files_cache שב-context.user_data (handlers/file_view.py, conversation_handlers.py). אם הקאש הוחלף מאז שהכפתור רונדר, אותו אינדקס עלול להצביע על קובץ אחר.

אזהרה

קובץ רגיל (``code_snippets``): ה-ObjectId מצמיד גרסה, לא קובץ. save_code_snippet מעלה את version ב-1 ויוצר מסמך חדש, ולכן כפתור שרונדר לפני עריכה ישתף את הגרסה שהייתה אז.

קובץ גדול (``large_files``): save_large_file מוחק את המסמך הישן ומכניס חדש, בלי לשמור גרסה קודמת. כפתור ישן לקובץ גדול ייכשל (”קובץ לא נמצא“) במקום לשתף גרסה קודמת.

בכל מקרה — לשיתוף התוכן העדכני יש לפתוח את הקובץ מחדש ולהשתמש בכפתור שמופיע בתצוגה הנוכחית.

איפה הכפתור מופיע?

  • בתפריט פריט קובץ לפני ”הצג קוד“.

  • בתוך תצוגת ”הצג קוד“ של הקובץ.

  • בהודעת ההצלחה לאחר שמירת קובץ (גם בהדבקת קוד וגם לאחר העלאת קובץ מצורף).

איך זה עובד (זרימה)

  1. לוחצים על ”🔗 שתף קוד“.

  2. נפתח תפריט בין שני שירותים: ”🐙 GitHub Gist“ או ”📋 Pastebin“.

  3. לאחר בחירה, הבוט מעלה את התוכן לשירות ומחזיר קישור שיתוף.

  4. ניתן לבטל בכל רגע על ידי כפתור ”❌ ביטול“ בתפריט.

דרישות

GitHub Gist:

  • נדרש חיבור של חשבון ה-GitHub האישי דרך הבוט: תפריט ראשי ← 🔧 GitHub.

  • ה-Gist נוצר תחת החשבון האישי של המשתמש, ולא תחת חשבון המערכת — כך הוא מופיע ברשימת ה-Gists שלו, מיוחס אליו, והוא יכול לערוך או למחוק אותו.

  • GITHUB_TOKEN (משתנה הסביבה) אינו משמש ליצירת Gist. הוא שייך לחשבון שמריץ את הבוט ומשמש לפעולות תפעוליות בלבד.

  • בלי חיבור אישי תוצג הודעה עם הנחיה להתחבר, או להשתמש ב-Pastebin.

Pastebin:

  • PASTEBIN_API_KEY – נדרש בסביבת הריצה. אין צורך בחיבור אישי של המשתמש.

מגבלות והתנהגות

  • השיתוף מתבצע לפי ObjectId; אם אין מזהה זמין, הבוט יתריע.

  • תוכן ריק/חסר יגרום לביטול השיתוף עם הודעת שגיאה ברורה.

  • ייתכנו מגבלות גודל בצד השירותים (Gist/Pastebin) – במקרים כאלו תוצג הודעת כשל.

הודעות הצלחה/שגיאה

  • הצלחה: קישור ישיר חוזר בהודעה (כולל שם הקובץ).

  • שגיאה: הודעה ידידותית. עבור Gist מבחינים בין שני מצבים: חשבון GitHub שלא חובר (הודעה עם הנחיית חיבור) לבין תקלה זמנית בגישה לטוקן (הודעת ”נסה שוב“).

Troubleshooting קצר

  • Gist לא עובד? ודאו שחיברתם את חשבון ה-GitHub דרך תפריט ראשי ← 🔧 GitHub. אם הטוקן פג או נשלל, הבוט יבקש לחבר מחדש.

  • Pastebin לא עובד? ודאו ש-PASTEBIN_API_KEY הוגדר בסביבת הריצה.

  • בדקו שהתוכן אינו ריק ושקובץ באמת קיים למשתמש הנוכחי.

  • אם שירות חיצוני מחזיר שגיאה זמנית – נסו שוב מאוחר יותר.

דוגמאות (טקסטואליות)

תפריט פריט קובץ:

[👁️ הצג קוד] [✏️ ערוך]
[📝 שנה שם] [📝 ערוך הערה]
[📚 היסטוריה] [📥 הורד]
[🔗 שתף קוד]
[🔄 שכפול] [🗑️ מחק]

תצוגת קובץ:

[✏️ ערוך קוד] [📝 ערוך שם]
[📝 ערוך הערה] [📚 היסטוריה]
[📥 הורד] [🔄 שכפול]
[🔗 שתף קוד]
[🔙 חזרה]

הודעת הצלחה לאחר שמירה:

[👁️ הצג קוד] [✏️ ערוך]
[📝 שנה שם] [📝 ערוך הערה]
[📚 היסטוריה] [📥 הורד]
[🗑️ מחק]
[🔗 שתף קוד]
[🔙 לרשימה]