Pendahuluan
Bot Telegram merupakan salah satu solusi otomatisasi yang banyak digunakan, mulai dari layanan pelanggan, sistem notifikasi, hingga integrasi aplikasi internal. Dalam pengembangannya, terdapat dua metode utama untuk menerima pesan dari Telegram, yaitu polling dan webhook.
Bagi pengembang yang ingin menjalankan bot secara stabil di server seperti Rocky Linux 10, pemilihan metode yang tepat menjadi sangat penting. Artikel ini akan membahas apa itu polling dan webhook, perbedaannya, serta alasan mengapa webhook lebih direkomendasikan untuk lingkungan server dan produksi.
Apa Itu Polling pada Bot Telegram
Polling adalah metode di mana bot secara aktif dan berkala meminta data ke server Telegram menggunakan API getUpdates.
- Bot mengecek pesan secara terus-menerus (misalnya setiap 1–2 detik)
- Tidak memerlukan domain atau SSL
- Umumnya digunakan saat pengembangan lokal atau uji coba
- Bot mengirim permintaan ke server Telegram
- Telegram mengembalikan pesan (jika ada)
- Bot memproses pesan
- Bot mengulangi proses dari awal
Metode ini sederhana, tetapi memiliki keterbatasan ketika digunakan di server produksi.
Apa Itu Webhook pada Bot Telegram
Webhook adalah metode di mana Telegram akan mengirimkan pesan secara langsung ke server bot melalui URL HTTPS yang telah didaftarkan.
- Bot tidak perlu mengecek pesan secara berkala
- Telegram akan mengirim data hanya saat ada pesan
- Membutuhkan domain dan SSL aktif
- Lebih efisien dan profesional
- Pengguna mengirim pesan ke bot
- Telegram langsung mengirim data ke URL webhook
- Server bot menerima dan memproses pesan
Dengan webhook, bot bersifat event-driven, bukan request-driven seperti polling.
Mengapa Penting Menggunakan Webhook di Server
Penggunaan webhook sangat disarankan ketika bot dijalankan di server seperti Rocky Linux karena:
- Tidak ada loop permintaan terus-menerus
- CPU dan RAM server lebih efisien
- Pesan diterima secara real-time
- Tidak bergantung pada interval polling
- Cocok untuk bot yang aktif 24/7
- Minim risiko timeout atau API limit
- Digunakan pada sistem skala menengah hingga besar
- Cocok untuk integrasi dengan reverse proxy seperti Caddy atau Nginx
Perbedaan polling dan webhook
| Aspek | Polling | Webhook |
|---|---|---|
| Cara kerja | Bot meminta data berkala | Telegram mengirim data |
| Kebutuhan SSL | Tidak wajib | Wajib |
| Penggunaan server | Boros | Efisien |
| Kecepatan respon | Tergantung interval | Real-time |
| Cocok untuk | Development / lokal | Produksi |
| Kompleksitas | Sederhana | Lebih profesional |
Langkah-langkah instalasi
- Webserver -> caddy
- NodeJS -> npm, pm2
- Python3 -> pip, pytelegrambotapi, flask, gunicorn, cryptography, openpyxl, pandas, speedtest-cli
- Menulis script
- Instal web server -> caddy
- Menjalankan script
1. Web Server
1. Lakukan update:
sudo dnf update -y
2. Instal plugin dnf:
sudo dnf install dnf-plugins-core -y
3. Aktifkan repository COPR resmi caddy pada sistem berbasis RHEL, termasuk Rocky Linux:
sudo dnf copr enable @caddy/caddy -y
4. Instal caddy:
sudo dnf install caddy -y
5. Ubah konfigurasi default Caddy , file terletak di /etc/caddy/Caddyfile:
sudo nano /etc/caddy/Caddyfile
bot.masyarakat.id {
encode gzip
root * /usr/share/caddy
file_server
reverse_proxy /quran 127.0.0.1:8041
reverse_proxy /hadis 127.0.0.1:8042
}
6. Simpan konfigurasi:
ctrl + o
enter
ctrl + x
7. Jalankan caddy:
sudo systemctl start caddy
sudo systemctl enable caddy
8. Instal firewalld:
sudo dnf install firewalld -y
9. Aktifkan firewalld:
sudo systemctl start firewalld
sudo systemctl enable firewalld
10. Buka akses HTTP dan HTTPS pada firewall (firewalld) di Rocky Linux, agar server dapat menerima koneksi dari luar:
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
11. Melalui browser, kunjungi domain/subdomain Anda:
https://bot.masyarakat.id
2. NodeJS
1. Instal curl:
sudo dnf install curl -y
2. Download nodejs:
curl -fsSL https://rpm.nodesource.com/setup_24.x | sudo bash -
3. Instal nodejs:
sudo dnf install nodejs -y
4. Perbarui npm:
sudo npm install -g npm@latest
5. Instal pm2:
sudo npm install -g pm2
3. Python
1. Instal pip:
sudo dnf install python3-pip -y
2. Buat folder baru bot:
mkdir ~/bot
~/bot berbeda dengan /bot
/bot = folder di root sistem (butuh akses root)
~/bot = folder milik user (aman & disarankan)
3. Buka folder bot:
cd ~/bot
4. Buat folder baru quran dan hadis:
mkdir quran hadis
bot
├── quran
│ ├── quran.py
│ └── quran.db
└── hadis
├── hadis.py
└── hadis.db
5. Buat virtual environment atau venv:
python3 -m venv venv
bot
├── venv
├── quran
│ ├── quran.py
│ └── quran.db
└── hadis
├── hadis.py
└── hadis.db
6. Aktifkan venv:
source venv/bin/activate
7. Perbarui pip:
pip install --upgrade pip
8. Instal semua library yang dibutuhkan bot:
pip install pytelegrambotapi openpyxl flask gunicorn
9. Non-aktifkan venv:
deactivate
4. Menulis script
1. Buka folder bot:
cd ~/bot
2. Buat file quran.py dan hadis.py lalu tempatkan pada folder masing-masing
Contoh script polling
from telebot import TeleBot, types
# Ganti dengan token bot Anda
TOKEN = "ISI_TOKEN_BOT_ANDA"
bot = TeleBot(TOKEN)
# Handler untuk /start
@bot.message_handler(commands=['start'])
def send_welcome(message):
markup = types.ReplyKeyboardMarkup(resize_keyboard=True, one_time_keyboard=False)
markup.add('Daftar Surah', 'Jadwal Salat')
markup.add('Bantuan Kami', 'Hubungi Kami')
markup.add('Donasi', 'Hadis')
bot.send_message(message.chat.id, f'Assalamu Alaikum, {message.from_user.first_name}')
bot.send_message(message.chat.id, f"Silakan ketik kata yang ingin Anda cari atau gunakan format nomorSurah:nomorAyat untuk melakukan pencarian langsung", reply_markup=markup)
# Bot aktif
print('Bot sudah aktif')
# Polling
bot.polling()
Contoh script webhook quran.py:
from telebot import TeleBot, types
# Ganti dengan token bot Anda
TOKEN = "ISI_TOKEN_BOT_ANDA"
bot = TeleBot(TOKEN)
# Handler untuk /start
@bot.message_handler(commands=['start'])
def send_welcome(message):
markup = types.ReplyKeyboardMarkup(resize_keyboard=True, one_time_keyboard=False)
markup.add('Daftar Surah', 'Jadwal Salat')
markup.add('Bantuan Kami', 'Hubungi Kami')
markup.add('Donasi', 'Hadis')
bot.send_message(message.chat.id, f'Assalamu Alaikum, {message.from_user.first_name}')
bot.send_message(message.chat.id, f"Selamat datang di bot Al-Qur'an Indonesia", reply_markup=markup)
# Webhook
app = Flask(__name__)
@app.route('/quran', methods=['POST'])
def webhook():
json_str = request.get_data().decode('UTF-8')
update = telebot.types.Update.de_json(json_str)
bot.process_new_updates([update])
return 'OK', 200
@app.route('/quran', methods=['GET'])
def index():
return 'Bot Masyarakat sudah aktif', 200
if __name__ == '__main__':
bot.remove_webhook()
bot.set_webhook(url='https://bot.masyarakat.id/quran')
Contoh script webhook hadis.py:
from telebot import TeleBot, types
# Ganti dengan token bot Anda
TOKEN = "ISI_TOKEN_BOT_ANDA"
bot = TeleBot(TOKEN)
# Handler untuk /start
@bot.message_handler(commands=['start'])
def send_welcome(message):
markup = types.ReplyKeyboardMarkup(resize_keyboard=True, one_time_keyboard=False)
markup.add('Daftar Surah', 'Jadwal Salat')
markup.add('Bantuan Kami', 'Hubungi Kami')
markup.add('Donasi', 'Hadis')
bot.send_message(message.chat.id, f'Assalamu Alaikum, {message.from_user.first_name}')
bot.send_message(message.chat.id, f"Selamat datang di bot Hadis Indonesia", reply_markup=markup)
# Webhook
app = Flask(__name__)
@app.route('/hadis', methods=['POST'])
def webhook():
json_str = request.get_data().decode('UTF-8')
update = telebot.types.Update.de_json(json_str)
bot.process_new_updates([update])
return 'OK', 200
@app.route('/hadis', methods=['GET'])
def index():
return 'Bot Masyarakat sudah aktif', 200
if __name__ == '__main__':
bot.remove_webhook()
bot.set_webhook(url='https://bot.masyarakat.id/hadis')
3. Kembali ke home:
cd
4. Buat file baru ecosystem.config.js:
module.exports = {
apps: [
{
name: "quran",
script: "/home/namauser/bot/venv/bin/gunicorn",
args: "-w 2 -b 127.0.0.1:8041 quran:app",
cwd: "/home/namauser/bot/quran",
exec_mode: "fork",
interpreter: "none",
autorestart: true,
watch: false,
max_memory_restart: "300M",
env: {
pythonpath: "/home/namauser/bot/quran"
}
},
{
name: "hadis",
script: "/home/namauser/bot/venv/bin/gunicorn",
args: "-w 2 -b 127.0.0.1:8042 hadis:app",
cwd: "/home/namauser/bot/hadis",
exec_mode: "fork",
interpreter: "none",
autorestart: true,
watch: false,
max_memory_restart: "300M",
env: {
pythonpath: "/home/namauser/bot/hadis"
}
}
]
}
5. Struktur folder Anda:
/home/namauser/
└── ecosystem.config.js
└── bot/
├── venv/
│ └── bin/
│ ├── python
│ ├── pip
│ ├── flask
│ └── gunicorn
│
├── quran/
│ ├── quran.py
│ └── quran.db
│
└── hadis/
├── hadis.py
└── hadis.db
6. Jalankan pm2:
pm2 start ecosystem.config.js
7. Aktifkan fungsi agar pm2 menjalankan bot setelah server restart:
pm2 startup
8. Salin dan tempelkan kembali teks yang ditampilkan, seperti:
sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u namauser --hp /home/namauser
9. Simpan konfigurasi pm2:
pm2 save
10. Restart bot yang dijalankan pm2jika ada perubahan script:
pm2 restart id
Atau:
pm2 restart name
11. Delete webhook:
https://api.telegram.org/botTOKEN-ANDA/deletewebhook
12. Aktifkan webhook:
https://api.telegram.org/botTOKEN-ANDA/setwebhook?url=https://DOMAIN_ANDA.com
13. Lihat status webhook:
https://api.telegram.org/botTOKEN-ANDA/getwebhookinfo
Kesimpulan
Polling dan webhook sama-sama dapat digunakan untuk menjalankan bot Telegram, namun memiliki tujuan yang berbeda. Polling cocok untuk tahap pengembangan dan pengujian, sedangkan webhook merupakan pilihan terbaik untuk server produksi seperti Rocky Linux 10.
Dengan menggunakan webhook, bot menjadi lebih efisien, stabil, dan sesuai dengan standar deployment modern. Oleh karena itu, jika Anda ingin menjalankan bot Telegram secara profesional dan jangka panjang, webhook adalah metode yang sangat direkomendasikan.
Baca Juga
12/06/2026
Antara Python atau NodeJS Untuk Membuat Bot Telegram
Bingung memilih antara Python atau Node.js untuk membuat bot Telegram? Simak perbandingan…
0 komentar3 menit baca
02/06/2026
Membangun Bot Telegram CRUD dengan NodeJS dan Telegraf Dari Nol Sampai Jalan
Dengan memahami CRUD lewat bot Telegram, Anda dapat membuat database sederhana yang mendukung…
0 komentar15 menit baca
05/01/2026
Mengenal Root dan Non Root di Server Linux
Memahami fungsi user root dan non-root pada Linux, perbedaan hak akses, risiko keamanan, serta…
0 komentar4 menit baca
04/01/2026
Menjalankan Bot Telegram Python Menggunakan Metode Webhook di Rocky Linux 10
Panduan menjalankan bot Telegram di Rocky Linux 10 agar tetap aktif 24/7. Pembahasan kami…
0 komentar5 menit baca
03/01/2026
Panduan Lengkap Menginstal Ghost di Ubuntu
Cara instal Ghost CMS di server Ubuntu 22.04 atau Ubuntu 24.04 lengkap dengan Nginx, SSL, MySQL dan…
0 komentar4 menit baca
30/12/2025
Memasang WordPress di Rocky Linux 10
Panduan lengkap pemasangan WordPress di Rocky Linux. Membahas instalasi Apache, MariaDB, PHP,…
0 komentar6 menit baca
25/12/2025
Menjalankan Bot Telegram Metode Polling di Ubuntu 24
Panduan lengkap menjalankan bot Telegram non-stop di server Ubuntu 24.04 LTS, mulai dari konsep,…
0 komentar7 menit baca
14/12/2025
Memasang WordPress di Ubuntu 24
Memasang Wordpress di Ubuntu 24 dapat Anda lakukan dengan mudah menggunakan kombinasi Nginx, PHP,…
0 komentar4 menit baca
11/12/2025
Menambahkan Keamanan Pada Server Rocky Linux
Keamanan server sangat penting untuk melindungi data, mencegah akses tidak sah, dan menjaga…
0 komentar2 menit baca
09/12/2025
Panduan Lengkap Cara Memasang dan Konfigurasi Caddy di Rocky Linux 10 Sebagai Web Server
Caddy adalah web server yang semakin populer berkat kemudahan dalam pengaturan SSL otomatis dan…
0 komentar2 menit baca
