Catatan Harian Mas Andri

Silahkan digunakan dengan bijaksana

back

Membuat Bot Al-Quran untuk WhatsApp dengan PHP: Panduan Lengkap

24 Maret 2025 || 00:47:40 WIB || ClassyID

Dalam era digital ini, teknologi telah membuka banyak cara baru untuk mengakses dan mempelajari Al-Quran. Salah satu cara yang efektif adalah melalui platform pesan instan seperti WhatsApp yang digunakan oleh miliaran orang di seluruh dunia. Dalam artikel ini, kita akan membahas cara membuat bot WhatsApp untuk Al-Quran menggunakan PHP dan API Al-Quran yang tersedia.

Quran WhatsApp Bot adalah webhook sederhana yang memungkinkan pengguna untuk mengakses berbagai fitur Al-Quran langsung melalui WhatsApp. Pengguna dapat mengirim perintah tertentu dan bot akan merespons dengan informasi yang diminta, seperti ayat tertentu, tafsir, atau bahkan audio tilawah.

Mengapa Membuat Bot Al-Quran untuk WhatsApp?

  1. Aksesibilitas: WhatsApp adalah platform pesan yang sangat populer dengan miliaran pengguna, menjadikannya sarana yang ideal untuk menyebarkan pengetahuan tentang Al-Quran.
  2. Kenyamanan: Pengguna dapat mengakses Al-Quran kapan saja dan di mana saja tanpa perlu menginstal aplikasi tambahan.
  3. Kemudahan: Dengan antarmuka chat yang sederhana, pengguna dari segala usia dapat dengan mudah berinteraksi dengan bot.
  4. Edukasi: Membantu pengguna mempelajari dan menghafal Al-Quran dengan cara yang interaktif.

Fitur Utama Bot Al-Quran

Bot Al-Quran yang kita buat menyediakan berbagai fitur yang memudahkan pengguna untuk berinteraksi dengan Al-Quran:

  1. Daftar Surah: Menampilkan daftar lengkap 114 surah dalam Al-Quran.
  2. Info Surah: Menampilkan informasi detail tentang suatu surah, termasuk nama, jumlah ayat, dan tempat diturunkannya.
  3. Baca Ayat: Menampilkan ayat tertentu dengan teks Arab, latin, dan terjemahan.
  4. Pencarian: Mencari ayat berdasarkan kata kunci.
  5. Info Juz: Menampilkan informasi tentang juz tertentu.
  6. Audio Ayat: Mendengarkan audio untuk ayat tertentu.
  7. Tafsir: Menampilkan tafsir surah.
  8. Ayat Acak: Menampilkan ayat acak dari Al-Quran.
  9. Surah Acak: Menampilkan surah acak dari Al-Quran.

Teknologi dan API yang Digunakan

Untuk membuat Quran WhatsApp Bot, kita menggunakan:

  1. PHP: Bahasa pemrograman server-side yang mudah digunakan untuk membuat webhook.
  2. API Al-Quran: API yang menyediakan data Al-Quran, termasuk teks Arab, terjemahan, dan audio.
  3. Webhook: Endpoint yang menerima dan memproses pesan dari WhatsApp.
  4. ResponWebhookFormatter: Kelas PHP untuk memformat respons ke WhatsApp dengan beragam format.

Persiapan

Sebelum mulai, pastikan Anda memiliki:

  1. Server web dengan PHP 7.2 atau lebih tinggi
  2. Akses ke layanan WhatsApp API / Server WhatsApp Bot
  3. API Al-Quran (dalam tutorial ini kita menggunakan API yang berbasis Google Script)

Langkah-Langkah Implementasi

1. Membuat File Webhook

Pertama, kita perlu membuat file PHP yang akan berfungsi sebagai webhook untuk menerima dan merespons pesan dari WhatsApp:

<?php
// Atur zona waktu ke Asia/Jakarta (GMT+7)
date_default_timezone_set('Asia/Jakarta');

error_reporting(E_ALL);
ini_set('display_errors', 1);
ini_set('error_log', 'error.log');

