Yandex.Cloud-da Telegram botini yaratish

Yandex.Cloud-da Telegram botini yaratish

Bugun biz hurda materiallardan yig'amiz Yandex.Cloud Telegram boti foydalanish Yandex bulut funktsiyalari (yoki Yandex funktsiyalari - qisqacha) va Yandex ob'ektlarini saqlash (yoki Ob'ektni saqlash - aniqlik uchun). Kod yoqilgan bo'ladi Node.js. Biroq, bitta qiziqarli holat bor - ma'lum bir tashkilot chaqirdi, aytaylik, RossKomTsenzur (tsenzura Rossiya Federatsiyasi Konstitutsiyasining 29-moddasi bilan taqiqlangan), Rossiya internet-provayderlariga so'rovlarni yuborishga ruxsat bermaydi. Telegram API manzili: https://api.telegram.org/. Xo'sh, biz qilmaymiz - yo'q, yo'q. Axir, bizning sumkamizda shunday deb ataladigan narsalar bor. vebhuklar — ularning yordami bilan biz maʼlum bir manzilga soʻrovlar qilmaymiz, shunchaki oʻz soʻrovimizni bizga har qanday soʻrovga javob sifatida joʻnatamiz. Ya'ni, Odessadagi kabi savolga savol bilan javob beramiz. Shunung uchun Telegram API bizning kodimizda ko'rinmaydi.

Rad etishUshbu maqolada tilga olingan har qanday davlat tashkilotlarining nomlari xayoliydir va haqiqiy tashkilotlar nomlari bilan mos kelishi tasodifdir.

Shunday qilib, biz aqlli fikrlar bilan ta'minlaydigan bot yaratamiz. Xuddi rasmdagi kabi:

Yandex.Cloud-da Telegram botini yaratish

Siz buni amalda sinab ko'rishingiz mumkin - bu nom: @SmartThoughtsBot. Tugmachaga e'tibor qaratdi "Elisning mahorati"? Buning sababi shundaki, bot bir xil nomdagi bot uchun o'ziga xos "hamroh" hisoblanadi. Elisning mahorati, ya'ni. kabi funktsiyalarni bajaradi Elisning mahorati va ular bir-birini reklama qilish orqali tinch-totuv yashashlari mumkin. Qanday yaratish haqida Aqlli fikrlar mahorati maqolada tasvirlangan Elis mahoratga ega bo'ladi. Endi (yuqoridagi maqola e'lon qilinganidan keyin ba'zi o'zgarishlar kiritilgandan so'ng) smartfonda bu mahorat shunga o'xshash narsa ko'rinadi:

Yandex.Cloud-da Telegram botini yaratish

Bot yaratish

Men ushbu qo'llanma hamma uchun foydali bo'lishini istardim, shu jumladan. va yangi bot quruvchilar. Shuning uchun, ushbu bo'limda men qanday qilib umuman yaratishni batafsil tasvirlab beraman Telegrambotlar. Ushbu ma'lumotni talab qilmaydiganlar uchun keyingi bo'limlarga o'ting.

Ilovani oching Telegaram, keling, barcha botlarning otasini chaqiraylik (ular odamlar kabi hamma narsaga ega) - @BotFather - va avval biz unga nima qilishimiz mumkinligi haqidagi xotirasini yangilash uchun /help buyrug'ini beramiz. Endi biz jamoaga qiziqish bildiramiz / newbot.

Yandex.Cloud-da Telegram botini yaratish

Bu erda tasvirlangan bot allaqachon yaratilganligi sababli, namoyish qilish uchun men qisqa vaqtga boshqa bot yarataman (va keyin uni o'chirib tashlayman). Men unga qo'ng'iroq qilaman DemoHabrBot. Ismlar (username) barcha telegram botlari so'z bilan tugashi kerak bot, masalan: MyCoolBot yoki my_cool_bot - bu botlar uchun. Lekin avval botga nom beramiz (ism) - va bu odamlar uchun. Ism har qanday tilda bo'lishi mumkin, bo'sh joy bo'lishi mumkin va so'z bilan tugashi shart emas bot, va hatto noyob bo'lishi shart emas. Ushbu misolda men ushbu botni chaqirdim Demo Habr.

Yandex.Cloud-da Telegram botini yaratish

Endi bot uchun nom tanlang (username, botlar uchun). Keling, unga qo'ng'iroq qilaylik DemoHabrBot. Bot nomi bilan bog'liq hamma narsa (ism) uning ismiga umuman aloqasi yo'q - username (yoki amal qiladi, lekin buning aksi). Noyob bot nomini muvaffaqiyatli yaratgandan so'ng, biz qizil o'q bilan skrinshotda ko'rsatilgan tokenni nusxalashimiz va saqlashimiz kerak (eng qat'iy ishonch bilan!). Uning yordami bilan biz keyinchalik kelib chiqishini aniqlaymiz Telegram'bizning vebhuk Yandex funktsiyasi.

Yandex.Cloud-da Telegram botini yaratish

Endi barcha botlarning otasiga buyruq beramiz: /mybots, va u biz yaratgan barcha botlar ro'yxatini ko'rsatadi. Keling, yangi pishirilgan botni hozircha yolg'iz qoldiraylik Demo Habr (u botlarni qanday yaratishni ko'rsatish uchun yaratilgan, ammo biz uni bugun boshqa ko'rgazmali maqsadlarda ham ishlatamiz) va keling, botni ko'rib chiqamiz. Aqlli fikrlar (@SmartThoughtsBot). Botlar ro'yxatida uning nomi ko'rsatilgan tugmani bosing.

Yandex.Cloud-da Telegram botini yaratish

Bu yerda biz botimizni sozlashimiz mumkin. Tugmasini bosish orqali Tahrirlash ... Biz bir yoki boshqa variantni tahrirlashga o'tamiz. Masalan, tugmani bosish orqali Ismni tahrirlash biz bot nomini o'zgartirishimiz mumkin, o'rniga ayting Aqlli fikrlar, yozing Aqldan ozgan g'oyalar. Botpic - bu botning avataridir, hech bo'lmaganda bo'lishi kerak 150 x 150 px. Tavsif — bu savolga javob sifatida foydalanuvchi botni birinchi marta ishga tushirganda ko'rgan qisqa tavsif: Bu bot nima qila oladi? Biz haqimizda — botga havola bilan uzatiladigan yanada qisqaroq tavsif (https://t.me/SmartThoughtsBot) yoki u haqida ma'lumotni ko'rayotganda.

Yandex.Cloud-da Telegram botini yaratish

Biz qilishimiz kerak bo'lgan yagona narsa buyruqlarni o'rnatishdir. Buning uchun tugmani bosing Buyruqlarni tahrirlash. Foydalanuvchi amaliyotini standartlashtirish uchun Telegram har doim ikkita buyruqdan foydalanishni tavsiya qiladi: / boshlash и / Yordam bering, va agar botga sozlamalar kerak bo'lsa, qo'shimcha /settings buyrug'idan foydalaning. Bizning botimiz to'p kabi oddiy, shuning uchun unga hali hech qanday sozlamalar kerak emas. Biz dastlabki ikkita buyruqni yozamiz, keyin ularni kodda qayta ishlaymiz. Endi, agar foydalanuvchi kiritish maydoniga qiya chiziq (slash belgisi: /) kiritsa, tezkor tanlash uchun buyruqlar ro'yxati paydo bo'ladi. Hammasi rasmdagidek: chap tomonda - biz ota-bot orqali buyruqlarni o'rnatamiz; o'ng tomonda, bu buyruqlar bizning botimizdagi foydalanuvchilar uchun allaqachon mavjud.

Yandex.Cloud-da Telegram botini yaratish

Yandex funktsiyasi

Endi bizning bot yaratilgan bo'lsa, keling Yandex.Cloudbizning bot kodini bajaradigan funktsiyani yaratish uchun. Agar siz bilan ishlamagan bo'lsangiz Yandex.Cloud materialni o'qing Elis Bitrix mamlakatida, undan keyin - Yandex funktsiyalari pochta jo'natish. Ishonchim komilki, ushbu ikkita nisbatan qisqa maqola mavzu bo'yicha asosiy tushunchaga ega bo'lishingiz uchun etarli bo'ladi.

Shunday qilib, konsolda Yandex.Cloud chap navigatsiya menyusida elementni tanlang Bulut vazifalari, va keyin tugmasini bosing Funktsiya yarating. Biz unga nom va o'zimiz uchun qisqacha tavsif beramiz.

Yandex.Cloud-da Telegram botini yaratish

Tugmani bosgandan keyin yaratish va bir necha soniyadan so'ng, yangi funksiya barcha funktsiyalar ro'yxatida paydo bo'ladi. Uning ismini bosing - bu bizni sahifaga olib boradi haqida umumiy ma'lumot bizning funktsiyamiz. Bu erda siz yoqishingiz kerak (On) almashtirish Jamoat funktsiyasiShunday qilib, unga tashqi tomondan kirish mumkin bo'ladi (uchun Yandex.Cloud) dunyo va maydonlarning ma'nosi Qo'ng'iroq havolasi и ID — Sizning funksiyangizga turli firibgarlar qo‘ng‘iroq qila olmasligi uchun buni o‘zingizdan va Telegram’dan boshqa hammadan sir tuting.

Yandex.Cloud-da Telegram botini yaratish

Endi, chap menyudan foydalanib, o'ting Tahrirlovchisi funktsiyalari. Keling, o'zimizni bir lahzaga chetga surib qo'yaylik Aqlli fikrlar, va botimizning funksionalligini tekshirish uchun minimal shablon funksiyasini yarating... Biroq, bu kontekstda bu funksiya bizning botimiz... Qisqasi, hozir va shu yerda biz “oyna” qiladigan oddiy bot qilamiz ( ya'ni qaytarib yuborish ) foydalanuvchi so'rovlarini. Ushbu shablondan har doim yangi telegram botlarini yaratishda foydalanish mumkin Telegram'ohm yaxshi ishlaydi. bosing Fayl yaratish, keling, uni chaqiramiz indeks.js, va onlayn Kod muharriri ushbu faylga quyidagi kodni joylashtiring:

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
  };
};

