Opbygning af en Telegram-bot i Yandex.Cloud

Opbygning af en Telegram-bot i Yandex.Cloud

I dag samler vi ind fra improviserede materialer Yandex.Cloud Telegram bot med Yandex Cloud-funktioner (eller Yandex funktioner for kortheds skyld) og Yandex objektopbevaring (eller Opbevaring af objekter - for klarhedens skyld). Koden vil være tændt node.js. Der er dog én pikant omstændighed - en bestemt organisation kaldet, lad os sige, RossKomCensur (censur er forbudt i henhold til artikel 29 i Den Russiske Føderations forfatning), tillader ikke internetudbydere i Rusland at overføre anmodninger til Telegram API ved adressen: https://api.telegram.org/. Nå, det vil vi ikke - nej, nej. Faktisk er der i vores taske såkaldte. webhooks - med deres hjælp fremsætter vi ikke anmodninger til en bestemt adresse, men sender kun vores anmodning som svar på enhver henvendelse til os. Det vil sige, som i Odessa - vi besvarer et spørgsmål med et spørgsmål. Derfor Telegram API vises ikke i vores kode.

AnsvarsfraskrivelseNavnene på statslige organisationer nævnt i denne artikel er fiktive, og mulige sammenfald med navnene på virkelige organisationer er tilfældige.

Så vi vil lave en bot, der vil forsyne os med smarte tanker. Præcis som på billedet:

Opbygning af en Telegram-bot i Yandex.Cloud

Du kan prøve det i aktion - her er navnet: @SmartThoughtsBot. Læg mærke til knappen "Alices dygtighed"? Dette skyldes, at botten er en slags "ledsager" for eponymen Alices dygtighed, dvs. den udfører de samme funktioner som Alices dygtighed og måske, at de fredeligt kan sameksistere ved at reklamere for hinanden. Om hvordan man skaber Smart tankefærdighed beskrevet i artiklen Alice får dygtigheden. Nu (efter at have foretaget nogle ændringer efter offentliggørelsen af ​​ovenstående artikel) på en smartphone dette evne vil se sådan her ud:

Opbygning af en Telegram-bot i Yandex.Cloud

Bot skabelse

Jeg vil gerne have, at denne tutorial er nyttig for alle, inkl. og nybegyndere "botbyggere". Derfor vil jeg i dette afsnit beskrive mere detaljeret, hvordan man generelt skaber i Telegram'e bots. For dem, der ikke har brug for disse oplysninger, skal du fortsætte til de næste afsnit.

Åbn applikationen Telegaram, vi kalder faderen til alle bots (de har alt som mennesker) - @BotFader - og til at begynde med vil vi give ham kommandoen / hjælpe til at genopfriske vores hukommelse om, hvad vi kan gøre. Nu er vi interesserede i holdet / newbot.

Opbygning af en Telegram-bot i Yandex.Cloud

Da den her beskrevne bot allerede er oprettet, vil jeg til demonstrationsformål oprette en anden bot i kort tid (så sletter jeg den). Jeg ringer til ham DemoHabrBot. Navne (brugernavn) alle telegrambots skal slutte med et ord bot, for eksempel: MyCoolBot eller min_seje_bot Dette er til bots. Men giv først botten et navn (navn) er for mennesker. Navnet kan være på ethvert sprog, indeholde mellemrum, behøver ikke at slutte med et ord bot, og behøver ikke engang at være unik. I dette eksempel kaldte jeg denne bot Demo Habr.

Opbygning af en Telegram-bot i Yandex.Cloud

Vælg nu et navn til botten (brugernavn, den til bots). Lad os kalde det DemoHabrBot. Alt relateret til navnet på botten (navn) er slet ikke relateret til hans navn - brugernavn (eller gælder, men præcis det modsatte). Efter at have oprettet et unikt botnavn, skal vi kopiere og gemme (i strengeste fortrolighed!) Tokenet vist på skærmbilledet med en rød pil. Med dens hjælp vil vi senere installere den udgående Telegram'en webhook til vores Yandex funktion.

Opbygning af en Telegram-bot i Yandex.Cloud

Og nu vil vi give kommandoen til faderen til alle bots: /mine botsog det vil vise os en liste over alle de bots, vi har oprettet. Lad os lade den nybagte bot være i fred for nu Demo Habr (det blev oprettet for at vise, hvordan man opretter bots, men vi vil bruge det i dag til andre demonstrationsformål), og overveje botten Smarte tanker (@SmartThoughtsBot). Klik på knappen med dens navn på listen over bots.

