Skip to content

Commit ab332e3

Browse files
committed
UPDATE: some ui in commands
1 parent 7145286 commit ab332e3

17 files changed

Lines changed: 166 additions & 90 deletions

File tree

misc/path.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
import os
2+
from abc import ABC
23
from typing import Final
34

45

5-
class PathManager:
6+
class PathManager(ABC):
67
ROOT: Final = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
78

89
@classmethod

telegram_bot/handlers/__init__.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1 @@
1-
from .user import register_users_handlers
2-
from .admin import register_admin_handlers
3-
from .other import register_other_handlers
1+
from .main import register_all_handlers

telegram_bot/handlers/admin/auth.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,12 +46,21 @@ async def __cancel(msg: Message, state: FSMContext):
4646

4747

4848
def _get_auth_handlers(dp: Dispatcher) -> None:
49+
50+
# region Msg handlers
51+
4952
dp.register_message_handler(__cancel, commands=['cancel'], state=[
5053
AdminStates.INSERT_NEW_ADMIN,
5154
AdminStates.INSERT_ADVERT_TEXT,
5255
AdminStates.SET_VIP,
5356
])
5457
dp.register_message_handler(__admin_auth, commands=['admin'], state=None)
5558
dp.register_message_handler(__admin, content_types=['text'], text='Admin 🤡', state=None)
59+
60+
# endregion
61+
62+
# region Callback handlers
63+
5664
dp.register_callback_query_handler(__admin_exit, lambda c: c.data == "admin_exit", state=AdminStates.ADMIN)
5765

66+
# endregion

telegram_bot/handlers/admin/main.py

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -72,8 +72,6 @@ async def __do_advertising(query: Message, state: FSMContext):
7272

7373
# endregion
7474

75-
# region Analytics
76-
7775
async def __analytic(query: CallbackQuery, state: FSMContext) -> None:
7876
bot: Bot = query.bot
7977
user_id = query.from_user.id
@@ -95,17 +93,23 @@ async def __analytic(query: CallbackQuery, state: FSMContext) -> None:
9593
await bot.send_message(user_id, '\n'.join(text))
9694

9795

98-
# endregion
99-
100-
10196
def register_admin_handlers(dp: Dispatcher) -> None:
102-
_get_auth_handlers(dp)
103-
_get_vip_handlers(dp)
10497

105-
dp.register_callback_query_handler(__add_admin, lambda c: c.data == "add_admin", state=AdminStates.ADMIN)
98+
# region Msg handlers
99+
106100
dp.register_message_handler(__admin_insert_tg_id, content_types=['text'], state=AdminStates.INSERT_NEW_ADMIN)
107101

108-
dp.register_callback_query_handler(__advertising, lambda c: c.data == "advertising", state=AdminStates.ADMIN)
109102
dp.register_message_handler(__do_advertising, content_types=['text'], state=AdminStates.INSERT_ADVERT_TEXT)
110103

104+
# endregion
105+
106+
# region Callback handlers
107+
111108
dp.register_callback_query_handler(__analytic, lambda c: c.data == "analytics", state=AdminStates.ADMIN)
109+
dp.register_callback_query_handler(__add_admin, lambda c: c.data == "add_admin", state=AdminStates.ADMIN)
110+
dp.register_callback_query_handler(__advertising, lambda c: c.data == "advertising", state=AdminStates.ADMIN)
111+
112+
# endregion
113+
114+
_get_auth_handlers(dp)
115+
_get_vip_handlers(dp)

telegram_bot/handlers/admin/vip.py

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
1-
import loguru
1+
from loguru import logger
22
from aiogram import Dispatcher, Bot
33
from aiogram.dispatcher import FSMContext
44
from aiogram.types import Message, CallbackQuery
5-
65
from telegram_bot.database.methods.other import switch_vip
76
from telegram_bot.database.methods.update import set_vip
87
from telegram_bot.utils.process import kill_process, start_process_if_sessions_exists, check_process
@@ -38,14 +37,25 @@ async def __vip_insert_tg_id(msg: Message, state: FSMContext):
3837
await bot.send_message(other_user_id, "Администратор выдал вам vip доступ. ✨",
3938
reply_markup=get_main_keyboard(other_user_id))
4039
await bot.send_message(user_id, "Успешно: выдан VIP доступ ✅")
41-
loguru.logger.info(f'{other_user_id} got VIP access from {user_id}')
42-
except Exception:
40+
logger.info(f'{other_user_id} got VIP access from {user_id}')
41+
except Exception as e:
42+
logger.critical(e)
4343
await bot.send_message(user_id, "Произошел сбой ⚠️")
4444
await bot.send_message(user_id, 'Админ панель', reply_markup=get_admin_keyboard(user_id))
4545
await state.set_state(AdminStates.ADMIN)
4646

4747

4848
def _get_vip_handlers(dp: Dispatcher) -> None:
49+
50+
# region Msg handlers
51+
52+
dp.register_message_handler(__vip_insert_tg_id, content_types=['text'], state=AdminStates.SET_VIP)
53+
54+
# endregion
55+
56+
# region Callback handlers
57+
4958
dp.register_callback_query_handler(__vip_switcher, lambda c: c.data == "vip_switcher", state=AdminStates.ADMIN)
5059
dp.register_callback_query_handler(__set_vip, lambda c: c.data == "give_vip", state=AdminStates.ADMIN)
51-
dp.register_message_handler(__vip_insert_tg_id, content_types=['text'], state=AdminStates.SET_VIP)
60+
61+
# endregion

telegram_bot/handlers/main.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
from aiogram import Dispatcher
2+
3+
from telegram_bot.handlers.user import register_users_handlers
4+
from telegram_bot.handlers.admin import register_admin_handlers
5+
from telegram_bot.handlers.other import register_other_handlers
6+
7+
8+
def register_all_handlers(dp: Dispatcher) -> None:
9+
handlers = (
10+
register_admin_handlers,
11+
register_users_handlers,
12+
register_other_handlers
13+
)
14+
for handler in handlers:
15+
handler(dp)

telegram_bot/handlers/other.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
from aiogram.types import Message
33

44

5-
async def other_messages(msg: Message):
5+
async def other_messages(msg: Message) -> None:
66
bot: Bot = msg.bot
77
await bot.send_message(msg.from_user.id, "Я вас не понял, напишите /start!")
88

telegram_bot/handlers/user/buy_vip.py

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
from aiogram import Dispatcher, Bot
2-
from aiogram.types import Message
2+
from aiogram.types import Message, CallbackQuery
33
from yookassa import Payment
44
from uuid import uuid4
55
from telegram_bot.database.methods.create import create_user_payment
66
from telegram_bot.database.methods.get import get_user_by_telegram_id
77
from telegram_bot.database.methods.update import set_vip
8+
from telegram_bot.handlers.user.util import _buy_vip_text
89
from telegram_bot.utils import TgConfig
910
from telegram_bot.utils.process import kill_process, start_process_if_sessions_exists
1011
from telegram_bot.utils.util import get_main_keyboard, get_payment_keyboard, get_payment_info
@@ -28,16 +29,15 @@ async def __buy_vip(msg: Message) -> None:
2829
create_user_payment(user, payment.id)
2930
if payment.status != 'succeeded':
3031
keyboard = get_payment_keyboard(payment.confirmation.confirmation_url)
31-
await bot.send_message(user_id, f'Вы приобретаете <b>VIP</b> доступ.\nК оплате <b>{TgConfig.PRICE}</b> рублей',
32-
reply_markup=keyboard)
32+
await bot.send_message(user_id, _buy_vip_text(), reply_markup=keyboard)
3333
else:
3434
keyboard = get_payment_keyboard()
3535
await bot.send_message(user_id, '<b>VIP</b> доступ уже оплачен. Проверьте оплату', reply_markup=keyboard)
3636

3737

