Um bot do Telegram precisa estar rodando o tempo todo para responder às mensagens. Executá-lo no seu notebook significa que ele fica offline sempre que você fecha a tampa. Um VPS pequeno resolve isso por alguns dólares por mês. Este guia executa um bot em Python como um serviço systemd, para que ele inicie no boot e reinicie após uma falha.
Que tamanho de VPS?
A maioria dos bots é leve. Um plano com 1 a 2 vCPUs e 2 GB de RAM é mais que suficiente. Veja a hospedagem de bot do Telegram para os planos sugeridos.
Passo 1: obtenha um token de bot
Fale com o @BotFather no Telegram, envie /newbot, escolha um nome e um nome de usuário terminado em bot e copie o token. Trate-o como uma senha, porque qualquer pessoa com ele pode controlar o bot.
Passo 2: prepare o servidor
sudo apt update && sudo apt install -y python3 python3-venv
sudo adduser --disabled-password --gecos "" botuser
sudo -iu botuser
mkdir ~/mybot && cd ~/mybot
python3 -m venv .venv
. .venv/bin/activate
pip install python-telegram-bot
Passo 3: escreva um bot pequeno
# bot.py
import os
from telegram import Update
from telegram.ext import ApplicationBuilder, CommandHandler, ContextTypes
async def start(update: Update, ctx: ContextTypes.DEFAULT_TYPE):
await update.message.reply_text("Hello! I am running on a VPS.")
app = ApplicationBuilder().token(os.environ["BOT_TOKEN"]).build()
app.add_handler(CommandHandler("start", start))
app.run_polling()
O polling não precisa de portas abertas, então você não precisa configurar um domínio nem um webhook.
Passo 4: guarde o token com segurança
echo "BOT_TOKEN=123456:ABC..." > ~/mybot/.env
chmod 600 ~/mybot/.env
Passo 5: execute-o como serviço
De volta como usuário administrador, crie /etc/systemd/system/mybot.service:
[Unit]
Description=Telegram bot
After=network-online.target
[Service]
User=botuser
WorkingDirectory=/home/botuser/mybot
EnvironmentFile=/home/botuser/mybot/.env
ExecStart=/home/botuser/mybot/.venv/bin/python bot.py
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now mybot
sudo journalctl -u mybot -f
Atualizando e acompanhando
- Atualize o código e depois execute
sudo systemctl restart mybot. - Verifique os logs com
journalctl -u mybot -n 100. - Use backups se o bot armazenar dados.
Polling ou webhook?
O polling é o mais simples e serve para a maioria dos bots. Use um webhook se precisar de entrega instantânea em grande volume, o que exige um domínio e HTTPS. Veja hospedagem com Nginx e HTTPS.