Bu loyiha — Telegram orqali mahsulotlarni ko‘rish, savatga qo‘shish va buyurtma berish imkonini beruvchi modulli Telegram Shop Bot tizimi.
- PHP 8.2+
- Telegram Bot SDK (
irazasyed/telegram-bot-sdk) - Illuminate Database (Capsule ORM) – Laravel ORM
- PostgreSQL
- Docker & Docker Compose
- Long Polling (Webhook’siz)
app/
├── Console/
│ ├── Commands/
│ │ ├── MigrateCommand.php
│ │ ├── SetBotCommands.php
│ │ └── ResetBotCommands.php
│ └── ConsoleKernel.php
├── Core/
│ ├── Bot.php
│ ├── Router.php
│ ├── Polling.php
│ ├── FormFlowManager.php
│ ├── Attributes/
│ │ ├── Handler.php
│ │ ├── FormStep.php
│ │ └── Permission.php
│ └── Helpers/
│ ├── SessionHelper.php
│ └── FileHelper.php
├── Handlers/
│ ├── Users/
│ │ ├── StartHandler.php
│ │ ├── RegisterHandler.php
│ │ └── AuthHandler.php
│ └── Shop/
│ ├── ProductViewHandler.php
│ ├── CartHandler.php
│ └── OrderHandler.php
├── Services/
│ ├── LoggerService.php
│ ├── PaginationHelper.php
│ ├── ProductService.php
│ ├── OrderService.php
│ └── CartService.php
└── Data/
└── Config.php
.env fayl yarating (yoki example.env dan nusxa oling):
BOT_TOKEN=YOUR_TELEGRAM_BOT_TOKEN
DB_CONNECTION=pgsql
DB_HOST=db
DB_PORT=5432
DB_DATABASE=shop_bot
DB_USERNAME=postgres
DB_PASSWORD=postgres
CHAT_IDS=1234567
ADMIN_IDS=1234567,9999999
MANAGER_IDS=8888888,7777777
APP_DEBUG=truedocker compose up -d --builddocker compose exec telegram-bot php bin/console migrate| Komanda | Tavsif |
|---|---|
migrate |
Barcha migratsiyalarni ishga tushiradi |
migrate down |
So‘nggi migratsiyalarni orqaga qaytaradi |
migrate refresh |
Hammasini o‘chirib, qayta yaratadi |
docker compose exec telegram-bot php bin/console bot:runBu Polling orqali botni ishga tushiradi:
🤖 Bot started via long polling...
Har bir rol uchun alohida menyu o‘rnatiladi:
/start
/products
/cart
/my_orders
/help
/start
/add_product
/products
/cart
/orders
/notify_users
/help
/start
/orders
/products
/help
Menyularni yangilash:
docker compose exec telegram-bot php bin/console set:commandsEski menyularni tozalash:
docker compose exec telegram-bot php bin/console reset:commands- Har bir
chat_iduchunstepvaanswersma’lumotlarini sessiyada saqlaydi contextbo‘yicha formani boshqaradireset()orqali tozalaydi
#[Handler]attributlari orqali avtomatik handlerlarni topadi#[Permission]orqali rolga asoslangan ruxsatni tekshiradi- Fayl turlari (photo, document va boshqalar) uchun
file downloadimkonini beradi callback_querybilan JSON yokiprefix:dataformatlarini avtomatik ajratadi
- Long polling loop
- Har ishga tushganda avtomatik
SetBotCommandschaqiradi - Har bir
updateuchunBot::run()orqaliRouterni chaqiradi
/productsorqali mahsulotlarni chiqaradi- Inline tugmalar:
▶️ keyingi,◀️ oldingi,🛒 savatga qo‘shish - PaginationHelper orqali page boshqariladi
/cartyoki🛒 Savatimorqali savatni ko‘rsatadi- Inline tugmalar:
✅ Buyurtma berish,🗑 Tozalash - Session orqali cart saqlanadi (
$_SESSION['cart'][$chatId])
✅ Buyurtma berishtugmasi orqali savatdagi mahsulotlardan order yaratadi- Orderlar
ordersjadvalida saqlanadi /my_orderskomandasi orqali foydalanuvchi buyurtmalarini ko‘rishi mumkin
Polling ishga tushganda har safar:
(new \App\Console\Commands\SetBotCommands())->handle();– shu sababli bot restart qilinganda menyular yangilanadi.
| Komanda | Tavsif |
|---|---|
php bin/console migrate |
Migratsiyalarni ishga tushirish |
php bin/console set:commands |
Telegram menyularni o‘rnatish |
php bin/console reset:commands |
Eski menyularni tozalash |
php bin/console bot:run |
Botni ishga tushirish (polling) |
Barcha loglar:
/storage/logs/bot.log
LoggerService quyidagi holatlarni rangli formatda yozadi:
- ✅ SUCCESS
⚠️ WARNING- ❌ ERROR
- ℹ️ INFO
- 🔐 JWT asosida autentifikatsiya
- 🧾 Excel / CSV buyurtma export
- 🧠 AI product recommendation
- 📊 Admin panel (Next.js + API)
Tulqin Muxtorov
GitHub: muxtorov98
🚀 “Chat orqali sotuv — bu kelajakdagi e-commerce!”