Saya sudah mengenal Massenger Telegram sejak tahun 2016, app telegram ini biasa saya gunakan dalam aktivitas kantoran. Seperti kordinasi dengan rekan se-tim dan saling berbagi file berukuran kecil seperti data exel maupun word. Seiring dengan berjalanan waktu, saya menggunakan telegram setiap hari dan berjumpa dengan salah satu bot saya lupa namanya fungsinya saja yang saya ingat yaitu buat translate bahasa. Pada saat itu juga jadi kepikiran gimana cara buat BOT kayak gini yah? mulai lah saya cari referensi tentang bot telegram sampai akhirnya satu tutorial dari Bang Hasan yang akan saya share Tutorialnya kali ini. oke langsung saja sobat.

Apa itu Bot Telegram ?

Yah seperti biasanya bot / robot yang bisa membantu mempermudah pekerjaan atau aktifitas Bot telegram adalah bot modern paling mudah dibuat, dibandingkan bot messenger sejenis, seperti
Yahoo

  1. Gtalk
  2. Facebook
  3. Line
  4. HiChat
  5. Whatsapp, dan lainnya.

Modern? Mungkin dulu ada IRC, namun saat ini
sudah bukan zamanya chat menggunakan basis teks
ala IRC, yang mana sudah sangat menyusut
penggunanya, bahkan sudah tidak dikenal dikalangan generasi masa kini. Karenanya, bot telegram termasuk bot masa kini yang relatif paling mudah dibuat.

2 Tipe Bot Telegram

Bot Telegram adalah bot yang saat ini mulai populer dipergunakan. Seiring Messenger Telegram
yang mulai diinstall banyak orang dan dipergunakan untuk percakapan sehari-hari. Memang
Telegram belum sepopuler Whatsapp, BBM, maupun Line.
Namun, bisa jadi suatu saat akan menjadi suatu
messenger yang potensial mendapatkan hati dikalangan
masyarakat maya.

Bot Telegram menurut katagori saya ada 2 jenis :

1. Bot API

adalah bot resmi yang disediakan oleh developer telegram yang merupakan entity
tersendiri. Fungsi utamanya membantu user manusia.

Kelebihan: disupport resmi oleh telegram, mudah pengoperasian
Kekurangan: memiliki keterbatasan harus di mulai oleh user orang dulu baru bisa kirim
pesan, sesama bot API tidak bisa berkomunikasi, tidak seleluasa user biasa dalam segala
fitur (membuat grup, invite user, dlsb).

2. Bot Proto

saya menyebutnya demikian, entah istilah ‘pakem’ lainnya apa. Yakni bot yang dibuat
dengan memanfaatkan aplikasi client telegram, menggunakan akun resmi pada
umumnya seperti user biasa, yang dimodif sedemikian rupa, sehingga dapat
dipergunakan menjadi aplikasi yang diperuntukkan menjalakan perintah tertentu,
memproses pesan, dan sebagainya, layaknya sebuah bot.

Kelebihan: memiliki fitur semua hal yang ada pada user.
Kekurangan: tidak disupport oleh resmi telegram, dibuat secara kontribusi, bahkan
pengembangannya saat ini terhenti.

Kegunaan Bot

Tidak bisa dipungkiri, bot benar-benar sangat membantu sebagai ‘shortcut’ maupun asisten
untuk menjalankan fungsi-fungsinya secara cepat dan tepat.
Saat ini mulai banyak bertaburan bot di telegram :

 Bot Membantu Pekerjaan dan Aktivitas Harian
Seperti kalkulator yang menghitungkan
pekerjaan sulit, konversi satuan, menghitungkan
kurs, mengecek status tertentu (masa expired,
domain, ping, traceroute, dlsb), mengecek resi
ekspedisi JNE, Tiki, POS, mengecek jadwal kereta
api, mengecek harga barang, membandingkan, dlsb. Cek email otomatis, dlsb.

 Bot Membantu Menemukan Informasi
