من فقط سه هفته پیش شروع به غوطه ور شدن در دنیای IT کردم. به طور جدی، سه هفته پیش من حتی سینتکس HTML را نمی فهمیدم، و مقدمه من با زبان های برنامه نویسی با برنامه درسی مدرسه در پاسکال از 10 سال پیش به پایان رسید. با این حال، تصمیم گرفتم به یک کمپ فناوری اطلاعات بروم، جایی که بچه ها خوب است که یک ربات بسازند. من تصمیم گرفتم که به سختی آنقدر سخت است.
این یک سفر طولانی را آغاز کرد که در آن من:
- یک سرور ابری با اوبونتو مستقر کرد،
- ثبت شده در GitHub،
- سینتکس پایه جاوا اسکریپت را یاد گرفت،
- تعداد زیادی مقاله به زبان انگلیسی و روسی بخوانید،
- بالاخره یک ربات ساخت،
- بالاخره این مقاله را نوشتم.
نتیجه نهایی چیزی شبیه به این بود:
من فوراً خواهم گفت که این مقاله ای برای مبتدیان است - فقط برای اینکه بفهمید چگونه کارهای ابتدایی را از همان ابتدا انجام دهید.
و همچنین - برای برنامه نویسان پیشرفته - فقط برای اینکه کمی بخندند.
1. چگونه در JS کد بنویسیم؟
فهمیدم که حداقل ارزش این را دارد که ابتدا نحو زبان را بفهمم. انتخاب روی جاوا اسکریپت افتاد، زیرا قدم بعدی برای من ایجاد یک برنامه در ReactNative بود. من شروع کردم با
2. چگونه ربات ثبت کنیم؟
اوایل خیلی به من کمک کرد
3. کد ربات چه شکلی است؟
پس از مطالعه طولانی مقالات، متوجه شدم که ارزش استفاده از نوعی کتابخانه (کد شخص ثالث در قالب ماژول) را دارد تا نگران مطالعه API تلگرام و ایجاد کدهای بزرگ از ابتدا نباشم. چارچوب را پیدا کردم
3. چگونه سرور ابری خود را با 100 روبل ایجاد کنید
پس از جستجوی زیاد متوجه شدم که دستور 'npm' در تصویر بالا به خط فرمان اشاره دارد. خط فرمان در همه جا وجود دارد، اما برای اینکه بتوانید آن را اجرا کنید، باید NodePackageManager را نصب کنید. مشکل این بود که من روی پیکسل بوک با ChromeOS برنامه نویسی می کردم. من در اینجا از یک بلوک بزرگ در مورد نحوه شناختم با لینوکس صرف نظر می کنم - برای اکثر افراد، این خالی و غیر ضروری است. اگر ویندوز یا مک بوک دارید، از قبل یک کنسول دارید.
به طور خلاصه، من لینوکس را از طریق Crostini نصب کردم.
با این حال، در این فرآیند، متوجه شدم که برای اینکه ربات همیشه کار کند (و نه فقط زمانی که رایانه من روشن است)، به یک سرور ابری نیاز دارم. من انتخاب میکنم
4. نحوه آماده سازی سرور برای اجرای ربات
بعد از آن متوجه شدم که باید پوشه ای روی سرور ایجاد کنم که فایل را با متن کد در آن قرار دهم. برای انجام این کار، در کنسول (مستقیماً از طریق دکمه "کنسول باز" در سایت اجرا می شود)، رانندگی کردم
mkdir bot
ربات - این نام پوشه من شد. پس از آن، من npm و Node.js را نصب کردم، که به من اجازه می دهد کد را از فایل هایی با وضوح *.js اجرا کنم.
sudo apt update
sudo apt install nodejs
sudo apt install npm
من به شدت توصیه می کنم در این مرحله از طریق کنسول خود به سرور اتصال برقرار کنید. اینجا
5. نحوه کدنویسی ربات اول.
اما اکنون برای من فقط یک کشف است. هر برنامه ای فقط خطوط متنی است. آنها را می توان در هر جایی درج کرد، با پسوند مورد نظر ذخیره کرد، و تمام. شما زیبا هستی. من استفاده کردم
من یه فایل جدید ساختم که کد نمونه رو تو صفحه تلگراف گذاشتم و تو فایل 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 بود
تصمیم گرفتم این مشکل را نادیده بگیرم.
و برای بارگذاری کتابخانه telegraf که در خط اول کد درخواست می کنیم، دستور را در کنسول تایپ کنید.
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
این امکان را به شما می دهد تا عکس یا گیف مشخصی را در پاسخ به یک متن خاص ارسال کنید.
بخش قابل توجهی از کد توسط کودکان 11-13 ساله نوشته شده است که من به آنها اجازه دسترسی به ربات را دادم. آنها وارد کیس کاربری خود شدند. من فکر می کنم به راحتی می توان تشخیص داد که کدام قسمت توسط آنها ساخته شده است.
به عنوان مثال، پیام "جیک" یک GIF با یک شخصیت معروف از کارتون Adventure Time دریافت می کند.
برای توسعه بیشتر ربات، باید صفحه کلید را وصل کنید، مثال هایی را ببینید، به عنوان مثال،
11. نحوه به روز رسانی کد و راه اندازی مجدد ربات
فراموش نکنید که شما باید کد را نه تنها در github، بلکه در سرور نیز به روز کنید. انجام این کار آسان است - ربات را متوقف کنید (ctrl + c را فشار دهید)،
- در حالی که در پوشه هدف هستید وارد کنسول شوید، git pull
— با دستور دوباره ربات را راه اندازی می کنیم node index.js
END
بسیاری از مواردی که در این فایل توضیح داده شده است برای برنامه نویسان پیشرفته بسیار واضح است. با این حال، وقتی خودم سعی کردم یکباره از ورطه به دنیای ربات ها بپرم، واقعاً چنین راهنمایی را از دست دادم. راهنمایی که برای هیچ متخصص IT چیزهای واضح و ساده را از دست نمی دهد.
در آینده، من یک پست در مورد نحوه ساخت اولین برنامه خود در ReactNative به همان سبک برنامه ریزی می کنم، مشترک شوید!
منبع: www.habr.com