Keyboard shortcuts

Press โ† or โ†’ to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Tutorial PHPTelebot - Panduan Lengkap untuk Pemula

Panduan lengkap ini akan membantumu membuat bot Telegram menggunakan framework PHPTelebot. Tutorial ini dirancang khusus untuk pemula yang baru belajar membuat bot Telegram dengan PHP.

Radyakaze

Daftar Isi


Apa itu PHPTelebot?

PHPTelebot adalah framework PHP yang mempermudah pembuatan bot Telegram. Framework ini menyediakan fungsi-fungsi siap pakai untuk berinteraksi dengan Telegram Bot API, sehingga kamu tidak perlu menulis kode dari nol.

Sejarah

Sejarah-nya euy.. PHPTelebot ini awalnya dibuat pertama kali oleh admin grup Bot PHP Indonesia Sdr. @Radyakaze1

Namun, karena lain satu hal.. repository-nya tidak pernah diupdate, dan dilanjutkan oleh pengembang luar GrayHoax dan sampai tulisan ini dibuat, masih uptodate untuk dipakai di tahun 2025 dan masih aktif.

GrayHoax

Sehingga pada tutorial ini, akan menggunakan repository dari GrayHoax yang merupakan forknya. Lantaran ini juga, kita akan menggunakan metode langsung (tidak pakai composer).

Fitur Utama

  • Mudah digunakan, cocok untuk pemula
  • Mendukung long polling dan webhook
  • Penanganan command yang simpel
  • Dukungan untuk inline keyboard, callback query, dan fitur Telegram lainnya

Mengapa Menggunakan Framework?

๐Ÿš€ Mengapa Menggunakan Framework daripada Coding Biasa?

Menggunakan framework adalah praktik standar dalam pengembangan perangkat lunak modern karena menawarkan berbagai keuntungan signifikan dibandingkan menulis kode dari nol (vanilla coding). Alasan-alasan ini berpusat pada efisiensi, kualitas, dan pemeliharaan.


1. Peningkatan Produktivitas dan Kecepatan Pengembangan

  • Fungsi Siap Pakai: Frameworks menyediakan komponen dan library yang sudah teruji untuk tugas-tugas umum (misalnya, routing, koneksi database, autentikasi, manajemen session). Ini berarti pengembang tidak perlu โ€œmenciptakan kembali rodaโ€ dan bisa fokus langsung pada fitur unik aplikasi.
  • Pengembangan Cepat (Rapid Development): Dengan adanya alat bantu bawaan, waktu yang dibutuhkan untuk membuat aplikasi fungsional pertama jauh lebih singkat, memungkinkan Time-to-Market yang lebih cepat.

2. Struktur, Konsistensi, dan Pemeliharaan

  • Struktur Proyek Terstandardisasi: Frameworks memaksakan pola desain tertentu (seperti MVC - Model-View-Controller). Struktur ini membuat proyek terorganisir, konsisten, dan mudah dipahami oleh pengembang mana pun yang familiar dengan framework tersebut.
  • Kemudahan Pemeliharaan (Maintainability): Karena kode mengikuti konvensi framework, menemukan, memperbaiki bug, atau menambahkan fitur baru menjadi lebih mudah. Ini sangat penting untuk proyek jangka panjang.
  • Skalabilitas: Framework sering dirancang dengan mempertimbangkan skalabilitas, menyediakan mekanisme yang lebih baik untuk menangani pertumbuhan aplikasi dan peningkatan beban pengguna.

3. Keamanan dan Keandalan

  • Perlindungan Keamanan Bawaan: Frameworks yang populer terus diperbarui dan menyediakan mitigasi terhadap kerentanan keamanan web yang umum, seperti:
    • SQL Injection
    • Cross-Site Scripting (XSS)
    • Cross-Site Request Forgery (CSRF)
    • Mengimplementasikan perlindungan ini sendiri secara manual sangat kompleks dan rawan kesalahan.
  • Kode yang Teruji: Kode inti framework telah diuji secara ekstensif dan diperbaiki bug-nya oleh komunitas pengembang global, membuatnya jauh lebih andal daripada kode yang ditulis pengembang tunggal dari awal.