Mendapatkan informasi halal dari MUI, pencarian cepat search engine, menemukan
tempat-tempat restaurant terdekat dengan posisi kita, mendapatkan berita dari surat
kabar dengan tema tertentu, dlsb. Informasi gempa, cuaca, jadwal sholat, dlsb.

 Bot sebagai hiburan dan sosial media
Mengirim pesan secara cepat di media sosial, notifikasi otomatis, mengecek
pertemanan, melike, main game, dlsb.

 Bot untuk mengumpulkan informasi
Membuat voting, mengoleksi saran dan masukan, respondensi, dan sebagainya.

 Bot sesuai kebutuhan dan fungsinya Ya, sangat banyak ragamnya.. bisa dieksplorasi sendiri yak 
Seperti saya sendiri, untuk melakukan notifikasi dari BCA jika ada transferan, kemudian
ada juga teman saya membuat bot untuk menyalakan lampu, untuk deteksi tingkat air,
dlsb. Secara teori menjadi mampu melakukan controlin dan remote pekerjaan rumah.

Membuat Bot Telegram

Sebenarnya tidak harus menjadi seorang developer untuk
membuat bot telegram, karena saat ini sudah tersedia bot
untuk membuat bot. Mirip istilahnya di dunia kita, TFT, Trainer for Trainer 
Bot creator bot ini, yang paling terkenal saat ini adalah
@manybot dan @chatfuelbot. Dengan segala
kekurangan dan kelebihannya, tentu saja bot instan
tersebut dapat kita manfaatkan atau malah justru kita
tinggalkan karena tak mampu merngcover kebutuhan kita.
Namun, pada sesi ini, kita benar-benar akan membuat bot bukan dari bot. Secara real, yakni
dari langkah awal sampai tahap developing.
Setidaknya, ada 2 tahap yang harus dilakukan :
1. Mendaftarkan Bot ke Official Telegram Bot, dalam hal ini adalah @BotFather
2. Membuat engine bot kita, agar berfungsi melaksanakan tugas sesuai yang kita mau.
Untuk mendevelop bot telegram, tentu saja sangat direkomendasikan menggunakan PC atau
Laptop. Sedangkan yang menggunakan handphone, sebaiknya mulai menyalakan laptopnya dari sekarang 
Pada tutorial kali ini, akan disajikan screenshot yang diambil dari telegram versi desktop. Secara
tampilan sedikit ada perbedaan dengan versi mobile. Namun, tidak berubah terlalu signifikan.

Cara Kerja Bot

Secara sederhana, dapat diilustrasikan berikut ini :

cara kerja bot telegram
cara kerja bot telegram

Keterangan Ilustrasi

1. User mengirim pesan.

Hal ini sudah jelas. Bahwa user dalam hal ini orang, harus mengirim pesan terlebih
dahulu kepada bot. Tidak diizinkan oleh telegram, bot yang mengirim duluan. Hal ini
untuk mencegah kasus spamming.
Biasanya diawali dengan /start yang artinya user sudah mengizinkan diri untuk
menerima pesan dari bot.

2. Bot Menerima Pesan

Bot akan menerima pesan. Saat menerima pesan, perlakuan bot adalah sesuai apa yang
kita seting. Secara default, bot akan menyimpan pesan yang masuk. Sampai kita
mengambilnya.

3. Mengambil Pesan

Secara default bot akan menyimpan data pesan yang masuk (poin 2), kemudian engine
harus aktif meminta pesan. Metode seperti ini disebut sebagai polling.

Metode lain, yaitu webhook. Dimana kita akan seting bot agar pada proses ke-2, saat bot
menerima pesan, disuruh langsung mengirimkan ke web (engine) yang kita inginkan.

4. Memerintahkan Bot Membalas Pesan

Setelah pesan diterima, pesan harus diproses, apakah diabaikan, atau dibalas. Jika
dibalas, apa kiranya balasannya. Maka di sinilah peranan engine yang akan kita buat.
Memproses pesan, mengolahnya, kemudian menyiapkan jawaban. Sesudah jawaban
ada, barulah kita perintahkan agar si bot membalas pesan sesuai definisi yang kita mau.
Setiap ada kata ‘kita’ sebenarnya kita ada di posisi engine ini.
5. Bot Membalas Pesan
Bot menerima pesan kita, kemudian melanjutkan mengirim balasan / respon kepada
user.

