https://github.com/alsheroziy/web-app
https://github.com/alsheroziy/web-app
bot rash-model
Last synced: about 1 month ago
JSON representation
- Host: GitHub
- URL: https://github.com/alsheroziy/web-app
- Owner: alsheroziy
- Created: 2025-10-12T17:58:26.000Z (9 months ago)
- Default Branch: main
- Last Pushed: 2026-01-20T07:38:05.000Z (5 months ago)
- Last Synced: 2026-05-01T12:33:31.856Z (2 months ago)
- Topics: bot, rash-model
- Language: TypeScript
- Homepage:
- Size: 1.4 MB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Onatili RASH Test - Telegram Mini App
Ona tili (O'zbek tili) bilimini tekshirish uchun Telegram Mini App.
## Loyiha haqida
Bu loyiha Telegram bot orqali foydalanuvchilarning ona tilidan bilim darajasini tekshirish uchun mo'ljallangan. Foydalanuvchilar Telegram botga o'z ism va familiyalarini kiritib, test topshirishlari mumkin.
## Texnologiyalar
- **Next.js 15** - React framework
- **TypeScript** - Type safety
- **Tailwind CSS v4** - Styling
- **ShadCN UI** - UI komponentlar
- **Telegram WebApp API** - Telegram integratsiyasi
## O'rnatish
1. Dependencies o'rnatish:
```bash
npm install
```
2. Development serverni ishga tushirish:
```bash
npm run dev
```
3. Production build:
```bash
npm run build
npm start
```
## Telegram Bot sozlash
### 1. Bot yaratish
1. Telegram'da [@BotFather](https://t.me/BotFather) botini oching
2. `/newbot` buyrug'ini yuboring
3. Bot nomini kiriting (masalan: "Onatili RASH Test")
4. Bot username'ini kiriting (masalan: "onatili_rash_bot")
5. BotFather sizga **API token** beradi, uni saqlang
### 2. Bot kodini yozish
Python uchun misol (telebot yoki aiogram kutubxonasidan foydalanish mumkin):
```python
import telebot
from telebot import types
# Bot tokenini kiriting
BOT_TOKEN = "YOUR_BOT_TOKEN_HERE"
# Web App URL'ingizni kiriting
WEB_APP_URL = "https://your-domain.vercel.app" # yoki localhost:3000
bot = telebot.TeleBot(BOT_TOKEN)
# Foydalanuvchi ma'lumotlarini saqlash
user_data = {}
@bot.message_handler(commands=['start'])
def start(message):
chat_id = message.chat.id
bot.send_message(
chat_id,
"👋 Assalomu alaykum! Onatili RASH testiga xush kelibsiz.\n\n"
"Testni boshlash uchun ismingizni kiriting:"
)
bot.register_next_step_handler(message, get_first_name)
def get_first_name(message):
chat_id = message.chat.id
first_name = message.text.strip()
if not first_name:
bot.send_message(chat_id, "❌ Ism bo'sh bo'lishi mumkin emas. Qaytadan kiriting:")
bot.register_next_step_handler(message, get_first_name)
return
user_data[chat_id] = {'first_name': first_name}
bot.send_message(chat_id, "Familiyangizni kiriting:")
bot.register_next_step_handler(message, get_last_name)
def get_last_name(message):
chat_id = message.chat.id
last_name = message.text.strip()
if not last_name:
bot.send_message(chat_id, "❌ Familiya bo'sh bo'lishi mumkin emas. Qaytadan kiriting:")
bot.register_next_step_handler(message, get_last_name)
return
user_data[chat_id]['last_name'] = last_name
# Web App tugmasini yaratish
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
web_app = types.WebAppInfo(url=WEB_APP_URL)
button = types.KeyboardButton(text="🎯 Testni ishlash", web_app=web_app)
markup.add(button)
bot.send_message(
chat_id,
f"✅ Ma'lumotlar saqlandi!\n\n"
f"👤 Ism: {user_data[chat_id]['first_name']}\n"
f"👤 Familiya: {user_data[chat_id]['last_name']}\n\n"
f"Testni boshlash uchun tugmani bosing:",
reply_markup=markup
)
@bot.message_handler(commands=['reset'])
def reset(message):
chat_id = message.chat.id
if chat_id in user_data:
del user_data[chat_id]
bot.send_message(chat_id, "🔄 Ma'lumotlar o'chirildi. /start buyrug'i bilan qaytadan boshlang.")
# Botni ishga tushirish
print("Bot ishga tushdi...")
bot.infinity_polling()
```
### 3. Bot ishga tushirish
1. Python va kerakli kutubxonalarni o'rnating:
```bash
pip install pytelegrambotapi
```
2. Bot kodini fayl ichiga saqlang (masalan: `bot.py`)
3. `BOT_TOKEN` va `WEB_APP_URL` qiymatlarini o'zgartiring
4. Botni ishga tushiring:
```bash
python bot.py
```
### 4. Mini App sozlash
1. [@BotFather](https://t.me/BotFather) ga `/mybots` buyrug'ini yuboring
2. O'z botingizni tanlang
3. "Bot Settings" → "Menu Button" → "Configure Menu Button"
4. Web App URL'ini kiriting (masalan: `https://your-domain.vercel.app`)
## Deploy qilish
### Vercel'ga deploy
1. Vercel'ga push qiling:
```bash
npm install -g vercel
vercel
```
2. Deploy URL'ni oling va bot kodida `WEB_APP_URL` ga qo'ying
### Domain sozlash
Deploy qilingandan so'ng, URL'ni bot konfiguratsiyasiga qo'shishni unutmang.
## Xususiyatlar
### ✅ Tayyor
- [x] Telegram WebApp integratsiyasi
- [x] Foydalanuvchi profili (ism, familiya)
- [x] Test interfeysi (20 savol)
- [x] Timer (30 daqiqa)
- [x] Savollarga javob berish
- [x] Natijalarni ko'rsatish
- [x] Responsiv dizayn
- [x] Dark/Light mode qo'llab-quvvatlash
### 🚧 Keyingi qadamlar
- [ ] Backend API yaratish
- [ ] Savollar bazasi
- [ ] Natijalarni saqlash
- [ ] Statistika va tahlil
- [ ] Leaderboard (reyting)
- [ ] Turli xil test turlari
## Fayl strukturasi
```
rash-onatili/
├── app/
│ ├── (root)/
│ │ ├── page.tsx # Bosh sahifa (profil + test)
│ │ ├── layout.tsx # Telegram Provider
│ │ └── test/
│ │ ├── page.tsx # Test sahifasi
│ │ └── result/
│ │ └── page.tsx # Natijalar sahifasi
│ ├── layout.tsx # Root layout
│ └── globals.css # Global CSS
├── components/
│ ├── telegram-provider.tsx # Telegram context
│ ├── profile-card.tsx # Profil kartasi
│ ├── test-card.tsx # Test kartasi
│ └── ui/
│ └── button.tsx # UI komponent
├── lib/
│ ├── telegram.ts # Telegram utilities
│ └── utils.ts # Helper functions
└── package.json
```
## Development
```bash
# Development
npm run dev
# Lint & format
npm run lint
npm run format
# Build
npm run build
```
## Murojaat
Savollar yoki muammolar bo'lsa, issue oching.