Ana içeriğe geç

Keşif

Keşif, herhangi bir hesabın göz atıp katılabileceği herkese açık sunucu dizinidir. Bir sunucu yöneticisi sunucusunun listelenmesi için başvurur ve TEBHOS ekibi başvuruyu inceler. Onaylanan sunucular TEBHOS arama altyapısında (Elasticsearch) dizinlenir ve Keşif sunucularında ara sonuçlarında görünür.

Bu sayfadaki her yol bir kullanıcı oturumu gerektirir (Authorization: Bearer <token>, bkz. Kimlik doğrulama). Geçerli bir bot token'ı 403 ACCESS_DENIED ile reddedilir.

Başvuru yolları /guilds/{guild_id}/discovery altında bulunur. Aynı işleyiciler /servers/{guild_id}/discovery altına da bağlanmıştır; iki yol da aynı şekilde davranır. MANAGE_GUILD iznini gerektirirler (sunucu sahibi her zaman geçer). Sunucunun üyesi olmayan veya izne sahip olmayan bir çağıran 403 FORBIDDEN alır.

Listelenmek için 2. takviye seviyesi gerekir

Onaylanmış bir başvuru (veya DISCOVERABLE sunucu özelliği) bir sunucuyu yalnızca dizine uygun hâle getirir. Sunucu, arama sonuçlarında yalnızca takviye seviyesi 2 veya daha yüksek olduğu sürece gerçekten gösterilir. 2. seviyenin altına düşen bir sunucu aramadan otomatik olarak kaybolur ve seviyeyi yeniden kazandığında tekrar görünür.

Keşif sunucusu nesnesi

Keşif sunucularında ara tarafından döndürülen, herkese açık tek bir sunucu kaydı.

Yapı

Alan Tür Açıklama
id snowflake Sunucunun kimliği
name string Dizinleme anındaki sunucu adı
icon ?string Sunucunun simge hash'i
banner ?string Sunucunun afiş hash'i
description ?string Onaylanmış başvurudaki açıklama; yoksa sunucu açıklamasına düşer
category_type ?integer Kaydın keşif kategorisi
primary_language ?string Kaydın birincil dil kodu
custom_tags array[string] Kaydın özel etiketleri
member_count integer Sunucunun üye sayısı
online_count integer Çevrim içi üyelerin yaklaşık sayısı
features array[string] Sunucunun sahip olduğu sunucu özellikleri
verification_level integer Sunucunun doğrulama seviyesi
boost_level integer Dizinleme anındaki sunucu takviye seviyesi

member_count ve online_count, döndürülen sayfa için gateway'den yenilenir. Canlı sayılar kullanılamadığında member_count eski olabilir; online_count ise ilk 2000 üyenin durum (presence) bilgisinden yaklaşık olarak hesaplanır (veya 0 olur).

Kayıt güncellemeleri zaman alabilir

Ad, simge, afiş, özellik ve takviye değişiklikleri gerçekleştikleri anda arama dizinine gönderilir; ayrıca bir arka plan işi onaylanmış her kaydı düzenli aralıklarla yeniden dizinler.

Örnek

{
  "id": "1489002177550843904",
  "name": "Example guild",
  "icon": "a_9f1c2d3e4b5a60718293a4b5c6d7e8f9",
  "banner": null,
  "description": "A place to talk about the example project.",
  "category_type": 4,
  "primary_language": "en-US",
  "custom_tags": ["open source", "rust"],
  "member_count": 4120,
  "online_count": 318,
  "features": ["DISCOVERABLE"],
  "verification_level": 1,
  "boost_level": 2
}

Keşif arama sonucu nesnesi

Eşleşen kayıtlardan oluşan bir sayfa.

Yapı

Alan Tür Açıklama
guilds array[keşif sunucusu nesnesi] Bu sayfadaki eşleşen sunucular
total integer Tüm sayfalar genelinde sorguyla eşleşen toplam sunucu sayısı

İstemci, offset değeri total değerine ulaşana kadar offset ile sayfalama yapar.

Keşif başvurusu nesnesi

Bir sunucunun keşif kaydı ve inceleme durumu. Bir sunucunun en fazla bir başvurusu olur. Reddedilmiş veya kaldırılmış bir başvuru, sunucu yeniden başvurana veya başvuruyu geri çekene kadar sonucu ve gerekçesiyle birlikte okunabilir kalır.

Yapı

