Gids: hoe je een eenvoudige Telegram-bot in JS maakt voor een beginner in programmeren

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:

Gids: hoe je een eenvoudige Telegram-bot in JS maakt voor een beginner in programmeren

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 cursus op Codecademy en was zeer opgetogen. De eerste 7 dagen zijn gratis. Echte projecten. Ik raad aan. Het voltooien ervan duurde ongeveer 25 uur. Eigenlijk was niet alles nuttig. Zo ziet de opbouw van de cursus eruit en het eerste blok in detail.

Gids: hoe je een eenvoudige Telegram-bot in JS maakt voor een beginner in programmeren

2. Hoe registreer ik een bot?

Dit heeft mij in het begin erg geholpen Dit artikel van de blog van een zekere Archakov. Hij kauwt op het allereerste begin. Maar het belangrijkste is dat er instructies zijn voor het registreren van een bot. Ik kan het niet beter schrijven, en aangezien dit het gemakkelijkste deel is, zal ik alleen de essentie opschrijven. U moet een bot maken en de API verkrijgen. Dit gebeurt via een andere bot: @BotFather. Vind hem op telegram, schrijf hem, volg het eenvoudige pad en verkrijg (bewaar!) een API-sleutel (dit is een reeks cijfers en letters). Het kwam later goed van pas.

Gids: hoe je een eenvoudige Telegram-bot in JS maakt voor een beginner in programmeren

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 telegraaf, die op de een of andere manier met iets verbonden moest worden met behulp van npm of garen. Dit is ongeveer hoe ik toen begreep waar de inzet van een bot uit bestond. Lach hier. Ik zal niet beledigd zijn. De voorbeelden onderaan de pagina hebben mij het meest geholpen tijdens het maken van de bot:

Gids: hoe je een eenvoudige Telegram-bot in JS maakt voor een beginner in programmeren

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 vscale.io Ik heb 100 roebel uitgegeven en de goedkoopste Ubuntu-server gekocht (zie afbeelding).

Gids: hoe je een eenvoudige Telegram-bot in JS maakt voor een beginner in programmeren

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 instructie Hierdoor kunt u rechtstreeks via de console van uw computer met de server werken.

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 Atoom, maar in werkelijkheid kun je gewoon in een standaard notitieblok schrijven. Het belangrijkste is om het bestand later in de gewenste extensie op te slaan. Het is alsof u tekst in Word schrijft en deze opslaat.

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 GitHub en deed geen probleem, waar ik het bestand heb geüpload. Daarna moest ik uitzoeken hoe ik het uploaden van bestanden van mijn account (open!) naar de server in de bot-map kon instellen (als je deze plotseling verliet, schrijf dan gewoon cd bot).

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 - hier is het artikel. Ga gewoon naar uw map en voer de opdracht in om de bot te starten

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()

Gids: hoe je een eenvoudige Telegram-bot in JS maakt voor een beginner in programmeren

Als je naar de code kijkt op GitHub, dan zul je snel begrijpen dat ik niet ver van deze functionaliteit ben afgeweken. Wat actief gebruikt wordt is de functie 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.

Gids: hoe je een eenvoudige Telegram-bot in JS maakt voor een beginner in programmeren

Om de bot verder te ontwikkelen moet je een toetsenbord aansluiten, zie bijvoorbeeld voorbeelden vandaar

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

Voeg een reactie