Maker Forums 的成员们非常珍视能够使用多种表情符号进行反应的功能。如果 retort 停止维护,在迁移过程中失去这一功能将会让我们非常遗憾。
Retort 将继续由 Pavilion 维护。
@Ahmed_Gagan 您对以下内容有何看法?
如需优先处理回复反应,您可以使用以下代码:
SiteSetting.post_undo_action_window_mins = 允许的最大分钟数
ReactionManager.new(first_retort_reaction_at_priority, by_user, Guardian.new(by_user), post).toggle!
这将处理所有相关事宜:如果用户已点赞该帖子,它将移除“点赞”并添加相应的反应。
是的,我可以做到。不过这算是个变通方案 ![]()
我不确定这个变通方案长期来看是否依然可行,而且也存在一定风险。例如,如果我直接运行那段代码,用户的 post_undo_action_window_mins 站点设置就会被永久修改。虽然你可以在迁移结束时将其改回来,但为了绕过守护机制而临时修改设置并不是理想的做法。
我理想中的方案是对 ReactionManager 接口进行微调,以便能够可靠地将“回击”(retorts)迁移为“反应”(reactions)。目前该接口仅设计用于处理来自客户端的请求。
实现这一目标的一种方法是:
- 将
toggle!中的守护逻辑抽象为ensure_can_toggle方法 - 使
ensure_can_toggle方法支持force选项
这是 Discourse 其他部分处理迁移或后端导入时通常采用的方法(如果你在 app/ 或 lib/ 中搜索 force,就能看到一些示例)。
这样解释清楚吗?
我认为这里不需要使用该设置,因为我们并未触及帖子中已存在的点赞。这意味着我们正在为帖子创建新的反应。在这种情况下,guardian.can_delete_reaction_user? 将始终为 true。就个人而言,仅使用 ReactionManager.toggle 就足以满足此需求。
Discourse 通过“点赞”功能实现了许多操作,例如根据信任等级限制点赞数量,并依据点赞数授予用户徽章。
添加“反应”是否也会同时增加用户和主题的点赞计数?
你可以单独询问它与新的官方插件 Discourse Reactions 的交互情况。
但 Retort(与 Discourse Reactions 插件不同,它允许每个用户对每篇帖子进行多次反应)与“点赞”相关的信任等级和徽章完全没有交互。
@gdpelican 这是从 https://meta.discourse.org/t/reaction-emoji-seem-to-have-no-verification/189108 转载的帖子,因为反应表情似乎不属于 Discourse 原生功能,所以我在此重新发布:
我认为我可能发现了一个 bug,但目前还没有完整的复现步骤,不过我可以轻松展示该问题的示例,并且我认为我的推测可能是正确的。
问题如下:用户可以添加不存在的表情符号到帖子反应中,结果会在帖子中出现 :whateverYouWant: 这样的反应。
你可以在 Manjaro 论坛上看到相关示例,我注意到某位用户的帖子经常包含这些不存在的表情符号。在向他询问了几个问题后,我推测他可能在使用某种浏览器自动翻译扩展程序,该程序可能会将类似 :code: 的表情符号代码翻译成他的语言。遗憾的是,我没有收到该用户的回复,因此无法确切了解他在浏览器中的具体设置。为了佐证我的推测,你可以看到他在以下链接的线程中引用他人时,其引用内容中包含了原始消息的翻译版本。
查看 Manjaro 论坛上的这条消息/线程:
查看反应中的示例,你可以清楚地看到所有正常的反应旁边都有一个无效的反应:
因此,似乎由于缺乏对表情符号代码的验证,用户可以发送不存在的表情符号。
我已更新此插件,使其与最新的 Discourse 代码兼容。
https://github.com/gdpelican/retort/commit/2b94ca394e941342cba4a4ee4950daf54856fa61
@th21 我还更新了 retort 的 HTML 结构,以更好地适应较长的回复列表,尤其是在移动设备上。
https://github.com/gdpelican/retort/commit/a9740c2a84a1de89c66b5c5cf865e6118e535d72
谢谢,它起作用了!
我认为回复容器应该位于工具栏的上方或下方,最好是在上方,这样我们在 CSS 方面会有更多的操作空间。
是否可以使用数据浏览器或控制台查找最常用的表情符号列表?
我查看了 plugin_store_rows 表,但没有找到有用的信息。
您好,用户用俏皮话做出反应的工具提示在移动设备上现在已损坏。我尝试调整了 z-index,但未能使用自定义 CSS 成功修复它。有人能帮忙看看吗?
Discourse Reactions 是一个糟糕的替代品,原因只有一个:它将反应限制为每帖一个。与 Retort 相比,这大大降低了反应的效用,Retort 允许人们对同一帖子给出多个反应。
因此,我真希望 Retort 能够得到维护。更好的解决方案是更新 Discourse Reactions 以允许多个反应。
另一个很大的不足是,Retort 允许你从所有可用的表情符号中进行选择,而你必须为 Discourse Reactions 定义一组表情符号。如果 Discourse Reactions 具备了这两个功能,我很乐意放弃 Retort,但在此之前,如果我告诉用户他们将失去 95% 的表情符号反应的访问权限,他们是不会高兴的。
有一个 Feature 主题显示出一些希望……
是的,如果这一切都实现了,我认为我可以轻松地说服我的用户群迁移。只是在这一切完全可用之前就淘汰替代方案有点糟糕。

