Ngayon, mula sa mga scrap materials, kami ay mag-iipon https://api.telegram.org/
. Well, hindi kami - hindi, hindi. Tapos sa bag namin may mga tinatawag. mga webhook β sa tulong nila, hindi kami humihiling sa isang partikular na address, ngunit ipinapadala lang ang aming kahilingan bilang tugon sa anumang kahilingan sa amin. Iyon ay, tulad ng sa Odessa, sinasagot namin ang isang tanong na may isang tanong. kaya lang Telegram API ay hindi lilitaw sa aming code.
DisclaimerAng mga pangalan ng alinmang organisasyon ng pamahalaan na binanggit sa artikulong ito ay kathang-isip lamang, at ang mga posibleng tugma sa mga pangalan ng mga tunay na organisasyon sa buhay ay nagkataon lamang.
Kaya, gagawa kami ng bot na magbibigay sa amin ng matalinong pag-iisip. Katulad ng nasa larawan:
Maaari mong subukan ito sa aksyon - narito ang pangalan: @SmartThoughtsBot. Napansin ang pindutan "Ang galing ni Alice"? Ito ay dahil ang bot ay isang uri ng "kasama" para sa bot na may parehong pangalan. Ang galing ni Alice, ibig sabihin. ito ay gumaganap ng parehong mga function bilang Ang galing ni Alice at ito ay posible na sila ay maaaring mabuhay nang mapayapa sa pamamagitan ng pag-advertise sa isa't isa. Tungkol sa kung paano lumikha kasanayan Matalinong Kaisipan inilarawan sa artikulo
Paggawa ng bot
Nais kong maging kapaki-pakinabang ang tutorial na ito sa lahat, kasama na. at mga baguhang tagabuo ng bot. Samakatuwid, sa seksyong ito ay ilalarawan ko sa ilang detalye kung paano lumikha sa pangkalahatan Telegramamga bot. Para sa mga hindi nangangailangan ng impormasyong ito, magpatuloy sa mga sumusunod na seksyon.
Buksan ang application Telegaram, tawagan natin ang ama ng lahat ng mga bot (mayroon silang lahat tulad ng mga tao) - @BotFather - at una, ibibigay natin sa kanya ang /help command para i-refresh ang kanyang memorya sa kung ano ang magagawa natin. Ngayon kami ay magiging interesado sa koponan / newbot.
Dahil ang bot na inilarawan dito ay nagawa na, para sa mga layunin ng pagpapakita ay gagawa ako ng isa pang bot sa maikling panahon (at pagkatapos ay tanggalin ito). Tatawagan ko siya DemoHabrBot. Mga pangalan (username) ng lahat ng telegram bots ay dapat magtapos sa salita bot, halimbawa: MyCoolBot o my_cool_bot - ito ay para sa mga bot. Ngunit bigyan muna namin ang bot ng pangalan (pangalan) - at ito ay para sa mga tao. Ang pangalan ay maaaring nasa anumang wika, naglalaman ng mga puwang, at hindi kailangang magtapos sa isang salita bot, at hindi na kailangang maging natatangi. Sa halimbawang ito, tinawag ko ang bot na ito Demo Habr.
Pumili ngayon ng pangalan para sa bot (username, ang isa para sa mga bot). Tawagan natin siya DemoHabrBot. Lahat ng nauugnay sa pangalan ng bot (pangalan) ay hindi nauugnay sa kanyang pangalan - username (o naaangkop, ngunit eksaktong kabaligtaran). Pagkatapos ng matagumpay na paglikha ng isang natatanging pangalan ng bot, kailangan naming kopyahin at i-save (sa pinakamahigpit na kumpiyansa!) ang token na ipinapakita sa screenshot na may pulang arrow. Sa tulong nito ay itatatag natin sa ibang pagkakataon ang pinanggalingan mula sa Telegrama'isang webhook sa aming Pag-andar ng Yandex.
Ngayon ay ibigay natin ang utos sa ama ng lahat ng mga bot: /mybots, at magpapakita ito sa amin ng isang listahan ng lahat ng mga bot na aming ginawa. Iwanan muna natin ang bagong lutong bot sa ngayon Demo Habr (ito ay nilikha upang ipakita kung paano lumikha ng mga bot, ngunit gagamitin din namin ito ngayon para sa iba pang mga layunin ng pagpapakita), at tingnan natin ang bot Matalinong Kaisipan (@SmartThoughtsBot). I-click ang button na may pangalan nito sa listahan ng mga bot.
Dito natin mai-configure ang ating bot. Sa pamamagitan ng pagpindot sa pindutan I-edit ... Magpapatuloy kami sa pag-edit ng isa o ibang opsyon. Halimbawa, sa pamamagitan ng pag-click sa pindutan I-edit ang Pangalan maaari naming baguhin ang pangalan ng bot, sabihin sa halip Matalinong Kaisipan, magsulat Mga Nakakabaliw na Ideya. Botpic - ito ang avatar ng bot, dapat ay hindi bababa sa 150 x 150 px. paglalarawan β ito ay isang maikling paglalarawan na nakikita ng user kapag sinimulan ang bot sa unang pagkakataon, bilang sagot sa tanong: Ano ang magagawa ng bot na ito? tungkol sa β isang mas maikling paglalarawan, na ipinadala kasama ng isang link sa bot (https://t.me/SmartThoughtsBot
) o kapag tinitingnan ang impormasyon tungkol dito.
Ang kailangan lang nating gawin ay i-set up ang mga utos. Upang gawin ito, pindutin ang pindutan I-edit ang Mga Utos. Upang gawing pamantayan ang kasanayan ng gumagamit Telegrama Inirerekomenda na laging gumamit ng dalawang utos: /simula ΠΈ / tulong, at kung kailangan ng bot ng mga setting, gamitin ang karagdagang utos na /settings. Ang aming bot ay kasing simple ng isang bola, kaya hindi pa nito kailangan ng anumang mga setting. Isinulat namin ang unang dalawang utos, na pagkatapos ay ipoproseso namin sa code. Ngayon, kung magpasok ang user ng slash (slash sign: /) sa input field, lalabas ang isang listahan ng mga command para sa mabilisang pagpili. Ang lahat ay tulad ng sa larawan: sa kaliwa - nag-i-install kami ng mga utos sa pamamagitan ng ama bot; sa kanan, ang mga command na ito ay available na sa mga user sa aming bot.
Pag-andar ng Yandex
Ngayong nagawa na ang ating bot, pumunta tayo sa Yandex.Cloudupang lumikha ng isang function na magpapatupad ng code ng aming bot. Kung hindi ka nakatrabaho Yandex.Cloud basahin ang materyal
Kaya sa console Yandex.Cloud sa kaliwang menu ng nabigasyon piliin ang item Mga Pag-andar ng Ulap, at pagkatapos ay pindutin ang pindutan Lumikha ng isang function. Binibigyan namin ito ng isang pangalan at isang maikling paglalarawan para sa ating sarili.
Pagkatapos pindutin ang pindutan lumikha at pagkatapos ng ilang segundo, lalabas ang bagong function sa listahan ng lahat ng function. Mag-click sa kanyang pangalan - dadalhin tayo nito sa pahina Repasuhin ating tungkulin. Dito kailangan mong paganahin (On) lumipat Pampublikong tungkulinupang ito ay maging accessible mula sa panlabas (para sa Yandex.Cloud) ng mundo, at ang kahulugan ng mga bukid Link ng tawag ΠΈ Identifier β panatilihin itong malalim na lihim mula sa lahat maliban sa iyong sarili at Telegram, upang ang iyong function ay hindi matawagan ng iba't ibang mga scammer.
Ngayon, gamit ang kaliwang menu, pumunta sa Ang editor mga function. Isantabi muna natin sandali ang ating Matalinong Kaisipan, at lumikha ng isang minimal na function ng template upang suriin ang functionality ng aming bot... Gayunpaman, sa kontekstong ito, ang function na ito ay ang aming bot... Sa madaling salita, ngayon at dito mismo ay gagawa kami ng isang simpleng bot na "magsasalamin" ( ibig sabihin, ipadala pabalik ) ang mga kahilingan ng user. Ang template na ito ay palaging magagamit kapag lumilikha ng mga bagong telegram bot upang matiyak na ang pakikipag-ugnayan sa Telegram'ohm gumagana nang maayos. I-click Lumikha ng file, tawagan natin siya index.js, at online Editor ng code i-paste ang sumusunod na code sa file na ito:
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
};
};
Sa Yandex.Cloud console dapat itong magmukhang ganito:
Sa ibaba ay ipinapahiwatig namin Pasukan - index.botSaan index ito ang pangalan ng file (index.js), at bot - pangalan ng function (module.exports.bot). Iwanan ang lahat ng iba pang mga patlang bilang ay, at i-click ang pindutan sa kanang sulok sa itaas Lumikha ng bersyon. Sa ilang segundo, malilikha ang bersyong ito ng function. Pagkatapos ng pagsubok webhook, gagawa kami ng bagong bersyon β Matalinong Kaisipan.
Imbakan ng bagay
Ngayong nakagawa na tayo Pag-andar ng Yandex, tara, habang nasa console tayo Yandex.Cloud, gawin natin ang tinatawag na balde (balde, ibig sabihin. bucket sa Russian, hindi isang bouquet sa lahat) para sa pag-iimbak ng mga file ng imahe na gagamitin sa aming bot Matalinong Kaisipan. Sa kaliwang menu ng nabigasyon piliin ang item Imbakan ng Bagay, pindutin ang pindutan Gumawa ng balde, makabuo ng isang pangalan para dito, halimbawa, img-bucket, at, higit sa lahat, Basahin ang access sa mga bagay Ginagawa namin itong pampubliko - kung hindi, hindi makikita ng Telegram ang aming mga larawan. Iniiwan namin ang lahat ng iba pang mga patlang na hindi nagbabago. Pindutin ang pindutan Gumawa ng balde.
Pagkatapos nito, maaaring ganito ang hitsura ng listahan ng lahat ng bucket (kung ito lang ang bucket mo):
Ngayon iminumungkahi ko ang pag-click sa pangalan ng bucket at lumikha ng isang folder sa loob nito upang ayusin ang pag-iimbak ng mga imahe para sa iyong iba't ibang mga application. Halimbawa, para sa isang telegram bot Matalinong Kaisipan Gumawa ako ng folder na tinatawag tg-bot-smart-thoughts (wala, mauunawaan ko ang code na ito). Gumawa din ng isa.
Ngayon ay maaari kang mag-click sa pangalan ng folder, pumunta dito at mag-upload ng mga file:
At sa pamamagitan ng pag-click sa pangalan ng file - kunin ito URL para gamitin sa aming bot, at sa pangkalahatan - kahit saan (ngunit huwag i-publish ito URL hindi kailangan, dahil ang trapiko mula sa Imbakan ng bagay sinisingil).
Iyon lang talaga Imbakan ng bagay. Ngayon ay malalaman mo na kung ano ang gagawin kapag nakakita ka ng prompt na mag-upload ng mga file doon.
Webhook
Ngayon ay i-install namin webhook - ibig sabihin. kapag nakatanggap ang bot ng update (halimbawa, isang mensahe mula sa isang user) mula sa server Telegrama sa aming Pag-andar ng Yandex isang kahilingan ay ipapadala (humiling) na may data. Narito ang isang linya na maaari mong i-paste lamang sa field ng address ng iyong browser at pagkatapos ay i-refresh ang pahina (kailangan mo lang gawin ito nang isang beses): https://api.telegram.org/bot{bot_token}/setWebHook?url={webhook_url}
Papalitan na lang natin {bot_token} sa token na natanggap namin mula sa ama bot noong nilikha ang aming bot, at {webhook_url} - sa URL ating Mga function ng Yandex. Sandali lang! Pero RossKomTsenzur ipinagbabawal ang mga tagapagkaloob sa Russian Federation na ibigay ang address https://api.telegram.org
. Oo, tama iyan. Ngunit magkaroon ng isang bagay. Pagkatapos ng lahat, maaari mong, halimbawa, tanungin ang iyong lola tungkol dito sa Ukraine, Israel o Canada - walang "Rosskomcensorship" doon, at alam lamang ng Diyos kung paano nabubuhay ang mga tao nang wala ito. Bilang resulta, ang kahilingan-tugon kapag nag-i-install ng webhook ay dapat magmukhang ganito:
Sinusubukan namin. Dapat itong "salamin".
Ito ay totoo. Ang aming pagbati - ngayon Pag-andar ng Yandex ay naging Telegrama-bot!
Matalinong Kaisipan
Ngayon gawin natin ang Smart Thoughts. Ang code ay bukas at nakalagay
I-clone ang proyekto at i-install ang mga dependency:
git clone https://github.com/stmike/tg-bot-smart-thoughts.git
cd tg-bot-smart-thoughts
npm i
Gawin ang mga pagbabagong kailangan mo sa file index.js (opsyonal; wala kang kailangang baguhin). Lumikha sigla-archive, na may file index.js at folder node_modules sa loob, halimbawa, sa ilalim ng pangalan matalino.zip.
Ngayon pumunta sa console sa aming Mga function ng Yandex, piliin ang tab ZIP archive, pindutin ang pindutan Pumili ng file, at i-download ang aming archive matalino.zip. Panghuli, sa kanang sulok sa itaas, i-click ang button Lumikha ng bersyon.
Sa ilang segundo, kapag na-update ang function, muli naming susubukan ang aming bot. Ngayon hindi na siya "salamin", ngunit naghahatid ng matalinong mga kaisipan!
Yan lamang para sa araw na ito. Higit pang mga artikulo ang sumusunod. Kung interesado kang basahin ito, mag-subscribe sa mga notification tungkol sa mga bagong artikulo. Maaari kang mag-subscribe dito, o sa Telegrama-channel
sanggunian
Mga donasyon
Pinagmulan: www.habr.com