Webhook 中用户 post_count 为零,但该用户有帖子

我们有一个关于“user_logged_in”事件的 webhook。Payload 包含刚登录用户的 post_count 属性。尽管用户确实写了 2 篇文章,但 payload 显示 post_count: 0。在我看来,这似乎是一个 bug。

Webhook 的接收者需要此用户统计数据来决定如何进行。

我找到的唯一类似主题是这个,可能有关联,但没有谈论相同的 API:Category post_count not incrementing

1 个赞

我必须纠正自己:post_count 并非 总是 为零。在我用我自己的用户进行检查时,post_count 是合理的(尽管我不知道它是否准确)。

但是,我们网站上有一个用户,我们称之为用户 #1234,对于该用户,以下条件成立:

  • SELECT * FROM posts WHERE user_id=1234 返回表中的两个条目。这些帖子也列在用户的个人资料活动页面上。
  • 当该用户登录或注销时,webhook 负载包含 "post_count": 0
1 个赞

您好 @dpb

我测试了一下,帖子计数不是实时更新的。

我猜有一个 Sidekiq 作业会定期处理这个问题,但我不知道是哪个。
似乎没有专门相关的 Sidekiq 作业 :thinking:
但我读到这个统计数据至少每天更新一次。

不过,向 https://your-discourse.org/u/username.json 发送 GET 请求将返回正确的数字。

如果您想要一个可靠的数字,请在收到 webhook 负载后发送此类请求。

1 个赞

感谢 @Canapin 建议的 API GET 请求。

嗯,在我们的例子中,这些帖子已经存在一个多月了。

也许是更新该数字的组件在某次更新期间停止工作了?

已测试,也不起作用。包含相同信息:post_count: 0

也许“topics”和“posts”之间存在混淆。我原以为创建一个新主题只是一种特殊类型的帖子。数据库结构支持这一点。
但在检查用户个人资料统计信息时,它们显示的内容类似于“创建了 2 个主题,创建了 0 篇帖子”。
那么,“post_count”可能指的是回复主题的数量,而不是所有帖子的数量?
另一方面,有一个日期“last_posted_at”,其中包含创建最后一个主题的日期。所以至少在这里命名上存在一些不一致。我期望“post_count”这个数字也包括新主题中的第一篇帖子。

无论如何,无论这是否是预期行为,我在用户 JSON 中都找不到 topic_count 或类似的字段。如何才能找出帖子的总数,包括新主题?

我对 json 的了解还比较初级,但我可以在 https://meta.discourse.org/u/dpb/summary.json 中看到 topic_count

1 个赞