Skip to content

Commit f60bd12

Browse files
committed
Изменил логику (теперь множество дублирований убрал) + добавил docstring
1 parent 3705b3e commit f60bd12

1 file changed

Lines changed: 181 additions & 34 deletions

File tree

routers/admin.py

Lines changed: 181 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,14 @@ class AdminState(StatesGroup):
5050

5151

5252
async def settings_panel(message: types.Message, state: FSMContext) -> None:
53+
"""
54+
Отправляет панель настроек администратора.
55+
56+
:param message: Сообщение от пользователя.
57+
:type message: types.Message
58+
:param state: Состояние FSM.
59+
:type state: FSMContext
60+
"""
5361
chat_id = message.chat.id
5462
if await db.check_admin(chat_id):
5563
context = {"chat_id": chat_id}
@@ -68,6 +76,14 @@ async def settings_panel(message: types.Message, state: FSMContext) -> None:
6876

6977

7078
async def cancel_settings(message: types.Message, state: FSMContext) -> None:
79+
"""
80+
Отменяет состояние настроек и возвращает пользователя в главное меню.
81+
82+
:param message: Сообщение от пользователя.
83+
:type message: types.Message
84+
:param state: Состояние FSM.
85+
:type state: FSMContext
86+
"""
7187
context = {}
7288
message_text = render_template_jinja("admin/cancel_settings.jinja2", **context)
7389
await message.answer(message_text, reply_markup=kb_admin.main_menu)
@@ -77,6 +93,16 @@ async def cancel_settings(message: types.Message, state: FSMContext) -> None:
7793
async def back_to_state(
7894
message: types.Message, state: FSMContext, state_to_set: State
7995
) -> None:
96+
"""
97+
Возвращает пользователя к заданному состоянию.
98+
99+
:param message: Сообщение от пользователя.
100+
:type message: types.Message
101+
:param state: Состояние FSM.
102+
:type state: FSMContext
103+
:param state_to_set: Состояние, к которому нужно вернуться.
104+
:type state_to_set: State
105+
"""
80106
context = {}
81107

82108
message_text = render_template_jinja("admin/back_to_state.jinja2", **context)
@@ -110,6 +136,21 @@ async def back_to_state_on_markup(
110136
state_to_set: State,
111137
**context,
112138
) -> None:
139+
"""
140+
Возвращает пользователя к заданному состоянию с указанным разметкой.
141+
142+
:param message: Сообщение от пользователя.
143+
:type message: types.Message
144+
:param state: Состояние FSM.
145+
:type state: FSMContext
146+
:param template_name: Имя шаблона Jinja для сообщения.
147+
:type template_name: str
148+
:param markup: Клавиатура для ответа.
149+
:type markup: types.ReplyKeyboardMarkup
150+
:param state_to_set: Состояние, к которому нужно вернуться.
151+
:type state_to_set: State
152+
:param context: Дополнительный контекст для шаблона.
153+
"""
113154
message_text = render_template_jinja(template_name, **context)
114155
await message.answer(message_text, reply_markup=markup)
115156
await state.set_state(state_to_set)
@@ -147,63 +188,110 @@ async def back_state_roles(message: types.Message, state: FSMContext) -> None:
147188
)
148189

149190

150-
async def roles_switch(message: types.Message, state: FSMContext) -> None:
191+
async def send_message_with_state(
192+
message: types.Message,
193+
state: FSMContext,
194+
template_name: str,
195+
reply_markup: types.ReplyKeyboardMarkup,
196+
new_state: State,
197+
) -> None:
198+
"""
199+
Отправляет сообщение и устанавливает новое состояние.
200+
201+
:param message: Сообщение от пользователя.
202+
:type message: types.Message
203+
:param state: Состояние FSM.
204+
:type state: FSMContext
205+
:param template_name: Имя шаблона Jinja для сообщения.
206+
:type template_name: str
207+
:param reply_markup: Клавиатура для ответа.
208+
:type reply_markup: types.ReplyKeyboardMarkup
209+
:param new_state: Новое состояние.
210+
:type new_state: State
211+
"""
151212
context = {}
213+
message_text = render_template_jinja(template_name, **context)
214+
await message.answer(message_text, reply_markup=reply_markup)
215+
await state.set_state(new_state)
152216

