Botxona

Tekshiruv natijasini o'qish (🟒/🟑/πŸ”΄)

Har safar ZIP yoki GitHub orqali kod yuklaganingizda, Botxona avtomatik tekshiruv o'tkazadi va har bir band uchun natija ko'rsatadi:

  • 🟒 Yashil (pass) β€” hammasi joyida, hech narsa qilish shart emas.
  • 🟑 Sariq (warn) β€” bot baribir ishga tushadi, lekin diqqat qilinishi kerak bo'lgan nuqta bor.
  • πŸ”΄ Qizil (fail) β€” jiddiy muammo, bot qurilmaydi. Muammoni tuzatib qayta yuklashingiz kerak.

Sariq yoki qizil natija chiqsa, hisobot ostida "AI-tuzatish prompti" tugmasi chiqadi β€” uni nusxalab ChatGPT/Claude/Gemini'ga bersangiz, ular muammoni tushuntirib, tuzatilgan kodni qaytaradi.

Arxiv tekshiruvi

ZIP faylning hajmi, fayllar soni va turlari belgilangan chegaralarga mos kelishini tekshiradi. Qizil bo'lsa β€” arxiv juda katta yoki ruxsat etilmagan fayl turi (masalan .exe) bor.

GitHub orqali ulaganda bu bosqich "Manba kodini olish" deb ataladi. Qizil bo'lsa β€” repozitoriya topilmadi, yopiq (private) yoki ko'rsatilgan branch yo'q. Havolani brauzerda ochib tekshiring, repozitoriyani ochiq qiling yoki kodni ZIP qilib yuklang. Bu holatda AI-prompt kerak emas β€” muammo kodda emas, havolada.

Til aniqlash

Loyiha Python yoki Node.js ekanini aniqlaydi. Qizil bo'lsa β€” arxiv ildizida requirements.txt (Python) yoki package.json (Node.js) topilmadi. Ko'pincha sabab: bu fayllar arxivga qo'shilmagan yoki noto'g'ri papkadan ZIP qilingan. Arxivni to'g'ri tayyorlash bo'yicha yo'riqnomani ko'ring.

1. Token faqat BOT_TOKEN dan

Kodda ochiq (qattiq yozilgan) token borligini tekshiradi. Topilsa β€” qizil, chunki bu xavfsizlik xatari. Tuzatish: 6 qoida β€” 1-band.

2. API manzil TELEGRAM_API_URL dan

TELEGRAM_API_URL ishlatilayotganini tekshiradi. Ishlatilmasa β€” qizil (analitika ishlamaydi). Ishlatilgan, lekin yoniga api.telegram.org ga to'g'ridan-to'g'ri murojaat ham bo'lsa β€” sariq. Tuzatish: 6 qoida β€” 2-band.

3. Kutubxonalar versiyasi

requirements.txt yoki package.json borligi va versiyalar aniq ko'rsatilganini tekshiradi. Fayl umuman yo'q bo'lsa β€” qizil. Versiyasiz kutubxonalar bo'lsa β€” sariq. Tuzatish: 6 qoida β€” 3-band.

4. Kirish nuqtasi

Qaysi fayl ishga tushirilishini aniqlaydi (main.py, bot.py, package.json dagi start skripti yoki botxona.yaml). Bir nechta nomzod topilsa β€” sariq (birinchisi tanlanadi, lekin aniqlik uchun botxona.yaml qo'shing). Hech narsa topilmasa β€” qizil. Tuzatish: botxona.yaml.

5. DATA_DIR

Bot fayl yozayotgan bo'lsa, DATA_DIR ishlatilayotganini tekshiradi. Tashqi ma'lumotlar bazasi (DATABASE_URL va h.k.) ishlatilsa β€” bu ham "pass" hisoblanadi (zaxira mas'uliyati o'zingizda). DATA_DIRsiz to'g'ridan-to'g'ri diskka yozish β€” sariq. Tuzatish: 6 qoida β€” 5-band.

6. .env.example

Bot ishlatadigan barcha muhit o'zgaruvchilari .env.example da hujjatlashtirilganini tekshiradi. Fayl yo'q yoki ba'zi o'zgaruvchilar tushib qolgan bo'lsa β€” sariq (bot ishlaydi, lekin panelda sozlamalar formasi to'liq bo'lmasligi mumkin β€” ularni qo'lda qo'shishingiz mumkin). Tuzatish: 6 qoida β€” 6-band.

Xavfsizlik skaneri

Kod ichida mayning, reverse-shell, obfuskatsiyalangan exec/eval, curl | sh kabi zararli naqshlar qidiriladi. Bunday narsa topilsa β€” qizil va build to'xtatiladi (bu muzokara qilinmaydigan qoida). Ba'zi zararsiz, lekin diqqat talab qiladigan holatlar (masalan SMTP, 25-port) β€” sariq. To'liq ro'yxat: Xavfsizlik (texnik).

Build

Kod uchun avtomatik Dockerfile yaratilib, konteyner quriladi. Build xatosi (masalan kutubxona o'rnatilmadi) bo'lsa β€” qizil, va loglarning oxirgi qatorlari hisobotda ko'rsatiladi.

Smoke-test

Build muvaffaqiyatli bo'lgach, bot bir necha soniya (odatda 30 soniya) davomida sinov rejimida ishga tushiriladi: konteyner darhol qulab tushmasligi, xotira yetarli bo'lishi tekshiriladi. Bu bosqichda muammo chiqsa β€” bot production'ga chiqmaydi, sabab ko'rsatiladi.

Nima uchun smoke-test muhim?

Ba'zi xatolar faqat ishga tushgandan keyin ko'rinadi (masalan noto'g'ri import, ishlamaydigan token). Smoke-test shu xatolarni real foydalanuvchilarga yetib borishidan oldin tutib qoladi.

Keyingi qadam

Natija sariq yoki qizil bo'lsa: hisobotdagi AI-tuzatish promptini nusxalab AI'ga bering, yoki qo'lda 6 qoida bo'yicha tuzating va qayta yuklang. Hammasi joyida bo'lsa: botni sinab ko'ring, so'ng to'lovga o'ting.