Poradnik: jak zrobić prostego bota Telegrama w JS dla początkującego w programowaniu

Zacząłem zanurzać się w świat IT zaledwie trzy tygodnie temu. A tak na serio, trzy tygodnie temu nie rozumiałem nawet składni HTML, a moje wprowadzenie do języków programowania zakończyło się szkolnym programem nauczania na Pascalu sprzed 10 lat. Zdecydowałem się jednak pojechać na obóz IT, gdzie fajnie byłoby, gdyby dzieci stworzyły bota. Zdecydowałem, że to wcale nie jest takie trudne.

To rozpoczęło długą podróż, podczas której:

  • wdrożyłem serwer chmurowy z Ubuntu,
  • zarejestrowany na GitHubie,
  • poznałem podstawową składnię JavaScript,
  • przeczytaj mnóstwo artykułów w języku angielskim i rosyjskim,
  • w końcu zrobiłem bota,
  • W końcu napisałem ten artykuł.

Ostateczny wynik wyglądał mniej więcej tak:

Poradnik: jak zrobić prostego bota Telegrama w JS dla początkującego w programowaniu

Od razu powiem, że jest to artykuł dla początkujących - żeby zrozumieć, jak zrobić podstawowe rzeczy od zera.

A także – dla zaawansowanych programistów – żeby choć trochę ich rozśmieszyć.

1. Jak pisać kod w JS?

Zrozumiałem, że warto najpierw chociaż zrozumieć składnię języka. Wybór padł na JavaScript, bo kolejnym krokiem było dla mnie stworzenie aplikacji w ReactNative. Zacząłem od kurs na Codecademy i byłem bardzo zachwycony. Pierwsze 7 dni jest bezpłatne. Prawdziwe projekty. Polecam. Ukończenie jej zajęło około 25 godzin. Tak naprawdę nie wszystko było przydatne. Tak wygląda struktura kursu i szczegółowo pierwszy blok.

Poradnik: jak zrobić prostego bota Telegrama w JS dla początkującego w programowaniu

2. Jak zarejestrować bota?

Na początku bardzo mi to pomogło ten artykuł z bloga niejakiego Archakova. Przeżuwa już sam początek. Ale najważniejszą rzeczą jest instrukcja rejestracji bota. Lepiej tego nie napiszę, a ponieważ to najłatwiejsza część, napiszę tylko sedno. Musisz stworzyć bota i uzyskać jego API. Odbywa się to za pośrednictwem innego bota - @BotFather. Znajdź go na telegramie, napisz do niego, podążaj prostą ścieżką i zdobądź (zapisz!) klucz API (jest to zestaw cyfr i liter). Przydało się to później.

Poradnik: jak zrobić prostego bota Telegrama w JS dla początkującego w programowaniu

3. Jak wygląda kod bota?

Po dłuższym studiowaniu artykułów zdałem sobie sprawę, że warto skorzystać z jakiejś biblioteki (kod innej firmy w formacie modułowym), aby nie martwić się studiowaniem API Telegramu i tworzeniem od zera dużych fragmentów kodu. Znalazłem ramy telegraf, który musiał być w jakiś sposób połączony z czymś za pomocą npm lub przędzy. Mniej więcej tak zrozumiałem wówczas, na czym polega wdrożenie bota. Śmiej się tutaj. Nie będę urażony. Przykłady na dole strony najbardziej pomogły mi podczas późniejszego tworzenia bota:

Poradnik: jak zrobić prostego bota Telegrama w JS dla początkującego w programowaniu

3. Jak stworzyć własny serwer w chmurze za 100 rubli

Po wielu poszukiwaniach zdałem sobie sprawę, że polecenie „npm” na powyższym obrazku odnosi się do wiersza poleceń. Linia poleceń jest wszędzie, ale aby móc ją wykonać, musisz zainstalować NodePackageManager. Problem polegał na tym, że programowałem na PixelBooku z ChromeOS. Pominę tutaj duży blok o tym jak nauczyłem się Linuksa - dla większości jest on pusty i niepotrzebny. Jeśli masz system Windows lub MacBooka, masz już konsolę.

Krótko mówiąc, zainstalowałem Linuksa przez Crostini.

Jednak w trakcie zdałem sobie sprawę, że aby bot mógł pracować stale (a nie tylko wtedy, gdy mój komputer jest włączony), potrzebuję serwera w chmurze. wybieram vsscale.io Wydałem 100 rubli i kupiłem najtańszy serwer Ubuntu (patrz zdjęcie).

Poradnik: jak zrobić prostego bota Telegrama w JS dla początkującego w programowaniu

4. Jak przygotować serwer do uruchomienia bota

Potem zdałem sobie sprawę, że muszę stworzyć na serwerze jakiś folder, w którym umieściłbym plik z tekstem kodu. W tym celu w konsoli (uruchomionej bezpośrednio na stronie poprzez przycisk „Otwórz konsolę”) wpisałem

mkdir bot

bot - taka stała się nazwa mojego folderu. Następnie zainstalowałem npm i Node.js, co pozwoli mi następnie uruchomić kod z plików o rozdzielczości *.js

sudo apt update
sudo apt install nodejs
sudo apt install npm

Gorąco polecam skonfigurowanie na tym etapie połączenia z serwerem za pośrednictwem konsoli. Tutaj instrukcja Umożliwi to pracę z serwerem bezpośrednio poprzez konsolę Twojego komputera.

5. Jak napisać kod dla swojego pierwszego bota.

Ale teraz jest to dla mnie tylko odkrycie. Każdy program to tylko linie tekstu. Można je wstawić w dowolnym miejscu, zapisać z żądanym rozszerzeniem i to wszystko. Jesteś piękna. użyłem Atom, ale w rzeczywistości możesz po prostu pisać w standardowym notatniku. Najważniejsze jest, aby zapisać plik później w żądanym rozszerzeniu. To jak pisanie tekstu w programie Word i zapisywanie go.

Zrobiłem nowy plik, do którego wstawiłem kod z przykładu na stronie telegrafu i zapisałem go w pliku Index.js (w zasadzie nie ma potrzeby nadawania takiej nazwy pliku, ale jest to w zwyczaju). Ważne - zamiast BOT_TOKEN wstaw swój klucz API z drugiego akapitu.

const Telegraf = require('telegraf')

const bot = new Telegraf(process.env.BOT_TOKEN)
bot.start((ctx) => ctx.reply('Welcome!'))
bot.help((ctx) => ctx.reply('Send me a sticker'))
bot.on('sticker', (ctx) => ctx.reply(''))
bot.hears('hi', (ctx) => ctx.reply('Hey there'))
bot.launch()

6. Jak wgrać kod na serwer poprzez github

Teraz musiałem w jakiś sposób przesłać ten kod na serwer i uruchomić go. Stało się to dla mnie wyzwaniem. W rezultacie po wielu trudach zdałem sobie sprawę, że łatwiej byłoby stworzyć na githubie plik, który umożliwi aktualizację kodu za pomocą polecenia w konsoli. Zarejestrowałem konto na GitHub I zrobił nowy projekt, gdzie przesłałem plik. Następnie musiałem wymyślić, jak skonfigurować przesyłanie plików z mojego konta (otwarte!) na serwer w folderze bot (jeśli nagle go opuścisz, po prostu napisz cd bot).

7. Jak przesłać pliki na serwer poprzez github część 2

Potrzebowałem zainstalować na serwerze program, który będzie pobierał pliki z gita. Zainstalowałem git na serwerze, wpisując w konsoli

apt-get install git

Następnie musiałem skonfigurować przesyłanie plików. Aby to zrobić, wpisałem w wierszu poleceń

git clone git://github.com/b0tank/bot.git bot

W rezultacie wszystko z projektu zostało przesłane na serwer. Błąd na tym etapie polegał na tym, że zasadniczo utworzyłem drugi folder w już istniejącym folderze bota. Adres pliku wyglądał następująco: */bot/bot/index.js