Alan Tür Açıklama
guild_id snowflake Sunucunun kimliği
status string Başvuru durumu
description string Kayıtta gösterilen açıklama
category_type ?integer Kaydın keşif kategorisi
primary_language ?string Kaydın birincil dil kodu
custom_tags array[string] Kaydın özel etiketleri
applied_at ISO8601 zaman damgası Başvurunun gönderildiği zaman
reviewed_at ?ISO8601 zaman damgası Başvurunun onaylandığı veya reddedildiği zaman
review_reason ?string Onay veya retle birlikte kaydedilen gerekçe
removed_at ?ISO8601 zaman damgası Ekibin onaylanmış bir kaydı kaldırdığı zaman
removal_reason ?string Kaldırmayla birlikte kaydedilen gerekçe

Örnek

{
  "guild_id": "1489002177550843904",
  "status": "pending",
  "description": "A place to talk about the example project.",
  "category_type": 4,
  "primary_language": "en-US",
  "custom_tags": ["open source", "rust"],
  "applied_at": "2026-08-04T11:22:19.000000+00:00",
  "reviewed_at": null,
  "review_reason": null,
  "removed_at": null,
  "removal_reason": null
}

Keşif durumu nesnesi

Bir sunucunun başvuru durumu ve başvuru yapmaya şu anki uygunluğu.

Yapı

Alan Tür Açıklama
application ?keşif başvurusu nesnesi Mevcut başvuru; sunucu hiç başvurmamışsa veya başvuruyu geri çekmişse null
eligible boolean Sunucunun en az min_member_count üyesi olup olmadığı
min_member_count integer Başvuru için gereken üye sayısı (şu anda 1)

Örnek

{
  "application": null,
  "eligible": true,
  "min_member_count": 1
}

Keşif kategorisi nesnesi

Alan Tür Açıklama
id integer Keşif kategorisi değeri
name string Kategorinin İngilizce görünen adı

Keşif kategorileri

Küme sabittir.

Değer Görünen ad
0 Gaming
1 Music
2 Entertainment
3 Education
4 Science & Technology
5 Content Creator
6 Anime & Manga
7 Movies & TV
8 Other

0 ile 8 aralığının dışındaki bir category_type 400 BAD_REQUEST ile reddedilir. Arama sorgularında aralık dışındaki bir category yok sayılır (kategori filtresi uygulanmaz).

Görünen adlar yerelleştirilmez; çevrilmiş etiketler isteyen bir istemci, id değerine göre kendi etiketlerini sağlar.

Keşif başvurusu durumları

Değer Açıklama
pending Gönderildi ve ekibin kararını bekliyor
approved Onaylandı; sunucu dizine uygundur
rejected Reddedildi; sunucu yeni bir başvuru gönderebilir
removed Onaylanmış bir kayıt ekip tarafından kaldırıldı; sunucu yeni bir başvuru gönderebilir

pending veya approved durumunda bir başvurusu olan sunucu yeni bir başvuru gönderemez. Ret veya kaldırmadan sonra yapılan yeni bir başvuru önceki kaydın yerine geçer.

Birincil dil

Her kayıt bir birincil dil kodu saklar (örneğin en-US veya tr). Değer kırpılır; gönderilmemiş veya boş bir değer en-US olarak saklanır. Arama, saklanan kodun birebir aynısına göre filtreler.

Özel etiketler

Bir kaydın en fazla on özel etiketi olur. TEBHOS her etiketi kırpar ve yalnızca kırpıldıktan sonra 2 ile 30 karakter uzunluğundaki etiketleri tutar; daha kısa veya daha uzun etiketler reddedilmek yerine sessizce atılır. Kalan etiketlerden en fazla ilk on tanesi saklanır.

Keşif sunucularında ara

GET /discovery/guilds

Keşif dizininde arama yapar ve bir keşif arama sonucu nesnesi döndürür. Çağıranın herhangi bir izne veya eşleşen sunucularla herhangi bir ilişkiye ihtiyacı yoktur.

Sorgu parametreleri

Alan Tür Açıklama
query? string Sunucu adı, özel etiketler, özel davet kodu (vanity) ve açıklamayla eşleştirilen serbest metin sorgusu. Tüm dizine göz atmak için göndermeyin
category? integer Sonuçları tek bir keşif kategorisiyle (0-8) sınırlar
language? string Sonuçları tek bir birincil dil koduyla sınırlar
limit? integer Sayfa başına sonuç (1-48, varsayılan 36; aralık dışındaki değerler sınıra çekilir)
offset? integer Atlanacak eşleşme sayısı (varsayılan 0)