Yandex.Cloud konsolida u quyidagicha ko'rinishi kerak:

Yandex.Cloud-da Telegram botini yaratish

Quyida biz ko'rsatamiz Kirish nuqtasi - indeks.botqayerda indeks bu fayl nomi (indeks.js), va bot - funksiya nomi (modul.exports.bot). Boshqa barcha maydonlarni xuddi shunday qoldiring va yuqori o'ng burchakdagi tugmani bosing Versiya yaratish. Bir necha soniyadan so'ng funksiyaning ushbu versiyasi yaratiladi. Sinovdan ko'p o'tmay webhook, biz yangi versiyani yaratamiz - Aqlli fikrlar.

Yandex.Cloud-da Telegram botini yaratish

Ob'ektni saqlash

Endi biz yaratdik Yandex funktsiyasi, keling, biz konsolda bo'lganimizda Yandex.Cloud, keling, deb atalmishni yarataylik chelak (kepçe, ya'ni. chelak rus tilida, umuman guldasta emas) bizning botimizda ishlatiladigan tasvir fayllarini saqlash uchun Aqlli fikrlar. Chapdagi navigatsiya menyusida elementni tanlang Ob'ektni saqlash, tugmasini bosing Bir chelak yarating, unga nom bering, masalan, img-paqir, va eng muhimi, Ob'ektlarga kirishni o'qish Biz buni hammaga ochiq qilamiz - aks holda Telegram rasmlarimizni ko'rmaydi. Boshqa barcha maydonlarni o'zgarishsiz qoldiramiz. Tugmasini bosing Bir chelak yarating.