4. Dukungan Komunitas dan Ekosistem

  • Dokumentasi dan Bantuan: Frameworks besar (seperti Laravel, React, Django) memiliki dokumentasi yang lengkap dan komunitas pengguna yang besar. Jika Anda menemui masalah, solusinya kemungkinan besar sudah dibahas di forum atau Stack Overflow.
  • Ekosistem yang Kaya: Ada banyak library, plugin, dan tool pihak ketiga yang secara khusus dibuat untuk memperluas fungsionalitas framework, sehingga memudahkan integrasi fitur tambahan.
AspekFrameworkCoding Biasa (Vanilla)
KecepatanCepat, menggunakan fungsionalitas siap pakaiLambat, harus membangun dasar dari nol
Keamanan**Bawaan

Tanpa Framework (PHP + cURL Murni)

Jika kamu menulis bot tanpa framework, kamu harus menulis kode seperti ini setiap kali ingin mengirim pesan:

<?php
$token = "YOUR_BOT_TOKEN";
$chatId = "USER_CHAT_ID";
$message = "Halo dari bot!";

$url = "https://api.telegram.org/bot{$token}/sendMessage";
$data = [
    'chat_id' => $chatId,
    'text' => $message
];

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);

Masalah dengan pendekatan ini:

  • โŒ Kode berulang-ulang (repetitif)
  • โŒ Sulit dibaca dan dipelihara
  • โŒ Rawan error (typo URL, parameter salah, dll)
  • โŒ Harus menulis ulang untuk setiap fitur (keyboard, foto, dokumen, dll)
  • โŒ Tidak ada struktur yang jelas untuk menangani command

Dengan Framework PHPTelebot

Dengan framework, kode yang sama menjadi jauh lebih sederhana:

<?php
require_once 'phptelebot/src/PHPTelebot.php';

$bot = new PHPTelebot('YOUR_BOT_TOKEN');

$bot->cmd('/start', function() {
    return Bot::sendMessage('Halo dari bot!');
});

$bot->run();

Keuntungan menggunakan framework:

  • โœ… Kode lebih ringkas dan mudah dibaca
  • โœ… Fokus pada logika bisnis, bukan detail teknis
  • โœ… Penanganan error sudah diatur oleh framework
  • โœ… Struktur kode lebih terorganisir
  • โœ… Lebih cepat dalam pengembangan
  • โœ… Mudah ditambahkan fitur baru

Prasyarat

Sebelum memulai, pastikan sudah memiliki:

  1. PHP 7.4 atau lebih baru (disarankan PHP 8.0+)

    php -v  # Cek versi PHP
    
  2. Ekstensi cURL aktif

    php -m | grep curl  # Cek apakah cURL sudah aktif
    
  3. Git (untuk mengambil kode dari GitHub)

    git --version  # Cek apakah Git sudah terinstal
    
  4. Token Bot dari BotFather

    • Buka Telegram dan cari @BotFather
    • Kirim perintah /newbot
    • Ikuti instruksi untuk membuat bot baru
    • Simpan token yang diberikan (format: 123456789:ABCdefGHIjklMNOpqrsTUVwxyz)

Instalasi

Langkah 1: Clone Repository

Buka terminal dan jalankan perintah berikut:

# Clone repository PHPTelebot
git clone https://github.com/GrayHoax/phptelebot.git

# Masuk ke folder phptelebot
cd phptelebot

Langkah 2: Struktur Folder

Setelah clone, struktur folder akan seperti ini:

phptelebot/
โ”œโ”€โ”€ src/
โ”‚   โ””โ”€โ”€ PHPTelebot.php    # File utama framework
โ”œโ”€โ”€ examples/              # Contoh-contoh penggunaan
โ”œโ”€โ”€ README.md
โ””โ”€โ”€ ...

File utama yang kita butuhkan ada di src/PHPTelebot.php.


Membuat Bot Sederhana

Langkah 1: Buat File Bot