Bapak Bot (@BotFather)

Dalam dunia per-bot-an telegram, memang agak aneh, bot
itu dilahirkan dari seorang Bapak, bukan seorang ibu. Kenapa? Entah, belum tau 
Maka sebagaimana kita akan mengodpsi bot, maka harus
minta izin ke orang tuanya. Maka, yang wajib kita kenal
pertama kali adalah Bapaknya Bot, yakni Bot Father dengan
username @BotFather.
Kemudian tambahkan ke dalam pertemanan, lanjutkan
dengan berkomunikasi dengan baik-baik. Lazimnya kita mau meminang anak orang, bersikaplah
lemah lembut dan sesopan mungkin. #halah
Cara menambahkan Bapak Bot adalah pada pada kolom search kotak pencarian ketikkan
@botfather, maka akan keluar daftar namanya, kemudian klik BotFather.

Bot father
Bot father

PENTING: Cara penambahan ini nantinya juga kita pakai setiap kali menambahkan bot yang kita
buat atau hendak kita pakai. Jadi ingat-ingat caranya eaa,..

Melalui Bapak Bot inilah semua sifat bawaan lahirnya akan diturunkan, eh, maksudnya semua pengaturan dasar bot dapat kita lakukan.
Yakni diantaranya :

 Membuat Bot
 Menghapus Bot
 Mengganti Nama Bot
 Memberi keterangan tentang bot
 Memberi informasi profil bot
 Mengatur foto atau gambar bot
 Mengatur privacy bot, hanya menerima kata perintah saja atau semua jenis kata.
 Mengatur bot agar bisa join ke group atau tidak.
 Mereset token bot
 Mengatur bot memiliki fitur inline

Mendaftarkan Bot

Berkomunikasilah dengan Bapak Bot, kemudian daftarkan.
Ada 3 hal yang harus kita lakukan :
1. Nama Bot, yang akan kita isikan
2. Username Bot, kita isikan, unik tidak boleh ada sebelumnya
3. Token Bot, akan diberikan oleh Bot Father sebagai kunci akses kita mengendalikan bot.

Ketikkan /newbot di @BotFather, lalu isikan Nama Bot dan UsernameBot.

Daftar ke BOT ke botfather
Daftar ke BOT ke botfather

Nah, yang terpenting di sini adalah tokennya, yakni :
181411023:AAGU0md-4dZuF6IJMKpy_yWJaOvkPn-yWag

Dimana token tersebut memuat angka botID nya, yakni: 181411023
Token itu ibarat akta kelahiran. Sepanjang kita memegang akta kelahirannya si bot, maka kita
akan dianggap sebagai pengasuhnya yang baik dan tidak sombong.
Dan bermodal bot token inilah kita akan
pergunakan dilangkah selanjutnya, karena kita
sudah dikenali sebagai pengasuh yang baik itu.
Eh iya, biar sedikit cantik penampilannya, sebelum
kita ajak bermain-main, ada baiknya kita sedikit
rias penampakan.. bot nya kita kasih Foto.

Caranya ketikkan : /setuserpic kemudian pilih
atau masukkan username bot, lalu upload file
fotonya.
Pada saat kirim foto, pastikan dicentang tulisan
Send Compressed Image sebagai tanda bahwa
file yang kita kirim adalah berupa foto, bukan
sebagai dokumen, dan tidak perlu diisi apa-apa
bagian caption.

Selanjutnya mari kita coba test tambahkan pertemanan dan memulainya.

Seperti langkah sebelumnya, klik di pencarian, ketikkan nama bot sampai keluar daftar list
botnya, dengan wajah cakep botnya tersebut yang baru kita update, kemudian klik untuk
ditambahkan.

