这听起来是一种实现此目的的有趣方式,如果你想分享更多细节,我很乐意了解更多!
当然可以。![]()
基本上,最简单的形式是,你选择一个Reaction,表示“我认为这值得一个徽章”,你的成员可以使用它来提名帖子,然后查询会找出哪些帖子获得了该Reaction。然后,你可以从查询提供的列表中手动授予徽章,如果你完全信任该列表,则批量授予,甚至可以设置徽章的自定义SQL,让系统自动授予。![]()
你还可以为查询应用一些额外的标准,使其更具针对性。例如,“一个帖子需要获得x个此Reaction”,或者“只有TL2+授予的Reaction才算数”。
如果当前没有你认为合适的表情符号,它也支持自定义表情符号。
2 个赞
谢谢!我搜索了一下,但找不到完全匹配的查询,您愿意分享这个查询吗?我从来没有自己创建过,但我觉得我需要学习这个!
我有一个正在尝试的,不过我把它放在一边,想用新的眼光来看待它,还没有重新开始,所以可能需要一些修改。它旨在根据“data-team”组成员在 Data & reporting 类别帖子中获得至少 10 个
表情符号的帖子来授予徽章:
SELECT p.user_id, MIN(p.created_at) granted_at
FROM badge_posts p
JOIN topic_tags tt ON tt.topic_id = p.topic_id
WHERE tt.tag_id = 615
AND EXISTS (
SELECT 1
FROM discourse_reactions_reactions dr
JOIN discourse_reactions_reaction_users dru ON dr.id = dru.reaction_id
JOIN group_users gu ON gu.user_id = dru.user_id
WHERE dr.post_id = p.id
AND dr.reaction_value = 'chefs_kiss'
AND gu.group_id = 175
)
GROUP BY p.user_id
HAVING COUNT(*) >= 10
不过我对使用 MIN 并不满意,因为它给出了错误的授予日期。
它有很多标准,而且是自动的,我认为这使其处于更复杂的一端。我认为一个更简单的标准可以在不费太多力气的情况下实现。
1 个赞
太好了,这有帮助!鉴于我们已经偏离主题,这可能应该移到一个新主题。但这是我(在 ChatGPT 的帮助下)提出的查询,它只返回了给出/收到表情符号的用户、表情符号数量、表情符号日期以及指向特定帖子的 URL。我唯一无法实现的是使帖子 URL 可点击,这似乎仅限于主题 URL。
WITH reaction_pairs AS (
SELECT
p.user_id AS received_reaction_user_id,
dru.user_id AS gave_reaction_user_id,
dr.post_id,
t.id AS topic_id,
t.slug AS topic_slug,
p.post_number,
dru.created_at AS reaction_date
FROM
discourse_reactions_reactions dr
JOIN discourse_reactions_reaction_users dru ON dr.id = dru.reaction_id
JOIN posts p ON dr.post_id = p.id
JOIN topics t ON p.topic_id = t.id
WHERE
dr.reaction_value = 'Your_Specific_Reaction_Here'
)
SELECT
ur1.id AS user_id,
ur2.username AS "给出表情符号的用户",
'Your_Community_URL' || 't/' || rp.topic_slug || '/' || rp.topic_id || '/' || rp.post_number AS "帖子 URL",
rp.reaction_date AS "表情符号日期",
COUNT(*) AS "表情符号数量"
FROM
reaction_pairs rp
JOIN users ur1 ON rp.received_reaction_user_id = ur1.id
JOIN users ur2 ON rp.gave_reaction_user_id = ur2.id
GROUP BY
ur1.id,
ur2.username,
rp.topic_slug,
rp.topic_id,
rp.post_number,
rp.reaction_date
ORDER BY
"表情符号数量" DESC, "表情符号日期" DESC
2 个赞
要使这部分生效,请在列名后附加 _url,例如:
'Your_Community_URL' || 't/' || rp.topic_slug || '/' || rp.topic_id || '/' || rp.post_number AS post_url
4 个赞