Buat file baru bernama bot.php di folder yang sama dengan folder phptelebot:

project/
โ”œโ”€โ”€ phptelebot/           # Folder hasil clone
โ””โ”€โ”€ bot.php               # File bot kamu (buat file ini)

Langkah 2: Tulis Kode Bot

Buka bot.php dan tulis kode berikut:

<?php
// Sertakan library PHPTelebot
require_once __DIR__ . '/phptelebot/src/PHPTelebot.php';

// Ganti dengan token bot kamu
$token = 'ISI_TOKEN_BOT_KAMU_DISINI';
$username = 'NamaBotKamu';  // Opsional

// Inisialisasi bot
$bot = new PHPTelebot($token, $username);

// Command /start - Pesan sambutan
$bot->cmd('/start', function () {
    $nama = Bot::$user['first_name'];
    $pesan = "Halo {$nama}! ๐Ÿ‘‹\n\n";
    $pesan .= "Selamat datang di bot saya.\n";
    $pesan .= "Gunakan /help untuk melihat daftar perintah.";
    
    return Bot::sendMessage($pesan);
});

// Command /help - Daftar perintah
$bot->cmd('/help', function () {
    $pesan = "๐Ÿ“‹ *Daftar Perintah:*\n\n";
    $pesan .= "/start - Mulai bot\n";
    $pesan .= "/help - Tampilkan bantuan\n";
    $pesan .= "/echo [teks] - Ulangi teks yang kamu kirim\n";
    $pesan .= "/info - Informasi tentang kamu";
    
    return Bot::sendMessage($pesan, ['parse' => 'markdown']);
});

// Command /echo - Mengulangi teks
$bot->cmd('/echo|/say', function ($text = '') {
    if (empty($text)) {
        return Bot::sendMessage('โŒ Gunakan: /echo [teks yang ingin diulangi]');
    }
    return Bot::sendMessage("๐Ÿ”Š Kamu berkata: {$text}");
});

// Command /info - Informasi user
$bot->cmd('/info', function () {
    $user = Bot::$user;
    $pesan = "๐Ÿ‘ค *Informasi Kamu:*\n\n";
    $pesan .= "Nama: {$user['first_name']}\n";
    $pesan .= "ID: {$user['id']}\n";
    $pesan .= "Username: @{$user['username']}\n";
    
    return Bot::sendMessage($pesan, ['parse' => 'markdown']);
});

// Handler untuk semua pesan yang tidak cocok dengan command
$bot->cmd('*', function () {
    return Bot::sendMessage("Maaf, saya tidak mengerti perintah itu. Gunakan /help untuk bantuan.");
});

// Jalankan bot
$bot->run();

Langkah 3: Penjelasan Kode

Mari kita pahami setiap bagian kode:

  1. require_once: Memasukkan file library PHPTelebot
  2. new PHPTelebot($token, $username): Membuat instance bot dengan tokenmu
  3. $bot->cmd('/start', function() {...}): Mendefinisikan apa yang terjadi ketika user mengirim /start
  4. Bot::sendMessage($pesan): Mengirim pesan ke user
  5. Bot::$user: Array yang berisi informasi user yang mengirim pesan
  6. $bot->run(): Menjalankan bot (long polling)

Menggunakan Inline Keyboard

Inline keyboard adalah tombol-tombol yang muncul di bawah pesan. Sangat berguna untuk membuat menu interaktif.

Contoh 1: Keyboard Sederhana

<?php
require_once __DIR__ . '/phptelebot/src/PHPTelebot.php';

$token = 'ISI_TOKEN_BOT_KAMU';
$bot = new PHPTelebot($token);

// Command dengan inline keyboard
$bot->cmd('/menu', function () {
    $pesan = "Pilih menu yang kamu inginkan:";
    
    // Membuat inline keyboard
    $keyboard = [
        [
            ['text' => '๐Ÿ“ฐ Berita', 'callback_data' => 'menu_berita'],
            ['text' => '๐ŸŽต Musik', 'callback_data' => 'menu_musik']
        ],
        [
            ['text' => '๐ŸŽฎ Game', 'callback_data' => 'menu_game'],
            ['text' => 'โš™๏ธ Pengaturan', 'callback_data' => 'menu_setting']
        ]
    ];
    
    return Bot::sendMessage($pesan, [
        'reply_markup' => [
            'inline_keyboard' => $keyboard
        ]
    ]);
});

