Membina bot Telegram dalam Yandex.Cloud

Membina bot Telegram dalam Yandex.Cloud

Hari ini, daripada bahan buatan sendiri, kami akan kumpulkan Yandex.Cloud Bot Telegram menggunakan Fungsi Awan Yandex (Atau Fungsi Yandex untuk ringkas) dan Penyimpanan Objek Yandex (Atau Penyimpanan Objek - untuk kejelasan). Kod akan dihidupkan Node.js. Walau bagaimanapun, terdapat satu keadaan yang menarik - organisasi tertentu yang dipanggil, katakan, Penapisan RossKom (penapisan dilarang oleh artikel 29 Perlembagaan Persekutuan Rusia), tidak membenarkan penyedia Internet di Rusia memindahkan permintaan kepada API Telegram ke alamat: 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:

Membina bot Telegram dalam Yandex.Cloud

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 Alice mendapat kemahiran. Sekarang (selepas membuat beberapa perubahan selepas penerbitan artikel di atas) pada telefon pintar ini kemahiran akan kelihatan seperti ini:

Membina bot Telegram dalam Yandex.Cloud

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.

Membina bot Telegram dalam Yandex.Cloud

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.

Membina bot Telegram dalam Yandex.Cloud

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.

Membina bot Telegram dalam Yandex.Cloud

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.

Membina bot Telegram dalam Yandex.Cloud

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.

Membina bot Telegram dalam Yandex.Cloud

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.

Membina bot Telegram dalam Yandex.Cloud

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 Alice di bumi Bitrix, dan kemudian - Fungsi Yandex menghantar mel. Saya hampir pasti bahawa dua artikel yang agak kecil ini akan mencukupi untuk anda mempunyai pemahaman asas tentang subjek tersebut.

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.

Membina bot Telegram dalam Yandex.Cloud

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.

Membina bot Telegram dalam Yandex.Cloud

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:

Membina bot Telegram dalam Yandex.Cloud

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.

Membina bot Telegram dalam Yandex.Cloud

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.

Membina bot Telegram dalam Yandex.Cloud

Selepas itu, senarai semua baldi mungkin kelihatan seperti ini (jika ini satu-satunya baldi anda):

Membina bot Telegram dalam Yandex.Cloud

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.

Membina bot Telegram dalam Yandex.Cloud

Kini anda boleh klik pada nama folder, masuk ke dalamnya dan muat naik fail:

Membina bot Telegram dalam Yandex.Cloud

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

Membina bot Telegram dalam Yandex.Cloud

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:

Membina bot Telegram dalam Yandex.Cloud

Menguji. Patut dicerminkan.

Membina bot Telegram dalam Yandex.Cloud

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 GitHub. Ia diulas dengan baik, dan panjangnya hanya seratus baris. Bacanya seperti libretto opera diva!

Membina bot Telegram dalam Yandex.Cloud

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.

Membina bot Telegram dalam Yandex.Cloud

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.

Membina bot Telegram dalam Yandex.Cloud

Dalam beberapa saat, apabila fungsi dikemas kini, kami akan menguji bot kami sekali lagi. Kini dia tidak lagi "cermin", tetapi menyampaikan pemikiran yang bijak!

Membina bot Telegram dalam Yandex.Cloud

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 Tutorial IT ZakharAtau Twitter @mikezaharov.

rujukan

Kod pada GitHub
Fungsi Awan Yandex
Penyimpanan Objek Yandex
Bot: Pengenalan untuk pembangun
API Bot Telegram

Derma

Membina bot Telegram dalam Yandex.Cloud

Sumber: www.habr.com

Tambah komen