Pendahuluan
Pada artikel kami sebelumnya, yaitu Menambahkan Fitur Membaca Data dari File JSON Menggunakan Python pada Bot Telegram, memiliki fitur pencarian data tunggal. Pada artikel ini kami akan memberikan fitur pencarian data masal pada file json menggunakan python dan library pyTelegramBotApi.
Persiapan
1. Buka aplikasi Telegram Anda, jika Anda belum memiliki akun Telegram, silahkan Membuat Akun Bot Telegram lalu hubungkan ke VPS Anda atau silakan baca artikel kami Mempersiapkan VPS sebagai Hosting untuk Bot Telegram
2. Lakukan update VPS Anda:
apt update
3. Lakukan upgrade VPS Anda:
apt upgrade -y
4. Pasang pip:
apt install python3-pip -y
5. Pasang pyTelegramBotApi:
pip install pyTelegramBotApi
6. Unduh nodejs versi 22:
curl -sL https://deb.nodesource.com/setup_22.x | sudo -E bash -
7. Pasang nodejs:
apt install nodejs
8. Perbarui npm:
npm install -g npm@latest
9. Pasang pm2:
npm install -g pm2
10. Siapkan file quran.json. Pada kode berikut, kami mencontohkan Surah Al-Fatihah:
[
{
"ID": "1:1",
"Surah": "1. Al-Fatihah",
"Terjemah": "1. Dengan nama Allah Yang Maha Pengasih, Maha Penyayang."
},
{
"ID": "1:2",
"Surah": "1. Al-Fatihah",
"Terjemah": "2. Segala puji bagi Allah, Tuhan seluruh alam."
},
{
"ID": "1:3",
"Surah": "1. Al-Fatihah",
"Terjemah": "3. Yang Maha Pengasih, Maha Penyayang."
},
{
"ID": "1:4",
"Surah": "1. Al-Fatihah",
"Terjemah": "4. Pemilik hari pembalasan.*(1)"
},
{
"ID": "1:5",
"Surah": "1. Al-Fatihah",
"Terjemah": "5. Hanya kepada Engkaulah kami menyembah dan hanya kepada Engkaulah kami mohon pertolongan."
},
{
"ID": "1:6",
"Surah": "1. Al-Fatihah",
"Terjemah": "6. Tunjukilah kami jalan yang lurus.*(2)"
},
{
"ID": "1:7",
"Surah": "1. Al-Fatihah",
"Terjemah": "7. (Yaitu) jalan orang-orang yang telah Engkau beri nikmat kepadanya; bukan (jalan) mereka yang dimurkai, dan bukan (pula jalan) mereka yang sesat.*(3)"
}
]
11. Buat file python baru, misalnya main.py dan tuliskan kode berikut:
from telebot import *
from telebot import types
import json
TOKEN = 'TOKEN_API' # Ganti dengan TOKEN_API Anda
bot = telebot.TeleBot(TOKEN)
# Ambil data dari quran.json
with open('quran.json', 'r') as file:
data = json.load(file)
def search_in_quran(word, page=1, page_size=5):
"""Fungsi pencarian dalam Al-Quran"""
results = []
for item in data:
if word.lower() in item['Surah'].lower() or word.lower() in item['Terjemah'].lower():
results.append(item)
start = (page - 1) * page_size
end = start + page_size
return results[start:end], len(results)
@bot.message_handler(commands=['start'])
def send_welcome(message):
"""Handler untuk perintah /start"""
bot.send_message(
message.chat.id,
f'Assalamu Alaikum, {message.from_user.first_name}'
)
bot.send_message(
message.chat.id,
"Silakan ketik kata yang ingin Anda cari?"
)
@bot.message_handler(func=lambda message: True)
def echo_all(message):
"""Handler untuk pesan teks yang menerima input dari pengguna"""
word = message.text
page = 1
page_size = 5
results, total_results = search_in_quran(word, page, page_size)
if results:
wait_message = bot.send_message(
message.chat.id,
f'{message.from_user.first_name}, mohon tunggu ...'
)
response = (
f"Ditemukan {total_results} hasil untuk '{word}'\n\n"
f"Halaman: {page} dari {int((total_results - 1) / page_size) + 1}\n\n"
)
for i, result in enumerate(results, start=(page - 1) * page_size + 1):
response += (
f"{i}. Surah: {result['Surah']}\n"
f"Ayat: {result['Terjemah']}\n\n"
)
markup = types.InlineKeyboardMarkup()
buttons = []
if page > 1:
prev_page_button = types.InlineKeyboardButton(
text="Sebelumnya",
callback_data=f"prev_{word}_{page - 1}"
)
buttons.append(prev_page_button)
if page * page_size < total_results:
next_page_button = types.InlineKeyboardButton(
text="Selanjutnya",
callback_data=f"next_{word}_{page + 1}"
)
buttons.append(next_page_button)
markup.row(*buttons)
bot.send_chat_action(chat_id=message.chat.id, action="typing")
bot.delete_message(wait_message.chat.id, wait_message.message_id)
bot.send_message(
message.chat.id,
response,
reply_markup=markup,
parse_mode="HTML"
)
else:
bot.send_message(
message.chat.id,
f"Mohon maaf, kami tidak dapat menemukan kata '{word}'. "
"Silakan coba kembali menggunakan kata yang berbeda.\n\n"
"Gunakanlah kata baku sesuai Kamus Besar Bahasa Indonesia (KBBI) "
"untuk memudahkan Anda menemukan kata yang Anda cari.",
parse_mode="HTML"
)
@bot.callback_query_handler(func=lambda call: call.data.startswith('prev_'))
def handle_prev_query(call):
"""Handler untuk tombol paginasi 'Sebelumnya'"""
_, word, page = call.data.split('_')
page = int(page)
page_size = 5
results, total_results = search_in_quran(word, page, page_size)
response = (
f"Ditemukan {total_results} hasil untuk '{word}'\n\n"
f"Halaman: {page} dari {int((total_results - 1) / page_size) + 1}\n\n"
)
for i, result in enumerate(results, start=(page - 1) * page_size + 1):
response += (
f"{i}. Surah: {result['Surah']}\n"
f"Ayat: {result['Terjemah']}\n\n"
)
markup = types.InlineKeyboardMarkup()
buttons = []
if page > 1:
prev_page_button = types.InlineKeyboardButton(
text="Sebelumnya",
callback_data=f"prev_{word}_{page - 1}"
)
buttons.append(prev_page_button)
if page * page_size < total_results:
next_page_button = types.InlineKeyboardButton(
text="Selanjutnya",
callback_data=f"next_{word}_{page + 1}"
)
buttons.append(next_page_button)
markup.row(*buttons)
bot.edit_message_text(
chat_id=call.message.chat.id,
message_id=call.message.message_id,
text=response,
reply_markup=markup,
parse_mode="HTML"
)
@bot.callback_query_handler(func=lambda call: call.data.startswith('next_'))
def handle_next_query(call):
"""Handler untuk tombol paginasi 'Selanjutnya'"""
_, word, page = call.data.split('_')
page = int(page)
page_size = 5
results, total_results = search_in_quran(word, page, page_size)
response = (
f"Ditemukan {total_results} hasil untuk '{word}'\n\n"
f"Halaman: {page} dari {int((total_results - 1) / page_size) + 1}\n\n"
)
for i, result in enumerate(results, start=(page - 1) * page_size + 1):
response += (
f"{i}. Surah: {result['Surah']}\n"
f"Ayat: {result['Terjemah']}\n\n"
)
markup = types.InlineKeyboardMarkup()
buttons = []
if page > 1:
prev_page_button = types.InlineKeyboardButton(
text="Sebelumnya",
callback_data=f"prev_{word}_{page - 1}"
)
buttons.append(prev_page_button)
if page * page_size < total_results:
next_page_button = types.InlineKeyboardButton(
text="Selanjutnya",
callback_data=f"next_{word}_{page + 1}"
)
buttons.append(next_page_button)
markup.row(*buttons)
bot.edit_message_text(
chat_id=call.message.chat.id,
message_id=call.message.message_id,
text=response,
reply_markup=markup,
parse_mode="HTML"
)
if __name__ == "__main__":
print('Bot sudah aktif')
bot.polling()
12. Unggah main.py dan quran.json dalam folder root atau folder yang sama menggunakan aplikasi SSH yang Anda gunakan. Berikut contoh strukturnya:
root/
├── main.py
└── quran.json
13. Jalankan kode bot Telegram Anda:
python3 main.py
14. Jika tidak ada kesalahan pada kode Anda, silakan putuskan koneksi ke VPS Anda
15. Hubungkan kembali ke VPS Anda
16. Jalankan kode bot Telegram Anda menggunakan pm2 agar bot selalu aktif 24 jam:
pm2 start main.py
pm2 startup
pm2 save
17. Setiap Anda melakukan perubahan kode pada file Anda, unggah kembali file ke VPS. Lalu, jalankan kembali kode Anda:
pm2 restart main
18. Untuk melihat kode yang dijalankan oleh pm2:
pm2 ls
Penutup
Anda dapat menambahkan fitur-fitur lain pada Bot Telegram Anda agar lebih menarik bagi pengguna Anda. Selain itu, Anda juga dapat memanfaatkan bot Anda sebagai asisten pribadi Anda.
Baca Juga
29/06/2026
Mengenal Perintah-Perintah Pada Debian atau Ubuntu
Panduan praktis mengenai perintah dasar berbasis CLI (Command Line Interface) untuk mengelola VPS…
0 komentar6 menit baca
29/06/2026
Memasang WordPress dan Caddy Web Server di Debian 13
Memasang WordPress menggunakan Caddy Web Server di Debian 13. Cepat, ringan, dan cocok untuk pemula…
0 komentar9 menit baca
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
08/01/2026
Panduan Lengkap Menjalankan Bot Telegram NodeJS di Rocky Linux 10 Menggunakan Metode Webhook
Panduan lengkap menjalankan Bot Telegram di Rocky Linux 10 menggunakan metode webhook. Pembahasan…
0 komentar11 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
