This commit is contained in:
2022-06-05 15:02:41 +03:00
parent 64c6aeb002
commit 7abdf589aa
43 changed files with 164 additions and 135 deletions

View File

@@ -1,3 +1,4 @@
from . import user
from . import admin
from . import callback
from . import callback
from . import operator

View File

@@ -1,15 +1,13 @@
import io
from aiogram import types
from aiogram.types import ContentType
from aiogram.dispatcher import FSMContext
from aiogram.types import ContentType
from load import bot, dp, messages
from utils.helper import download_file
from keyboard.default.admin.main_menu import base_menu, continue_btn, all_right
from keyboard.default.main_menu import back_to_main_menu
from load import bot, dp, messages
from state.post import Post
from utils.database.market import add_item
from utils.helper import download_file
@dp.message_handler(lambda x: x.text == messages.add_post, is_admin=True)
@@ -37,7 +35,7 @@ async def admin_form_desk(message: types.Message, state: FSMContext):
@dp.message_handler(is_admin=True, state=Post.price)
async def admin_form_price(message: types.message, state: FSMContext):
if not message.text.replace('.','').replace(',', '').isdigit():
if not message.text.replace('.', '').replace(',', '').isdigit():
await Post.price.set()
await state.update_data(price=float(message.text.replace(",", ".")))
await bot.send_message(message.chat.id, "Отправьте фото товара")
@@ -45,7 +43,7 @@ async def admin_form_price(message: types.message, state: FSMContext):
@dp.message_handler(is_admin=True, state=Post.image, content_types=[ContentType.PHOTO])
async def admin_form_image(message:types.Message, state: FSMContext):
async def admin_form_image(message: types.Message, state: FSMContext):
file_id = message.photo[-1].file_id
file_info = await bot.get_file(file_id)
photo = await download_file(file_info.file_path)
@@ -55,10 +53,10 @@ async def admin_form_image(message:types.Message, state: FSMContext):
"Все данные для поста были заполнены",
reply_markup=continue_btn
)
await Post.finish.set()
await state.set_state("finish_post")
@dp.message_handler(lambda x:x.text == messages.continue_, state=Post.finish, is_admin=True)
@dp.message_handler(lambda x: x.text == messages.continue_, state="finish_post", is_admin=True)
async def finish(message: types.Message, state: FSMContext):
data = await state.get_data()
await bot.send_photo(
@@ -73,7 +71,8 @@ async def finish(message: types.Message, state: FSMContext):
parse_mode='Markdown'
)
@dp.message_handler(lambda x: x.text == messages.all_right_message, is_admin=True, state=Post.finish)
@dp.message_handler(lambda x: x.text == messages.all_right_message, is_admin=True, state="finish_post")
async def write_on_db(message: types.Message, state: FSMContext):
data = await state.get_data()
add_item(**data)

View File

@@ -7,4 +7,3 @@ from keyboard.default.admin.main_menu import main_menu
@dp.message_handler(lambda x: x.text == messages.admin_panel, is_admin=True)
async def cmd_menu(message: types.Message):
await bot.send_message(message.chat.id, "Admin panel", reply_markup=main_menu())

View File

@@ -7,13 +7,12 @@ from keyboard.default.admin.main_menu import base_menu
from keyboard.default.main_menu import back_to_main_menu
@dp.message_handler(lambda x: x.text == messages.add_admin, is_admin=True)
async def add_admin(message: types.Message):
await bot.send_message(
message.chat.id,
("Отправьте user_id пользователя\n"
"Его можно узнать зайдя в информацию о пользователе"),
"Его можно узнать зайдя в информацию о пользователе"),
reply_markup=base_menu()
)
await AddUser.user_id.set()
@@ -34,4 +33,3 @@ async def add_admin1(message: types.Message, state):
return
Register.register_admin(user)
await bot.send_message(message.chat.id, "Администратор добавлен!", reply_markup=back_to_main_menu)

View File

@@ -4,7 +4,8 @@ from load import dp, bot, messages
from keyboard.inline.admin.user import item_list
from utils.database.base import get_full_admin
@dp.message_handler(lambda x: x.text==messages.del_admin, is_admin=True)
@dp.message_handler(lambda x: x.text == messages.del_admin, is_admin=True)
async def del_admin(message: types.Message):
admins = get_full_admin()
admin = admins[0]
@@ -13,5 +14,5 @@ async def del_admin(message: types.Message):
message.chat.id,
result,
parse_mode="Markdown",
reply_markup=item_list(items=len(admins)-1)
reply_markup=item_list(items=len(admins) - 1)
)

View File

@@ -1,4 +1,5 @@
from . import null
from . import catalog
from . import cart
from . import admin
from . import admin
from . import operator

View File

