online indicators

This commit is contained in:
2026-04-21 22:55:48 +03:00
parent db78568340
commit af327ec142
2 changed files with 42 additions and 2 deletions

View File

@@ -13,8 +13,33 @@ dashboard = Blueprint('dashboard', __name__)
@dashboard.route('/')
def index():
conn = get_db()
players = conn.execute('SELECT DISTINCT player, player_id FROM town_state WHERE player IS NOT NULL ORDER BY player ASC').fetchall()
rows = conn.execute('''
SELECT player, player_id, MAX(updated_at) as last_seen
FROM town_state
WHERE player IS NOT NULL
GROUP BY player, player_id
ORDER BY player ASC
''').fetchall()
conn.close()
players = []
now = datetime.utcnow()
for r in rows:
is_online = False
if r['last_seen']:
try:
last_seen = datetime.fromisoformat(r['last_seen'])
if (now - last_seen).total_seconds() <= 150:
is_online = True
except Exception:
pass
players.append({
'player': r['player'],
'player_id': r['player_id'],
'is_online': is_online
})
return render_template('index.html', players=players)
@dashboard.route('/player/<player_id>')