Poradnik: jak stworzyć prostego bota do Telegrama na JS dla początkującego programisty

Zacząłem zanurzać się w świat IT zaledwie trzy tygodnie temu. Naprawdę, trzy tygodnie temu nawet nie rozumiałem składni HTML, a moja znajomość języków programowania ograniczała się do szkolnego programu z Pascalem sprzed 10 lat. Postanowiłem jednak pojechać na oboz IT, gdzie dla dzieci było by fajnie zrobić bota. Uznałem, że to raczej nie jest tak trudne.

Od tego zaczęła się długa droga, w ramach której ja:

  • uruchomiłem serwer chmurowy z Ubuntu,
  • zarejestrowałem się na GitHubie,
  • nauczyłem się podstawowej składni JavaScriptu,
  • przeczytałem masę artykułów w języku angielskim i rosyjskim,
  • w końcu stworzyłem bota,
  • napisałem w końcu ten artykuł.

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

Poradnik: jak stworzyć prostego bota do Telegrama na JS dla początkującego programisty

Powiem od razu, że to artykuł dla początkujących – aby po prostu zrozumieć, jak robić podstawowe rzeczy od samego początku.

A ponadto – dla zaawansowanych programistów – aby ich trochę rozbawić.

1. Jak pisać kod w JS?

Rozumiałem, że warto na początku przynajmniej ogarnąć składnię języka. Wybór padł na JavaScript, po prostu dlatego, że kolejnym krokiem dla mnie było stworzenie aplikacji w ReactNative. Zacząłem od kursu na Codecademy i byłem bardzo zachwycony. Pierwsze 7 dni za darmo. Prawdziwe projekty. Polecam. Ukończenie go zajęło mi około 25 godzin. W rzeczywistości nie wszystko z niego mi się przydało. Tak mniej więcej wygląda struktura kursu oraz szczegółowo pierwszy blok.

Poradnik: jak stworzyć prostego bota do Telegrama na JS dla początkującego programisty

2. Jak zarejestrować bota?

Na początku bardzo pomogła mi ta artykuł z bloga pewnego Arczakowa. Rozwija podstawy. Ale najważniejsze, co tam jest – to instrukcja rejestracji bota. Lepiej nie napiszę, a ponieważ to najłatwiejsza część, po prostu opiszę sedno. Należy stworzyć bota i uzyskać jego API. To się robi przez innego bota – @BotFather. Znajdź go w telegramie, napisz do niego, przejdź prostą drogę i zdobądź (zapamiętaj!) klucz API (to zbiór cyfr i liter). Przydał mi się później.

Poradnik: jak stworzyć prostego bota do Telegrama na JS dla początkującego programisty

3. Jak wygląda kod bota?

Po długim studiowaniu artykułów, zrozumiałem, że warto użyć jakiejś biblioteki (zewnętrznego kodu w formacie modułu), aby nie męczyć się z nauką API telegramu i tworzeniem od zera dużych kawałków kodu. Znalazłem framework telegraf, który musiał być jakoś podłączony do czegoś przez npm lub yarn. Tak mniej więcej rozumiałem wtedy, z czego składa się wdrożenie bota. Możesz się z tego śmiać. Nie obrażę się. Najbardziej pomogły mi później przykłady podane na dole strony:

Poradnik: jak stworzyć prostego bota do Telegrama na JS dla początkującego programisty

3. Jak stworzyć własny serwer chmurowy za 100 zł

Po długich poszukiwaniach zrozumiałem, że komenda ‘npm’ z obrazka powyżej dotyczy wiersza poleceń. Wiersz poleceń jest wszędzie, ale żeby móc go uruchomić, trzeba zainstalować NodePackageManager. Problem polegał na tym, że programowałem na PixelBooku z ChromeOS. Pominę tutaj długi blok o tym, jak poznawałem Linuxa — dla większości to pustka i nic nieznaczące. Jeśli masz Windows lub MacBooka, masz już konsolę.

W skrócie, zainstalowałem Linuxa przez Crostini.

Jednak w trakcie zrozumiałem, że do ciągłej pracy bota (a nie tylko wtedy, gdy mam włączony komputer) potrzebny jest mi serwer chmurowy. Wybrałem vscale.io Wpłaciłem 100 zł, kupiłem najtańszy serwer Ubuntu (zobacz obrazek).

Poradnik: jak stworzyć prostego bota do Telegrama na JS dla początkującego programisty

4. Jak przygotować serwer do uruchomienia bota

Po tym zrozumiałem, że muszę utworzyć na serwerze jakąś folder, do którego wrzucę plik z kodem. W tym celu w konsoli (uruchamiaj bezpośrednio na stronie przez przycisk „Otwórz konsolę”) wpisałem

mkdir bot

bot — это стало название моей папки. После этого я установил npm и Node.js, что позволит запускать мне потом код из файликов с разрешением *.js

sudo apt update
sudo apt install nodejs
sudo apt install npm

Zalecam na tym etapie skonfigurowanie połączenia z serwerem przez swoją konsolę. Oto jak to zrobić: instrukcja To pozwoli na bezpośrednią pracę z serwerem z konsoli swojego komputera.

5. Jak napisać kod pierwszego bota.

A teraz prawdziwe odkrycie dla mnie. Każdy program to po prostu ciągi tekstu. Można je wpisać gdziekolwiek, zapisać pod odpowiednim rozszerzeniem i gotowe. Jesteś wspaniały. Użyłem Atom, ale tak naprawdę można po prostu pisać w zwykłym notatniku. Najważniejsze — pamiętaj, by później zapisać plik w odpowiednim rozszerzeniu. To jak napisanie tekstu w Wordzie i jego zapisanie.

