Ръководство: как да направите прост бот за Telegram в JS за начинаещ в програмирането

Започнах да се гмуркам в света на ИТ само преди три седмици. Сериозно, преди три седмици дори не разбирах синтаксиса на HTML и запознаването с езиците за програмиране завърши с 10-годишна учебна програма на Pascal. Все пак реших да отида на IT лагер, за чиито деца би било хубаво да направя бот. Реших, че не е толкова трудно.

Това започна едно дълго пътуване, в което аз:

  • внедри облачен сървър с Ubuntu,
  • регистриран в GitHub,
  • научи основния синтаксис на JavaScript,
  • прочетете много статии на английски и руски,
  • най-накрая направи бот
  • най-накрая написа този пост.

Крайният резултат изглеждаше така:

Ръководство: как да направите прост бот за Telegram в JS за начинаещ в програмирането

Веднага ще кажа, че това е статия за начинаещи - само за да разберете как да правите елементарни неща от самото начало.

И също така - за напреднали програмисти - само за да ги разсмеете малко.

1. Как се пише код в JS?

Разбрах, че си струва първо да разбера синтаксиса на езика. Изборът падна върху JavaScript, просто защото следващата стъпка за мен беше да създам приложение в ReactNative. Започнах с обменен курс в Codecademy и беше много ентусиазиран. Първите 7 дни са безплатни. Реални проекти. Препоръчвам. Преминаването отне около 25 часа. Всъщност не всичко беше полезно. Ето как изглежда структурата на курса и първият блок в детайли.

Ръководство: как да направите прост бот за Telegram в JS за начинаещ в програмирането

2. Как да регистрирам бот?

Помогна ми много в началото тази статия от блога на някой си Арчаков. Той дъвче в самото начало. Но основното, което е там, са инструкциите за регистрация на бота. Няма да пиша по-добре и тъй като това е най-лесната част, ще напиша само същината. Трябва да създадете бот и да получите неговия API. Това става чрез друг бот – @BotFather. Намерете го в telegram, пишете му, следвайте простия път и вземете (запазете!) API ключ (това е набор от цифри и букви). По-късно ми беше полезно.

Ръководство: как да направите прост бот за Telegram в JS за начинаещ в програмирането

3. Как изглежда кодът на бота?

След дълго проучване на статиите разбрах, че си струва да използвам някаква библиотека (код на трета страна във формат на модул), за да не страдам от изучаването на API на телеграмата и създаването на големи парчета код от нулата. Намерих рамка телеграф, който трябваше по някакъв начин да бъде свързан с нещо, използвайки npm или yarn. Така разбрах тогава в какво се състои внедряването на бота. Смейте се тук. Няма да се обидя. Примерите в долната част на страницата ми помогнаха най-много при последващото създаване на бота:

Ръководство: как да направите прост бот за Telegram в JS за начинаещ в програмирането

3. Как да създадете свой собствен облачен сървър за 100 рубли

След много търсене разбрах, че командата 'npm' от снимката по-горе се отнася за командния ред. Командният ред е навсякъде, но за да можете да го изпълните, трябва да инсталирате NodePackageManager. Проблемът беше, че програмирах на PixelBook с ChromeOS. Ще пропусна голям блок тук за това как се запознах с Linux - за повечето това е празно и ненужно. Ако имате Windows или MacBook, вече имате конзола.

С две думи инсталирах Linux през Crostini.

В процеса обаче разбрах, че за да работи ботът през цялото време (а не само когато компютърът ми е включен), имам нужда от облачен сървър. аз избирам vscale.io Хвърлих 100 рубли, купих най-евтиния Ubuntu сървър (вижте снимката).

Ръководство: как да направите прост бот за Telegram в JS за начинаещ в програмирането

4. Как да подготвим сървъра за стартиране на бота

След това разбрах, че трябва да направя някаква папка на сървъра, в която да поставя файла с текста на кода. За да направя това, в конзолата (стартирайте директно на сайта чрез бутона "Отвори конзолата"), карах

mkdir bot

bot - това стана името на папката ми. След това инсталирах npm и Node.js, което ще ми позволи по-късно да стартирам код от *.js файлове

sudo apt update
sudo apt install nodejs
sudo apt install npm

Силно препоръчвам на този етап да настроите връзка със сървъра през вашата конзола. Тук инструкция Това ще ви позволи да работите със сървъра директно през конзолата на вашия компютър.

5. Как да кодираме първия бот.

