Ana içeriğe geç

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

{
  "channel_id": "1501314428688998182",
  "message_id": "1501320000000000000",
  "mention_count": 0
}

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
curl https://tebhos.com/api/v1/users/@me/read-states \
  -H "Authorization: Bearer $TEBHOS_TOKEN"

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.