个人消息速率限制也限制了“其他内容”标记

重现问题

  1. 获取一个测试实例,以免破坏现有社区。
  2. 将“每天最大私人消息数”设置为 1。(默认值为 20。我不确定 0 对此设置意味着什么,所以我选择了次优选项。)
  3. 模拟一个非员工用户。(作为管理员,我没有看到问题。我猜测是因为员工不受此速率限制,但我没有查看代码以确定。)
  4. 从您模拟的帐户向其他人发送测试私人消息。(我将其发送到我自己的帐户。)
  5. 使用“其他原因”标记随机帖子。(据我所知,其他标记原因不会出现此问题。)

您应该会看到一个弹出窗口,显示:

发生错误:您已达到每天允许的最大消息数。您可以在 23 小时后创建更多新消息。

重要性

有几个相关设置:

  1. 每天的 PM 线程数。(默认 20)
  2. 每天的标记数。(默认 20)
  3. 每天的标记数乘以信任级别。(TL2 => 1.5,TL3 => 2,TL4 => 3)

因此,TL3 用户可以在滚动 24 小时内发起最多 20 个 PM 线程,并标记最多 40 个帖子。但是,使用“其他原因”的标记同时计入 PM 线程限制和标记限制。由于 PM 限制没有 TL 倍数,因此无法仅为受信任的用户提高速率限制。

也许更重要的是,此消息似乎与用户采取的操作无关。不清楚某个特定的标记原因会启动 PM 线程。要了解现实生活中的这种混淆,请参阅以下帖子:

  1. 每天最大消息数?
  2. 又达到了最大消息数……

经过今天的调查,我现在可以建议如果您一天用完了 PM 线程,请不要使用“其他原因”。但这并不理想,因为它会阻止一些用户为他们的标记添加必要的上下文。我可能会增加 PM 线程速率限制,并希望没有人发现他们可以开始垃圾邮件发送给其他用户。

可能的解决方案

  1. 不要将系统生成的 PM 线程计入用户。 因此,如果我标记一个帖子,并且系统将其有效地转换为与版主之间的 PM 线程,那不应该计入我的限制。对于标记,应仅适用标记速率限制。
  2. 修复消息,以便用户可以自行诊断问题。 我没有简洁的副本可以建议,但应该清楚问题是使用“其他原因”进行标记,而不是其他类型的标记。我不会包含任何表明这与 PM 线程相关的指示,除非经过仔细解释。这对于普通人来说太深入系统内部了。
  3. 为 PM 线程速率限制添加基于 TL 的乘数。 我真的认为 20 在大多数情况下都足够了。但如果标记会消耗限制,我希望至少为受信任的用户提供与普通用户相同的 PM 线程启动次数。
7 个赞

@sam,你 :heart: 这个,已经一个月了(我终于把网站升级到了 3.1.0.beta3)。我只是想看看期待已久的升级是否会包含对此的修复,我记得好像看到过一个关于它的提交,但在这里没看到任何东西。

我喜欢这个修复的想法,但还没有安排任何内容。解耦听起来是正确的解决方案。

2 个赞

您好,

我有一个针对此 bug 的修复方案。但在提交 PR 之前,我想先讨论一下我的解决方案。
很简单,新的私信被设置为属于 system 用户,而实际用户则成为该消息的接收者,而不是发起者。

有一点值得一提:用户将在收件箱中收到来自 system 的他自己的消息。

有什么想法吗?

1 个赞

这对 Discourse 来说将是一个绝佳的改进。即使默认不允许 TL0 发送 PM,突然允许 TL1 发送大量不同的新 PM 线程也可能导致低级别的 PM 垃圾邮件攻击。或者,PM 速率限制可以设置为非常低,但这同样适用于受信任用户 >= TL2 的情况将是不可行的。