# “正文过于相似”比较帖子和消息

**URL:** https://meta.discourse.org/t/body-too-similar-compares-posts-and-message/231089
**Category:** Bug
**Created:** [2022年六月25日 12:57 UTC](https://meta.discourse.org/t/body-too-similar-compares-posts-and-message/231089 "2022-06-25T12:57:31Z")
**Posts on this page:** 9
**Page:** 1

<div class="post-metadata">

### Author: ![mlgtechuser](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/mlgtechuser/32/262708_2.png) [@mlgtechuser](https://meta.discourse.org/u/mlgtechuser)
#### Post date: [2022年六月25日 12:57 UTC](https://meta.discourse.org/t/body-too-similar-compares-posts-and-message/231089/1 "2022-06-25T12:57:31Z")

</div>

_ **“正文与您最近发布的内容过于相似”** _

我使用“发送消息给自己”功能作为草稿缓冲区，用于撰写我希望在私下发布后再公开的详细帖子。（主要原因是预览窗格的渲染效果有时与已发布帖子/消息不完全相同，因此我必须发布才能看到最终形式。私下发布也使我能够避免在帖子或主题首次发布后发送电子邮件之前的“编辑窗口”时间限制。）

当我尝试将消息正文粘贴到论坛帖子中时，我收到了“ ~~不要用相同的内容骚扰大家~~ ” “ **正文与您最近发布的内容过于相似** ”的消息。鉴于用户可以删除消息，这似乎是一个不必要的检查。此外，我可能会发送一条消息给某人，然后想将其转换为回复帖子（例如，也许我请他们校对）。

我_ **不是** _在谈论将消息转换为主题的第一个帖子。我是在谈论向_ **现有** _主题添加消息。我对 Discourse 数据库结构一无所知，也不知道帖子和消息在结构上可能有多么不同。既然可以剥离消息的“消息”属性并将其伪装成主题，那么似乎也可以进行类似的操作将其转换为回复。

至少，我希望能够在一个帖子中重用消息正文。

可能有一个关于解决方法[在此处](https://meta.discourse.org/t/need-an-ability-to-move-a-private-message-to-a-public-category/40573/2)的提及，但我无法清晰地理解 OP 的流程。

---

<div class="post-metadata">

### Author: ![JammyDodger](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jammydodger/32/254611_2.png) [@JammyDodger](https://meta.discourse.org/u/JammyDodger)
#### Post date: [2022年六月25日 13:23 UTC](https://meta.discourse.org/t/body-too-similar-compares-posts-and-message/231089/2 "2022-06-25T13:23:01Z")

</div>

恐怕我不认为这可以被视为一个错误，因为它似乎工作正常。🙂

它由 `unique posts mins` 管理员设置（默认为 5 分钟）控制，因此如果等待时间造成重大问题，您可以要求管理员减少它？

---

<div class="post-metadata">

### Author: ![mlgtechuser](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/mlgtechuser/32/262708_2.png) [@mlgtechuser](https://meta.discourse.org/u/mlgtechuser)
#### Post date: [2022年六月26日 00:00 UTC](https://meta.discourse.org/t/body-too-similar-compares-posts-and-message/231089/3 "2022-06-26T00:00:54Z")

</div>

> [@JammyDodger](#):
>
> 它由 `unique posts mins` 管理员设置（默认为 5 分钟）控制

一如既往地提供了出色的后台见解！

当我回到 `discuss.python.org` 时，计时器已经过期，我能够发布我最后一条“消息”草稿的正文。如果我没有在第一次重复时被阻止，我就不会在这里发帖。（这不知何故让我想起了“蛇吃自己的尾巴”的表情包。🙃 🙃）

> 我恐怕不认为这可以被视为一个错误，…

是的，这似乎介于两者之间。此查询是关于为什么在不同平台对象类型中的第一个重复项会首先被阻止。这似乎是权衡一个解决方案以解决另一个问题（尽管是一个较小的问题，因此这种行为的“功能”方面作为防止骚扰发帖和发消息的保护措施是一个净收益）。尽管如此，将帖子正文与消息正文进行比较似乎是不一致的，因此不适用，因为它们的范围如此不同。

> …因为它似乎运行正常。

我同意，只要我们将“运行正常”定义为“按预期运行”，并且这是一个设计决定而不是疏忽或意外行为，这两者都属于错误。😃 我没有在功能（或任何其他地方讨论过）中看到它，并认为这是报告现有非最佳行为的合适场所。

正如任何你不知道如何修复的错误默认会变成“功能”一样，任何碍事的“功能”都可以被视为错误。  
等待 `unique posts mins` 过期甚至是一个变通方法。👈 😜

我不需要等很久就可以发布消息文本，但这确实会打断流程。也许我是第一个尝试将内容从消息移动到主题回复的用户。🤷

---

<div class="post-metadata">

### Author: ![JammyDodger](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jammydodger/32/254611_2.png) [@JammyDodger](https://meta.discourse.org/u/JammyDodger)
#### Post date: [2022年六月26日 08:28 UTC](https://meta.discourse.org/t/body-too-similar-compares-posts-and-message/231089/4 "2022-06-26T08:28:19Z")

</div>

我非常赞同“将私信作为草稿消息”的做法，也遇到过不少类似的警告提示。也许我对现状过于宽容了。 🙂 我不清楚这种工作流是否流行，我们可能只是少数派，但我们可以将其作为 #Contribute > Feature 请求提出吗？

或者，从更精简的角度来看，#Contribute > UX 方法可以是在警告消息中包含更多信息（例如，“正文与您最近发布的内容过于相似。请在 `%{unique posts mins}` 分钟后重试”）。这至少可以强调该限制是基于时间的，并且只是暂时的（尽管这可能会削弱其初衷？）。

---

<div class="post-metadata">

### Author: ![mlgtechuser](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/mlgtechuser/32/262708_2.png) [@mlgtechuser](https://meta.discourse.org/u/mlgtechuser)
#### Post date: [2022年六月27日 01:13 UTC](https://meta.discourse.org/t/body-too-similar-compares-posts-and-message/231089/7 "2022-06-27T01:13:38Z")

</div>

> [@JammyDodger](#):
>
> “请在 `%{unique posts mins}` 后重试”

这确实是一个有效且简单（因此非常棒）的改进。我将把它作为一个单独的功能请求提交。

---

<div class="post-metadata">

### Author: ![sam](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/sam/32/102149_2.png) [@sam](https://meta.discourse.org/u/sam)
#### Post date: [2022年六月27日 08:00 UTC](https://meta.discourse.org/t/body-too-similar-compares-posts-and-message/231089/8 "2022-06-27T08:00:04Z")

</div>

我认为 @codinghorror 一直很喜欢使用私信来处理长草稿，但这并非我们的本意：

在 Discourse 中有一个非常简单的修复/更改：

> <https://github.com/discourse/discourse/blob/7d41e980c90c7511f78a7645c51a52ea67a74322/app/models/post.rb#L253-L255>

将其替换为：

```plaintext
    def unique_post_key
      "unique-post-#{user_id}:topic?.private_message?:#{raw_hash}"
    end

```

再加上一个快速测试，就能解决这个工作流程问题。

我认为这个更改不会影响安全保障。

除非有异议，我将在明天进行此更改。

---

<div class="post-metadata">

### Author: ![mlgtechuser](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/mlgtechuser/32/262708_2.png) [@mlgtechuser](https://meta.discourse.org/u/mlgtechuser)
#### Post date: [2022年六月27日 15:56 UTC](https://meta.discourse.org/t/body-too-similar-compares-posts-and-message/231089/10 "2022-06-27T15:56:36Z")

</div>

谢谢你，Sam！

> [@sam](#):
>
> 在 Discourse 中有一个非常简单的修复/更改：
> 
> [discourse/app/models/post.rb at 7d41e980c90c7511f78a7645c51a52ea67a74322 · discourse/discourse · GitHub](https://github.com/discourse/discourse/blob/7d41e980c90c7511f78a7645c51a52ea67a74322/app/models/post.rb#L253-L255)

这个修复很快会发布吗？我倾向于在 `discuss.python.org` 上撰写比这里更长的回复——并且由于讨论内容涉及许多可能因发布未经测试的代码而导致误述和拼写错误的细节，因此我会进行更广泛的校对和修订。

---

<div class="post-metadata">

### Author: ![sam](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/sam/32/102149_2.png) [@sam](https://meta.discourse.org/u/sam)
#### Post date: [2022年六月29日 02:45 UTC](https://meta.discourse.org/t/body-too-similar-compares-posts-and-message/231089/11 "2022-06-29T02:45:46Z")

</div>

我们有一个正在进行的修复程序：

> <https://github.com/discourse/discourse/pull/17272>
>
> This allows for people to use PMs for drafting and then post them on topics.

它应该很快会被合并，并且网站将在未来几周内部署。

在此期间，我建议一个简单的解决方法。在发布草稿时，只需快速进行“空格填充”。

`hello world` 和

```plaintext
hello world

```

在 Markdown 中渲染效果相同

hello world。

---

<div class="post-metadata">

### Author: ![sam](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/sam/32/102149_2.png) [@sam](https://meta.discourse.org/u/sam)
#### Post date: [2022年七月3日 22:00 UTC](https://meta.discourse.org/t/body-too-similar-compares-posts-and-message/231089/13 "2022-07-03T22:00:41Z")

</div>

该主题在 4 天后自动关闭。不再允许回复。
