From f8557722294b588b52cb4cab5c458af2b64a6909 Mon Sep 17 00:00:00 2001 From: "Andrew K. Choi" Date: Sat, 7 Mar 2026 11:22:07 +0900 Subject: [PATCH] Use nickname instead of username in P2P chat display MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Use user.nickname (from registration) instead of Telegram username - Show admin special handling: display 'Админ' for regular users communicating with admin - Admin users see: nickname + (карта: card_number) - Regular users see only nickname - Apply changes to: * Dialog header (Диалог с Daniel) * User selection list * Conversations list (Мои диалоги) * Message sender display * format_sender_name() function --- src/handlers/p2p_chat.py | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/handlers/p2p_chat.py b/src/handlers/p2p_chat.py index 0423b58..badb57c 100644 --- a/src/handlers/p2p_chat.py +++ b/src/handlers/p2p_chat.py @@ -45,10 +45,14 @@ def format_sender_name(user: User, is_current_user: bool = False, current_user_i if is_current_user: return "🔵 Вы" - # Формируем базовое имя - name = f"@{user.username}" if user.username else user.first_name or "Unknown" + # Если это администратор и текущий пользователь не админ - показываем "Админ" + if user.is_admin and not current_user_is_admin: + return "🔵 Админ" - # Добавляем информацию о карте если пользователь админ и у собеседника есть карта + # Формируем базовое имя (используем nickname из профиля) + name = user.nickname or user.first_name or f"@{user.username}" or "Unknown" + + # Добавляем информацию о карте если пользователь админ и текущий юзер админ if current_user_is_admin and user.club_card_number: name += f" (карта: {user.club_card_number})" @@ -131,7 +135,7 @@ async def select_recipient(callback: CallbackQuery, state: FSMContext): # Создаём кнопки с пользователями (по 1 на строку) buttons = [] for user in users[:20]: # Ограничение 20 пользователей на странице - display_name = f"@{user.username}" if user.username else user.first_name + display_name = user.nickname or f"@{user.username}" or user.first_name or "Unknown" if user.club_card_number: display_name += f" (карта: {user.club_card_number})" @@ -187,7 +191,7 @@ async def start_conversation(callback: CallbackQuery, state: FSMContext): await state.update_data(recipient_id=recipient.id, recipient_telegram_id=recipient.telegram_id) await state.set_state(P2PChatStates.chatting) - recipient_name = f"@{recipient.username}" if recipient.username else recipient.first_name + recipient_name = recipient.nickname or f"@{recipient.username}" or recipient.first_name or "Unknown" text = f"💬 Диалог с {recipient_name}\n\n" @@ -246,7 +250,7 @@ async def show_conversations(callback: CallbackQuery): buttons = [] for peer, last_msg, unread in conversations: - peer_name = f"@{peer.username}" if peer.username else peer.first_name + peer_name = peer.nickname or f"@{peer.username}" or peer.first_name or "Unknown" # Иконка в зависимости от непрочитанных icon = "🔴" if unread > 0 else "💬"