בוט Telegram שרץ רק בזמן שהמחשב הנייד שלכם פתוח לא באמת רץ — הוא עושה הדגמה. כדי שהוא באמת יהיה מקוון, עונה ב-3 לפנות בוקר, שורד את האתחולים שלכם ואת הקריסות שלו, הוא צריך לחיות על שרת. הנה כל הנתיב, מתחילה ועד סוף, עם הפקודות.
חדשות טובות קודם: בוט הוא workload זעיר. הוא בעיקר יושב בטל ומחכה להודעות, אז הארגז הזול ביותר מריץ אותו בסדר — ללא IP ייעודי, ללא דומיין, שום דבר מפואר.
1. השיגו טוקן מ-BotFather
ב-Telegram, שלחו הודעה ל-@BotFather, שלחו /newbot, בחרו שם ושם משתמש. הוא מוסר לכם טוקן שנראה כמו 12345:AAH.... התייחסו אליו כמו סיסמה — לכל מי שיש אותו שולט בבוט שלכם.
2. בוט מינימלי
התחברו ב-SSH לשרת, הגדירו את Python והספרייה:
sudo apt update && sudo apt install -y python3-venv
mkdir ~/mybot && cd ~/mybot
python3 -m venv venv && source venv/bin/activate
pip install python-telegram-bot
בוט שמגיב — ~/mybot/bot.py:
import os
from telegram.ext import ApplicationBuilder, CommandHandler
async def start(update, ctx):
await update.message.reply_text("Alive and on a server. 🟢")
app = ApplicationBuilder().token(os.environ["BOT_TOKEN"]).build()
app.add_handler(CommandHandler("start", start))
app.run_polling()
שימו לב שהוא קורא את הטוקן ממשתנה סביבה — לא מקודד-קשיח. זה חשוב בצעד הבא.
3. החלק שבאמת שומר אותו רץ: systemd
אם אתם פשוט מריצים python bot.py, הוא מת ברגע שאתם סוגרים את SSH. שירות systemd הוא מה שגורם לו לשרוד התנתקות, קריסות, ואתחולים. צרו /etc/systemd/system/mybot.service:
[Unit]
Description=Telegram bot
After=network-online.target
[Service]
WorkingDirectory=/home/youruser/mybot
Environment=BOT_TOKEN=12345:AAH...your-token
ExecStart=/home/youruser/mybot/venv/bin/python bot.py
Restart=always
RestartSec=5
User=youruser
[Install]
WantedBy=multi-user.target
ואז:
sudo systemctl daemon-reload
sudo systemctl enable --now mybot
sudo systemctl status mybot # should say active (running)
journalctl -u mybot -f # live logs
Restart=always היא השורה שעושה את העבודה האמיתית — קריסה, והוא חוזר תוך 5 שניות. enable אומר שהוא עולה אחרי אתחול. זה כל ההבדל בין "הרצתי בוט פעם אחת" ל"הבוט שלי למעלה."
4. למה ללא דומיין או פורטים פתוחים
הבוט משתמש ב-long polling — הוא פונה החוצה ל-Telegram לעדכונים, אז שום דבר לא צריך להגיע פנימה. ללא URL ציבורי, ללא כלל חומת אש נכנס, ללא IP ייעודי. זו בדיוק הסיבה ש-NAT VPS (IP משותף, SSH על פורט) הוא בית בסדר וזול לבוט. webhooks קיימים לנפח גבוה מאוד, אבל אתם כמעט בוודאי לא צריכים אותם כדי להתחיל.
הסתייגויות כנות
- היגיינת טוקן: כאן הוא inline בקובץ ה-unit לבהירות — בסדר על ארגז נעול, אבל לכל דבר משותף, טענו אותו מ-
EnvironmentFileשהוא root-בלבד במקום, ולעולם אל תכניסו אותו ל-git. דלף? בטלו ב-BotFather, הנפיקו חדש. - בוטים כבדים: אם הבוט שלכם עושה את העבודה בעצמו (יצירת תמונות, מודל מקומי), הוא כבר לא זעיר — עלו בגודל בהתאם.
זהו. נעלו את הארגז קודם עם רשימת התיוג לאבטחה, הכניסו את השירות, והבוט שלכם נשאר מקוון בין אם אתם ובין אם לא. על VPS משולם-קריפטו אתם יכולים שהוא ירוץ דקה אחרי שאתם מחליטים.
תגובות
אין עדיין תגובות. היו הראשונים.