38-
async def __check_buy(msg: Message) -> None:
39-
bot: Bot = msg.bot
40-
user_id = msg.from_user.id
38+
async def __check_buy(query: CallbackQuery) -> None:
39+
bot: Bot = query.bot
40+
user_id = query.from_user.id
4141
user = get_user_by_telegram_id(user_id)
4242
payment = Payment.find_one(user.payment.key)
4343
if payment.status == 'succeeded':
@@ -46,9 +46,19 @@ async def __check_buy(msg: Message) -> None:
4646
start_process_if_sessions_exists(user_id)
4747
await bot.send_message(user_id, "Вы успешно оформили вип доступ!🥳\n", reply_markup=get_main_keyboard(user_id))
4848
else:
49-
await bot.send_message(user_id, "Оплата еще не проведена!\n")
49+
await query.answer("Оплата еще не проведена!\n")
5050

5151

5252
def _register_vip_handlers(dp: Dispatcher) -> None:
53+
54+
# region Msg handlers
55+
5356
dp.register_message_handler(__buy_vip, content_types=['text'], text="Купить полную версию 💸")
57+
58+
# endregion
59+
60+
# region Callback handlers
61+
5462
dp.register_callback_query_handler(__check_buy, lambda c: c.data == "check_payment")
63+
64+
# endregion

telegram_bot/handlers/user/main.py

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,17 +20,17 @@ async def __start(msg: Message) -> None:
2020
parse_mode="HTML")
2121

2222

23-
async def __teh_support(msg: Message):
23+
async def __teh_support(msg: Message) -> None:
2424
bot: Bot = msg.bot
2525
await bot.send_message(msg.from_user.id, f"Если у вас возникли проблемы. Напишите нам - {TgConfig.HELPER_URL}")
2626

2727

28-
async def __help(msg: Message):
28+
async def __help(msg: Message) -> None:
2929
bot: Bot = msg.bot
30-
await bot.send_message(msg.from_user.id, "Выберите категорию комманд:", reply_markup=KB_INFO)
30+
await bot.send_message(msg.from_user.id, "Выберите категорию команд:", reply_markup=KB_INFO)
3131

3232

33-
async def __vip_commands(query: CallbackQuery):
33+
async def __vip_commands(query: CallbackQuery) -> None:
3434
bot: Bot = query.bot
3535
commands = sorted(get_vip_commands_help())
3636
message = "Все <b>VIP</b> команды:\n\n"
@@ -39,7 +39,7 @@ async def __vip_commands(query: CallbackQuery):
3939
await bot.send_message(query.from_user.id, message)
4040

4141

42-
async def __free_commands(query: CallbackQuery):
42+
async def __free_commands(query: CallbackQuery) -> None:
4343
bot: Bot = query.bot
4444
commands = sorted(get_commands_help())
4545
message = "Все <b>FREE</b> команды:\n\n"
@@ -49,10 +49,21 @@ async def __free_commands(query: CallbackQuery):
4949

5050

5151
def register_users_handlers(dp: Dispatcher) -> None:
52+
53+
# region Msg handlers
54+
5255
dp.register_message_handler(__start, commands=["start"])
5356
dp.register_message_handler(__teh_support, content_types=["text"], text="Тех-поддержка ⚙")
5457
dp.register_message_handler(__help, content_types=['text'], text="Узнать команды 📌")
58+
59+
# endregion
60+
61+
# region Callback handlers
62+
5563
dp.register_callback_query_handler(__vip_commands, lambda c: c.data == "vip_commands")
5664
dp.register_callback_query_handler(__free_commands, lambda c: c.data == "free_commands")
65+
66+
# endregion
67+
5768
_register_vip_handlers(dp)
5869
_register_user_bot_handlers(dp)

telegram_bot/handlers/user/user_bot.py

Lines changed: 37 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -15,39 +15,14 @@
1515
from telegram_bot.utils import Env, CreateUserBotState
1616
from telegram_bot.utils.util import get_main_keyboard
1717
from telegram_bot.keyboards import KB_CONTACT, KB_CANCEL_SETUP
18+
from .util import _user_agreement_text
1819
from ...utils.process import start_process_if_sessions_exists, check_process, kill_process
1920