Opbygning af en Telegram-bot i Yandex.Cloud

Det er her, vi kan konfigurere vores bot. Tryk på en knap Redigere… vi vil gå videre til at redigere en eller anden mulighed. For eksempel ved at klikke på knappen Rediger navn vi kan ændre navnet på botten, siger i stedet for Smarte tanker, skriv skøre ideer. Botpic - dette er bottens avatar, skal være mindst 150 x 150 px. Beskrivelse er en kort beskrivelse, som brugeren ser, når botten lanceres for første gang, som svar på spørgsmålet: Hvad kan denne bot gøre? Om - en endnu kortere beskrivelse, som sendes med et link til botten (https://t.me/SmartThoughtsBot) eller når du ser oplysninger om det.

Opbygning af en Telegram-bot i Yandex.Cloud

Vi skal bare konfigurere kommandoerne. For at gøre dette skal du trykke på knappen Rediger kommandoer. At standardisere brugerpraksis Telegram anbefaler altid at bruge to kommandoer: /Start и /Hjælp, og hvis botten har brug for indstillinger - en ekstra /settings-kommando. Vores bot er så simpel som en bold, så den behøver ingen indstillinger endnu. Vi skriver de to første kommandoer, som vi så behandler i koden. Nu, hvis brugeren indtaster en skråstreg (skråstreg: /) i indtastningsfeltet, vil en liste over kommandoer blive vist til deres hurtige valg. Alt er som på billedet: til venstre - vi sætter kommandoer gennem bot-faderen; til højre er disse kommandoer allerede tilgængelige for brugere i vores bot.

Opbygning af en Telegram-bot i Yandex.Cloud

Yandex funktion

Nu hvor vores bot er blevet oprettet, lad os gå til Yandex.Cloudat oprette en funktion, der vil udføre vores bot-kode. Hvis du ikke har arbejdet med Yandex.Cloud læse materialet Alice i landet Bitrix, og så - Yandex-funktioner sender mail. Jeg er næsten sikker på, at disse to relativt små artikler vil være nok til, at du har en grundlæggende forståelse af emnet.

Altså i konsollen Yandex.Clouds i venstre navigationsmenu skal du vælge elementet Cloudfunktioner, og tryk derefter på knappen Opret en funktion. Vi giver det et navn, og for os selv - en kort beskrivelse.

Opbygning af en Telegram-bot i Yandex.Cloud

Efter at have trykket på knappen skabe og efter et par sekunder vises den nye funktion på listen over alle funktioner. Klik på hendes navn - dette fører os til siden Anmeldelse vores funktion. Her skal du aktivereOn) kontakt offentlig funktionfor at gøre det tilgængeligt eksternt (f Yandex.Clouds) af verden, og værdien af ​​felterne Link til opkald и Identifikator - hold det dybt hemmeligt for alle undtagen dig selv og Telegram, så forskellige svindlere ikke kan ringe til din funktion.

Opbygning af en Telegram-bot i Yandex.Cloud

Gå nu til venstre ved hjælp af menuen Redaktøren funktioner. Lad os et øjeblik lægge vores Smarte tanker, og opret en minimal skabelonfunktion for at kontrollere ydeevnen af ​​vores bot ... Men i denne sammenhæng er denne funktion vores bot ... Kort sagt, nu og lige her vil vi lave den enkleste bot, der vil "spejle" ( dvs. send tilbage) brugeranmodninger. Denne skabelon kan altid bruges ved oprettelse af nye telegram-bots for at sikre, at kommunikation med Telegram'om fungerer fint. Klik Opret fil, kald det index.jsog online Kode editor indsæt følgende kode i denne fil:

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

I Yandex.Cloud-konsollen skulle det se sådan ud:

Opbygning af en Telegram-bot i Yandex.Cloud

Nedenfor angiver vi indgangindex.botHvor indeks dette er filnavnet (index.js), og bot - funktionsnavn (module.exports.bot). Lad alle andre felter stå "som de er", og klik på knappen i øverste højre hjørne Opret version. Efter et par sekunder vil denne version af funktionen blive oprettet. Kort efter test webhook, vil vi oprette en ny version − Smarte tanker.

Opbygning af en Telegram-bot i Yandex.Cloud

Opbevaring af objekter

