Három hete kezdtem bele az IT világába. Komolyan, három hete még a HTML szintaxisát sem értettem, és a programozási nyelvekkel való ismerkedésem a tíz évvel ezelőtti Pascal iskolai tananyagra korlátozódott. Azonban úgy döntöttem, hogy elmegyek egy IT táborba, ahol a gyerekeknek hasznos lenne egy botot készítenem. Azt gondoltam, hogy ez valószínűleg nem olyan bonyolult.
Ettől kezdődött egy hosszú út, amely során:
- felállítottam egy felhőalapú szervert Ubuntu rendszerrel,
- regisztráltam a GitHubra,
- megtanultam a JavaScript alapvető szintaxisát,
- több tonna cikket olvastam angolul és oroszul,
- végre elkészítettem a botot,
- megírtam végre ezt a cikket.
A végeredmény körülbelül így nézett ki:

Azonnal elmondom, hogy ez egy kezdőknek szóló cikk — hogy egyszerűen megértsék, hogyan csináljanak alapvető dolgokat a nulladik ponttól.
A fejlettebb programozók számára pedig — csak hogy egy kicsit megnevesszék őket.
1. Hogyan kell kódot írni JS-ben?
Tudtam, hogy először is érdemes lenne legalább megbirkózni a nyelv szintaxisával. A választásom a JavaScript-re esett, egyszerűen azért, mert a következő lépés nekem a ReactNative alkalmazás létrehozása volt. Kezdtem a a Codecademy-n, és nagyon lelkes maradtam. Az első 7 nap ingyenes. Valódi projektek. Ajánlom. A tanulmányozása körülbelül 25 órát vett igénybe. Valójában a legtöbb dologból nem volt szükségem. Így néz ki körülbelül a kurzus felépítése, és részletesen az első blokk.

2. Hogyan lehet regisztrálni egy botot?
Az elején nagyon segített az egy bizonyos Archakov blogjából. Részletesen tárgyalja a kezdeti lépéseket. De ami a legfontosabb, hogy van benne — az a bot regisztrálásához szükséges útmutató. Jobban nem tudnám megírni, és mivel ez a legkönnyebb rész, csak leírom a lényeget. Létre kell hozni a botot és megkapni az API-t. Ez egy másik boton — @BotFather — keresztül történik. Keress rá a telegramon, írd meg neki, menj végig egy egyszerű folyamaton, és kapd meg (mentesd el!) az API kulcsot (ez egy szám- és betűkombináció). Később hasznomra vált.

3. Hogyan néz ki a bot kódja?
Hosszas cikkek tanulmányozása után rájöttem, hogy érdemes lenne egy könyvtárat (harmadik fél kódját modulformátumban) használni, hogy ne kelljen szenvednem a telegram API tanulmányozásával és nagyobb kódrészletek nulláról való létrehozásával. Megtaláltam a keretrendszert, , amit valahogy csatlakoztatni kellett valamihez npm vagy yarn segítségével. Körülbelül így értettem akkor, hogy miből áll a bot telepítése. Ne nevess itt. Nem fogom megsértődni. Leginkább a bot későbbi létrehozásában a lenti oldalon megadott példák segítettek.

3. Hogyan hozzunk létre saját felhőszervert 100 forintért
Hosszas keresgélés után rájöttem, hogy a fenti képen lévő 'npm' parancs a parancssorhoz tartozik. A parancssor mindenhol megtalálható, de ahhoz, hogy futtathassam, telepítenem kell a NodePackageManager-t. A probléma az volt, hogy a PixelBook-omon ChromeOS alatt programoztam. Itt kihagyom azt a nagy blokkot, ami arról szól, hogyan ismertem meg a Linuxot — a legtöbb ember számára ez üres és felesleges. Ha Windows-t vagy MacBook-ot használsz, már van konzolod.
Röviden, Linuxot telepítettem a Crostini segítségével.
De a folyamat során rájöttem, hogy a bot folyamatos működéséhez (nem csak akkor, amikor a számítógépem be van kapcsolva) felhőszerverre van szükségem. Én a következőt választottam: Ráadtam 100 forintot, és megvettem a legolcsóbb Ubuntu szervert (lásd a képet).

