Útmutató: hogyan készítsünk egy egyszerű botot a Telegramra JS segítségével kezdők számára a programozásban

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:

Útmutató: hogyan készítsünk egy egyszerű botot a Telegramra JS segítségével kezdők számára a programozásban

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

Útmutató: hogyan készítsünk egy egyszerű botot a Telegramra JS segítségével kezdők számára a programozásban

2. Hogyan lehet regisztrálni egy botot?

Az elején nagyon segített az ez a cikk 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.

Útmutató: hogyan készítsünk egy egyszerű botot a Telegramra JS segítségével kezdők számára a programozásban

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

Útmutató: hogyan készítsünk egy egyszerű botot a Telegramra JS segítségével kezdők számára a programozásban

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: vscale.io Ráadtam 100 forintot, és megvettem a legolcsóbb Ubuntu szervert (lásd a képet).

Útmutató: hogyan készítsünk egy egyszerű botot a Telegramra JS segítségével kezdők számára a programozásban

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 bot

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

sudo apt update
sudo apt install nodejs
sudo apt install npm

Nagyon ajánlom, hogy ezen a ponton állítsd be a szerverhez való csatlakozást a saját konzolodon keresztül. Itt van: utasítás 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 Atom, 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 github és létrehoztam egy új projektet, 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 git

Ezutá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 telegraf

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

screen

Ezutá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 — itt van egy cikk. Csak lépj be a mappádba, és írd be a bot indítási parancsát

node index.js

10. 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()

Útmutató: hogyan készítsünk egy egyszerű botot a Telegramra JS segítségével kezdők számára a programozásban

Ha megnézi a kódot a github, 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.

Útmutató: hogyan készítsünk egy egyszerű botot a Telegramra JS segítségével kezdők számára a programozásban

A bot további fejlesztéséhez a billentyűzet csatlakoztatása szükséges, például, innen

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

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster