Membangun bot Telegram di Yandex.Cloud

Membangun bot Telegram di Yandex.Cloud

Hari ini, dari bahan improvisasi, kami akan mengumpulkan Yandex.Cloud Bot telegram menggunakan Fungsi Cloud Yandex (Atau Fungsi Yandex untuk singkatnya) dan Penyimpanan Objek Yandex (Atau Penyimpanan Objek - untuk kejelasan). Kode akan aktif Node.js. Namun, ada satu keadaan yang mengasyikkan - sebuah organisasi tertentu bernama, katakanlah, Penyensoran RossKom (penyensoran dilarang oleh pasal 29 Konstitusi Federasi Rusia), tidak mengizinkan penyedia Internet di Rusia untuk mentransfer permintaan ke API Telegram ke alamat: https://api.telegram.org/. Yah, kami tidak akan - tidak, tidak. Memang, di tas kami ada yang disebut. webhook - dengan bantuan mereka, kami tidak membuat permintaan ke alamat tertentu, tetapi hanya mengirimkan permintaan kami sebagai tanggapan atas permintaan apa pun kepada kami. Artinya, seperti di Odessa - kami menjawab pertanyaan dengan pertanyaan. Itu sebabnya API Telegram tidak akan muncul dalam kode kita.

Π΅ΠΉΠΌΠ΅Ρ€Nama-nama organisasi negara mana pun yang disebutkan dalam artikel ini adalah fiktif, dan kemungkinan kebetulan dengan nama organisasi kehidupan nyata tidak disengaja.

Jadi, kami akan membuat bot yang akan memberi kami pemikiran cerdas. Persis seperti di gambar:

Membangun bot Telegram di Yandex.Cloud

Anda dapat mencobanya dalam aksi - inilah namanya: @SmartThoughtsBot. Perhatikan tombolnya "Keahlian Alice"? Ini karena bot adalah semacam "pendamping" untuk eponim keterampilan Alice, yaitu itu melakukan fungsi yang sama seperti keterampilan Alice dan, mungkin, bahwa mereka dapat hidup berdampingan secara damai dengan mengiklankan satu sama lain. Tentang cara membuat Keterampilan Berpikir Cerdas dijelaskan dalam artikel Alice mendapatkan keterampilannya. Sekarang (setelah melakukan beberapa perubahan setelah publikasi artikel di atas) di smartphone ini ketrampilan akan terlihat seperti ini:

Membangun bot Telegram di Yandex.Cloud

Pembuatan bot

Saya ingin tutorial ini bermanfaat bagi semua orang, termasuk. dan "pembuat bot" pemula. Oleh karena itu, pada bagian ini saya akan menjelaskan secara rinci cara membuat secara umum Telegram'e bot. Bagi mereka yang tidak membutuhkan informasi ini, lanjutkan ke bagian selanjutnya.

Buka aplikasi Telegaram, kami memanggil ayah dari semua bot (mereka memiliki segalanya seperti manusia) - @Tokopedia - dan sebagai permulaan, kami akan memberinya perintah / bantuan untuk menyegarkan ingatan kami tentang apa yang dapat kami lakukan. Sekarang kami tertarik dengan tim / newbot.

Membangun bot Telegram di Yandex.Cloud

Karena bot yang dijelaskan di sini sudah dibuat, untuk tujuan demonstrasi, saya akan membuat bot lain untuk waktu yang singkat (kemudian saya akan menghapusnya). Aku akan meneleponnya DemoHabrBot. Nama (nama pengguna) semua bot telegram harus diakhiri dengan kata bot, misalnya: Bot Keren Saya ΠΈΠ»ΠΈ bot_keren_saya Ini untuk bot. Tapi pertama-tama, beri nama bot itu (nama) adalah untuk orang. Nama boleh dalam bahasa apa saja, mengandung spasi, tidak harus diakhiri dengan kata bot, dan bahkan tidak harus unik. Dalam contoh ini, saya menyebut bot ini Demo Habr.

Membangun bot Telegram di Yandex.Cloud

Sekarang pilih nama untuk bot (nama pengguna, yang untuk bot). Sebut saja DemoHabrBot. Segala sesuatu yang berhubungan dengan nama bot (nama) sama sekali tidak ada hubungannya dengan namanya - nama pengguna (atau berlaku, tetapi justru sebaliknya). Setelah berhasil membuat nama bot yang unik, kita perlu menyalin dan menyimpan (dengan sangat rahasia!) token yang ditunjukkan pada tangkapan layar dengan panah merah. Dengan bantuannya, nanti kami akan menginstal yang keluar Telegram'sebuah webhook ke kami fungsi Yandex.

Membangun bot Telegram di Yandex.Cloud

Dan sekarang kami akan memberikan perintah kepada bapak semua bot: /bot sayadan itu akan menunjukkan kepada kita daftar semua bot yang telah kita buat. Mari kita tinggalkan bot yang baru dipanggang untuk saat ini Demo Habr (ini dibuat untuk menunjukkan cara membuat bot, tetapi kami akan menggunakannya hari ini untuk tujuan demo lainnya), dan pertimbangkan bot tersebut Pikiran Cerdas (@SmartThoughtsBot). Klik tombol dengan namanya di daftar bot.