require_once 'ResponWebhookFormatter.php';
header('content-type: application/json; charset=utf-8');
$data = json_decode(file_get_contents('php://input'), true);
if (!$data) die('URL ini untuk webhook.');

file_put_contents('whatsapp.txt', '[' . date('Y-m-d H:i:s') . "]\n" . json_encode($data) . "\n\n", FILE_APPEND);
$message = strtolower($data['message']); // pesan masuk dari whatsapp
$from = strtolower($data['from']); // nomor pengirim
$bufferimage = isset($data['bufferImage']) ? $data['bufferImage'] : null; // buffer gambar jika pesan berisi gambar

$respon = false;
$responFormatter = new ResponWebhookFormater();

// URL API Al-Quran
$api_url = "https://script.google.com/macros/s/AKfycbyDhS4WMtLO2sSvvKImE6tq4gRcazMPGPkQDzjmIu2xDAeiVnD3mdsRfAetYFvi2RQUjw/exec";

2. Menambahkan Fitur Bantuan

Selanjutnya, kita tambahkan fitur bantuan yang akan menampilkan daftar perintah yang tersedia:

// Bantuan/Help
if ($message == 'quran' || $message == 'alquran' || $message == 'help quran') {
    $respon = $responFormatter->bold("PANDUAN AL-QURAN BOT ")
        ->line("")
        ->bold("DAFTAR PERINTAH:")
        ->line("1. *surah list* - Menampilkan daftar semua surah")
        ->line("2. *surah {nomor}* - Menampilkan info surah dan ayat pertama (contoh: surah 1)")
        ->line("3. *ayat {surah}:{ayat}* - Menampilkan ayat tertentu (contoh: ayat 1:1)")
        ->line("4. *juz {nomor}* - Menampilkan ayat pertama dari juz tertentu")
        ->line("5. *cari {kata kunci}* - Mencari ayat berdasarkan kata kunci")
        ->line("6. *audio {surah}:{ayat}* - Mendapatkan audio ayat tertentu")
        ->line("7. *tafsir {surah}* - Menampilkan tafsir surah")
        ->line("8. *random* - Menampilkan ayat acak dari Al-Quran")
        ->line("9. *random surah* - Menampilkan surah acak dari Al-Quran")
        ->line("")
        ->line("Silakan gunakan perintah di atas untuk menjelajahi Al-Quran ")
        ->responAsText();
}

3. Implementasi Fitur Daftar Surah

Fitur ini menampilkan daftar semua surah dalam Al-Quran:

// Menampilkan daftar surah
if ($message == 'surah list' || $message == 'daftar surah') {
    $url = $api_url . "?action=getAllSurah";
    $response = file_get_contents($url);
    $json = json_decode($response, true);
    
    if ($json['status'] == 'success') {
        $responFormatter->bold(" DAFTAR SURAH AL-QURAN ")->line("");
        
        // Kelompokkan surah dalam beberapa bagian untuk memudahkan pembacaan
        $total_surah = count($json['data']);
        $surah_per_section = 10;
        $section_count = ceil($total_surah / $surah_per_section);
        
        for ($i = 0; $i < $section_count; $i++) {
            $section_title = "Surah " . (($i * $surah_per_section) + 1) . " - " . min((($i + 1) * $surah_per_section), $total_surah);
            
            // Tambahkan surah ke respons teks
            for ($j = ($i * $surah_per_section); $j < min((($i + 1) * $surah_per_section), $total_surah); $j++) {
                $surah = $json['data'][$j];
                $responFormatter->line($surah['number'] . ". " . $surah['name_id'] . " (" . $surah['name_short'] . ") - " . $surah['translation_id'] . ' - ' . $surah['number_of_verses'] . ' ayat');
            }
            
            // Tambahkan baris kosong antara setiap kelompok
            if ($i < $section_count - 1) {
                $responFormatter->line("");
            }
        }
        
        $responFormatter->line("")->line("Ketik 'surah {nomor}' untuk melihat isi surah.");
        $respon = $responFormatter->responAsText();
    } else {
        $respon = $responFormatter->line(" Terjadi kesalahan saat mengambil daftar surah.")->responAsText();
    }
}

