
Šodien mēs apkoposim no improvizētiem materiāliem Telegram bot izmantojot (Vai Yandex funkcijas īsumam) un (Vai Objektu glabāšana - skaidrības labad). Kods būs ieslēgts Node.js. Tomēr ir viens pikants apstāklis - noteikta organizācija, ko sauc, teiksim, RossKomCenzūra (cenzūra ir aizliegta ar Krievijas Federācijas konstitūcijas 29. pantu), neļauj interneta pakalpojumu sniedzējiem Krievijā pārsūtīt pieprasījumus uz Telegram API uz adresi: https://api.telegram.org/. Nu, mēs to nedarīsim - nē, nē. Patiešām, mūsu somā ir t.s. tīmekļa aizķeres - ar viņu palīdzību mēs neveicam pieprasījumus uz konkrētu adresi, bet tikai nosūtām savu pieprasījumu kā atbildi uz jebkuru pieprasījumu mums. Tas ir, kā Odesā - mēs atbildam uz jautājumu ar jautājumu. Tāpēc Telegram API neparādīsies mūsu kodā.
AtrunaJebkuru šajā rakstā minēto valsts organizāciju nosaukumi ir fiktīvi, un iespējamās sakritības ar reālās dzīves organizāciju nosaukumiem ir nejaušas.
Tātad, mēs izveidosim robotu, kas mūs apgādās ar gudrām domām. Tieši kā attēlā:
Varat to izmēģināt darbībā - šeit ir nosaukums: @SmartThoughtsBot. Ievērojiet pogu "Alises prasme"? Tas ir tāpēc, ka robots ir sava veida "biedrs" tāda paša nosaukuma vārdam Alises prasme, t.i. tas veic tādas pašas funkcijas kā Alises prasme un, iespējams, ka viņi var mierīgi līdzāspastāvēt, reklamējot viens otru. Par to, kā izveidot Gudras domas prasme aprakstīts rakstā . Tagad (pēc dažu izmaiņu veikšanas pēc iepriekš minētā raksta publicēšanas) viedtālrunī šis prasme izskatīsies apmēram šādi:
Botu izveide
Gribētos, lai šī pamācība būtu noderīga ikvienam, t.sk. un iesācēju "botu būvētāji". Tāpēc šajā sadaļā es detalizēti aprakstīšu, kā kopumā izveidot Telegramroboti. Tiem, kam šī informācija nav nepieciešama, pārejiet pie nākamajām sadaļām.
Atveriet lietojumprogrammu Telegaram, mēs saucam par visu robotu tēvu (viņiem viss ir kā cilvēkiem) - @BotFather - un sākumā mēs viņam dosim komandu / palīdzēt, lai atsvaidzinātu mūsu atmiņu par to, ko mēs varam darīt. Tagad mūs interesē komanda / newbot.

Tā kā šeit aprakstītais bots jau ir izveidots, demonstrācijas nolūkos uz īsu brīdi izveidošu vēl vienu botu (tad izdzēsīšu). Es viņam piezvanīšu DemoHabrBot. Vārdi (lietotājvārds) visiem telegrammu robotiem jābeidzas ar vārdu cērme, piemēram: MyCoolBot vai my_cool_bot Tas ir paredzēts robotiem. Bet vispirms dodiet robotam nosaukumu (nosaukums) ir paredzēts cilvēkiem. Nosaukums var būt jebkurā valodā, satur atstarpes, tam nav jābeidzas ar vārdu cērme, un tai pat nav jābūt unikālam. Šajā piemērā es saucu šo robotprogrammu Demo Habr.

Tagad izvēlieties robota nosaukumu (lietotājvārds, robotiem paredzētais). Sauksim to DemoHabrBot. Viss, kas saistīts ar robota nosaukumu (nosaukums) vispār nav saistīts ar viņa vārdu - lietotājvārds (vai attiecas, bet tieši otrādi). Pēc veiksmīgas unikāla robota nosaukuma izveides mums ir jākopē un jāsaglabā (stingrākajā pārliecībā!) ekrānuzņēmumā redzamais marķieris ar sarkanu bultiņu. Ar tās palīdzību mēs vēlāk uzstādīsim izejošo Telegram'tīmekļa aizķere mūsu Yandex funkcija.

Un tagad mēs dosim komandu visu botu tēvam: /mybotsun tas parādīs visu mūsu izveidoto robotprogrammatūru sarakstu. Pagaidām atstāsim tikko izcepto botu mierā Demo Habr (tas tika izveidots, lai parādītu, kā izveidot robotus, bet mēs to šodien izmantosim citiem demonstrācijas mērķiem), un apsveriet robotu Gudras domas (@SmartThoughtsBot). Botu sarakstā noklikšķiniet uz pogas ar tās nosaukumu.