query olmadan sonuçlar üye sayısına göre (azalan) sıralanır. query verildiğinde sonuçlar en yeni sunucu başta olacak şekilde sıralanır. tag ve sort_by parametreleri kabul edilir ancak yok sayılır.

Yanıt

Durum Gövde Koşul
200 keşif arama sonucu nesnesi Arama tamamlandı; hiç eşleşme olmayabilir
500 hata yanıtı Örnek (instance) için yapılandırılmış bir arama altyapısı yok

Hız sınırı

discovery:search kovasında, istemci başına 10 saniyede 30 istek.

GET /discovery/search

İstemcinin arama kutusunun kullandığı hafif bir arama. Keşfedilebilir sunucu dizin belgelerinden oluşan bir dizi döndürür (sayfalama zarfı ve canlı çevrim içi sayılar yoktur).

Alan Tür Açıklama
q? string Serbest metin sorgusu; boş değer her şeyle eşleşir
limit? integer Sonuç sayısı (1-50, varsayılan 20)

Keşif kategorilerini listele

GET /discovery/categories

Artan id sırasıyla tüm keşif kategorisi nesnelerinin bir dizisini döndürür.

[
  { "id": 0, "name": "Gaming" },
  { "id": 1, "name": "Music" }
]

Hız sınırı

discovery:categories kovasında, istemci başına 10 saniyede 60 istek.

Keşif botlarını listele

GET /discovery/bots

Keşif ekranının "Botlar" rafı için, sahibinin herkese açık olarak işaretlediği en fazla 50 bot uygulamasını döndürür. Okunabilir bir bot kullanıcısı olmayan botlar atlanır.

Yanıt

{
  "bots": [
    {
      "id": "1489002177550843905",
      "client_id": "1489002177550843905",
      "bot_user_id": "1489002177550843906",
      "name": "Example Bot",
      "description": "Plays music in voice channels.",
      "avatar": "9f1c2d3e4b5a60718293a4b5c6d7e8f9",
      "banner": null,
      "default_permissions": "12371"
    }
  ]
}
Alan Tür Açıklama
id / client_id snowflake Uygulama kimliği (OAuth2 bot yetkilendirme akışında client_id olarak kullanın)
bot_user_id snowflake Bot hesabının kullanıcı kimliği
name string Botun görünen adı; yoksa kullanıcı adına veya uygulama adına düşer
description string Bot kullanıcısının biyografisi; yoksa genel bir yer tutucu
avatar ?string Bot kullanıcısının avatar hash'i
banner ?string Bot kullanıcısının afiş hash'i
default_permissions string Davet bağlantısı için önerilen izin bit alanı (12371 = Kanalları Görüntüle, Mesaj Gönder, Bağlan, Konuş)

Keşif sunucusuna katıl

POST /discovery/guilds/{guild_id}/join

Kimliği doğrulanmış hesabı keşfedilebilir bir sunucuya ekler ve boş gövdeyle 204 döndürür. Davet gerekmez ve hiçbir davet kullanım hakkı tüketilmez.

Bir sunucuya bu yolla, approved bir başvurusu olduğunda, DISCOVERABLE özelliğine sahip olduğunda veya BUSINESS_CLASS özelliğine sahip olduğunda katılınabilir (böylece İş rozetindeki "Katıl" düğmesi listelenmemiş İş sunucuları için bile çalışır).

Yanıt

Durum Gövde Koşul
204 boş Hesap eklendi veya zaten üyeydi
403 hata yanıtı Sunucuda INVITES_DISABLED özelliği var (FORBIDDEN)
403 hata yanıtı Çağıran sunucudan yasaklanmış (FORBIDDEN)
404 hata yanıtı Sunucu mevcut değil veya keşif yoluyla katılınabilir değil (NOT_FOUND)

Yan etkiler

Yeni bir üye için katılım, sunucuya Guild Member Add gönderir ve katılan hesabın açık oturumlarını sunucuya bağlar (oturumlar Guild Create alır). Hesapta "yeni sunuculardan gelen DM'leri kısıtla" seçeneği etkinse sunucu, hesabın kısıtlı listesine eklenir. Katılım sistem mesajı gönderilmez.

Hız sınırı

discovery:join kovasında, kullanıcı başına dakikada 10 istek (sunucuya göre bölümlenmez).

Keşif durumunu getir

GET /guilds/{guild_id}/discovery

