Bouwe in Telegram bot yn Yandex.Cloud

Bouwe in Telegram bot yn Yandex.Cloud

Hjoed, fan ymprovisearre materialen, sille wy sammelje yn Yandex.Cloud Telegram bot mei help fan Yandex Cloud Funksjes (of Yandex funksjes foar koarteheid) en Yandex Object Storage (of Objekt Storage - foar dúdlikens). De koade sil oan wêze Node.js. D'r is lykwols ien pikante omstannichheid - in bepaalde organisaasje neamd, lit ús sizze, RossKomSensuer (sensuer is ferbean troch kêst 29 fan 'e grûnwet fan' e Russyske Federaasje), lit ynternetproviders yn Ruslân net fersiken oerdrage oan Telegram API nei it adres: https://api.telegram.org/. No, wy sille net - nee, nee. Yndie, yn ús tas binne der saneamde. webhooks - mei har help meitsje wy gjin fersiken nei in spesifyk adres, mar stjoere ús fersyk allinich as antwurd op elk fersyk oan ús. Dat is, lykas yn Odessa - wy beäntwurdzje in fraach mei in fraach. Dêrom Telegram API sil net ferskine yn ús koade.

DisclaimerDe nammen fan alle steatsorganisaasjes neamd yn dit artikel binne fiktyf, en mooglike oerienkomsten mei de nammen fan echte organisaasjes binne tafallich.

Dat, wy sille in bot meitsje dy't ús tûke gedachten sil leverje. Krekt lykas op 'e foto:

Bouwe in Telegram bot yn Yandex.Cloud

Jo kinne it yn aksje besykje - hjir is de namme: @SmartThoughtsBot. Notysje de knop "Alice's feardigens"? Dit komt om't de bot in soarte fan "begelieder" is foar it lykneamde Alice syn feardigens, d.w.s. it fiert deselde funksjes as Alice syn feardigens en, miskien, dat se kinne bestean freedsum advertearje elkoar. Oer hoe te meitsjen Smart Thought feardigens beskreaun yn it artikel Alice krijt de feardigens. No (nei it meitsjen fan wat feroarings nei de publikaasje fan it boppesteande artikel) op in smartphone dit feardigens sil der sa útsjen:

Bouwe in Telegram bot yn Yandex.Cloud

Bot skepping

Ik wol graach dat dizze tutorial nuttich is foar elkenien, ynklusyf. en begjinner "botbouwers". Dêrom, yn dizze paragraaf Ik sil beskriuwe yn wat detail hoe te meitsjen yn it algemien yn Telegram'e bots. Foar dyjingen dy't dizze ynformaasje net nedich binne, gean troch nei de folgjende seksjes.

Iepenje de applikaasje Telegaram, wy neame de heit fan alle bots (se hawwe alles as minsken) - @BotFader - en om te begjinnen sille wy him it kommando / help jaan om ús ûnthâld te ferfrissen fan wat wy dwaan kinne. No binne wy ​​ynteressearre yn it team / newbot.

Bouwe in Telegram bot yn Yandex.Cloud

Om't de hjir beskreaune bot al oanmakke is, sil ik foar demonstraasjedoelen in koarte tiid in oare bot meitsje (dan wiskje ik it). Ik sil him skilje DemoHabrBot. Nammen (brûkersnamme) alle telegrambots moatte einigje mei in wurd botbygelyks: MyCoolBot of myn_cool_bot Dit is foar bots. Mar earst, jou de bot in namme (namme) is foar minsken. De namme kin yn elke taal wêze, spaasjes befetsje, hoecht net te einigjen mei in wurd bot, en hoecht net iens unyk te wêzen. Yn dit foarbyld neamde ik dizze bot Demo Habr.

Bouwe in Telegram bot yn Yandex.Cloud

Kies no in namme foar de bot (brûkersnamme, de iene foar bots). Litte wy it neame DemoHabrBot. Alles relatearre oan de namme fan 'e bot (namme) is hielendal net besibbe oan syn namme - brûkersnamme (of jildt, mar krekt oarsom). Nei it suksesfolle oanmeitsjen fan in unike botnamme, moatte wy kopiearje en bewarje (yn it strangste fertrouwen!) De token werjûn yn 'e skermôfbylding mei in reade pylk. Mei har help sille wy letter de útgeande ynstallearje Telegram'in webhook oan ús Yandex funksje.

Bouwe in Telegram bot yn Yandex.Cloud

En no sille wy it kommando jaan oan de heit fan alle bots: /mybotsen it sil ús in list sjen litte fan alle bots dy't wy hawwe makke. Lit de farske bot foar no mar mei rêst litte Demo Habr (it is makke om sjen te litten hoe't jo bots meitsje kinne, mar wy sille it hjoed brûke foar oare demonstraasjedoelen), en beskôgje de bot Slimme tinzen (@SmartThoughtsBot). Klikje op de knop mei syn namme yn 'e list mei bots.

Bouwe in Telegram bot yn Yandex.Cloud