Šeit mēs varam iestatīt savu robotprogrammatūru. Nospiežot pogu Rediģēt ... mēs pāriesim pie vienas vai otras opcijas rediģēšanas. Piemēram, noklikšķinot uz pogas Rediģēt vārdu mēs varam mainīt robota nosaukumu, teiksim tā vietā Gudras domas, rakstiet trakas idejas. Botpic - tas ir robota iemiesojums, tam jābūt vismaz 150 x 150 pikseļi. Apraksts ir īss apraksts, ko lietotājs redz, kad robots tiek palaists pirmo reizi, kā atbildi uz jautājumu: Ko šis robots var darīt? Par Mums - vēl īsāks apraksts, kas tiek pārsūtīts ar saiti uz robotu (https://t.me/SmartThoughtsBot) vai skatot informāciju par to.

Mums vienkārši jāiestata komandas. Lai to izdarītu, nospiediet pogu Rediģēt komandas. Standartizēt lietotāju praksi Telegram iesaka vienmēr izmantot divas komandas: /sākt и / palīdzība, un, ja robotam ir nepieciešami iestatījumi, papildu komanda /settings. Mūsu robots ir tikpat vienkāršs kā bumbiņa, tāpēc tam vēl nav nepieciešami nekādi iestatījumi. Mēs rakstām pirmās divas komandas, kuras pēc tam apstrādāsim kodā. Tagad, ja lietotājs ievades laukā ievada slīpsvītru (slīpsvītru: /), tiks parādīts komandu saraksts viņu ātrai atlasei. Viss ir kā attēlā: pa kreisi - mēs iestatām komandas caur bot-tēvu; labajā pusē šīs komandas jau ir pieejamas lietotājiem mūsu robotprogrammā.

Yandex funkcija
Tagad, kad mūsu robots ir izveidots, pāriesim pie Yandex.Cloudlai izveidotu funkciju, kas izpildīs mūsu robota kodu. Ja neesat strādājis ar Yandex.Cloud izlasi materiālu , un tad - . Esmu gandrīz pārliecināts, ka ar šiem diviem salīdzinoši mazajiem rakstiem pietiks, lai jūs iegūtu elementāru izpratni par šo tēmu.
Tātad konsolē Yandex.Mākoņi kreisajā navigācijas izvēlnē atlasiet vienumu Mākoņu funkcijas, un pēc tam nospiediet pogu Izveidojiet funkciju. Mēs piešķiram tam nosaukumu, un sev - īsu aprakstu.

Pēc pogas nospiešanas izveidot un pēc pāris sekundēm jaunā funkcija parādīsies visu funkciju sarakstā. Noklikšķiniet uz viņas vārda - tas mūs aizvedīs uz lapu Pārskatiet mūsu funkcija. Šeit jums ir jāiespējoOn) slēdzis sabiedriskā funkcijalai padarītu to pieejamu no ārējās (par Yandex.Mākoņi) no pasaules un lauku vērtību Saite uz zvanu и ID - turiet to dziļā noslēpumā no visiem, izņemot sevi un Telegram, lai dažādi blēži nevarētu izsaukt jūsu funkciju.

Tagad, izmantojot kreiso izvēlni, dodieties uz Redaktors funkcijas. Uz brīdi noliksim malā mūsu Gudras domas, un izveidojiet minimālu veidnes funkciju, lai pārbaudītu mūsu robota veiktspēju ... Tomēr šajā kontekstā šī funkcija ir mūsu robots ... Īsāk sakot, tagad un tieši šeit mēs izveidosim vienkāršāko robotu, kas "atspoguļos" ( i., nosūtīt atpakaļ ) lietotāju pieprasījumus. Šo veidni vienmēr var izmantot, veidojot jaunus telegrammu robotus, lai nodrošinātu saziņu ar Telegrammaom darbojas labi. Klikšķis Izveidot failu, sauc to index.js, un tiešsaistē Koda redaktors ielīmējiet šo kodu šajā failā:
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 konsolē tam vajadzētu izskatīties apmēram šādi:

Zemāk mēs norādām Ieejas punkts Sākot no index.botKur indekss šis ir faila nosaukums (index.js) un cērme - funkcijas nosaukums (module.exports.bot). Atstājiet visus pārējos laukus "kā ir" un augšējā labajā stūrī noklikšķiniet uz pogas Izveidot versiju. Pēc dažām sekundēm tiks izveidota šī funkcijas versija. Drīz pēc pārbaudes tīmekļa aizķere, mēs izveidosim jaunu versiju − Gudras domas.

