ru en in web interface

This commit is contained in:
vrubelroman 2025-11-20 13:45:50 +03:00
parent 0c9a66a73c
commit 711adb4126
2 changed files with 27 additions and 6 deletions

View file

@ -117,11 +117,12 @@ def get_users():
tu.first_name,
tu.last_name,
tu.created_at,
tu.bot_language,
COUNT(ug.id) as gamer_count,
SUM(CASE WHEN ug.period_minutes > 0 THEN 1 ELSE 0 END) as monitored_gamers
FROM telegram_users tu
LEFT JOIN user_gamers ug ON tu.user_id = ug.user_id
GROUP BY tu.user_id, tu.username, tu.first_name, tu.last_name, tu.created_at
GROUP BY tu.user_id, tu.username, tu.first_name, tu.last_name, tu.created_at, tu.bot_language
ORDER BY tu.created_at DESC
''')
@ -135,8 +136,9 @@ def get_users():
'first_name': row[2] or '-',
'last_name': row[3],
'created_at': row[4],
'gamer_count': row[5],
'monitored_gamers': row[6]
'bot_language': row[5] or 'en', # Default to 'en' if not set
'gamer_count': row[6],
'monitored_gamers': row[7]
})
# Получаем общее количество игроков (уникальных)
@ -160,9 +162,18 @@ def get_users():
""")
users_without_gamers = cursor.fetchone()[0]
# Calculate percentage
# Count users with Russian language
cursor.execute("""
SELECT COUNT(DISTINCT tu.user_id)
FROM telegram_users tu
WHERE tu.bot_language = 'ru'
""")
users_with_ru_language = cursor.fetchone()[0]
# Calculate percentages
total_users = len(users)
users_without_gamers_percent = round((users_without_gamers / total_users * 100)) if total_users > 0 else 0
users_ru_language_percent = round((users_with_ru_language / total_users * 100)) if total_users > 0 else 0
# Count new gamers today (from user_gamers table)
cursor.execute("""
@ -192,6 +203,8 @@ def get_users():
'users_today': users_today,
'users_without_gamers': users_without_gamers,
'users_without_gamers_percent': users_without_gamers_percent,
'users_with_ru_language': users_with_ru_language,
'users_ru_language_percent': users_ru_language_percent,
'total_gamers': total_gamers,
'gamers_today': gamers_today,
'message_stats': message_stats

View file

@ -287,6 +287,7 @@
<div class="stats">
Всего пользователей: <strong id="total-users">0</strong> (сегодня: <strong id="users-today">0</strong>)<br>
👤 Пользователей без игроков: <strong id="users-without-gamers">0</strong> (<strong id="users-without-gamers-percent">0</strong>%)<br>
🇷🇺 Пользователей с русским языком: <strong id="users-with-ru-language">0</strong> (<strong id="users-ru-language-percent">0</strong>%)<br>
Кол-во игроков: <strong id="total-gamers">0</strong> (сегодня: <strong id="gamers-today">0</strong>)
</div>
@ -356,6 +357,8 @@
document.getElementById('users-today').textContent = data.users_today || 0;
document.getElementById('users-without-gamers').textContent = data.users_without_gamers || 0;
document.getElementById('users-without-gamers-percent').textContent = data.users_without_gamers_percent || 0;
document.getElementById('users-with-ru-language').textContent = data.users_with_ru_language || 0;
document.getElementById('users-ru-language-percent').textContent = data.users_ru_language_percent || 0;
document.getElementById('total-gamers').textContent = data.total_gamers;
document.getElementById('gamers-today').textContent = data.gamers_today || 0;
@ -428,6 +431,8 @@
const userName = escapeHtml(user.first_name);
const username = user.username && user.username !== '-' ? escapeHtml(user.username) : null;
const telegramLink = username ? `https://t.me/${username}` : `tg://user?id=${user.user_id}`;
const botLanguage = user.bot_language || 'en';
const languageBadge = botLanguage === 'ru' ? '🇷🇺 ru' : '🇬🇧 en';
return `
<div class="user-item ${selectedUserId === user.user_id ? 'active' : ''}" onclick="selectUser(${user.user_id})">
@ -435,6 +440,7 @@
<a href="${telegramLink}" target="_blank" class="user-link" onclick="event.stopPropagation();">
${userName}
</a>
<span style="font-size: 12px; color: #666; margin-left: 5px;">${languageBadge}</span>
</div>
<div class="user-info">
${username ?
@ -471,10 +477,12 @@
// Create username with link
const usernameElement = document.getElementById('selected-user-username');
const botLanguage = user.bot_language || 'en';
const languageBadge = botLanguage === 'ru' ? '🇷🇺 ru' : '🇬🇧 en';
if (username) {
usernameElement.innerHTML = `<a href="${telegramLink}" target="_blank" class="username-link" style="color: #8B6F47; text-decoration: none;">@${escapeHtml(username)}</a> • ID: ${user.user_id}`;
usernameElement.innerHTML = `<a href="${telegramLink}" target="_blank" class="username-link" style="color: #8B6F47; text-decoration: none;">@${escapeHtml(username)}</a> • ID: ${user.user_id} • ${languageBadge}`;
} else {
usernameElement.textContent = `ID: ${user.user_id}`;
usernameElement.textContent = `ID: ${user.user_id} • ${languageBadge}`;
}
document.getElementById('selected-user-date').textContent = `Добавлен: ${formatDate(user.created_at)}`;