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:
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
2. Jak zarejestrować bota?
Na początku bardzo mi to pomogło
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
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
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
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
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
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 -
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()
Jeśli spojrzysz na kod na 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ę.
Aby dalej rozwijać bota należy podłączyć klawiaturę, zobacz przykłady np.
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