Започнах да се гмуркам в света на ИТ само преди три седмици. Сериозно, преди три седмици дори не разбирах синтаксиса на HTML и запознаването с езиците за програмиране завърши с 10-годишна учебна програма на Pascal. Все пак реших да отида на IT лагер, за чиито деца би било хубаво да направя бот. Реших, че не е толкова трудно.
Това започна едно дълго пътуване, в което аз:
- внедри облачен сървър с Ubuntu,
- регистриран в GitHub,
- научи основния синтаксис на JavaScript,
- прочетете много статии на английски и руски,
- най-накрая направи бот
- най-накрая написа този пост.
Крайният резултат изглеждаше така:
Веднага ще кажа, че това е статия за начинаещи - само за да разберете как да правите елементарни неща от самото начало.
И също така - за напреднали програмисти - само за да ги разсмеете малко.
1. Как се пише код в JS?
Разбрах, че си струва първо да разбера синтаксиса на езика. Изборът падна върху JavaScript, просто защото следващата стъпка за мен беше да създам приложение в ReactNative. Започнах с
2. Как да регистрирам бот?
Помогна ми много в началото
3. Как изглежда кодът на бота?
След дълго проучване на статиите разбрах, че си струва да използвам някаква библиотека (код на трета страна във формат на модул), за да не страдам от изучаването на API на телеграмата и създаването на големи парчета код от нулата. Намерих рамка
3. Как да създадете свой собствен облачен сървър за 100 рубли
След много търсене разбрах, че командата 'npm' от снимката по-горе се отнася за командния ред. Командният ред е навсякъде, но за да можете да го изпълните, трябва да инсталирате NodePackageManager. Проблемът беше, че програмирах на PixelBook с ChromeOS. Ще пропусна голям блок тук за това как се запознах с Linux - за повечето това е празно и ненужно. Ако имате Windows или MacBook, вече имате конзола.
С две думи инсталирах Linux през Crostini.
В процеса обаче разбрах, че за да работи ботът през цялото време (а не само когато компютърът ми е включен), имам нужда от облачен сървър. аз избирам
4. Как да подготвим сървъра за стартиране на бота
След това разбрах, че трябва да направя някаква папка на сървъра, в която да поставя файла с текста на кода. За да направя това, в конзолата (стартирайте директно на сайта чрез бутона "Отвори конзолата"), карах
mkdir bot
bot - това стана името на папката ми. След това инсталирах npm и Node.js, което ще ми позволи по-късно да стартирам код от *.js файлове
sudo apt update
sudo apt install nodejs
sudo apt install npm
Силно препоръчвам на този етап да настроите връзка със сървъра през вашата конзола. Тук
5. Как да кодираме първия бот.
Сега това е просто откровение за мен. Всяка програма е само редове текст. Можете да ги карате навсякъде, да запишете с желаното разширение и това е. Ти си красив. използвах
Направих нов файл, в който вмъкнах кода от примера на страницата на 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, който ви позволява да актуализирате кода с помощта на команда в конзолата. Регистрирах акаунт с
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()
Ако погледнете кода на ctx.replyWithPhoto
Тя ви позволява да изпратите дадена снимка или gif в отговор на определен текст.
Значителна част от кода е написан от деца на възраст 11-13 години, на които дадох достъп до бота. Те въведоха своите потребителски случаи. Мисля, че е лесно да се каже коя част е извършена от тях.
Например GIF с известен герой от анимационния филм „Време за приключения“ идва към съобщението „Джейк“.
За да развиете бота по-нататък, трябва да свържете клавиатурата, вижте примери, например
11. Как да актуализирате кода и да рестартирате бота
Не забравяйте, че трябва да актуализирате кода не само на github, но и на сървъра. Лесно е да направите това - спрете бота (натиснете ctrl + c),
- влезте в конзолата, като сте в целевата папка, git pull
- рестартирайте бота с командата node index.js
КРАЙ
Много от нещата, описани в този файл, ще бъдат супер очевидни за напреднали програмисти. Въпреки това, когато самият аз се опитах да прескоча бездната в света на ботовете с един замах, наистина ми липсваше такова ръководство. Ръководство, което не пропуска очевидни и прости неща за всеки IT специалист.
В бъдеще планирам публикация за това как да направя първото си приложение в ReactNative в същия стил, абонирайте се!
Източник: www.habr.com