Postanowiłem zignorować ten problem.

A aby załadować bibliotekę telegraf, o którą prosimy w pierwszej linii kodu, wpisz polecenie w konsoli.

npm install telegraf

8. Jak uruchomić bota

W tym celu będąc w folderze z plikiem (aby przenieść się z folderu do folderu za pomocą konsoli, uruchom polecenie format cd bot Aby mieć pewność, że jesteś tam, gdzie trzeba, możesz wpisać komendę, która wyświetli w konsoli wszystkie pliki i foldery, które się tam znajdują ls -a

Na początek wszedłem do konsoli

node index.js

Jeśli nie ma błędu, wszystko jest w porządku, bot działa. Szukaj go na telegramie. Jeśli pojawi się błąd, zastosuj wiedzę z punktu 1.

9. Jak uruchomić bota w tle

Dość szybko zorientujesz się, że bot działa tylko wtedy, gdy sam siedzisz w konsoli. Aby rozwiązać ten problem, użyłem polecenia

screen

Następnie pojawi się ekran z tekstem. Oznacza to, że wszystko jest w porządku. Jesteś na serwerze wirtualnym na serwerze w chmurze. Aby lepiej zrozumieć, jak to wszystko działa - tutaj jest artykuł. Wystarczy przejść do swojego folderu i wpisać polecenie, aby uruchomić bota

node index.js

10. Jak działa bot i jak rozszerzyć jego funkcjonalność

Co potrafi nasz przykładowy bot? On może

bot.start((ctx) => ctx.reply('Welcome!'))

powiedz „Witamy!” w momencie rozpoczęcia (spróbuj zmienić tekst)

bot.help((ctx) => ctx.reply('Send me a sticker'))

w odpowiedzi na standardowe polecenie /help wyślij wiadomość „Wyślij mi naklejkę”

bot.on('sticker', (ctx) => ctx.reply(''))

wyślij zgodę w odpowiedzi na naklejkę

bot.hears('hi', (ctx) => ctx.reply('Hey there'))

odpowiedz „Hej”, jeśli napiszą do niego „cześć”.
bot.launch()

Poradnik: jak zrobić prostego bota Telegrama w JS dla początkującego w programowaniu

Jeśli spojrzysz na kod na GitHub, to szybko zrozumiesz, że nie odszedłem zbyt daleko od tej funkcjonalności. Aktywnie używana jest funkcja ctx.replyWithPhoto Umożliwia wysłanie określonego zdjęcia lub gifa w odpowiedzi na konkretny tekst.

Znaczna część kodu została napisana przez dzieci w wieku 11-13 lat, którym dałem dostęp do bota. Weszli do swojego przypadku użytkownika. Myślę, że łatwo jest stwierdzić, która część została przez nich wykonana.

Na przykład wiadomość „Jake” otrzyma GIF ze słynną postacią z kreskówki Pora na przygodę.

Poradnik: jak zrobić prostego bota Telegrama w JS dla początkującego w programowaniu

Aby dalej rozwijać bota należy podłączyć klawiaturę, zobacz przykłady np. stąd

11. Jak zaktualizować kod i zrestartować bota

Nie zapominaj, że musisz zaktualizować kod nie tylko na githubie, ale także na serwerze. Jest to łatwe do zrobienia - zatrzymaj bota (wciśnij ctrl+c),

- wejdź do konsoli będąc w folderze docelowym, git pull
— ponownie uruchamiamy bota za pomocą komendy node index.js

KONIEC

Wiele rzeczy opisanych w tym pliku będzie bardzo oczywistych dla zaawansowanych programistów. Kiedy jednak sam próbowałem za jednym zamachem przeskoczyć przepaść do świata botów, bardzo brakowało mi takiego poradnika. Poradnik, w którym nie brakuje rzeczy oczywistych i prostych dla każdego informatyka.

W przyszłości planuję post o tym jak zrobić swoją pierwszą aplikację na ReactNative w tym samym stylu, subskrybuj!

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

Dodaj komentarz