ibrohm commited on
Commit
928b123
Β·
verified Β·
1 Parent(s): b7f9139

Upload handlers/user.py with huggingface_hub

Browse files
Files changed (1) hide show
  1. handlers/user.py +100 -0
handlers/user.py ADDED
@@ -0,0 +1,100 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from aiogram.filters import Command
2
+ from aiogram.types import Message, WebAppInfo, InlineKeyboardButton, InlineKeyboardMarkup, ReplyKeyboardMarkup, KeyboardButton
3
+ from aiogram import Router, F
4
+ from aiogram.types import Update
5
+ from database import get_db
6
+
7
+ router = Router()
8
+
9
+ def get_main_menu():
10
+ keyboard = ReplyKeyboardMarkup(
11
+ keyboard=[
12
+ [KeyboardButton(text="πŸ“¦ Mahsulotlar")],
13
+ [KeyboardButton(text="πŸ›’ Savat"), KeyboardButton(text="πŸ“‹ Buyurtmalarim")],
14
+ [KeyboardButton(text="πŸ‘€ Profil")],
15
+ ],
16
+ resize_keyboard=True
17
+ )
18
+ return keyboard
19
+
20
+ def get_webapp_button():
21
+ return InlineKeyboardMarkup(
22
+ inline_keyboard=[
23
+ [InlineKeyboardButton(
24
+ text="πŸ›οΈ Do'konga kirish",
25
+ web_app=WebAppInfo(url="https://ibrohm-textile-shop.hf.space")
26
+ )]
27
+ ]
28
+ )
29
+
30
+ @router.message(Command("start"))
31
+ async def cmd_start(message: Message):
32
+ db = get_db()
33
+ user = await db.users.find_one({"user_id": message.from_user.id})
34
+
35
+ if not user:
36
+ await db.users.insert_one({
37
+ "user_id": message.from_user.id,
38
+ "username": message.from_user.username,
39
+ "full_name": message.from_user.full_name,
40
+ "cart": [],
41
+ "orders": []
42
+ })
43
+
44
+ await message.answer(
45
+ "Assalomu alaykum! πŸ‘‹\n\nKiyim-kechak sotuvchi botimizga xush kelibsiz!\n\nQuyidagi tugmalardan foydalaning:",
46
+ reply_markup=get_main_menu()
47
+ )
48
+
49
+ @router.message(F.text == "πŸ“¦ Mahsulotlar")
50
+ async def show_products(message: Message):
51
+ await message.answer(
52
+ "Mahsulotlarimiz bilan tanishing:",
53
+ reply_markup=get_webapp_button()
54
+ )
55
+
56
+ @router.message(F.text == "πŸ›’ Savat")
57
+ async def show_cart(message: Message):
58
+ await message.answer(
59
+ "Savatingizni ko'rish uchun do'konga kiring:",
60
+ reply_markup=get_webapp_button()
61
+ )
62
+
63
+ @router.message(F.text == "πŸ“‹ Buyurtmalarim")
64
+ async def show_orders(message: Message):
65
+ db = get_db()
66
+ orders = await db.orders.find({"user_id": message.from_user.id}).to_list(10)
67
+
68
+ if not orders:
69
+ await message.answer("Sizda hali buyurtma yo'q.")
70
+ return
71
+
72
+ text = "πŸ“‹ Sizning buyurtmalaringiz:\n\n"
73
+ for order in orders:
74
+ text += f"Buyurtma #{order['_id']}\n"
75
+ text += f"Holat: {order.get('status', 'Kutilmoqda')}\n"
76
+ text += f"Summasi: {order.get('total', 0)} so'm\n\n"
77
+
78
+ await message.answer(text)
79
+
80
+ @router.message(F.text == "πŸ‘€ Profil")
81
+ async def show_profile(message: Message):
82
+ db = get_db()
83
+ user = await db.users.find_one({"user_id": message.from_user.id})
84
+
85
+ text = "πŸ‘€ Sizning profilingiz:\n\n"
86
+ text += f"Ism: {user.get('full_name', 'Nomalum')}\n"
87
+ text += f"Username: @{user.get('username', 'Yoq')}\n"
88
+ text += f"Telefon: {user.get('phone', 'Kiritilmagan')}\n"
89
+
90
+ await message.answer(text)
91
+
92
+ @router.message(F.content_type == "contact")
93
+ async def handle_contact(message: Message):
94
+ if message.contact:
95
+ db = get_db()
96
+ await db.users.update_one(
97
+ {"user_id": message.from_user.id},
98
+ {"$set": {"phone": message.contact.phone_number}}
99
+ )
100
+ await message.answer("βœ… Raqamingiz saqlandi!", reply_markup=get_main_menu())