Dit is wêr't wy ús bot kinne ynstelle. Op in knop drukke Bewurkje ... wy sille trochgean mei it bewurkjen fan ien of oare opsje. Bygelyks troch op de knop te klikken Namme bewurkje wy kinne feroarje de namme fan de bot, sis ynstee fan Slimme tinzen, skriuwe gekke ideeën. Botpic - dit is de avatar fan 'e bot, moat op syn minst wêze 150 x 150 px. Beskriuwing is in koarte beskriuwing dy't de brûker sjocht as de bot foar it earst wurdt lansearre, as antwurd op de fraach: Wat kin dizze bot dwaan? Oer - in noch koartere beskriuwing, dy't wurdt oerbrocht mei in keppeling nei de bot (https://t.me/SmartThoughtsBot) of by it besjen fan ynformaasje deroer.

Bouwe in Telegram bot yn Yandex.Cloud

Wy moatte gewoan de kommando's ynstelle. Om dit te dwaan, druk op de knop Kommando's bewurkje. Om brûkerspraktiken te standardisearjen Telegram advisearret altyd twa kommando's te brûken: /start и / help, en as de bot ynstellings nedich is - in ekstra /ynstellings kommando. Us bot is sa ienfâldich as in bal, dus it hat noch gjin ynstellings nedich. Wy skriuwe de earste twa kommando's, dy't wy dan sille ferwurkje yn 'e koade. No, as de brûker in slash (slash-karakter: /) yn it ynfierfjild ynfiert, sil in list mei kommando's ferskine foar har flugge seleksje. Alles is lykas op 'e foto: links - wy sette kommando's fia de bot-heit; oan de rjochterkant, dizze kommando's binne al beskikber foar brûkers yn ús bot.

Bouwe in Telegram bot yn Yandex.Cloud

Yandex funksje

No't ús bot oanmakke is, litte wy nei Yandex.Cloudom in funksje te meitsjen dy't ús botkoade sil útfiere. As jo ​​hawwe net wurke mei Yandex.Cloud lês it materiaal Alice yn it lân fan Bitrix, en doe - Yandex-funksjes stjoere e-post. Ik bin der hast wis fan dat dizze twa relatyf lytse artikels genôch sille wêze foar jo om in basisbegryp fan it ûnderwerp te hawwen.

Dus yn 'e konsole Yandex.Wolken yn it linker navigaasjemenu, selektearje it item Wolkfunksjes, en druk dan op de knop Meitsje in funksje. Wy jouwe it in namme, en foar ússels - in koarte beskriuwing.

Bouwe in Telegram bot yn Yandex.Cloud

Nei it drukken op de knop oanmeitsje en nei in pear sekonden sil de nije funksje ferskine yn 'e list fan alle funksjes. Klik op har namme - dit bringt ús nei de side oersjoch ús funksje. Hjir moatte jo ynskeakeljeOn) wikselje iepenbiere funksjeom it beskikber te meitsjen fan 'e eksterne (foar Yandex.Wolken) fan 'e wrâld, en de wearde fan 'e fjilden Link nei oprop и ID - hâld it djip geheim foar elkenien útsein josels en Telegram, sadat ferskate oplichters jo funksje net kinne neame.

Bouwe in Telegram bot yn Yandex.Cloud

Gean no mei it linkermenu nei De redakteur funksjes. Lit ús ús efkes oan 'e kant sette Slimme tinzen, en meitsje in minimale sjabloanfunksje om de prestaasjes fan ús bot te kontrolearjen ... Yn dit ferbân is dizze funksje lykwols ús bot ... Koartsein, no en krekt hjir sille wy de ienfâldichste bot meitsje dy't sil "spegelje" ( i.e. weromstjoere) brûkersoanfragen. Dit sjabloan kin altyd brûkt wurde by it meitsjen fan nije telegram bots om derfoar te soargjen dat kommunikaasje mei Telegram'om wurket prima. Klikje Meitsje triem, neam it index.js, en online Koade bewurker plak de folgjende koade yn dit bestân:

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

Yn 'e Yandex.Cloud-konsole moat it der sa útsjen:

Bouwe in Telegram bot yn Yandex.Cloud

Hjirûnder jouwe wy oan yngongspunt - index.botwêr yndeks dit is de triemnamme (index.js), en bot - funksje namme (module.exports.bot). Lit alle oare fjilden "as is", en klikje yn 'e rjochter boppeste hoeke op de knop Ferzje oanmeitsje. Nei in pear sekonden sil dizze ferzje fan 'e funksje oanmakke wurde. Koart nei testen webhook, meitsje wy in nije ferzje - Slimme tinzen.

Bouwe in Telegram bot yn Yandex.Cloud

Objekt Storage

No't wy ynsteld hawwe Yandex funksjelit ús gean wylst wy binne yn 'e konsole Yandex.Wolken, meitsje in saneamde. bakje (amer, d.w.s. emmer yn it Russysk, op gjin inkelde manier in boeket) foar it bewarjen fan ôfbyldingsbestannen dy't sille wurde brûkt yn ús bot Slimme tinzen. Selektearje út it linker navigaasjemenu Objekt opslach, druk op de knop Emmer meitsje, jou it in namme, bygelyks, img-bak, en, it wichtichste, Lês tagong ta objekten meitsje it iepenbier - oars sil Telegram ús foto's net sjen. Alle oare fjilden wurde net feroare. Wy drukke op de knop Emmer meitsje.

Bouwe in Telegram bot yn Yandex.Cloud

Dêrnei kin in list mei alle bakken der sa útsjen (as dit jo ienige emmer is):

Bouwe in Telegram bot yn Yandex.Cloud

No stel ik foar om op de namme fan 'e emmer te klikken, en dêryn in map te meitsjen om de opslach fan foto's foar ferskate applikaasjes te organisearjen. Bygelyks foar in telegram bot Slimme tinzen ik makke in map neamd tg-bot-smart-tinzen (Neat, ik sil dit sifer begripe). Meitsje ek ien.

Bouwe in Telegram bot yn Yandex.Cloud

No kinne jo op de mapnamme klikke, deryn gean en bestannen uploade:

Bouwe in Telegram bot yn Yandex.Cloud

En klikje op de triemnamme - krije it URL foar gebrûk yn ús bot, en yn it algemien - oeral (mar publisearje dit net URL ûnnedich, sûnt ferkear út foarwerp opslach opladen).

Bouwe in Telegram bot yn Yandex.Cloud

Hjir, yn feite, dat is alles foarwerp opslach. No sille jo witte wat te dwaan as jo de prompt sjogge om bestannen dêr te uploaden.

Webhook

No sille wy ynstallearje webhook - d.w.s. as de bot in update krijt (bygelyks in berjocht fan de brûker), fan de tsjinner Telegram yn ús Yandex funksje fersyk wurdt ferstjoerdfersyk) mei gegevens. Hjir is in tekenrige dy't jo gewoan yn it adresfjild fan 'e browser kinne plakke, en dan de side ferfarskje (dit hoecht mar ien kear te dien): https://api.telegram.org/bot{bot_token}/setWebHook?url={webhook_url}
Gewoan ferfange {bot_token} oan it token wy krigen fan de heit bot by it meitsjen fan ús bot, en {webhook_url} - oan URL ús Yandex funksjes. Wachtsje efkes! Mar RossKomSensuer ferbiedt providers yn 'e Russyske Federaasje om it adres te tsjinjen https://api.telegram.org. Ja dat kloppet. Mar jo kinne wat betinke. Jo kinne ommers jo beppe deroer freegje yn Oekraïne, Israel of Kanada - d'r binne gjin "Russyske sensueren", en allinich God wit hoe't minsken sûnder dat libje. As gefolch soe it fersyk-antwurd by it ynstallearjen fan de webhook der sa útsjen moatte:

