From 711adb4126d0b4e92ad7362bdce5e204506500e4 Mon Sep 17 00:00:00 2001 From: vrubelroman Date: Thu, 20 Nov 2025 13:45:50 +0300 Subject: [PATCH] ru en in web interface --- LichessWebView/app.py | 21 +++++++++++++++++---- LichessWebView/templates/index.html | 12 ++++++++++-- 2 files changed, 27 insertions(+), 6 deletions(-) diff --git a/LichessWebView/app.py b/LichessWebView/app.py index 9919d8c..23f6ab6 100644 --- a/LichessWebView/app.py +++ b/LichessWebView/app.py @@ -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 diff --git a/LichessWebView/templates/index.html b/LichessWebView/templates/index.html index 827d457..2121284 100644 --- a/LichessWebView/templates/index.html +++ b/LichessWebView/templates/index.html @@ -287,6 +287,7 @@
Всего пользователей: 0 (сегодня: 0)
👤 Пользователей без игроков: 0 (0%)
+ 🇷🇺 Пользователей с русским языком: 0 (0%)
Кол-во игроков: 0 (сегодня: 0)
@@ -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 `
@@ -435,6 +440,7 @@ ${userName} + ${languageBadge}
${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 = `@${escapeHtml(username)} • ID: ${user.user_id}`; + usernameElement.innerHTML = `@${escapeHtml(username)} • 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)}`;