Okuma durumları¶
Okuma durumu, geçerli hesabın bir kanalda ne kadar okuduğunu kaydeder. Okunan en yüksek mesajı, bahsetme sayısını ve son onaylanan sabitleme zaman damgasını tutar. Tek mesaj onayı, okuma durumunu silme ve sabitleme onayı Mesajlar kaynağında tanımlanır.
Bu sayfadaki tüm yollar yalnızca kullanıcılar içindir. Bir kullanıcı oturum token'ı (Authorization: Bearer <token>) gerektirirler; geçerli bir Bot <token> kimlik bilgisi 403 ACCESS_DENIED ile (geçersiz olanı 401 UNAUTHORIZED ile) reddedilir.
Okuma durumu nesnesi¶
Bir hesap, kanal başına en fazla bir okuma durumu tutar; anahtar hesap ve kanaldır.
Yapı¶
| Alan | Tür | Açıklama |
|---|---|---|
| id | snowflake | Okuma durumunun ait olduğu kanalın kimliği |
| mention_count | integer | Kanal için saklanan okunmamış bahsetme sayısı |
| last_message_id | ?snowflake | Hesabın okuduğu en yüksek mesaj kimliği; kayıt bir okuma işareti tutmuyorsa null |
| last_pin_timestamp | ?ISO8601 timestamp | Son onaylanan sabitlemenin zamanı; sabitlemeler hiç onaylanmadıysa null |
| version | string | Okuma durumu sürümü, işaretsiz 64 bit ondalık dize olarak. Her zaman "0" |
mention_count, son onayın sakladığı değerdir. Sunucu yeni bahsetmeler geldikçe bu değeri artırır ve hiçbir zaman mesaj geçmişinden yeniden hesaplamaz.
Bir onay, bir kayıt oluşturur. Sabitlemeleri onayla da kayıt oluşturur; hesabın kaydı olmayan bir kanala bahsetme geldiğinde sunucu da kayıt oluşturur. Sabitleme onayı yalnızca last_pin_timestamp alanını yazar. Sunucunun bir bahsetme için oluşturduğu kayıt, kanalın kendi başlangıç okuma işaretinden (kanal kimliğinin kendisi) başlar; böylece kanalda zaten bulunan tüm mesajlar okunmamış kalır.
Kanal okuma durumunu temizle, kaydın tamamını siler; okuma işareti, bahsetme sayısı ve sabitleme zaman damgası birlikte kaldırılır.
Toplu durum Gateway üzerinden iletilir
Kayıt dizisinin tamamı Gateway Ready yükünde read_states olarak gelir. TEBHOS bunu HTTP üzerinden Okuma durumlarını listele ile de sunar.
Sonradan bir gönderim (Dispatch) üreten tek şey onaydır. Mesaj onayı Message ACK, sabitleme onayı Channel Pins ACK gönderir; ikisi de çağıranın kendi oturumlarına gider. Sunucu tarafında bahsetme sayısının artırılması ve Kanal okuma durumunu temizle saklanan kaydı değiştirir ama hiçbir şey göndermez; bu yüzden Dispatch akışı eksiksiz bir değişiklik akışı değildir. Kesin toplu duruma ihtiyaç duyan bir istemci, yeni bir Ready'den, Okuma durumlarını listele ucundan ya da Okuma durumlarını onayla ucunun döndürdüğü kayıtlardan uzlaştırma yapar.
Örnek¶
{
"id": "1501314428688998182",
"mention_count": 3,
"last_message_id": "1501320000000000000",
"last_pin_timestamp": null,
"version": "0"
}
Okuma durumu onay nesnesi¶
Okuma durumlarını onayla gövdesindeki tek bir kayıt. Kaydı değişecek kanalı, hesabın okuduğu mesajı ve kanal için saklanacak bahsetme sayısını belirtir.
Yapı¶
| Alan | Tür | Açıklama |
|---|---|---|
| channel_id | snowflake | Okuma işareti değişecek kanalın kimliği |
| message_id | snowflake | Onaylanacak okuma işareti mesajının kimliği |
| mention_count? | integer | Kanal için saklanacak bahsetme sayısı (varsayılan 0) |
| manual? | boolean | Saklanan okuma işaretinin tam olarak message_id olup olmayacağı (varsayılan false) |
TEBHOS ne kanalı ne de mesajı çözümler. Değerler, kanalın var olup olmadığı veya hesabın onu görüp göremediği denetlenmeden okuma durumu anahtarı olarak saklanır. Gönderilen mention_count olduğu gibi saklanır; bu nedenle message_id sonrasında okunmamış bahsetme bırakan bir istemci, bu bahsetmelerin sayısını göndermelidir.
manual false iken, saklanan okuma işaretinin kesinlikle altında kalan bir kayıt atılır ve saklanan kayıt değişmeden döndürülür. Saklanan okuma işaretine eşit bir kayıt yine de yazma üretir; bu yüzden saklanan bahsetme sayısını sıfırlar.
Manuel onay okuma işaretini geri alabilir
manual: true ile gönderilen daha düşük bir message_id, sonraki mesajları yeniden okunmamış olarak işaretler. Saklanan bahsetme sayısı da aynı anda değiştirilir; bu yüzden mention_count göndermeyen geri alıcı bir onay bu sayıyı temizler.
Örnek¶
Toplu okuma durumu onay nesnesi¶
Kanalları okundu olarak işaretle gövdesindeki tek bir kayıt.
Yapı¶
| Alan | Tür | Açıklama |
|---|---|---|
| channel_id | snowflake | Okuma işareti değişecek kanalın kimliği |
| message_id | snowflake | Onaylanacak okuma işareti mesajının kimliği |
Hiçbir tanımlayıcı çözümlenmez; bu yüzden bir kayıt var olmayan bir kanalı veya mesajı belirtebilir.
Okuma durumlarını listele¶
GET /users/@me/read-states
Geçerli hesabın tuttuğu her okuma durumunu döndürür. Yalnızca kullanıcılar içindir.
Yanıt gövdesi¶
| Alan | Tür | Açıklama |
|---|---|---|
| read_states | array[okuma durumu nesnesi] | Hesap için saklanan tüm kayıtlar |
Okuma durumlarını onayla¶
POST /read-states/ack
Bir okuma durumu onay nesneleri listesini geçerli hesabın toplu durumuna uygular ve ortaya çıkan okuma durumu kayıtlarını döndürür. Yalnızca kullanıcılar içindir. Gönderilen her kayıt için çağıranın kendi oturumlarına bir Message ACK Gateway olayı gönderir.
Yol hiçbir kanalı çözümlemez ve hiçbir izni değerlendirmez. Yazma yalnızca çağıranın kendi okuma durumlarını değiştirir. Kayıtlar gönderildikleri sırayla birbiri ardına uygulanır.
JSON gövdesi¶
| Alan | Tür | Açıklama |
|---|---|---|
| read_states | array[okuma durumu onayı nesnesi] | Uygulanacak onaylar |
Geçerli bir snowflake olmayan channel_id veya message_id, isteği 400 BAD_REQUEST ile başarısız kılar. Geçersiz olandan önce işlenen kayıtlar yazılmış olarak kalır.
Yanıt gövdesi¶
| Alan | Tür | Açıklama |
|---|---|---|
| read_states | array[okuma durumu nesnesi] | Yazmadan sonraki kesin kayıtlar; gönderilen her kayıt için bir tane, gönderilme sırasıyla. Okuma işareti ilerlemeyen bir kayıt zaten saklanan değerleri bildirir |
| read_state_proto | string | Aynı kayıtların base64 protobuf ReadStateBundle olarak kodlanmış hâli (kayıt yoksa boş dize) |
Yanıt¶
| Durum | Gövde | Koşul |
|---|---|---|
| 200 | yanıt gövdesi | Onaylar işlendi ve ortaya çıkan kayıtlar döndürüldü |
| 400 | hata yanıtı | Bir tanımlayıcı geçerli bir snowflake değil |
| 401 | hata yanıtı | Kimlik bilgisi eksik veya kullanıcıya ait değil |
Yan etkiler¶
manual true iken bir kayıt, kanal okuma işaretini message_id değerine ayarlar. manual false iken TEBHOS, saklanan okuma işaretinin kesinlikle altında kalan bir kaydı atar ve saklanan kaydı değiştirmez. Atılmayan her kayıt okuma işaretini message_id değerine ayarlar ve gönderilen bahsetme sayısını saklar.
Değişmeyenler dahil gönderilen her kayıt için çağıranın oturumlarına bir Message ACK gider. Bu olay channel_id, message_id, mention_count, last_pin_timestamp, version ve gönderilen manual değerini taşır. Gönderim en iyi çaba esasına dayanır: başarısız olsa bile istek başarılı olur.
Hız sınırı¶
read_state:ack_bulk kovasında, kimliği doğrulanmış her kullanıcı için 10 saniyede 20 istek; Kanalları okundu olarak işaretle ile paylaşılır.
Kanalları okundu olarak işaretle¶
POST /read-states/ack-bulk
Bir toplu okuma durumu onay nesneleri listesini uygular ve boş gövdeyle 204 döndürür. Yalnızca kullanıcılar içindir. Gönderilen her kayıt için çağıranın kendi oturumlarına bir Message ACK Gateway olayı gönderir.
Her kayıt, kanalının okuma işaretini yalnızca ileri doğru (monoton) ilerletir ve kanalın saklanan bahsetme sayısını 0 yapar. message_id değeri saklanan okuma işaretinin kesinlikle altında kalan bir kayıt atlanır ve saklanan kayda dokunmaz. Okuma durumlarını onayla gibi bu işlem de hiçbir kanalı çözümlemez ve hiçbir izni değerlendirmez.
JSON gövdesi¶
| Alan | Tür | Açıklama |
|---|---|---|
| read_states | array[toplu okuma durumu onayı nesnesi] | Onaylanacak kanal ve mesaj çiftleri |
Aynı kanalı belirten iki kaydın ikisi de istekten önce saklanan değere göre değerlendirilir.
Yanıt¶
| Durum | Gövde | Koşul |
|---|---|---|
| 204 | boş | Onaylar işlendi |
| 400 | hata yanıtı | Bir tanımlayıcı geçerli bir snowflake değil (hiçbir şey yazılmaz) |
| 401 | hata yanıtı | Kimlik bilgisi eksik veya kullanıcıya ait değil |
Yan etkiler¶
Geçerli okuma işaretine eşit bir kayıt, bahsetme sayısını 0 değerine sıfırlar. Gönderilen her kayıt için çağıranın kendi oturumlarına manual: false ile bir Message ACK gider; atlanan bir kayıt, saklanan okuma işaretini ve bahsetme sayısını bildirir.
Yeniden denemeler güvenlidir
Yazmalar gruplar hâlinde uygulanır. Yarıda başarısız olan bir istek, zaten yazılmış grupları yerinde bırakır. Yeniden deneme güvenlidir, çünkü tekrarlanan monoton bir onay idempotenttir.
Hız sınırı¶
read_state:ack_bulk kovasında, kimliği doğrulanmış her kullanıcı için 10 saniyede 20 istek; Okuma durumlarını onayla ile paylaşılır.