Nog maar drie weken geleden ben ik mij gaan verdiepen in de wereld van IT. Serieus, drie weken geleden begreep ik de HTML-syntaxis niet eens, en mijn kennismaking met programmeertalen eindigde met een schoolcurriculum over Pascal van 10 jaar geleden. Ik besloot echter naar een IT-kamp te gaan, waar het leuk zou zijn als de kinderen een bot zouden maken. Ik besloot dat het niet zo moeilijk was.
Dit begon een lange reis waarin ik:
- een cloudserver met Ubuntu geïmplementeerd,
- geregistreerd op GitHub,
- leerde de basissyntaxis van JavaScript,
- lees een heleboel artikelen in het Engels en Russisch,
- eindelijk een bot gemaakt,
- Eindelijk heb ik dit artikel geschreven.
Het eindresultaat zag er ongeveer zo uit:
Ik zal meteen zeggen dat dit een artikel voor beginners is - gewoon om te begrijpen hoe je basisdingen helemaal opnieuw kunt doen.
En ook - voor gevorderde programmeurs - gewoon om ze een beetje aan het lachen te maken.
1. Hoe code schrijven in JS?
Ik begreep dat het de moeite waard was om eerst de syntaxis van de taal te begrijpen. De keuze viel op JavaScript, simpelweg omdat de volgende stap voor mij het maken van een applicatie in ReactNative was. Ik begon met
2. Hoe registreer ik een bot?
Dit heeft mij in het begin erg geholpen
3. Hoe ziet de botcode eruit?
Nadat ik de artikelen lange tijd had bestudeerd, realiseerde ik me dat het de moeite waard was om een soort bibliotheek te gebruiken (code van derden in moduleformaat), zodat ik me geen zorgen hoefde te maken over het bestuderen van de Telegram API en het helemaal opnieuw maken van grote stukken code. Ik heb het raamwerk gevonden
3. Hoe u uw eigen cloudserver kunt maken voor 100 roebel
Na veel zoeken realiseerde ik me dat de opdracht 'npm' in de afbeelding hierboven verwijst naar de opdrachtregel. De opdrachtregel is overal aanwezig, maar om deze uit te kunnen voeren, moet u NodePackageManager installeren. Het probleem was dat ik aan het programmeren was op een PixelBook met ChromeOS. Ik zal hier een groot blok overslaan over hoe ik Linux heb geleerd - voor de meeste is het leeg en onnodig. Als je Windows of een MacBook hebt, heb je al een console.
Kort gezegd heb ik Linux geïnstalleerd via Crostini.
Maar gaandeweg realiseerde ik me dat ik, om de bot constant te laten werken (en niet alleen als mijn computer aanstaat), een cloudserver nodig heb. ik kies
4. Een server voorbereiden om een bot te laten draaien
Daarna besefte ik dat ik een soort map op de server moest maken waarin ik het bestand met de codetekst zou plaatsen. Om dit te doen, ging ik naar de console (rechtstreeks op de website via de knop "Console openen")
mkdir bot
bot - dit werd de naam van mijn map. Daarna heb ik npm en Node.js geïnstalleerd, waarmee ik vervolgens code kan uitvoeren vanuit bestanden met een *.js-resolutie
sudo apt update
sudo apt install nodejs
sudo apt install npm
Ik raad ten zeerste aan om in dit stadium via uw console een verbinding met de server tot stand te brengen. Hier
5. Hoe u de code voor uw eerste bot schrijft.
Maar nu is het voor mij slechts een ontdekking. Elk programma bestaat uit slechts regels tekst. Ze kunnen overal worden ingevoegd, opgeslagen met de gewenste extensie, en dat is alles. Je bent mooi. ik gebruikte
Ik heb een nieuw bestand gemaakt, waarin ik de code uit het voorbeeld op de telegrafpagina heb ingevoegd en opgeslagen in het bestand index.js (in het algemeen is het niet nodig om het bestand zo te noemen, maar dit is gebruikelijk). Belangrijk: voer in plaats van BOT_TOKEN uw API-sleutel uit de tweede alinea in.
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. Code uploaden naar de server via github
Nu moest ik deze code op de een of andere manier naar de server uploaden en uitvoeren. Dit werd voor mij een uitdaging. Als gevolg hiervan realiseerde ik me na veel beproevingen dat het gemakkelijker zou zijn om een bestand op github te maken waarmee je de code kunt bijwerken met een commando in de console. Ik heb een account geregistreerd op
7. Bestanden uploaden naar de server via github deel 2
Ik moest een programma op de server installeren dat bestanden van git zou downloaden. Ik installeerde git op de server door in de console te typen
apt-get install git
Daarna moest ik de bestandsupload configureren. Om dit te doen, typte ik in de opdrachtregel
git clone git://github.com/b0tank/bot.git bot
Als gevolg hiervan werd alles van het project naar de server geüpload. De fout in dit stadium was dat ik in wezen een tweede map maakte in de reeds bestaande botmap. Het adres van het bestand zag eruit als */bot/bot/index.js
Ik besloot dit probleem te negeren.
En om de telegrafbibliotheek te laden, die we in de eerste coderegel opvragen, typt u de opdracht in de console.
npm install telegraf
8. Hoe een bot te lanceren
Om dit te doen, terwijl u zich in de map met het bestand bevindt (om via de console van map naar map te gaan, voert u de opdracht format uit cd bot
Om er zeker van te zijn dat u bent waar u moet zijn, kunt u een opdracht invoeren die in de console alle bestanden en mappen weergeeft die daar aanwezig zijn ls -a
Om te beginnen ging ik de console binnen
node index.js
Als er geen fout is, is alles in orde en werkt de bot. Zoek hem op telegram. Als er een fout optreedt, pas dan uw kennis vanaf punt 1 toe.
9. Hoe je een bot op de achtergrond laat draaien
Al snel zul je merken dat de bot alleen werkt als je zelf in de console zit. Om dit probleem op te lossen heb ik het commando gebruikt
screen
Hierna verschijnt een scherm met wat tekst. Dit betekent dat alles in orde is. U bevindt zich op een virtuele server op een cloudserver. Om beter te begrijpen hoe het allemaal werkt -
node index.js
10. Hoe de bot werkt en hoe je de functionaliteit ervan kunt uitbreiden
Wat kan onze voorbeeldbot doen? Hij kan
bot.start((ctx) => ctx.reply('Welcome!'))
zeg "Welkom!" op het moment van starten (probeer de tekst te wijzigen)
bot.help((ctx) => ctx.reply('Send me a sticker'))
stuur als reactie op het standaard /help-commando het bericht “Stuur mij een sticker”
bot.on('sticker', (ctx) => ctx.reply(''))
goedkeuring sturen als reactie op een sticker
bot.hears('hi', (ctx) => ctx.reply('Hey there'))
antwoord “Hé daar” als ze “hallo” naar hem schrijven
bot.launch()
Als je naar de code kijkt op ctx.replyWithPhoto
Hiermee kunt u een specifieke foto of gif verzenden als reactie op een specifieke tekst.
Een aanzienlijk deel van de code is geschreven door kinderen van 11-13 jaar, aan wie ik toegang gaf tot de bot. Ze hebben hun user-case ingevoerd. Ik denk dat het gemakkelijk is om te zien welk onderdeel door hen is gemaakt.
Het bericht “Jake” krijgt bijvoorbeeld een GIF met een beroemd personage uit de tekenfilm Adventure Time.
Om de bot verder te ontwikkelen moet je een toetsenbord aansluiten, zie bijvoorbeeld voorbeelden
11. Hoe u de code kunt bijwerken en de bot opnieuw kunt opstarten
Vergeet niet dat je de code niet alleen op github moet bijwerken, maar ook op de server. Dit is eenvoudig te doen: stop de bot (druk op ctrl+c),
- ga naar de console terwijl u zich in de doelmap bevindt, git pull
— we lanceren de bot opnieuw met het commando node index.js
EINDE
Veel van de dingen die in dit bestand worden beschreven, zullen voor geavanceerde programmeurs overduidelijk zijn. Toen ik echter zelf in één klap over de kloof naar de wereld van bots probeerde te springen, miste ik zo'n gids echt. Een gids die geen zaken mist die voor iedere IT-specialist voor de hand liggend en eenvoudig zijn.
In de toekomst plan ik een bericht over hoe u uw eerste toepassing op ReactNative in dezelfde stijl kunt maken, abonneer u!
Bron: www.habr.com