Yandex.Cloud-da Telegram botini yaratish

Shundan so'ng, barcha chelaklar ro'yxati quyidagicha ko'rinishi mumkin (agar bu sizning yagona chelak bo'lsa):

Yandex.Cloud-da Telegram botini yaratish

Endi men chelak nomini bosishni va turli ilovalaringiz uchun tasvirlarni saqlashni tashkil qilish uchun uning ichida papka yaratishni taklif qilaman. Masalan, telegram boti uchun Aqlli fikrlar nomli papka yaratdim tg-bot-aqlli-fikrlar (hech narsa, men bu kodni tushunaman). Siz ham yarating.

Yandex.Cloud-da Telegram botini yaratish

Endi siz papka nomini bosishingiz, unga kirishingiz va fayllarni yuklashingiz mumkin:

Yandex.Cloud-da Telegram botini yaratish

Va fayl nomini bosish orqali - uni oling URL bizning botimizda va umuman - istalgan joyda foydalanish uchun (lekin buni nashr qilmang URL keraksiz, chunki tirbandlikdan Ob'ektni saqlash zaryadlangan).

Yandex.Cloud-da Telegram botini yaratish

Bu, asosan, hamma narsa Ob'ektni saqlash. Endi siz u erda fayllarni yuklash taklifini ko'rganingizda nima qilish kerakligini bilib olasiz.

Webhuk

Endi biz o'rnatamiz webhook - ya'ni. bot serverdan yangilanishni (masalan, foydalanuvchidan kelgan xabar) olganida Telegram bizning Yandex funktsiyasi so'rov yuboriladi (so'rov) ma'lumotlar bilan. Brauzeringizning manzil maydoniga oddiygina joylashtirishingiz va keyin sahifani yangilashingiz mumkin bo'lgan satr (buni faqat bir marta qilishingiz kerak): https://api.telegram.org/bot{bot_token}/setWebHook?url={webhook_url}
Biz shunchaki almashtiramiz {bot_token} botimizni yaratishda ota botdan olgan tokenga va {webhook_url} - yoqilgan URL bizning Yandex funktsiyalari. Bir daqiqa kuting! Lekin RossKomTsenzur Rossiya Federatsiyasidagi provayderlarga manzilga xizmat ko'rsatishni taqiqlaydi https://api.telegram.org. Ha to'g'ri. Ammo biror narsa o'ylab toping. Axir, siz, masalan, Ukrainada, Isroilda yoki Kanadada buvingizdan bu haqda so'rashingiz mumkin - u erda "Rosskomtsenzura" yo'q va odamlar usiz qanday yashashlarini Xudo biladi. Natijada, webhookni o'rnatishda so'rov-javob quyidagicha ko'rinishi kerak:

Yandex.Cloud-da Telegram botini yaratish

Biz sinovdan o'tmoqdamiz. U "ko'zgu" bo'lishi kerak.

Yandex.Cloud-da Telegram botini yaratish

Ha shunaqa. Tabriklaymiz - hozir Yandex funktsiyasi bo'ldi Telegram-bot!

Aqlli fikrlar

Endi aqlli fikrlar bilan shug'ullanamiz. Kod ochiq va ochiq GitHub. Bu juda yaxshi sharhlangan va atigi yuz qatordan iborat. Uni opera diva librettosi kabi o'qing!

Yandex.Cloud-da Telegram botini yaratish

Loyihani klonlash va bog'liqliklarni o'rnatish:

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

Faylga kerakli o'zgarishlarni kiriting indeks.js (ixtiyoriy; siz hech narsani o'zgartirishingiz shart emas). Yaratmoq zip-arxiv, fayl bilan indeks.js va papka tugun_modullari ichida, masalan, nomi ostida smart.zip.

Yandex.Cloud-da Telegram botini yaratish

Endi bizning konsolimizga o'ting Yandex funktsiyalari, yorliqni tanlang ZIP arxiv, tugmasini bosing Faylni tanlang, va arxivimizni yuklab oling smart.zip. Nihoyat, yuqori o'ng burchakdagi tugmani bosing Versiya yaratish.

Yandex.Cloud-da Telegram botini yaratish

Bir necha soniyadan so'ng, funksiya yangilanganda, biz botimizni yana sinab ko'ramiz. Endi u endi "ko'zgu" emas, balki aqlli fikrlarni etkazib beradi!

Yandex.Cloud-da Telegram botini yaratish

Bugun hammasi shu. Keyingi maqolalar. Agar siz buni o'qishga qiziqsangiz, yangi maqolalar haqidagi bildirishnomalarga obuna bo'ling. Siz bu yerda yoki saytida obuna bo'lishingiz mumkin Telegramkanal IT bo'yicha qo'llanma Zakharyoki Twitter @mikezharov.

Manbalar

GitHub-da kod
Yandex bulut funktsiyalari
Yandex ob'ektlarini saqlash
Botlar: Ishlab chiquvchilar uchun kirish
Telegram Bot API

Xayriyalar

Yandex.Cloud-da Telegram botini yaratish

Manba: www.habr.com

a Izoh qo'shish