bot diam
bot diam

Seperti yang kita lihat, bot diam aja membisu seribu bahasa.
Bot yang baru lahir dari Bapak Bot ini, belum bisa melakukan apa-apa. Jadi jangan harap bisa
langsung pinter berbicara ketika masih bayi, maka tugas kita, sebagai pengasuhnya, mengajari
cara berbicaranya, cara mengolah pesan, memproses, dan menjawab dengan tutur kata dan bahasa yang baik 
Cara nya bagaimana? Kita buat engine-nya. Kita bantu biar si bot bocah tumbuh makin besar, dikemudian hari, bertemu dengan banyak orang, dan bersikap secara dewasa 
Okelah, kita cukupkan dulu materi dengan Bapak Bot dan percekapan sejenak dengan bayi bot.
Langkah ini sudah cukup sekian, yang diperlukan sebagai bahan berikutnya hanya tokennya saja.
Tinggalkan sementara, kita lanjutkan ke langkah berikutnya. Live must go on..!

Engine Bot

Spesifikasi

Sebenarnya tidak ada spesifikasi khusus untuk sistem. Lebih tepatnya mengacu pada rata-rata
secara umum yang dipergunakan untuk membuat aplikasi. Pengecualian
jika kita berbicara dalam skope yang besar dan luas. Namun, dalam
hal materi ini titik penekanan untuk spesifikasi lebih diarahkan
pada resource sistemnya.

Requirment

 SDM (Sumber Daya Manusia)
Jelas kebutuhan utamanya.
Dalam hal ini sudah memahami bahasa pemrograman.
Ya, WAJIB BISA BAHASA PEMROGRAMAN.
Bisa penulis katakan, membuat bot adalah memanfaatkan atau memberdayakan
kemampuan yang ada. Jika saya mampu bahasa pemrograman A, kita pake A untuk
develop. Jika bisanya B, kita pake B sebagai bahasa pemrogramannya, dst.
Sehingga, Jika belum bisa, mohon maaf, sementara belum bisa melanjutkan bahasan ini.
Bisa belajar dahulu sesi sebelumnya, yakni, belajar membuat aplikasi atau web
menggunakan bahasa PHP, Javascript, Python, C++, NET, dan sebagainya.
Selain itu, semangat ngoprek dan kemauan keras, sangat dibutuhkan bilamana terjadi
masalah tidak lekas menyerah. Serta menyempatkan diri meluangkan waktunya untuk mencoba berulang kali. Penasaran, adalah hal baik di sini

 Operating System
Sistem Operasi boleh menggunakan apapun. Windows, Linux, iOS. Yang terpenting
sanggup handle troble sendiri tentunya hehe.. Penulis sendiri menggunakan OS Linux,
Distro Ubuntu 16.04 terbaru, lantaran distro ubuntu adalah sangat familiar buat banyak pengguna dan mempunya komunitas yang besar. Sehingga lebih cocok untuk diaplikasikan dan diajarkan.

 BAHASA PEMROGRAMAN
Ruang lingkup bahasa pemrograman yang diapakai dalam sesi kali ini adalah bahasa
pemrograman PHP. Diharuskan sudah bisa dan pernah membuat minimal suatu sistem
kecil baik web atau aplikasi menggunakan PHP. Sehingga mengerti kesalahan-kesalahan syntax dan logika pembuatan program.  Editor
Dipersilakan menggunakan editor favorit sesuka hati. Namun dianjurkan menggunakan
editor yang memang untuk developer programmer, seperti notepad++, editplus,
sublimetext, dlsb. Penulis sendiri sangat nyaman dan familiar dengan sublime-text,
dengan fiturnya yang sangat mempermudah coding.
Tidak dianjurkan menggunakan notepad, apalagi wordpad. Kenapa? Karena akan lebih
sulit melakukan debugging seperti line nomor berapa yang error, wordwrap yang sering membuat kacau, dlsb.

 Lain-lain
