Tutorial Membuat Bot Telegram dengan Laravel 8.

Ginanjar S.B
6 min readJan 24, 2021

--

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.

Install irazasyed/telegram-bot-sdk.

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 aliasestambahkan seperti gambar berikut.

config/app.php bagian providers.
config/app.php bagian aliases.

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.

publish package.

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.

config/telegram.php

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.

BotFather

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.

@abonsapi_bot.

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.

Telegram Bot Access Token.

Kemudian edit file config/telegram.php menjadi seperti gambar dibawah ini.

config/telegram.php

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.

BotTelegramController.php

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.

routes/api.php

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.

php artisan serve
ngrok http 8000

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.

.env

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.

http://localhost:8000/api/setWebhook

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.

BotTelegramController.php

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.

chat ke abonsapibot.

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!

--

--

Ginanjar S.B

I am a web developer and flutter developer. Keep learning and sharing.