Idag, från skrotmaterial, kommer vi att montera https://api.telegram.org/
. Nåväl, det gör vi inte - nej, nej. När allt kommer omkring, i vår väska finns det sk. webhooks — med deras hjälp gör vi inga förfrågningar till en specifik adress, utan skickar helt enkelt vår förfrågan som ett svar på varje förfrågan till oss. Det vill säga, som i Odessa svarar vi på en fråga med en fråga. Det är därför Telegram API kommer inte att visas i vår kod.
varningNamnen på eventuella statliga organisationer som nämns i den här artikeln är fiktiva, och möjliga matchningar med namnen på verkliga organisationer är tillfälliga.
Så vi kommer att göra en bot som ger oss smarta tankar. Exakt som på bilden:
Du kan prova det i aktion - här är namnet: @SmartThoughtsBot. Lägg märke till knappen "Alices skicklighet"? Detta beror på att boten är ett slags "följeslagare" för boten med samma namn. Alices skicklighet, dvs. den utför samma funktioner som Alices skicklighet och det är möjligt att de kommer att kunna samexistera i fred genom att göra reklam för varandra. Om hur man skapar skicklighet Smarta tankar beskrivs i artikeln
Skapa en bot
Jag vill att den här handledningen ska vara användbar för alla, inkl. och nybörjare botbyggare. Därför kommer jag i det här avsnittet att beskriva i detalj hur man skapar i allmänhet Telegram'e bots. För dem som inte behöver denna information, fortsätt till följande avsnitt.
Öppna applikationen Telegaram, låt oss kalla alla bots far (de har allt som människor) - @BotFather - och först ger vi honom kommandot /help för att fräscha upp hans minne av vad vi kan göra. Nu kommer vi att vara intresserade av laget / nybot.
Eftersom boten som beskrivs här redan har skapats kommer jag i demonstrationssyfte skapa en annan bot under en kort tid (och sedan radera den). Jag ringer honom DemoHabrBot. Namn (Användarnamn) av alla telegramrobotar måste sluta med ordet bot, till exempel: MyCoolBot eller min_cool_bot - det här är för bots. Men först ger vi boten ett namn (namn) - och det här är för människor. Namnet kan vara på vilket språk som helst, innehålla mellanslag och behöver inte sluta med ett ord bot, och behöver inte ens vara unik. I det här exemplet kallade jag denna bot Demo Habr.
Välj nu ett namn för boten (Användarnamn, den för bots). Låt oss ringa honom DemoHabrBot. Allt relaterat till namnet på boten (namn) relaterar inte till hans namn alls - Användarnamn (eller gäller, men precis tvärtom). Efter att ha skapat ett unikt botnamn måste vi kopiera och spara (i största förtroende!) token som visas på skärmdumpen med en röd pil. Med dess hjälp kommer vi senare att fastställa ursprunget från Telegram'en webhook till vår Yandex funktion.
Låt oss nu ge kommandot till fadern till alla botar: /mybots, och det kommer att visa oss en lista över alla bots vi har skapat. Låt oss lämna den nybakade boten ifred för nu Demo Habr (den skapades för att visa hur man skapar bots, men vi kommer också att använda den idag för andra demonstrationsändamål), och låt oss titta på boten Smarta tankar (@SmartThoughtsBot). Klicka på knappen med dess namn i listan över botar.
Här kan vi konfigurera vår bot. Genom att trycka på knappen Redigera… Vi kommer att gå vidare till att redigera ett eller annat alternativ. Till exempel genom att klicka på knappen Redigera namn vi kan ändra namnet på boten, säg istället Smarta tankar, skriv Galna idéer. Botpic - det här är botens avatar, måste åtminstone vara det 150 x 150 px. Beskrivning — detta är en kort beskrivning som användaren ser när han startar boten för första gången, som ett svar på frågan: Vad kan den här boten göra? Om oss — en ännu kortare beskrivning, som sänds med en länk till boten (https://t.me/SmartThoughtsBot
) eller när du visar information om det.
Allt vi behöver göra är att ställa in kommandona. För att göra detta, tryck på knappen Redigera kommandon. Att standardisera användarpraxis Telegram rekommenderar att du alltid använder två kommandon: /Start и /hjälp, och om boten behöver inställningar, använd ytterligare kommandot /settings. Vår bot är enkel som en boll, så den behöver inga inställningar än. Vi skriver de två första kommandona som vi sedan bearbetar i kod. Om användaren nu anger ett snedstreck (snedstreck: /) i inmatningsfältet, kommer en lista med kommandon att visas för snabbval. Allt är som på bilden: till vänster - vi installerar kommandon genom faderboten; till höger är dessa kommandon redan tillgängliga för användare i vår bot.
Yandex funktion
Nu när vår bot har skapats, låt oss gå till Yandex.Cloudför att skapa en funktion som kommer att exekvera vår bots kod. Om du inte har jobbat med Yandex.Cloud läsa materialet
Alltså i konsolen Yandex.Cloud i den vänstra navigeringsmenyn välj objektet Molnfunktioner, och tryck sedan på knappen Skapa en funktion. Vi ger den ett namn och en kort beskrivning för oss själva.
Efter att ha tryckt på knappen skapa och efter ett par sekunder kommer den nya funktionen att visas i listan över alla funktioner. Klicka på hennes namn - detta tar oss till sidan Обзор vår funktion. Här måste du aktivera (On) switch Offentlig funktionså att den blir tillgänglig utifrån (för Yandex.Cloud) av världen, och betydelsen av fälten Ring länk и Identifierare — håll det djupt hemligt för alla utom dig själv och Telegram, så att din funktion inte kan anropas av olika bedragare.
Gå nu till den vänstra menyn Redaktören funktioner. Låt oss lägga åt sidan för ett ögonblick vårt Smarta tankar, och skapa en minimal mallfunktion för att kontrollera funktionaliteten hos vår bot... Men i detta sammanhang är den här funktionen vår bot... Kort sagt, nu och just här kommer vi att göra en enkel bot som kommer att "spegla" ( skicka tillbaka) användarförfrågningar. Denna mall kan alltid användas när man skapar nya telegrambots för att säkerställa att kommunikationen med Telegram'ohm funkar bra. Klick Skapa fil, låt oss ringa honom index.jsoch online Kodredigerare klistra in följande kod i den här 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-konsolen borde det se ut ungefär så här:
Längre nedan anger vi Inkörsport - index.botvar index detta är filnamnet (index.js) och bot - funktionsnamn (module.exports.bot). Lämna alla andra fält som de är och klicka på knappen i det övre högra hörnet Skapa version. Om några sekunder kommer denna version av funktionen att skapas. Strax efter testet webhook, vi kommer att skapa en ny version - Smarta tankar.
Objektlagring
Nu när vi har skapat Yandex funktion, kom igen, medan vi är i konsolen Yandex.Cloud, låt oss skapa den så kallade hink (skopa, dvs. hink på ryska, inte en bukett alls) för att lagra bildfiler som kommer att användas i vår bot Smarta tankar. Välj objektet i den vänstra navigeringsmenyn Objektförvaring, tryck på knappen Skapa en hink, kom på ett namn för det, till exempel, img-hink, och viktigast av allt, Läsåtkomst till objekt Vi gör det offentligt - annars ser Telegram inte våra bilder. Vi lämnar alla andra fält oförändrade. tryck på knappen Skapa en 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 du klickar på namnet på hinken och skapar en mapp inuti den för att organisera lagringen av bilder för dina olika applikationer. Till exempel för en telegrambot Smarta tankar Jag skapade en mapp som heter tg-bot-smarta-tankar (ingenting, jag kommer att förstå den här koden). Skapa en också.
Nu kan du klicka på mappnamnet, gå in i det och ladda upp filer:
Och genom att klicka på filnamnet - hämta det URL för användning i vår bot, och i allmänhet - var som helst (men publicera inte detta URL onödigt, eftersom trafik fr.o.m Objektlagring laddad).
Det är i princip allt som finns Objektlagring. Nu vet du vad du ska göra när du ser en uppmaning att ladda upp filer dit.
Webhook
Nu ska vi installera webhook - dvs. när boten tar emot en uppdatering (till exempel ett meddelande från en användare) från servern Telegram in i vår Yandex funktion en begäran kommer att skickas (begära) med data. Här är en rad som du helt enkelt kan klistra in i webbläsarens adressfält och sedan uppdatera sidan (du behöver bara göra detta en gång): https://api.telegram.org/bot{bot_token}/setWebHook?url={webhook_url}
Vi byter bara ut den {bot_token} till token vi fick från faderboten när vi skapade vår bot, och {webhook_url} - på URL vår Yandex funktioner. Vänta en minut! Men RossKomTsenzur förbjuder leverantörer i Ryska federationen att betjäna adressen https://api.telegram.org
. Ja det stämmer. Men kom på något. När allt kommer omkring kan du till exempel fråga din mormor om detta i Ukraina, Israel eller Kanada - det finns ingen "Rosskomcensur" där, och bara Gud vet hur människor lever utan det. Som ett resultat bör begäran-svaret när du installerar en webhook se ut så här:
Vi testar. Det ska "spegla".
Detta är sant. Våra gratulationer - nu Yandex funktion har blivit Telegram-bot!
Smarta tankar
Låt oss nu göra smarta tankar. Koden är öppen och ligger på
Klona projektet och installera beroenden:
git clone https://github.com/stmike/tg-bot-smart-thoughts.git
cd tg-bot-smart-thoughts
npm i
Gör de ändringar du behöver i filen index.js (valfritt; du behöver inte ändra något). Skapa zip-arkiv, med fil index.js och mapp node_modules inuti till exempel under namnet smart.zip.
Gå nu till konsolen till vår Yandex funktioner, välj fliken ZIP-arkiv, tryck på knappen Välj en fil, och ladda ner vårt arkiv smart.zip. Slutligen, i det övre högra hörnet, klicka på knappen Skapa version.
Om några sekunder, när funktionen är uppdaterad, kommer vi att testa vår bot igen. Nu ”speglar han” inte längre, utan levererar smarta tankar!
Det är allt för idag. Fler artiklar följer. Om du är intresserad av att läsa detta, prenumerera på meddelanden om nya artiklar. Du kan prenumerera här eller på Telegram-kanal
referenser
Donationer
Källa: will.com