בוט טלגרם בעברית שמלמד Python מאפס: 12 שיעורים קצרים, ובכל אחד הסבר, דוגמת קוד, תרגיל מעשי וחידון. הבוט זוכר את ההתקדמות של כל תלמיד, ומוכן לפריסה ב-Render.
| יכולת | תיאור |
|---|---|
| 📚 12 שיעורים | מ-print ועד פונקציות וטיפול בשגיאות, עם ניווט בכפתורים |
| ✏️ תרגילים | התלמיד שולח קוד בהודעה, והבוט בודק ומחזיר משוב ממוקד |
| 🧠 חידונים | שאלות רב-ברירה עם הסבר לכל תשובה, גם כשטועים |
| 📊 מעקב התקדמות | שיעורים שהושלמו, אחוזי הצלחה בחידונים ורצף למידה יומי |
| 🤖 מורה חכם (אופציונלי) | /ask לשאלות חופשיות ובדיקת תרגילים חכמה, מבוסס Claude |
| הרצת קוד התלמיד בתת-תהליך מוגבל והשוואת הפלט |
הבוט עובד במלואו גם בלי מפתח Claude - כל החומר, התרגילים והחידונים מקומיים. המפתח רק מוסיף את היכולת לענות על שאלות חופשיות.
/start התחלה ותפריט ראשי
/lessons תפריט כל השיעורים
/lesson 5 מעבר ישיר לשיעור מספר 5
/next השיעור הבא שטרם הושלם
/practice התרגיל של השיעור הנוכחי
/quiz החידון של השיעור הנוכחי
/ask ... שאלה חופשית על Python
/run ... הרצת קוד (אם הופעלה)
/progress ההתקדמות שלי
/cancel ביטול תרגיל פתוח
/reset איפוס ההתקדמות
פותחים צ'אט עם @BotFather, שולחים /newbot, בוחרים שם
ושם משתמש, ומעתיקים את הטוקן שמתקבל.
הדרך הקצרה - Blueprint: ב-Render בוחרים New → Blueprint, מצביעים על
הריפו הזה, ו-render.yaml מגדיר את השירות אוטומטית. נותר רק למלא את
TELEGRAM_BOT_TOKEN.
הדרך הידנית - Web Service:
| הגדרה | ערך |
|---|---|
| Environment | Python 3 |
| Build Command | pip install -r requirements.txt |
| Start Command | python main.py |
| משתנה | חובה | תיאור |
|---|---|---|
TELEGRAM_BOT_TOKEN |
✅ | הטוקן מ-BotFather |
ANTHROPIC_API_KEY |
❌ | מפעיל את /ask ובדיקת תרגילים חכמה |
CLAUDE_MODEL |
❌ | ברירת מחדל: claude-opus-5 |
WEBHOOK_SECRET |
❌ | מחרוזת אקראית שמאמתת שהעדכון הגיע מטלגרם |
DATA_DIR |
❌ | תיקיית מסד הנתונים, ברירת מחדל ./data |
ENABLE_CODE_RUNNER |
❌ | true מפעיל את /run ובדיקת פלט |
WEBHOOK_URL |
❌ | רק אם אתם לא ב-Render; שם זה נגזר מ-RENDER_EXTERNAL_URL |
אין צורך לרשום את ה-webhook ידנית: הבוט מזהה את כתובת השירות שרנדר מזריקה
ב-RENDER_EXTERNAL_URL, נרשם מול טלגרם בעלייה ומאזין על PORT. בלי
WEBHOOK_URL הוא עובר אוטומטית ל-polling, מה שנוח לפיתוח מקומי.
- השירות נרדם אחרי כ-15 דקות חוסר פעילות. ההודעה הראשונה אחרי שינה תתקבל באיחור של עשרות שניות, כי היא זו שמעירה את השירות.
- אין דיסק קבוע, ולכן מסד הנתונים נמחק בכל דיפלוי. לשמירת התקדמות לאורך זמן:
מוסיפים Disk בתוכנית בתשלום, ממפים אותו ל-
/var/dataומגדיריםDATA_DIR=/var/data.
python -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env # ואז ממלאים את TELEGRAM_BOT_TOKEN
python main.py # עולה במצב pollingpip install pytest pytest-asyncio
python -m pytestהבדיקות מאמתות שכל דוגמאות הקוד והפתרונות מתקמפלים, שהפתרונות מייצרים את הפלט המצופה, שכל הודעה שהבוט שולח היא HTML תקין שטלגרם מקבל, ושכל כפתור מוביל לפעולה קיימת.
main.py נקודת כניסה: בונה את האפליקציה ובוחר webhook או polling
app/config.py קריאת משתני סביבה
app/content/lessons.py תוכנית הלימודים: שיעורים, תרגילים וחידונים
app/handlers.py פקודות, כפתורים וזרימת השיחה
app/keyboards.py מקלדות inline
app/storage.py התקדמות בשמירת SQLite
app/ai.py מורה חכם מבוסס Claude (אופציונלי)
app/runner.py הרצת קוד בתת-תהליך מוגבל (אופציונלי)
render.yaml Blueprint לפריסה ברנדר
מוסיפים Lesson לרשימת LESSONS בקובץ app/content/lessons.py. התפריט, הניווט,
החידון ומעקב ההתקדמות מתעדכנים מעצמם. python -m pytest יאמת שהשיעור החדש תקין.
הפעלת ENABLE_CODE_RUNNER=true מריצה קוד שנשלח מטלגרם על השרת שלכם. הבוט מגביל
זמן CPU, זיכרון, גודל פלט וכתיבה לקבצים, וחוסם ייבוא מודולים רגישים - אבל אלו
שכבות הגנה, לא בידוד מלא. להפעלה בסביבה ציבורית מומלץ להריץ בקונטיינר ייעודי
ללא גישת רשת. כשהתכונה כבויה, תרגילים נבדקים בלי להריץ קוד כלל.