Seperti camilan, minuman, dan lain sebagainya. Silakan disesuaikan. No Smoking please hehe

 Karena merokok berbahaya bagi kesahatan diri sendiri, dan orang-orang sekitarnya yang menghirupnya.

Asumsi

 PC sudah terinstall OS dengan baik, lengkap dengan server side semacam
XAMPP/WAMPP untuk Windows. Sedangkan untuk OS linux sudah terinstall PHP-cli.
Tidak wajib namun dianjurkan, adalah Apache atau Nginx, serta database baik mySQL, atau mariaDB.

 User sudah biasa menggunakan bahasa pemrograman PHP, sudah tahu istilah command
line, prompt, console, path, folder, file, cara menjalankan PHP-cli, dan istilah-istilah umum lainnya

FORMAT UMUM REQUEST BOT

Semua request ke bot telegram, baik dipergunakan untuk GET ataupun POST menggunakan format seperti ini:
https://api.telegram.org/bot<token>/METHOD_NAME
Dan format ini ketika sudah diisi akan menjadi sakral untuk diketahui orang lain, karena memuat
informasi token di dalamnya.

Informasi Bot (Methode getMe)

Untuk pertamakalinya, mari kita test bot yang telah kita adopsi
dari bapak bot. Benarkah sudah aktif dan siap untuk menerima
request dari kita?

Gunakan metode getMe, maka kita masukkan ke browser adalah :
https://api.telegram.org/bot181411023:AAGU0md-4dZuF6IJMKpy_yWJaOvkPn-yWag/getMe

Maka hasilnya kira-kira begini :
{“ok”:true,”result”:{“id”:181411023,”first_name”:”Pertama
Bot”,”username”:”PertamaBot”}}
Informasi tersebut menandakan bahwa kita sudah sukses berkomunikasi secara langsung
dengan bot, meminta informasi tentang siapa dirinya si bot, dan dia menjawab bahwa ID nya
adalah 181411023 dengan nama depannya Pertama Bot dan usernamenya PertamaBot.

Mengambil Pesan (Polling: metode getUpdates)

Mengambil pesan dengan metode getUpdates disebut juga metode polling (ingat ilustrasi di
atas). Ini adalah cara terbaik yang dipergunakan saat developing. Dengan polling ini kita bisa
langsung mengetahui error-error yang terjadi ketika dijalankan di localhost. Ini termasuk kelebihan bot telegram, yang mana bot lain biasanya hanya support metode webhook saja.

Untuk mengambil pesan menggunakan polling ini, dapat langsung kita akses :

https://api.telegram.org/bot181411023:AAGU0md-4dZuF6IJMKpy_yWJaOvkPn-yWag/getUpdates

Jika hasilnya begini:

{“ok”:true,”result”:[]}

Artinya berhasil mengambil pesan, hanya saja pesannya (result) tidak ada.
Karena di awal kita sudah pernah berkomunikasi dengan bot, seharusnya kira-kira hasilnya tak

jauh dari begini :

{“ok”:true,”result”:[{“update_id”:858522757,
“message”:{“message_id”:1,”from”:{“id”:213567634,”first_name”:”BangHasan”,”last_name”
:”HS”,”username”:”hasanudinhs”},”chat”:{“id”:213567634,”first_name”:”BangHasan”,”last
_name”:”HS”,”username”:”hasanudinhs”,”type”:”private”},”date”:1467087994,”text”:”\/st
art”,”entities”:[{“type”:”bot_command”,”offset”:0,”length”:6}]}},{“update_id”:8585227
58,
“message”:{“message_id”:2,”from”:{“id”:213567634,”first_name”:”BangHasan”,”last_name”
:”HS”,”username”:”hasanudinhs”},”chat”:{“id”:213567634,”first_name”:”BangHasan”,”last _name”:”HS”,”username”:”hasanudinhs”,”type”:”private”},”date”:1467087996,”text”:”
halowww..”}}]}