Nu hvor vi har sat op Yandex funktionlad os gå, mens vi er i konsollen Yandex.Clouds, oprette en såkaldt. spand (spand, dvs. spand på russisk, på ingen måde en buket) til lagring af billedfiler, der vil blive brugt i vores bot Smarte tanker. Vælg fra venstre navigationsmenu Objektopbevaring, tryk på knappen Opret spandgiv den et navn, f.eks. img-spand, og vigtigst af alt, Læseadgang til objekter gør det offentligt - ellers vil Telegram ikke se vores billeder. Alle andre felter forbliver uændrede. Vi trykker på knappen Opret spand.

Opbygning af en Telegram-bot i Yandex.Cloud

Derefter kan en liste over alle spande se nogenlunde sådan ud (hvis dette er din eneste spand):

Opbygning af en Telegram-bot i Yandex.Cloud

Nu foreslår jeg at klikke på bøttens navn og inde i den oprette en mappe til at organisere lagringen af ​​billeder til forskellige applikationer. For eksempel for en telegram-bot Smarte tanker jeg oprettede en mappe kaldet tg-bot-smarte-tanker (Intet, jeg vil forstå denne chiffer). Lav også en.

Opbygning af en Telegram-bot i Yandex.Cloud

Nu kan du klikke på mappenavnet, gå ind i det og uploade filer:

Opbygning af en Telegram-bot i Yandex.Cloud

Og ved at klikke på filnavnet - få det URL til brug i vores bot og generelt - hvor som helst (men udgiv ikke dette URL unødigt, da trafik fra objekt opbevaring opladet).

Opbygning af en Telegram-bot i Yandex.Cloud

Her er det faktisk alt objekt opbevaring. Nu ved du, hvad du skal gøre, når du ser prompten om at uploade filer der.

Webhook

Nu vil vi installere webhook - dvs. når botten modtager en opdatering (for eksempel en besked fra brugeren) fra serveren Telegram ind i vores Yandex funktion anmodning vil blive sendtanmode) med data. Her er en streng, som du blot kan indsætte i adressefeltet i browseren og derefter opdatere siden (dette skal kun gøres én gang): https://api.telegram.org/bot{bot_token}/setWebHook?url={webhook_url}
Bare udskift {bot_token} til det token, vi modtog fra fader-bot, da vi oprettede vores bot, og {webhook_url} - på URL vores Yandex funktioner. Vent et øjeblik! Men RossKomCensur forbyder udbydere i Den Russiske Føderation at betjene adressen https://api.telegram.org. Ja det er rigtigt. Men du kan komme i tanke om noget. Du kan jo for eksempel spørge din bedstemor om det i Ukraine, Israel eller Canada - der er ingen "russisk censur" der, og kun Gud ved, hvordan folk lever uden det. Som et resultat heraf skulle anmodning-svaret ved installation af webhook se sådan ud:

Opbygning af en Telegram-bot i Yandex.Cloud

Afprøvning. Skal spejles.

Opbygning af en Telegram-bot i Yandex.Cloud

Det er rigtigt. Vores tillykke - nu Yandex funktion er blevet Telegram-bot!

Smarte tanker

Og nu gør vi Smart Thoughts. Koden er åben og og ligger på GitHub. Det er ret godt kommenteret, og det er kun hundrede linjer langt. Læs den som en operadiva-libretto!

Opbygning af en Telegram-bot i Yandex.Cloud

Klon projektet og installer afhængighederne:

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

Foretag de ændringer, du har brug for i filen index.js (valgfrit; du kan ikke ændre noget). skab zip-arkiv, med en fil index.js og mappe node_modules inde kaldes f.eks smart.zip.

Opbygning af en Telegram-bot i Yandex.Cloud

Gå nu i konsollen til vores Yandex funktioner, vælg fanen ZIP-arkiv, tryk på knappen Vælg en filog download vores arkiv smart.zip. Til sidst, i øverste højre hjørne, klik på knappen Opret version.

Opbygning af en Telegram-bot i Yandex.Cloud

Om et par sekunder, når funktionen er opdateret, tester vi vores bot igen. Nu "spejler han" ikke længere, men leverer smarte tanker!

Opbygning af en Telegram-bot i Yandex.Cloud

Det var alt for i dag. Andre artikler følger. Hvis du er interesseret i at læse dette, kan du abonnere på meddelelser om nye artikler. Du kan abonnere her eller Telegram-kanal IT tutorial ZakharEller Twitter @mikezaharov.

RЎSЃS <P "RєRё

Kode på GitHub
Yandex Cloud-funktioner
Yandex objektopbevaring
Bots: En introduktion til udviklere
Telegram Bot API

Donationer

Opbygning af en Telegram-bot i Yandex.Cloud

Kilde: www.habr.com

Tilføj en kommentar