Ένα Telegram bot που τρέχει μόνο όσο το laptop σας είναι ανοιχτό δεν τρέχει πραγματικά — κάνει demo. Για να είναι πραγματικά online, να απαντά στις 3 π.μ., να επιβιώνει από τις επανεκκινήσεις σας και τα δικά του crashes, πρέπει να ζει σε έναν server. Ιδού όλη η διαδρομή, από την αρχή ως το τέλος, με τις εντολές.
Πρώτα τα καλά νέα: ένα bot είναι ένα μικροσκοπικό φορτίο. Κυρίως κάθεται αδρανές περιμένοντας μηνύματα, οπότε το φθηνότερο box το τρέχει μια χαρά — χωρίς αποκλειστικό IP, χωρίς domain, τίποτα φανταχτερό.
1. Πάρτε ένα token από το BotFather
Στο Telegram, στείλτε μήνυμα στο @BotFather, στείλτε /newbot, επιλέξτε ένα όνομα και username. Σας δίνει ένα token που μοιάζει με 12345:AAH.... Αντιμετωπίστε το σαν κωδικό — οποιοσδήποτε το έχει ελέγχει το bot σας.
2. Ένα minimal bot
Συνδεθείτε με SSH στον server, στήστε 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
Ένα 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()
Σημειώστε ότι διαβάζει το token από ένα environment variable — όχι hardcoded. Αυτό μετρά στο επόμενο βήμα.
3. Το μέρος που πραγματικά το κρατά σε λειτουργία: systemd
Αν απλώς τρέξετε python bot.py, πεθαίνει τη στιγμή που κλείνετε το SSH. Ένα systemd service είναι αυτό που το κάνει να επιβιώνει αποσύνδεσης, crashes, και επανεκκινήσεων. Δημιουργήστε το /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 είναι η γραμμή που κάνει την πραγματική δουλειά — crash, και επιστρέφει σε 5 δευτερόλεπτα. Το enable σημαίνει ότι ανεβαίνει μετά από επανεκκίνηση. Αυτή είναι όλη η διαφορά μεταξύ «έτρεξα ένα bot μια φορά» και «το bot μου είναι ενεργό».
4. Γιατί χωρίς domain ή ανοιχτά ports
Το bot χρησιμοποιεί long polling — καλεί προς τα έξω το Telegram για ενημερώσεις, οπότε τίποτα δεν χρειάζεται να φτάσει προς τα μέσα. Χωρίς δημόσιο URL, χωρίς εισερχόμενο κανόνα firewall, χωρίς αποκλειστικό IP. Γι' αυτό ακριβώς ένα NAT VPS (κοινόχρηστο IP, SSH σε ένα port) είναι ένα καλό και φθηνό σπίτι για ένα bot. Τα webhooks υπάρχουν για πολύ μεγάλο όγκο, αλλά σχεδόν σίγουρα δεν τα χρειάζεστε για να ξεκινήσετε.
Έντιμες επιφυλάξεις
- Υγιεινή token: εδώ είναι inline στο unit file για σαφήνεια — εντάξει σε ένα κλειδωμένο box, αλλά για οτιδήποτε κοινόχρηστο, φορτώστε το από ένα root-only
EnvironmentFileαντ' αυτού, και ποτέ μην το commit-άρετε στο git. Διέρρευσε; Ανακαλέστε στο BotFather, εκδώστε νέο. - Βαριά bots: αν το bot σας κάνει τη δουλειά μόνο του (δημιουργία εικόνων, τοπικό μοντέλο), δεν είναι πλέον μικροσκοπικό — ανεβείτε ανάλογα.
Αυτό είναι. Κλειδώστε το box πρώτα με την checklist ασφαλείας, ρίξτε το service μέσα, και το bot σας μένει online είτε είστε εσείς είτε όχι. Σε ένα crypto-paid VPS μπορείτε να το έχετε σε λειτουργία ένα λεπτό αφού αποφασίσετε.
Σχόλια
Δεν υπάρχουν ακόμη σχόλια. Γίνετε ο πρώτος.