153-
message_text = render_template_jinja("admin/roles_switch.jinja2", **context)
154-
await message.answer(message_text, reply_markup=kb_admin.roles_panel)
155-
await state.set_state(AdminState.roles_switch)
156217

218+
async def roles_switch(message: types.Message, state: FSMContext) -> None:
219+
await send_message_with_state(
220+
message,
221+
state,
222+
"admin/roles_switch.jinja2",
223+
kb_admin.roles_panel,
224+
AdminState.roles_switch,
225+
)
157226

158-
async def give_roles(message: types.Message, state: FSMContext) -> None:
159-
context = {}
160227

161-
message_text = render_template_jinja("admin/roles_switch.jinja2", **context)
162-
await message.answer(message_text, reply_markup=kb_admin.roles_switch_panel)
163-
await state.set_state(AdminState.give)
228+
async def give_roles(message: types.Message, state: FSMContext) -> None:
229+
await send_message_with_state(
230+
message,
231+
state,
232+
"admin/roles_switch.jinja2",
233+
kb_admin.roles_switch_panel,
234+
AdminState.give,
235+
)
164236

165237

166238
async def remove_role(message: types.Message, state: FSMContext) -> None:
167-
context = {}
168-
169-
message_text = render_template_jinja("admin/remove_role.jinja2", **context)
170-
await message.answer(message_text, reply_markup=kb_admin.roles_switch_panel)
171-
await state.set_state(AdminState.remove)
239+
await send_message_with_state(
240+
message,
241+
state,
242+
"admin/remove_role.jinja2",
243+
kb_admin.roles_switch_panel,
244+
AdminState.remove,
245+
)
172246

173247

174248
async def remove_role_user(message: types.Message, state: FSMContext) -> None:
175-
context = {}
176-
177-
message_text = render_template_jinja("admin/remove_role_user.jinja2", **context)
178-
await message.answer(message_text, reply_markup=kb_admin.admin_back)
179-
await state.set_state(AdminState.remove_user)
249+
await send_message_with_state(
250+
message,
251+
state,
252+
"admin/remove_role_user.jinja2",
253+
kb_admin.admin_back,
254+
AdminState.remove_user,
255+
)
180256

181257

182258
async def remove_role_admin(message: types.Message, state: FSMContext) -> None:
183-
context = {}
184-
185-
message_text = render_template_jinja("admin/remove_role_admin.jinja2", **context)
186-
await message.answer(message_text, reply_markup=kb_admin.admin_back)
187-
await state.set_state(AdminState.remove_admin)
259+
await send_message_with_state(
260+
message,
261+
state,
262+
"admin/remove_role_admin.jinja2",
263+
kb_admin.admin_back,
264+
AdminState.remove_admin,
265+
)
188266

189267

190268
async def roles_add_user(message: types.Message, state: FSMContext) -> None:
191-
context = {}
192-
193-
message_text = render_template_jinja("admin/roles_add_user.jinja2", **context)
194-
await message.answer(message_text, reply_markup=kb_admin.admin_back)
195-
await state.set_state(AdminState.add_user)
269+
await send_message_with_state(
270+
message,
271+
state,
272+
"admin/roles_add_user.jinja2",
273+
kb_admin.admin_back,
274+
AdminState.add_user,
275+
)
196276

197277

198278
async def roles_add_admin(message: types.Message, state: FSMContext) -> None:
199-
context = {}
200-
201-
message_text = render_template_jinja("admin/roles_add_user.jinja2", **context)
202-
await message.answer(message_text, reply_markup=kb_admin.admin_back)
203-
await state.set_state(AdminState.add_admin)
279+
await send_message_with_state(
280+
message,
281+
state,
282+
"admin/roles_add_user.jinja2",
283+
kb_admin.admin_back,
284+
AdminState.add_admin,
285+
)
204286

205287

206288
async def get_add_user_id(message: types.Message) -> None:
289+
"""
290+
Обрабатывает добавление пользователя по ID.
291+
292+
:param message: Сообщение от пользователя.
293+
:type message: types.Message
294+
"""
207295
chat_id = message.chat.id
208296
text_id = message.text
209297

@@ -232,6 +320,12 @@ async def get_add_user_id(message: types.Message) -> None:
232320

233321

