Alig három hete kezdtem el elmerülni az IT világában. Komolyan, három hete még a HTML szintaxist sem értettem, és a programozási nyelvekbe való bevezetésem egy 10 évvel ezelőtti iskolai Pascal tantervvel zárult. Én azonban úgy döntöttem, hogy elmegyek egy informatikai táborba, ahol jó lenne, ha a gyerekek botot készítenének. Úgy döntöttem, ez nem is olyan nehéz.
Ezzel elkezdődött egy hosszú utazás, amelyben én:
- felhőkiszolgálót telepített az Ubuntuval,
- regisztrálva a GitHubon,
- megtanulta az alapvető JavaScript szintaxist,
- rengeteg cikket olvasni angolul és oroszul,
- végre csinált egy botot,
- Végül megírtam ezt a cikket.
A végeredmény valahogy így nézett ki:
Azonnal elmondom, hogy ez egy kezdőknek szóló cikk - csak azért, hogy megértsék, hogyan kell az alapvető dolgokat a semmiből csinálni.
És – haladó programozóknak – csak azért, hogy megnevettessenek egy kicsit.
1. Hogyan írjunk kódot JS-ben?
Megértettem, hogy először érdemes legalább a nyelv szintaxisát megérteni. A választás a JavaScriptre esett, egyszerűen azért, mert a következő lépés számomra egy alkalmazás létrehozása volt a ReactNative-ban. azzal kezdtem
2. Hogyan lehet botot regisztrálni?
Ez nagyon sokat segített nekem az elején
3. Hogyan néz ki a bot kód?
A cikkek hosszas tanulmányozása után rájöttem, hogy érdemes valamilyen könyvtárat (harmadik féltől származó kódot modul formátumban) használni, hogy ne kelljen aggódnom a Telegram API tanulmányozása és a nagy kóddarabok elölről történő létrehozása miatt. Megtaláltam a keretet
3. Hogyan hozhat létre saját felhőkiszolgálót 100 rubelért
Sok keresgélés után rájöttem, hogy a fenti képen látható 'npm' parancs a parancssorra vonatkozik. A parancssor mindenhol megtalálható, de a végrehajtásához telepítenie kell a NodePackageManager-t. A probléma az volt, hogy egy PixelBookon programoztam ChromeOS-sel. Itt kihagyok egy nagy blokkot arról, hogyan tanultam meg a Linuxot - a legtöbb számára üres és szükségtelen. Ha Windows vagy MacBook van, akkor már van konzolja.
Dióhéjban a Linuxot a Crostinin keresztül telepítettem.
A folyamat során azonban rájöttem, hogy ahhoz, hogy a bot folyamatosan működjön (és ne csak akkor, amikor a számítógépem be van kapcsolva), szükségem van egy felhőkiszolgálóra. én választok
4. Hogyan készítsünk fel egy szervert egy bot futtatására
Ezek után rájöttem, hogy valami mappát kell készítenem a szerveren, amibe a kódszöveggel ellátott fájlt beteszem. Ehhez a konzolban (közvetlenül a webhelyen a „Konzol megnyitása” gombbal fut) beírtam
mkdir bot
bot – ez lett a mappám neve. Ezt követően telepítettem az npm-et és a Node.js-t, ami lehetővé teszi, hogy kódot futtassak *.js felbontású fájlokból
sudo apt update
sudo apt install nodejs
sudo apt install npm
Erősen javaslom, hogy ebben a szakaszban hozzon létre kapcsolatot a szerverrel a konzolon keresztül. Itt
5. Hogyan írjuk meg az első bot kódját.
De most ez csak egy felfedezés számomra. Bármely program csak szövegsor. Bárhová beilleszthetők, elmenthetők a kívánt kiterjesztéssel, és ennyi. Te gyönyörű vagy. használtam
Csináltam egy új fájlt, amibe a telegraf oldalon lévő példa kódját beszúrtam és az index.js fájlba mentettem (általában nem kell így elnevezni a fájlt, de ez szokás). Fontos – a BOT_TOKEN helyett helyezze be az API-kulcsot a második bekezdésből.
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. Hogyan töltsünk fel kódot a szerverre githubon keresztül
Most valahogy fel kellett töltenem ezt a kódot a szerverre, és futtatnom kellett. Ez kihívás lett számomra. Ennek eredményeként, sok megpróbáltatás után rájöttem, hogy könnyebb lenne létrehozni egy fájlt a githubon, amely lehetővé teszi a kód frissítését a konzolban található paranccsal. Regisztráltam egy fiókot
7. Hogyan töltsünk fel fájlokat a szerverre a githubon keresztül, 2. rész
Fel kellett telepítenem egy programot a szerverre, ami letölti a fájlokat a git-ről. A git-et úgy telepítettem a szerverre, hogy beírtam a konzolba
apt-get install git
Ezután konfigurálnom kellett a fájlfeltöltést. Ehhez beírtam a parancssorba
git clone git://github.com/b0tank/bot.git bot
Ennek eredményeként a projekttől kezdve minden felkerült a szerverre. A hiba ebben a szakaszban az volt, hogy lényegében létrehoztam egy második mappát a már meglévő bot mappán belül. A fájl címe így nézett ki: */bot/bot/index.js
Úgy döntöttem, hogy figyelmen kívül hagyom ezt a problémát.
A telegraf könyvtár betöltéséhez pedig, amit az első kódsorban kérünk, írjuk be a parancsot a konzolba.
npm install telegraf
8. Hogyan indítsunk el egy botot
Ehhez a fájlt tartalmazó mappában (a konzolon keresztüli mappáról mappára való mozgáshoz futtassa a format parancsot cd bot
Annak érdekében, hogy biztosan ott legyen, ahol lennie kell, beírhat egy parancsot, amely megjeleníti a konzolon az összes ott lévő fájlt és mappát ls -a
Kezdésként beléptem a konzolba
node index.js
Ha nincs hiba, minden rendben, a bot működik. Keresse meg táviratban. Ha hiba van, alkalmazza az 1. ponttól szerzett ismereteit.
9. Hogyan futtassunk egy botot a háttérben
Elég hamar rájön, hogy a bot csak akkor működik, ha Ön a konzolban ül. A probléma megoldására a parancsot használtam
screen
Ezt követően megjelenik egy szöveges képernyő. Ez azt jelenti, hogy minden rendben van. Ön egy virtuális szerveren van egy felhőkiszolgálón. Hogy jobban megértsük, hogyan működik mindez -
node index.js
10. Hogyan működik a bot, és hogyan bővíthető a funkcionalitása
Mit tud a példabotunk? Ő tud
bot.start((ctx) => ctx.reply('Welcome!'))
mondd: "Üdvözlöm!" a kezdés pillanatában (próbáld megváltoztatni a szöveget)
bot.help((ctx) => ctx.reply('Send me a sticker'))
a standard /help parancsra válaszul küldje el a „Küldj egy matricát” üzenetet
bot.on('sticker', (ctx) => ctx.reply(''))
matricára válaszul küldjön jóváhagyást
bot.hears('hi', (ctx) => ctx.reply('Hey there'))
válaszoljon, hogy „Szia”, ha azt írják neki, hogy „szia”.
bot.launch()
Ha megnézed a kódot a ctx.replyWithPhoto
Lehetővé teszi egy adott fénykép vagy gif küldését egy adott szövegre válaszul.
A kód jelentős részét 11-13 éves gyerekek írták, akiknek hozzáférést adtam a bothoz. Beírták a felhasználói esetüket. Szerintem könnyű megmondani, melyik alkatrészt ők készítették.
Például a „Jake” üzenet egy GIF-et fog kapni az Adventure Time című rajzfilm egyik híres karakterével.
A bot továbbfejlesztéséhez billentyűzetet kell csatlakoztatnia, lásd például a példákat,
11. A kód frissítése és a bot újraindítása
Ne felejtsd el, hogy nem csak a githubon, hanem a szerveren is frissíteni kell a kódot. Ezt könnyű megtenni - állítsa le a botot (nyomja le a ctrl+c),
- lépjen be a konzolba, miközben a célmappában van, git pull
— paranccsal újra elindítjuk a botot node index.js
END
Az ebben a fájlban leírt dolgok közül sok rendkívül nyilvánvaló lesz a haladó programozók számára. Amikor azonban magam is megpróbáltam egy csapásra átugrani a szakadékot a botok világába, nagyon hiányzott egy ilyen útmutató. Útmutató, amely nem hagy ki olyan dolgokat, amelyek minden informatikus számára nyilvánvalóak és egyszerűek.
A jövőben tervezek egy bejegyzést arról, hogyan készítsd el az első alkalmazásodat a ReactNative-on ugyanebben a stílusban, iratkozz fel!
Forrás: will.com