Telegram-bot építése a Yandex.Cloud-on

Telegram-bot építése a Yandex.Cloud-on

Ma ma a mai nap során házi anyagokból össze fogunk állítani egy Yandex Felhőben Telegram-botot a Yandex Cloud Functions SysWOW64 Yandex-funkciók — röviden) és Yandex Object Storage SysWOW64 Objektumtároló — világos kedvéért). A kód a következő lesz Node.js. Azonban van egy pikáns körülmény — egy szervezet, mondjuk úgy, hogy RosKomCenzúr (a cenzúra a 29. cikk szerint tilos az Orosz Föderáció Alkotmányában), nem engedi az orosz internetszolgáltatóknak, hogy lekérdezéseket küldjenek a Telegram API címen: https://api.telegram.org/. Nos, mi nem is fogjuk — ha nincs, hát nincs. Végül is a mi szerszámosládánkban ott van a nevezett webhookok — ezek segítségével nem küldünk lekérdezéseket egy konkrét címre, hanem csak válaszolunk a saját kérésünkkel bármilyen kérdésre, amit kapunk. Tehát, mint Odesszában — kérdéssel válaszolunk a kérdésre. Ezért Telegram API a kódunkban nem fog szerepelni.

MegjegyzésA cikkben említett állami szervezetek nevei fiktívek, és bármilyen egybeesés valódi szervezetek nevével véletlen.

Tehát, készítünk egy botot, amely ellát minket okos gondolatokkal. Pont olyat, mint a képen:

Telegram-bot építése a Yandex.Cloud-on

Ki tudod próbálni — itt van a neve: @SmartThoughtsBot. Észrevetted a gombot? „Alisa készsége”? Это потому, что бот является своеобразным «компаньоном» для одноименного Alisa készsége, vagyis ugyanazokat a funkciókat látja el, mint Alisa készsége , és lehet, hogy ők békésen együtt tudnak létezni, reklámozva egymást. Arról, hogyan hozz létre egy Okos Gondolatok készséget a cikkben van szó Alisa megtanul egy készséget. Jelenleg (miután néhány módosítást hajtottunk végre a fent említett cikk közzététele után) ezen a smartphone-on ez a készség körülbelül így fog kinézni:

Telegram-bot építése a Yandex.Cloud-on

Bot létrehozása

Szeretném, ha ez a bemutató mindenki számára hasznos lenne, beleértve a kezdő „bottörténeteket” is. Ezért ebben a részben részletesen leírom, hogyan is készíthetünk Telegrambotokat a ‘e eszközökkel. Akiknek erre az információra nincs szüksége — lépjen a következő szakaszokra.

Megnyitjuk az Telegaram alkalmazást, hívjuk a botok apját (mindenkinek van apja) — @BotFather — és először adjunk neki parancsot /help, hogy felfrissítsük az emlékezetünket, mit is tehetünk. Jelenleg a következő parancs fog érdekelni /newbot.

Telegram-bot építése a Yandex.Cloud-on

Mivel a leírt bot meg van már, bemutató célokra rövid időre létrehozok egy másik botot (aztán eltávolítom). A nevét adom: DemoHabrBot. A nevek (username) minden telegram-botnak a következő szóval kell végződnie bot, például: MyCoolBot vagy my_cool_bot — ez botoknak szól. De először adjunk a botnak nevet (name) — ez az embereknek szól. A név lehet bármilyen nyelvű, tartalmazhat szóközöket, nem muszáj befejeződnie a szóval bot, és még egyedi sem kell, hogy legyen. Ebben a példában ezt a botot Demo Habr-nak neveztem el.

Telegram-bot építése a Yandex.Cloud-on

Most válasszuk ki a botunk nevét (username, ami a botok számára készült). Hívjuk őt DemoHabrBot. Minden, ami a bot nevére vonatkozik (name) egyáltalán nem vonatkozik a nevére — username (vagy vonatkozik, de pont ellenkezőleg). Miután sikeresen létrehoztuk a bot egyedi nevét, másolnunk kell és meg kell őriznünk (szigorúan titokban!) a képernyőn piros nyíllal megjelenített tokent. Ezzel fogjuk később beállítani a Telegram‘a webhookot a Yandex-funkcióhoz.

Telegram-bot építése a Yandex.Cloud-on

Most adjuk ki a parancsot a botok atyjáról: /mybots, és ő megmutatja nekünk a létrehozott botjaink listáját. Hagyjuk most pihenni a friss botunkat Demo Habr-nak neveztem el (ami azért jött létre, hogy megmutassa, hogyan lehet botokat létrehozni, de ma még más demonstrációs célokra is felhasználjuk), és nézzük meg a botot Okos Gondolatok (@SmartThoughtsBot). Kattintsunk a botok listájában a nevére.

Telegram-bot építése a Yandex.Cloud-on

Itt beállíthatjuk a botunkat. A Szerkesztés… gombra kattintva a különböző opciók szerkesztésére lépünk. Például, ha eltesszük a gombot Név szerkesztése , megváltoztathatjuk a bot nevét, mondjuk, a Okos Gondolatok, írjuk át Zavart Ötletek. Botpic — ez a bot avatárja, legalább 150 x 150 px. Leírás — ez egy rövid leírás, amit a felhasználó lát, amikor először elindítja a botot, válaszként a kérdésre: Mit tud csinálni ez a bot? Rólunk — még rövidebb leírás, amely a bot linkjével együtt kerül átadásra (https://t.me/SmartThoughtsBot) vagy amikor a róla szóló információt nézik.

Telegram-bot építése a Yandex.Cloud-on

Csak a parancsokat kell beállítanunk. Ehhez kattintson a Parancsok szerkesztésegombra. A felhasználói gyakorlat standardizálásához Telegram ajánlott mindig két parancsot használni: /start és /help, és ha a botnak beállításokra van szüksége — egy további parancsot /beállítások. A botunk egyszerű, mint a labda, ezért neki egyelőre nincsenek szükséges beállításai. Megadjuk az első két parancsot, amelyeket később a kódban feldolgozunk. Most, ha a felhasználó a bemeneti mezőbe beír egy perjelet (/) a parancsok listája megjelenik a gyors választáshoz. Minden úgy van, ahogy a képen: bal oldalon, a bot atyán keresztül állítjuk be a parancsokat; jobbra, ezek a parancsok már elérhetők a felhasználók számára a botunkban.

Telegram-bot építése a Yandex.Cloud-on

Yandex-funkció

Most, hogy a botunk létrejött, lépjünk a Yandex.Cloud-hoz, hogy létrehozzunk egy funkciót, amely végrehajtja botunk kódját. Ha még nem dolgoztál a Yandex.Cloud-dal , olvasd el az anyagot Alíz a Bitrix országában, majd — A Yandex-funkciók e-maileket küldenek. Szinte biztos vagyok benne, hogy ez a két viszonylag rövid cikk elegendő lesz számodra a téma alapjainak megértéséhez.

Tehát a konzolban a Yandex.Cloud-ban a bal oldali navigációs menüben választhatjuk a Cloud Functions, majd rákattintunk a Funkció létrehozása. Adjunk neki nevet, és készítsünk egy rövid leírást magunknak.

Telegram-bot építése a Yandex.Cloud-on

A gomb megnyomása után Létrehozás és néhány másodperces várakozás után az új funkció megjelenik az összes funkció listájában. Kattintsunk a nevére — ez átirányít bennünket a Áttekintés a funkciónkról. Itt be kell kapcsolni (Be) a kapcsolót Nyilvános funkció, hogy az elérhető legyen a külső (a a Yandex.Cloud-ban) világ számára, és az Hívás link és Azonosító — titokban tartani mindenki elől, kivéve önmagadat és a Telegram-ot, hogy a funkciódat ne tudják különböző csalók hívni.

Telegram-bot építése a Yandex.Cloud-on

Most a bal oldali menü segítségével lépjünk a Funkciószerkesztő . Jelenleg egy rövid időre félretehetjük a Okos Gondolatok, és készítsünk egy minimális sablon funkciót, hogy ellenőrizzük botunk működését… Mindenesetre, ebben a kontextusban ez a funkció a botunk... Röviden, most és itt készítünk egy legegyszerűbb botot, amely „tükrözi” (azaz visszaküldi) a felhasználói kéréseket. Ezt a sablont mindig használhatjuk új Telegram-botok létrehozásakor, hogy megbizonyosodjunk arról, hogy a kapcsolat a Telegram-malrendesen működik. Kattintsunk a Fájl létrehozása, nevezzük el index.js, és az online Kódeditorban illesszük 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 ennek így kell kinéznie:

Telegram-bot építése a Yandex.Cloud-on

Ezután kicsit lejjebb megadjuk Belépési pont — index.bot, ahol index ez a fájl neve (index.js). Ezeknek az értékeknek a tudása lehetővé teszi számunkra, hogy megoldjuk az egyenletet bot — a funkció neve (module.exports.bot). Minden egyéb mezőt „hagyjunk úgy, ahogyan van”, és a jobb felső sarokban kattintsunk a Verzió létrehozásagombra. Néhány másodperc múlva létrejön ez a funkció verzió. Hamarosan, a webhook tesztelése után , létrehozunk egy új verziót —, létrehozunk egy új verziót — Okos Gondolatok.

Telegram-bot építése a Yandex.Cloud-on

Objektumtároló

Most már, hogy létrehoztuk Yandex-funkció, nézzük, mivel vagyunk a konzolban a Yandex.Cloud-ban, létrehozunk egy úgynevezett tárolót (tároló, azaz vödör magyarul, de nem csokor) a képfájlok tárolására, amelyeket a botunk használni fog Okos Gondolatok. A bal oldali navigációs menüben válassza a Object Storagepontot, majd kattintson a Tároló létrehozása, adjunk neki nevet, például, img-tároló, és ami a legfontosabb, Az objektumok olvasási hozzáférését tegyük nyilvánossá — különben a Telegram nem fogja látni a képeinket. Az összes többi mezőt hagyja változatlanul. Kattintson a Tároló létrehozása.

Telegram-bot építése a Yandex.Cloud-on

Ezután az összes tároló listája körülbelül így nézhet ki (ha ez az egyetlen tárolója):

Telegram-bot építése a Yandex.Cloud-on

Most javaslom, hogy kattintson a tároló nevére, és belül hozzon létre egy mappát, hogy rendszerezze a képek tárolását a különböző alkalmazásaihoz. Például a Telegram-bothoz Okos Gondolatok létrehoztam egy mappát, amelynek neve tg-bot-okos-gondolatok (semmi, értem ezt a kódot). Ön is hozzon létre egyet.

Telegram-bot építése a Yandex.Cloud-on

Most már kattintson a mappa nevére, lépjen be, és töltse fel a fájlokat:

Telegram-bot építése a Yandex.Cloud-on

És a fájl nevére kattintva — megkaphatja azt URL a botunk számára, és egyáltalán — bárhol (de ne tegye közzé ezt az URL szükségtelenül, mivel a forgalom az Objektumtároló költségekkel jár).

Telegram-bot építése a Yandex.Cloud-on

Ez lényegében minden a Objektumtárolóról. Most már tudni fogja, mit tegyen, amikor meglát egy felhívást, hogy töltsön fel fájlokat oda.

Webhook

Most beállítjuk a webhookot — azaz, amikor a bot frissítést kap (például egy üzenetet egy felhasználótól), akkor a szervertől Telegram a miénkhez Yandex-funkcióhoz kérés (request) érkezik az adatokkal. Itt van egy vonal, amit egyszerűen beilleszthet a böngésző címsorába, majd frissítse az oldalt (ezt egyszer kell megtenni): https://api.telegram.org/bot{bot_token}/setWebHook?url={webhook_url}
Csak cserélje ki {bot_token} a botunktól kapott tokenünkre, amit a botunk létrehozásakor kaptunk, és a {webhook_url} — a URL miénk. Yandex-funkciókEgy pillanat! De hát RosKomCenzúr tiltja a szolgáltatókat Oroszországban, hogy kezeljék a címet https://api.telegram.org. Igen, helyes. De Ön találjon ki valamit. Hiszen lehet például kérni egy nagymamát Ukrajnában, Izraelben vagy Kanadában — ott nincsenek „orosz cenzúrák”, és egyedül Isten tudja, hogyan élnek az emberek e nélkül. Végül is, a webhook beállításakor a kérés-válasz ennek így kell kinéznie:

Telegram-bot építése a Yandex.Cloud-on

Teszteljük. „tükörképnek” kell lennie.

Telegram-bot építése a Yandex.Cloud-on

Így van. Gratulálunk — most Yandex-funkció lett Telegram-bot!

Okos Gondolatok

Most pedig készítsünk Okos Gondolatokat. A kód nyitva van és megtalálható a GitHub. Jól kommentált, és mindössze száz sor. Olvassa el, mint egy operaénekes a librettót!

Telegram-bot építése a Yandex.Cloud-on

Klónozd a projektet és állítsd be a függőségeket:

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

Hozd létre a szükséges változtatásokat a fájlban index.js (opcionális; nem szükséges változtatás). Hozd létre a zip-archívumot, a fájllal index.js és a mappával node_modules belül, például a következő néven smart.zip.

Telegram-bot építése a Yandex.Cloud-on

Most lépj a konzolban a Yandex-funkciók, válaszd a következő lapot ZIP-archívum, kattints a Fájl kiválasztása, és töltsd fel az archívumot smart.zip. Végül, a jobb felső sarokban kattints a Verzió létrehozása.

Telegram-bot építése a Yandex.Cloud-on

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

Telegram-bot építése a Yandex.Cloud-on

Ennyi mára. További cikkek következnek. Akik hasonlókat érdekelnek - iratkozzanak fel az új cikkek értesítéseire. Feliratkozni itt lehet, vagy a Telegram-csatornára IT Tutorial Zahar, vagy vagy a @mikezaharov.

Hivatkozások

Kód GitHubon
Yandex Cloud Functions
Yandex Object Storage
Bots: Bevezetés fejlesztőknek
Telegram Bot API

Adományok

Telegram-bot építése a Yandex.Cloud-on

Forrás: habr.com

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster