-
Notifications
You must be signed in to change notification settings - Fork 25
/
Copy pathrun.py
70 lines (59 loc) · 3.04 KB
/
run.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# grequests monkey patching, more info at https://github.com/gevent/gevent/issues/1016
import grequests
from aiogram import types, F, Router
from aiogram.filters import Command
from aiogram.utils.keyboard import InlineKeyboardBuilder
import config
from config import SUPPORT_LINK
import logging
from bot import dp, main
from enums.bot_entity import BotEntity
from models.user import UserDTO
from multibot import main as main_multibot
from handlers.user.cart import cart_router
from handlers.admin.admin import admin_router
from handlers.user.all_categories import all_categories_router
from handlers.user.my_profile import my_profile_router
from services.user import UserService
from utils.custom_filters import IsUserExistFilter
from utils.localizator import Localizator
logging.basicConfig(level=logging.INFO)
main_router = Router()
@main_router.message(Command(commands=["start", "help"]))
async def start(message: types.message):
all_categories_button = types.KeyboardButton(text=Localizator.get_text(BotEntity.USER, "all_categories"))
my_profile_button = types.KeyboardButton(text=Localizator.get_text(BotEntity.USER, "my_profile"))
faq_button = types.KeyboardButton(text=Localizator.get_text(BotEntity.USER, "faq"))
help_button = types.KeyboardButton(text=Localizator.get_text(BotEntity.USER, "help"))
admin_menu_button = types.KeyboardButton(text=Localizator.get_text(BotEntity.ADMIN, "menu"))
cart_button = types.KeyboardButton(text=Localizator.get_text(BotEntity.USER, "cart"))
telegram_id = message.from_user.id
await UserService.create_if_not_exist(UserDTO(
telegram_username=message.from_user.username,
telegram_id=telegram_id
))
keyboard = [[all_categories_button, my_profile_button], [faq_button, help_button],
[cart_button]]
if telegram_id in config.ADMIN_ID_LIST:
keyboard.append([admin_menu_button])
start_markup = types.ReplyKeyboardMarkup(resize_keyboard=True, row_width=2, keyboard=keyboard)
await message.answer(Localizator.get_text(BotEntity.COMMON, "start_message"), reply_markup=start_markup)
@main_router.message(F.text == Localizator.get_text(BotEntity.USER, "faq"), IsUserExistFilter())
async def faq(message: types.message):
await message.answer(Localizator.get_text(BotEntity.USER, "faq_string"))
@main_router.message(F.text == Localizator.get_text(BotEntity.USER, "help"), IsUserExistFilter())
async def support(message: types.message):
admin_keyboard_builder = InlineKeyboardBuilder()
admin_keyboard_builder.button(text=Localizator.get_text(BotEntity.USER, "help_button"), url=SUPPORT_LINK)
await message.answer(Localizator.get_text(BotEntity.USER, "help_string"),
reply_markup=admin_keyboard_builder.as_markup())
main_router.include_router(admin_router)
main_router.include_router(my_profile_router)
main_router.include_router(all_categories_router)
main_router.include_router(cart_router)
if __name__ == '__main__':
if config.MULTIBOT:
main_multibot(main_router)
else:
dp.include_router(main_router)
main()