Hiç başvurmamış bir sunucu da dahil olmak üzere bir sunucunun keşif durumu nesnesini döndürür. MANAGE_GUILD gerektirir.

Hız sınırı

discovery:status kovasında, kullanıcı ve sunucu başına 10 saniyede 30 istek.

Keşfe başvur

POST /guilds/{guild_id}/discovery

Bir sunucunun keşif başvurusunu gönderir ve pending durumundaki sonuç keşif başvurusu nesnesini döndürür. MANAGE_GUILD gerektirir. Her başvuru ekibin kararını bekler; otomatik onay yoktur.

JSON gövdesi

Alan Tür Açıklama
description string Kayıt açıklaması (kırpıldıktan sonra 10-300 karakter)
category_type integer Keşif kategorisi (0-8)
primary_language? string Birincil dil kodu (varsayılan en-US)
custom_tags? array[string] Saklanacak özel etiketler

Yanıt

Durum Gövde Koşul
200 keşif başvurusu nesnesi Başvuru pending olarak saklandı
400 hata yanıtı Açıklama uzunluğu veya kategori geçersiz, sunucunun üye sayısı gerekenden az ya da sunucunun zaten pending veya approved bir başvurusu var (BAD_REQUEST)
403 hata yanıtı Çağıran üye değil veya MANAGE_GUILD iznine sahip değil (FORBIDDEN)

Yan etkiler

Sunucunun etkin özellikleri değişebileceği için sunucu yeniden dizinlenir ve bir Guild Update gönderilir.

Hız sınırı

discovery:apply kovasında, kullanıcı ve sunucu başına dakikada 5 istek; Keşif başvurusunu düzenle ve Keşif başvurusunu geri çek ile paylaşılır.

Örnek

curl -X POST "https://tebhos.com/api/v1/guilds/1489002177550843904/discovery" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"description":"A place to talk about the example project.","category_type":4,"primary_language":"en-US","custom_tags":["open source","rust"]}'

Keşif başvurusunu düzenle

PATCH /guilds/{guild_id}/discovery

Saklanan kaydı günceller ve güncellenmiş keşif başvurusu nesnesini döndürür. MANAGE_GUILD gerektirir. Durum ve inceleme ayrıntıları korunur.

JSON gövdesi

Her alan isteğe bağlıdır; gönderilmeyen alan saklanan değeri korur.

Alan Tür Açıklama
description? string Kayıt açıklaması (10-300 karakter)
category_type? integer Keşif kategorisi (0-8)
primary_language? string Birincil dil kodu; boş dize saklanan değeri korur
custom_tags? array[string] Yeni ve eksiksiz etiket listesi; boş dizi tüm etiketleri temizler

Yanıt

Durum Gövde Koşul
200 keşif başvurusu nesnesi Kayıt güncellendi
400 hata yanıtı Açıklama veya kategori geçersiz ya da başvuru rejected veya removed durumunda (BAD_REQUEST)
403 hata yanıtı Çağıran üye değil veya MANAGE_GUILD iznine sahip değil (FORBIDDEN)
404 hata yanıtı Sunucunun başvurusu yok (NOT_FOUND)

Onaylanmış bir kayıttaki değişiklikler arama dizinine gönderilir ve bir Guild Update gönderilir.

Hız sınırı

discovery:apply kovasını paylaşır (kullanıcı ve sunucu başına dakikada 5 istek).

Keşif başvurusunu geri çek

DELETE /guilds/{guild_id}/discovery

Bir sunucunun başvuru kaydını siler ve boş gövdeyle 204 döndürür. MANAGE_GUILD gerektirir.

Geri çekme inceleme geçmişini yok eder

İnceleme ve kaldırma ayrıntıları başvuruyla birlikte silinir. Yeniden başvuran bir sunucu yeni bir başvuru sahibi olarak ele alınır.

Yanıt

Durum Gövde Koşul
204 boş Başvuru silindi
403 hata yanıtı Çağıran üye değil veya MANAGE_GUILD iznine sahip değil (FORBIDDEN)
404 hata yanıtı Sunucunun başvurusu yok (NOT_FOUND)

Yan etkiler

approved durumundaki bir başvuruyu geri çekmek DISCOVERABLE sunucu özelliğini de kaldırır. Sunucu yeniden dizinlenir ve bir Guild Update gönderilir. Mevcut üyeler etkilenmez.

Hız sınırı

discovery:apply kovasını paylaşır (kullanıcı ve sunucu başına dakikada 5 istek).