Bouwe in Telegram bot yn Yandex.Cloud

Testen. Moat wurde spegele.

Bouwe in Telegram bot yn Yandex.Cloud

Dit is wier. Us lokwinsken - no Yandex funksje is wurden Telegram-bot!

Slimme tinzen

En no dogge wy Smart Thoughts. De koade is iepen en en leit op GitHub. It is moai goed kommentearre, en it is mar hûndert rigels lang. Lês it as in opera diva libretto!

Bouwe in Telegram bot yn Yandex.Cloud

Kloon it projekt en ynstallearje de ôfhinklikens:

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

Meitsje de wizigingen dy't jo nedich binne yn it bestân index.js (opsjoneel; do kinst neat feroarje). Meitsje zip-argyf, mei in triem index.js en folder node_modules binnen, bygelyks, neamd smart.zip.

Bouwe in Telegram bot yn Yandex.Cloud

Gean no yn 'e konsole nei ús Yandex funksjes, selektearje de ljepper ZIP argyf, druk op de knop Selektearje in triemen download ús argyf smart.zip. As lêste, yn 'e rjochter boppeste hoeke, klikje op de knop Ferzje oanmeitsje.

Bouwe in Telegram bot yn Yandex.Cloud

Yn in pear sekonden, as de funksje is bywurke, sille wy ús bot opnij testen. No "spegelet er" net mear, mar leveret er tûke gedachten!

Bouwe in Telegram bot yn Yandex.Cloud

Dat is alles foar hjoed. Oare artikels folgje. As jo ​​​​ynteressearre binne om dit te lêzen, abonnearje dan op notifikaasjes fan nije artikels. Jo kinne ynskriuwe hjir of Telegram-kanaal IT Tutorial Zakharof Twitter @mikezaharov.

referinsjes

Koade op GitHub
Yandex Cloud Funksjes
Yandex Object Storage
Bots: In ynlieding foar ûntwikkelders
Telegram Bot API

Donaasjes

Bouwe in Telegram bot yn Yandex.Cloud

Boarne: www.habr.com

Add a comment