
Idag kommer vi att samla i Telegram-bot med hjĂ€lp av (eller Yandex-funktioner â för korthet) och (eller Objektlagring â för tydlighet). Koden kommer att vara pĂ„ Node.js. Men det finns en pikant omstĂ€ndighet â en organisation som vi kan kalla RossComCensorship (censur förbjuden enligt artikel 29 i Rysslands konstitution) tillĂ„ter inte internetleverantörer i Ryssland att vidarebefordra förfrĂ„gningar till Telegram API pĂ„ adressen: https://api.telegram.org/. NĂ„ja, vi kommer att avstĂ„ â om det inte finns, sĂ„ finns det inte. För i vĂ„r vĂ€ska har vi de sĂ„ kallade webhooks â med hjĂ€lp av dem gör vi inga specifika förfrĂ„gningar, utan skickar bara vĂ„r förfrĂ„gan som svar pĂ„ vilken förfrĂ„gan som helst till oss. Det vill sĂ€ga, som i Odessa â vi svarar med en frĂ„ga pĂ„ en frĂ„ga. DĂ€rför Telegram API kommer inte att figurerar i vĂ„r kod.
DisclaimerDe nÀmnda namnen pÄ statliga organisationer i denna artikel Àr fiktiva och eventuella likheter med namnen pÄ verkligt existerande organisationer Àr slumpmÀssiga.
SÄ, vi kommer att göra en bot som ger oss kloka tankar. Precis som pÄ bilden:
Du kan prova den i praktiken â hĂ€r Ă€r namnet: @SmartThoughtsBot. La du mĂ€rke till knappen «Alisas fĂ€rdighet»? ĐŃĐŸ ĐżĐŸŃĐŸĐŒŃ, ŃŃĐŸ Đ±ĐŸŃ ŃĐČĐ»ŃĐ”ŃŃŃ ŃĐČĐŸĐ”ĐŸĐ±ŃĐ°Đ·ĐœŃĐŒ «ĐșĐŸĐŒĐżĐ°ĐœŃĐŸĐœĐŸĐŒÂ» ĐŽĐ»Ń ĐŸĐŽĐœĐŸĐžĐŒĐ”ĐœĐœĐŸĐłĐŸ Alisa's fĂ€rdighet, det vill sĂ€ga, den utför samma funktioner som Alisa's fĂ€rdighet och möjligtvis kan de samexistera fredligt och marknadsföra varandra. Om hur man skapar fĂ€rdigheten Kloka Tankar berĂ€ttas i artikeln . Just nu (efter att ha gjort nĂ„gra Ă€ndringar efter publiceringen av den nĂ€mnda artikeln) kommer den hĂ€r fĂ€rdigheten att se ut ungefĂ€r sĂ„ hĂ€r pĂ„ smartphone:
Skapa en bot
Jag skulle vilja att den hĂ€r guiden Ă€r till nytta för alla, inklusive nybörjare i "bot-byggande". DĂ€rför kommer jag att beskriva i detalj hur man skapar i TelegrambĂ„de bots. För de som inte behöver denna information â gĂ„ vidare till de följande avsnitten.
Ăppna appen Telegram, kalla pĂ„ alla bots fader (de verkar som mĂ€nniskor) â @BotFather â och ge honom kommandot /help för att friska upp minnet om vad vi kan göra. Just nu kommer vi att vara intresserade av kommandot /newbot.

Eftersom den bot som beskrivs hĂ€r redan Ă€r skapad, för demonstrationsĂ€ndamĂ„l kommer jag att skapa en annan bot för en kort tid (sedan tar jag bort den). Jag kommer att kalla den DemoHabrBot. Namnen (username) pĂ„ alla Telegram-bots mĂ„ste sluta med ordet bot, till exempel: MyCoolBot eller my_cool_bot â detta Ă€r för bots. Men först ger vi boten ett namn (name) â och detta Ă€r för mĂ€nniskor. Namnet kan vara pĂ„ vilket sprĂ„k som helst, innehĂ„lla mellanslag, och behöver inte sluta med ett specifikt ord bot, och det behöver inte ens vara unikt. I detta exempel kallade jag denna bot Demo Habr.

Nu vĂ€ljer vi ett namn för boten (username, det som Ă€r för botar). LĂ„t oss kalla den DemoHabrBot. Allt som rör botens namn (name) har inget att göra med dess identitet â username (eller har, men precis tvĂ€rtom). Efter att vi framgĂ„ngsrikt har skapat ett unikt namn för boten mĂ„ste vi kopiera och spara (i största hemlighet!) token som visas pĂ„ skĂ€rmdumpen med den röda pilen. Med hjĂ€lp av den kommer vi lite senare att stĂ€lla in utgĂ„ende Telegramwebhook pĂ„ vĂ„r Yandex-funktion.

Och nu ger vi kommandot till fadern av alla botar: /mybots, och han visar oss listan över alla botar som vi har skapat. LÄt oss Àn sÄ lÀnge lÀmna den nyskapade boten Demo Habr (den skapades för att visa hur man skapar botar, men vi kommer att anvÀnda den för andra demonstrationsÀndamÄl senare idag), och titta pÄ boten Smart Tankar (@SmartThoughtsBot). Vi klickar pÄ knappen med botens namn i botlistan.

HĂ€r kan vi konfigurera vĂ„r bot. Genom att trycka pĂ„ knappen Edit⊠gĂ„r vi till redigering av en viss option. Till exempel, genom att trycka pĂ„ knappen Edit Name kan vi Ă€ndra botens namn, sĂ€g istĂ€llet för Smart Tankar, skriva Kraftfulla IdĂ©er. Botpic â detta Ă€r botens avatar, bör vara minst 150 x 150 px. Beskrivning â detta Ă€r en kort beskrivning som anvĂ€ndaren ser vid första anvĂ€ndningen av boten, som svar pĂ„ frĂ„gan: Vad kan denna bot göra? Om â en Ă€nnu kortare beskrivning som överförs med lĂ€nken till boten (https://t.me/SmartThoughtsBot) eller vid visning av information om den.

Vi har bara kvar att konfigurera kommandona. För detta trycker vi pĂ„ knappen Edit Commands. För att standardisera anvĂ€ndarpraksis Telegram rekommenderar att alltid anvĂ€nda tvĂ„ kommandon: /start och /help, och om boten behöver instĂ€llningar â ett ytterligare kommando /settings. VĂ„r bot Ă€r sĂ„ enkel som en boll, sĂ„ han behöver inte nĂ„gra instĂ€llningar för tillfĂ€llet. Vi skriver in de tvĂ„ första kommandona som vi sedan kommer att behandla i koden. Nu, om anvĂ€ndaren skriver in ett snedstreck (tecknet /: /), kommer en lista med kommandon att dyka upp för snabb valning. Allt som pĂ„ bilden: till vĂ€nster â vi stĂ€ller in kommandona via fadern av boten; till höger Ă€r dessa kommandon redan tillgĂ€ngliga för anvĂ€ndarna i vĂ„r bot.

Yandex-funktion
Nu nĂ€r vĂ„r bot Ă€r skapad, gĂ„r vi till Yandex.Cloud, för att skapa en funktion som kommer att köra koden för vĂ„r bot. Om du inte har arbetat med Yandex.Cloud lĂ€s materialet , och sedan â . Jag Ă€r nĂ€stan sĂ€ker pĂ„ att dessa tvĂ„ relativt korta artiklar Ă€r tillrĂ€ckliga för att fĂ„ en grundlĂ€ggande förstĂ„else av Ă€mnet.
SÄ, i konsolen Yandex.Cloud i den vÀnstra navigationsmenyn vÀljer vi alternativet Cloud Functions, och klickar sedan pÄ knappen Skapa funktion. Ge den ett namn och en kort beskrivning för dig sjÀlv.

Efter att ha tryckt pĂ„ knappen Skapa och efter ett par sekunder kommer den nya funktionen att dyka upp i listan över alla funktioner. Klicka pĂ„ dess namn â detta tar oss till sidan Ăversikt för vĂ„r funktion. HĂ€r mĂ„ste vi aktivera (On) vĂ€xeln Offentlig funktion, sĂ„ att den blir tillgĂ€nglig frĂ„n externa (för Yandex.Cloud) vĂ€rlden, och vĂ€rdet av fĂ€lten LĂ€nk för anrop och Identifierare â hĂ„ll hemlig frĂ„n alla utom dig sjĂ€lv och Telegram, sĂ„ att ingen bedragare kan Ă„beropa din funktion.

Nu gĂ„r vi via den vĂ€nstra menyn till Redaktör funktionerna. LĂ„t oss för tillfĂ€llet lĂ€gga vĂ„ra Smart Tankar, och skapa en minimal mall-funktion för att testa vĂ„r bots funktionalitet⊠ĂndĂ„, i detta sammanhang Ă€r denna funktion vĂ„r bot⊠Kort sagt, just nu och precis hĂ€r kommer vi att skapa en mycket enkel bot som kommer att "Ă„terspegla" (dvs. skicka tillbaka) anvĂ€ndarnas förfrĂ„gningar. Denna mall kan alltid anvĂ€ndas vid skapandet av nya Telegram-botar för att sĂ€kerstĂ€lla att kontakten med Telegramfunkar som den ska. Klicka pĂ„ Skapa fil, ge den namnet index.js, och i den online Kodredigeraren klistrar vi in följande kod i denna 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-konsolen bör det se ut nÄgot i stil med:

Sedan anger vi lite lĂ€ngre ner Anropspunkt â index.bot, dĂ€r index det Ă€r filnamnet (index.js), och bot â funktionsnamnet (module.exports.bot). LĂ„t alla andra fĂ€lt vara "som de Ă€r", och i det övre högra hörnet klickar vi pĂ„ knappen Skapa version. Om nĂ„gra sekunder kommer denna versions funktion att skapas. Snart, efter testning webhook, kommer vi att skapa en ny version â Smart Tankar.

Objektlagring
Nu nĂ€r vi har skapat en Yandex-funktion, lĂ„t oss, medan vi Ă€r i konsolen Yandex.Cloud, skapa en sĂ„ kallad bucket (bucket, det vill sĂ€ga en hink pĂ„ ryska, Ă€r inte en bukett) för att lagra bildfiler som kommer att anvĂ€ndas i vĂ„r bot Smart Tankar. I den vĂ€nstra navigeringsmenyn vĂ€ljer vi Object Storage, klicka pĂ„ knappen Skapa hink, tĂ€nk pĂ„ ett namn, till exempel img-bucket, och viktigast av allt, Ă tkomst till objekt görs offentlig â annars fĂ„r Telegram inte se vĂ„ra bilder. Alla andra fĂ€lt lĂ€mnas oförĂ€ndrade. Klicka pĂ„ knappen Skapa hink.

Efter detta kan listan över alla hinkar se ut ungefÀr sÄ hÀr (om detta Àr din enda hink):

Nu föreslÄr jag att vi klickar pÄ hinkens namn och inne i den skapar en mapp för att organisera lagringen av bilder för olika applikationer. Till exempel för Telegram-boten Smart Tankar har jag skapat en mapp som heter tg-bot-smart-thoughts (inga problem, jag kommer förstÄ denna kod). Skapa gÀrna en sjÀlv.

Nu kan vi klicka pÄ mappens namn, gÄ in i den och ladda upp filer:

Och genom att klicka pĂ„ filnamnet â fĂ„ den URL för att anvĂ€nda i vĂ„r bot, och faktiskt â var som helst (men publicera inte detta URL om det inte behövs, eftersom trafiken frĂ„n Objektslagring debiteras).

Det var allt om Objektslagring. Nu vet du vad du ska göra nÀr du ser en uppmaning att ladda upp filer dit.
Webhook
Nu ska vi stĂ€lla in webhook â det vill sĂ€ga nĂ€r boten fĂ„r en uppdatering (till exempel ett meddelande frĂ„n en anvĂ€ndare), kommer en begĂ€ran att skickas frĂ„n servern Telegram till vĂ„r Yandex-funktion ({request}) med data. HĂ€r Ă€r en rad som man enkelt kan klistra in i webblĂ€sarens adressfĂ€lt och sedan uppdatera sidan (detta behöver göras endast en gĂ„ng): https://api.telegram.org/bot{bot_token}/setWebHook?url={webhook_url}
Vi bara byter ut {bot_token} mot token som vi fĂ„tt frĂ„n bot-fadern nĂ€r vi skapade vĂ„r bot, och {webhook_url} â till URL vĂ„r Yandex-funktioner. VĂ€nta lite! Men Ă€r det inte sĂ„ att RossComCensorship förbjuder leverantörer i Ryssland att betjĂ€na adressen https://api.telegram.org. Ja, det stĂ€mmer. Men kom pĂ„ nĂ„got. Man kan ju till exempel be sin mormor i Ukraina, Israel eller Kanada â dĂ€r finns inga sĂ„dana "russka censurer", och endast Gud vet hur mĂ€nniskor lever utan detta. Resultatet Ă€r att begĂ€ran-svar vid instĂ€llning av webhooken ska se ut sĂ„ hĂ€r:

LÄt oss testa. Det ska "speglas".

SĂ„ Ă€r det. Grattis â nu Ă€r du Yandex-funktion Detta Telegram-bot!
Smart Tankar
Nu skapar vi Smarta Tankar. Koden Àr öppen och finns pÄ . Den Àr ganska bra kommenterad, och den har bara hundra rader. LÀs den som en operasÄngerska lÀser librettot!

Klonar projektet och installerar beroenden:
git clone https://github.com/stmike/tg-bot-smart-thoughts.git
cd tg-bot-smart-thoughts
npm i
Gör nödvÀndiga Àndringar i filen index.js (valfritt; du behöver inte Àndra nÄgot). Skapa zip-arkiv, med filen index.js och mappen node_modules inuti, till exempel med namnet smart.zip.

Nu gÄr du i konsolen till vÄr Yandex-funktioner, vÀlj fliken ZIP-arkiv, tryck pÄ knappen VÀlj fil, och ladda upp vÄrt arkiv smart.zip. Till sist, i det övre högra hörnet klickar du pÄ knappen Skapa version.

Om nÄgra sekunder, nÀr funktionen har uppdaterats, testar vi vÄr bot igen. Nu speglar den inte lÀngre utan levererar kloka tankar!

Det Ă€r allt för idag. Fler artiklar följer. Om du Ă€r intresserad av att lĂ€sa liknande â prenumerera pĂ„ meddelanden om nya artiklar. Du kan prenumerera hĂ€r, eller pĂ„ Telegram-kanal , eller Twitter .
LĂ€nkar
Donations
KĂ€lla: habr.com
