Skip to content

Commit c7b08bf

Browse files
committed
refactor(groups): Докстринги для групповых команд
1 parent 2b1f4f2 commit c7b08bf

File tree

7 files changed

+214
-195
lines changed

7 files changed

+214
-195
lines changed

tgbot/handlers/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
from tgbot.handlers.groups.admin.settings import group_settings_router
99
from tgbot.handlers.groups.join import groups_router
1010
from tgbot.handlers.groups.user.main import group_user_router
11-
from tgbot.handlers.groups.whois import group_whois_router
11+
from tgbot.handlers.groups.user.whois import group_whois_router
1212
from tgbot.handlers.inline.inline import user_inline_router
1313
from tgbot.handlers.start import start_router
1414

tgbot/handlers/common/whois.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
from aiogram.types import Message
88
from stp_database import Employee, MainRequestsRepo
99

10-
from tgbot.handlers.groups.whois import create_user_info_message
10+
from tgbot.handlers.groups.user.whois import create_user_info_message
1111
from tgbot.misc.helpers import get_role
1212

1313
logger = logging.getLogger(__name__)
@@ -33,7 +33,7 @@ async def private_whois_command(
3333
# Проверяем авторизацию пользователя
3434
if not user:
3535
await message.reply(
36-
" Для использования команды /whois необходимо авторизоваться в боте"
36+
"🚨 Для использования команд необходимо авторизоваться в боте"
3737
)
3838
return
3939

tgbot/handlers/groups/admin/admin.py

Lines changed: 126 additions & 151 deletions
Large diffs are not rendered by default.

tgbot/handlers/groups/admin/settings.py

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,16 @@
1010

1111

1212
@group_settings_router.message(Command("settings"), GroupAdminFilter())
13-
async def group_settings(message: Message):
14-
"""Handle /settings command for groups admins."""
15-
# Создаем deeplink для открытия настроек группы в личке
13+
async def group_settings(message: Message) -> None:
14+
"""Обработчик команды /settings в группе для администраторов.
15+
16+
Args:
17+
message: Сообщение от пользователя
18+
"""
1619
settings_deeplink = await create_start_link(
1720
message.bot, payload=f"group_{message.chat.id}", encode=True
1821
)
22+
1923
await message.answer(
2024
f"""<b>⚙️ Настройки группы</b>
2125
@@ -24,8 +28,12 @@ async def group_settings(message: Message):
2428

2529

2630
@group_settings_router.message(Command("settings"))
27-
async def group_settings_non_admin(message: Message):
28-
"""Handle /settings command for non-admin users."""
31+
async def group_settings_non_admin(message: Message) -> None:
32+
"""Обработчик команды /settings в группе для обычных пользователей.
33+
34+
Args:
35+
message: Сообщение от пользователя
36+
"""
2937
await message.reply(
3038
"Только администраторы группы могут использовать эту команду :("
3139
)

tgbot/handlers/groups/user/main.py

Lines changed: 29 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -20,26 +20,29 @@
2020

2121

2222
@group_user_router.message(Command("admins"))
23-
async def admins_cmd(message: Message, user: Employee, stp_repo: MainRequestsRepo):
24-
"""/admins для получения списка администраторов группы"""
23+
async def admins_cmd(
24+
message: Message, user: Employee, stp_repo: MainRequestsRepo
25+
) -> None:
26+
"""Обработчик команды /admins для групп.
27+
28+
Args:
29+
message: Сообщение от пользователя
30+
user: Экземпляр пользователя с моделью Employee
31+
stp_repo: Репозиторий операций с базой STP
32+
"""
2533
try:
26-
# Получаем список администраторов чата
2734
chat_administrators = await message.bot.get_chat_administrators(message.chat.id)
2835

29-
# Обрабатываем каждого администратора и проверяем их в базе данных
3036
admin_list = []
3137
owner = None
3238

3339
for admin in chat_administrators:
3440
user_info = admin.user
3541

36-
# Проверяем администратора в базе данных
3742
db_user = await stp_repo.employee.get_users(user_id=user_info.id)
3843
if db_user:
39-
# Если есть в БД, используем данные из БД с ссылкой
4044
display_name = format_fullname(db_user, True, True)
4145
else:
42-
# Если нет в БД, используем данные из Telegram
4346
display_name = (
4447
f"@{user_info.username}"
4548
if user_info.username
@@ -78,15 +81,21 @@ async def admins_cmd(message: Message, user: Employee, stp_repo: MainRequestsRep
7881
except Exception as e:
7982
logger.error(f"Ошибка при получении списка администраторов: {e}")
8083
await message.reply(
81-
"❌ Произошла ошибка при получении списка администраторов. Возможно, у бота недостаточно прав."
84+
"🚨 Не смог найти администраторов. Возможно, у меня недостаточно прав"
8285
)
8386

8487

8588
@group_user_router.message(
8689
Command("balance"), MultiRoleFilter(SpecialistFilter(), DutyFilter())
8790
)
8891
async def balance_cmd(message: Message, user: Employee, stp_repo: MainRequestsRepo):
89-
"""/balance для получения своего баланса"""
92+
"""Обработчик команды /balance для групп.
93+
94+
Args:
95+
message: Сообщение от пользователя
96+
user: Экземпляр пользователя с моделью Employee
97+
stp_repo: Репозиторий операций с базой STP
98+
"""
9099
try:
91100
user_balance = await stp_repo.transaction.get_user_balance(user_id=user.user_id)
92101
achievements_sum = await stp_repo.transaction.get_user_achievements_sum(
@@ -105,12 +114,18 @@ async def balance_cmd(message: Message, user: Employee, stp_repo: MainRequestsRe
105114

106115
except Exception as e:
107116
logger.error(f"Ошибка при получении баланса: {e}")
108-
await message.reply("❌ Произошла ошибка при получении баланса")
117+
await message.reply("🚨 Не смог получить твой баланс. Напиши в @stp_helpbot")
109118

110119

111120
@group_user_router.message(Command("top"))
112121
async def top_cmd(message: Message, user: Employee, stp_repo: MainRequestsRepo):
113-
"""/top для получения рейтинга группы"""
122+
"""Обработчик команды /top для групп.
123+
124+
Args:
125+
message: Сообщение от пользователя
126+
user: Экземпляр пользователя с моделью Employee
127+
stp_repo: Репозиторий операций с базой STP
128+
"""
114129
try:
115130
# Получаем участников группы из базы
116131
group_members_data = await stp_repo.group_member.get_group_members(
@@ -171,4 +186,6 @@ async def top_cmd(message: Message, user: Employee, stp_repo: MainRequestsRepo):
171186

172187
except Exception as e:
173188
logger.error(f"Ошибка при получении рейтинга группы: {e}")
174-
await message.reply("❌ Произошла ошибка при получении рейтинга группы")
189+
await message.reply(
190+
"🚨 Не смог посчитать рейтинг группы. Напиши в @stp_helpbot"
191+
)

tgbot/handlers/groups/whois.py renamed to tgbot/handlers/groups/user/whois.py

Lines changed: 41 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,15 @@
1414

1515

1616
def create_user_info_message(user: Employee, user_head: Employee = None) -> str:
17-
"""Создание сообщения с информацией о пользователе (аналогично inline search)"""
17+
"""Форматирование информации о пользователе.
18+
19+
Args:
20+
user: Экземпляр пользователя с моделью Employee
21+
user_head: Руководитель сотрудника
22+
23+
Returns:
24+
Форматированный вид информации о пользователе
25+
"""
1826
# Определяем уровень доступа и эмодзи
1927
role_info = get_role(user.role)
2028

@@ -51,12 +59,19 @@ def create_user_info_message(user: Employee, user_head: Employee = None) -> str:
5159

5260

5361
@group_whois_router.message(Command("whois"))
54-
async def whois_command(message: Message, user: Employee, stp_repo: MainRequestsRepo):
55-
"""Команда /whois для получения информации о пользователе"""
56-
# Проверяем авторизацию пользователя
62+
async def whois_command(
63+
message: Message, user: Employee, stp_repo: MainRequestsRepo
64+
) -> None:
65+
"""Обработчик команды /whois в группе.
66+
67+
Args:
68+
message: Сообщение от пользователя
69+
user: Экземпляр пользователя с моделью Employee
70+
stp_repo: Репозиторий операций с базой STP
71+
"""
5772
if not user:
5873
await message.reply(
59-
" Для использования команды /whois необходимо авторизоваться в боте"
74+
"🚨 Для использования команд необходимо авторизоваться в боте"
6075
)
6176
return
6277

@@ -87,7 +102,7 @@ async def whois_command(message: Message, user: Employee, stp_repo: MainRequests
87102

88103
if not target_user:
89104
await message.reply(
90-
f"""<b>❌ Пользователь не найден</b>
105+
f"""🤷🏻‍♂️ <b>Никого не нашел</b>
91106
92107
Пользователь с ID <code>{replied_user_id}</code> не найден в базе
93108
@@ -113,31 +128,39 @@ async def whois_command(message: Message, user: Employee, stp_repo: MainRequests
113128

114129
# Логируем использование команды
115130
logger.info(
116-
f"[WHOIS] {user.fullname} ({message.from_user.id}) запросил информацию о {target_user.fullname} ({target_user.user_id})"
131+
f"[/whois] {user.fullname} ({message.from_user.id}) запросил информацию о {target_user.fullname} ({target_user.user_id})"
117132
)
118133

119134
except Exception as e:
120135
logger.error(f"Ошибка при выполнении команды /whois: {e}")
121136
await message.reply(
122-
" Произошла ошибка при получении информации о пользователе. Попробуйте позже."
137+
"🚨 Произошла ошибка при поиске сотрудника. Напиши в @stp_helpbot"
123138
)
124139

125140

126-
# Дополнительный хэндлер для команды /whois с аргументом (поиск по имени)
127141
@group_whois_router.message(Command("whois", magic=F.args))
128-
async def whois_with_args(message: Message, user: Employee, stp_repo: MainRequestsRepo):
129-
"""Команда /whois с аргументом для поиска по имени"""
130-
# Проверяем авторизацию пользователя
142+
async def whois_with_args(
143+
message: Message, user: Employee, stp_repo: MainRequestsRepo
144+
) -> None:
145+
"""Обработчик команды /whois с аргументами.
146+
147+
Args:
148+
message: Сообщение от пользователя
149+
user: Экземпляр пользователя с моделью Employee
150+
stp_repo: Репозиторий операций с базой STP
151+
"""
131152
if not user:
132153
await message.reply(
133-
" Для использования команды /whois необходимо авторизоваться в боте"
154+
"🚨 Для использования команд необходимо авторизоваться в боте"
134155
)
135156
return
136157

137158
search_query = message.text.split(maxsplit=1)[1].strip()
138159

139160
if len(search_query) < 2:
140-
await message.reply("❌ Поисковый запрос слишком короткий (минимум 2 символа)")
161+
await message.reply(
162+
"🤔 Не могу найти пользователя. Попробуй увеличить количество символов в запросе"
163+
)
141164
return
142165

143166
try:
@@ -148,7 +171,7 @@ async def whois_with_args(message: Message, user: Employee, stp_repo: MainReques
148171

149172
if not found_users:
150173
await message.reply(
151-
f"""<b>❌ Пользователи не найдены</b>
174+
f"""🤷🏻‍♂️ <b>Никого не нашел</b>
152175
153176
По запросу "<code>{search_query}</code>" ничего не найдено.
154177
@@ -204,7 +227,7 @@ async def whois_with_args(message: Message, user: Employee, stp_repo: MainReques
204227
users_text = "\n\n".join(user_list)
205228

206229
await message.reply(
207-
f"""<b>🔍 Найдено пользователей: {len(sorted_users)}</b>
230+
f"""<b>🔍 Нашел сотрудников: {len(sorted_users)}</b>
208231
209232
По запросу "<code>{search_query}</code>":
210233
@@ -217,15 +240,11 @@ async def whois_with_args(message: Message, user: Employee, stp_repo: MainReques
217240

218241
# Логируем использование команды
219242
logger.info(
220-
f"[WHOIS] {user.fullname} ({message.from_user.id}) нашел {len(sorted_users)} пользователей по запросу '{search_query}'"
243+
f"[/whois] {user.fullname} ({message.from_user.id}) нашел {len(sorted_users)} сотрудников по запросу '{search_query}'"
221244
)
222245

223246
except Exception as e:
224247
logger.error(f"Ошибка при поиске пользователей для команды /whois: {e}")
225248
await message.reply(
226-
" Произошла ошибка при поиске пользователей. Попробуйте позже."
249+
"🚨 Произошла ошибка при поиске сотрудника. Напиши в @stp_helpbot"
227250
)
228-
229-
230-
# Если создаете новый файл, экспортируйте роутер
231-
__all__ = ["group_whois_router"]

tgbot/services/files_processing/core/cache.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ def get_dataframe(
126126
return self._df_cache[cache_key]
127127

128128
# Загрузка из файла
129-
logger.info(f"[Cache] Промах для {file_path.name}:{sheet_name}, загрузка...")
129+
logger.debug(f"[Cache] Промах для {file_path.name}:{sheet_name}, загрузка...")
130130
try:
131131
# Используем pandas
132132
df = pd.read_excel(
@@ -382,7 +382,7 @@ def invalidate(self, file_path: Path):
382382
if file_key in self._date_indexes:
383383
del self._date_indexes[file_key]
384384

385-
logger.info(f"[Cache] Invalidated cache for {file_path.name}")
385+
logger.debug(f"[Cache] Invalidated cache for {file_path.name}")
386386

387387
def clear(self):
388388
"""Очищает все кэши."""

0 commit comments

Comments
 (0)