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:

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 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.

2. Jak zarejestrować bota?
Na początku bardzo pomogła mi ta 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.

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 , 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:

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 Wpłaciłem 100 zł, kupiłem najtańszy serwer Ubuntu (zobacz obrazek).

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 botbot — это стало название моей папки. После этого я установил npm и Node.js, что позволит запускать мне потом код из файликов с разрешением *.js
sudo apt update
sudo apt install nodejs
sudo apt install npmZalecam na tym etapie skonfigurowanie połączenia z serwerem przez swoją konsolę. Oto jak to zrobić: 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 , 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 i zrobiłem , 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 gitNastę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 telegraf8. 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
screenPo 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 — . Po prostu wejdź do swojego folderu i wpisuj polecenie do uruchomienia bota
node index.js10. 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()

Jeśli spojrzysz na kod na , 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.

Aby rozwijać bota dalej, należy podłączyć klawiaturę, trzeba się przyjrzeć przykładom, na przykład,
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
