Merge pull request 'Use nickname instead of username in P2P chat display' (#14) from v2_functions into master
All checks were successful
continuous-integration/drone/push Build is passing

Reviewed-on: #14
This commit is contained in:
2026-03-07 02:22:38 +00:00

View File

@@ -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"💬 <b>Диалог с {recipient_name}</b>\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 "💬"