Skip to content

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🐍 בוט טלגרם שמלמד Python

בוט טלגרם בעברית שמלמד Python מאפס: 12 שיעורים קצרים, ובכל אחד הסבר, דוגמת קוד, תרגיל מעשי וחידון. הבוט זוכר את ההתקדמות של כל תלמיד, ומוכן לפריסה ב-Render.

מה יש בבוט

יכולת תיאור
📚 12 שיעורים מ-print ועד פונקציות וטיפול בשגיאות, עם ניווט בכפתורים
✏️ תרגילים התלמיד שולח קוד בהודעה, והבוט בודק ומחזיר משוב ממוקד
🧠 חידונים שאלות רב-ברירה עם הסבר לכל תשובה, גם כשטועים
📊 מעקב התקדמות שיעורים שהושלמו, אחוזי הצלחה בחידונים ורצף למידה יומי
🤖 מורה חכם (אופציונלי) /ask לשאלות חופשיות ובדיקת תרגילים חכמה, מבוסס Claude
▶️ הרצת קוד (אופציונלי) הרצת קוד התלמיד בתת-תהליך מוגבל והשוואת הפלט

הבוט עובד במלואו גם בלי מפתח Claude - כל החומר, התרגילים והחידונים מקומיים. המפתח רק מוסיף את היכולת לענות על שאלות חופשיות.

הפקודות

/start      התחלה ותפריט ראשי
/lessons    תפריט כל השיעורים
/lesson 5   מעבר ישיר לשיעור מספר 5
/next       השיעור הבא שטרם הושלם
/practice   התרגיל של השיעור הנוכחי
/quiz       החידון של השיעור הנוכחי
/ask ...    שאלה חופשית על Python
/run ...    הרצת קוד (אם הופעלה)
/progress   ההתקדמות שלי
/cancel     ביטול תרגיל פתוח
/reset      איפוס ההתקדמות

פריסה ב-Render

1. יוצרים בוט בטלגרם

פותחים צ'אט עם @BotFather, שולחים /newbot, בוחרים שם ושם משתמש, ומעתיקים את הטוקן שמתקבל.

2. פורסים את הקוד

הדרך הקצרה - 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

3. מגדירים משתני סביבה

משתנה חובה תיאור
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, מה שנוח לפיתוח מקומי.

שתי מגבלות של התוכנית החינמית

  1. השירות נרדם אחרי כ-15 דקות חוסר פעילות. ההודעה הראשונה אחרי שינה תתקבל באיחור של עשרות שניות, כי היא זו שמעירה את השירות.
  2. אין דיסק קבוע, ולכן מסד הנתונים נמחק בכל דיפלוי. לשמירת התקדמות לאורך זמן: מוסיפים 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           # עולה במצב polling

בדיקות

pip 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 יאמת שהשיעור החדש תקין.

הערה על /run

הפעלת ENABLE_CODE_RUNNER=true מריצה קוד שנשלח מטלגרם על השרת שלכם. הבוט מגביל זמן CPU, זיכרון, גודל פלט וכתיבה לקבצים, וחוסם ייבוא מודולים רגישים - אבל אלו שכבות הגנה, לא בידוד מלא. להפעלה בסביבה ציבורית מומלץ להריץ בקונטיינר ייעודי ללא גישת רשת. כשהתכונה כבויה, תרגילים נבדקים בלי להריץ קוד כלל.

About

Hebrew Telegram bot that teaches Python from scratch: 12 lessons with exercises, quizzes and progress tracking.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages