Budowa bota Telegram w Yandex.Cloud

Budowa bota Telegram w Yandex.Cloud

Dzisiaj z improwizowanych materiałów zbierzemy Yandex.Cloud Bot telegramowy za pomocą Funkcje chmury Yandex (or Funkcje Yandexa dla zwięzłości) i Obiektowa pamięć masowa Yandex (or Przechowywanie obiektów - dla jasności). Kod będzie włączony node.js. Jest jednak jedna pikantna okoliczność - pewna organizacja o nazwie, powiedzmy, RossKomCenzura (cenzura jest zabroniona przez art. 29 Konstytucji Federacji Rosyjskiej), nie zezwala dostawcom Internetu w Rosji na przesyłanie żądań do Telegram API по адресу: https://api.telegram.org/. Cóż, nie będziemy - nie, nie. Rzeczywiście, w naszej torbie znajdują się tzw. webhooki - za ich pomocą nie wysyłamy próśb pod konkretny adres, a jedynie wysyłamy naszą prośbę jako odpowiedź na jakąkolwiek prośbę skierowaną do nas. Czyli jak w Odessie - na pytanie odpowiadamy pytaniem. Dlatego Telegram API nie pojawi się w naszym kodzie.

Zrzeczenie sięNazwy wszelkich organizacji państwowych wymienionych w tym artykule są fikcyjne, a ewentualne zbieżności z nazwami prawdziwych organizacji są przypadkowe.

Stworzymy więc bota, który dostarczy nam mądrych myśli. Dokładnie tak jak na zdjęciu:

Budowa bota Telegram w Yandex.Cloud

Możesz spróbować w akcji - oto nazwa: @SmartThoughtsBot. Zwróć uwagę na przycisk „Umiejętności Alicji”? Dzieje się tak, ponieważ bot jest swego rodzaju „towarzyszem” dla tytułowego umiejętności Alicji, tj. pełni te same funkcje co umiejętności Alicji i być może, że mogą pokojowo współistnieć, reklamując się nawzajem. O tym, jak tworzyć Umiejętność inteligentnego myślenia opisane w artykule Alicja zdobywa umiejętność. Teraz (po wprowadzeniu pewnych zmian po publikacji powyższego artykułu) na smartfonie to umiejętność będzie wyglądać mniej więcej tak:

Budowa bota Telegram w Yandex.Cloud

Tworzenie botów

Chciałbym, aby ten poradnik przydał się każdemu, m.in. i początkujący „konstruktorzy botów”. Dlatego w tej sekcji opiszę bardziej szczegółowo, jak ogólnie tworzyć w Telegrami boty. Dla tych, którzy nie potrzebują tych informacji, przejdź do następnych sekcji.

Otwórz aplikację Telegaram, nazywamy ojcem wszystkich botów (mają wszystko jak ludzie) - @OjciecZwierzchnik - i na początek wydamy mu komendę / help, aby odświeżyć sobie pamięć o tym, co potrafimy. Teraz interesuje nas zespół / newbot.

Budowa bota Telegram w Yandex.Cloud

Ponieważ opisany tutaj bot został już stworzony, w celach demonstracyjnych stworzę na krótki czas innego bota (potem go usunę). Zadzwonię do niego DemoHabrBota. Nazwy (nazwa użytkownika) wszystkich telegramów musi kończyć się słowem pyskna przykład: Mój CoolBot lub mój_fajny_bot To jest dla botów. Ale najpierw nadaj botowi nazwę (Nazwa) jest dla ludzi. Nazwa może być w dowolnym języku, zawierać spacje, nie musi kończyć się słowem pysk, a nawet nie musi być wyjątkowy. W tym przykładzie nazwałem tego bota Demo Habr.

Budowa bota Telegram w Yandex.Cloud

Teraz wybierz nazwę bota (nazwa użytkownika, ten dla botów). nazwijmy to DemoHabrBota. Wszystko związane z nazwą bota (Nazwa) w ogóle nie jest spokrewniony z jego imieniem - nazwa użytkownika (lub dotyczy, ale dokładnie odwrotnie). Po pomyślnym utworzeniu unikalnej nazwy bota musimy skopiować i zapisać (w najściślejszej tajemnicy!) Token pokazany na zrzucie ekranu z czerwoną strzałką. Z jego pomocą później zainstalujemy wychodzące Telegram„webhook do naszego Funkcja Yandex.

Budowa bota Telegram w Yandex.Cloud

A teraz wydamy polecenie ojcu wszystkich botów: /mybotyi pokaże nam listę wszystkich botów, które stworzyliśmy. Zostawmy na razie świeżo upieczonego bota w spokoju Demo Habr (został stworzony, aby pokazać, jak tworzyć boty, ale użyjemy go dzisiaj do innych celów demonstracyjnych) i rozważ bota Inteligentne myśli (@SmartThoughtsBot). Kliknij przycisk z jego nazwą na liście botów.

Budowa bota Telegram w Yandex.Cloud

Tutaj możemy ustawić naszego bota. Naciśnięcie przycisku Edytować… przejdziemy do edycji jednej lub drugiej opcji. Na przykład, klikając przycisk Edytuj imię możemy zmienić nazwę bota, powiedzmy zamiast Inteligentne myśli, pisać szalone pomysły. Botpic - to jest awatar bota, musi być co najmniej 150 150 x px. Opis to krótki opis, który widzi użytkownik przy pierwszym uruchomieniu bota, jako odpowiedź na pytanie: Co może zrobić ten bot? O nas - jeszcze krótszy opis, który jest przekazywany z linkiem do bota (https://t.me/SmartThoughtsBot) lub podczas przeglądania informacji o nim.

Budowa bota Telegram w Yandex.Cloud

Musimy tylko skonfigurować komendy. Aby to zrobić, naciśnij przycisk Edytuj polecenia. Aby ujednolicić praktyki użytkowników Telegram zaleca zawsze używanie dwóch poleceń: / start и /Wsparcie, a jeśli bot potrzebuje ustawień, dodatkowe polecenie /settings. Nasz bot jest tak prosty jak piłka, więc nie wymaga jeszcze żadnych ustawień. Piszemy pierwsze dwa polecenia, które następnie będziemy przetwarzać w kodzie. Teraz, jeśli użytkownik wprowadzi ukośnik (znak ukośnika: /) w polu wprowadzania, pojawi się lista poleceń do szybkiego wyboru. Wszystko jest jak na obrazku: po lewej - ustawiamy komendy przez bota-ojca; po prawej te polecenia są już dostępne dla użytkowników w naszym bocie.

Budowa bota Telegram w Yandex.Cloud

Funkcja Yandex

Teraz, gdy nasz bot został utworzony, przejdźmy do Yandex.Cloudstworzyć funkcję, która wykona nasz kod bota. Jeśli nie pracowałeś z Yandex.Cloud przeczytaj materiał Alicja w krainie Bitrix, i wtedy - Funkcje Yandex wysyłają pocztę. Jestem prawie pewien, że te dwa stosunkowo niewielkie artykuły wystarczą, aby mieć podstawową wiedzę na ten temat.

Tak w konsoli Yandex.Clouds w lewym menu nawigacyjnym wybierz element Funkcje chmury, a następnie naciśnij przycisk Utwórz funkcję. Nadajemy mu nazwę, a dla siebie - krótki opis.

Budowa bota Telegram w Yandex.Cloud

Po naciśnięciu przycisku Utworzyć a po kilku sekundach nowa funkcja pojawi się na liście wszystkich funkcji. Kliknij na jej imię - to przeniesie nas na stronę Przegląd nasza funkcja. Tutaj musisz włączyćOn) przełącznik funkcja publicznaaby udostępnić go z zewnątrz (np Yandex.Clouds) świata i wartości pól Link do połączenia и ID - trzymaj to w głębokiej tajemnicy przed wszystkimi oprócz siebie i Telegrama, aby różni oszuści nie mogli wywołać twojej funkcji.

Budowa bota Telegram w Yandex.Cloud

Teraz za pomocą lewego menu przejdź do Redaktor Funkcje. Odłóżmy na chwilę nasze Inteligentne myśli, i stworzyć minimalną funkcję szablonu, aby sprawdzić wydajność naszego bota… Jednak w tym kontekście ta funkcja jest naszym botem… Krótko mówiąc, teraz i tutaj stworzymy najprostszego bota, który będzie „lustrzany” ( tj. odeślij ) prośby użytkowników. Ten szablon może być zawsze używany podczas tworzenia nowych botów telegramowych, aby upewnić się, że komunikacja z Telegram'om działa dobrze. Kliknij Utwórz plik, nazwać indeks.jsi on-line Edytor kodu wklej następujący kod do tego pliku:

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

W konsoli Yandex.Cloud powinno to wyglądać mniej więcej tak:

Budowa bota Telegram w Yandex.Cloud

Poniżej wskazujemy Punkt wejścia - indeks.botGdzie wskaźnik to jest nazwa pliku (indeks.js) i pysk - nazwa funkcji (moduł.eksport.bot). Pozostaw wszystkie pozostałe pola „tak jak są”, aw prawym górnym rogu kliknij przycisk Utwórz wersję. Po kilku sekundach ta wersja funkcji zostanie utworzona. Niedługo po testach webhook, stworzymy nową wersję − Inteligentne myśli.

Budowa bota Telegram w Yandex.Cloud

Przechowywanie obiektów

