Konstruante Telegram-bot en Yandex.Cloud

Konstruante Telegram-bot en Yandex.Cloud

Hodiaŭ, el improvizitaj materialoj, ni kolektos enen Yandex.Cloud Telegrambot uzante Yandex Nubaj Funkcioj (aŭ Yandex-funkcioj por koncizeco) kaj Yandex Objekto Stokado (aŭ Objekta Stokado - por klareco). La kodo estos ŝaltita node.js. Tamen estas unu pika cirkonstanco - certa organizo nomata, ni diru, RossKomCenzuro (cenzuro estas malpermesita de artikolo 29 de la Konstitucio de la Rusa Federacio), ne permesas al interretaj provizantoj en Rusio transdoni petojn al Telegram API ĉe: https://api.telegram.org/. Nu, ni ne faros - ne, ne. Ja en nia sako estas tn. rethokoj - kun ilia helpo, ni ne faras petojn al specifa adreso, sed nur sendas nian peton kiel respondon al iu peto al ni. Tio estas, kiel en Odeso - ni respondas demandon per demando. Tial Telegram API ne aperos en nia kodo.

MalgarantioLa nomoj de iuj ŝtataj organizaĵoj menciitaj en ĉi tiu artikolo estas fikciaj, kaj eblaj koincidoj kun la nomoj de realvivaj organizoj estas hazardaj.

Do, ni faros bot, kiu provizos al ni inteligentajn pensojn. Ĝuste kiel en la bildo:

Konstruante Telegram-bot en Yandex.Cloud

Vi povas provi ĝin en ago - jen la nomo: @SmartThoughtsBot. Rimarku la butonon "La Kapablo de Alice"? Ĉi tio estas ĉar la bot estas speco de "kunulo" por la samnoma la lerteco de Alice, t.e. ĝi plenumas la samajn funkciojn kiel la lerteco de Alice kaj, eble, ke ili povas kunekzisti pace reklamante unu la alian. Pri kiel krei Saĝa Penskapablo priskribita en la artikolo Alice ricevas la kapablon. Nun (post fari iujn ŝanĝojn post la publikigo de la supra artikolo) sur inteligenta telefono ĉi tion lerteco aspektos kiel ĉi tio:

Konstruante Telegram-bot en Yandex.Cloud

Bot-kreado

Mi ŝatus, ke ĉi tiu lernilo estu utila al ĉiuj, inkl. kaj komencanto "bot konstruistoj". Tial, en ĉi tiu sekcio mi priskribos iom detale kiel krei ĝenerale en Telegramo'e bots. Por tiuj, kiuj ne bezonas ĉi tiujn informojn, iru al la sekvaj sekcioj.

Malfermu la aplikaĵon Telegaram, ni nomas la patro de ĉiuj robotoj (ili havas ĉion kiel homoj) - @BotFather — kaj por komenci, ni donos al li la /help-ordonon por refreŝigi nian memoron pri tio, kion ni povas fari. Nun ni interesiĝas pri la teamo / newbot.

Konstruante Telegram-bot en Yandex.Cloud

Ĉar la ĉi tie priskribita roboto jam estas kreita, por pruvceloj mi kreos alian roboton por mallonga tempo (tiam mi forigos ĝin). Mi vokos lin DemoHabrBot. Nomoj (uzantonomo) ĉiuj telegrambotoj devas finiĝi per vorto botekzemple: MyCoolBotmia_malvarma_bot Ĉi tio estas por robotoj. Sed unue, donu al la roboto nomon (nomo) estas por homoj. La nomo povas esti en ajna lingvo, enhavi spacojn, ne devas fini per vorto bot, kaj eĉ ne devas esti unika. En ĉi tiu ekzemplo, mi nomis ĉi tiun bot Demo Habr.

Konstruante Telegram-bot en Yandex.Cloud

Nun elektu nomon por la bot (uzantonomo, tiu por robotoj). Ni nomu ĝin DemoHabrBot. Ĉio rilatas al la nomo de la bot (nomo) tute ne rilatas al lia nomo - uzantonomo (aŭ validas, sed ĝuste male). Post sukcese krei unikan bot-nomon, ni devas kopii kaj konservi (en la plej strikta konfido!) La ĵetonon montritan en la ekrankopio kun ruĝa sago. Kun ĝia helpo, ni poste instalos la eksiĝintan Telegramo' rethoko al nia Yandex-funkcio.

Konstruante Telegram-bot en Yandex.Cloud

Kaj nun ni donos la ordonon al la patro de ĉiuj robotoj: /miaj robotojkaj ĝi montros al ni liston de ĉiuj robotoj, kiujn ni kreis. Ni lasu la freŝbakitan botn sola por nun Demo Habr (ĝi estis kreita por montri kiel krei robotojn, sed ni uzos ĝin hodiaŭ por aliaj pruvceloj), kaj konsideru la roboton Saĝaj Pensoj (@SmartThoughtsBot). Alklaku la butonon kun ĝia nomo en la listo de robotoj.

Konstruante Telegram-bot en Yandex.Cloud

