Telegram бот, който работи само докато лаптопът ти е отворен, не работи реално — той демонстрира. За да е наистина онлайн, отговаряйки в 3 сутринта, преживявайки рестартите ти и собствените си сривове, той трябва да живее на сървър. Ето целия път, от начало до край, с командите.
Добрата новина първо: бот е мъничко натоварване. Основно стои бездеен в очакване на съобщения, така че най-евтината машина го пуска добре — без dedicated IP, без домейн, нищо фантазийно.
1. Вземи токен от BotFather
В Telegram пиши на @BotFather, изпрати /newbot, избери име и username. Той ти дава токен, който изглежда като 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()
Забележи, че чете токена от environment променлива — не кодиран твърдо. Това има значение в следващата стъпка.
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 # трябва да казва active (running)
journalctl -u mybot -f # логове на живо
Restart=always е редът, който върши реалната работа — срине се, и е обратно за 5 секунди. enable значи, че се вдига след рестарт. Това е цялата разлика между „пуснах бот веднъж“ и „ботът ми е онлайн“.
4. Защо няма домейн или отворени портове
Ботът използва long polling — той достига навън към Telegram за ъпдейти, така че нищо не се нуждае да достигне навътре. Без публичен URL, без входящо firewall правило, без dedicated IP. Точно затова NAT VPS (споделен IP, SSH на порт) е добър и евтин дом за бот. Webhook-овете съществуват за много голям обем, но почти сигурно не се нуждаеш от тях, за да започнеш.
Честни забележки
- Хигиена на токена: тук той е inline в unit файла за яснота — наред на заключена машина, но за нещо споделено, зареди го от
EnvironmentFileсамо за root вместо това, и никога не го commit-вай в git. Изтекъл? Отмени в BotFather, издай нов. - Тежки ботове: ако ботът ти върши работата сам (генериране на изображения, локален модел), той вече не е мъничък — покачи размера съответно.
Това е. Заключи първо машината с checklist за сигурност, пусни услугата и ботът ти остава онлайн, независимо дали ти си. На платен с crypto VPS можеш да го имаш работещ минута след като решиш.
Коментари
Още няма коментари. Бъди първият.