Telegram bot építése a Yandex.Cloudban

Telegram bot építése a Yandex.Cloudban

Ma hulladék anyagokból szereljük össze Yandex.Cloud Távirat bot felhasználásával Yandex Cloud Functions (vagy Yandex funkciók - röviden) és Yandex objektumtároló (vagy Objektumtárolás - az egyértelműség kedvéért). A kód bekapcsolva lesz node.js. Van azonban egy pikáns körülmény - egy bizonyos szervezet, tegyük fel, RossKomTsenzur (a cenzúrát az Orosz Föderáció alkotmányának 29. cikke tiltja), nem teszi lehetővé az orosz internetszolgáltatók számára, hogy kéréseket továbbítsanak Telegram API по адресу: https://api.telegram.org/. Nos, nem fogjuk – nem, nem. Hiszen a táskánkban ún. webhookok — segítségükkel nem egy meghatározott címre kérünk, hanem egyszerűen elküldjük a megkeresésünket válaszként bármilyen megkeresésre. Vagyis, mint Odesszában, kérdésre kérdéssel válaszolunk. Ezért Telegram API nem jelenik meg a kódunkban.

Jogi nyilatkozatAz ebben a cikkben említett kormányzati szervezetek neve fiktív, és a valós szervezetek nevével való esetleges egyezések véletlenek.

Tehát készítünk egy botot, amely okos gondolatokkal lát el bennünket. Pont olyan, mint a képen:

Telegram bot építése a Yandex.Cloudban

Kipróbálhatod működés közben – itt a név: @SmartThoughtsBot. Észrevette a gombot "Alice ügyessége"? Ennek az az oka, hogy a bot egyfajta „társa” az azonos nevű botnak. Alice ügyessége, azaz ugyanazokat a funkciókat látja el, mint Alice ügyessége és lehetséges, hogy egymás reklámozásával békésen együtt tudnak majd élni. Arról, hogyan kell létrehozni készség Okos gondolatok cikkben leírva Alice ügyességet szerez. Most (a fenti cikk megjelenése után néhány változtatást követően) az okostelefonon ezt készség valahogy így fog kinézni:

Telegram bot építése a Yandex.Cloudban

Bot létrehozása

Szeretném, ha ez az oktatóanyag mindenki számára hasznos lenne, beleértve. és kezdő botépítők. Ezért ebben a részben részletesen leírom, hogyan kell általában létrehozni Telegram'e botok. Azok számára, akiknek nincs szüksége erre az információra, folytassa a következő szakaszokkal.

Nyissa meg az alkalmazást Telegaram, nevezzük minden bot atyjának (mindenük van, mint az embereknek) - @BotFather - és először a /help parancsot adjuk neki, hogy felfrissítse az emlékezetét, hogy mit tehetünk. Most érdeklődni fogunk a csapat iránt / newbot.

Telegram bot építése a Yandex.Cloudban

Mivel az itt leírt bot már elkészült, demonstrációs célból rövid időre létrehozok egy másik botot (majd törlöm). felhívom DemoHabrBot. Nevek (felhasználónév) minden táviratrobotnak a szóval kell végződnie pofa, például: MyCoolBot vagy my_cool_bot - ez a botoknak való. De először adjunk nevet a botnak (név) – és ez az embereknek szól. A név bármilyen nyelvű lehet, szóközt tartalmazhat, és nem kell szóra végződnie pofa, és még csak nem is kell egyedinek lennie. Ebben a példában ezt a botot hívtam Demo Habr.

Telegram bot építése a Yandex.Cloudban

Most válasszon nevet a botnak (felhasználónév, a botoknak valót). Hívjuk fel DemoHabrBot. Minden, ami a bot nevével kapcsolatos (név) egyáltalán nem kapcsolódik a nevéhez - felhasználónév (vagy érvényes, de pont fordítva). Az egyedi botnév sikeres létrehozása után le kell másolnunk és elmentenünk (a legszigorúbb bizalommal!) a képernyőképen látható, piros nyíllal ellátott tokent. Segítségével később megállapítjuk a származást Telegram'egy webhook nekünk Yandex funkció.

Telegram bot építése a Yandex.Cloudban

Most pedig adjuk ki a parancsot minden bot atyjának: /mybots, és megmutatja nekünk az általunk létrehozott összes robotok listáját. A frissen sült botot most hagyjuk békén Demo Habr (a botok létrehozásának bemutatására készült, de ma más demonstrációs célokra is felhasználjuk), és nézzük a botot Okos gondolatok (@SmartThoughtsBot). Kattintson a nevét tartalmazó gombra a robotok listájában.

Telegram bot építése a Yandex.Cloudban

Itt konfigurálhatjuk a botunkat. A gomb megnyomásával Szerkesztése ... Továbblépünk egyik vagy másik lehetőség szerkesztésére. Például a gombra kattintva Név szerkesztése megváltoztathatjuk a bot nevét, mondjuk helyette Okos gondolatok, ír Őrült ötletek. Botpic - ez a bot avatarja, legalábbis annak kell lennie 150 150 x px. Leírás - ez egy rövid leírás, amelyet a felhasználó a bot első indításakor lát, válaszként a következő kérdésre: Mit tud ez a bot? Rólunk - még rövidebb leírás, amelyet a botra mutató hivatkozással továbbítanak (https://t.me/SmartThoughtsBot), vagy amikor információkat tekint meg róla.

Telegram bot építése a Yandex.Cloudban

Nincs más dolgunk, mint beállítani a parancsokat. Ehhez nyomja meg a gombot Parancsok szerkesztése. A felhasználói gyakorlat egységesítése Telegram mindig két parancs használatát javasolja: /Rajt и / Segítség, és ha a botnak beállításokra van szüksége, használja a további /settings parancsot. Botunk olyan egyszerű, mint egy labda, így még nincs szüksége semmilyen beállításra. Megírjuk az első két parancsot, amit aztán kódban feldolgozunk. Most, ha a felhasználó beír egy perjelet (perjel: /) a beviteli mezőbe, megjelenik a parancsok listája a gyors kiválasztáshoz. Minden úgy van, mint a képen: bal oldalon - parancsokat telepítünk az apaboton keresztül; a jobb oldalon ezek a parancsok már elérhetőek a botunk felhasználói számára.

Telegram bot építése a Yandex.Cloudban

Yandex funkció

Most, hogy a robotunk elkészült, menjünk tovább Yandex.Cloudhogy hozzunk létre egy függvényt, amely végrehajtja a robotunk kódját. Ha nem dolgoztál együtt Yandex.Cloud olvassa el az anyagot Alice Bitrix földjén, és akkor - A Yandex funkciók leveleket küldenek. Biztos vagyok benne, hogy ez a két viszonylag rövid cikk elég lesz ahhoz, hogy alapszinten megértse a témát.

Tehát a konzolban Yandex.Cloud a bal oldali navigációs menüben válassza ki az elemet Felhőfunkciók, majd nyomja meg a gombot Hozzon létre egy függvényt. Nevet és rövid leírást adunk neki magunknak.

Telegram bot építése a Yandex.Cloudban

A gomb megnyomása után teremt és néhány másodperc múlva az új funkció megjelenik az összes funkció listájában. Kattintson a nevére – ezzel az oldalra jutunk Értékelés funkciónk. Itt engedélyeznie kell (On) kapcsolót Nyilvános funkcióhogy külső oldalról elérhetővé váljon (pl Yandex.Cloud) a világról, és a mezők jelentéséről Hívás link и Azonosító - tartsa mélyen titokban mindenki előtt, kivéve saját magát és a Telegramot, hogy funkcióját ne hívhassák meg a különböző csalók.

Telegram bot építése a Yandex.Cloudban

Most a bal oldali menü használatával lépjen a következőre: A szerkesztő funkciókat. Tegyük félre egy pillanatra a magunkét Okos gondolatok, és hozzon létre egy minimális sablonfüggvényt, amellyel ellenőrizheti a botunk működését... Ebben az összefüggésben azonban ez a funkció a mi botunk... Röviden, most és itt egy egyszerű botot fogunk készíteni, amely „tükrözni fog” ( azaz küldje vissza ) felhasználói kéréseket. Ez a sablon mindig használható új távirat-botok létrehozásakor, hogy megbizonyosodjon arról, hogy a kommunikációt Távirat'ohm jól működik. Kattintson Fájl létrehozása, nevezzük index.js, és online Kódszerkesztő illessze be a következő kódot ebbe a fájlba:

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

A Yandex.Cloud konzolban valahogy így kell kinéznie:

Telegram bot építése a Yandex.Cloudban

Alább jelezzük Belépési pont - index.botAhol index ez a fájlnév (index.js), és pofa - függvény neve (module.exports.bot). Hagyja meg az összes többi mezőt, és kattintson a jobb felső sarokban található gombra Verzió létrehozása. Néhány másodperc múlva a funkciónak ez a verziója létrejön. Nem sokkal a tesztelés után webhook, létrehozunk egy új verziót - Okos gondolatok.

Telegram bot építése a Yandex.Cloudban

Objektumtárolás

Most, hogy létrehoztuk Yandex funkció, gyerünk, amíg a konzolban vagyunk Yandex.Cloud, hozzuk létre az ún vödör (vödör, azaz vödör oroszul, egyáltalán nem csokor) a botunkban használt képfájlok tárolására Okos gondolatok. A bal oldali navigációs menüben válassza ki az elemet Objektum tárolása, nyomja meg a gombot Hozzon létre egy vödröt, találjon ki neki egy nevet, például img-vödör, és ami a legfontosabb, Olvasási hozzáférés az objektumokhoz Nyilvánossá tesszük – különben a Telegram nem fogja látni a képeinket. Az összes többi mezőt változatlanul hagyjuk. nyomja meg a gombot Hozzon létre egy vödröt.

Telegram bot építése a Yandex.Cloudban

Ezek után az összes vödör listája valahogy így nézhet ki (ha ez az egyetlen vödör):

Telegram bot építése a Yandex.Cloudban

Most azt javaslom, hogy kattintson a vödör nevére, és hozzon létre egy mappát benne, ahol megszervezheti a képek tárolását a különböző alkalmazásokhoz. Például egy táviratbothoz Okos gondolatok nevű mappát hoztam létre tg-bot-smart-thoughts (semmi, meg fogom érteni ezt a kódot). Hozz létre te is egyet.

Telegram bot építése a Yandex.Cloudban

Most rákattinthat a mappa nevére, beléphet abba, és feltöltheti a fájlokat:

Telegram bot építése a Yandex.Cloudban

És a fájl nevére kattintva kapja meg URL a robotunkban való használatra, és általában - bárhol (de ezt ne tedd közzé URL szükségtelen, mivel a forgalom felől Objektumtárolás töltött).

Telegram bot építése a Yandex.Cloudban

Lényegében ez minden Objektumtárolás. Most már tudni fogja, mit kell tennie, ha megjelenik a fájlok feltöltésére vonatkozó felszólítás.

Webhook

Most telepítjük webhook - azaz amikor a bot frissítést kap (például üzenetet egy felhasználótól) a szervertől Telegram a miénknek Yandex funkció kérést küldünk (kérni) adatokkal. Íme egy sor, amelyet egyszerűen beilleszthet a böngésző címmezőjébe, majd frissítheti az oldalt (ezt csak egyszer kell megtennie): https://api.telegram.org/bot{bot_token}/setWebHook?url={webhook_url}
Csak kicseréljük {bot_token} arra a tokenre, amelyet az apabottól kaptunk a botunk létrehozásakor, és {webhook_url} - tovább URL mi Yandex funkciók. Várj egy percet! De RossKomTsenzur megtiltja az Orosz Föderáció szolgáltatóinak a cím kiszolgálását https://api.telegram.org. Igen ez így van. De találj ki valamit. Elvégre például megkérdezheti erről a nagymamáját Ukrajnában, Izraelben vagy Kanadában - ott nincs „rosskomcenzúra”, és csak Isten tudja, hogyan élnek az emberek nélküle. Ennek eredményeként a webhook telepítésekor a kérés-válasz a következőképpen néz ki:

Telegram bot építése a Yandex.Cloudban

Tesztelünk. „Tükrözni” kell.

Telegram bot építése a Yandex.Cloudban

Ez igaz. Gratulálunk – most Yandex funkció vált Telegram-bot!

Okos gondolatok

Most tegyük az Okos gondolatokat. A kód nyitva van és rajta van GitHub. Elég jól kommentált, és csak száz soros. Olvasd úgy, mint egy operadíva librettót!

Telegram bot építése a Yandex.Cloudban

A projekt klónozása és a függőségek telepítése:

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

Végezze el a szükséges módosításokat a fájlon index.js (opcionális; nem kell semmit módosítania). Teremt postai irányítószám-archívum, fájllal index.js és mappa csomópont_modulok belül például a név alatt smart.zip.

Telegram bot építése a Yandex.Cloudban

Most menjen a konzolunkhoz Yandex funkciók, válassza ki a lapot ZIP archívum, nyomja meg a gombot Válasszon ki egy fájlt, és töltse le archívumunkat smart.zip. Végül a jobb felső sarokban kattintson a gombra Verzió létrehozása.

Telegram bot építése a Yandex.Cloudban

Néhány másodperc múlva, amikor a funkció frissül, újra teszteljük a botunkat. Most már nem „tükrözik”, hanem okos gondolatokat szállít!

Telegram bot építése a Yandex.Cloudban

Ez minden mára. További cikkek következnek. Ha szeretné elolvasni ezt, iratkozzon fel az új cikkekről szóló értesítésekre. Feliratkozhat itt, vagy a címen Telegram-csatorna IT oktatóanyag ZakharVagy Twitter @mikezaharov.

referenciák

Kód a GitHubon
Yandex Cloud Functions
Yandex objektumtároló
Botok: Bevezetés fejlesztőknek
Telegram Bot API

Adományok

Telegram bot építése a Yandex.Cloudban

Forrás: will.com

Hozzászólás