Davetler¶
Davet, bir hesabı bir sunucuya kabul eden bir koddur.
Daveti al, buradaki kimlik bilgisi gerektirmeyen tek yoldur. Bir herkese açık sunucuya davetsiz katılma konusu Keşif sayfasında anlatılır.
Yalnızca sunucu davetleri
TEBHOS'taki her davet bir sunucu davetidir (type 0). Grup doğrudan mesajları için davetler şu anda API tarafından oluşturulmaz.
Davet nesnesi¶
Daveti al tarafından döndürülen, bir davetin herkese açık gösterimi.
Yapı¶
| Alan | Tür | Açıklama |
|---|---|---|
| code | string | Daveti tanımlayan kod |
| type | integer | Davet türü, her zaman 0 |
| guild | kısmi davet sunucusu nesnesi | Davetin kabul ettiği sunucu |
| channel | kısmi davet kanalı nesnesi | Davetin gösterdiği kanal |
| inviter | ?object | Bu gösterimde her zaman null |
| member_count | integer | Sunucunun üye sayısı |
| presence_count | integer | Yaklaşık çevrimiçi üye sayısı (bilinmediğinde 0) |
| expires_at | ?ISO8601 timestamp | Davetin çözümlenmeyi bırakacağı zaman; süresi hiç dolmuyorsa null |
| temporary | boolean | Davetin oluşturulurken aldığı geçici bayrağı |
channel, davetin kayıtlı kanalıdır. Davetin kanalı yoksa (sunucu genelinde bir davet veya özel davet URL'si), TEBHOS sunucunun sistem kanalını, o da yoksa sunucunun en eski metin kanalını kullanır.
Örnek¶
{
"code": "a1b2c3d4",
"type": 0,
"guild": {
"id": "1489002177550843904",
"name": "Example guild",
"icon": null,
"banner": null,
"embed_splash": null,
"features": []
},
"channel": { "id": "1489002177550843905", "name": "general", "type": 0 },
"inviter": null,
"member_count": 412,
"presence_count": 87,
"expires_at": null,
"temporary": false
}
Kısmi davet sunucusu nesnesi¶
| Alan | Tür | Açıklama |
|---|---|---|
| id | snowflake | Sunucunun kimliği |
| name | string | Sunucunun adı |
| icon | ?string | Tam URL olarak sunucu simgesi |
| banner | ?string | Tam URL olarak sunucu afişi |
| embed_splash | ?string | Davet kartlarının kullandığı arka plan görseli (sunucunun gömme arka planı, yoksa afişi) |
| features | array[string] | Sunucunun özellikleri, sıralanmış |
Kısmi davet kanalı nesnesi¶
| Alan | Tür | Açıklama |
|---|---|---|
| id | snowflake | Kanalın kimliği |
| name | ?string | Kanalın adı |
| type | integer | Kanal türü |
Davet türleri¶
| Değer | Ad | Açıklama |
|---|---|---|
| 0 | GUILD | Bir hesabı bir sunucuya kabul eden davet |
Davet meta veri nesnesi¶
Bir davetin yönetim gösterimi; Kanal daveti oluştur, Kanal davetlerini listele ve Sunucu davetlerini listele tarafından döndürülür. Alan adları camelCase kullanır.
Yapı¶
| Alan | Tür | Açıklama |
|---|---|---|
| id | string | code ile aynı |
| code | string | Davet kodu |
| serverId | snowflake | Sunucunun kimliği |
| inviterId | snowflake | Daveti oluşturan hesabın kimliği (bilinmiyorsa boş dize) |
| inviterName | string | Oluşturanın görünen adı (bilinmiyorsa boş dize) |
| inviter | ?object | Oluşturanın {id, name, imageUrl} bilgisi veya null |
| maxUses | ?integer | En fazla kullanım sayısı; sınırsız için null |
| uses | integer | Davetin kabul edilme sayısı |
| expiresAt | ?ISO8601 timestamp | Davetin süresinin dolacağı zaman; hiç dolmuyorsa null |
| createdAt | ISO8601 timestamp | Davetin oluşturulma zamanı |
| channelId | ?snowflake | Davetin gösterdiği kanal; sunucu genelinde bir davet için null |
| channel | ?object | O kanalın {id, name, type} bilgisi (type, "TEXT" gibi bir etikettir) veya null |
Örnek¶
{
"id": "a1b2c3d4",
"code": "a1b2c3d4",
"serverId": "1489002177550843904",
"inviterId": "1501314428688998182",
"inviterName": "Example",
"inviter": { "id": "1501314428688998182", "name": "Example", "imageUrl": "" },
"maxUses": 25,
"uses": 3,
"expiresAt": "2026-08-05T11:22:19+00:00",
"createdAt": "2026-08-04T11:22:19+00:00",
"channelId": "1489002177550843905",
"channel": { "id": "1489002177550843905", "name": "general", "type": "TEXT" }
}
Özel davet URL'leri¶
Bir sunucunun kalıcı bir özel davet kodu (vanity kodu) olabilir. Daveti al ve Daveti kabul et, o koda sahip normal bir davet yoksa bu kodu çözümler. Özel davet URL'sinin süresi hiç dolmaz, temporary değeri false'tur ve davet listelerinde yer almaz.
Daveti al¶
GET /invites/{invite_code}
Tek bir daveti çözümler ve bir davet nesnesi döndürür. Kimlik doğrulama gerekmez ve okuma hiçbir zaman bir kullanım hakkı tüketmez.
Süresi dolmuş bir davet çözümlenmez.
Yanıt¶
| Durum | Gövde | Koşul |
|---|---|---|
| 200 | davet nesnesi | Davet çözümlendi |
| 404 | hata yanıtı | Bu koda sahip bir davet veya özel davet URL'si yok ya da sunucu artık mevcut değil (NOT_FOUND) |
Hız sınırı¶
invite:read kovasında istemci ve davet kodu başına 10 saniyede 100 istek. Authorization başlığı varsa istemci oturumdur, yoksa IP adresidir.
Örnek¶
Daveti kabul et¶
POST /invites/{invite_code}
Bir daveti kabul eder ve kimliği doğrulanmış hesabı davetin sunucusuna ekler. Yalnızca kullanıcılara açıktır: bot token'ı 403 ACCESS_DENIED ile reddedilir. Çağıranın herhangi bir izne ihtiyacı yoktur.
Yanıt¶
Başarılı olduğunda yol, küçük bir durum nesnesiyle 200 döndürür:
Hesap zaten üyeyse {"server_id": "...", "already_member": true} ile 200 döndürür ve hiçbir üyelik olayı gönderilmez.
| Durum | Gövde | Koşul |
|---|---|---|
| 200 | durum nesnesi | Hesap katıldı veya zaten üyeydi |
| 403 | hata yanıtı | Çağıran bir bot (ACCESS_DENIED) |
| 403 | hata yanıtı | Sunucu davetleri duraklatmış (INVITES_DISABLED özelliği) veya çağıran sunucudan yasaklanmış (FORBIDDEN) |
| 404 | hata yanıtı | Kod bilinmiyor veya süresi dolmuş (NOT_FOUND) |
Kullanım sınırları
max_uses saklanır ve bildirilir, ancak kabul yolu şu anda uses değeri max_uses değerine ulaşmış bir daveti reddetmez. Bir daveti durdurmak için süre sonu (max_age) kullanın veya daveti silin.
Yan etkiler¶
Normal bir davette uses, kod çözümlenir çözümlenmez, duraklatma, yasak ve zaten üye olma kontrollerinden önce artırılır. Yeni bir kabul, davet kodunu ve davet edeni üyelik kaydına yazar. Ardından:
- Sunucuya Guild Member Add gönderilir ve katılan hesabın açık oturumları sunucuya bağlanır.
- Sunucunun bir sistem kanalı varsa ve katılım mesajları gizlenmemişse, oraya bir
USER_JOINsistem mesajı (tür7) gönderilir ve Message Create ile iletilir. - Hesap yeni sunuculardan gelen DM'leri kısıtlıyorsa, sunucu kısıtlı listesine eklenir.
Hız sınırı¶
invite:accept kovasında kullanıcı başına 10 saniyede 10 istek (davet koduna göre bölümlenmez).
Örnek¶
Daveti sil¶
DELETE /invites/{invite_code}
Bir daveti kalıcı olarak siler. {"message": "..."} ile 200 döndürür.
Daveti oluşturan kişi, sunucunun üyesi olduğu sürece kendi davetini silebilir; diğer herkesin MANAGE_GUILD iznine ihtiyacı vardır. Bot token'ları kabul edilir.
Yanıt¶
| Durum | Gövde | Koşul |
|---|---|---|
| 200 | {"message": string} |
Davet silindi |
| 403 | hata yanıtı | Çağıran oluşturan kişi değil ve MANAGE_GUILD iznine sahip değil ya da üye değil (FORBIDDEN) |
| 404 | hata yanıtı | Bu koda sahip bir davet yok (NOT_FOUND) |
Yan etkiler¶
Sunucu denetim kaydına bir INVITE_DELETE girdisi yazılır ve sunucuya guild_id, code ve channel_id taşıyan bir Invite Delete olayı gönderilir.
Hız sınırı¶
invite:delete kovasında kullanıcı ve davet kodu başına 10 saniyede 20 istek.
Kanal daveti oluştur¶
POST /channels/{channel_id}/invites
Bir sunucu kanalı için yeni bir davet oluşturur ve davet meta veri nesnesiyle 201 döndürür. Her çağrı yeni bir davet oluşturur; mevcut davetler hiçbir zaman yeniden kullanılmaz.
Sunucu üyeliği ile o kanalda VIEW_CHANNEL ve CREATE_INSTANT_INVITE izinleri gerekir. Bot token'ları kabul edilir.
JSON gövdesi¶
| Alan | Tür | Açıklama |
|---|---|---|
| max_uses? | ?integer | En fazla kullanım sayısı; 0 veya belirtilmemesi sınırsız demektir |
| max_age? | ?integer | Saniye cinsinden ömür; 0 veya belirtilmemesi davetin süresinin hiç dolmayacağı demektir |
| temporary? | ?boolean | Davette saklanan geçici bayrağı (varsayılan false) |
Yanıt¶
| Durum | Gövde | Koşul |
|---|---|---|
| 201 | davet meta verisi nesnesi | Davet oluşturuldu |
| 403 | hata yanıtı | Çağıranın VIEW_CHANNEL veya CREATE_INSTANT_INVITE izni yok (FORBIDDEN) |
| 404 | hata yanıtı | Kanal mevcut değil, bir sunucu kanalı değil veya çağıran kanalı göremiyor (NOT_FOUND) |
Yan etkiler¶
Yeni kod, rastgele 8 küçük harfli onaltılık karakterden oluşur. Sunucu denetim kaydına bir INVITE_CREATE girdisi yazılır ve sunucuya davetin tamamıyla (code, guild, channel, inviter, uses, max_uses, max_age, created_at gibi referans biçimli alanlar ile guild_id ve channel_id) birlikte Invite Create gönderilir.
Hız sınırı¶
invite:create kovasında kullanıcı ve kanal başına dakikada 20 istek.
Örnek¶
curl -X POST "https://tebhos.com/api/v1/channels/1489002177550843905/invites" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"max_age":86400,"max_uses":25}'
Sunucu daveti oluştur¶
POST /invites/server/{guild_id}
Bir kanala bağlı olmayan, sunucu genelinde bir davet oluşturur. Kanal daveti oluştur ile aynı gövdeyi alır; buna ek olarak daveti o sunucunun tek bir kanalıyla sınırlayan isteğe bağlı bir channel_id kabul eder. channel_id olmadan sunucu düzeyinde CREATE_INSTANT_INVITE izni gerekir; channel_id ile izin o kanalda kontrol edilir. Davet meta veri nesnesiyle 201 döndürür.
Kanal davetlerini listele¶
GET /channels/{channel_id}/invites
Bir kanalın etkin davetlerini en yeniden eskiye davet meta veri nesneleri dizisi olarak döndürür. Kanala erişim ve sunucuda MANAGE_CHANNELS izni gerekir. Süresi dolmuş davetler dahil edilmez. Özel davet URL'leri dahil edilmez.
Hız sınırı¶
invite:list kovasında kullanıcı ve kanal başına 10 saniyede 40 istek.
Sunucu davetlerini listele¶
GET /guilds/{guild_id}/invites
Bir sunucunun tüm kanallarındaki etkin davetleri en yeniden eskiye davet meta veri nesneleri dizisi olarak döndürür. MANAGE_GUILD gerekir. Bot token'ları kabul edilir.
Süresi dolmuş davetler bu liste okunduğunda silinir, bu yüzden hiçbir zaman görünmezler. Yanıt sayfalanmaz. Özel davet URL'leri dahil edilmez.
Aynı liste GET /invites/server/{guild_id} adresinden de alınabilir.
Hız sınırı¶
invite:list kovasında kullanıcı ve sunucu başına 10 saniyede 40 istek.