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¶
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.
Hızlı sunucu araması¶
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.
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).