4. Implementasi Fitur Info Surah

Fitur ini menampilkan informasi detail tentang suatu surah:

// Menampilkan surah berdasarkan nomor
if (preg_match('/^surah (\d+)$/', $message, $matches)) {
    $surah_number = $matches[1];
    $url = $api_url . "?action=getSurah&number=" . $surah_number;
    $response = file_get_contents($url);
    $json = json_decode($response, true);
    
    if ($json['status'] == 'success' && isset($json['data']['surah'])) {
        $surah = $json['data']['surah'];
        $ayat_pertama = $json['data']['ayat'][0];
        
        $responFormatter->bold(" " . $surah['name_id'] . " (" . $surah['name_short'] . ")")
            ->line($surah['name_long'])
            ->line("")
            ->bold("Informasi Surah:")
            ->line("Nomor: " . $surah['number'])
            ->line("Arti: " . $surah['translation_id'])
            ->line("Jumlah Ayat: " . $surah['number_of_verses'])
            ->line("Diturunkan di: " . $surah['revelation_id'])
            ->line("")
            ->bold("Ayat Pertama:")
            ->line($ayat_pertama['Arab'])
            ->line("Latin: " . $ayat_pertama['Latin'])
            ->line("Arti: " . $ayat_pertama['Text'])
            ->line("")
            ->line("Ketik 'ayat " . $surah_number . ":{nomor ayat}' untuk membaca ayat tertentu")
            ->line("Ketik 'tafsir " . $surah_number . "' untuk membaca tafsir surah")
            ->line("Ketik 'audio " . $surah_number . ":1' untuk mendengarkan audio ayat pertama");
            
        $respon = $responFormatter->responAsText();
    } else {
        $respon = $responFormatter->line(" Surah dengan nomor " . $surah_number . " tidak ditemukan.")
            ->line("Ketik 'surah list' untuk melihat daftar surah yang tersedia.")
            ->responAsText();
    }
}

5. Implementasi Fitur Audio Ayat

Fitur ini memungkinkan pengguna untuk mendengarkan audio ayat tertentu:

// Mendapatkan audio ayat
if (preg_match('/^audio (\d+):(\d+)$/', $message, $matches)) {
    $surah_number = $matches[1];
    $ayat_number = $matches[2];
    
    // Dapatkan info surah dulu
    $url_surah = $api_url . "?action=getSurah&number=" . $surah_number;
    $response_surah = file_get_contents($url_surah);
    $json_surah = json_decode($response_surah, true);
    
    if ($json_surah['status'] == 'success' && isset($json_surah['data']['surah'])) {
        $surah_info = $json_surah['data']['surah'];
        
        // Kemudian dapatkan audio ayat
        $url = $api_url . "?action=getAudio&surah=" . $surah_number . "&ayat=" . $ayat_number . "&qari=default";
        $response = file_get_contents($url);
        $json = json_decode($response, true);
        
        if ($json['status'] == 'success' && isset($json['audio_url'])) {
            $ayat_info = $json['ayat_info'];
            $audio_url = $json['audio_url'];
            
            $caption = " *AUDIO AL-QURAN*\n\n";
            $caption .= " *Surah " . $surah_info['name_id'] . " (" . $surah_info['name_short'] . ")*\n";
            $caption .= "Ayat " . $ayat_number . " dari " . $surah_info['number_of_verses'] . " ayat\n\n";
            $caption .= $ayat_info['Arab'] . "\n\n";
            $caption .= "*Latin:* " . $ayat_info['Latin'] . "\n\n";
            $caption .= "*Arti:* " . $ayat_info['Text'] . "\n\n";
            $caption .= "Ketik 'ayat " . $surah_number . ":" . ($ayat_number + 1) . "' untuk ayat berikutnya";
            
            // Kirim audio dengan caption
            $respon = $responFormatter->line($caption)->responAsMedia($audio_url, 'audio');
        } else {
            $respon = $responFormatter->line(" Audio tidak ditemukan.")
                ->line("Periksa kembali nomor surah dan ayat.")
                ->responAsText();
        }
    } else {
        $respon = $responFormatter->line(" Surah dengan nomor " . $surah_number . " tidak ditemukan.")
            ->responAsText();
    }
}

