Telegram - bot | Menu lengkap

gambar

Cepat atau lambat, dalam kehidupan pengembang bot telegram, ada pemahaman yang jelas bahwa semuanya diperlukan untuk membuat menu bot yang kurang lebih lengkap.

Sejak:

A) Lebih mudah
B) Nyaman untuk kustomisasi *

Tidak ada yang, tentu saja, membatalkan "/ tim", tetapi tetap saja

Esensi dari tugas


Sekilas - tugasnya sederhana, tapi bagaimanapun caranya. Seluruh masalah ada di API itu sendiri , yaitu di objek Perbarui .
Sedikit lebih detail: Menggunakan metode getUpdate - Anda mendapatkan objek Perbarui, ini masuk akal! Jadi, objek ini mengandung banyak hal berguna, termasuk informasi tentang pesan, tetapi hanya tentang yang terakhir. Ini tangkapannya
Berdasarkan hal di atas, kesimpulan yang tidak terlalu menyenangkan berikut - memproses permintaan dengan webhook, tanpa menyimpan data tambahan, tidak bersinar bagi kami ...

Yah, kita mencuci diri dan mulai bekerja.

Menulis Kode Belajar


Dalam latihan mereka, terutama untuk tugas ini, kelas kecil dikembangkan.

BARU! Sekarang di github )

Jika Anda tidak bisa menunggu, maka Anda dapat segera pergi ke repositori, ada perjalanan di sana.

Lanjutkan


Kelas membuat permintaan permintaan
Sedikit tentang struktur: Menu ini dinavigasi dengan membuat permintaan untuk permintaan . Anda membuatnya di tempat yang tepat, dan pada panggilan pengguna berikutnya, bam, dan dia ada di "menu".
Saya setuju, konsepnya, setelah itu, tidak menjadi dimengerti ... Saya akan mencoba mengklarifikasi. Untuk memahami, Anda harus pergi ke tingkat abstraksi tertentu, yaitu, bayangkan bahwa seluruh struktur bot terdiri dari menu yang berbeda di mana pengguna beralih (Anda dapat menggambar analogi dengan aktivitas android). Ketika bot diaktifkan, pengguna berada di "menu awal", dari mana ia dapat pergi, misalnya, di menu "Pengaturan", "Informasi", dll.

gambar

Jadi, struktur bot berubah sedikit, singkatnya:

Pertama, periksa apakah ada permintaan:

YA) Jalankan penangan permintaan
TIDAK) Kami tetap berada di "menu awal", kami memeriksa respons pengguna dengan perintah yang tersedia.

* Ini adalah versi yang sangat sederhana, karena ini mengetuk bilah. Dengan contoh itu akan menjadi lebih mudah.

Ayo lanjutkan ..?


Mari kita mulai dengan instalasi. Kami akan menggunakan compser untuk menginstalnya (buat "composer.json", lalu salin baris di bawahnya, baca lebih lanjut di off.docs)

{ "require" : { "s0d3s/tg-long-req": ">=1" } } 

dan terhubung

 include_once('path/to/autoload.php'); use TgLongReq\TgLongReq; 

ATAU terhubung secara manual (unduh ke folder proyek)

 include_once('TgLongReq.php'); use TgLongReq\TgLongReq; 

MENCIPTAKAN OBYEK

 function SOMTH($tg_res, $long_req_obj, $tab_key){ echo "EveryForEveryone"; return; } $BOT_FUNC_ASSO_TAB = arrray("ECHO_SOMETHING" => "SOMTH"); // -      ,  -  -\  $tgreq = new TgLongReq ( $usr_id, //(STR) -id  $BOT_FUNC_ASSO_TAB, //(ARRAY) $BOT_req_dir , //[OPT](STR) $tapi, //[OPT](ANY*) $result //[OPT](ANY**) ); // *  ,    $this->tg_api // **  ,      

MEMBUAT PERMINTAAN, PERIKSA KETERSEDIAANNYA, dan mulailah memproses

 $tgreq -> ReqCreate('SOMTH');//  if($tgreq -> ReqCheck()){ // ,   ,       $tgreq -> ReqHand();// ,   } 

TERSEMBUNYI DAN MENDAPATKAN DATA WAKTU

simpan:

 $tgreq -> SaveToTemp('HiHabr');//  ,    json- 

pulihkan:

 $tgreq -> GetFromTemp(false);//  -    ,    // ,    SaveToTemp() 

HASIL FUNGSI

Perlu dicatat bahwa setiap fungsi [dengan pengecualian GetFromTemp (), GetError (), ReqCheck () dan konstruktor], mengembalikan array:

 /*$function_result = array( 'func_res' =>   'error' =>true,    'err_discript' => ,     ); */ 

GALAT

Setiap fungsi [dengan pengecualian GetFromTemp (), GetError (), ReqCheck (), dan konstruktor] menetapkan kesalahan jika terjadi kegagalan, yang dapat diperiksa dengan:

 $error_arr = $tgreq -> GetError(); /*$error_arr = array( 'error' =>true,    'err_discript' => ,     ); */ 

Semua berkumpul, pergi!


Kami akan berasumsi bahwa Anda minimal terbiasa menulis bot telegram, jika tidak -% artikel %, membaca item " Menulis kode bot " - tautan pertama di Google pada subjek, Anda dapat mencari sendiri, hal utama adalah mencari tahu cara membuat bot di tg sendiri, dan mengonfigurasi dia ke server Anda. Jika ini menarik, saya akan menulis artikel tentang cara mengonfigurasi webhook agar berfungsi dengan server lokal (~ BARU! Solusi untuk melewati "masalah" dengan https).

Kami akan menyadari contoh ini. Kami membagi ruang menjadi dua file "botmain.php" (menu utama dan pemrosesan) dan "varfunc.php" (fungsi pemrosesan permintaan). Sebagai contoh mudahnya, kami akan menggunakan telegram-bot-sdk (proyek yang dibuat dengan baik dan dirancang, nyaman untuk proyek kecil, terima kasih kepada penciptanya;).

Secara umum, daftar :

composer.json
 { "require" : { "irazasyed/telegram-bot-sdk": ">=3", "s0d3s/tg-long-req": ">=1", "php":">=7.1" } } 


Selanjutnya, di folder proyek, buka konsol dan ...

 >composer install ... 

UPD : Dalam kerangka Habr, kode sumber menjadi tidak dapat dibaca, tanpa pengeditan global. Karena itu, jika Anda tertarik pada contoh, saya sarankan Anda beralih ke github.

Asli | Versi sederhana .

Kesimpulan


Pada akhirnya, saya hanya bisa mengatakan bahwa ini bukan satu-satunya solusi yang mungkin untuk masalah ini, tetapi dari sudut pandang optimalitas untuk ME adalah favorit.

Source: https://habr.com/ru/post/id459604/


All Articles