为了回答您的第一个问题,我预计将网站设为只读模式会影响用户获得“Devotee”徽章的能力。当网站处于只读模式时,不会有新数据写入数据库,因此在网站处于只读模式时,用户访问的详细信息将不会被记录。
可以试试这个查询。它会返回用户在给定开始日期和结束日期之间未访问网站的日期:
用户未访问天数
--[params]
-- date :start_date
-- date :end_date
-- string :username
WITH days AS (
SELECT date_trunc('day', day)::date AS day
FROM generate_series(:start_date::date, :end_date::date, '1 day') AS day
),
users_visits AS (
SELECT
visited_at
FROM user_visits uv
JOIN users u ON u.id = uv.user_id
WHERE u.username = :username
AND visited_at BETWEEN :start_date AND :end_date
),
visits_days AS (
SELECT
day,
visited_at
FROM days
LEFT JOIN users_visits uv
ON uv.visited_at = day
ORDER BY day DESC
)
SELECT day AS days_without_visits
FROM visits_days WHERE visited_at IS NULL
ORDER BY day DESC
如果您想为一些不符合技术资格的用户授予徽章,请查看 https://meta.discourse.org/t/how-to-award-a-non-custom-badge-through-the-console/103269。请注意,这种方法仅在自托管网站上可用。对于托管在我们服务器上的网站,我们可以为您授予该主题中列出的徽章。