Mwen te kòmanse plonje tèt mwen nan mond lan nan IT sèlman twa semèn de sa. Seryezman, twa semèn de sa mwen pa t 'menm konprann sentaks HTML, ak entwodiksyon mwen an nan langaj pwogramasyon te fini ak yon kourikoulòm lekòl sou Pascal soti nan 10 ane de sa. Sepandan, mwen deside ale nan yon kan IT, kote li ta bèl pou timoun yo fè yon bot. Mwen te deside ke li pa t difisil konsa.
Sa a te kòmanse yon vwayaj ki long kote mwen:
- te deplwaye yon sèvè nwaj ak Ubuntu,
- anrejistre sou GitHub,
- aprann sentaks JavaScript debaz,
- li yon tòn atik nan lang angle ak Ris,
- finalman te fè yon bot,
- Mwen finalman te ekri atik sa a.
Rezilta final la te sanble yon bagay tankou sa a:
Mwen pral di touswit ke sa a se yon atik pou débutan - jis yo konprann ki jan fè bagay debaz nan grate.
Epi tou - pou pwogramasyon avanse - jis fè yo ri yon ti kras.
1. Ki jan yo ekri kòd nan JS?
Mwen te konprann ke li te vo omwen konprann sentaks lang nan premye. Chwa a te tonbe sou JavaScript, tou senpleman paske pwochen etap la pou mwen se te kreye yon aplikasyon nan ReactNative. Mwen te kòmanse avèk
2. Ki jan yo anrejistre yon bot?
Sa a te ede m anpil nan kòmansman an
3. Ki jan kòd bot la sanble?
Apre etidye atik yo pou yon tan long, mwen reyalize ke li te vo sèvi ak kèk kalite bibliyotèk (kòd twazyèm-pati nan fòma modil) pou yo pa gen enkyete sou etidye API a Telegram ak kreye gwo moso nan kòd nan grate. Mwen jwenn fondasyon an
3. Ki jan yo kreye pwòp sèvè nwaj ou a pou 100 rubles
Apre anpil rechèch, mwen reyalize ke kòmandman 'npm' nan foto ki anwo a refere a liy lòd la. Liy lòd la se tout kote, men pou kapab egzekite li, ou bezwen enstale NodePackageManager. Pwoblèm lan te ke mwen te pwograme sou yon PixelBook ak ChromeOS. Mwen pral sote isit la yon gwo blòk sou fason mwen te aprann Linux - pou pifò li se vid epi li pa nesesè. Si ou gen Windows oswa yon MacBook, ou deja gen yon konsole.
Nan yon bref, mwen enstale Linux atravè Crostini.
Sepandan, nan pwosesis la, mwen reyalize ke pou bot la travay toujou (e pa sèlman lè òdinatè mwen an sou), mwen bezwen yon sèvè nwaj. Mwen chwazi
4. Ki jan yo prepare yon sèvè pou kouri yon bot
Apre sa, mwen reyalize ke mwen te bezwen fè kèk kalite katab sou sèvè a nan ki mwen ta mete dosye a ak tèks la kòd. Pou fè sa, nan konsole a (kouri dirèkteman sou sit entènèt la atravè bouton an "Louvri konsole"), mwen te antre
mkdir bot
bot - sa a te vin non katab mwen an. Apre sa, mwen enstale npm ak Node.js, ki pral pèmèt mwen kouri kòd soti nan dosye ak rezolisyon *.js.
sudo apt update
sudo apt install nodejs
sudo apt install npm
Mwen trè rekòmande pou etabli yon koneksyon ak sèvè a atravè konsole ou nan etap sa a. Isit la
5. Ki jan yo ekri kòd la pou premye bot ou a.
Men koulye a, se jis yon dekouvèt pou mwen. Nenpòt pwogram se jis liy tèks. Yo ka mete nenpòt kote, sove ak ekstansyon vle a, e se li. Ou bèl. Mwen te itilize
Mwen te fè yon nouvo fichye, nan ki mwen mete kòd ki soti nan egzanp lan sou paj telegraf la epi sove li nan fichye index.js la (an jeneral li pa nesesè nonmen fichye a konsa, men sa a se nòmal). Enpòtan - olye pou yo BOT_TOKEN, mete kle API ou nan dezyèm paragraf la.
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. Ki jan yo telechaje kòd sou sèvè a atravè github
Koulye a, mwen te bezwen yon jan kanmenm Upload kòd sa a sou sèvè a epi kouri li. Sa a te vin tounen yon defi pou mwen. Kòm yon rezilta, apre anpil eprèv, mwen reyalize ke li ta pi fasil yo kreye yon dosye sou github ki pèmèt ou mete ajou kòd la lè l sèvi avèk yon lòd nan konsole a. Mwen anrejistre yon kont sou
7. Ki jan yo telechaje fichye sou sèvè a atravè github pati 2
Mwen te bezwen enstale yon pwogram sou sèvè a ki ta telechaje fichye soti nan git. Mwen enstale git sou sèvè a pa tape nan konsole a
apt-get install git
Apre sa mwen te bezwen konfigirasyon telechaje dosye a. Pou fè sa, mwen tape nan liy lòd la
git clone git://github.com/b0tank/bot.git bot
Kòm yon rezilta, tout bagay soti nan pwojè a te Uploaded sou sèvè a. Erè a nan etap sa a se te ke mwen esansyèlman te fè yon dezyèm katab andedan katab la bot ki deja egziste. Adrès dosye a te sanble ak */bot/bot/index.js
Mwen deside inyore pwoblèm sa a.
Epi pou chaje bibliyotèk telegraf la, ke nou mande nan premye liy kòd la, tape lòd la nan konsole a.
npm install telegraf
8. Ki jan yo lanse yon bot
Pou fè sa, pandan y ap nan katab la ak dosye a (pou deplase soti nan katab nan katab atravè konsole a, kouri lòd la fòma cd bot
Pou asire w ke ou se kote ou bezwen yo, ou ka antre nan yon lòd ki pral montre nan konsole a tout dosye yo ak dosye ki la. ls -a
Pou kòmanse, mwen te antre nan konsole a
node index.js
Si pa gen okenn erè, tout bagay anfòm, bot la ap travay. Chèche l sou telegram. Si gen yon erè, aplike konesans ou soti nan pwen 1.
9. Ki jan yo kouri yon bot nan background nan
Byen vit ou pral reyalize ke bot la ap travay sèlman lè ou menm ou chita nan konsole a. Pou rezoud pwoblèm sa a mwen te itilize kòmandman an
screen
Apre sa, yon ekran ak kèk tèks ap parèt. Sa vle di tout bagay anfòm. Ou se sou yon sèvè vityèl sou yon sèvè nwaj. Pou konprann pi byen ki jan li tout travay -
node index.js
10. Ki jan bot la ap travay ak ki jan yo elaji fonksyonalite li yo
Kisa bot egzanp nou an ka fè? Li kapab
bot.start((ctx) => ctx.reply('Welcome!'))
di "Byenveni!" nan kòmansman an (eseye chanje tèks la)
bot.help((ctx) => ctx.reply('Send me a sticker'))
an repons a estanda / èd kòmandman an, voye mesaj "Voye yon fich pou mwen"
bot.on('sticker', (ctx) => ctx.reply(''))
voye apwobasyon an repons a yon fichye
bot.hears('hi', (ctx) => ctx.reply('Hey there'))
reponn "Hey there" si yo ekri "hi" pou li
bot.lanse()
Si w gade kòd la nan ctx.replyWithPhoto
Li pèmèt ou voye yon foto espesifik oswa gif an repons a yon tèks espesifik.
Yon pati enpòtan nan kòd la te ekri pa timoun ki gen laj 11-13, ki moun mwen te bay aksè a bot la. Yo te antre nan ka itilizatè yo. Mwen panse ke li fasil pou di ki pati yo te fè.
Pou egzanp, mesaj la "Jake" pral resevwa yon GIF ak yon karaktè pi popilè nan desen ki pi ba Adventure Time.
Pou devlope bot la pi lwen, ou bezwen konekte yon klavye, gade egzanp, pou egzanp,
11. Ki jan yo mete ajou kòd la ak rekòmanse bot la
Pa bliye ke ou bezwen mete ajou kòd la pa sèlman sou github, men tou sou sèvè a. Sa a se fasil fè - sispann bot la (peze ctrl + c),
- antre nan konsole a pandan y ap nan katab la sib, git pull
- nou lanse bot la ankò ak lòd la node index.js
FEN
Anpil nan bagay ki dekri nan dosye sa a pral super evidan pou pwogramasyon avanse yo. Sepandan, lè mwen menm mwen te eseye sote sou gwo twou a nan mond lan nan robo nan yon sèl tonbe, mwen reyèlman rate yon gid konsa. Yon gid ki pa manke bagay ki evidan ak senp pou nenpòt espesyalis IT.
Nan tan kap vini an, mwen ap planifye yon pòs sou kòman yo fè premye aplikasyon ou sou ReactNative nan menm style la, abònman!
Sous: www.habr.com