Use nickname instead of username in P2P chat display
Some checks failed
continuous-integration/drone/pr Build is failing
Some checks failed
continuous-integration/drone/pr Build is failing
- 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
This commit is contained in:
@@ -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 "💬"
|
||||
|
||||
Reference in New Issue
Block a user