Utworzyłem nowy plik, do którego wkleiłem kod z przykładu na stronie telegraf i zapisałem go jako index.js (w sumie nie trzeba nazywać pliku w ten sposób, ale tak jest w zwyczaju). Ważne — zamiast BOT_TOKEN wstaw swój klucz API z drugiego punktu.

const Telegraf = require('telegraf')

const bot = new Telegraf(process.env.BOT_TOKEN)
bot.start((ctx) => ctx.reply('Witaj!'))
bot.help((ctx) => ctx.reply('Wyślij mi naklejkę'))
bot.on('sticker', (ctx) => ctx.reply(''))
bot.hears('hi', (ctx) => ctx.reply('Cześć'))
bot.launch()

6. Jak wgrać kod na serwer przez github

Teraz musiałem w jakiś sposób wrzucić ten kod na serwer i go uruchomić. Dla mnie był to prawdziwy challenge. Ostatecznie, po wielu zmaganiach, zrozumiałem, że najprościej będzie stworzyć plik na githubie, który pozwoli na aktualizację kodu za pomocą polecenia w konsoli. Zarejestrowałem konto na github i zrobiłem nowy projekt, gdzie wrzuciłem plik. Następnie musiałem zrozumieć, jak skonfigurować przesyłanie plików z mojego konta (publicznego!) na serwer do folderu bot (jeśli przypadkiem z niego wyszedłeś — wystarczy wpisać cd bot).

7. Jak przesłać pliki na serwer przez github cz.2

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

apt-get install git

Następnie musiałem skonfigurować przesyłanie plików. W tym celu wpisałem w wierszu poleceń

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

В итоге все из проекта загрузилось на сервер. Ошибкой на данном этапе было, что я, по сути, сделал вторую папку внутри уже существующей папки bot. Адрес до файла выглядел как */bot/bot/index.js

Postanowiłem zignorować ten problem.

Aby dodać bibliotekę telegraf, którą żądaliśmy w pierwszej linii kodu, wpisz w konsolę polecenie.

npm install telegraf

8. Jak uruchomić bota

Aby to zrobić, będąc w folderze z plikiem (aby przechodzić między folderami w konsoli — wykonuj polecenie w formacie cd bot Aby upewnić się, że jesteś w odpowiednim miejscu, możesz wpisać polecenie, które wyświetli w konsoli wszystkie pliki i foldery, które tam są ls -a

Aby uruchomić, wpisałem w konsolę

node index.js

Jeśli nie ma żadnych błędów — wszystko jest w porządku, bot działa. Szukaj go w Telegramie. Jeśli jest błąd — wykorzystaj wiedzę z punktu 1.

9. Jak uruchomić bota w tle

Szybko zrozumiesz, że bot działa tylko wtedy, gdy sam siedzisz w konsoli. Aby rozwiązać ten problem, użyłem polecenia

screen

Po tym pojawi się ekran z jakimś tekstem. To znaczy, że wszystko jest w porządku. Jesteś na wirtualnym serwerze w chmurze. Aby lepiej zrozumieć, jak to wszystko działa — oto artykuł. Po prostu wejdź do swojego folderu i wpisuj polecenie do uruchomienia bota

node index.js

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

Co nasz bot z przykładu potrafi? Potrafi

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

powiedzieć „Welcome!” w momencie startu (spróbuj zmienić tekst)

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

w odpowiedzi na standardowe polecenie /help wysłać wiadomość „Send me a sticker”

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

w odpowiedzi na naklejkę wysłać aprobatę

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

odpowiadać „Hey there”, jeśli ktoś napisze ‘hi’
bot.launch()

Poradnik: jak stworzyć prostego bota do Telegrama na JS dla początkującego programisty

Jeśli spojrzysz na kod na github, to szybko zrozumiecie, że znacznie się od tej funkcjonalności nie oddaliłem. To, co jest aktywnie używane, to funkcja ctx.replyWithPhoto Pozwala ona na wysyłanie określonego zdjęcia lub gif-a w odpowiedzi na określony tekst.

Znacząca część kodu została napisana przez dzieci w wieku 11-13 lat, którym dałem dostęp do bota. Wprowadziły swoje przypadki użycia. Myślę, że łatwo można określić, która część została stworzona przez nie.

Na przykład, na wiadomość „jake” przychodzi gif z znanym bohaterem z kreskówki Adventure Time.

Poradnik: jak stworzyć prostego bota do Telegrama na JS dla początkującego programisty

Aby rozwijać bota dalej, należy podłączyć klawiaturę, trzeba się przyjrzeć przykładom, na przykład, stąd

11. Jak aktualizować kod i ponownie uruchamiać bota

Nie zapominajcie, że trzeba aktualizować kod nie tylko na githubie, ale także na serwerze. Robi się to prosto — zatrzymujemy bota (naciskamy ctrl+c),

— wpisujemy w konsoli, będąc w docelowym katalogu, git pull
— ponownie uruchamiamy bota komendą node index.js

KONIEC

Wiele rzeczy opisywanych w tym pliku będzie super oczywiste dla zaawansowanych programistów. Jednak gdy sam próbowałem jednym skokiem przeskoczyć przepaść do świata botów, bardzo brakowało mi takiego przewodnika. Przewodnika, w którym nie pomijane są oczywiste i proste rzeczy dla każdego specjalisty IT.

W przyszłości planuję post na temat tego, jak stworzyć swoją pierwszą aplikację w ReactNative w takim samym stylu, subskrybujcie!

Źródło: habr.com

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster