Bot Telegram yang hanya berjalan saat laptop Anda terbuka tidak benar-benar berjalan — ia sedang demo. Agar benar-benar online, menjawab jam 3 pagi, bertahan dari reboot Anda dan crash-nya sendiri, ia perlu hidup di server. Berikut seluruh jalannya, dari awal hingga akhir, dengan perintahnya.
Kabar baik dulu: bot adalah beban kerja mungil. Ia kebanyakan duduk menganggur menunggu pesan, jadi mesin termurah menjalankannya baik — tanpa IP khusus, tanpa domain, tanpa yang mewah.
1. Dapatkan token dari BotFather
Di Telegram, kirim pesan ke @BotFather, kirim /newbot, pilih nama dan username. Ia menyerahkan token yang terlihat seperti 12345:AAH.... Perlakukan seperti kata sandi — siapa pun yang memilikinya mengendalikan bot Anda.
2. Bot minimal
SSH ke server, siapkan Python dan pustakanya:
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 yang membalas — ~/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()
Perhatikan ia membaca token dari variabel lingkungan — bukan di-hardcode. Itu penting di langkah berikutnya.
3. Bagian yang sebenarnya menjaganya berjalan: systemd
Jika Anda hanya menjalankan python bot.py, ia mati begitu Anda menutup SSH. Layanan systemd adalah yang membuatnya bertahan dari keluar, crash, dan reboot. Buat /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
Lalu:
sudo systemctl daemon-reload
sudo systemctl enable --now mybot
sudo systemctl status mybot # seharusnya menyatakan active (running)
journalctl -u mybot -f # log langsung
Restart=always adalah baris yang melakukan kerja sebenarnya — crash, dan ia kembali dalam 5 detik. enable berarti ia menyala setelah reboot. Itulah seluruh perbedaan antara "saya menjalankan bot sekali" dan "bot saya menyala".
4. Mengapa tanpa domain atau port terbuka
Bot memakai long polling — ia menjangkau ke Telegram untuk pembaruan, jadi tidak ada yang perlu menjangkau masuk. Tanpa URL publik, tanpa aturan firewall masuk, tanpa IP khusus. Inilah persis mengapa VPS NAT (IP bersama, SSH di sebuah port) adalah rumah yang baik dan murah untuk bot. Webhook ada untuk volume sangat tinggi, tapi Anda hampir pasti tidak membutuhkannya untuk mulai.
Peringatan jujur
- Higiene token: di sini ia inline di berkas unit demi kejelasan — baik pada mesin yang terkunci, tapi untuk apa pun yang dibagikan, muat dari
EnvironmentFilekhusus-root saja, dan jangan pernah commit ke git. Bocor? Cabut di BotFather, terbitkan yang baru. - Bot berat: jika bot Anda melakukan kerjanya sendiri (pembuatan gambar, model lokal), ia tidak lagi mungil — naikkan ukuran sesuai.
Itu saja. Kunci mesinnya dulu dengan daftar periksa keamanan, masukkan layanannya, dan bot Anda tetap online entah Anda online atau tidak. Pada VPS dibayar-kripto Anda bisa membuatnya berjalan semenit setelah Anda memutuskan.
Komentar
Belum ada komentar. Jadilah yang pertama.