Am început să mă aprofundeze în lumea IT-ului acum doar trei săptămâni. Serios, acum trei săptămâni nu înțelegeam nici măcar sintaxa HTML, iar cunoașterea limbajelor de programare se oprea la programul școlar din Pascal de acum zece ani. Cu toate acestea, am decis să merg într-o tabără IT, unde ar fi bine pentru copii să creeze un bot. Am considerat că nu ar fi atât de complicat.
Aceasta a fost începutul unui drum lung, în cadrul căruia am:
- configurat un server cloud cu Ubuntu,
- m-am înregistrat pe GitHub,
- am învățat sintaxa de bază a JavaScript-ului,
- am citit o tonă de articole în engleză și rusă,
- în cele din urmă am făcut un bot,
- am scris în sfârșit acest articol.
Rezultatul final arăta cam așa:

Voi spune din start, acesta este un articol pentru începători — doar pentru a înțelege cum se fac lucruri elementare de la zero.
Și, de asemenea, pentru programatorii avansați — doar pentru a-i amuza puțin.
1. Cum scrii cod în JS?
Știam că ar trebui să încep prin a înțelege măcar sintaxa limbajului. Alegerea a căzut pe JavaScript, pur și simplu pentru că următorul pas pentru mine era crearea unei aplicații pe ReactNative. Am început cu Codecademy și am fost extrem de încântat. Primele 7 zile sunt gratuite. Proiecte reale. Recomand. Trecerea prin el a durat aproximativ 25 de ore. În realitate, nu toate lucrurile din el mi-au fost utile. Cam așa arată structura cursului și detaliile primei părți.

2. Cum înregistrezi un bot?
La început, mi-a fost de mare ajutor acest blog al lui Archakov. El explică începuturile. Dar cel mai important, are o instrucțiune pentru înregistrarea botului. Nu voi scrie mai bine, și deoarece aceasta este cea mai ușoară parte, voi rezuma esența. Trebuie să creezi un bot și să obții API-ul său. Acest lucru se face printr-un alt bot — @BotFather. Găsește-l în telegram, scrie-i, parcurge procesul simplu și obține (salvează!) cheia API (aceasta este un set de cifre și litere). Mi-a fost de folos mai târziu.

3. Cum arată codul botului?
După o lungă studiere a articolelor, am realizat că ar trebui să folosesc o bibliotecă (cod extern în format de modul) pentru a nu mă chinui cu studiul API-ului Telegram și cu crearea de la zero a unor bucăți mari de cod. Am găsit framework-ul , pe care trebuia să-l conectez cumva la ceva folosind npm sau yarn. Așa înțelegeam atunci din ce consta desfășurarea botului. Râdeți aici. Nu mă voi supăra. Cel mai mult în timpul creării ulterioare a botului m-au ajutat exemplele menționate la sfârșitul paginii:

3. Cum să îți creezi propriul server cloud cu 100 de ruble
După lungi căutări, am realizat că comanda ‘npm’ din imaginea de mai sus se referă la linia de comandă. Linia de comandă este disponibilă oriunde, dar pentru a o putea executa, trebuie să instalezi NodePackageManager. Problema a fost că programam pe PixelBook cu ChromeOS. O să trec peste un bloc mare despre cum am învățat Linux — pentru majoritate este inutil și neinteresant. Dacă ai Windows sau MacBook, ai deja consola.
Dacă ar fi să spun în două cuvinte, am instalat Linux prin Crostini.
Cu toate acestea, în proces am realizat că pentru a avea botul activ permanent (nu doar când calculatorul meu este pornit) am nevoie de un server cloud. Am ales Am investit 100 de ruble și am cumpărat cel mai ieftin server Ubuntu (vezi imaginea).