Teraz, kiedy mamy ustawione Funkcja Yandexchodźmy, gdy jesteśmy w konsoli Yandex.Clouds, stworzyć tzw. wiaderko (wiadro, tj. wiadro po rosyjsku, bynajmniej nie bukiet) do przechowywania plików graficznych, które będą używane w naszym bocie Inteligentne myśli. Wybierz z menu nawigacyjnego po lewej stronie Przechowywanie obiektów, naciśnij przycisk Utwórz zasobniknadaj mu nazwę, np. img-wiadro, i co najważniejsze, Dostęp do odczytu obiektów upublicznij - inaczej Telegram nie zobaczy naszych zdjęć. Wszystkie pozostałe pola pozostają niezmienione. Wciskamy przycisk Utwórz zasobnik.

Budowa bota Telegram w Yandex.Cloud

Następnie lista wszystkich zasobników może wyglądać mniej więcej tak (jeśli jest to Twój jedyny zasobnik):

Budowa bota Telegram w Yandex.Cloud

Teraz proponuję kliknąć nazwę wiadra i utworzyć w nim folder, aby zorganizować przechowywanie zdjęć dla różnych aplikacji. Na przykład dla bota telegramu Inteligentne myśli utworzyłem folder o nazwie tg-bot-inteligentne myśli (Nic, zrozumiem ten szyfr). Utwórz też jeden.

Budowa bota Telegram w Yandex.Cloud

Teraz możesz kliknąć nazwę folderu, wejść do niego i przesłać pliki:

Budowa bota Telegram w Yandex.Cloud

I klikając nazwę pliku - pobierz URL do użytku w naszym bocie i ogólnie - w dowolnym miejscu (ale nie publikuj tego URL niepotrzebnie, ponieważ ruch z przechowywanie obiektów naładowany).

Budowa bota Telegram w Yandex.Cloud

Tutaj właściwie to wszystko przechowywanie obiektów. Teraz będziesz wiedział, co zrobić, gdy zobaczysz monit o przesłanie tam plików.

Webhook

Teraz zainstalujemy webhook - tj. gdy bot otrzyma aktualizację (na przykład wiadomość od użytkownika) z serwera Telegram do naszego Funkcja Yandex żądanie zostanie wysłanezażądać) z danymi. Oto ciąg znaków, który możesz po prostu wkleić w polu adresu przeglądarki, a następnie odświeżyć stronę (trzeba to zrobić tylko raz): https://api.telegram.org/bot{bot_token}/setWebHook?url={webhook_url}
Po prostu wymień {bot_token} do tokena, który otrzymaliśmy od bota-ojca podczas tworzenia naszego bota i {webhook_url} - wł URL nasz Funkcje Yandexa. Poczekaj minutę! Ale RossKomCenzura zabrania dostawcom w Federacji Rosyjskiej obsługi adresu https://api.telegram.org. Tak to prawda. Ale możesz coś wymyślić. Przecież można np. zapytać o to babcię na Ukrainie, w Izraelu czy w Kanadzie – tam nie ma „rosyjskiej cenzury” i tylko Bóg jeden wie, jak ludzie bez niej żyją. W rezultacie żądanie-odpowiedź podczas instalacji webhooka powinno wyglądać tak:

Budowa bota Telegram w Yandex.Cloud

Testowanie. Powinien być lustrzany.

Budowa bota Telegram w Yandex.Cloud

To prawda. Nasze gratulacje - teraz Funkcja Yandex stał Telegram-nerw!

Inteligentne myśli

A teraz robimy Inteligentne Myśli. Kod jest otwarty i leży dalej GitHub. Jest dość dobrze skomentowany i ma tylko sto linijek. Czytaj to jak libretto divy operowej!

Budowa bota Telegram w Yandex.Cloud

Sklonuj projekt i zainstaluj zależności:

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

Wprowadź potrzebne zmiany w pliku indeks.js (opcjonalnie; nie można niczego zmienić). Tworzyć zamek błyskawiczny-archiwum, z plikiem indeks.js i folderu node_modules wewnątrz, na przykład tzw smart.zip.

Budowa bota Telegram w Yandex.Cloud

Teraz przejdź do konsoli do naszego Funkcje Yandexa, wybierz zakładkę Archiwum ZIP, naciśnij przycisk Wybierz pliki pobierz nasze archiwum smart.zip. Na koniec w prawym górnym rogu kliknij przycisk Utwórz wersję.

Budowa bota Telegram w Yandex.Cloud

Za kilka sekund, gdy funkcja zostanie zaktualizowana, ponownie przetestujemy naszego bota. Teraz już nie „odzwierciedla”, ale przekazuje inteligentne myśli!

Budowa bota Telegram w Yandex.Cloud

To wszystko na dzisiaj. Kolejne artykuły. Jeśli chcesz to przeczytać, zapisz się na powiadomienia o nowych artykułach. Możesz zapisać się tutaj lub Telegram-kanał Samouczek IT ZakharLub Twitter @mikezaharov.

referencje

Kod na GitHubie
Funkcje chmury Yandex
Obiektowa pamięć masowa Yandex
Boty: wprowadzenie dla programistów
Interfejs API bota telegramu

Darowizny

Budowa bota Telegram w Yandex.Cloud

Źródło: www.habr.com

Dodaj komentarz