// Menangani callback dari inline keyboard
$bot->on('callback', function ($data) {
    // $data berisi callback_data yang dikirim
    switch ($data) {
        case 'menu_berita':
            $response = "๐Ÿ“ฐ Kamu memilih menu Berita";
            break;
        case 'menu_musik':
            $response = "๐ŸŽต Kamu memilih menu Musik";
            break;
        case 'menu_game':
            $response = "๐ŸŽฎ Kamu memilih menu Game";
            break;
        case 'menu_setting':
            $response = "โš™๏ธ Kamu memilih menu Pengaturan";
            break;
        default:
            $response = "Menu tidak dikenal";
    }
    
    // Kirim notifikasi ke user
    Bot::answerCallback($response, true);
    
    // Update pesan dengan pilihan user
    return Bot::editText($response);
});

$bot->run();

Contoh 2: Keyboard dengan URL

$bot->cmd('/sosmed', function () {
    $pesan = "Kunjungi media sosial kami:";
    
    $keyboard = [
        [
            ['text' => '๐ŸŒ Website', 'url' => 'https://example.com']
        ],
        [
            ['text' => '๐Ÿ“ฑ Telegram Channel', 'url' => 'https://t.me/channel']
        ],
        [
            ['text' => '๐Ÿฆ Twitter', 'url' => 'https://twitter.com/username'],
            ['text' => '๐Ÿ“˜ Facebook', 'url' => 'https://facebook.com/page']
        ]
    ];
    
    return Bot::sendMessage($pesan, [
        'reply_markup' => [
            'inline_keyboard' => $keyboard
        ]
    ]);
});

Contoh 3: Keyboard Dinamis dengan Pagination

$bot->cmd('/list', function () {
    $items = ['Item 1', 'Item 2', 'Item 3', 'Item 4', 'Item 5'];
    $page = 1;
    $perPage = 2;
    
    $keyboard = [];
    $start = ($page - 1) * $perPage;
    $end = min($start + $perPage, count($items));
    
    // Tambahkan item ke keyboard
    for ($i = $start; $i < $end; $i++) {
        $keyboard[] = [
            ['text' => $items[$i], 'callback_data' => "item_{$i}"]
        ];
    }
    
    // Tambahkan tombol navigasi
    $navButtons = [];
    if ($page > 1) {
        $navButtons[] = ['text' => 'โฌ…๏ธ Prev', 'callback_data' => 'page_' . ($page - 1)];
    }
    if ($end < count($items)) {
        $navButtons[] = ['text' => 'Next โžก๏ธ', 'callback_data' => 'page_' . ($page + 1)];
    }
    if (!empty($navButtons)) {
        $keyboard[] = $navButtons;
    }
    
    return Bot::sendMessage("Daftar Item (Halaman {$page}):", [
        'reply_markup' => [
            'inline_keyboard' => $keyboard
        ]
    ]);
});

Penjelasan Inline Keyboard

  • text: Teks yang ditampilkan pada tombol
  • callback_data: Data yang dikirim ketika tombol ditekan (maksimal 64 byte)
  • url: Link yang akan dibuka ketika tombol ditekan
  • $bot->on('callback', function($data) {...}): Menangani event ketika tombol ditekan
  • Bot::answerCallback(): Mengirim notifikasi popup ke user
  • Bot::editText(): Mengubah teks pesan yang sudah dikirim

Metode Long Polling

Long polling adalah metode di mana bot kamu terus-menerus โ€œbertanyaโ€ ke server Telegram apakah ada pesan baru.

Cara Kerja Long Polling

