如何设置"互不理睬"?

编辑:我原以为自己很聪明,但事实并非如此。请查看下一条消息。

大家好,只是想分享一个我发现的解决方案……我在一个现有的会员网站上使用 Discourse 作为论坛,而在该网站上,会员可以互相屏蔽。当用户 A 屏蔽用户 B 时,用户 A 和用户 B 都无法看到对方,也无法进行互动等。

我需要将相同的功能迁移到 Discourse 上。我一直绞尽脑汁思考如何实现这一点,我相信终于找到了解决办法:

  1. 我设置了一个 Discourse Webhook 来接收事件,以便捕获 user_logged_in 事件。

  2. 当用户登录时,我会遍历他们在我的网站上的“屏蔽”列表。

  3. 对于他们试图屏蔽的每个其他成员,我使用 Discourse API(注意:这与 SSO 毫无关系)来“忽略”该用户。

  4. 这里是巧妙之处:我还告诉 Discourse 让另一个用户也忽略当前登录的主要用户。换句话说,用户 A(当前登录者)和用户 B(在用户 A 的屏蔽列表中)互相“忽略”。

  5. 注意:在发送“忽略”消息时,我实际上必须检查他们的信任等级是否至少为 TL2,因为“忽略”仅是 TL2 的功能——如果未达到,则必须先将他们升级到 TL2,然后才能完成“忽略”操作。将用户升级到 TL2 会引发一些其他副作用(例如 discobot 高级脚本启动、授予徽章等),我需要处理这些问题。

另外,我在 Discourse 用户个人资料中隐藏了“已忽略”列表(仅使用简单的 CSS),因为主网站上已有管理被屏蔽用户的界面。我不希望我的 Discourse 会员看到 Discourse 的忽略列表。

希望这对需要此类功能的其他人有所帮助……

2 个赞

问题就在这里。Discourse 中的“忽略”功能并不能完全隐藏对方。它会让对方的消息不可见(在这方面做得非常棒)……并替换为一个显示“查看 x 条隐藏消息”的链接……这一点我可以用 CSS 轻松隐藏,所以没什么大不了的。

但是!如果有人引用了被屏蔽的用户,你仍然会在消息中看到他们的头像和名字(但看不到引用内容本身),并且在消息回复指示器中也能看到他们的头像和名字。真糟糕。

这意味着,如果用户 A 在我的网站上屏蔽了用户 B……而我实施了我在上一条消息中描述的双向忽略技巧(双方互相忽略)……那么用户 B(他们自己从未屏蔽过用户 A)会突然看到一些奇怪的现象,即用户 A 在论坛上发帖。并且他们能推断出用户 A 已经屏蔽了他们。这样一来,就向用户 B 泄露了私人信息(用户 A 屏蔽了谁)。这在我的网站上可不行……完全不行。

唉……

所以我想,我大概终于到了需要学习 Ruby on Rails 的地步了 ;-),然后编写一个插件,扩展现有的“忽略”功能,真正彻底地抹去“忽略”列表中用户的所有痕迹。这样我就可以回到我的双向屏蔽方案了……

1 个赞

没错,Discourse 的忽略功能并不是真正的完整屏蔽功能(这也是我们不称其为“屏蔽”的原因)。它更适合用于那些可能并未违反社区准则,但只是让你感到有些烦人的情况。

关于增加完整屏蔽功能的需求之前也曾提出过,但我们通常持以下观点:

8 个赞

你好,Kris,感谢你的回复。

先说一声抱歉,接下来可能会有点小小的防御性吐槽,但这并非针对你,而是针对那些一直告诉我“我不需要屏蔽功能”的人们…… :wink:

我在社区管理方面已经深耕多年(甚至早在为 AOL、CompuServe 和 GEnie 工作时,就在他们的论坛和聊天室从事社区相关工作)。如今,我运营着自己的社区网站。论坛是该网站的一部分,也是许多(但并非全部)社区成员互动的场所。

我完全理解为什么屏蔽功能并不理想…… 我懂,真的懂。我阅读了 meta.discourse 上所有能找到的相关帖子。我见过人们恳求加入“忽略”功能,也见证了关于为何这不是个好主意的来回辩论,更看到了你们最终妥协并将该功能加入软件的那一刻。:wink:

然而,在这个过程中,我认为有些人忘记了一点:并非所有人运营的网站都是 Discourse 或基于论坛的社区。

在我目前的情况下,在 Discourse 出现之前,我的网站上已经拥有一个强大的社区:不仅包括我之前使用(糟糕的旧软件)运营的论坛,还包括我网站上的聊天室功能(那里有常客,形成了自己的社区,并与我的论坛社区有所重叠),以及网站上其他以社区为中心的功能。

无论好坏,我的网站一直以来都提供对成员进行“完全屏蔽”的功能。部分原因是社区问题,部分原因是我所服务的社区期望我在隐私方面保持高度敏感,原因包括法律顾虑(说真的)。

对我而言,现在问“屏蔽是个好主意吗?”并不是正确的问题。尽管我个人并不喜欢屏蔽的概念,但这艘船已经起航了。:wink:

