Bot Telegram harus berjalan sepanjang waktu untuk menjawab pesan. Menjalankannya di laptop berarti bot offline setiap kali Anda menutup layar. VPS kecil mengatasinya dengan beberapa dolar per bulan. Panduan ini menjalankan bot Python sebagai layanan systemd sehingga mulai saat boot dan restart setelah crash.
Seberapa besar VPS?
Sebagian besar bot ringan. Paket dengan 1 hingga 2 vCPU dan RAM 2 GB sudah lebih dari cukup. Lihat hosting bot Telegram untuk paket yang disarankan.
Langkah 1: dapatkan token bot
Bicaralah dengan @BotFather di Telegram, kirim /newbot, pilih nama dan nama pengguna yang berakhiran bot, lalu salin token. Perlakukan seperti kata sandi, karena siapa pun yang memilikinya dapat mengendalikan bot.
Langkah 2: siapkan server
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
Langkah 3: tulis bot kecil
# 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()
Polling tidak memerlukan port terbuka, jadi Anda tidak perlu menyiapkan domain atau webhook.
Langkah 4: simpan token dengan aman
echo "BOT_TOKEN=123456:ABC..." > ~/mybot/.env
chmod 600 ~/mybot/.env
Langkah 5: jalankan sebagai layanan
Kembali sebagai pengguna admin, buat /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
Memperbarui dan memantaunya
- Perbarui kode, lalu
sudo systemctl restart mybot. - Periksa log dengan
journalctl -u mybot -n 100. - Gunakan cadangan jika bot menyimpan data.
Polling atau webhook?
Polling paling sederhana dan cukup untuk sebagian besar bot. Gunakan webhook jika Anda memerlukan pengiriman instan pada volume tinggi, yang memerlukan domain dan HTTPS. Lihat hosting dengan Nginx dan HTTPS.