I dag, fra improviserte materialer, vil vi samle inn https://api.telegram.org/
. Vel, vi vil ikke - nei, nei. Faktisk, i vesken vår er det såkalte. webhooks - med deres hjelp gjør vi ikke forespørsler til en bestemt adresse, men sender bare vår forespørsel som et svar på enhver forespørsel til oss. Det vil si, som i Odessa - vi svarer på et spørsmål med et spørsmål. Derfor Telegram API vil ikke vises i koden vår.
AnsvarsfraskrivelseNavnene på eventuelle statlige organisasjoner nevnt i denne artikkelen er fiktive, og mulige sammentreff med navnene på virkelige organisasjoner er tilfeldige.
Så vi vil lage en bot som vil forsyne oss med smarte tanker. Akkurat som på bildet:
Du kan prøve det i aksjon - her er navnet: @SmartThoughtsBot. Legg merke til knappen "Alices dyktighet"? Dette er fordi boten er en slags "ledsager" for eponyme Alices dyktighet, dvs. den utfører de samme funksjonene som Alices dyktighet og, kanskje, at de kan sameksistere fredelig ved å reklamere for hverandre. Om hvordan du lager Smart tankeferdighet beskrevet i artikkelen
Opprettelse av bot
Jeg vil at denne opplæringen skal være nyttig for alle, inkl. og nybegynnere "botbyggere". Derfor vil jeg i denne delen beskrive i noen detalj hvordan du lager generelt i Telegram'e bots. For de som ikke trenger denne informasjonen, fortsett til neste avsnitt.
Åpne applikasjonen Telegaram, vi kaller faren til alle roboter (de har alt som mennesker) - @BotFather - og til å begynne med vil vi gi ham kommandoen / hjelpe for å friske opp minnet vårt om hva vi kan gjøre. Nå er vi interessert i laget / newbot.
Siden boten som er beskrevet her allerede er opprettet, vil jeg for demonstrasjonsformål lage en annen bot for en kort stund (så vil jeg slette den). Jeg ringer ham DemoHabrBot. Navn (brukernavn) alle telegramroboter må slutte med et ord bot, for eksempel: MyCoolBot eller min_kule_bot Dette er for roboter. Men først, gi boten et navn (navn) er for mennesker. Navnet kan være på et hvilket som helst språk, inneholde mellomrom, trenger ikke å slutte med et ord bot, og trenger ikke engang å være unik. I dette eksemplet kalte jeg denne boten Demo Habr.
Velg nå et navn for boten (brukernavn, den for roboter). La oss kalle det DemoHabrBot. Alt relatert til navnet på boten (navn) er ikke relatert til navnet hans i det hele tatt - brukernavn (eller gjelder, men akkurat det motsatte). Etter å ha opprettet et unikt botnavn, må vi kopiere og lagre (i strengeste konfidensi!) tokenet som vises på skjermbildet med en rød pil. Med dens hjelp vil vi senere installere den utgående Telegram'en webhook til vår Yandex funksjon.
Og nå vil vi gi kommandoen til faren til alle roboter: /mybotsog den vil vise oss en liste over alle robotene vi har laget. La oss la den nybakte boten være i fred for nå Demo Habr (den ble laget for å vise hvordan man lager roboter, men vi vil bruke den i dag til andre demonstrasjonsformål), og vurdere boten Smarte tanker (@SmartThoughtsBot). Klikk på knappen med navnet i listen over roboter.
Det er her vi kan sette opp boten vår. Å trykke på en knapp Redigere… vi vil gå videre til å redigere ett eller annet alternativ. For eksempel ved å klikke på knappen Rediger navn vi kan endre navnet på boten, si i stedet for Smarte tanker, skrive gale ideer. Botpic - dette er botens avatar, må være minst 150 x 150 px. Beskrivelse er en kort beskrivelse som brukeren ser når boten startes for første gang, som svar på spørsmålet: Hva kan denne boten gjøre? Om oss - en enda kortere beskrivelse, som overføres med en lenke til boten (https://t.me/SmartThoughtsBot
) eller når du viser informasjon om det.
Vi trenger bare å sette opp kommandoene. For å gjøre dette, trykk på knappen Rediger kommandoer. For å standardisere brukerpraksis Telegram anbefaler alltid å bruke to kommandoer: /start и /hjelp, og hvis boten trenger innstillinger - en ekstra /settings-kommando. Boten vår er så enkel som en ball, så den trenger ingen innstillinger ennå. Vi skriver de to første kommandoene, som vi deretter skal behandle i koden. Nå, hvis brukeren skriver inn en skråstrek (skråstrek: /) i inndatafeltet, vil en liste med kommandoer vises for hurtigvalg. Alt er som på bildet: til venstre - vi setter kommandoer gjennom bot-faren; til høyre er disse kommandoene allerede tilgjengelige for brukere i boten vår.
Yandex funksjon
Nå som boten vår er opprettet, la oss gå til Yandex.Cloudfor å lage en funksjon som vil kjøre botkoden vår. Hvis du ikke har jobbet med Yandex.Cloud lese stoffet
Så i konsollen Yandex.Clouds i venstre navigasjonsmeny, velg elementet Cloud-funksjoner, og trykk deretter på knappen Lag en funksjon. Vi gir det et navn, og for oss selv - en kort beskrivelse.
Etter å ha trykket på knappen skape og etter et par sekunder vil den nye funksjonen vises i listen over alle funksjoner. Klikk på navnet hennes - dette tar oss til siden Gjennomgå funksjonen vår. Her må du aktivereOn) bytte om offentlig funksjonfor å gjøre den tilgjengelig fra den eksterne (for Yandex.Clouds) av verden, og verdien av feltene Link til samtale и Identifikator - hold det dypt hemmelig for alle unntatt deg selv og Telegram, slik at ulike svindlere ikke kan ringe til funksjonen din.
Gå nå til venstre ved hjelp av menyen Redaktøren funksjoner. La oss legge til side et øyeblikk Smarte tanker, og lag en minimal malfunksjon for å sjekke ytelsen til boten vår ... Men i denne sammenhengen er denne funksjonen vår bot ... Kort sagt, nå og akkurat her vil vi lage den enkleste boten som vil "speile" ( dvs. send tilbake) brukerforespørsler. Denne malen kan alltid brukes når du oppretter nye telegramroboter for å sikre at kommunikasjon med Telegram'om fungerer fint. Klikk Opprett fil, kall det index.js, og på nett Kode editor lim inn følgende kode i denne filen:
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 skal det se omtrent slik ut:
Nedenfor angir vi inngangspunkt - index.botDer indeks dette er filnavnet (index.js), a bot - funksjonsnavn (module.exports.bot). La alle andre felt stå "som de er", og klikk på knappen i øvre høyre hjørne Opprett versjon. Etter noen sekunder vil denne versjonen av funksjonen bli opprettet. Kort tid etter testing webhook, vil vi lage en ny versjon − Smarte tanker.
Objektlagring
Nå som vi har satt opp Yandex funksjonla oss gå mens vi er i konsollen Yandex.Clouds, opprette en såkalt. bøtte (bøtte, dvs. bøtte på russisk, på ingen måte en bukett) for lagring av bildefiler som skal brukes i boten vår Smarte tanker. Velg fra venstre navigasjonsmeny Objektlagring, trykk på knappen Lag bøtte, gi den et navn, for eksempel, img-bøtte, og viktigst, Lesetilgang til objekter gjør det offentlig - ellers vil ikke Telegram se bildene våre. Alle andre felt forblir uendret. Vi trykker på knappen Lag bøtte.
Etter det kan en liste over alle bøttene se omtrent slik ut (hvis dette er din eneste bøtte):
Nå foreslår jeg å klikke på navnet på bøtta, og lage en mappe inni den for å organisere lagring av bilder for forskjellige applikasjoner. For eksempel for en telegram-bot Smarte tanker jeg opprettet en mappe som heter tg-bot-smarte-tanker (Ingenting, jeg vil forstå dette chiffer). Lag en også.
Nå kan du klikke på mappenavnet, gå inn i det og laste opp filer:
Og klikk på filnavnet - få det URL for bruk i vår bot, og generelt - hvor som helst (men ikke publiser dette URL unødvendig, siden trafikk fra gjenstandslagring ladet).
Her er det faktisk alt gjenstandslagring. Nå vil du vite hva du skal gjøre når du ser spørsmålet om å laste opp filer der.
Webhook
Nå skal vi installere webhook - dvs. når boten mottar en oppdatering (for eksempel en melding fra brukeren), fra serveren Telegram inn i vår Yandex funksjon forespørsel vil bli sendtanmode) med data. Her er en streng som du ganske enkelt kan lime inn i adressefeltet til nettleseren, og deretter oppdatere siden (dette må bare gjøres én gang): https://api.telegram.org/bot{bot_token}/setWebHook?url={webhook_url}
Bare bytt ut {bot_token} til tokenet vi mottok fra far-boten når vi opprettet boten vår, og {webhook_url} - på URL vår Yandex-funksjoner. Vent litt! Men RossKomSensur forbyr leverandører i den russiske føderasjonen å betjene adressen https://api.telegram.org
. Ja, det er riktig. Men du kan tenke på noe. Tross alt kan du for eksempel spørre bestemoren din om det i Ukraina, Israel eller Canada - det er ingen "russisk sensur" der, og bare Gud vet hvordan folk lever uten det. Som et resultat bør forespørsel-svaret når du installerer webhook se slik ut:
Testing. Bør speiles.
Dette er sant. Våre gratulasjoner - nå Yandex funksjon er blitt Telegram-bot!
Smarte tanker
Og nå gjør vi Smarte tanker. Koden er åpen og og ligger på
Klon prosjektet og installer avhengighetene:
git clone https://github.com/stmike/tg-bot-smart-thoughts.git
cd tg-bot-smart-thoughts
npm i
Gjør endringene du trenger i filen index.js (valgfritt; du kan ikke endre noe). Skape zip-arkiv, med en fil index.js og mappe node_modules inne, for eksempel, kalt smart.zip.
Gå nå i konsollen til vår Yandex-funksjoner, velg fanen ZIP-arkiv, trykk på knappen Velg filog last ned arkivet vårt smart.zip. Til slutt, i øvre høyre hjørne, klikk på knappen Opprett versjon.
Om noen sekunder, når funksjonen er oppdatert, vil vi teste boten vår på nytt. Nå «speiler han» ikke lenger, men leverer smarte tanker!
Det var alt for i dag. Andre artikler følger. Hvis du er interessert i å lese dette, abonner på varsler om nye artikler. Du kan abonnere her eller Telegram-kanal
referanser
Donasjoner
Kilde: www.habr.com