# 在标签上点击“观看第一篇帖子”在现有主题上不起作用吗？

**URL:** https://meta.discourse.org/t/watching-first-post-on-a-tag-doesnt-work-on-existing-topic/328974
**Category:** Support
**Created:** [2024年十月2日 07:56 UTC](https://meta.discourse.org/t/watching-first-post-on-a-tag-doesnt-work-on-existing-topic/328974 "2024-10-02T07:56:45Z")
**Posts on this page:** 13
**Page:** 1

<div class="post-metadata">

### Author: ![ToddZ](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/toddz/32/328350_2.png) [@ToddZ](https://meta.discourse.org/u/ToddZ)
#### Post date: [2024年十月2日 07:56 UTC](https://meta.discourse.org/t/watching-first-post-on-a-tag-doesnt-work-on-existing-topic/328974/1 "2024-10-02T07:56:46Z")

</div>

我敢_肯定_这在我早期的测试中是有效的，因为这是我工作流程的关键：我可以给现有帖子打标签，而对该标签设置了 `watching_first_post` 的用户会收到通知。

我现在发现它不再以这种方式工作了（…是吗？）。

或者，当该主题下已经有回复帖子时，它会被忽略？

我想象我可以将主题移动到一个每个人都“关注第一帖”的_类别_中，但是……

1. 通知只在主题_创建_时触发吗？
2. 我不确定回复帖子的存在是否会导致“第一帖”触发被忽略。
3. 我真的很想将相关主题保留在一个类别中，并通过标签“升级”一些。

我愿意每次都运行一个脚本来触发通知，但是 [Askbot](https://ask.discourse.com/) 🤖 无法帮助我创建一个有效的脚本。

欢迎任何输入或变通方法……！

![image](https://global.discourse-cdn.com/meta/original/4X/3/0/0/3008e4c8fe7fd34b519b9c3c50bf30173fc4f683.png)

---

<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: [2024年十月2日 08:26 UTC](https://meta.discourse.org/t/watching-first-post-on-a-tag-doesnt-work-on-existing-topic/328974/2 "2024-10-02T08:26:20Z")

</div>

但是这会如何运作？如果有一个带有该标签的 10,000 个旧主题，您会立即收到通知吗？

仅关注首帖仅在主题的绝对首帖上通知。

---

<div class="post-metadata">

### Author: ![ToddZ](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/toddz/32/328350_2.png) [@ToddZ](https://meta.discourse.org/u/ToddZ)
#### Post date: [2024年十月2日 12:02 UTC](https://meta.discourse.org/t/watching-first-post-on-a-tag-doesnt-work-on-existing-topic/328974/3 "2024-10-02T12:02:22Z")

</div>

> [@](#):
>
> 仅在主题的绝对第一篇帖子中观看仅在主题的绝对第一篇帖子中发出通知。

这相当明确，所以我一定是记错了，并且创建了带有跟踪标签的测试主题。

> [@](#):
>
> 但这会如何运作？如果有很多旧主题带有该标签，您会立即收到通知吗？

哦，不——我并不是建议通过标签将用户设置为“仅在第一篇帖子中观看”应该有任何追溯性的作用。

但工作人员后来为已发布的帖子添加标签肯定很常见。我一直以为，当“仅在第一篇帖子中观看”标签应用于现有主题时，它会为已经 WFP 该标签的用户生成该主题的通知。

我仍在与 Askbot 合作，为这些场合制定一个临时脚本……

---

<div class="post-metadata">

### Author: ![ToddZ](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/toddz/32/328350_2.png) [@ToddZ](https://meta.discourse.org/u/ToddZ)
#### Post date: [2024年十月2日 15:40 UTC](https://meta.discourse.org/t/watching-first-post-on-a-tag-doesnt-work-on-existing-topic/328974/4 "2024-10-02T15:40:51Z")

</div>

经过大约 60 次迭代，Askbot 和我有一个 _几乎_ 可以工作的 Rails 脚本。

下面的脚本——针对主题 239 和标签 ‘tagtest’——会生成预期的“新主题”通知，其中包含正确的主题标题，并生成相关的电子邮件。

有些元素似乎不起作用（`message:` 和 `display_username:` 不出现在任何输出中），但它几乎可以工作了。

最关键的问题是电子邮件的标题中没有实际的主题标题。它显示为“ **%{topic\_title}** ”。`topic_title` 显然不是 Notification 方法的有效字段，所以我不知道需要最少的代码才能将其包含在电子邮件中。（Askbot 尝试添加越来越复杂的电子邮件方法，但错误也越来越多。）

如果有人能在这方面提供帮助，在我学会如何正确清理它之前，这将使我能够继续下去……！

```ruby

topic_id = 239

Tag.where(name: 'tagtest').each do |tag|
  TagUser.where(tag_id: tag.id, notification_level: TagUser.notification_levels[:watching_first_post]).each do |tag_user|
    user = User.find(tag_user.user_id)
    puts "Username: #{user.username}, ID: #{user.id}"

    # Fetch the topic title
    topic = Topic.find(topic_id)
    topic_title = topic.title

    # Create a notification for the topic
    Notification.create!(
      user_id: user.id,
      notification_type: Notification.types[:watching_first_post],
      topic_id: topic_id,
      post_number: 1, # Assuming you want to notify about the first post of the topic
      data: {
        message: 'You have a new notification for a topic you are watching.',
        display_username: 'system'
      }.to_json
    )

  end
end

```

---

<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: [2024年十月2日 22:06 UTC](https://meta.discourse.org/t/watching-first-post-on-a-tag-doesnt-work-on-existing-topic/328974/5 "2024-10-02T22:06:40Z")

</div>

在标记时也存在风险，例如批量标记 500 个主题，然后会有 500 条通知，你的通知就没了。

或者更糟的是，管理员在 10 秒内添加 100 个标签。

这是一个棘手的问题，我们需要非常小心地汇总通知来修改此功能。

---

<div class="post-metadata">

### Author: ![Moin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/moin/32/554653_2.png) [@Moin](https://meta.discourse.org/u/Moin)
#### Post date: [2024年十月2日 22:13 UTC](https://meta.discourse.org/t/watching-first-post-on-a-tag-doesnt-work-on-existing-topic/328974/6 "2024-10-02T22:13:01Z")

</div>

> [@sam](#):
>
> 在标记时也存在风险，例如批量标记 500 个主题，然后会有 500 条通知

将主题批量移动到另一个类别时，不也是同样的情况吗？将主题移动到另一个类别会触发“关注首帖”通知。

---

<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: [2024年十月2日 22:34 UTC](https://meta.discourse.org/t/watching-first-post-on-a-tag-doesnt-work-on-existing-topic/328974/7 "2024-10-02T22:34:40Z")

</div>

是的，我认为总体而言，重新分类比重新标记要少见得多，因此问题的规模在一定程度上得到了缓解。您能否快速截屏展示一下当您将 3 个主题批量重新分类为“watch-first”时会发生什么？

---

<div class="post-metadata">

### Author: ![ToddZ](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/toddz/32/328350_2.png) [@ToddZ](https://meta.discourse.org/u/ToddZ)
#### Post date: [2024年十月2日 22:39 UTC](https://meta.discourse.org/t/watching-first-post-on-a-tag-doesnt-work-on-existing-topic/328974/8 "2024-10-02T22:39:34Z")

</div>

我不会考虑批量标记 500 个主题，但想知道这是否会比发布到每个人都关注的“公告”类别造成更大的负担？  
_(编辑：哎呀，我写的时候 Moin 发布了。)_

我自己的用例可能是一周发布一次到“升级”以通过通知邮件发送。

这似乎与之前关于重新分类主题的讨论相似：  
_(编辑：你已经知道了，抱歉。)_

- [主题被重新分类时的通知](https://meta.discourse.org/t/notifications-when-a-topic-is-recategorized/63079/14)
- [未收到公告通知](https://meta.discourse.org/t/not-receiving-notifications-for-announcements/87275/7)
- [重新分配类别是否会向关注新类别的用户群发送新电子邮件？](https://meta.discourse.org/t/does-reassigning-a-category-send-a-new-email-out-to-the-group-watching-the-new-category/39249/9)

…这已通过 [FIX: 主题被重新分类时，关注首帖用户的通知丢失 · discourse/discourse@147ea37 · GitHub](https://github.com/discourse/discourse/commit/147ea37115d043caf6b547933b97eabf34e9f27e) 得到解决。

我只是想使用一个标签，而不是为相似的主题设置两个类别。（它们属于同一类，但有少数几个在发布后，被认为值得发送给那些不常上线、有时只通过电子邮件接收信息的用户的。）

---

<div class="post-metadata">

### Author: ![ToddZ](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/toddz/32/328350_2.png) [@ToddZ](https://meta.discourse.org/u/ToddZ)
#### Post date: [2024年十月3日 03:27 UTC](https://meta.discourse.org/t/watching-first-post-on-a-tag-doesnt-work-on-existing-topic/328974/10 "2024-10-03T03:27:18Z")

</div>

出于好奇/比较的目的，我正在测试“_在类别中_观看第一个帖子”的行为，它在重新分类时_不会_通知。

我的 `email time window mins` 是 10，我会在步骤之间留出 15 分钟。  
我现在已经重复了几次……

- 在未观看的沙盒类别中创建新主题。等待 15 分钟。
- 将主题移至用户正在观看的类别：立即触发通知，10 分钟后发送电子邮件。  
  
- 在未观看的沙盒类别中创建另一个新主题。等待 15 分钟。
- 将主题移至用户“观看第一个帖子”的类别：永远什么都不做。

（自托管标准安装，3.4.0.beta2-dev (0c019b2e45)，tests-passed。）

也许是我的流程有问题，但我无法想象是什么。2018 年已解决的功能是否可能已失效？

---

<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: [2024年十月3日 04:15 UTC](https://meta.discourse.org/t/watching-first-post-on-a-tag-doesnt-work-on-existing-topic/328974/11 "2024-10-03T04:15:58Z")

</div>

> [@ToddZ](#):
>
> 也许是我的处理方式有问题，但我无法想象是什么。2018年已解决的功能是否可能又出现了问题？

很有可能，这是应用程序中一个特别复杂的部分。

关于重新标记/重新分类的通知需要很多保护措施。

- 我们应该通知一个8年前的主题吗？
- 我们应该一次推送50条通知吗？在1小时内？

我们需要从弄清楚期望的行为是什么以及保护措施应该是什么开始。

---

<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: [2024年十月3日 06:00 UTC](https://meta.discourse.org/t/watching-first-post-on-a-tag-doesnt-work-on-existing-topic/328974/12 "2024-10-03T06:00:55Z")

</div>

FWIW 给现有主题添加标签应向关注该标签的“关注首帖”的用户发送通知。

我刚刚在我的测试站点上进行了测试（[3108e3a6b6](https://github.com/discourse/discourse/commits/3108e3a6b657ce57db92059e49bbc8c7e528ab6a)），它似乎仍然正常工作。

只是为了确认一下，您是否在任何时候更改了 `disable tags edit notifications` 管理员设置？（以及类别版本的 `disable category edit notifications`）。

---

<div class="post-metadata">

### Author: ![ToddZ](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/toddz/32/328350_2.png) [@ToddZ](https://meta.discourse.org/u/ToddZ)
#### Post date: [2024年十月3日 13:50 UTC](https://meta.discourse.org/t/watching-first-post-on-a-tag-doesnt-work-on-existing-topic/328974/13 "2024-10-03T13:50:39Z")

</div>

哦。

嗯。

天啊。

我要去钻进石头缝里了。

我忘了那些设置还存在。我想我禁用它们的时候，只想着像\*“管理员添加了标签或更改了您主题的类别”\*这样的通知——而不是像“关注”或“仅关注首帖”这样的操作。

我认为可能仍然存在一些不一致之处，因为“关注”类别似乎覆盖了`禁用类别编辑修改`，而“仅关注首帖”则没有。作为惩罚，我将更彻底地测试这一点，并跟进我之前就此问题联系过的另外几个人。

（另外，@sam 确实在某种程度上支持了我的结论 😅）

> [@](#):
>
> 仅关注首帖只会在主题的绝对首帖上通知。

但感谢 @JammyDodger 将我从花费数小时摆弄 rails 脚本中解救出来。我的下一步是卖掉我的沙发，然后付钱给 @pfaffman 寻求帮助。

---

<div class="post-metadata">

### Author: ![system](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/system/32/443519_2.png) [@system](https://meta.discourse.org/u/system)
#### Post date: [2024年十一月2日 13:50 UTC](https://meta.discourse.org/t/watching-first-post-on-a-tag-doesnt-work-on-existing-topic/328974/14 "2024-11-02T13:50:46Z")

</div>

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.
