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 v.18:
curl -sL https://deb.nodesource.com/setup_18.x | sudo -E bash
7. Pasang nodejs v.18:
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)
# Fungsi pencarian
def search_in_quran(word, page=1, page_size=5):
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)
# Handler untuk perintah /start
@bot.message_handler(commands=['start'])
def send_welcome(message):
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?")
# Handler untuk pesan teks yang menerima input dari pengguna
@bot.message_handler(func=lambda message: True)
def echo_all(message):
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\nHalaman: {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']}\nAyat: {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\nGunakanlah kata baku sesuai Kamus Besar Bahasa Indonesia (KBBI) untuk memudahkan Anda menemukan kata yang Anda cari.", parse_mode="HTML")
# Handler untuk tombol paginasi "Sebelumnya"
@bot.callback_query_handler(func=lambda call: call.data.startswith('prev_'))
def handle_prev_query(call):
_, 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\nHalaman: {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']}\nAyat: {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")
# Handler untuk tombol paginasi "Selanjutnya"
@bot.callback_query_handler(func=lambda call: call.data.startswith('next_'))
def handle_next_query(call):
_, 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\nHalaman: {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']}\nAyat: {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 aktif
print('Bot sudah aktif')
# Polling
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.
Bagikan
Baca Juga
10/10/2024
Menambahkan Fitur Membaca Data dari File JSON Menggunakan Python pada Bot Telegram
Bot Telegram dapat dikembangkan dengan fungsi-fungsi yang menarik. Anda dapat menggunakan data yang…
0 komentar3 menit baca
04/10/2024
Membuat Bot Telegram Menggunakan NodeJS yang Terintegrasi Dengan Gemini AI
Anda dapat dengan mudah membuat bot Telegram menggunakan NodeJS yang terintegrasi dengan Gemini AI
0 komentar4 menit baca
26/09/2024
Pembuatan Bot Telegram Menggunakan Google Apps Script
Dengan menggunakan Apps Script, kita dapat membuat bot Telegram dengan gratis dan terkoneksi dengan…
0 komentar4 menit baca
21/09/2024
Membuat Akun Bot Telegram
Telegram merupakan aplikasi pesan instan yang sangat populer dan mendukung berbagai fitur canggih,…
0 komentar2 menit baca
19/09/2024
Mempersiapkan VPS sebagai Hosting untuk Bot Telegram
VPS menawarkan performa yang lebih baik dan fleksibilitas dibandingkan hosting bersama (shared…
0 komentar4 menit baca
15/09/2024
Tips Memilih VPS yang Tepat untuk Kebutuhan Anda
Memilih Virtual Private Server (VPS) yang tepat sangat penting untuk memastikan performa dan…
0 komentar2 menit baca
15/09/2024
Pentingnya Memiliki Bot Telegram Saat Ini
Dengan kemampuan otomatisasi dan integrasi yang kuat, serta biaya pengembangan yang relatif…
0 komentar2 menit baca
14/09/2024
Bot Telegram, Asisten Digital yang Serbaguna
Bot Telegram adalah program perangkat lunak yang berjalan di dalam aplikasi Telegram dan dapat…
0 komentar3 menit baca