Compare commits

...

2 Commits

Author SHA1 Message Date
fd8fc35f03 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
2026-03-07 02:22:38 +00:00
f855772229 Use nickname instead of username in P2P chat display
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
2026-03-07 11:22:07 +09: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 "💬"