Mi komencis plonĝi en la IT-mondon antaŭ nur tri semajnoj. Serioze, antaŭ tri semajnoj mi eĉ ne komprenis HTML-sintakso, kaj konatiĝo kun programlingvoj finiĝis per 10-jara Pascal-lernaro. Tamen mi decidis iri al IT-tendaro, por kies infanoj estus bone fari bot. Mi supozis, ke ĝi ne estas tiel malfacila.
Ĉi tio komencis longan vojaĝon, en kiu mi:
- deplojis nuban servilon kun Ubuntu,
- registrita sur GitHub,
- lernis bazan JavaScript-sintakso,
- legi multe da artikoloj en la angla kaj la rusa,
- fine faris bot
- finfine skribis ĉi tiun afiŝon.
La fina rezulto aspektis jene:
Mi tuj diros, ke ĉi tio estas artikolo por komencantoj - nur por kompreni kiel fari elementajn aferojn ekde la komenco.
Kaj ankaŭ - por altnivelaj programistoj - nur por iom ridi ilin.
1. Kiel skribi kodon en JS?
Mi komprenis, ke indas almenaŭ kompreni la sintakson de la lingvo unue. La elekto falis sur JavaScript, simple ĉar la sekva paŝo por mi estis krei aplikaĵon en ReactNative. Mi komencis kun
2. Kiel registri bot?
Multe helpis min en la komenco
3. Kiel aspektas la botkodo?
Post longa studo de la artikoloj, mi konstatis, ke indas uzi ian bibliotekon (triaparta kodo en modula formato) por ne suferi pro studado de la telegrama API kaj kreado de grandaj kodoj de nulo. Mi trovis kadron
3. Kiel krei vian propran nuban servilon por 100 rubloj
Post multe da serĉado, mi eksciis, ke la komando 'npm' el la supra bildo rilatas al la komandlinio. La komandlinio estas ĉie, sed por povi efektivigi ĝin, vi devas instali la NodePackageManager. La problemo estis, ke mi programis sur PixelBook kun ChromeOS. Mi preterlasos ĉi tie grandan blokon pri kiel mi ekkonis Linukson - por la plimulto, ĉi tio estas malplena kaj nenecesa. Se vi havas Vindozon aŭ MacBook, vi jam havas konzolon.
Resume, mi instalis Linukso per Crostini.
Tamen, en la procezo, mi rimarkis, ke por ke la bot funkciu la tutan tempon (kaj ne nur kiam mia komputilo estas ŝaltita), mi bezonas nuban servilon. mi elektis
4. Kiel prepari la servilon por ruli la bot
Post tio, mi rimarkis, ke mi bezonas fari iun dosierujon sur la servilo, en kiu mi metus la dosieron kun la teksto de la kodo. Por fari tion, en la konzolo (kuru rekte en la retejo per la butono "Malfermu Konzolon"), mi veturis
mkdir bot
bot - ĉi tio fariĝis la nomo de mia dosierujo. Post tio, mi instalis npm kaj Node.js, kiuj permesos al mi poste ruli kodon el *.js dosieroj
sudo apt update
sudo apt install nodejs
sudo apt install npm
Mi tre rekomendas en ĉi tiu etapo agordi konekton al la servilo per via konzolo. Jen
5. Kiel kodi la unuan bot.
Nun ĉi tio estas nur revelacio por mi. Ajna programo estas nur linioj de teksto. Vi povas veturi ilin ie ajn, konservi kun la dezirata etendo kaj jen ĝi. Vi estas bela. mi uzis
Mi faris novan dosieron, en kiu mi enmetis la kodon el la ekzemplo en la paĝon de telegraf kaj konservis ĝin al la dosiero index.js (tute ne necesas nomi la dosieron tiel, sed ĝi estas akceptita). Grave - anstataŭ BOT_TOKEN, enigu vian API-ŝlosilon el la dua alineo.
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. Kiel puŝi la kodon al la servilo per github
Nun mi devis iel alŝuti ĉi tiun kodon al la servilo kaj ruli ĝin. Por mi ĝi fariĝis defio. Fine, post multe da suferado, mi rimarkis, ke estus pli facile krei dosieron sur github, kiu ebligas al vi ĝisdatigi la kodon per komando en la konzolo. Mi registris konton kun
7. Kiel alŝuti dosierojn al la servilo per github parto 2
Mi bezonis meti programon sur la servilon, kiu elŝutus dosierojn el git. Mi instalis git sur la servilo tajpante
apt-get install git
Post tio, mi bezonis agordi dosierojn alŝutojn. Por fari tion, mi veturis en la komandlinion
git clone git://github.com/b0tank/bot.git bot
Kiel rezulto, ĉio el la projekto estis alŝutita al la servilo. La eraro ĉe ĉi tiu punkto estis, ke mi esence faris duan dosierujon ene de la jam ekzistanta bot-dosierujo. La adreso al la dosiero aspektis kiel */bot/bot/index.js
Mi decidis ignori ĉi tiun problemon.
Kaj por ŝargi la telegraf-bibliotekon, kiun ni petas en la unua linio de kodo, tajpu la komandon en la konzolon.
npm install telegraf
8. Kiel komenci la bot
Por fari tion, dum en la dosierujo kun la dosiero (por moviĝi de dosierujo al dosierujo tra la konzolo, rulu la formatan komandon cd bot
Por certigi, ke vi estas kie vi bezonas, vi povas veturi per komando, kiu montros en la konzolo ĉiujn dosierojn kaj dosierujojn, kiuj estas tie. ls -a
Por komenci, mi eniris la konzolon
node index.js
Se ne estas eraro, ĉio estas en ordo, la bot funkcias. Serĉu lin per telegramo. Se estas eraro, apliku viajn sciojn de la punkto 1.
9. Kiel ruli la bot en la fono
Vi rapide rimarkos, ke la bot funkcias nur kiam vi mem sidas en la konzolo. Por solvi ĉi tiun problemon mi uzis la komandon
screen
Post tio, ekrano kun iom da teksto aperos. Ĉi tio signifas, ke ĉio estas bona. Vi estas sur virtuala servilo sur nuba servilo. Por pli bone kompreni kiel ĉio funkcias -
node index.js
10. Kiel la bot funkcias kaj kiel vastigi ĝian funkciecon
Kion povas fari nia bot el la ekzemplo? Li povas
bot.start((ctx) => ctx.reply('Welcome!'))
diru "Bonvenon!" en la momento de komenco (provu ŝanĝi la tekston)
bot.help((ctx) => ctx.reply('Send me a sticker'))
responde al la norma /help-komando, sendu la mesaĝon "Sendu al mi glumarkon"
bot.on('sticker', (ctx) => ctx.reply(''))
sendu aprobon responde al glumarko
bot.hears('hi', (ctx) => ctx.reply('Hey there'))
respondu "Hej tie" se ili skribas 'hi'
bot.lanĉo()
Se vi rigardas la kodon ĉe ctx.replyWithPhoto
Ĝi ebligas al vi sendi antaŭfiksitan foton aŭ gifon en respondo al certa teksto.
Signifa parto de la kodo estis skribita de infanoj de 11-13 jaroj, al kiuj mi donis aliron al la bot. Ili eniris siajn uzantkazojn. Mi pensas, ke estas facile diri, kiun parton faris ili.
Ekzemple, GIF kun fama karaktero de la bildstrio de Adventure Time venas al la mesaĝo "jake".
Por disvolvi la roboton plu, vi devas konekti la klavaron, vidu ekzemplojn, ekzemple,
11. Kiel ĝisdatigi la kodon kaj rekomenci la bot
Ne forgesu, ke vi devas ĝisdatigi la kodon ne nur sur github, sed ankaŭ sur la servilo. Estas facile fari ĉi tion - haltigu la bot (premu ctrl + c),
- eniru en la konzolon, estante en la cela dosierujo, git pull
- rekomencu la roboton per la komando node index.js
FINO
Multaj el la aferoj priskribitaj en ĉi tiu dosiero estos super evidentaj por altnivelaj programistoj. Tamen, kiam mi mem provis transsalti la abismon al la mondo de robotoj unuflanke, mi vere maltrafis tian gvidilon. Gvidilo, kiu ne maltrafas evidentajn kaj simplajn aferojn por iu ajn IT-specialisto.
Estonte, mi planas afiŝon pri kiel fari mian unuan aplikaĵon ĉe ReactNative en la sama stilo, abonu!
fonto: www.habr.com