dannsbass / bot
Telegram bot library using PHP
Requires
- php: >=8.0.0
This package is auto-updated.
Last update: 2025-03-08 10:33:43 UTC
README
Modifikasi dari PHPTelebot by radyakaze
Cara Pasang
- Salin file
Bot.php
wget https://raw.githubusercontent.com/dannsbass/bot/master/Bot.php
- Lakukan
include
ataurequire
(lebih disarankan) fileBot.php
ke dalam file projek Anda:require 'Bot.php';
Contoh Kode
Berikut ini beberapa contoh kode yang bisa Anda pakai:
Contoh 1 (Merespon Semua Pesan Teks dengan Satu Pesan Teks)
Keterangan contoh 1: seperti Anda lihat pada screenshot, bot hanya merespon pesan teks saja dan responnya hanyalah kalimat statis yaitu Anda mengirim pesan teks
. Selain pesan teks, bot akan mengabaikannya alias tidak meresponnya sama sekali. Berikut ini kodenya:
require 'Bot.php'; $bot = new Bot('TOKEN', 'USERNAME'); //ganti dengan TOKEN dan USERNAME dari @BotFather $bot->text('Anda mengirim pesan teks'); $bot->run();
Keterangan kode: Method yang digunakan untuk merespon semua pesan teks adalah text()
dengan satu parameter (string) di dalamnya berisi respon/balasan kepada user.
Contoh 2 (Merespon Pesan Teks Tertentu dengan Pesan Teks yang Tertentu)
Keterangan contoh 2: bot merespon pesan teks Hai
dengan Hai juga
, Info
dengan Ini adalah info
dan /admin
dengan Ini adalah admin
. Selain itu, semua pesan teks akan direspon dengan kalimat statis Anda mengirim pesan teks
. Berikut ini kodenya:
require 'Bot.php'; $bot = new Bot('TOKEN', 'USERNAME'); //ganti dengan TOKEN dan USERNAME dari @BotFather $bot->chat('Hai', 'Hai juga'); $bot->chat('Info', 'Ini adalah info'); $bot->chat('/admin', 'Ini adalah admin'); $bot->text('Anda mengirim pesan teks'); $bot->run();
Keterangan kode: Method yang digunakan untuk merespon teks tertentu adalah chat()
dengan dua parameter:
$request
(kiri) yaitu pesan teks yang dikirim oleh user.$respon
(kanan) yaitu pesan teks balasan dari bot.
Contoh 3 (Mengirim Teks disertai Tombol/Keyboard)
Keterangan contoh 3: bot merespon perintah /start
dengan pesan Silahkan pilih menu berikut ini
disertai lima buah tombol (keyboard) yaitu TENTANG
, MENU
, ADMIN
, NO REKENING
dan HELP
. Jika tombol ditekan, bot akan merespon dengan kalimat tertentu. Berikut ini kodenya:
require 'Bot.php'; $bot = new Bot('TOKEN', 'USERNAME'); //ganti dengan TOKEN dan USERNAME dari @BotFather $bot->chat('/start', function(){ $pesan = 'Silahkan pilih menu berikut ini'; $tombol = Bot::keyboard(' [TENTANG] [MENU] [ADMIN] [NO REKENING] [HELP] '); return Bot::sendMessage($pesan, ['reply'=>true, 'reply_markup'=>$tombol]); }); $bot->chat('TENTANG', 'Kami adalah ...'); $bot->chat('MENU', 'Berikut ini adalah menu ...'); $bot->chat('ADMIN', 'Untuk menghubungi Admin, silahkan ...'); $bot->chat('NO REKENING', 'Silahkan transfer ke no rekening berikut ...'); $bot->chat('HELP', 'Untuk pertolongan, silahkan hubungi ...'); $bot->run();
Keterangan kode: Untuk me-reply pesan yang dikirim oleh user, tambahkan elemen 'reply'=>true
pada array parameter kedua (kanan) dalam method sendMessage()
. Untuk memodifikasi respon yang akan dikirim, gunakan function(){}
pada parameter kedua dalam method chat()
. Untuk membuat tombol/keyboard, method yang digunakan adalah static method keyboard()
dengan satu parameter berupa string dengan pola [teks]
.
Contoh 4 (Membuat Tombol/Keyboard Inline yang Responsif)
Keterangan contoh 4: bot merespon perintah /start
dengan kalimat Selamat user datang di Google
(salah ketik, harusnya: selamat datang user
hehe..). Perhatikan kata user
ditebalkan dan kata Google
berupa link yang merujuk ke situs https://www.googgle.com
. Selain kalimat tersebut, bot juga menyertakan tombol-tombol (inline keyboard) yang responsif, yaitu jika diklik akan menghasilkan respon Anda menekan tombol <anu>
kecuali tombol link yang berisi URL ke alamat situs tertentu.
require 'Bot.php'; $bot = new Bot('TOKEN', 'USERNAME'); //ganti dengan TOKEN dan USERNAME dari @BotFather $inline_keyboard = Bot::inline_keyboard(' [Next|next] [Prev|preview] [Google|https://google.com] [Facebook|https://facebook.com] [Telegram|https://telegram.org] [Instagram|https://instagram.com] [Youtube|https://youtube.com] [Twitter|https://twitter.com] [Desainer|Danns] '); $options = [ 'reply'=>true, // sebagai ganti 'reply_to_message_id' => $message_id 'parse_mode'=>'html', // pilihannya: 'html' atau 'markdown' 'disable_web_page_preview'=>true, // pilihannya: true atau false 'reply_markup'=>$inline_keyboard ]; $bot->start("Selamat <b>user</b> datang di <a href='https://www.googgle.com'>Google</a>.", $options); $bot->callback_query(function () { $msg = Bot::message(); $data = $msg['data']; return Bot::answerCallbackQuery("Anda menekan tombol $data"); }); $bot->run();
Keterangan kode: untuk membuat inline_keyboard secara mudah dan cepat, gunakan method Bot::inline_keyboard()
dengan satu parameter berupa string yang polanya adalah [teks|teks]
atau [teks|URL]
. Method start($respon, $options)
adalah singkatan dari chat('/start', function() use($respon, $options){ return Bot::sendMessage($respon, $options);})
, hasilnya sama. Method callback_query()
diambil dari nama events pada Telegram Bot API (lihat daftarnya di bawah). Fungsinya untuk merespon tombol inline_keyboard jika diklik/ditekan. Sedangkan method answerCallbackQuery
adalah salah satu method bawaan Telegram untuk menampilkan notifikasi pada layar chatting bagian atas sebagai alert (peringatan).
Contoh 5 (Membalas Foto dengan Teks)
Keterangan contoh 5: bot merespon teks /start
dengan kalimat Selamat datang di bot ...
dan merespon foto yang diunggah dengan kalimat Anda baru saja mengunggah foto dengan rincian sebagai berikut:
lalu disebutkan rincian foto yang dikirim tersebut.
require 'Bot.php'; $bot = new Bot('TOKEN', 'USERNAME'); //ganti dengan TOKEN dan USERNAME dari @BotFather $bot->start('Selamat datang di bot ...'); $bot->photo(function () { $rincian = json_encode(Bot::message(), JSON_PRETTY_PRINT); return Bot::sendMessage("Anda baru saja mengunggah foto dengan rincian sebagai berikut:\n$rincian"); }); $bot->run();
Keterangan kode: Bot merespon foto yang dikirim oleh user menggunakan method photo()
yang berisi satu parameter berupa function. Cara mendapatkan rincian foto yang dikirim oleh user adalah dengan menggunakan static method bernama message()
bawaan PHPTelebot. Output method tersebut berupa array sehingga perlu di-encode dengan json_encode
supaya berubah menjadi string dan bisa dikirim ke user.
Contoh 6 (Membalas Foto dengan Foto yang Sama)
Keterangan contoh 6: bot merespon pesan teks /start
dengan kalimat Silahkan kirim foto
dan merespon foto yang diunggah dengan mengembalikan foto tersebut ke user yang mengirimnya. Berikut ini kodenya:
require 'Bot.php'; $bot = new Bot('TOKEN', 'USERNAME'); //ganti dengan TOKEN dan USERNAME dari @BotFather $bot->start('Silahkan kirim foto'); $bot->photo(function () { $msg = Bot::message(); $photo = $msg['photo'][0]['file_id']; return Bot::sendPhoto($photo); }); $bot->run();
Keterangan kode: untuk mengirim foto ke user, gunakan static method sendPhoto()
dengan parameter $photo
yang diambil dari file_id foto tesebut. Baca keterangan selengkapnya tentang method sendPhoto
Contoh 7 (Merespon pesan berupa foto, video, dokumen, stiker, dll)
require 'Bot.php'; $bot = new Bot('TOKEN', 'USERNAME'); //ganti dengan TOKEN dan USERNAME dari @BotFather $bot->start('Assalamualaikum'); $bot->chat('Hai', 'Hai juga'); $bot->chat('/help', 'Cara menggunakan bot ini adalah sebagai berikut...'); $bot->text('Kalau ada pertanyaan silahkan hubungi 08123456789'); $bot->photo('Kamu baru saja mengunggah foto'); $bot->document('Kamu baru saja mengunggah dokumen'); $bot->video('Kamu baru saja mengunggah video'); $bot->sticker('Kamu baru saja mengunggah sticker'); $bot->run();
Keterangan contoh 7: bot merespon pesan teks /start
dengan pesan teks Assalamualaikum
, pesan teks Hai
dengan pesan teks Hai juga
dan pesan teks /help
dengan kalimat Cara menggunakan bot ini adalah sebagai berikut...
. Selain teks itu, bot akan merespon setiap pesan teks dengan pesan teks Kalau ada pertanyaan silahkan hubungi 08123456789
. Bot juga merespon foto yang diunggah oleh user dengan pesan teks Kamu baru saja mengunggah foto
, merespon dokumen yang diunggah oleh user dengan pesan teks Kamu baru saja mengunggah dokumen
dan seterusnya.
Contoh 8 (Menggunakan fitur parse_mode
dan reply
dalam respon)
require 'Bot.php'; $bot = new Bot('TOKEN', 'USERNAME'); //ganti dengan TOKEN dan USERNAME dari @BotFather $bot->start('Assalamualaikum <b>user</b>',['parse_mode'=>'html']); $bot->chat('*', 'Oke'); $bot->photo('Kamu baru saja mengunggah <code>foto</code>',['parse_mode'=>'html']); $bot->video('Kamu baru saja mengunggah <i>video</i>', ['parse_mode'=>'html', 'reply' => true]); $bot->document('Kamu baru saja mengunggah <a href="https://www.google.com">dokumen</a>',['parse_mode'=>'html','disable_web_page_preview'=>true]); $bot->run();
Contoh 9 (Menggunakan tombol dalam baris / inline keyboard)
require 'Bot.php'; $bot = new Bot('TOKEN', 'USERNAME'); //ganti dengan TOKEN dan USERNAME dari @BotFather $bot->start(function () { $keyboard[] = [ ['text' => 'satu', 'callback_data' => 'satu'], ['text' => 'dua', 'callback_data' => 'dua'], ]; $reply_markup = [ 'inline_keyboard' => $keyboard ]; return Bot::sendMessage('Mari kita mulai. Silahkan klik /menu atau /help', ['reply' => true, 'reply_markup' => $reply_markup]); }); $bot->chat('satu', 'Anda memilih satu'); $bot->chat('dua', 'Anda memilih dua'); $bot->chat('tiga', 'Anda memilih tiga'); $bot->chat('empat', 'Anda memilih empat'); $bot->chat('lima', 'Anda memilih lima'); $bot->chat('/menu|/help', function () { $keyboard[] = [['text' => 'satu'], ['text' => 'dua']]; $keyboard[] = [['text' => 'tiga'], ['text' => 'empat']]; $keyboard[] = [['text' => 'lima']]; $reply_markup = [ 'keyboard' => $keyboard, 'resize_keyboard' => true, 'one_time_keyboard' => true, 'input_field_placeholder' => 'apa ini?' ]; return Bot::sendMessage('Silahkan pilih menu berikut', ['reply' => true, 'reply_markup' => $reply_markup]); }); $bot->photo(function () { $rincian = json_encode(Bot::message(), JSON_PRETTY_PRINT); return Bot::sendMessage("Anda baru saja mengunggah foto dengan rincian sebagai berikut:\n$rincian"); }); $bot->document(function () { $rincian = json_encode(Bot::message(), JSON_PRETTY_PRINT); return Bot::sendMessage("Anda baru saja mengunggah dokumen dengan rincian sebagai berikut:\n$rincian"); }); $bot->callback_query(function () { $msg = Bot::message(); $data = $msg['data']; return Bot::answerCallbackQuery("You touch $data button"); }); $bot->run();
Contoh 10
require 'Bot.php'; $bot = new Bot('TOKEN', 'USERNAME'); //ganti dengan TOKEN dan USERNAME dari @BotFather $bot->start(function () { $user = Bot::user(); $id = Bot::from_id(); $nama = "<a href='tg://user?id=$id'>$user</a>"; $tombol1 = Bot::inline_keyboard(" [Kegiatan][Info Kajian] [Grup|https://t.me/PecintaIlmuGrup] [Channel|https://t.me/PecintaIlmuChannel] "); $markup = [ 'reply' => true, 'reply_markup' => $tombol1, 'parse_mode' => 'html' ]; return Bot::sendMessage("Assalamualaikum $nama di komunitas pecinta ilmu. Silahkan pilih menu di bawah ini:", $markup); }); $bot->callback_query(function ($data) { switch ($data) { case 'Kegiatan': return Bot::editMessageText('Kegiatan yang akan diadakan dalam waktu dekat adalah Dauroh Tajwid. Selengkapnya: /info_dauroh_tajwid'); case 'Info Kajian': return Bot::editMessageText('Info kajian. Selengkapnya: /info_kajian'); case 'Daftar Dauroh Tajwid': return Bot::sendMessage("Silahkan kirim nama Anda"); } }); $bot->text(function ($text) { switch ($text) { case '/info_dauroh_tajwid': $tombol = Bot::inline_keyboard(" [Daftar Dauroh Tajwid] "); $markup = [ 'reply' => true, 'reply_markup' => $tombol ]; return Bot::sendMessage("Dauroh Tajwid insyaallah akan diadakan pada ... ", $markup); case '/info_kajian': $markup = [ 'reply' => true, ]; return Bot::sendMessage("Kajian insyaallah akan diadakan pada ... ", $markup); default: return Bot::sendMessage('Terima kasih'); } }); $bot->run();
Contoh 11 (Mengedit dan Menghapus pesan)
require 'Bot.php'; $bot = new Bot('TOKEN', 'USERNAME'); //ganti dengan TOKEN dan USERNAME dari @BotFather $bot->cmd('/edit', function(){ $edit = Bot::sendMessage("Pesan ini akan DIEDIT"); sleep(2); Bot::editMessageText($edit, ['text'=>'Pesan telah diedit']); }); $bot->cmd('/hapus', function(){ $hapus = Bot::sendMessage("Pesan ini akan DIHAPUS"); sleep(2); Bot::deleteMessage($hapus); }); $bot->run();
Cara Mudah Membuat Inline Keyboard
Ada cara mudah untuk membuat inline keyboard dengan menggunakan method Bot::inline_keyboard()
$inline_keyboard = Bot::inline_keyboard(' [Next|next] [Prev|preview] [Google|https://google.com] [Facebook|https://facebook.com] [Telegram|https://telegram.org] [Instagram|https://instagram.com] [Youtube|https://youtube.com] [Twitter|https://twitter.com] [Desainer|Danns] '); $pesan = "Selamat <b>user</b> datang di <a href='https://www.googgle.com'>Google</a>"; $options = [ 'parse_mode'=>'html', 'reply'=>true, 'disable_web_page_preview'=>true, 'reply_markup'=>$inline_keyboard ]; $bot->start($pesan, $options);
Cara Mudah Membuat Keyboard
Ada cara mudah membuat keyboard biasa (bukan inline_keyboard) menggunakan method Bot::keyboard($string)
$bot->text(function(){ $keyboard = Bot::keyboard(' [Tentang] [Fitur] [Desainer] '); return Bot::sendMessage('Silahkan pilih menu yang tersedia',['reply'=>true,'reply_markup'=>$keyboard]); });
Daftar Method Biasa
start($sambutan)
untuk menyambut user baru yang menekan tombolSTART
atau user yang mengirim pesan teks/start
kepada bot. Parameternya bisa satu berupa string, contohstart('Assalamualaikum user')
, bisa juga berupa function, contohstart(function(){ return Bot::sendMessage('Assalamualikum user');})
dan bisa juga disi dengan dua parameter (string dan array), contoh:start('Assalamualaikum *user*', ['parse_mode'=>'markdown'])
di mana array berisi rincian pesan yang dikirim (lihat dokumentasinya di: Telegram).chat($request, $response)
untuk me-response teks tertentu yang di-request oleh user, contohchat('Hai', 'Hai juga')
untuk merespon teksHai
dengan teksHai juga
atauchat('Hai', function(){return Bot::sendPhoto('fotoku.jpg');})
untuk merespon teksHai
dengan filefotoku.jpg
. Kalau untuk merespon semua teks yang dikirim oleh user, gunakan string satu bintang (*
) pada parameter pertama seperti inichat('*', 'Silahkan hubungi Admin')
atau bisa juga beginitext('Silahkan hubungi Admin')
, dua-duanya sama hasilnya.chat_array($array)
untuk membuat array chat dengan formatchat_array([$request => $response])
, contoh:chat_array(['hai' => 'hai juga', 'info' => function(){return Bot::sendMessage('ini adalah info')}, 'oke' => 'terima kasih'])
dan semisalnya.cmd($request, $response)
aliaschat($request, $response)
.all($response)
untuk me-response semua event yang belum diatur sebelumnya.- Events (lihat daftarnya di bawah).
Daftar Method Static
-
keyboard($pola)
untuk membuat keyboard dari string dengan pola[tombol]
, contoh:$tombol = Bot::keyboard(' [UTAMA] [TENTANG] [MENU] [KEMBALI] [KEDEPAN] [INFO] ');`
-
inline_keyboard($pola)
untuk membuat inline keyboard dari string dengan pola[teks|URL]
atau[teks|teks]
atau[Teks]
, contoh:$inline_keyboard = Bot::inline_keyboard(' [ Next | next ] [ Back | back ] [ Menu 1 | menu_1 ] [ Google | https://google.com ] [ Info | info ] [ Developer ] ');
-
name()
untuk mengambil username bot. -
user()
untuk mengambil nama user. -
from_id()
untuk mengambil user id. -
chat_id()
untuk mengambil chat id. -
message_text()
untuk mengambil teks yang dikirim oleh user (hanya berlaku jika user mengirim pesan teks). -
message_id()
untuk mengambil message id
Daftar Events
Ada method-method yang diambil dari nama-nama events pada Telegram Bot API. Cara menggunakannya sama dengan menggunakan method biasa, yaitu $bot->nama_method()
contoh: $bot->text()
untuk merespon pesan teks, $bot->animation()
untuk merespon pesan animasi, $bot->audio()
untuk merespon pesan audio dan seterusnya. Berikut ini daftarnya:
text
animation
audio
document
photo
sticker
video
video_note
voice
contact
dice
game
poll
venue
location
new_chat_members
left_chat_members
new_chat_title
new_chat_photo
delete_chat_photo
group_chat_created
supergroup_chat_created
channel_chat_created
message_auto_delete_timer_changed
migrate_to_chat_id
migrate_from_chat_id
pinned_message
invoice
successful_payment
connected_website
passport_data
proximity_alert_triggered
voice_chat_scheduled
voice_chat_started
voice_chat_ended
voice_chat_participants_invited
inline_query
callback_query
edited_message
channel_post
edited_channel_post