Bot Kamu  โ†’  "Ada pesan baru?"  โ†’  Telegram Server
          โ†  "Tidak ada"         โ†
          โ†’  "Ada pesan baru?"  โ†’
          โ†  "Ya, ada!"         โ†
          โ†’  Proses pesan       โ†’
          โ†’  "Ada pesan baru?"  โ†’

Menjalankan Long Polling

# Jalankan bot dengan long polling
php bot.php

Bot akan terus berjalan dan menunggu pesan. Untuk menghentikan, tekan Ctrl+C.

Menjalankan di Background (Linux)

Jika kamu ingin bot tetap berjalan meskipun terminal ditutup:

# Menggunakan nohup
nohup php bot.php > bot.log 2>&1 &

# Atau menggunakan screen
screen -S mybot
php bot.php
# Tekan Ctrl+A lalu D untuk detach

# Kembali ke screen
screen -r mybot

Tutorial penggunaan Screen ada di Setup VPS

Kelebihan dan Kekurangan Long Polling

Kelebihan:

  • โœ… Mudah digunakan, tidak perlu server web
  • โœ… Cocok untuk development dan testing
  • โœ… Tidak perlu SSL certificate

Kekurangan:

  • โŒ Harus selalu running (konsumsi resource)
  • โŒ Tidak cocok untuk production dengan traffic tinggi
  • โŒ Jika script crash, bot akan mati

Metode Webhook

Webhook adalah metode di mana Telegram mengirim pesan langsung ke server Anda setiap kali ada update.

Cara Kerja Webhook

User mengirim pesan  โ†’  Telegram Server  โ†’  Kirim ke URL webhook Anda
                                          โ†’  Bot Anda memproses
                                          โ†  Kirim response

Persyaratan Webhook

  1. Server web (Apache/Nginx)
  2. SSL Certificate (HTTPS wajib)
  3. URL publik yang bisa diakses Telegram
  4. PHP dengan cURL

Contoh Kode Webhook

Buat file webhook.php:

<?php
require_once __DIR__ . '/phptelebot/src/PHPTelebot.php';

$token = 'ISI_TOKEN_BOT_ANDA';
$bot = new PHPTelebot($token);

// Definisikan command seperti biasa
$bot->cmd('/start', function () {
    return Bot::sendMessage('Halo! Bot berjalan dengan webhook.');
});

$bot->cmd('/help', function () {
    return Bot::sendMessage('Ini adalah bot dengan webhook.');
});

// Untuk webhook, gunakan method webhook() bukan run()
$bot->webhook();

Set Webhook

Buat file set_webhook.php:

<?php
$token = 'ISI_TOKEN_BOT_ANDA';
$webhookUrl = 'https://domain-anda.com/webhook.php';

$url = "https://api.telegram.org/bot{$token}/setWebhook?url={$webhookUrl}";
$response = file_get_contents($url);

echo $response;

Jalankan sekali:

php set_webhook.php

Cek Status Webhook

<?php
$token = 'ISI_TOKEN_BOT_ANDA';
$url = "https://api.telegram.org/bot{$token}/getWebhookInfo";
$response = file_get_contents($url);

echo $response;

Hapus Webhook

<?php
$token = 'ISI_TOKEN_BOT_ANDA';
$url = "https://api.telegram.org/bot{$token}/deleteWebhook";
$response = file_get_contents($url);

echo $response;

Webhook dengan Ngrok

Ngrok adalah tool yang membuat tunnel dari internet ke localhost Anda. Sangat berguna untuk testing webhook tanpa perlu deploy ke server.

Langkah 1: Install Ngrok

Linux/Mac:

# Download ngrok
wget https://bin.equinox.io/c/bNyj1mQVY4c/ngrok-v3-stable-linux-amd64.tgz

# Extract
tar -xvzf ngrok-v3-stable-linux-amd64.tgz

# Pindahkan ke /usr/local/bin agar bisa diakses global
sudo mv ngrok /usr/local/bin/

Windows:

  1. Download dari https://ngrok.com/download
  2. Extract file ZIP
  3. Jalankan ngrok.exe