Objektu glabāšana
Tagad, kad esam iestatījuši Yandex funkcijaiesim, kamēr esam konsolē Yandex.Mākoņi, izveidot tā saukto. spainis (spainis, t.i. spainis krievu valodā, nekādā gadījumā nav pušķis) attēlu failu glabāšanai, kas tiks izmantoti mūsu robotā Gudras domas. Kreisajā navigācijas izvēlnē atlasiet Objektu glabāšana, nospiediet pogu Izveidojiet spaini, piešķiriet tai nosaukumu, piemēram, img-spainis, un, pats galvenais, Lasīšanas piekļuve objektiem padariet to publisku - pretējā gadījumā Telegram neredzēs mūsu attēlus. Visi pārējie lauki tiek atstāti nemainīti. Nospiežam pogu Izveidojiet spaini.

Pēc tam visu segmentu saraksts varētu izskatīties apmēram šādi (ja šis ir jūsu vienīgais segments):

Tagad es ierosinu noklikšķināt uz kausa nosaukuma un tajā izveidot mapi, lai sakārtotu attēlu glabāšanu dažādām lietojumprogrammām. Piemēram, telegrammas robotam Gudras domas es izveidoju mapi ar nosaukumu tg-bot-smart-thoughts (Nekas, es sapratīšu šo šifru). Izveidojiet arī tādu.

Tagad varat noklikšķināt uz mapes nosaukuma, ieiet tajā un augšupielādēt failus:

Un noklikšķinot uz faila nosaukuma - iegūstiet to URL izmantošanai mūsu robotprogrammā un vispār - jebkur (bet nepublicējiet to URL nevajadzīgi, jo satiksme no objektu uzglabāšana uzlādēts).

Lūk, patiesībā, tas arī viss objektu uzglabāšana. Tagad jūs zināt, ko darīt, kad redzat uzvedni augšupielādēt failus.
Web aizķere
Tagad mēs instalēsim tīmekļa aizķere — t.i. kad robots saņem atjauninājumu (piemēram, ziņojumu no lietotāja), no servera Telegram mūsu Yandex funkcija pieprasījums tiks nosūtītspieprasīt) ar datiem. Šeit ir virkne, kuru varat vienkārši ielīmēt pārlūkprogrammas adreses laukā un pēc tam atsvaidzināt lapu (tas ir jādara tikai vienu reizi): https://api.telegram.org/bot{bot_token}/setWebHook?url={webhook_url}
Vienkārši nomainiet {bot_token} uz marķieri, ko saņēmām no tēva robota, veidojot savu robotprogrammatūru, un {webhook_url} - ieslēgts URL mūsu Yandex funkcijas. Uzgaidi minūti! Bet RossKomCenzūra aizliedz pakalpojumu sniedzējiem Krievijas Federācijā sniegt adresi https://api.telegram.org. Jā, tieši tā. Bet jūs varat kaut ko izdomāt. Galu galā, jūs varat, piemēram, pajautāt vecmāmiņai par to Ukrainā, Izraēlā vai Kanādā - tur nav "krievu cenzūras", un tikai Dievs zina, kā cilvēki bez tās dzīvo. Rezultātā pieprasījumam-atbildei, instalējot tīmekļa aizķeri, vajadzētu izskatīties šādi:

Testēšana. Jāatspoguļo.

Tā ir patiesība. Apsveicam - tagad Yandex funkcija ir kļuvusi Telegram- bot!
Gudras domas
Un tagad mēs veicam viedās domas. Kods ir atvērts un atrodas . Tas ir diezgan labi komentēts, un tas ir tikai simts rindiņas garš. Lasi kā operas dīvas libretu!

Klonējiet projektu un instalējiet atkarības:
git clone https://github.com/stmike/tg-bot-smart-thoughts.git
cd tg-bot-smart-thoughts
npm i
Veiciet failā nepieciešamās izmaiņas index.js (pēc izvēles; jūs nevarat neko mainīt). Izveidot rāvējslēdzējs-arhīvs, ar failu index.js un mapi mezgla_moduļi iekšā, piemēram, sauc smart.zip.

Tagad dodieties konsolē uz mūsu Yandex funkcijas, atlasiet cilni ZIP arhīvs, nospiediet pogu Izvēlieties failuun lejupielādējiet mūsu arhīvu smart.zip. Visbeidzot, augšējā labajā stūrī noklikšķiniet uz pogas Izveidot versiju.

Pēc dažām sekundēm, kad funkcija tiks atjaunināta, mēs vēlreiz pārbaudīsim mūsu robotprogrammatūru. Tagad viņš vairs “neatspoguļo”, bet sniedz gudras domas!

Tas šodienai viss. Tālāk seko citi raksti. Ja jūs interesē lasīt šo, abonējiet paziņojumus par jauniem rakstiem. Abonēt var šeit vai Telegram- kanāls Vai Twitter .
atsauces
Ziedojumi
Avots: www.habr.com