Сега това е просто откровение за мен. Всяка програма е само редове текст. Можете да ги карате навсякъде, да запишете с желаното разширение и това е. Ти си красив. използвах Атом, но всъщност можете просто да пишете в стандартен бележник. Основното нещо е да запишете файла по-късно в желаното разширение. Това е като да напишете текст в Word и да го запазите.

Направих нов файл, в който вмъкнах кода от примера на страницата на telegraf и го записах във файла index.js (изобщо не е необходимо да се казва така, но е прието). Важно - вместо BOT_TOKEN, поставете своя API ключ от втория параграф.

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. Как да изпратите кода до сървъра чрез github

Сега трябваше по някакъв начин да кача този код на сървъра и да го стартирам. За мен това се превърна в предизвикателство. В крайна сметка, след много изпитания, осъзнах, че би било по-лесно да създам файл в github, който ви позволява да актуализирате кода с помощта на команда в конзолата. Регистрирах акаунт с GitHub и направи нов проекткъдето качих файла. След това трябваше да разбера как да настроя качване на файлове от моя (отворен!) акаунт на сървъра в папката на бота (ако внезапно сте го напуснали, просто напишете cd bot).

7. Как да качвате файлове на сървъра чрез github част 2

Трябваше да сложа програма на сървъра, която да тегли файлове от git. Инсталирах git на сървъра, като написах

apt-get install git

След това трябваше да настроя качване на файлове. За да направя това, влязох в командния ред

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

В резултат на това всичко от проекта беше качено на сървъра. Грешката на този етап беше, че по същество направих втора папка във вече съществуващата папка на бота. Адресът на файла изглеждаше като */bot/bot/index.js

Реших да игнорирам този проблем.

И за да заредите телеграфната библиотека, която изискваме в първия ред на кода, въведете командата в конзолата.

npm install telegraf

8. Как да стартирате бота

За да направите това, докато сте в папката с файла (за да се преместите от папка в папка през конзолата, изпълнете командата format cd bot За да сте сигурни, че сте там, където трябва, можете да въведете команда, която ще покаже в конзолата всички файлове и папки, които са там ls -a

За начало влязох в конзолата

node index.js

Ако няма грешка, всичко е наред, ботът работи. Потърсете го в телеграма. Ако има грешка, приложете знанията си от точка 1.

9. Как да стартирате бота във фонов режим

Бързо ще разберете, че ботът работи само когато вие самите седите в конзолата. За да реша този проблем, използвах командата

screen

След това ще се появи екран с малко текст. Това означава, че всичко е наред. Вие сте на виртуален сървър на облачен сървър. За да разберете по-добре как работи всичко - ето статията. Просто отидете във вашата папка и въведете командата, за да стартирате бота

node index.js

10. Как работи ботът и как да разширите функционалността му

Какво може да направи нашият бот от примера? Той може

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

кажете "Добре дошли!" в момента на стартиране (опитайте се да промените текста)

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

в отговор на стандартната команда /help изпратете съобщението „Изпратете ми стикер“

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

изпрати одобрение в отговор на стикер

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

отговорете "Здравей", ако напишат "здравей"
bot.launch()

Ръководство: как да направите прост бот за Telegram в JS за начинаещ в програмирането

Ако погледнете кода на GitHub, тогава бързо ще разберете, че не съм отишъл много далеч от тази функционалност. Това, което се използва активно, е функцията ctx.replyWithPhoto Тя ви позволява да изпратите дадена снимка или gif в отговор на определен текст.

Значителна част от кода е написан от деца на възраст 11-13 години, на които дадох достъп до бота. Те въведоха своите потребителски случаи. Мисля, че е лесно да се каже коя част е извършена от тях.

Например GIF с известен герой от анимационния филм „Време за приключения“ идва към съобщението „Джейк“.

Ръководство: как да направите прост бот за Telegram в JS за начинаещ в програмирането

За да развиете бота по-нататък, трябва да свържете клавиатурата, вижте примери, например следователно

11. Как да актуализирате кода и да рестартирате бота

Не забравяйте, че трябва да актуализирате кода не само на github, но и на сървъра. Лесно е да направите това - спрете бота (натиснете ctrl + c),

- влезте в конзолата, като сте в целевата папка, git pull
- рестартирайте бота с командата node index.js

КРАЙ

Много от нещата, описани в този файл, ще бъдат супер очевидни за напреднали програмисти. Въпреки това, когато самият аз се опитах да прескоча бездната в света на ботовете с един замах, наистина ми липсваше такова ръководство. Ръководство, което не пропуска очевидни и прости неща за всеки IT специалист.

В бъдеще планирам публикация за това как да направя първото си приложение в ReactNative в същия стил, абонирайте се!

Източник: www.habr.com

Добавяне на нов коментар