Guida: cumu fà un bot simplice per Telegram in JS per un principiante in a prugrammazione

Aghju cuminciatu à immerse in u mondu IT solu trè settimane fà. Seriu, trè settimane fà ùn aghju mancu capitu a sintassi HTML, è a cunniscenza di i linguaggi di prugrammazione finisci cù un prugramma di Pascal di 10 anni. In ogni casu, aghju decisu di andà in un campu di IT, per i so figlioli chì saria bellu di fà un bot. Aghju pensatu chì ùn era micca cusì difficiule.

Questu hà iniziatu un longu viaghju, in quale aghju:

  • hà implementatu un servitore cloud cù Ubuntu,
  • registratu in GitHub,
  • hà amparatu a sintassi basica di JavaScript,
  • leghje una tonna di articuli in inglese è russu,
  • infine hà fattu un bot
  • infine hà scrittu stu post.

U risultatu finale pareva cusì:

Guida: cumu fà un bot simplice per Telegram in JS per un principiante in a prugrammazione

Diceraghju subitu chì questu hè un articulu per i principianti - solu per capisce cumu fà e cose elementari da u principiu.

È ancu - per i programatori avanzati - solu per fà riri un pocu.

1. Cumu scrive u codice in JS?

Aghju capitu chì valeva almenu per capiscenu prima a sintassi di a lingua. A scelta hè cascata nantu à JavaScript, solu perchè u prossimu passu per mè era di creà una applicazione in ReactNative. Aghju cuminciatu cù corsu in Codecademy è era assai entusiastu. I primi 7 ghjorni sò liberi. Prughjetti veri. I ricumandemu. U passaghju hà pigliatu circa 25 ore. In fatti, micca tuttu era utile. Questu hè cumu si vede a struttura di u cursu è u primu bloccu in dettagliu.

Guida: cumu fà un bot simplice per Telegram in JS per un principiante in a prugrammazione

2. Cumu registrà un bot?

M'hà aiutatu assai in u principiu st'articulu da u blog di un certu Archakov. Ellu mastica à u principiu. Ma u principale chì ci hè l'istruzzioni per registrà u bot. Ùn scriveraghju micca megliu, è postu chì questu hè a parte più faciule, scriveraghju solu l'essenza. Avete bisognu di creà un bot è uttene u so API. Questu hè fattu per un altru bot - @BotFather. Truvalu in telegramma, scrivitelu, seguite u percorsu simplice è uttene (salvà!) Chjave API (questu hè un inseme di numeri è lettere). Hè stata utile per mè dopu.

Guida: cumu fà un bot simplice per Telegram in JS per un principiante in a prugrammazione

3. Chì hè u codice di u bot?

Dopu un longu studiu di l'articuli, aghju capitu chì vale a pena aduprà qualchì tipu di libreria (codice di terzu in u formatu di modulu) per ùn soffre micca di studià l'API di telegramma è di creà grandi pezzi di codice da zero. Aghju trovu un quadru telegrafu, chì avia da esse in qualchì modu cunnessu à qualcosa cù npm o filatu. Hè cusì chì aghju capitu allora ciò chì hè custituitu a implementazione di u bot. Ridi quì. Ùn seraghju micca offesu. L'esempii in u fondu di a pagina m'hà aiutatu u più durante a creazione successiva di u bot:

Guida: cumu fà un bot simplice per Telegram in JS per un principiante in a prugrammazione

3. Cumu creà u vostru servitore nuvola per 100 rubles

Dopu assai ricerca, aghju capitu chì u cumandamentu "npm" da a stampa sopra si riferisce à a linea di cummanda. A linea di cumanda hè in ogni locu, ma per esse capace di eseguisce, avete bisognu di installà u NodePackageManager. U prublema era chì aghju programatu in un PixelBook cù ChromeOS. Saltaraghju un grande bloccu quì nantu à cumu aghju cunnisciutu Linux - per a maiò parte, questu hè viotu è innecessariu. Sì avete Windows o un MacBook, avete digià una cunsola.

In poche parole, aghju installatu Linux attraversu Crostini.

In ogni casu, in u prucessu, aghju realizatu chì per u bot per travaglià tuttu u tempu (è micca solu quandu u mo computer hè attivatu), aghju bisognu di un servitore nuvola. Aghju sceltu vscale.io Aghju lanciatu 100 rubli, compru u servitore Ubuntu più prezzu (vede a stampa).

Guida: cumu fà un bot simplice per Telegram in JS per un principiante in a prugrammazione

4. Cumu preparà u servitore per eseguisce u bot

Dopu à quessa, aghju realizatu chì avia bisognu di fà qualchì cartulare nantu à u servitore, in quale aghju messu u schedariu cù u testu di u codice. Per fà questu, in a cunsola (eseguite direttamente nantu à u situ attraversu u buttone "Open Console"), aghju guidatu

mkdir bot

bot - questu hè diventatu u nome di u mo cartulare. Dopu quì, aghju installatu npm è Node.js, chì mi permetterà dopu à eseguisce codice da i schedari *.js.

sudo apt update
sudo apt install nodejs
sudo apt install npm

Vi ricumandemu assai in questa fase per stabilisce una cunnessione à u servitore attraversu a vostra cunsola. Quì manuale Questu permetterà di travaglià cù u servitore direttamente attraversu a cunsola di u vostru urdinatore.

5. Cumu codificà u primu bot.

Avà questu hè solu una rivelazione per mè. Ogni prugramma hè solu linee di testu. Pudete guidà in ogni locu, salvà cù l'estensione desiderata è basta. Sì bellu. Aghju utilizatu Atom, ma veramente, pudete scrive solu in un bloccu note standard. A cosa principal hè di salvà u schedariu dopu in l'estensione desiderata. Hè cum'è scrive testu in Word è salvà.

Aghju fattu un novu schedariu, in quale aghju inseritu u codice da l'esempiu nantu à a pagina di telegraf è salvatu à u schedariu index.js (ùn hè micca necessariu di nome u schedariu cusì, ma hè accettatu). Impurtante - invece di BOT_TOKEN, inserite a vostra chjave API da u sicondu paràgrafu.

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. How to push the code to the server via github

Avà aghju avutu à carica stu codice à u servitore è eseguisce. Per mè hè diventatu una sfida. In fine, dopu assai prove, aghju realizatu chì saria più faciule per creà un schedariu in github chì permette di aghjurnà u codice cù un cumandamentu in a cunsola. Aghju registratu un contu cun github è hà fattu novu prughjettuinduve aghju caricatu u schedariu. Dopu à quessa, aghju avutu bisognu di capisce cumu si mette in carica i fugliali da u mo contu (apertu!) à u servitore in u cartulare di u bot (se l'avete lasciatu di colpu, basta à scrive cd bot).

7. How to upload files to the server via github part 2

Aviu bisognu di mette un prugramma in u servitore chì scaricava i fugliali da git. Aghju installatu git nantu à u servitore scrivendu

apt-get install git

Dopu à quessa, avia bisognu di stallà i file uploads. Per fà questu, aghju guidatu in a linea di cummanda

git clone git://github.com/b0tank/bot.git bot

In u risultatu, tuttu da u prughjettu hè stata caricata à u servitore. L'errore in questa tappa era chì aghju essenzialmente fattu un secondu cartulare in u cartulare di bot già esistente. L'indirizzu à u schedariu pareva */bot/bot/index.js

Aghju decisu di ignurà stu prublema.

È per carricà a biblioteca di telegraf, chì dumandemu in a prima linea di codice, scrive u cumandimu in a cunsola.

npm install telegraf

8. Cumu principià u bot

Per fà questu, mentre in u cartulare cù u schedariu (per passà da u cartulare à u cartulare attraversu a cunsola, eseguite u cumandamentu di furmatu cd bot Per assicurà chì site induve avete bisognu, pudete guidà in un cumandamentu chì mostrarà in a cunsola tutti i fugliali è i cartulare chì ci sò. ls -a

Per cumincià, aghju intrutu in a cunsola

node index.js

Se ùn ci hè micca errore, tuttu hè bè, u bot hè travagliatu. Cercatelu nantu à u telegramma. Se ci hè un errore, applicà a vostra cunniscenza da u puntu 1.

9. How to run the bot in the background

Vi capirete rapidamente chì u bot funziona solu quandu site sè stessu in a cunsola. Per risolve stu prublema aghju utilizatu u cumandamentu

screen

Dopu quì, apparirà una schermu cù qualchì testu. Questu significa chì tuttu hè bè. Sò in un servitore virtuale in un servitore nuvola. Per capisce megliu cumu funziona tuttu - quì hè l'articulu. Just andate à u vostru cartulare è scrivite in u cumandamentu di lanciari u bot

node index.js

10. Cumu funziona u bot è cumu espansione a so funziunalità

Chì pò fà u nostru bot da l'esempiu? Ellu pò

bot.start((ctx) => ctx.reply('Welcome!'))

dì "Benvenutu!" à u mumentu di u principiu (pruvà di cambià u testu)

bot.help((ctx) => ctx.reply('Send me a sticker'))

in risposta à u cumandimu standard / help, mandate u missaghju "Mandami un sticker"

bot.on('sticker', (ctx) => ctx.reply(''))

mandà appruvazioni in risposta à un sticker

bot.hears('hi', (ctx) => ctx.reply('Hey there'))

rispondimi "Ehi" s'elli scrivenu "ciao"
bot.launch()

Guida: cumu fà un bot simplice per Telegram in JS per un principiante in a prugrammazione

Se guardate u codice à github, Tandu vi capisce rapidamente chì ùn aghju micca andatu assai luntanu da sta funziunalità. Ciò chì hè attivamente utilizatu hè a funzione ctx.replyWithPhoto Permette di mandà una foto o gif in risposta à un certu testu.

Una parte significativa di u codice hè stata scritta da i zitelli di 11-13 anni, à quale aghju datu accessu à u bot. Sò intruti in i so casi d'utilizatori. Pensu chì hè faciule per dì quale parte hè stata fatta da elli.

Per esempiu, un GIF cù un caratteru famosu da u cartoon Adventure Time vene à u missaghju "jake".

Guida: cumu fà un bot simplice per Telegram in JS per un principiante in a prugrammazione

Per sviluppà u bot in più, avete bisognu di cunnette u teclatu, vede esempi, per esempiu, da quì

11. Cumu aghjurnà u codice è ripigliate u bot

Ùn vi scurdate chì avete bisognu di aghjurnà u codice micca solu in github, ma ancu in u servitore. Hè faciule fà questu - ferma u bot (press ctrl + c),

- entre in a cunsola, essendu in u cartulare di destinazione, git pull
- riavvia u bot cù u cumandimu node index.js

END

Parechje di e cose descritte in stu schedariu seranu super evidenti per i programatori avanzati. In ogni casu, quandu aghju pruvatu à saltà nantu à l'abissu à u mondu di i bots in un colpu, aghju veramente missu una guida cusì. Una guida chì ùn manca micca cose evidenti è simplici per ogni specialista in IT.

In u futuru, aghju pensatu un postu nantu à cumu fà a mo prima applicazione in ReactNative in u listessu stile, abbonate!

Source: www.habr.com

Add a comment