Hari ini, daripada bahan buatan sendiri, kami akan kumpulkan https://api.telegram.org/
. Baiklah, kita tidak akan - tidak, tidak. Memang dalam beg kami ada kononnya. webhooks - dengan bantuan mereka, kami tidak membuat permintaan ke alamat tertentu, tetapi hanya menghantar permintaan kami sebagai respons kepada sebarang permintaan kepada kami. Iaitu, seperti di Odessa - kami menjawab soalan dengan soalan. sebab tu API Telegram tidak akan muncul dalam kod kami.
PenafianNama mana-mana organisasi negeri yang disebut dalam artikel ini adalah rekaan, dan kemungkinan kebetulan dengan nama organisasi sebenar adalah tidak disengajakan.
Jadi, kami akan membuat bot yang akan membekalkan kami dengan pemikiran yang bijak. Tepat seperti dalam gambar:
Anda boleh mencubanya dalam tindakan - berikut ialah nama: @SmartThoughtsBot. Perhatikan butang "Kemahiran Alice"? Ini kerana bot adalah sejenis "sahabat" untuk eponim Kemahiran Alice, iaitu ia menjalankan fungsi yang sama seperti Kemahiran Alice dan, mungkin, mereka boleh hidup bersama secara aman mengiklankan satu sama lain. Mengenai cara mencipta Kemahiran Pemikiran Pintar diterangkan dalam artikel
Penciptaan bot
Saya ingin tutorial ini berguna kepada semua orang, termasuk. dan "pembina bot" pemula. Oleh itu, dalam bahagian ini saya akan menerangkan secara terperinci cara membuat secara umum dalam Telegram'e bot. Bagi mereka yang tidak memerlukan maklumat ini, teruskan ke bahagian seterusnya.
Buka aplikasi Telegaram, kami memanggil bapa kepada semua bot (mereka mempunyai segala-galanya seperti orang) - @BotFather - dan sebagai permulaan, kami akan memberinya arahan / bantuan untuk menyegarkan ingatan kami tentang apa yang boleh kami lakukan. Sekarang kami berminat dengan pasukan / newbot.
Memandangkan bot yang diterangkan di sini telah pun dibuat, untuk tujuan demonstrasi, saya akan mencipta bot lain untuk masa yang singkat (kemudian saya akan memadamkannya). Saya akan hubungi dia DemoHabrBot. nama (nama pengguna) semua bot telegram mesti diakhiri dengan perkataan bot, sebagai contoh: MyCoolBot atau my_cool_bot Ini untuk bot. Tetapi pertama-tama, beri nama bot itu (nama) adalah untuk orang ramai. Nama boleh dalam mana-mana bahasa, mengandungi ruang, tidak perlu diakhiri dengan perkataan bot, dan tidak semestinya unik. Dalam contoh ini, saya memanggil bot ini Demo Habr.
Sekarang pilih nama untuk bot (nama pengguna, yang untuk bot). Jom panggil DemoHabrBot. Semua yang berkaitan dengan nama bot (nama) tidak berkaitan dengan namanya sama sekali - nama pengguna (atau terpakai, tetapi sebaliknya). Selepas berjaya mencipta nama bot yang unik, kami perlu menyalin dan menyimpan (dengan keyakinan yang paling ketat!) token yang ditunjukkan dalam tangkapan skrin dengan anak panah merah. Dengan bantuannya, kami kemudian akan memasang yang keluar Telegram'webhook kepada kami Fungsi Yandex.
Dan sekarang kami akan memberikan arahan kepada bapa semua bot: /mybotsdan ia akan menunjukkan kepada kami senarai semua bot yang telah kami buat. Mari kita biarkan bot yang baru dipanggang sahaja buat masa ini Demo Habr (ia dicipta untuk menunjukkan cara membuat bot, tetapi kami akan menggunakannya hari ini untuk tujuan demonstrasi lain), dan pertimbangkan bot Fikiran Pintar (@SmartThoughtsBot). Klik butang dengan namanya dalam senarai bot.
Di sinilah kami boleh menyediakan bot kami. Menekan butang Edit ... kami akan beralih kepada mengedit satu atau pilihan lain. Sebagai contoh, dengan mengklik pada butang Edit Nama kita boleh menukar nama bot, katakan bukannya Fikiran Pintar, tulis idea gila. Botpic - ini ialah avatar bot, mestilah sekurang-kurangnya 150 150 x px. Penerangan Produk ialah penerangan ringkas yang pengguna lihat apabila bot dilancarkan buat kali pertama, sebagai jawapan kepada soalan: Apa yang boleh dilakukan oleh bot ini? Info - penerangan yang lebih pendek, yang dihantar dengan pautan ke bot (https://t.me/SmartThoughtsBot
) atau apabila melihat maklumat mengenainya.
Kita hanya perlu menyediakan arahan. Untuk melakukan ini, tekan butang Edit Perintah. Untuk menyeragamkan amalan pengguna Telegram mengesyorkan sentiasa menggunakan dua arahan: /mula ΠΈ / tolong, dan jika bot memerlukan tetapan, arahan /setting tambahan. Bot kami semudah bola, jadi ia tidak memerlukan sebarang tetapan lagi. Kami menulis dua arahan pertama, yang kemudiannya akan kami proses dalam kod. Sekarang, jika pengguna memasukkan garis miring (karakter miring: /) dalam medan input, senarai arahan akan muncul untuk pemilihan pantas mereka. Semuanya seperti dalam gambar: di sebelah kiri - kami menetapkan arahan melalui bapa bot; di sebelah kanan, arahan ini sudah tersedia kepada pengguna dalam bot kami.
Fungsi Yandex
Sekarang bot kita telah dibuat, mari pergi ke Yandex.Clouduntuk mencipta fungsi yang akan melaksanakan kod bot kami. Jika anda belum bekerja dengan Yandex.Cloud membaca bahan
Jadi dalam konsol Yandex.Clouds dalam menu navigasi kiri, pilih item Fungsi Awan, dan kemudian tekan butang Buat fungsi. Kami memberinya nama, dan untuk diri kami sendiri - penerangan ringkas.
Setelah menekan butang mewujudkan dan selepas beberapa saat, fungsi baharu akan muncul dalam senarai semua fungsi. Klik pada namanya - ini akan membawa kita ke halaman Mengkaji fungsi kami. Di sini anda perlu mendayakanOn) suis fungsi awamuntuk menjadikannya tersedia dari luaran (untuk Yandex.Clouds) dunia, dan nilai ladang Pautan ke panggilan ΠΈ Pengenal - merahsiakannya daripada semua orang kecuali anda sendiri dan Telegram, supaya pelbagai penipu tidak dapat memanggil fungsi anda.
Sekarang menggunakan menu kiri pergi ke Penyuntingnya fungsi. Marilah kita ketepikan seketika Fikiran Pintar, dan cipta fungsi templat minimum untuk menyemak prestasi bot kami ... Walau bagaimanapun, dalam konteks ini, fungsi ini ialah bot kami ... Pendek kata, sekarang dan di sini kami akan membuat bot paling mudah yang akan "cermin" ( iaitu hantar balik ) permintaan pengguna. Templat ini sentiasa boleh digunakan semasa membuat bot telegram baharu untuk memastikan komunikasi itu dengan Telegram'om berfungsi dengan baik. klik Buat fail, panggil je indeks.js, dan dalam talian Editor kod tampal kod berikut ke dalam fail ini:
module.exports.bot = async (event) => {
const body = JSON.parse(event.body);
const msg = {
'method': 'sendMessage',
'chat_id': body.message.chat.id,
'text': body.message.text
};
return {
'statusCode': 200,
'headers': {
'Content-Type': 'application/json'
},
'body': JSON.stringify(msg),
'isBase64Encoded': false
};
};
Dalam konsol Yandex.Cloud, ia sepatutnya kelihatan seperti ini:
Di bawah, kami menunjukkan pintu masuk - index.botJika indeks ini nama fail (indeks.js), dan bot - nama fungsi (module.exports.bot). Biarkan semua medan lain "sebagaimana adanya", dan di penjuru kanan sebelah atas klik butang Cipta Versi. Selepas beberapa saat, versi fungsi ini akan dibuat. Tidak lama selepas ujian webhook, kami akan mencipta versi baharu β Fikiran Pintar.
Penyimpanan Objek
Sekarang kita sudah sediakan Fungsi Yandexmari pergi sementara kita berada di konsol Yandex.Clouds, buat apa yang dipanggil. baldi (baldi, iaitu baldi dalam bahasa Rusia, bukan sejambak) untuk menyimpan fail imej yang akan digunakan dalam bot kami Fikiran Pintar. Pilih daripada menu navigasi kiri Penyimpanan Objek, tekan butang Buat baldi, beri nama, sebagai contoh, img-baldi, dan, yang paling penting, Baca akses kepada objek umumkan - jika tidak Telegram tidak akan melihat gambar kami. Semua medan lain dibiarkan tidak berubah. Kami menekan butang Buat baldi.
Selepas itu, senarai semua baldi mungkin kelihatan seperti ini (jika ini satu-satunya baldi anda):
Sekarang saya mencadangkan untuk mengklik pada nama baldi, dan mencipta folder di dalamnya untuk mengatur penyimpanan gambar untuk aplikasi yang berbeza. Contohnya, untuk bot telegram Fikiran Pintar saya mencipta folder bernama tg-bot-smart-thoughts (Tiada apa, saya akan faham sifir ini). Buat satu juga.
Kini anda boleh klik pada nama folder, masuk ke dalamnya dan muat naik fail:
Dan mengklik pada nama fail - dapatkannya URL untuk digunakan dalam bot kami, dan secara umum - di mana-mana (tetapi, jangan terbitkan ini URL tidak perlu, kerana lalu lintas dari penyimpanan objek dikenakan).
Di sini, sebenarnya, itu sahaja penyimpanan objek. Sekarang anda akan tahu apa yang perlu dilakukan apabila anda melihat gesaan untuk memuat naik fail di sana.
Webhook
Sekarang kami akan memasang webhook - iaitu apabila bot menerima kemas kini (contohnya, mesej daripada pengguna), daripada pelayan Telegram ke dalam kami Fungsi Yandex permintaan akan dihantarmeminta) dengan data. Berikut ialah rentetan yang anda boleh tampalkan ke dalam medan alamat penyemak imbas, dan kemudian muat semula halaman (ini hanya perlu dilakukan sekali): https://api.telegram.org/bot{bot_token}/setWebHook?url={webhook_url}
Gantikan sahaja {bot_token} kepada token yang kami terima daripada bot bapa semasa mencipta bot kami, dan {webhook_url} - pada URL kami Fungsi Yandex. Tunggu sekejap! Tetapi Penapisan RossKom melarang pembekal di Persekutuan Rusia untuk menyampaikan alamat https://api.telegram.org
. Ya, betul. Tetapi anda boleh memikirkan sesuatu. Lagipun, anda boleh, sebagai contoh, bertanya kepada nenek anda mengenainya di Ukraine, Israel atau Kanada - tidak ada "penapisan Rusia" di sana, dan hanya Tuhan yang tahu bagaimana orang hidup tanpanya. Akibatnya, respons permintaan semasa memasang webhook sepatutnya kelihatan seperti ini:
Menguji. Patut dicerminkan.
Ini adalah benar. Tahniah kami - sekarang Fungsi Yandex telah menjadi Telegram-bot!
Fikiran Pintar
Dan kini kami melakukan Pikiran Pintar. Kod terbuka dan dan terletak pada
Klon projek dan pasang kebergantungan:
git clone https://github.com/stmike/tg-bot-smart-thoughts.git
cd tg-bot-smart-thoughts
npm i
Buat perubahan yang anda perlukan pada fail indeks.js (pilihan; anda tidak boleh mengubah apa-apa). Buat zip-arkib, dengan fail indeks.js dan folder simpul_modul dalam, sebagai contoh, dipanggil pintar.zip.
Sekarang pergi ke konsol kami Fungsi Yandex, pilih tab ZIP arkib, tekan butang Pilih faildan muat turun arkib kami pintar.zip. Akhir sekali, di penjuru kanan sebelah atas, klik butang Cipta Versi.
Dalam beberapa saat, apabila fungsi dikemas kini, kami akan menguji bot kami sekali lagi. Kini dia tidak lagi "cermin", tetapi menyampaikan pemikiran yang bijak!
Itu sahaja untuk hari ini. Artikel lain menyusul. Jika anda berminat membaca ini, langgan pemberitahuan artikel baharu. Anda boleh melanggan di sini atau Telegram-saluran
rujukan
Derma
Sumber: www.habr.com