4. Hogyan készítsük elő a szervert a bot futtatásához
Ezután rájöttem, hogy a szerveren létre kell hoznom egy mappát, amelybe elhelyezem a kód szövegfájlt. Ehhez a konzolon (a weboldalon a 'Konzol megnyitása' gombbal) beírtam:
mkdir botbot — это стало название моей папки. После этого я установил npm и Node.js, что позволит запускать мне потом код из файликов с разрешением *.js
sudo apt update
sudo apt install nodejs
sudo apt install npmNagyon ajánlom, hogy ezen a ponton állítsd be a szerverhez való csatlakozást a saját konzolodon keresztül. Itt van: Ez lehetővé teszi, hogy közvetlenül a számítógép konzolán keresztül dolgozz a szerverrel.
5. Hogyan írjunk kódot az első bothoz.
Most pedig számomra ez egy egyszerű felfedezés. Bármely program csupán szövegsorok összessége. Ezeket bárhová be lehet írni, megfelelő kiterjesztéssel el lehet menteni, és ennyi. Csodás vagy. Én használtam , de valójában simán egy szövegszerkesztőben is írhatunk. A lényeg, hogy a fájlt a megfelelő kiterjesztéssel mentsük el. Ez olyan, mint egy szöveg írása Wordben és annak mentése.
Új fájlt készítettem, amibe beillesztettem a telegraf oldalán lévő példa kódját, és elmentettem index.js néven (valójában nem kötelező így elnevezni a fájlt, de ez a szokás). Fontos — a BOT_TOKEN helyére add meg a második pontban található API kulcsodat.
const Telegraf = require('telegraf')
const bot = new Telegraf(process.env.BOT_TOKEN)
bot.start((ctx) => ctx.reply('Üdvözöljük!'))
bot.help((ctx) => ctx.reply('Küldj nekem egy matricát'))
bot.on('sticker', (ctx) => ctx.reply(''))
bot.hears('hi', (ctx) => ctx.reply('Szia'))
bot.launch()6. Hogyan töltsük fel a kódot a szerverre a github segítségével
Most már valahogy fel kellett töltenem ezt a kódot a szerverre és elindítanom. Ez kihívás lett számomra. Végül, sok szenvedés után rájöttem, hogy egyszerűbb lesz egy fájlt létrehozni a github-on, amely lehetővé teszi a kód frissítését a konzolban lévő parancs segítségével. Regisztráltam egy fiókot a és létrehoztam , ahová feltöltöttem a fájlt. Ezt követően meg kellett értenem, hogyan tudom beállítani a fájlok feltöltését az én (nyílt!) fiókomból a bot mappába (ha esetleg kiléptél belőle — csak írd be, hogy cd bot).
7. Hogyan töltsük fel a fájlokat a szerverre github-on keresztül 2. rész
Fel kellett töltenem egy programot a szerverre, amely fájlokat tölt le a gitből. Telepítettem a git-et a szerverre, beírva a konzolba
apt-get install gitEzután be kellett állítanom a fájlok feltöltését. Ehhez beírtam a parancssorba
git clone git://github.com/b0tank/bot.git bot
В итоге все из проекта загрузилось на сервер. Ошибкой на данном этапе было, что я, по сути, сделал вторую папку внутри уже существующей папки bot. Адрес до файла выглядел как */bot/bot/index.js
Úgy döntöttem, hogy figyelmen kívül hagyom ezt a problémát.
Ahhoz, hogy betölthesd a telegraf könyvtárat, amelyet a kód első sorában kérünk, írd be a konzolban a következő parancsot.
npm install telegraf8. Hogyan indítsuk el a botot
Ehhez, a fájlt tartalmazó mappában tartózkodva (a mappák közötti navigáláshoz a konzolban a következő formátumú parancsot kell végrehajtani cd bot Azt is ellenőrizheted, hogy a megfelelő helyen vagy-e, ha beírsz egy parancsot, amely megjeleníti a konzolban az összes ott lévő fájlt és mappát ls -a
A bot elindításához beírtam a konzolba
node index.js
Ha nincs hiba – minden rendben, a bot működik. Keresd meg a Telegramon. Ha hiba van – használd a 1. pontban tanultakat.
9. Hogyan indítsuk el a botot háttérben
Elég gyorsan meg fogod érteni, hogy a bot csak akkor működik, amikor te magad is a konzolban ülsz. E problémát megoldandó használtam a parancsot
screenEzután egy képernyő jelenik meg valamilyen szöveggel. Ez azt jelenti, hogy minden rendben. Te a virtuális szerveren vagy a felhőszerveren. Ahhoz, hogy jobban megértsd, hogyan működik ez az egész — . Csak lépj be a mappádba, és írd be a bot indítási parancsát
node index.js10. Hogyan működik a bot és hogyan bővítsük a funkcióit
Mit tud a példánkban szereplő bot? Tudja
bot.start((ctx) => ctx.reply('Welcome!'))mondani 'Welcome!' a kezdetekor (próbáld meg megváltoztatni a szöveget)
bot.help((ctx) => ctx.reply('Send me a sticker'))a standard /help parancsra üzenetet küldeni: 'Send me a sticker'
bot.on('sticker', (ctx) => ctx.reply(''))válaszként küldeni egy elismerő üzenetet egy matricára
bot.hears('hi', (ctx) => ctx.reply('Hey there')) válaszolni 'Hey there', ha 'hi'-t írnak neki
bot.launch()

Ha megnézi a kódot a , gyorsan megérti, hogy nem nagyon távolodtam el ettől a funkciótól. Azt, ami aktívan használatban van, az a ctx.replyWithPhoto Ez lehetővé teszi, hogy adott képet vagy gifet küldjünk válaszként egy adott szövegre.
A kód jelentős részét 11-13 éves gyerekek írták, akiknek hozzáférést adtam a bothoz. Ők bevezették a saját felhasználói esetüket. Gondolom, könnyen meg lehet határozni, melyik rész készült tőlük.
Például a "jake" üzenetre egy gif érkezik egy ismert szereplőről az Adventure Time című meséből.

A bot további fejlesztéséhez a billentyűzet csatlakoztatása szükséges, például,
11. Hogyan frissítsük a kódot és indítsuk újra a botot
Ne felejtsük el, hogy a kódot nemcsak a github-on, hanem a szerveren is frissíteni kell. Ezt egyszerűen tehetjük – leállítjuk a botot (megnyomva a ctrl+c-t),
— beírjuk a konzolba, a célmappában tartózkodva, git pull
— újra elindítjuk a botot a parancs segítségével node index.js
Vége
Sok dolog, amit ebben a fájlban leírok, szuper nyilvánvaló lesz haladó programozók számára. Azonban amikor én magam próbáltam egy lépésben átugrani a szakadékot a botok világába, nagyon hiányzott egy ilyen útmutató. Egy útmutató, amely nem hagyja ki azokat a nyilvánvaló és egyszerű dolgokat, amelyek bármely IT szakember számára evidensek.
A jövőben tervezek egy bejegyzést arról, hogyan készítsd el az első alkalmazásodat ReactNative-ben ebben a stílusban, iratkozz fel!
Forrás: habr.com