Semua pesan yang kita terima maupun kita kirim, nantinya selalu dalam bentuk JSON. Apa itu
JSON? Sebaiknya di google saja, tidak cukup waktu saya buat menuliskannya di sini. Mungkin
edisi revisi ebook ini berikutnya. Yang jelas seperti itu, depannya dan akhirnya ditandai dengan
diapit tanda kurung kurawal, diikuti pesan-pesan di dalamnya.
RIBET? Enggak usah takut.

Semua hal yang dikhawatirkan tidak akan terjadi kok, tidak akan menakutkan. Bayi bot tidak akan menerkam kita, gigitannya juga tidak menyakitkan 
Karena kita menggunakan PHP semua masalah komunikasi dengan JSON ini cepat tuntas dengan
mudah. Gak sampai di-PHP-in.
Masih ada beberapa tambahan parameternya, yakni offset dan limit. Yang akan selalu kita
pakai nanti pada praktikum pembuatan bot.
Sekilas saja, bahwa Offset untuk mulai dari alamat mana kita ambil pesannya, dan limit untuk
membatasi berapa banyak pesan yang diambil. Biasanya cukup diambil satu per satu aja, biar
bisa kita proses pesannya trus langsung dibalasi.
Sampai disini dulu, penjelasan tentang mengambil pesan. Boleh di by pass untuk sementara
waktu, masuk ke bahasan praktikum buat bot. Baru nanti balik ke sini buat memahaminya.

Mengirim Pesan (metode sendMessage)

Setelah pesan diperoleh, tentu kita pengen membalasnya. Biar bot
nya tidak diam seribu bahasa. Dalam hal ini baik poll maupun
webhook, menggunakan metode sendMessage.
Dengan parameter sederhana nan wajibnya adalah:
chat_id : berisi nomor id user untuk dikirimi pesan.
text : pesan yang akan dikirimkan.

Kalau text atau pesan yang akan dikirim kan sudah jelas, suka-suka kita.
Lho, chat_id dapat diketahui darimana ini?

Bisa kita ketahui sebenarnya, kalau kita teliti pada bahasan Mengambil Pesan di dapatkan ID nya
kita :

chat id
chat id

Hooo.. serem ya? Iya klo dilihat secara langsung memang serem alias mata harus melotot.

Langsung, cap cussh.. kita praktekin, coba kirim sesuatu dari bot ke diri sendiri.
https://api.telegram.org/bot181411023:AAGU0md-4dZuF6IJMKpy_yWJaOvkPn-yWag/
sendMessage?chat_id=213567634&text=Pesan%20sudah%20diterima%20dengan%20baik,%20terima
kasih!
dan hasilnya :
{“ok”:true,”result”:{“message_id”:5,”from”:{“id”:181411023,”first_name”:”Pertama
Bot”,”username”:”PertamaBot”},”chat”:{“id”:213567634,”first_name”:”BangHasan”,”last_n
ame”:”HS”,”username”:”hasanudinhs”,”type”:”private”},”date”:1467089975,”text”:”Pesan
sudah diterima dengan baik, terimakasih!”}}

Meluncur cek ke telegram, horeee.. ada pesan dari bot :

Pesan dari bot
Pesan dari bot

Penulis pas praktek di awal-awal sampai disini, dapat pesan balasan dari bot saja sudah sangat
bahagia rasanya, apalagi nanti melihat senyummu.. #eaa Semoga demikian, para peserta merasakan kebahagiaan pertama bermain dengan bot.

Membuat (Engine) Bot Sederhana Sendiri

Bermodalkan 3 metode komunikasi dengan bot di atas, sudah cukup buat
kita langsung membuat engine bot sederhana. Kita coba dengan metode
polling, dengan konsep :
1. Engine akan meminta pesan secara berkala, terus menerus ke bot.
2. Jika ada pesan masuk, kita proses. Kita pilah pesannya apa. Jika
pesannya cocok, akan kita atur pean balasan. Jika tidak cocok, ucapkan terimakasih saja.
3. Setelah pesan balasan sudah ada, kita kirimkan ke bot, biar menyampaikan ke user nya.
4. Proses kembali ke nomor 1.
Ini merupakan basik atau pokok untuk dikembangkan menjadi lebih serius. Yakni keseriusannya nanti ada pada pengolahan pesan, nomor 2. Selebihnya adalah asesoris 
Mari kita praktekan ilmu PHP nya, dengan asumsi-asumsi seperti diatas, ini bukan materi dasar
pemrograman yak, jadi sudah dianggap bisa. Hanya sedikit saja nanti dijelaskan. Penjelasannya
juga sudah disisip-sisipkan pada coding-annya.
‘Alat perang’-nya juga sudah siap bukan?
Test dulu, menjalankan PHP-cli nya, buat cek versi.