(再补充一点背景:我的旧论坛相当有毒,这是由于网站前所有者的一些决策所致。人们要求双向屏蔽功能的部分原因正是论坛中的那些糟心事。作为升级到 Discourse 并推出全新论坛的一部分,我也在努力帮助修复受损的论坛社区。)

再次明确强调,我完全理解为什么屏蔽通常不是健康社区的标志。事实上,我正在努力让那些曾经热衷于屏蔽的成员稍微冷静一些。

所以。

如果我要创建一个全新的社区,我一定会从 Discourse 开始,并且不需要双向屏蔽功能。

如果我的网站原本就没有双向屏蔽功能(或者我不是从支持双向屏蔽的论坛软件升级而来),我也不会需要在 Discourse 中引入双向屏蔽。

如果我的当前论坛社区没有已经受损,我也不需要双向屏蔽功能。但他们的确经历过一些糟糕的往事,这迫使我必须实施屏蔽功能。现在转向 Discourse 是一个巨大的转变,已经让社区产生了震荡(它与之前的系统大不相同,因此需要一段适应过程),此时再说“哦对了,顺便提一下,我们要取消屏蔽功能”并不是合适的时机。那样我会引发一场抗议。

不管怎样。我为回复的冗长表示歉意,也希望大家不要觉得我防御了。:wink: 我只是不想陷入关于屏蔽以及为何它“不健康”的哲学辩论。

我仍然需要一个完整的屏蔽功能。

我真诚地感谢所有的反馈和帮助!我之所以发布这些内容(并花时间写下这段超长的消息),是因为我想为 Discourse 社区做出自己的贡献。

最后我想说:我知道 Discourse 目前并不完全提供我所请求的功能。 但它已经很接近了!我并不是试图说服 Discourse 团队将屏蔽功能加入软件(那场对话在我到来之前就已经开始并结束了)……但我确实希望利用手头现有的工具来实现我的目标……并向这里聪明、机智、富有创造力的思考者和开发者寻求帮助……并分享我在过程中发现的任何经验,供他人参考。

5 个赞

我同意你的许多观点,但只想就这一点发表一下看法……

对于中小型论坛来说,没有自动屏蔽功能或许还可以接受,但在我看来,对于大型平台而言,这绝对是必不可少的。

原因之一在于,成员越多,帖子就越多,从而可能引发更多的人际冲突。虽然一个由 10 名版主组成的团队可以轻松“管理”拥有 1 万、2 万或 3 万名成员的论坛,但随着成员基数的增长,其他一切的增长速度会更快——更多的声音意味着更多的帖子,进而意味着更多的问题。

这是所有大型社交平台都提供屏蔽功能的主要原因之一。另一个原因来自法律层面:如果有人报告称受到其他成员的欺凌,而网站却未采取任何行动(也许因为他们认为并未发生欺凌,“那只是他们的臆想”),随后该用户自杀,网站可能会承担法律责任。如果某人 genuinely 觉得自己在被欺凌,那么这就是他们的真实感受——这与我们或你我认为如何无关。重要的是,我们有责任关怀成员,而阻止他们产生这种感受的最佳方式之一就是切断这种互动——这最好通过允许他们自行屏蔽那些给他们带来困扰的人来实现(有时也需要我们主动实施屏蔽)。

充当法官和陪审团的时代早已过去,而且我们也不应再被迫扮演这样的角色。判断什么会给他人带来困扰,并不取决于我们。

这也是我认为我们需要更现代化的版主工具的原因:版主不应处于不得不编辑他人帖子的境地(这通常被视为审查)。如果帖子不可接受,我们应该能够直接将其从视图中移除,并要求发帖人自行修改,然后将修改后的内容放入审核队列。

我相信(并希望!)Discourse 能在这方面引领潮流。

2 个赞

说得非常到位。(这并非完全是假设:就我所在的特定社区而言,过去我们曾不得不让执法部门介入。)思考此类情况,并为成员提供自我管理所需的工具,至关重要……我认为,这对于任何运营优质社区网站的人来说都同样关键。

我同意,这样的选项会有极大帮助。总体而言,出于完全相同的原因,在我的论坛上我们绝不会编辑他人的帖子……我们的成员会对我们改动他们的文字极为敏感。目前,Discourse 处理问题内容的选项只有两个:(a) 删除消息,或 (b) 不删除消息。这略显粗暴,正所谓“手里只有锤子,看什么都像钉子”。:hammer: :grin: (我也明白,关于未来 Moderation 工具的讨论可能更适合另开一个主题……)

2 个赞

这是个不错的主意。我喜欢这种做法,因为它将责任重新交还给了发帖人。

2 个赞

这正是我们被推动去做的事——但我们之所以必须编辑或删除帖子(出于许多其他原因,删除并非理想选择),是因为如果某条帖子对另一位成员具有贬低性或不够友好,那么最好在对方看到之前将其移除。一旦对方看到,防止人际矛盾升级的窗口期便关闭,负面循环也随之开始。久而久之,其影响将远远超出仅涉及的两名成员。