@@ -1,4 +1,4 @@
import io
import io
from aiogram import types
@@ -25,9 +25,10 @@ async def next_item_adm(callback: types.CallbackQuery):
),
parse_mode="Markdown",
),
reply_markup=item_list(count, len(items)-1, int(data[2]))
reply_markup=item_list(count, len(items) - 1, int(data[2]))
)
@dp.callback_query_handler(lambda c: c.data.split("|")[0] == 'delete_post', is_admin=True)
async def delete_post_adm(callback: types.CallbackQuery):
data = callback.data.split("|")
@@ -47,7 +48,7 @@ async def delete_post_adm(callback: types.CallbackQuery):
),
parse_mode="Markdown",
),
reply_markup=item_list(items=len(items)-1)
reply_markup=item_list(items=len(items) - 1)
)
else:
await callback.message.delete()
@@ -57,4 +58,4 @@ async def delete_post_adm(callback: types.CallbackQuery):
reply_markup=back_to_main_menu
)
await callback.answer("Товар удалён!")
await callback.answer()
await callback.answer()

View File

@@ -1,4 +1,3 @@
from subprocess import call
from aiogram import types
from load import dp, messages
@@ -20,6 +19,7 @@ async def next_item_adm(callback: types.CallbackQuery):
)
await callback.answer()
@dp.callback_query_handler(lambda x: x.data.split("|")[0] == "delete_admin")
async def delete_admin(callback: types.CallbackQuery):
data = callback.data.split("|")

View File

@@ -1,6 +1,6 @@
import io
from aiogram import types
from aiogram import types
from load import dp, messages
from utils.database.cart import add_to_cart, get_user_cart, del_from_cart
@@ -9,14 +9,15 @@ from keyboard.inline.cart import cart_list
from keyboard.default.main_menu import back_to_main_menu
@dp.callback_query_handler(lambda c: c.data.split("|")[0]=="add_to_cart")
@dp.callback_query_handler(lambda c: c.data.split("|")[0] == "add_to_cart")
async def add_cart(callback: types.CallbackQuery):
item_id = callback.data.split("|")[1]
item = int(callback.data.split("|")[1])
item_id = Catalog.get_catalog()[item]["id"]
add_to_cart(callback.from_user.id, item_id)
await callback.answer("Товар добавлен!")
@dp.callback_query_handler(lambda c: c.data.split("|")[0]=="del_from_cart")
@dp.callback_query_handler(lambda c: c.data.split("|")[0] == "del_from_cart")
async def del_cart(callback: types.CallbackQuery):
c = callback.data.split("|")[1]
item_id = get_user_cart(callback.from_user.id)[int(c)][0]
@@ -26,7 +27,7 @@ async def del_cart(callback: types.CallbackQuery):
items = get_user_cart(callback.from_user.id)
if items:
index, count =items[0]
index, count = items[0]
item = Catalog.get_catalog(index)
await callback.message.edit_media(
media=types.InputMediaPhoto(
@@ -35,11 +36,11 @@ async def del_cart(callback: types.CallbackQuery):
name=item["name"],
description=item["description"],
count=count,
price=item['price']*count
price=item['price'] * count
),
parse_mode="Markdown",
),
reply_markup=cart_list(items=len(items)-1)
reply_markup=cart_list(items=len(items) - 1)
)
else:
await callback.message.delete()
@@ -66,9 +67,9 @@ async def next_item(callback: types.CallbackQuery):
name=item["name"],
description=item["description"],
count=count,
price=item['price']*count
price=item['price'] * count
),
parse_mode="Markdown",
),
reply_markup=cart_list(c, len(items)-1)
reply_markup=cart_list(c, len(items) - 1)
)

View File

@@ -26,4 +26,3 @@ async def next_item(callback: types.CallbackQuery):
),
reply_markup=item_list(count, len(items)-1, int(data[2]))
)

View File

@@ -2,6 +2,7 @@ from aiogram.types import CallbackQuery
from load import dp
@dp.callback_query_handler(lambda c: c.data == "null")
async def null(callback: CallbackQuery):
await callback.answer()

View File

@@ -3,3 +3,4 @@ from . import catalog
from . import cart
from . import checkout
from . import ordering
from . import support

View File

@@ -24,4 +24,4 @@ async def catalog(message: types.Message):
),
parse_mode="Markdown",
reply_markup=item_list(items=len(items))
)
)

View File

@@ -9,7 +9,7 @@ from state.state import UserState
@dp.message_handler(lambda x: x.text == messages.checkout)
async def checkout(message:types.Message):
async def checkout(message: types.Message):
items = get_user_cart(message.from_user.id)
output: str = ""
cost = 0
@@ -22,14 +22,14 @@ async def checkout(message:types.Message):
await UserState.confirm.set()
@dp.message_handler(lambda x: x.text == messages.all_right_message)
async def continue_user_form(message: types.Message):
@dp.message_handler(lambda x: x.text == messages.all_right_message, state="save_or_continue")
async def continue_user_form():
pass
@dp.message_handler(lambda x: x.text == messages.save_and_continue, state="*")
@dp.message_handler(lambda x: x.text == messages.save_and_continue, state="save_or_continue")
async def save_user_info(message: types.Message):
state = dp.current_state(chat=message.chat.id, user=message.from_user.id)
info = await state.get_data()
save_info(user_id=message.from_user.id, **info)
await continue_user_form(message)
await continue_user_form()

