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 permintaanSedikit 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.

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");
MEMBUAT PERMINTAAN, PERIKSA KETERSEDIAANNYA, dan mulailah memproses $tgreq -> ReqCreate('SOMTH');
TERSEMBUNYI DAN MENDAPATKAN DATA WAKTUsimpan:
$tgreq -> SaveToTemp('HiHabr');
pulihkan:
$tgreq -> GetFromTemp(false);
HASIL FUNGSIPerlu dicatat bahwa setiap fungsi [dengan pengecualian GetFromTemp (), GetError (), ReqCheck () dan konstruktor], mengembalikan array:
GALATSetiap fungsi [dengan pengecualian GetFromTemp (), GetError (), ReqCheck (), dan konstruktor] menetapkan kesalahan jika terjadi kegagalan, yang dapat diperiksa dengan:
$error_arr = $tgreq -> GetError();
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.