count users without gamers

This commit is contained in:
vrubelroman 2025-11-20 02:22:44 +03:00
parent ef9aa3d3df
commit faf6ec0c35
3 changed files with 32 additions and 1 deletions

View file

@ -167,6 +167,18 @@ class AdminBot:
cursor.execute("SELECT COUNT(*) FROM telegram_users WHERE DATE(created_at) = ?", (today,))
users_today = cursor.fetchone()[0]
# Count users without gamers
cursor.execute("""
SELECT COUNT(DISTINCT tu.user_id)
FROM telegram_users tu
LEFT JOIN user_gamers ug ON tu.user_id = ug.user_id
WHERE ug.id IS NULL
""")
users_without_gamers = cursor.fetchone()[0]
# Calculate percentage
users_without_gamers_percent = round((users_without_gamers / users_count * 100)) if users_count > 0 else 0
# Count unique gamers
cursor.execute("SELECT COUNT(DISTINCT username) FROM gamers")
gamers_count = cursor.fetchone()[0]
@ -201,6 +213,7 @@ class AdminBot:
message = (
f"📊 <b>Статистика базы данных</b>\n\n"
f"👥 Пользователей Telegram: {users_count} (сегодня: {users_today})\n"
f"👤 Пользователей без игроков: {users_without_gamers} ({users_without_gamers_percent}%)\n"
f"🎮 Отслеживаемых игроков: {gamers_count} (сегодня: {gamers_today})\n\n"
f"📨 <b>Счетчики сообщений</b>\n\n"
f"Всего отправлено: <b>{stats['total_all_time']}</b>\n"

View file

@ -151,6 +151,19 @@ def get_users():
cursor.execute("SELECT COUNT(*) FROM telegram_users WHERE DATE(created_at) = ?", (today,))
users_today = cursor.fetchone()[0]
# Count users without gamers
cursor.execute("""
SELECT COUNT(DISTINCT tu.user_id)
FROM telegram_users tu
LEFT JOIN user_gamers ug ON tu.user_id = ug.user_id
WHERE ug.id IS NULL
""")
users_without_gamers = cursor.fetchone()[0]
# Calculate percentage
total_users = len(users)
users_without_gamers_percent = round((users_without_gamers / total_users * 100)) if total_users > 0 else 0
# Count new gamers today (from user_gamers table)
cursor.execute("""
SELECT COUNT(DISTINCT g.id)
@ -175,8 +188,10 @@ def get_users():
return jsonify({
'success': True,
'users': users,
'total_users': len(users),
'total_users': total_users,
'users_today': users_today,
'users_without_gamers': users_without_gamers,
'users_without_gamers_percent': users_without_gamers_percent,
'total_gamers': total_gamers,
'gamers_today': gamers_today,
'message_stats': message_stats

View file

@ -286,6 +286,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="total-gamers">0</strong> (сегодня: <strong id="gamers-today">0</strong>)
</div>
@ -353,6 +354,8 @@
users = data.users;
document.getElementById('total-users').textContent = data.total_users;
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('total-gamers').textContent = data.total_gamers;
document.getElementById('gamers-today').textContent = data.gamers_today || 0;