6. Implementasi Fitur Pencarian

Fitur ini memungkinkan pengguna untuk mencari ayat berdasarkan kata kunci:

// Mencari ayat berdasarkan kata kunci
if (preg_match('/^cari (.+)$/', $message, $matches)) {
    $keyword = $matches[1];
    $url = $api_url . "?action=search&q=" . urlencode($keyword);
    $response = file_get_contents($url);
    $json = json_decode($response, true);
    
    if ($json['status'] == 'success') {
        $total_hasil = $json['count'];
        $responFormatter->bold(" HASIL PENCARIAN: '" . $keyword . "'")
            ->line("Ditemukan " . $total_hasil . " ayat")
            ->line("");
        
        if ($total_hasil > 0) {
            // Tampilkan 3 hasil pertama
            $max_results = min(3, $total_hasil);
            for ($i = 0; $i < $max_results; $i++) {
                $ayat = $json['data'][$i];
                $surah_name = getSurahName($ayat['Surah']);
                
                $responFormatter->bold("Q.S. " . $surah_name . " [" . $ayat['Surah'] . ":" . $ayat['Ayah'] . "]")
                    ->line($ayat['Arab'])
                    ->line("")
                    ->line($ayat['Text'])
                    ->line("")
                    ->line("Ketik 'ayat " . $ayat['Surah'] . ":" . $ayat['Ayah'] . "' untuk detail lengkap")
                    ->line("");
            }
            
            if ($total_hasil > 3) {
                $responFormatter->bold("... dan " . ($total_hasil - 3) . " ayat lainnya")
                    ->line("")
                    ->italic("Kata kunci '" . $keyword . "' juga ditemukan dalam ayat-ayat lain. Silakan perjelas pencarian Anda untuk hasil yang lebih spesifik.");
            }
        }
        
        $respon = $responFormatter->responAsText();
    } else {
        $respon = $responFormatter->line(" Tidak dapat melakukan pencarian.")
            ->line("Silakan coba dengan kata kunci lain.")
            ->responAsText();
    }
}

Hasil dan Penggunaan

Setelah mengimplementasikan semua fitur, kita memiliki bot Al-Quran yang fungsional di WhatsApp. Pengguna dapat berinteraksi dengan bot dengan mengirimkan perintah seperti:

Kesimpulan

Dengan membuat Quran WhatsApp Bot, kita telah membuka akses mudah ke Al-Quran melalui platform pesan yang sangat populer. Bot ini menawarkan cara interaktif dan nyaman untuk membaca, mencari, dan mendengarkan Al-Quran kapan saja dan di mana saja.

Bot ini masih bisa dikembangkan lebih lanjut dengan menambahkan fitur-fitur seperti jadwal sholat, doa-doa harian, dan pembelajaran tajwid. Namun, sebagai langkah awal, bot ini sudah memberikan nilai yang signifikan bagi pengguna yang ingin mempelajari dan mengakses Al-Quran dengan mudah.

Mari kita manfaatkan teknologi untuk memudahkan akses ke pengetahuan agama dan meningkatkan pemahaman kita tentang Al-Quran!


GITHUB


Tentang Penulis

Mas Andri Wiratmono adalah seorang pengembang web dan penggemar teknologi yang berfokus pada pengembangan aplikasi Islam digital. Dengan pengalaman lebih dari 10] tahun dalam pengembangan web, Andri Wiratmono berkomitmen untuk membuat teknologi yang bermanfaat bagi masyarakat Muslim.


Catatan: Artikel ini adalah panduan teknis untuk membuat bot Al-Quran di WhatsApp. Untuk penggunaan dalam konteks pendidikan, disarankan untuk selalu menghormati nilai-nilai dan ajaran Islam. Semua terjemahan dan tafsir Al-Quran dalam bot ini berasal dari sumber yang dapat dipercaya.