Bugun biz hurda materiallardan yig'amiz 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:
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
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.
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.
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.
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.
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.
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 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
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.
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.
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:
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.
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.
Shundan so'ng, barcha chelaklar ro'yxati quyidagicha ko'rinishi mumkin (agar bu sizning yagona chelak bo'lsa):
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.
Endi siz papka nomini bosishingiz, unga kirishingiz va fayllarni yuklashingiz mumkin:
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).
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:
Biz sinovdan o'tmoqdamiz. U "ko'zgu" bo'lishi kerak.
Ha shunaqa. Tabriklaymiz - hozir Yandex funktsiyasi bo'ldi Telegram-bot!
Aqlli fikrlar
Endi aqlli fikrlar bilan shug'ullanamiz. Kod ochiq va ochiq
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.
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.
Bir necha soniyadan so'ng, funksiya yangilanganda, biz botimizni yana sinab ko'ramiz. Endi u endi "ko'zgu" emas, balki aqlli fikrlarni etkazib beradi!
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
Manbalar
Xayriyalar
Manba: www.habr.com