Membangun bot Telegram di Yandex.Cloud

Pembuatan bot Telegram

Hari ini, dari bahan-bahan yang ada, kami akan merakit bot Telegram di Yandex.Cloud menggunakan Fungsi Yandex Cloud (atau fungsi Yandex untuk jangka pendek) dan Penyimpanan Objek Yandex (atau Penyimpanan Obyek untuk kejelasan). Kode akan di Node.js . Namun, ada satu keadaan pedas - semacam organisasi yang disebut, katakanlah, RossKomTsenzur (sensor dilarang oleh Pasal 29 dari Konstitusi), tidak memungkinkan penyedia layanan Internet untuk mengirim permintaan ke Rusia Telegram API di: https://api.telegram.org/. Ya, kami tidak akan - tidak, tidak, tidak. Memang di tas kami ada yang disebut-sebut webhooks- dengan bantuan mereka, kami tidak membuat permintaan ke alamat tertentu, tetapi hanya mengirimkan permintaan Anda sebagai jawaban atas permintaan apa pun kepada kami. Yaitu, seperti di Odessa - kami menjawab pertanyaan dengan pertanyaan. Oleh karena itu, API Telegram tidak akan muncul dalam kode kami.

Penolakan
- , β€” .

Jadi, kami akan membuat bot yang akan memberi kami pikiran cerdas. Sama seperti pada gambar: Anda dapat mencobanya dalam aksi - ini namanya: @SmartThoughtsBot . Pernahkah Anda memperhatikan tombol Alice Skill ? Ini karena bot adalah semacam "teman" untuk keterampilan Alice dengan nama yang sama , yaitu, itu melakukan fungsi yang sama dengan keterampilan Alice dan mungkin mereka dapat hidup berdampingan secara damai dengan saling mengiklankan. Cara membuat keterampilan Pikiran Pintar dijelaskan dalam artikel Alice memperoleh keterampilan . Sekarang (setelah membuat beberapa perubahan setelah publikasi artikel di atas) pada smartphone, keterampilan ini akan terlihat seperti ini:

Telegram bot Pikiran Pintar



Pikiran Pintar Keterampilan Alice

Pembuatan bot


Saya ingin tutorial ini bermanfaat bagi semua orang, termasuk dan pemula "ahli botani." Oleh karena itu, di bagian ini saya akan menjelaskan secara cukup rinci cara membuat bot di Telegram sama sekali . Bagi mereka yang tidak memerlukan informasi ini - pergi ke bagian selanjutnya.

Kami membuka aplikasi Telegaram , memanggil bapak semua bot (mereka memiliki semua yang dimiliki orang) - @BotFather - dan pertama-tama kami memberinya perintah / bantuan untuk menyegarkan apa yang bisa kami lakukan. Sekarang kita akan tertarik pada perintah / newbot .

Buat bot baru

Karena bot yang dijelaskan di sini telah dibuat, untuk tujuan demonstrasi saya akan membuat bot lain untuk waktu yang singkat (maka saya akan menghapusnya). Saya akan menyebutnya DemoHabrBot . Nama ( nama pengguna) semua bot telegram harus diakhiri dengan kata bot , misalnya: MyCoolBot atau my_cool_bot - ini untuk bot. Tapi pertama-tama, beri bot nama ( nama ) - dan ini untuk orang-orang. Nama dapat dalam bahasa apa pun, mengandung spasi, tidak harus diakhiri dengan kata bot , dan bahkan tidak harus unik. Dalam contoh ini, saya memanggil bot Demo Habr ini .

Nama bot

Sekarang pilih nama bot (nama pengguna , yang untuk bot). Sebut saja DemoHabrBot . Segala sesuatu yang terkait dengan nama bot ( nama ) tidak berlaku untuk namanya sama sekali - 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 itu, sebentar lagi kita akan menginstal webhook yang berasal dari Telegram pada fungsi Yandex kita .

Nama bot

Sekarang mari kita berikan perintah kepada ayah dari semua bot: / mybots , dan dia akan menunjukkan kepada kita daftar semua bot yang kita buat. Mari kita tinggalkan bot Demo Habr yang baru saja dipanggang (dibuat untuk menunjukkan cara membuat bot, tetapi kita akan menggunakannya hari ini untuk tujuan demo lainnya) dan pertimbangkan bot Smart Thoughts ( @SmartThoughtsBot ). Tekan tombol dengan namanya di daftar bot.

Pengaturan bot

