This commit is contained in:
2026-05-30 13:19:12 +02:00
parent 067f202c08
commit 0ae82ce433

View File

@@ -558,24 +558,19 @@ export default router => {
group.get(/\/orakel\/user$/, async (req, res) => { group.get(/\/orakel\/user$/, async (req, res) => {
try { try {
const now = ~~(Date.now() / 1000); const now = ~~(Date.now() / 1000);
const thirtyDaysAgo = now - 2592000; // 30 days in seconds const sevenDaysAgo = now - 604800; // 7 days in seconds
// Tiered selection from user.last_seen (updated fire-and-forget on every authenticated request): // Flat random pick from all users seen in the last 7 days.
// Tier 0 — active in last 15 minutes // No tiered bias — gives a proper pool of recently-active users
// Tier 1 — active in last 24 hours // rather than always favouring whoever is online right now.
// Tier 2 — active in last 30 days (includes lurkers — anyone who visited the site)
// Banned users are always excluded. // Banned users are always excluded.
let activeUsers = await db` let activeUsers = await db`
SELECT "user"."user", "user".id, uo.display_name SELECT "user"."user", "user".id, uo.display_name
FROM "user" FROM "user"
LEFT JOIN user_options uo ON uo.user_id = "user".id LEFT JOIN user_options uo ON uo.user_id = "user".id
WHERE "user".last_seen > ${thirtyDaysAgo} WHERE "user".last_seen > ${sevenDaysAgo}
AND "user".banned = false AND "user".banned = false
ORDER BY (CASE ORDER BY RANDOM()
WHEN "user".last_seen > ${now - 900} THEN 0
WHEN "user".last_seen > ${now - 86400} THEN 1
ELSE 2
END), RANDOM()
LIMIT 1 LIMIT 1
`; `;