Membangun bot Telegram di Yandex.Cloud

Di sinilah kita dapat mengatur bot kita. Menekan tombol Edit ... kami akan beralih ke mengedit satu atau opsi lain. Misalnya dengan mengklik tombol Edit Nama kita bisa mengubah nama bot, misalkan saja Pikiran Cerdas, menulis ide-ide gila. Botpik - ini adalah avatar bot, setidaknya harus 150 150 x px. Deskripsi Produk adalah deskripsi singkat yang dilihat pengguna saat bot diluncurkan pertama kali, sebagai jawaban atas pertanyaan: Apa yang bisa dilakukan bot ini? Tentang Kami - deskripsi yang lebih singkat, yang dikirimkan dengan tautan ke bot (https://t.me/SmartThoughtsBot) atau saat melihat informasi tentangnya.

Membangun bot Telegram di Yandex.Cloud

Kita hanya perlu mengatur perintah. Untuk melakukan ini, tekan tombol Sunting Perintah. Untuk membakukan praktik pengguna Telegram merekomendasikan selalu menggunakan dua perintah: / mulai ΠΈ / Tolong, dan jika bot memerlukan pengaturan - perintah /pengaturan tambahan. Bot kami sesederhana bola, jadi belum perlu pengaturan apa pun. Kami menulis dua perintah pertama, yang kemudian akan kami proses dalam kode. Sekarang, jika pengguna memasukkan garis miring (karakter garis miring: /) di kolom input, daftar perintah akan muncul untuk pemilihan cepat mereka. Semuanya seperti pada gambar: di sebelah kiri - kami mengatur perintah melalui ayah bot; di sebelah kanan, perintah ini sudah tersedia untuk pengguna di bot kami.

Membangun bot Telegram di Yandex.Cloud

fungsi Yandex

Sekarang bot kita telah dibuat, mari kita pergi ke Yandex.Clouduntuk membuat fungsi yang akan mengeksekusi kode bot kita. Jika Anda belum bekerja dengan Yandex.Cloud membaca materi Alice di tanah Bitrix, lalu - Fungsi Yandex mengirim email. Saya hampir yakin bahwa dua artikel yang relatif kecil ini akan cukup bagi Anda untuk memiliki pemahaman dasar tentang subjek tersebut.

Jadi di konsol Yandex.Clouds di menu navigasi kiri, pilih item Fungsi Cloud, lalu tekan tombol Buat fungsi. Kami memberinya nama, dan untuk diri kami sendiri - deskripsi singkat.

Membangun bot Telegram di Yandex.Cloud

Setelah menekan tombol membuat dan setelah beberapa detik, fungsi baru akan muncul di daftar semua fungsi. Klik namanya - ini akan membawa kita ke halaman Tinjau fungsi kita. Di sini Anda perlu mengaktifkanOn) mengalihkan fungsi publikuntuk membuatnya tersedia dari eksternal (untuk Yandex.Clouds) dunia, dan nilai bidang Tautkan ke panggilan ΠΈ pengenal - rahasiakan dari semua orang kecuali Anda dan Telegram, sehingga berbagai penipu tidak dapat memanggil fungsi Anda.

Membangun bot Telegram di Yandex.Cloud

Sekarang menggunakan menu kiri pergi ke Editor fungsi. Mari kita kesampingkan sejenak milik kita Pikiran Cerdas, dan buat fungsi template minimal untuk memeriksa kinerja bot kita ... Namun, dalam konteks ini, fungsi ini adalah bot kita ... Singkatnya, sekarang dan di sini kita akan membuat bot paling sederhana yang akan "mencerminkan" ( yaitu mengirim kembali) permintaan pengguna. Templat ini selalu dapat digunakan saat membuat bot telegram baru untuk memastikan komunikasi dengan Telegram'om bekerja dengan baik. Klik Buat berkas, sebut saja index.js, dan daring Editor kode rekatkan kode berikut ke dalam file 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
  };
};

Di konsol Yandex.Cloud, seharusnya terlihat seperti ini:

Membangun bot Telegram di Yandex.Cloud

Di bawah ini, kami tunjukkan titik masuk - indeks.botDimana indeks ini nama filenya (index.js), dan bot - nama fungsi (modul.ekspor.bot). Biarkan semua kolom lainnya "apa adanya", dan di pojok kanan atas klik tombol Buat Versi. Setelah beberapa detik, versi fungsi ini akan dibuat. Segera setelah pengujian webhook, kami akan membuat versi baru βˆ’ Pikiran Cerdas.

Membangun bot Telegram di Yandex.Cloud

Penyimpanan Objek