2021
__sessions: dict[int, Client] = {}
2122

2223

2324
# region with State
2425

25-
async def __start_input_user_settings(msg: Message, state: FSMContext) -> None:
26-
bot: Bot = msg.bot
27-
user_id = msg.from_user.id
28-
29-
user = get_user_by_telegram_id(user_id)
30-
31-
if check_process(user_id):
32-
keyboard = get_main_keyboard(user_id)
33-
await bot.send_message(user_id, "Ваш бот уже запущен!", reply_markup=keyboard)
34-
return
35-
if user and user.session:
36-
start_process_if_sessions_exists(user_id)
37-
keyboard = get_main_keyboard(user_id)
38-
await state.finish()
39-
await bot.send_message(
40-
user_id,
41-
"Бот запущен! ✅\n",
42-
reply_markup=keyboard
43-
)
44-
return
45-
46-
await bot.send_document(user_id, open(PathManager.get('UserAgreement.pdf'), 'rb'), reply_markup=KB_CONTACT)
47-
await bot.send_message(user_id, "Отправляя контакт, вы соглашаетесь с пользовательским соглашением!️",
48-
reply_markup=KB_CANCEL_SETUP)
49-
await state.set_state(CreateUserBotState.PHONE)
50-
5126

5227
async def __input_phone(msg: Message, state: FSMContext) -> None:
5328
bot: Bot = msg.bot
@@ -158,6 +133,32 @@ async def __input_2fa_password(msg: Message, state: FSMContext) -> None:
158133
await state.finish()
159134

160135

136+
async def __start_input_user_settings(msg: Message, state: FSMContext) -> None:
137+
bot: Bot = msg.bot
138+
user_id = msg.from_user.id
139+
140+
user = get_user_by_telegram_id(user_id)
141+
142+
if check_process(user_id):
143+
keyboard = get_main_keyboard(user_id)
144+
await bot.send_message(user_id, "Ваш бот уже запущен!", reply_markup=keyboard)
145+
return
146+
if user and user.session:
147+
start_process_if_sessions_exists(user_id)
148+
keyboard = get_main_keyboard(user_id)
149+
await state.finish()
150+
await bot.send_message(
151+
user_id,
152+
"Бот запущен! ✅\n",
153+
reply_markup=keyboard
154+
)
155+
return
156+
await bot.send_document(user_id, open(PathManager.get('UserAgreement.pdf'), 'rb'), reply_markup=KB_CONTACT)
157+
await bot.send_message(user_id, _user_agreement_text(msg.from_user.first_name), reply_markup=KB_CANCEL_SETUP)
158+
159+
await state.set_state(CreateUserBotState.PHONE)
160+
161+
161162
async def __stop_register_user_bot(query: CallbackQuery, state: FSMContext) -> None:
162163
bot: Bot = query.bot
163164
user_id = query.from_user.id
@@ -188,7 +189,8 @@ async def __delete_session(msg: Message) -> None:
188189

189190

190191
def _register_user_bot_handlers(dp: Dispatcher) -> None:
191-
dp.register_callback_query_handler(__stop_register_user_bot, lambda c: c.data == "cancel_setup", state="*")
192+
193+
# region Msg handlers
192194

193195
dp.register_message_handler(__input_phone, content_types=[types.ContentType.CONTACT],
194196
state=CreateUserBotState.PHONE)
@@ -198,3 +200,11 @@ def _register_user_bot_handlers(dp: Dispatcher) -> None:
198200
dp.register_message_handler(__start_input_user_settings, content_types=['text'], text="Запустить бота ✅")
199201
dp.register_message_handler(__stop_bot, content_types=['text'], text="Остановить бота ❌")
200202
dp.register_message_handler(__delete_session, content_types=['text'], text="Удалить свои данные ⚠️")
203+
204+
# endregion
205+
206+
# region Callback handlers
207+
208+
dp.register_callback_query_handler(__stop_register_user_bot, lambda c: c.data == "cancel_setup", state="*")
209+
210+
# endregion

0 commit comments

Comments
 (0)