View File

@@ -16,28 +16,27 @@ async def confirm(message: types.Message, state: FSMContext):
info = get_info(message.from_user.id)
await bot.send_message(
message.chat.id,
message.chat.id,
"Может у вас есть сохраненные данные?",
reply_markup=load_info(bool(info))
)
await Checkout.loaded.set()
await state.set_state(state="load_data")
@dp.message_handler(lambda x: x.text == messages.load_data, state=Checkout.loaded)
@dp.message_handler(lambda x: x.text == messages.load_data, state="load_data")
async def load_form(message: types.message, state: FSMContext):
info = get_info(message.from_user.id)
await state.update_data(
loaded=True,
first_name = info["first_name"],
last_name = info["last_name"],
phone_number = info["phone_number"],
address = info["address"]
first_name=info["first_name"],
last_name=info["last_name"],
phone_number=info["phone_number"],
address=info["address"]
)
await bot.send_message(message.chat.id, "Ваши данные загружены!", reply_markup=continue_btn)
await Checkout.finish.set()
await state.set_state("finish_send_form")
@dp.message_handler(lambda x: x.text == messages.rewrite_data, state=Checkout.loaded)
@dp.message_handler(lambda x: x.text == messages.rewrite_data, state="load_data")
async def new_form(message: types.Message, state: FSMContext = None):
await state.update_data(loaded=False)
await bot.send_message(
@@ -65,7 +64,7 @@ async def form_first_name(message: types.Message, state: FSMContext):
await bot.send_message(
message.chat.id,
("Номер телефона\n\n"
"Можете написать номер телефона вручную"),
"Можете написать номер телефона вручную"),
reply_markup=get_phone_number
)
await Checkout.phone_number.set()
@@ -73,36 +72,39 @@ async def form_first_name(message: types.Message, state: FSMContext):
@dp.message_handler(state=Checkout.phone_number, content_types=[types.ContentType.CONTACT, types.ContentType.TEXT])
async def form_phone(message: types.Message, state: FSMContext):
if message.contact is not None:
phone=message.contact.phone_number
else: phone=message.text
if len(phone) in [10,12,13]:
await state.update_data(phone_number=phone)
await bot.send_message(message.chat.id, "Отправте адрес доставки", reply_markup=cancel_btn)
await Checkout.address.set()
else:
if message.contact is not None:
phone = message.contact.phone_number
else:
phone = message.text
if len(phone) not in [10, 12, 13]:
await bot.send_message(message.chat.id, "Номер телефона не правильный!")
await Checkout.phone_number.set()
return
await state.update_data(phone_number=phone)
await bot.send_message(message.chat.id, "Отправте адрес доставки", reply_markup=cancel_btn)
await Checkout.address.set()
@dp.message_handler(state=Checkout.address)
async def form_address(message: types.Message, state: FSMContext):
await state.update_data(address=message.text)
await bot.send_message(message.chat.id, "Отлично заявка заполнена!", reply_markup=continue_btn)
await Checkout.finish.set()
await bot.send_message(message.chat.id, "Отлично, заявка заполнена!", reply_markup=continue_btn)
await state.set_state("finish_send_form")
@dp.message_handler(state=Checkout.finish)
@dp.message_handler(state="finish_send_form")
async def finish_form(message: types.Message, state: FSMContext):
data = await state.get_data()
text = (f"Имя: {data['first_name']}\n"
f"Фамилия: {data['last_name']}\n"
f"Номер телефона: {data['phone_number']}\n"
f"Адрес: {data['address']}\n"
)
f"Фамилия: {data['last_name']}\n"
f"Номер телефона: {data['phone_number']}\n"
f"Адрес: {data['address']}\n"
)
await bot.send_message(
message.chat.id,
message.chat.id,
text,
reply_markup=confirm_all_info()
)
await state.set_state("save_or_continue")

View File

@@ -1,7 +1,7 @@
from aiogram import types
from aiogram.dispatcher.filters import CommandStart
from load import dp, bot, messages
from load import dp, bot, messages
from keyboard.default.main_menu import main_menu
from utils.database.base import get_admins, get_operator
from utils.database.user import Register
@@ -18,6 +18,7 @@ async def start(message: types.Message):
reply_markup=main_menu(admin=is_bot_admin, operator=is_operator)
)
@dp.message_handler(lambda x: x.text == messages.back)
async def back_to_menu(message: types.Message):
is_bot_admin = message.from_user.id in get_admins()
@@ -36,11 +37,11 @@ async def cancel(message: types.Message):
await back_to_menu(message)
@dp.message_handler(lambda x:x.text == messages.info)
@dp.message_handler(lambda x: x.text == messages.info)
async def userinfo(message: types.Message):
await bot.send_message(
message.chat.id,
("User_id: <code>{user_id}</code>").format(user_id=message.from_user.id),
message.chat.id,
"User_id: <code>{user_id}</code>".format(user_id=message.from_user.id),
parse_mode="HTML"
)