Sekarang kita telah mengatur fungsi Yandexayo pergi saat kita berada di konsol Yandex.Clouds, buat yang disebut. keranjang (ember, yaitu ember dalam bahasa Rusia, sama sekali bukan karangan bunga) untuk menyimpan file gambar yang akan digunakan di bot kami Pikiran Cerdas. Pilih dari menu navigasi kiri Penyimpanan Objek, tekan tombolnya Buat ember, beri nama, misalnya, img-ember, dan yang paling penting, Akses baca ke objek jadikan publik - jika tidak, Telegram tidak akan melihat foto kami. Semua bidang lainnya dibiarkan tidak berubah. Kami menekan tombol Buat ember.

Membangun bot Telegram di Yandex.Cloud

Setelah itu, daftar semua keranjang mungkin terlihat seperti ini (jika ini satu-satunya keranjang Anda):

Membangun bot Telegram di Yandex.Cloud

Sekarang saya mengusulkan untuk mengklik nama ember, dan di dalamnya membuat folder untuk mengatur penyimpanan gambar untuk berbagai aplikasi. Misalnya untuk bot telegram Pikiran Cerdas saya membuat folder bernama tg-bot-pintar-pikiran (Tidak ada, saya akan mengerti sandi ini). Buat juga.

Membangun bot Telegram di Yandex.Cloud

Sekarang Anda dapat mengklik nama folder, masuk ke dalamnya dan mengunggah file:

Membangun bot Telegram di Yandex.Cloud

Dan mengklik nama file - dapatkan URL untuk digunakan di bot kami, dan secara umum - di mana saja (tetapi, jangan publikasikan ini URL tidak perlu, karena lalu lintas dari penyimpanan objek dibebankan).

Membangun bot Telegram di Yandex.Cloud

Di sini, sebenarnya, itu saja penyimpanan objek. Sekarang Anda akan tahu apa yang harus dilakukan saat melihat permintaan untuk mengunggah file di sana.

Webhook

Sekarang kita akan menginstal webhook β€” yaitu saat bot menerima pembaruan (misalnya, pesan dari pengguna), dari server Telegram ke dalam kami fungsi Yandex permintaan akan dikirimpermintaan) dengan datanya. Berikut adalah string yang dapat Anda tempelkan ke kolom alamat browser, lalu segarkan halaman (ini hanya perlu dilakukan sekali): https://api.telegram.org/bot{bot_token}/setWebHook?url={webhook_url}
Ganti saja {bot_token} ke token yang kami terima dari bot ayah saat membuat bot kami, dan {webhook_url} - di URL milik kita Fungsi Yandex. Tunggu sebentar! Tetapi Penyensoran RossKom melarang penyedia di Federasi Rusia untuk melayani alamat https://api.telegram.org. Ya itu betul. Tapi Anda bisa memikirkan sesuatu. Lagi pula, Anda dapat, misalnya, bertanya kepada nenek Anda tentang hal itu di Ukraina, Israel, atau Kanada - tidak ada "sensor Rusia" di sana, dan hanya Tuhan yang tahu bagaimana orang hidup tanpanya. Akibatnya, respons permintaan saat memasang webhook akan terlihat seperti ini:

Membangun bot Telegram di Yandex.Cloud

Pengujian. Harus dicerminkan.

Membangun bot Telegram di Yandex.Cloud

Ini benar. Selamat kami - sekarang fungsi Yandex telah menjadi Telegram-bot!

Pikiran Cerdas

Dan sekarang kami melakukan Pikiran Cerdas. Kode terbuka dan terletak di GitHub. Komentarnya cukup bagus, dan panjangnya hanya seratus baris. Bacalah seperti opera diva libretto!

Membangun bot Telegram di Yandex.Cloud

Klon proyek dan instal dependensi:

git clone https://github.com/stmike/tg-bot-smart-thoughts.git
cd tg-bot-smart-thoughts
npm i

Buat perubahan yang Anda perlukan pada file index.js (opsional; Anda tidak dapat mengubah apa pun). Membuat zip-archive, dengan file index.js dan folder node_modules di dalam, misalnya, disebut pintar.zip.

Membangun bot Telegram di Yandex.Cloud

Sekarang masuk konsol ke kami Fungsi Yandex, pilih tab arsip ZIP, tekan tombolnya Pilih filedan unduh arsip kami pintar.zip. Terakhir, di pojok kanan atas, klik tombol Buat Versi.

Membangun bot Telegram di Yandex.Cloud

Dalam beberapa detik, saat fungsi diperbarui, kami akan menguji bot kami lagi. Sekarang dia tidak lagi "mencerminkan", tetapi memberikan pemikiran yang cerdas!

Membangun bot Telegram di Yandex.Cloud

Itu saja untuk hari ini. Artikel lain menyusul. Jika Anda tertarik membaca ini, berlangganan pemberitahuan artikel baru. Anda dapat berlangganan di sini atau Telegram-saluran Tutorial IT ZakharAtau Twitter @mikezaharov.

referensi

Kode di GitHub
Fungsi Cloud Yandex
Penyimpanan Objek Yandex
Bot: Pengantar untuk pengembang
API Telegram Bot

Donasi

Membangun bot Telegram di Yandex.Cloud

Sumber: www.habr.com

Tambah komentar