Langsung buka editor favorit, tentu saja saya pakai sublime-text, editor terbaik bagi saya
pribadi.

<?php

/*
Pesan: baca dengan teliti, penjelasan ada di baris komentar yang disisipkan.
Bot tidak akan berjalan, jika tidak diamati coding ini sampai akhir.
*/

//isikan token dan nama botmu yang di dapat dari bapak bot :
$TOKEN = "254590624:AAEP4hI0XzUDr9KkH9-aVs4UYBHy1joX4bc";
$usernamebot= "@nodebmdobot"; // sesuaikan besar kecilnya, bermanfaat nanti jika bot dimasukkan grup.

// aktifkan ini jika perlu debugging
$debug = false;

// fungsi untuk mengirim/meminta/memerintahkan sesuatu ke bot
function request_url($method)
{
global $TOKEN;
return "https://api.telegram.org/bot" . $TOKEN . "/". $method;
}

// fungsi untuk meminta pesan
// bagian ebook di sesi Meminta Pesan, polling: getUpdates
function get_updates($offset)
{
$url = request_url("getUpdates")."?offset=".$offset;
$resp = file_get_contents($url);
$result = json_decode($resp, true);
if ($result["ok"]==1)
return $result["result"];
return array();
}

// fungsi untuk mebalas pesan,
// bagian ebook Mengirim Pesan menggunakan Metode sendMessage
function send_reply($chatid, $msgid, $text)
{
global $debug;
$data = array(
'chat_id' => $chatid,
'text' => $text,
'reply_to_message_id' => $msgid // <---- biar ada reply nya balasannya, opsional, bisa dihapus baris ini
);
// use key 'http' even if you send the request to https://...
$options = array(
'http' => array(
'header' => "Content-type: application/x-www-form-urlencoded\r\n",
'method' => 'POST',
'content' => http_build_query($data),
),
);
$context = stream_context_create($options);
$result = file_get_contents(request_url('sendMessage'), false, $context);

if ($debug)
print_r($result);
}

// fungsi mengolahan pesan, menyiapkan pesan untuk dikirimkan

function create_response($text, $message)
{
global $usernamebot;
// inisiasi variable hasil yang mana merupakan hasil olahan pesan
$hasil = '';

$fromid = $message["from"]["id"]; // variable penampung id user
$chatid = $message["chat"]["id"]; // variable penampung id chat
$pesanid= $message['message_id']; // variable penampung id message

// variable penampung username nya user
isset($message["from"]["username"])
? $chatuser = $message["from"]["username"]
: $chatuser = '';

// variable penampung nama user

isset($message["from"]["last_name"])
? $namakedua = $message["from"]["last_name"]
: $namakedua = '';
$namauser = $message["from"]["first_name"]. ' ' .$namakedua;

// ini saya pergunakan untuk menghapus kelebihan pesan spasi yang dikirim ke bot.
$textur = preg_replace('/\s\s+/', ' ', $text);

// memecah pesan dalam 2 blok array, kita ambil yang array pertama saja
$command = explode(' ',$textur,2); //

// identifikasi perintah (yakni kata pertama, atau array pertamanya)
switch ($command[0]) {

// jika ada pesan /id, bot akan membalas dengan menyebutkan idnya user
case '/id':
case '/id'.$usernamebot : //dipakai jika di grup yang haru ditambahkan @usernamebot
$hasil = "$namauser, ID kamu adalah $fromid";
break;

// jika ada permintaan waktu
case '/time':
case '/time'.$usernamebot :
$hasil = "$namauser, waktu lokal bot sekarang adalah :\n";
$hasil .= date("d M Y")."\nPukul ".date("H:i:s");
break;

// balasan default jika pesan tidak di definisikan
default:
$hasil = 'so deng tai ona';
break;
}

return $hasil;
}

// jebakan token, klo ga diisi akan mati
// boleh dihapus jika sudah mengerti
if (strlen($TOKEN)<20)
die("Token mohon diisi dengan benar!\n");

// fungsi pesan yang sekaligus mengupdate offset
// biar tidak berulang-ulang pesan yang di dapat
function process_message($message)
{
$updateid = $message["update_id"];
$message_data = $message["message"];
if (isset($message_data["text"])) {
$chatid = $message_data["chat"]["id"];
$message_id = $message_data["message_id"];
$text = $message_data["text"];
$response = create_response($text, $message_data);
if (!empty($response))
send_reply($chatid, $message_id, $response);
}
return $updateid;
}

// hapus baris dibawah ini, jika tidak dihapus berarti kamu kurang teliti!

// hanya untuk metode poll
// fungsi untuk meminta pesan
// baca di ebooknya, yakni ada pada proses 1
function process_one()
{
global $debug;
$update_id = 0;
echo "-";

if (file_exists("last_update_id"))
$update_id = (int)file_get_contents("last_update_id");

$updates = get_updates($update_id);

// jika debug=0 atau debug=false, pesan ini tidak akan dimunculkan
if ((!empty($updates)) and ($debug) ) {
echo "\r\n===== isi diterima \r\n";
print_r($updates);
}

foreach ($updates as $message)
{
echo '+';
$update_id = process_message($message);
}

// update file id, biar pesan yang diterima tidak berulang
file_put_contents("last_update_id", $update_id + 1);
}

// metode poll
// proses berulang-ulang
// sampai di break secara paksa
// tekan CTRL+C jika ingin berhenti
while (true) {
process_one();
sleep(1);
}

// metode webhook
// secara normal, hanya bisa digunakan secara bergantian dengan polling
// aktifkan ini jika menggunakan metode webhook
/*
$entityBody = file_get_contents('php://input');
$pesanditerima = json_decode($entityBody, true);
process_message($pesanditerima);
*/

/*
* -----------------------
* Grup @botphp
* Jika ada pertanyaan jangan via PM
* langsung ke grup saja.
* ----------------------

* Just ask, not asks for ask..

Sekian.

*/

?>

Pastikan, isi source codenya dibaca perlahan-lahan dan jika ada yang perlu diisi, isikan, jika ada
yang perlu dihapus, ya dihapus.
Yang pasti harus diganti adalah variable $TOKEN dan $usernamebot nya.
Token di dapat dari bapak bot, seperti yang terdapat penjelasan sebelumnya.

Menjalankan Bot

Untuk menjalankannya, sangat dianjurkan dilakukan pada command line. Bukan diakses melalui
browser. Kenapa? Karena keterbatasan browser yang terdapat setingan timeout, atau terjadi
komunikasi header ke server (APACHE/NGINX/atau lainnya).
Padahal bot ini, kasus metode polling, sesungguhnya tidak memerlukan server tersebut. Tinggal
dieksekusi saja langsung dari command line.
Jalankan dengan perintah: php pertamabot.php

run php bot
run php bot

Jika file php sudah di edit dengan benar, maka akan tampak kira-kira seperti itu. Tanda – artinya
tidak ada pesan yang diterima oleh bot.

tampak hasil respon bot
tampak hasil respon bot

Sedangkan tanda + berarti ada pesan yang
diterima, kemudian di proses.
Kemudian test ke telegram, cobalah
berinteraksi dengannya.

TINGGALKAN KOMENTAR

Please enter your comment!
Silahkan masukan nama Anda disini

This site uses Akismet to reduce spam. Learn how your comment data is processed.