234322
async def get_add_admin_id(message: types.Message) -> None:
323+
"""
324+
Обрабатывает добавление администратора по ID.
325+
326+
:param message: Сообщение от пользователя.
327+
:type message: types.Message
328+
"""
235329
chat_id = message.chat.id
236330
text_id = message.text
237331
if not text_id.isdigit():
@@ -259,6 +353,12 @@ async def get_add_admin_id(message: types.Message) -> None:
259353

260354

261355
async def get_remove_user_id(message: types.Message) -> None:
356+
"""
357+
Обрабатывает удаление пользователя по ID.
358+
359+
:param message: Сообщение от пользователя.
360+
:type message: types.Message
361+
"""
262362
chat_id = message.chat.id
263363
if not await db.user_exists(message.text):
264364
context = {}
@@ -280,6 +380,12 @@ async def get_remove_user_id(message: types.Message) -> None:
280380

281381

282382
async def get_remove_admin_id(message: types.Message) -> None:
383+
"""
384+
Обрабатывает удаление администратора по ID.
385+
386+
:param message: Сообщение от пользователя.
387+
:type message: types.Message
388+
"""
283389
chat_id = message.chat.id
284390
if not await db.check_admin(message.text):
285391
context = {}
@@ -301,6 +407,14 @@ async def get_remove_admin_id(message: types.Message) -> None:
301407

302408

303409
async def commands_settings(message: types.Message, state: FSMContext) -> None:
410+
"""
411+
Отправляет список команд и настройки команд.
412+
413+
:param message: Сообщение от пользователя.
414+
:type message: types.Message
415+
:param state: Состояние FSM.
416+
:type state: FSMContext
417+
"""
304418
commands = await db.commands_all()
305419
table = await get_commands_table_formatted(commands)
306420
await message.answer(
@@ -315,6 +429,14 @@ async def commands_settings(message: types.Message, state: FSMContext) -> None:
315429

316430

317431
async def button_commands_add(message: types.Message, state: FSMContext) -> None:
432+
"""
433+
Отправляет сообщение для добавления команды.
434+
435+
:param message: Сообщение от пользователя.
436+
:type message: types.Message
437+
:param state: Состояние FSM.
438+
:type state: FSMContext
439+
"""
318440
await message.answer(
319441
render_template_jinja("admin/button_commands_add.jinja2"),
320442
reply_markup=kb_admin.admin_back,
@@ -323,6 +445,14 @@ async def button_commands_add(message: types.Message, state: FSMContext) -> None
323445

324446

325447
async def button_commands_remove(message: types.Message, state: FSMContext) -> None:
448+
"""
449+
Отправляет сообщение для удаления команды.
450+
451+
:param message: Сообщение от пользователя.
452+
:type message: types.Message
453+
:param state: Состояние FSM.
454+
:type state: FSMContext
455+
"""
326456
await message.answer(
327457
render_template_jinja("admin/button_commands_remove.jinja2"),
328458
reply_markup=kb_admin.admin_back,
@@ -331,6 +461,12 @@ async def button_commands_remove(message: types.Message, state: FSMContext) -> N
331461

332462

333463
async def command_add(message: types.Message) -> None:
464+
"""
465+
Добавляет команду в черный список.
466+
467+
:param message: Сообщение от пользователя.
468+
:type message: types.Message
469+
"""
334470
chat_id = message.chat.id
335471
low = message.text.lower()
336472
exists = await db.command_exists(low)
@@ -373,6 +509,12 @@ async def command_add(message: types.Message) -> None:
373509

374510

375511
async def command_remove(message: types.Message) -> None:
512+
"""
513+
Удаляет команду из черного списка.
514+
515+
:param message: Сообщение от пользователя.
516+
:type message: types.Message
517+
"""
376518
chat_id = message.chat.id
377519
low = message.text.lower()
378520
exists = await db.command_exists(low)
@@ -404,6 +546,11 @@ async def command_remove(message: types.Message) -> None:
404546

405547

406548
async def register_routers() -> None:
549+
"""
550+
Регистрация routers для обработки сообщений admin.
551+
552+
:return: None
553+
"""
407554
admin_router.message.register(
408555
settings_panel, TextInFilter(valid_commands["settings"])
409556
)

0 commit comments

Comments
 (0)