Ĉi tie ni povas agordi nian roboton. Premante butonon Redakti ... ni pluiros al redaktado de unu aŭ alia opcio. Ekzemple, alklakante la butonon Redaktu Nomon ni povas ŝanĝi la nomon de la bot, diru anstataŭ Saĝaj Pensoj, skribu frenezaj ideoj. Botpic - ĉi tio estas la avataro de la bot, devas esti almenaŭ 150 x 150 px. Priskribo estas mallonga priskribo, kiun la uzanto vidas kiam la bot estas lanĉita por la unua fojo, kiel respondo al la demando: Kion povas fari ĉi tiu bot? Pri - eĉ pli mallonga priskribo, kiu estas transdonita kun ligilo al la bot (https://t.me/SmartThoughtsBot) aŭ kiam vi vidas informojn pri ĝi.

Konstruante Telegram-bot en Yandex.Cloud

Ni nur bezonas agordi la komandojn. Por fari tion, premu la butonon Redakti Komandojn. Normigi uzantpraktikojn Telegramo rekomendas ĉiam uzi du komandojn: / komenci и / helpi, kaj se la roboto bezonas agordojn - aldona /settings komando. Nia roboto estas tiel simpla kiel pilko, do ĝi ankoraŭ ne bezonas agordojn. Ni skribas la unuajn du komandojn, kiujn ni poste prilaboros en la kodo. Nun, se la uzanto enigas oblikvon (oblikvo: /) en la enigkampon, listo de komandoj aperos por ilia rapida elekto. Ĉio estas kiel en la bildo: maldekstre - ni starigas komandojn per la bot-patro; dekstre, ĉi tiuj komandoj jam disponeblas por uzantoj en nia bot.

Konstruante Telegram-bot en Yandex.Cloud

Yandex-funkcio

Nun kiam nia bot estis kreita, ni iru al Yandex.Cloudkrei funkcion, kiu ekzekutos nian robotkodon. Se vi ne laboris kun Yandex.Cloud legi la materialon Alico en la lando de Bitrix, kaj tiam - Yandex-funkcioj sendas poŝton. Mi estas preskaŭ certa, ke ĉi tiuj du relative malgrandaj artikoloj sufiĉos por ke vi havu bazan komprenon de la temo.

Do en la konzolo Yandex.Nuboj en la maldekstra naviga menuo, elektu la eron Nubaj Funkcioj, kaj poste premu la butonon Krei funkcion. Ni donas al ĝi nomon, kaj por ni mem - mallongan priskribon.

Konstruante Telegram-bot en Yandex.Cloud

Post premi la butonon krei kaj post kelkaj sekundoj, la nova funkcio aperos en la listo de ĉiuj funkcioj. Alklaku ŝian nomon - ĉi tio kondukos nin al la paĝo trarigardo nia funkcio. Ĉi tie vi devas ebligiOn) ŝalti publika funkciodisponigi ĝin de la ekstera (por Yandex.Nuboj) de la mondo, kaj la valoro de la kampoj Ligo por voki и Identigilo - konservu ĝin en profunda sekreto de ĉiuj krom vi kaj Telegramo, por ke diversaj friponoj ne povas voki vian funkcion.

Konstruante Telegram-bot en Yandex.Cloud

Nun uzante la maldekstran menuon iru al La redaktisto funkcioj. Ni flankenlasu por momento nian Saĝaj Pensoj, kaj kreu minimuman ŝablonan funkcion por kontroli la agadon de nia roboto ... Tamen, en ĉi tiu kunteksto, ĉi tiu funkcio estas nia roboto ... Mallonge, nun kaj ĝuste ĉi tie ni faros la plej simplan roboton kiu "spegulos" ( t.e. resendi ) uzantpetojn. Ĉi tiu ŝablono ĉiam povas esti uzata dum kreado de novaj telegramaj robotoj por certigi tiun komunikadon kun Telegram'om funkcias bone. Klaku Krei dosieron, nomu ĝin indekso.js, kaj rete Kodredaktilo algluu la sekvan kodon en ĉi tiun dosieron:

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

En la konzolo Yandex.Cloud, ĝi devus aspekti kiel ĉi tio:

Konstruante Telegram-bot en Yandex.Cloud

Malsupre, ni indikas enirpunkto - indekso.botkie indekso ĉi tiu estas la dosiernomo (indekso.js), kaj bot - nomo de funkcio (modulo.eksportoj.bot). Lasu ĉiujn aliajn kampojn "kiel estas", kaj en la supra dekstra angulo alklaku la butonon Krei Version. Post kelkaj sekundoj, ĉi tiu versio de la funkcio estos kreita. Baldaŭ post la provo rethoko, ni kreos novan version − Saĝaj Pensoj.

Konstruante Telegram-bot en Yandex.Cloud

Objekta Stokado

Nun kiam ni starigis Yandex-funkcioni iru dum ni estas en la konzolo Yandex.Nuboj, krei tn. sitelo (rubujo, t.e. sitelo en la rusa, neniel bukedo) por konservi bilddosierojn, kiuj estos uzataj en nia bot Saĝaj Pensoj. Elektu el la maldekstra naviga menuo Stokado de Objektoj, premu la butonon Krei sitelon, donu al ĝi nomon, ekzemple, img-sitelo, kaj, plej grave, Leg aliro al objektoj publikigu ĝin - alie Telegramo ne vidos niajn bildojn. Ĉiuj aliaj kampoj estas lasitaj senŝanĝaj. Ni premas la butonon Krei sitelon.

Konstruante Telegram-bot en Yandex.Cloud

Post tio, listo de ĉiuj siteloj povus aspekti kiel ĉi tio (se ĉi tiu estas via sola sitelo):

Konstruante Telegram-bot en Yandex.Cloud

Nun mi proponas alklaki la nomon de la sitelo, kaj en ĝi krei dosierujon por organizi la stokadon de bildoj por malsamaj aplikoj. Ekzemple, por telegrambot Saĝaj Pensoj mi kreis dosierujon nomitan tg-bot-inteligentaj-pensoj (Nenion, mi komprenos ĉi tiun ĉi ĉifron). Kreu ankaŭ unu.

Konstruante Telegram-bot en Yandex.Cloud

Nun vi povas alklaki la dosierujon, eniri ĝin kaj alŝuti dosierojn:

Konstruante Telegram-bot en Yandex.Cloud

Kaj alklakante la dosiernomon - akiru ĝin URL por uzo en nia bot, kaj ĝenerale - ie ajn (sed, ne publikigu ĉi tion URL nenecese, ekde trafiko de objekto stokado ŝargita).

Konstruante Telegram-bot en Yandex.Cloud

Ĉi tie, fakte, tio estas ĉio objekto stokado. Nun vi scios kion fari kiam vi vidos la inviton por alŝuti dosierojn tie.

Rethoko

Nun ni instalos rethoko — t.e. kiam la bot ricevas ĝisdatigon (ekzemple mesaĝon de la uzanto), de la servilo Telegramo en nian Yandex-funkcio peto estos senditapeto) kun datumoj. Jen ĉeno, kiun vi povas simple alglui en la adreskampon de la retumilo, kaj poste refreŝigi la paĝon (ĉi tio devas esti farita nur unufoje): https://api.telegram.org/bot{bot_token}/setWebHook?url={webhook_url}
Nur anstataŭigu {bot_token} al la ĵetono, kiun ni ricevis de la patro bot dum kreado de nia bot, kaj {webhook_url} - on URL nia Yandex-funkcioj. Atendu minuton! Sed RossKomCenzuro malpermesas al provizantoj en la Rusa Federacio servi la adreson https://api.telegram.org. Jes tio pravas. Sed vi povas pensi pri io. Ja vi povas ekzemple demandi vian avinon pri tio en Ukrainio, Israelo aŭ Kanado - tie ne ekzistas "rusaj cenzuroj", kaj nur Dio scias, kiel homoj vivas sen ĝi. Kiel rezulto, la peto-respondo dum instalado de la rethoko devus aspekti jene:

Konstruante Telegram-bot en Yandex.Cloud

Testado. Devus esti spegulita.

Konstruante Telegram-bot en Yandex.Cloud

Ĉi tio estas vera. Nian gratulojn – nun Yandex-funkcio fariĝis Telegramo-bot!

Saĝaj Pensoj

Kaj nun ni faras Smart Thoughts. La kodo estas malfermita kaj kuŝas GitHub. Ĝi estas sufiĉe bone komentita, kaj ĝi longas nur cent liniojn. Legu ĝin kiel opera diva libreto!

Konstruante Telegram-bot en Yandex.Cloud

Klonu la projekton kaj instalu la dependecojn:

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

Faru la ŝanĝojn, kiujn vi bezonas al la dosiero indekso.js (laŭvola; vi nenion povas ŝanĝi). Krei zip-arkivo, kun dosiero indekso.js kaj dosierujo nodo_moduloj interne, ekzemple, vokis smart.zip.

Konstruante Telegram-bot en Yandex.Cloud

Nun iru en la konzolo al nia Yandex-funkcioj, elektu la langeton ZIP-arkivo, premu la butonon Elektu dosieronkaj elŝutu nian arkivon smart.zip. Fine, en la supra dekstra angulo, alklaku la butonon Krei Version.

Konstruante Telegram-bot en Yandex.Cloud

Post kelkaj sekundoj, kiam la funkcio estos ĝisdatigita, ni testos nian roboton denove. Nun li ne plu "spegulas", sed liveras inteligentajn pensojn!

Konstruante Telegram-bot en Yandex.Cloud

Tio estas ĉio por hodiaŭ. Aliaj artikoloj sekvas. Se vi interesiĝas legi ĉi tion, abonu sciigojn pri novaj artikoloj. Vi povas aboni ĉi tie aŭ Telegramo-kanalo IT Tutorial ZakharTwitter @mikezaharov.

referencoj

Kodo en GitHub
Yandex Nubaj Funkcioj
Yandex Objekto Stokado
Botoj: Enkonduko por programistoj
Telegram Bot API

Donacoj

Konstruante Telegram-bot en Yandex.Cloud

fonto: www.habr.com

Aldoni komenton