看起来您是在数据浏览器中运行的。对于自定义 SQL 徽章,您需要启用隐藏的站点设置,并将查询添加到徽章页面:
本指南说明了如何在 Discourse 中创建触发式自定义徽章查询,包括徽章类型、触发徽章的约束条件以及一个示例查询。
所需用户级别:管理员
此功能默认禁用。要启用它,请遵循本指南 。
在 Discourse 中定义徽章时,您会遇到一个“触发”(Trigger)选项,其中包含以下选择:
每日更新 (Update daily)
当用户对帖子进行操作时 (When a user acts on post)
当用户编辑或创建帖子时 (When a user edits or creates a post)
当用户更改信任级别时 (When a user changes trust level)
当用户被编辑或创建时 (When a user is edited or created)
[Badge Trigger Options]
这些触发器会强制徽章运行的频率高于每日一次,确保用户在接近发生操作时就能收到新徽章的通知。
徽章类型
您可以定义两种类型的徽章:
以帖子为目标的徽章
不以帖…
但是,根据托管套餐的不同,并非所有人都能够执行此操作。
不过,如果您无法使用自定义 SQL 触发器,数据浏览器中的一个也是完全可行的。 我认为您需要就运行频率以及如何从结果中授予徽章(手动逐个授予,还是通过批量授予)做出一些选择,但这绝对是可行的。
也许简单的东西会更好,但您或许也想添加一个日期范围参数?
WITH foo AS (SELECT ub.user_id,count(ub.user_id), max(ub.granted_at) granted_at
FROM user_badges ub
WHERE ub.badge_id=108
GROUP BY ub.user_id)
SELECT user_id, granted_at
FROM foo
WHERE count >4
ORDER BY granted_at DESC