我想创建一个自定义徽章,其中将添加这些规则,这仅仅意味着当用户完成以下事情时,他们将自动获得相关的特定徽章。
用户需要完成以下事情/规则 -
- 用户至少创建了 2 篇帖子
- 用户上传了个人资料图片
- 用户至少点赞了一篇帖子
注意 - 我看到有些徽章是通过 SQL 查询创建的,实际上我对此非常陌生,所以请告诉我(如果需要)在哪里放置 SQL 查询来实现上述规则。
我想创建一个自定义徽章,其中将添加这些规则,这仅仅意味着当用户完成以下事情时,他们将自动获得相关的特定徽章。
用户需要完成以下事情/规则 -
注意 - 我看到有些徽章是通过 SQL 查询创建的,实际上我对此非常陌生,所以请告诉我(如果需要)在哪里放置 SQL 查询来实现上述规则。
这有帮助吗?
嘿,这真的很有帮助。
我已经启用了 SQL 查询选项,之后只需要解决一个小问题就可以搞定了。
如何查看数据库,因为我的自定义徽章规则很复杂,所以我需要一些东西 -
请回答这两点之后,我就可以安心睡觉了。
我已经安装了插件,并执行了下面的 SQL 命令,它能给出满足这 3 个规则的用户,但我不知道如何将其转换为用户在帖子上有行为时的触发器。
SQL 命令 -
select users.username, user_stats.user_id from user_stats Inner Join users ON user_stats.user_id = users.id where post_count = 2 AND likes_given = 1 AND uploaded_avatar_id > 0
遵循这篇帖子 Creating triggered custom badge queries 但由于我是 Discourse 的新手,仍然无法创建。
如果您能帮助我解决这个问题,我将不胜感激。一旦我能完成这个,我就可以更轻松地构建我自己的其他自定义徽章。
@Lhc_fl
这是“触发器:每日更新”的 SQL 代码;
SELECT st.user_id user_id, current_timestamp granted_at
FROM user_stats st
JOIN users u
ON st.user_id = u.id
WHERE st.post_count >= 2 AND st.likes_given >= 1 AND u.uploaded_avatar_id > 0
其他触发器依赖于特定内容,除非您找到 SQL 专家,否则我不建议使用它们。(我本人也不熟悉 SQL)
非常感谢您提供的信息,我只有三个基本问题:
st 和 u table 是什么?它们各自的用途是什么?为什么在 explorer 插件选项卡中看不到这些表?
每日触发器更新何时运行?具体来说,我想知道时间。
每日运行撤销查询 的用途是什么?
关于 1?,这些是表别名。
您是否看到 FROM user_stats st 行?这告诉查询 st 是 user_stats 表的缩写。
在 JOIN 语句中,其中写着 users u,情况也是如此。它表示在该查询中,u 是 users 表的别名。别名用于简化查询,减少输入量,从而降低出错的可能性。
关于 3,如果您启用该选项,那么如果用户根据查询不再符合徽章资格,它将从他们的帐户中删除该徽章。
感谢您澄清我的疑虑,现在只剩下第二个问题了
哎呀。我以为我已经回答了。
查询每 24 小时运行一次,具体取决于您启动容器的时间。因此,我有一个实例大约在 0:00 UTC(大致)运行它,另一个实例在 6:00 UTC 之后不久运行它。
我们可以更改此查询的运行时间,或者修改此查询以触发器:当用户对帖子采取行动或当用户编辑或创建帖子时运行?
如果可能,请更改查询,因为我对这个 Discourse 系统是新手,如果您能帮助我一次,那么从下次起,我就可以构建自己的自定义徽章。