Een Telegram-bot bouwen in Yandex.Cloud

Een Telegram-bot bouwen in Yandex.Cloud

Vandaag zullen we uit restmateriaal assembleren Yandex.Cloud Telegram-bot met Yandex Cloud-functies (Of Yandex-functies - kortweg) en Yandex-objectopslag (Of Objectopslag - voor alle duidelijkheid). De code staat aan Node.js. Er is echter één pikante omstandigheid: een bepaalde organisatie genaamd, laten we zeggen: RossKomTsenzur (censuur is verboden door artikel 29 van de grondwet van de Russische Federatie), staat Russische internetproviders niet toe verzoeken door te geven aan Telegram-API op het volgende adres: https://api.telegram.org/. Nou, dat zullen we niet doen - nee, nee. Er zitten tenslotte zogenaamde in onze tas. webhaken — met hun hulp doen we geen verzoeken aan een specifiek adres, maar sturen we ons verzoek eenvoudigweg als antwoord op elk verzoek naar ons. Dat wil zeggen dat we, net als in Odessa, een vraag beantwoorden met een vraag. Daarom Telegram-API verschijnt niet in onze code.

DisclaimerDe namen van overheidsorganisaties die in dit artikel worden genoemd, zijn fictief en mogelijke overeenkomsten met de namen van echte organisaties berusten op toeval.

We gaan dus een bot maken die ons van slimme gedachten zal voorzien. Precies zoals op de foto:

Een Telegram-bot bouwen in Yandex.Cloud

Je kunt het in actie proberen - hier is de naam: @SmartThoughtsBot. Ik heb de knop opgemerkt "Alice's vaardigheid"? Dit komt omdat de bot een soort ‘metgezel’ is voor de gelijknamige bot. De vaardigheid van Alice, d.w.z. het voert dezelfde functies uit als De vaardigheid van Alice en het is mogelijk dat ze vreedzaam naast elkaar kunnen bestaan ​​door reclame voor elkaar te maken. Over hoe je moet creëren vaardigheid Slimme gedachten beschreven in het artikel Alice krijgt vaardigheid. Nu (na wat wijzigingen aangebracht te hebben na de publicatie van bovenstaand artikel) op de smartphone dit vaardigheid zal er ongeveer zo uitzien:

Een Telegram-bot bouwen in Yandex.Cloud

Een bot maken

Ik zou graag willen dat deze tutorial nuttig is voor iedereen, incl. en beginnende botbouwers. Daarom zal ik in dit gedeelte gedetailleerd beschrijven hoe je in het algemeen kunt creëren Telegram'de bots. Voor degenen die deze informatie niet nodig hebben, ga naar de volgende secties.

Open de applicatie Telegaram, laten we de vader van alle bots noemen (ze hebben alles zoals mensen) - @BotVader - en eerst geven we hem het commando /help om zijn geheugen op te frissen over wat we kunnen doen. Nu zullen we geïnteresseerd zijn in het team / newbot.

Een Telegram-bot bouwen in Yandex.Cloud

Omdat de hier beschreven bot al is gemaakt, zal ik voor demonstratiedoeleinden voor korte tijd een andere bot maken (en deze vervolgens verwijderen). Ik zal hem bellen DemoHabrBot. Namen (gebruikersnaam) van alle telegrambots moet eindigen met het woord snuit, bijvoorbeeld: MijnCoolBot of mijn_cool_bot - dit is voor bots. Maar eerst geven we de bot een naam (naam) - en dit is voor mensen. De naam kan in elke taal zijn, spaties bevatten en hoeft niet te eindigen met een woord snuiten hoeft niet eens uniek te zijn. In dit voorbeeld heb ik deze bot genoemd Demo Habr.

Een Telegram-bot bouwen in Yandex.Cloud

Kies nu een naam voor de bot (gebruikersnaam, die voor bots). Laten we hem bellen DemoHabrBot. Alles wat te maken heeft met de naam van de bot (naam) heeft helemaal geen betrekking op zijn naam - gebruikersnaam (of geldt, maar precies het tegenovergestelde). Nadat we met succes een unieke botnaam hebben aangemaakt, moeten we het token dat in de schermafbeelding met een rode pijl wordt weergegeven, kopiëren en opslaan (in het grootste vertrouwen). Met zijn hulp zullen we later de herkomst vaststellen Telegram'een webhook voor onze Yandex-functie.

Een Telegram-bot bouwen in Yandex.Cloud

Laten we nu het commando geven aan de vader van alle bots: /mijnbots, en het toont ons een lijst met alle bots die we hebben gemaakt. Laten we de versgebakken bot voorlopig met rust laten Demo Habr (het is gemaakt om te laten zien hoe je bots maakt, maar we zullen het vandaag ook voor andere demonstratiedoeleinden gebruiken), en laten we naar de bot kijken Slimme gedachten (@SmartThoughtsBot). Klik op de knop met de naam in de lijst met bots.

Een Telegram-bot bouwen in Yandex.Cloud

Hier kunnen we onze bot configureren. Door op de knop te drukken Bewerk… We gaan verder met het bewerken van een of andere optie. Bijvoorbeeld door op de knop te klikken Bewerk naam we kunnen de naam van de bot veranderen, bijvoorbeeld in plaats daarvan Slimme gedachten, schrijven Gekke ideeën. Botpic - dit is de avatar van de bot, dit moet tenminste zo zijn 150 x 150 px. Omschrijving — dit is een korte beschrijving die de gebruiker ziet als hij de bot voor de eerste keer opstart, als antwoord op de vraag: Wat kan deze bot doen? Over — een nog kortere beschrijving, die wordt verzonden met een link naar de bot (https://t.me/SmartThoughtsBot) of bij het bekijken van informatie erover.

Een Telegram-bot bouwen in Yandex.Cloud

Het enige wat we hoeven te doen is de commando's instellen. Om dit te doen, drukt u op de knop Opdrachten bewerken. Om de gebruikerspraktijk te standaardiseren Telegram raadt aan om altijd twee commando's te gebruiken: /begin и /helpen, en als de bot instellingen nodig heeft, gebruik dan de aanvullende opdracht /settings. Onze bot is zo eenvoudig als een bal en heeft dus nog geen instellingen nodig. De eerste twee commando’s schrijven we, die we vervolgens in code gaan verwerken. Als de gebruiker nu een schuine streep (schuine streep: /) in het invoerveld invoert, verschijnt er een lijst met opdrachten voor snelle selectie. Alles is zoals op de foto: aan de linkerkant installeren we opdrachten via de vaderbot; aan de rechterkant zijn deze opdrachten al beschikbaar voor gebruikers in onze bot.

Een Telegram-bot bouwen in Yandex.Cloud

Yandex-functie

Nu onze bot is gemaakt, gaan we naar Yandex.Cloudom een ​​functie te maken die de code van onze bot zal uitvoeren. Als je nog niet hebt gewerkt Yandex.Cloud lees het materiaal Alice in het land van Bitrix, en dan - Yandex-functies verzenden e-mail. Ik ben er vrij zeker van dat deze twee relatief korte artikelen voldoende zullen zijn om je een basiskennis van het onderwerp te geven.

Dus in de console Yandex.Cloud selecteer het item in het linkernavigatiemenu Cloud-functiesen druk vervolgens op de knop Maak een functie. We geven het een naam en een korte beschrijving voor onszelf.

Een Telegram-bot bouwen in Yandex.Cloud

Na het indrukken van de knop Creëren en na een paar seconden verschijnt de nieuwe functie in de lijst met alle functies. Klik op haar naam - dit brengt ons naar de pagina Recensie onze functie. Hier moet je inschakelen (On) schakelaar Publieke functiezodat het toegankelijk wordt van buitenaf (bijv Yandex.Cloud) van de wereld, en de betekenis van de velden Bellink и identifier – houd het diep geheim voor iedereen behalve uzelf en Telegram, zodat uw functie niet door verschillende oplichters kan worden opgeroepen.

Een Telegram-bot bouwen in Yandex.Cloud

Ga nu via het linkermenu naar De redacteur functies. Laten we ons even opzij zetten Slimme gedachten, en maak een minimale sjabloonfunctie om de functionaliteit van onze bot te controleren... In deze context is deze functie echter onze bot... Kortom, nu en hier zullen we een eenvoudige bot maken die zal "spiegelen" ( d.w.z. terugsturen) gebruikersverzoeken. Deze sjabloon kan altijd worden gebruikt bij het maken van nieuwe telegrambots om ervoor te zorgen dat de communicatie ermee verloopt Telegram'ohm werkt prima. Klik Maak een bestand aan, laten we het noemen index.js, en online Code-editor plak de volgende code in dit bestand:

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

In de Yandex.Cloud-console zou het er ongeveer zo uit moeten zien:

Een Telegram-bot bouwen in Yandex.Cloud

Verderop geven wij aan Ingangspunt - index.botWaar index dit is de bestandsnaam (index.js), en snuit - functienaam (module.exports.bot). Laat alle overige velden ongewijzigd en klik op de knop in de rechterbovenhoek Versie maken. Binnen enkele seconden wordt deze versie van de functie aangemaakt. Kort na het testen webhaak, zullen we een nieuwe versie maken − Slimme gedachten.

Een Telegram-bot bouwen in Yandex.Cloud

Objectopslag

Nu we het hebben gecreëerd Yandex-functie, kom op, terwijl we in de console zitten Yandex.Cloud, laten we de zogenaamde emmer (emmer, d.w.z. bucket in het Russisch, helemaal geen boeket) voor het opslaan van afbeeldingsbestanden die in onze bot zullen worden gebruikt Slimme gedachten. Selecteer het item in het linkernavigatiemenu Object Opslag, druk op de knop Maak een emmerverzin er een naam voor, bijvoorbeeld img-bucket, en, belangrijker nog, Leestoegang tot objecten We maken het openbaar, anders ziet Telegram onze foto’s niet. Alle overige velden laten we ongewijzigd. druk op de knop Maak een emmer.

Een Telegram-bot bouwen in Yandex.Cloud

Hierna kan de lijst met alle buckets er ongeveer zo uitzien (als dit uw enige bucket is):

Een Telegram-bot bouwen in Yandex.Cloud

Nu stel ik voor om op de naam van de bucket te klikken en er een map in te maken om de opslag van afbeeldingen voor uw verschillende toepassingen te organiseren. Bijvoorbeeld voor een telegrambot Slimme gedachten Ik heb een map gemaakt met de naam tg-bot-smart-gedachten (niets, ik zal deze code begrijpen). Maak er ook een.

Een Telegram-bot bouwen in Yandex.Cloud

Nu kunt u op de mapnaam klikken, ernaartoe gaan en bestanden uploaden:

Een Telegram-bot bouwen in Yandex.Cloud

En door op de bestandsnaam te klikken - haal het op URL voor gebruik in onze bot, en in het algemeen - overal (maar publiceer dit niet URL onnodig, aangezien verkeer van Objectopslag opgeladen).

Een Telegram-bot bouwen in Yandex.Cloud

Dat is eigenlijk alles wat er is Objectopslag. Nu weet u wat u moet doen als u een prompt ziet om daar bestanden te uploaden.

Webhook

Nu gaan we installeren webhaak - d.w.z. wanneer de bot een update ontvangt (bijvoorbeeld een bericht van een gebruiker) van de server Telegram in onze Yandex-functie er wordt een verzoek verzonden (te vragen) met gegevens. Hier is een regel die u eenvoudig in het adresveld van uw browser kunt plakken en vervolgens de pagina kunt vernieuwen (u hoeft dit maar één keer te doen): https://api.telegram.org/bot{bot_token}/setWebHook?url={webhook_url}
Wij vervangen hem gewoon {bot_token} naar het token dat we van de vaderbot hebben ontvangen bij het maken van onze bot, en {webhook_url} - Aan URL onze Yandex-functies. Wacht even! Maar RossKomTsenzur verbiedt providers in de Russische Federatie om het adres te onderhouden https://api.telegram.org. Ja dat klopt. Maar kom met iets. Je kunt dit bijvoorbeeld aan je grootmoeder vragen in Oekraïne, Israël of Canada - daar bestaat geen "Rosskomcensuur" en God weet alleen hoe mensen zonder moeten leven. Als gevolg hiervan zou het verzoek-antwoord bij het installeren van een webhook er als volgt uit moeten zien:

Een Telegram-bot bouwen in Yandex.Cloud

Wij zijn aan het testen. Het moet ‘spiegelen’.

Een Telegram-bot bouwen in Yandex.Cloud

Dit is waar. Onze felicitaties - nu Yandex-functie is geworden Telegram-bot!

Slimme gedachten

Laten we nu slimme gedachten doen. De code is open en ligt op GitHub. Het is redelijk goed becommentarieerd en is slechts honderd regels lang. Lees het als een libretto van een operadiva!

Een Telegram-bot bouwen in Yandex.Cloud

Kloon het project en installeer afhankelijkheden:

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

Breng de gewenste wijzigingen aan in het bestand index.js (optioneel; je hoeft niets te veranderen). Creëren ritssluiting-archief, met bestand index.js en map node_modules binnen, bijvoorbeeld onder de naam smart.zip.

Een Telegram-bot bouwen in Yandex.Cloud

Ga nu naar de console naar onze Yandex-functies, selecteer het tabblad ZIP-archief, druk op de knop Selecteer een bestanden download ons archief smart.zip. Klik ten slotte in de rechterbovenhoek op de knop Versie maken.

Een Telegram-bot bouwen in Yandex.Cloud

Binnen een paar seconden, wanneer de functie is bijgewerkt, zullen we onze bot opnieuw testen. Nu “spiegelt” hij niet meer, maar levert hij slimme gedachten!

Een Telegram-bot bouwen in Yandex.Cloud

Dat is alles voor vandaag. Er volgen meer artikelen. Als je dit wilt lezen, abonneer je dan op meldingen over nieuwe artikelen. U kunt zich hier of op abonneren Telegram-kanaal IT-tutorial ZakharOf Twitter @mikezaharov.

referenties

Codeer op GitHub
Yandex Cloud-functies
Yandex-objectopslag
Bots: een introductie voor ontwikkelaars
Telegram Bot-API

Donaties

Een Telegram-bot bouwen in Yandex.Cloud

Bron: www.habr.com

Voeg een reactie