Di sini kita dapat mengkonfigurasi bot kita. Dengan mengklik tombol Edit ... kita akan mengedit opsi ini atau itu. Misalnya, dengan mengklik tombol Edit Nama, kita dapat mengubah nama bot, katakanlah, bukannya Pikiran Pintar , tulis Ide Delusi . Botpic adalah avatar bot, minimal harus 150 x 150 px . Deskripsi adalah deskripsi singkat yang dilihat pengguna saat pertama kali memulai bot, sebagai jawaban atas pertanyaan: Apa yang bisa dilakukan bot ini? Tentang - deskripsi yang lebih pendek yang dikirimkan dengan tautan ke bot ( https://t.me/SmartThoughtsBot) atau saat melihat informasi tentangnya.

Bot: deskripsi dan informasi singkat

Kami hanya perlu mengkonfigurasi tim. Untuk melakukan ini, klik tombol Edit Perintah . Untuk membakukan praktik pengguna, Telegram merekomendasikan selalu menggunakan dua perintah: / start dan / help , dan jika bot membutuhkan pengaturan, perintah / pengaturan tambahan. Bot kami sederhana seperti bola, jadi belum perlu pengaturan. Kami menulis dua perintah pertama, yang kemudian kami proses dalam kode. Sekarang, jika pengguna memasukkan garis miring (garis miring: /) di bidang masukan, daftar perintah untuk pemilihan cepat mereka akan muncul. Semuanya seperti pada gambar: di sebelah kiri - kita mengatur perintah melalui bot-ayah; di sebelah kanan, perintah-perintah ini sudah tersedia untuk pengguna di bot kami.

Instalasi dan gunakan dalam perintah bot

Fungsi Yandex


Setelah bot kami dibuat, buka Yandex. Cloud untuk membuat fungsi yang akan mengeksekusi kode bot kami. Jika Anda belum pernah bekerja dengan Yandex.Cloud , baca materi Alice di negara Bitrix , dan kemudian fungsi Yandex mengirim email . Saya cukup yakin bahwa dua artikel yang relatif kecil ini akan cukup bagi Anda untuk memiliki pemahaman dasar tentang subjek ini.

Jadi, di konsol Yandex.Cloud di menu navigasi kiri, pilih Cloud Functions , lalu klik tombol Buat fungsi . Kami memberinya nama, dan untuk dirinya sendiri deskripsi singkat.

Membuat fungsi Yandex

Setelah mengklik Buatdan setelah beberapa detik, fungsi baru akan muncul di daftar semua fungsi. Klik namanya - ini akan membawa kita ke halaman Ikhtisar fungsi kita. Di sini Anda perlu mengaktifkan ( Aktif ) sakelar Fungsi Publik sehingga dapat diakses dari dunia luar (untuk Yandex.Cloud ), dan nilai bidang Tautan Panggilan dan Pengidentifikasi dirahasiakan dari semua orang kecuali Anda dan Telegram sehingga fungsi Anda berbagai penipu tidak bisa menelepon.

Properti Fitur Yandex

Sekarang, dengan menggunakan menu kiri, buka Function Editor . Mari kita kesampingkan Pikiran Cerdas kita untuk waktu yang singkat., dan buat fungsi-templat minimal untuk menguji kinerja bot kami ... Namun, dalam konteks ini, fungsi ini adalah bot kami ... Singkatnya, sekarang dan di sini kita akan membuat bot sederhana yang akan "mencerminkan" (yaitu, mengirim kembali ) permintaan pengguna. Template ini selalu dapat digunakan saat membuat bot telegram baru untuk memastikan bahwa komunikasi dengan Telegram berfungsi dengan baik. Klik Buat file , sebut saja index.js , dan di Editor Kode online , 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 akan terlihat seperti ini:

Kode bot paling sederhana pada fungsi Yandex

Selanjutnya, tepat di bawah ini kita tentukan Entry Point - index.bot , di mana indeks adalah nama file ( index.js ) dan bot adalah nama fungsi ( module.exports.bot ). Kami meninggalkan semua bidang lain β€œapa adanya”, dan di sudut kanan atas klik tombol Buat versi . Setelah beberapa detik, versi fungsi ini akan dibuat. Segera, setelah menguji webhook , kami akan membuat versi baru - Pikiran Cerdas .

Titik Masuk Fungsi Yandex

Penyimpanan objek


Sekarang kita telah menetapkan fungsi Yandex , mari kita sementara kita berada di konsol Yandeks.Oblaka , buat yang disebut ember ( ember , mis. ember dalam bahasa Rusia, sama sekali bukan buket) untuk menyimpan file gambar yang akan digunakan dalam bot Pikiran Cerdas kami . Di menu navigasi kiri, pilih item Object Storage , klik tombol Create Bucket , buat nama untuknya, misalnya, img-bucket , dan, yang paling penting, kami membuat akses ke objek yang dibaca publik - jika tidak Telegram tidak dapat melihat gambar kami. Semua bidang lainnya dibiarkan tidak berubah. Klik tombol Buat Bucket .

Bucket Build.

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

Daftar Keinginan

Sekarang saya sarankan mengklik nama ember dan membuat folder di dalamnya untuk mengatur penyimpanan gambar untuk aplikasi yang berbeda. Sebagai contoh, untuk bot telegram Smart Thoughts, saya membuat folder bernama tg-bot-smart-thinking (tidak ada, saya mengerti cipher ini). Buat beberapa dari Anda juga.

Membuat folder di dalam ember

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

Mengunggah file ke folder dalam ember

Dan dengan mengklik nama file - dapatkan URL -nya untuk digunakan di bot kami, dan umumnya di suatu tempat (tetapi, jangan publikasikan URL ini secara tidak perlu, karena lalu lintas dari penyimpanan Objek dibebankan )

Memperoleh alamat file di Object storage

Faktanya, semua itu denganPenyimpanan objek . Sekarang Anda akan tahu apa yang harus dilakukan ketika Anda melihat panggilan untuk mengunggah file di sana.

Webhook


Sekarang kita akan menginstal webhook - mis. ketika bot menerima pembaruan (misalnya, pesan dari pengguna), permintaan dengan data akan dikirim dari server Telegram kami ke fungsi Yandex kami . Ini adalah baris yang bisa Anda sisipkan ke bidang alamat browser dan kemudian segarkan halaman (ini perlu dilakukan hanya sekali): Cukup ganti {bot_token} dengan token yang kami terima dari ayah bot saat membuat bot kami, dan {webhook_url} dengan URL fungsi Yandex kami . Sebentar! Tetapi RossKomTsensur melarang penyedia di Federasi Rusia dari melayani alamathttps://api.telegram.org/bot{bot_token}/setWebHook?url={webhook_url}
https://api.telegram.org. Ya itu betul. Tapi Anda datang dengan sesuatu. Lagipula, Anda dapat, misalnya, bertanya kepada nenek Anda tentang hal itu di Ukraina, Israel atau Kanada - tidak ada "komentar Rusia" di sana, dan satu tuhan tahu bagaimana orang hidup tanpanya. Akibatnya, permintaan-respons saat memasang kait web akan terlihat seperti ini:

Instalasi Webhook

Pengujian. Seharusnya "mirror".

Tes bot pertama

Dan disana. Selamat - sekarang fungsi Yandex telah menjadi bot Telegram !

Pikiran Pintar


Dan sekarang kita membuat Pikiran Pintar. Kode terbuka dan terletak di GitHub . Ini cukup baik dikomentari, dan hanya ada seratus baris di dalamnya. Baca seperti opera diva libretto!

Kode Bot Pikiran Cerdas

Mengkloning proyek dan menginstal dependensi:

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

Buat perubahan yang diperlukan untuk file index.js (opsional; Anda tidak dapat mengubah apa pun). Buat zip - Sekunder, file index.js dan folder node_modules di, misalnya, dengan nama smart.zip .

Arsip ZIP dari bot Smart Thoughts

Sekarang buka fungsi Yandex kami di konsol , pilih tab arsip ZIP , klik tombol Pilih file , dan unduh arsip smart.zip kami . Terakhir, di sudut kanan atas, klik tombol Create Version .

Membuat versi bot yang berfungsi

Setelah beberapa detik, ketika fungsi diperbarui, kami akan menguji bot kami lagi. Sekarang dia tidak lagi "bercermin", tetapi memberikan pemikiran cerdas!

Penyempurnaan bot Smart Thoughts

Referensi


GitHub
Yandex Cloud Functions
Yandex Object Storage
Bots: Pengantar untuk pengembang Kode
API Telegram Bot

Kesimpulan


Itu saja untuk hari ini. Materi lainnya mengikuti. Kepada siapa itu menarik untuk dibaca, berlangganan pemberitahuan publikasi baru. Anda dapat berlangganan di situs ini (tombol Berlangganan di bawah), atau di saluran Telegram Tutorial TI Zakhar , atau di komunitas dengan nama yang sama di VK , atau Twitter @mikezaharov .

Donat


Donat

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


All Articles