Langkah 2: Daftar Akun Ngrok (Gratis)

  1. Buka https://dashboard.ngrok.com/signup
  2. Daftar akun gratis
  3. Dapatkan authtoken dari dashboard
  4. Jalankan:
ngrok config add-authtoken YOUR_AUTHTOKEN

Langkah 3: Setup Server Lokal

Buat file webhook.php di folder web server lokal Anda (misalnya di /var/www/html/ atau htdocs/):

<?php
require_once __DIR__ . '/phptelebot/src/PHPTelebot.php';

$token = 'ISI_TOKEN_BOT_ANDA';
$bot = new PHPTelebot($token);

$bot->cmd('/start', function () {
    return Bot::sendMessage('Halo! Bot berjalan dengan Ngrok webhook.');
});

$bot->cmd('/test', function () {
    $pesan = "โœ… Webhook berfungsi dengan baik!\n";
    $pesan .= "Server: " . $_SERVER['HTTP_HOST'];
    return Bot::sendMessage($pesan);
});

// Gunakan webhook() untuk mode webhook
$bot->webhook();

Langkah 4: Jalankan Web Server Lokal

Menggunakan PHP Built-in Server:

# Masuk ke folder project
cd /path/to/project

# Jalankan server di port 8000
php -S localhost:8000

Atau menggunakan Apache/Nginx:

Pastikan web server Anda sudah running dan file webhook.php bisa diakses.

Langkah 5: Jalankan Ngrok

Buka terminal baru dan jalankan:

# Untuk PHP built-in server (port 8000)
ngrok http 8000

# Untuk Apache/Nginx (biasanya port 80)
ngrok http 80

Anda akan melihat output seperti ini:

ngrok

Session Status                online
Account                       your@email.com
Version                       3.x.x
Region                        Asia Pacific (ap)
Latency                       -
Web Interface                 http://127.0.0.1:4040
Forwarding                    https://abc123.ngrok.io -> http://localhost:8000

Connections                   ttl     opn     rt1     rt5     p50     p90
                              0       0       0.00    0.00    0.00    0.00

Penting: Salin URL HTTPS (misalnya https://abc123.ngrok.io)

Langkah 6: Set Webhook ke Telegram

Buat file set_webhook_ngrok.php:

<?php
$token = 'ISI_TOKEN_BOT_ANDA';

// Ganti dengan URL ngrok Anda (HARUS HTTPS)
$ngrokUrl = 'https://abc123.ngrok.io';
$webhookUrl = $ngrokUrl . '/webhook.php';

$url = "https://api.telegram.org/bot{$token}/setWebhook?url=" . urlencode($webhookUrl);

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);

$result = json_decode($response, true);

if ($result['ok']) {
    echo "โœ… Webhook berhasil diset!\n";
    echo "URL: {$webhookUrl}\n";
} else {
    echo "โŒ Gagal set webhook:\n";
    echo $response . "\n";
}

Jalankan:

php set_webhook_ngrok.php

Langkah 7: Test Bot

  1. Buka Telegram dan cari bot Anda
  2. Kirim /start atau /test
  3. Bot akan merespons melalui webhook

Langkah 8: Monitor Request (Opsional)

Ngrok menyediakan web interface untuk melihat semua request:

  1. Buka browser
  2. Akses http://127.0.0.1:4040
  3. Anda bisa melihat semua request yang masuk dari Telegram

Troubleshooting Ngrok

Bot tidak merespons:

  1. Cek apakah ngrok masih running
  2. Cek apakah PHP server masih running
  3. Cek webhook info:
curl https://api.telegram.org/botYOUR_TOKEN/getWebhookInfo
  1. Lihat error di ngrok web interface (http://127.0.0.1:4040)

URL ngrok berubah:

  • URL ngrok gratis akan berubah setiap kali Anda restart
  • Anda harus set webhook ulang dengan URL baru
  • Untuk URL tetap, upgrade ke ngrok berbayar

Webhook tidak menerima update:

# Hapus webhook
curl https://api.telegram.org/botYOUR_TOKEN/deleteWebhook

# Set ulang
php set_webhook_ngrok.php

Tips Ngrok

  1. Jangan tutup terminal ngrok - Jika ditutup, tunnel akan mati
  2. URL berubah setiap restart - Catat URL baru dan set webhook ulang
  3. Gunakan HTTPS - Telegram hanya menerima webhook HTTPS
  4. Monitor di web interface - Sangat membantu untuk debugging

Tips dan Troubleshooting

Tips Umum

  1. Simpan token dengan aman

    • Jangan commit token ke Git
    • Gunakan file .env atau config terpisah
    // config.php
    <?php
    return [
        'token' => 'YOUR_BOT_TOKEN'
    ];
    
    // bot.php
    $config = require 'config.php';
    $bot = new PHPTelebot($config['token']);
    
  2. Logging untuk debugging

    // Tambahkan logging
    file_put_contents('bot.log', date('Y-m-d H:i:s') . " - " . json_encode(Bot::$update) . "\n", FILE_APPEND);
    
  3. Gunakan try-catch

    $bot->cmd('/start', function () {
        try {
            // Kode Anda
            return Bot::sendMessage('Halo!');
        } catch (Exception $e) {
            error_log($e->getMessage());
            return Bot::sendMessage('Terjadi kesalahan.');
        }
    });
    

Troubleshooting

Bot tidak merespons:

  1. Cek token sudah benar
  2. Cek koneksi internet
  3. Cek apakah script berjalan tanpa error
  4. Untuk webhook: cek apakah URL bisa diakses dari luar

Error โ€œCall to undefined function curl_initโ€:

# Ubuntu/Debian
sudo apt install php-curl

# CentOS/RHEL
sudo yum install php-curl

# Restart web server
sudo service apache2 restart

Webhook tidak berfungsi:

# Cek status webhook
curl https://api.telegram.org/botYOUR_TOKEN/getWebhookInfo

# Hapus webhook jika ada masalah
curl https://api.telegram.org/botYOUR_TOKEN/deleteWebhook

# Set ulang
curl -X POST https://api.telegram.org/botYOUR_TOKEN/setWebhook?url=YOUR_WEBHOOK_URL

Long polling error โ€œConflict: terminated by other getUpdatesโ€:

  • Ada instance lain yang running
  • Atau webhook masih aktif
  • Solusi: Hapus webhook dengan deleteWebhook

Referensi

Dokumentasi Telegram

  1. Telegram Bot API Official

  2. Telegram Bot Features

  3. Telegram Bot Tutorial

  4. Inline Keyboards

  5. Webhooks Guide

Dokumentasi PHP

  1. PHP cURL

  2. PHP JSON

  3. PHP File Handling

Framework PHPTelebot

  1. PHPTelebot GitHub

  2. PHPTelebot Examples

Tools Pendukung

  1. Ngrok

  2. BotFather

    • @BotFather
    • Bot untuk membuat dan manage bot Telegram
  3. Telegram API Testing

Komunitas dan Bantuan

  1. Telegram Bot Indonesia

  2. Stack Overflow

  3. PHP Indonesia

    • @phpid
    • Komunitas PHP Indonesia

Penutup

Selamat! Kita telah mempelajari cara membuat bot Telegram menggunakan PHPTelebot. Mulai dari instalasi, membuat bot sederhana, menggunakan inline keyboard, hingga setup webhook dengan Ngrok.

Langkah selanjutnya:

  • Eksplorasi fitur-fitur lain di dokumentasi Telegram Bot API
  • Pelajari cara mengirim foto, video, dan dokumen
  • Implementasikan database untuk menyimpan data user
  • Buat bot yang lebih kompleks dengan state management

Jika ada pertanyaan atau menemui masalah, jangan ragu untuk bertanya di komunitas atau membuka issue di repository PHPTelebot.

Selamat coding! ๐Ÿš€


  1. https://github.com/radyakaze/ yakni Sdr. Pringgo Radianto alias Radyakaze, merupakan developer PHP untuk PHPTelebot pertama. โ†ฉ