こんにちは、Discourse API を通じて投稿を取得しています。Python を使用しています。このリクエストは以下のコード(本質的に GET リクエストを行います)を呼び出し、この投稿 に似た .json を返します。
def topic_by_id(self, topic_id, **kwargs):
return self._get("/t/{0}.json".format(topic_id), **kwargs)
返される投稿には 'read' フラグがあります。私が送信した投稿は read=True ですが、私が受信した投稿は、Discourse にアクティブにログインしてそれらを読む限り、すべて read=False とマークされています。
post_id を指定して、特定の投稿を API 経由で「既読」にする方法はありますか?pydiscourse を調べてみると、読了時間を追加するメソッドがあり、それによって投稿が「既読」となるはずだとされていますが、どれだけ読了時間を「追加」しても、.json エンドポイントは false を返します。特定の投稿 ID をマークできれば、「読了の空白」があっても構いません。
def topic_timings(self, topic_id, time, timings={}, **kwargs):
"""
投稿の読了に費やした時間を設定する
これによる副作用として、投稿が既読としてマークされる
引数:
topic_id: { post_number: ms }
time: トピック全体の時間(単位は??)
timings:
"""
kwargs["topic_id"] = topic_id
kwargs["topic_time"] = time
for post_num, timing in timings.items():
kwargs["timings[{0}]".format(post_num)] = timing
return self._post("/topics/timings", **kwargs)
同様の機能は、notifications/mark-read エンドポイントを使用して通知に対してすでに実現されています。
def mark_read(self, notification_id):
return self._put('/notifications/mark-read.json', id=notification_id)
また、トピック全体(含まれるすべての投稿)を既読としてマークできる場合も、有効な回避策となります。
ご助力をよろしくお願いいたします!
編集:これはプライベートメッセージに対しても機能する必要があります。