Bot kompaniya bilimlar bazasidan odatiy savollarga javob beradi, ishonchsiz holatlarni odamga uzatadi.
Qo'llab-quvvatlashga kelgan murojaatlarning sakson foizi bir xil edi: buyurtmam qayerda, tarifni qanday o'zgartiraman, xat nega kelmayapti.
Yordamchini kompaniya bilimlar bazasiga uladik — u faqat shundan javob beradi va o'ylab topmaydi. Ishonch past bo'lsa, suhbat darhol odamga o'tadi.
Ataylab «hammasiga javob beradigan» bot qilmadik. Yomon avtomatik javob jonli operatorni kutishdan ko'ra ko'proq asabiylashtiradi.
Qanday qurilgan
Loyihaning haqiqiy kodidan parcha — ichida nima borligini ko'rish uchun.
TypeScript
type Bucket = { count: number; resetAt: number };const buckets = new Map<string, Bucket>();/** * Ограничение частоты запросов. * Защищает формы от перебора и спама. */export function rateLimit( key: string, limit = 8, windowMs = 60_000,): RateLimitResult { const now = Date.now(); const bucket = buckets.get(key); // Окно истекло или его не было — начинаем заново. if (!bucket || bucket.resetAt < now) { buckets.set(key, { count: 1, resetAt: now + windowMs }); return { ok: true, remaining: limit - 1, retryAfter: 0 }; } if (bucket.count >= limit) { return { ok: false, remaining: 0, retryAfter: Math.ceil((bucket.resetAt - now) / 1000), }; } bucket.count += 1; return { ok: true, remaining: limit - bucket.count, retryAfter: 0 };}Bog'lanish
Loyiha uchun ariza
Shaklni to'ldiring — tafsilotlar va muddatlarni muhokama qilamiz.
Keyingi loyiha
Maktab — maktab portali