4. Cum să pregătești serverul pentru a rula botul
După aceea, am realizat că trebuie să creez pe server o anumită mapă în care voi plasa fișierul cu codul sursă. Pentru aceasta, în consolă (o poți deschide direct pe site apăsând pe butonul „Deschide consola”) am tastat
mkdir botbot — это стало название моей папки. После этого я установил npm и Node.js, что позволит запускать мне потом код из файликов с разрешением *.js
sudo apt update
sudo apt install nodejs
sudo apt install npmÎți recomand cu tărie să configurezi conectarea la server prin consola ta. Iată Aceasta va permite să lucrezi direct cu serverul prin consola calculatorului tău.
5. Cum să scrii codul primului bot.
Iată acum deschiderea mea. Orice program este pur și simplu linii de text. Poți să le tasezi oriunde, să le salvezi cu extensia dorită și gata. Ești minunat. Am folosit , dar, de fapt, poți să scrii pur și simplu în Notepad-ul standard. Principalul este să salvezi fișierul cu extensia corespunzătoare. Este ca și cum ai scrie un text în Word și l-ai salva.
Am creat un fișier nou, în care am inserat codul din exemplul de pe pagina telegraf și l-am salvat în fișierul index.js (nu este deloc obligatoriu să îi dai acest nume, dar așa se obișnuiește). Important — în loc de BOT_TOKEN, introdu API-key-ul tău din punctul doi.
const Telegraf = require('telegraf')
const bot = new Telegraf(process.env.BOT_TOKEN)
bot.start((ctx) => ctx.reply('Bun venit!'))
bot.help((ctx) => ctx.reply('Trimite-mi un sticker'))
bot.on('sticker', (ctx) => ctx.reply(''))
bot.hears('hi', (ctx) => ctx.reply('Salut!'))
bot.launch()6. Cum să încarci codul pe server prin github
Acum trebuia să încarc acest cod pe server și să-l rulez. A devenit o provocare pentru mine. În cele din urmă, după multe încercări, am realizat că cel mai simplu va fi să creez un fișier pe github, care permite actualizarea codului printr-o comandă în consolă. Mi-am creat un cont pe și am făcut , unde am încărcat fișierul. După aceea, trebuia să înțeleg cum să configurez încărcarea fișierelor de pe contul meu (deschis!) pe server în dosarul bot (dacă, cumva, ați ieșit din el — pur și simplu scrieți cd bot).
7. Cum să încarci fișiere pe server prin github partea 2
Trebuia să instalez pe server un program care va descărca fișiere de pe git. Am instalat git pe server, tastând în consolă
apt-get install gitDupă aceea, trebuia să configurez încărcarea fișierelor. Pentru aceasta am tastat în linia de comandă
git clone git://github.com/b0tank/bot.git bot
В итоге все из проекта загрузилось на сервер. Ошибкой на данном этапе было, что я, по сути, сделал вторую папку внутри уже существующей папки bot. Адрес до файла выглядел как */bot/bot/index.js
Am decis să ignor această problemă.
Și pentru a încărca biblioteca telegraf, pe care o cerem în prima linie de cod, tastați în consolă comanda.
npm install telegraf8. Cum să pornești botul
Pentru aceasta, aflându-vă în dosarul cu fișierul (pentru a naviga între dosare prin consolă — executați comanda de forma cd bot Pentru a vă asigura că sunteți acolo unde trebuie, puteți tasta o comandă care va afișa în consolă toate fișierele și dosarele care se află acolo. ls -a
Pentru a-l porni, am tastat în consolă
node index.js
Dacă nu există nici o eroare — totul este bine, botul funcționează. Căutați-l în telegram. Dacă există o eroare — folosiți cunoștințele dumneavoastră din punctul 1.
9. Cum să pornești botul în fundal
Veți înțelege destul de repede că botul funcționează doar când sunteți în consolă. Pentru a rezolva această problemă, am folosit comanda
screenDupă aceasta, va apărea un ecran cu un text oarecare. Asta înseamnă că totul este bine. Sunteți pe un server virtual pe un server cloud. Pentru a înțelege mai bine cum funcționează totul — . Pur și simplu intrați în dosarul dumneavoastră și tastați comanda pentru a porni botul.
node index.js10. Cum funcționează botul și cum să-i extinzi funcționalitatea
Ce poate face botul nostru din exemplu? Acesta poate
bot.start((ctx) => ctx.reply('Welcome!'))să spună „Welcome!” în momentul startului (încercați să schimbați textul).
bot.help((ctx) => ctx.reply('Send me a sticker'))în răspuns la comanda standard /help să trimită mesajul „Send me a sticker”.
bot.on('sticker', (ctx) => ctx.reply(''))în răspuns la un sticker să trimită un mesaj de aprobat.
bot.hears('hi', (ctx) => ctx.reply('Hey there')) să răspundă „Hey there”, dacă cineva îi scrie ‘hi’.
bot.launch()

Dacă vă uitați la cod pe , veți realiza rapid că nu am mers foarte departe de această funcționalitate. Ce este utilizat activ este funcția ctx.replyWithPhoto Aceasta permite trimiterea unei fotografii sau GIF specificat ca răspuns la un text anume.
O parte semnificativă din cod a fost scrisă de copii cu vârste între 11 și 13 ani, cărora le-am dat acces la bot. Aceștia au introdus propriile user-case-uri. Cred că este ușor de identificat care parte a fost realizată de ei.
De exemplu, la mesajul „jake” se trimite un GIF cu un personaj cunoscut din desenele animate Adventure Time.

Pentru a dezvolta și mai departe botul, trebuie să vezi exemple pentru a conecta tastatura, de exemplu,
11. Cum să actualizați codul și să reporniți botul
Nu uitați că trebuie să actualizați codul nu doar pe GitHub, ci și pe server. Este simplu de făcut — oprim botul (apelând ctrl+c),
— introducem în consolă, aflându-ne în folderul țintă, git pull
— reluăm botul cu comanda node index.js
END
Multe lucruri descrise în acest fișier vor fi super evidente pentru programatorii avansați. Cu toate acestea, atunci când am încercat să fac o salt în lumea boturilor, mi-a lipsit foarte mult un astfel de ghid. Un ghid în care nu se trece cu vederea lucruri evidente și simple pentru orice specialist IT.
În continuare, plănuiesc un post despre cum să creez prima mea aplicație în ReactNative în același stil, abonați-vă!
Sursa: habr.com