……同时也大大减轻了版主团队的压力 :smiley:

2 个赞

可以尝试将帖子标记为“不适当”,但请使用“采取行动”按钮,而不是“标记帖子”。这样帖子会被隐藏,同时用户将获得机会编辑帖子以使其更符合要求,之后帖子将自动取消隐藏。

这里唯一缺失的是为此次编辑生成一个审核项目。

5 个赞

是的,我认为举报系统非常适合这个用途。除了上述内容外,最好还能包含“建议的修改”或某种可以发送给用户的消息(如果举报是由版主发送的,或者他们在审核队列中处理该举报时,这可能是强制性的)。

不,这不会发生。如果“硬核屏蔽”(

  • 实际上,这历来就不是论坛软件的功能)是一项不可更改的硬性要求,那么您应该切换到其他免费的开源软件。抱歉!

尽管如此,我认为基于 API 的相互屏蔽目前是一个不错的变通方案。

  • 屏蔽,意为“此外,此人将无法再看到我的帖子”,而不仅仅是“我不再希望看到此人的帖子”。
4 个赞

我“相互屏蔽”技巧的一个有趣副作用是,我现在会收到大量这类邮件,多达几十封。有没有办法抑制它们?我其实很不想看到它们消失(我认为它们对发现潜在的社区问题非常有用),但既然我不得不借用“屏蔽”功能来实现我的屏蔽机制,这些通知就成了一个意外的副作用。

你有没有检查过网站设置,看看是否有可以修改的阈值数字?我会先做这一步。

我已经阅读了部分内容,但有些地方对我来说有点难懂:

网站管理员能否设置,当用户 A 忽略用户 B 时,用户 B 也会被忽略,并且无法再查看用户 A 的帖子?

提前感谢——我正在搜集相关信息,以便转发给管理员。

拉里!

不,你无法在 Discourse 上完全屏蔽某人……普通用户能采取的最极端措施是“忽略”(被忽略的人可以看到你的内容,但你无法看到他们的内容)。

@awesomerobot 管理员能否禁止某人访问整个站点或其部分内容?

哦,当然,没有它我们无法阻止垃圾邮件发送者——如果用户开始创建更多账户,管理员可以封禁该用户及其 IP 地址。

我不得不在此插话,因为我亲眼目睹了这对我们那个极其多元的 Discourse 论坛产生的影响。

强制双向屏蔽是一个极其糟糕的主意,它实际上是将论坛的意志强加于你试图保护的那个弱势群体身上。你本质上是在说:“我理解你觉得这个用户让你感到不安全和不舒服,但我们不能只是让你隐藏他们的帖子——我们要让你屏蔽他们的行为变得‘可被发现’,这样一来,那个用户可能就有了‘另一个’理由对你发火并针对你。”

现实世界也是如此,申请保护令这一行为本身就可能引发暴力,因为受保护令保护的人更有可能在获得保护令后违反该命令

仅凭这一点,如果 Discourse 要提供此功能,它必须由请求者自行选择,而不能由版主或站点强加。

我会说,如果用户请求屏蔽某人,而站点告知该用户“你已被用户 X 屏蔽且未经其同意”,随后被屏蔽者升级冲突,那么从站点的角度来看,这也是一个真实的法律责任案例。但更重要的是,这无疑会对人们使用屏蔽功能产生寒蝉效应(我对此有亲身经历),同时也将权力转移给了施暴者——“你不能屏蔽我,因为我一旦知道就会报复!”

我必须毫无保留地在此表示赞同。这要么永远不应成为 Discourse 的功能,要么就必须仅由请求者主动选择开启,并明确告知由此可能带来的升级风险。

许多人当帖子被删除、感到“被审查”或“被取消”,或被迫接受他们不喜欢的权力动态时,会感到极度愤怒。但切勿误解,无论你怎么称呼它,管理就是审查,它 inherently 要求保护成员免受由此产生的报复——这也是为什么管理请求需要保持匿名的原因。

4 个赞

听起来问题出在你们的实施方式上……

当我们与成员沟通时,通常会以管理员的立场出发,例如:“很明显,您与 UserX 的关系已无法修复,因此我们认为,为了所有相关方的最佳利益,今后双方应彼此不再往来……"

我们从未因欺凌问题而发出屏蔽令,除非敌意已经显露——正因如此,上述做法对我们来说要容易得多。

不,这并非方法问题:“这位用户让我感到不安全或不舒服,我希望不再看到他们的消息”是一个完全合理的要求,与版主是否同意毫无关系。

赋予用户对其所消费内容的控制权,无论我们作为论坛运营者有何偏好,都是一个崇高的目标。

因为否则,用户将离开社区,他们的贡献也会随之流失。他们不应被迫“忍受”网站对双重屏蔽或通知被屏蔽用户等事宜的微观管理;或者,如果出于其他原因必须提供这些选项,则必须设为“用户主动选择加入”。

否则,就是在剥夺一位已对另一位用户表达担忧的用户的自主权。这是他们的眼睛,他们有权控制自己看到的内容,以及谁知晓他们的决定。

3 个赞