Tutorial Membuat Bot Telegram dengan Laravel 8.
Hallo kawan-kawan, pada kesempatan kali ini, saya akan menjelaskan langkah-langkah yang bisa kita lakukan untuk membuat sebuah bot telegram dengan menggunakan Laravel 8. Bot Telegram bisa difungsikan sesuai dengan kebutuhan kawan-kawan, tetapi pada artikel kali ini kita hanya akan membasah bagaimana cara menginstall dan menjalankan package yang tersedia untuk Laravel. Package yang akan digunakan pada artikel ini adalah https://github.com/irazasyed/telegram-bot-sdk dengan versi terbaru yaitu 3.4.
Baik, langsung saja kita buat project baru untuk Laravel versi 8. Perintah yang digunakan untuk membuat project laravel baru yaitu composer create-project laravel/laravel bot-telegram
atau dengan laravel new bot-telegram.
Jika sudah selesai proses instalasi Laravelnya, selanjutkan masuk ke directory project yang baru saja kita buat, yaitubot-telegram
dengan perintah cd bot-telegram
. Kemudian install package telegram-bot-sdk dengan menggunakan perintah composer require irazasyed/telegram-bot-sdk
, tunggu sampai proses instalasi package selesai. Perintah tersebut akan menginstall package dengan versi yang terbaru yaitu 3.4.
Kemudian buka project bot-telgram tadi dengan code editor kesayangan kawan-kawan, disini saya menggunakan VSCode. Jika sudah, daftarkan package tadi ke dalam file app.php di dalam folder config.
Pada bagian providers
dan aliases
tambahkan seperti gambar berikut.
Selanjutnya adalah kita publish provider yang telah kita install tadi dengan perintah php artisan vendor:publish —provider="Telegram\Bot\Laravel\TelegramServiceProvider".
Maka akan tampil seperti gambar dibawah ini.
Setalah publish vendor telah dilakukan, maka akan ada file baru dengan nama telegram.php
di dalam directory config
. Pada tahap ini, kita telah berhasil menginstall pacakge telegram-bot-sdk kedalam project laravel kita.
Selanjutnya kita harus mendapatkan bot token untuk mengintegrasikan bot telegram dengan project laravel yang telah kita buat yaitu dengan cara membuka aplikasi telegram, kemudian cari BotFather dengan mengetikan @BotFather
di pencarian chat pada aplikasi telegram mobile atau pun pc/laptop.
Setelah itu, gunakan perintah /newbot
untuk membuat bot baru. Jika kawan-kawan ingin tau lebih banyak perintah apa saja yang tersedia, bisa menggunakan perintah /help
, maka akan tampil list command yang dapat kawan-kawan gunakan. Oke lanjut, setelah kita mengirimkan perintah /newbot
kepada BotFather, kemudian masukan nama bot yang kawan-kawan inginkan, disini saya menggunakan nama abonsapi
dengan username bot abonsapi_bot
seperti terlihat pada gambar berikut.
Jika berhasil, maka kawan-kawan akan mendapatkan sebuah Token Access yang bisa kita gunakan untuk mengintegrasikan abonsapi_bot
. Caranya yaitu buka .env
dan tambahkan di baris paling bawah dengan variable seperti gambar berikut.
Kemudian edit file config/telegram.php
menjadi seperti gambar dibawah ini.
Selanjutnya kita membuat Controller baru agar bot bisa berinteraksi dengan user. Apabila kita ingin membuat bot dapat berinteraksi secara langsung dengan user, maka kita membutuhkan sebuah webhook. Webhook harus menggunakan protocol https, jadi kita tidak bisa menjalankannya di local dengan http://localhost:8000, solusinya adalah dengan ngrok
tetapi pada artikel ini kita tidak membahas bagaimana cara instalasi ngrok
. Kawan-kawan bisa cari di google sesuai kebutuhan sistem operasi yang digunakan.
Saya anggap teman-teman sudah menginstall ngrok
atau mungkin upload ke vps agar bot bisa berjalan melalui webhook yang akan kita daftarkan. Disini saya menggunakan ngrok
, langsung saja kita buat Controller baru dengan perintah php artisan make:controller BotTelegramController
.
Edit BotTelegramController seperti pada gambar dibawah ini. Tambahkan package Telegram yang telah kita daftarkan tadi di config/app.php
. Saya akan coba jelaskan untuk method setWebhook()
digunakan untuk mendaftarkan url webhook kita. Kemudian untuk method commandHandlerWebHook()
digunakan sebagai url webhook yang nantinya akan digunakan oleh bot, nanti kita akan lihat contohnya. Sedangkan untuk Telegram::commandsHandler(true)
digunakan untuk menghandle command yang dikirimkan oleh user ke bot melalui url webhook yang terdaftar.
Selanjutnya kita akan membuat routingnya. pada gambar dibawah ini, setWebhook
akan digunakan untuk mendaftarkan url webhook yang nanti kita akan buat dengan ngrok
dan route ini hanya dijalankan sekali saja. Sedangkan untuk route abonsapi/webhook
adalah route yang nanti akan digunakan oleh bot setiap kali mendapatkan chat dari user dan menjalankan method commandHandlerWebHook
pada BotTelegramController
. Disini kita menggunakan route api
, karena jika menggunakan routeweb
kita butuh melakukan konfigurasi pada CSRF token, ini disebabkan karena pemanggilan route webhook menggunakan method POST, jadi kita memanfaatkan route api
.
Oke pada tahap ini kita hampir selesai, pertama jalankan project laravel di local dengan php artisan serve
, selanjutkan jalankan ngrok http 8000
pada terminal yang berbeda seperti pada gambar berikut.
Wokeh, karena sudah jalan, disini kita telah mendapatkan url https://84dd3a66385e.ngrok.id
yang akan mengarahkan pada http://localhost:8000
di local. Copy url dengan protocol https yang telah kita dapatkan dan paste pada file .env
seperti gambar dibawah ini.
Jika sudah, buka browser kesayangan kawan-kawan, kemudian akses http://localhost:8000/api/setWebhook
, seperti yang telah saya jelaskan sebelumnya, pada route ini digunakan untuk mendaftarkan url webhook kita ke bot telgram. Jika berhasil maka akan tampil seperti gambar berikut ini.
Pada tahap ini sebeneranya bot kita sudah aktif dan siap untuk digunakan, agar lebih meyakinkan mari kita buat sebuah feedback kepada user. Saat user mengirimkan chat halo
kepada bot, maka bot akan merespon dengan halo username
dari user tersebut dengan melakukan perubahan pada bagian BotTelegramController
menjadi seperti gambar dibawah ini.
Okeh beres, mari kita coba dengan mencari username bot yang telah kita buat, disini username bot yang telah saya buat yaitu @abonsapi_bot
pada pencarian di aplikasi telegram mobile ataupun pc/laptop. Kemudian klik Start dan kirim chat halo
ke bot. Maka akan dibalas oleh bot dengan Halo username
.
Oke sampai sini kita telah berhasil menginstall dan mengaktifkan bot telegram dengan Laravel 8 dan pacakage telegram-bot-sdk. Tinggal dilakukan pengembangan lebih lanjut sesuai dengan kebutuhan kawan-kawan. Mungkin di artikel-artikel selanjutnya saya akan bahas lagi bagaimana cara membuat command seperti /help
untuk menampilkan list command yang tersedia, /phonenumber
untuk mendapatkan phone number dari user, mengirim gambar dan lain sebagainnya. See you soon!
Kalian bisa melihat source code disini.
Terimakasih kawan-kawan yang telah membaca artikel ini sampai habis.
Keep learning by doing. Please, don’t forget to share it!