3 dəq oxuma

UniBot: Make Your Study Easier

Universitetin ilk semestrində həm özümün, həm də qrup yoldaşlarımın işini asanlaşdırmaq üçün UniBot adlı layihəyə başladım. Əsas məqsədim dərs cədvəli ilə bağlı yaranan qarışıqlığa son qoymaq olsa da, daha sonra inkişaf edərək yeni funksiyalar qazandı. Bu yazıda layihə üzərində işləyərkən istifadə etdiyim texnologiyalar və həll yollarından bəhs edəcəyəm - bəlkə də sizə ilham verər!

Blog Poster
UniBot: Make Your Study Easier

Unique University Bot

Universitetin ilk günlərində dərs cədvəli ilə bağlı ciddi problem yaşayırdıq. Mən özüm üçün kalendar yaratsam da, əksəriyyət bunu etmirdi və ya etmək istəmirdi. Bu isə qrup söhbətində hər gün dərs cədvəlini öyrənmək üçün yüzlərlə mesajın yazılmasına səbəb olurdu.

Mənim əvvəlcədən whatsapp bot yaratmaq bacarığım olduğu üçün, həm öz işimi asanlaşdırmağa, həm də qrupumuzdakı scheduling (cədvəl) məsələsini həll etməyə qərar verdim.

Alətlər

  • NestJS: Saf NodeJS əvəzinə NestJS'dən istifadə etməyimin səbəbi, genişləndirilə bilən, rahat kod interfeysi və TypeScript dəstəyi təqdim etməsidir (sponsor deyil😄).
  • Whatsapp-web.js: WhatsApp üzərində bot yaratmaqda tək seçim olduğu üçün bu kitabxanadan istifadə etməyə başladım. Təqdim etdiyi kod sturukturu çox xoşuma gəldi, ancaq dokumentasiya daha yaxşı ola bilərdi.
  • Prisma && MongoDB: Prisma rahat sorğu (query) yazma və kod idarəetməsini asanlaşdırır. MongoDB isə daha çox pulsuz yaddaş verir.
  • Google Calendar API: Cədvəlin alt-üst həftə strukturunu kodla qurmaq əvəzinə, Google Calendar API-dən istifadə etməyə qərar verdim. Lakin API inteqrasiyası çox vaxt alan və uzundur. Artıq alqoritmlə, calendar olmadan edirəm.
  • Carbon-Now: Code to Image özəlliyi üçün image generator funksiyası görür.
  • Railway Hosting: 3 aylıq kredit ilə pulsuz deploy etdim, sadəcə 4$ kimi simvolik ödəniş etdim. Lakin servislərin sayı artdıqca aylıq maliyyətdə artır. Əlbəttə VPS seçiminidə etmək olar.

Funksiyalar

İlk versiyada botun əsas vəzifəsi hər gün saat 1:20-də (dərsdən çıxdığımız vaxt) növbəti günün cədvəlini göndərmək idi. Daha sonra unikal həllər əlavə edərək botun funksionallığını genişləndirdim. Qalereyadan baxın⬇️.

  • 🚀 /help @[az | en] - Admin və istifadəçi ayrı olmaqla, 2 dildə helpbox göndərir.
  • ⚙ /all - qrupdaki hamını tək əmrlə mention etmək mümkündür
  • 👾 /start - 3sual.az API'sindən istifadə edərək istifadəçilərə tam avtomatlaşdırılmış şəkildə sual və rekvizit şəkillərini göndərən oyunda yazdım.
  • 📃 /wiki [search] @[az | tr] - Defolt olaraq ingilis dilində olmaqla, axtarışa uyğun Wikipedia səhifəsinin məzmununu və posterini göndərir.
  • 👨‍💻 /code [code] - Göndərdiyiniz kodu, highlighted olunmuş şəkilə çevirir.
  • 🔗 /link [link] - Daxil etdiyiniz linki qısaldır. Prisma ilə qeydiyyat edir, daha sonra nextjs tərəfdə dinamik route vasitəsilə lazımı səhifəyə göndərilir.
  • 📅 /tomorrow - Aşağıdaki əmrlərlə birləşdikdə növbəti günə aid məlumatları verir.
  • 📅 /schedule - Bugün və ya sabahın dərs cədvəlini şəxsidən göndərir. Adminlər qrupda işlədərsə, birbaşa qrupa göndərilir.
  • 📋 /tasks - Tapşırıqları əldə etmək üçündür. /add funksiyası vasitəsilə tapşırıq dərs zamanı DB'ə əlavə olunur və lazımi gündə bildiriş göndərilir

Bəhs etdiyim funksionallıqlarla həyatımı asanlaşdıran bu layihə, həmçinin universitetdə əlavə fənn olan SABAH.HUB-ın təşkil etdiyi "Entrepreneurship" dərsində təqdim etməklə, imtahandan keçdim. Eyni zamanda yeni framework və strukturlar öyrənməyimə də kömək etdi. Hal-hazırda layihə davam edir.

Bura qədər oxuduğunuz üçün sizə və ilk gündən etibarən UniBot-u istifadə edərək mənə dəstək olan bütün qrup yoldaşlarıma təşəkkür edirəm!

Images
Images
Images
Images
Images
Images
Images
Images
Kofe al