Premium¶
TEBHOS'un üç ücretli ürünü vardır; hepsi Polar üzerinden satılır (bkz. Faturalandırma):
- TEBHOS Pro — kişisel bir abonelik (aylık veya yıllık). Pro üyeler mavi bir rozet gösterir ve toplamda 10 ücretsiz sunucu takviyesi dahil Pro ayrıcalıklarından yararlanır.
- Sunucu takviyeleri — bir sunucunun takviye seviyesini yükseltir. Her takviye 30 gün sürer.
- Business Class (İş Sınıfı) — sunucu sahibinin satın aldığı, sunucu başına bir abonelik. Sunucu sarı bir rozet ve seviye 2 takviye ayrıcalıkları kazanır; sahibi ise Pro ayrıcalıklarından yararlanır.
Kozmetik mağazası bu sayfanın sonunda anlatılır. Hediye kodları için bkz. Hediyeler.
Bu sayfadaki her yol bir kullanıcı oturumu gerektirir; bot token'ları 403 ACCESS_DENIED ile reddedilir.
Premium türleri¶
| Değer | Ad | Açıklama |
|---|---|---|
| 0 | Free | Premium yok (kullanıcılara "TEBHOS Başlangıç" olarak gösterilir) |
| 1 | Monthly | Aylık TEBHOS Pro, dönem başına 30 gün |
| 2 | Yearly | Yıllık TEBHOS Pro, dönem başına 365 gün |
| 3 | Lifetime | Bitiş tarihi olmayan TEBHOS Pro |
Premium, tür 3 olduğunda ya da tür 1 veya 2 olup premiumUntil gelecekte olduğunda etkindir. Etkin bir İş Sınıfı aboneliği olan sunucunun sahibi, Pro aboneliği olmasa bile bu abonelik bitene kadar premium (tür 1, Monthly) olarak bildirilir.
Premium durum nesnesi¶
Premium durumumu al ve Premium'u iptal et tarafından döndürülür. Alan adları camelCase kullanır.
| Alan | Tür | Açıklama |
|---|---|---|
| premiumType | integer | Premium türü |
| premiumTypeName | string | Free, Monthly, Yearly veya Lifetime |
| isPremium | boolean | Premium'un şu anda etkin olup olmadığı |
| premiumSince | ?ISO8601 zaman damgası | Premium'un başladığı zaman |
| premiumUntil | ?ISO8601 zaman damgası | Premium'un bittiği zaman; ömür boyu veya ücretsiz için null |
| daysRemaining | ?integer | premiumUntil tarihine kalan gün |
| premiumDays | integer | Rozet kademelerini açmak için kullanılan, hesaba yazılmış premium günleri (geçen süre artı kalan etkin dönem); premium değilse 0 |
| premiumWillCancel | boolean | Premium'un yenilenmek yerine premiumUntil tarihinde bitmek üzere planlanıp planlanmadığı |
Örnek¶
{
"premiumType": 1,
"premiumTypeName": "Monthly",
"isPremium": true,
"premiumSince": "2026-09-01T10:00:00Z",
"premiumUntil": "2026-10-01T10:00:00Z",
"daysRemaining": 8,
"premiumDays": 30,
"premiumWillCancel": false,
"has_billing_account": true
}
Premium durumumu al¶
GET /premium/me
Çağıranın premium durum nesnesini ve ek olarak şunu döndürür:
| Alan | Tür | Açıklama |
|---|---|---|
| has_billing_account | boolean | Çağıranın müşteri kaydı olan bir Polar aboneliği olup olmadığı; bu, müşteri portalını etkinleştirir |
Premium durumunu al¶
GET /premium/state
Çağıranın premium durumunu iç içe geçmiş {actual, effective, billing, pricing} biçiminde döndürür. Yalnızca birkaç alan TEBHOS verisi taşır:
| Alan | Açıklama |
|---|---|
| actual.premium_type / effective.premium_type | Premium etkinse 1, aksi hâlde null |
| actual.premium_since, actual.premium_until | Yukarıdaki premiumSince / premiumUntil ile aynı |
| actual.premium_will_cancel | Aboneliğin premium_until tarihinde bitip bitmeyeceği |
| actual.premium_billing_cycle | monthly, yearly veya null |
| actual.has_active_paid_premium | Premium'un etkin olup olmadığı |
TEBHOS'ta desteklenmez
billing ve pricing bölümleri her zaman boştur (null, [] veya false); effective.is_premium her zaman true, effective.self_hosted her zaman true; is_visionary, premium_lifetime_sequence ve premium_grace_ends_at her zaman false/null olur. Bunun yerine Premium durumumu al ve İşlemleri listele yollarını kullanın.
Kullanıcıların rozetlerini denetle¶
POST /premium/check
Verilen kullanıcılardan hangilerinin premium (mavi) veya İş Sınıfı (sarı) rozeti gösterdiğini ve bağlılık rozetlerini çözümler. Kimliği doğrulanmış her kullanıcı çağırabilir.
JSON gövdesi¶
| Alan | Tür | Açıklama |
|---|---|---|
| ids | array[snowflake] | Denetlenecek kullanıcı kimlikleri. Geçersiz kimlikler yok sayılır |
Yanıt¶
| Alan | Tür | Açıklama |
|---|---|---|
| premium_ids | array[snowflake] | Etkin TEBHOS Pro'su olan kullanıcılar |
| business_ids | array[snowflake] | Etkin İş Sınıfı olan bir sunucunun sahibi olan kullanıcılar. İstemciler bu kullanıcılar için mavi yerine sarı rozeti gösterir |
| affiliation_badges | array[object] | Birincil İş Sınıfı bağlılığı adlarının yanında gösterilmesi gereken kullanıcılar için {user_id, guild_id, icon_hash, guild_name} |
Sunucu takviyeleri¶
Bir sunucunun takviye seviyesi, şu anda ona sayılan takviye sayısından gelir:
| Seviye | Etkin takviyeler |
|---|---|
| 0 | 0-9 |
| 1 | 10-24 |
| 2 | 25 veya daha fazla |
Seviye 2 en yüksek seviyedir ve bir sunucunun Keşif içinde görünmesi için gereklidir. Aynı anda bir sunucuya en fazla 25 takviye sayılır; fazladan takviyeler beklemede olarak bekler ve bir yer açıldığında 30 günlük dönemlerine başlar. Bekleyen takviyeler, takviye yapanın kendi rozet kademeleri için yine de sayılır.
Etkin İş Sınıfı olan bir sunucunun etkin seviyesi en az 2'dir.
TEBHOS Pro üyelerinin toplamda 10 ücretsiz takviyesi vardır (ay başına değil). Süresi dolan veya kaldırılan bir takviye ücretsiz takviyeyi geri vermez. Ücretsiz hakkı aşan takviyeler ve Pro olmayan kullanıcıların tüm takviyeleri, tanesi 49,99 TL (2,99 USD) olmak üzere Polar üzerinden ödenir.
Takviye durumumu al¶
GET /users/@me/boost-status
Çağıranın tüm sunuculardaki takviye özetini döndürür (camelCase):
| Alan | Tür | Açıklama |
|---|---|---|
| isBoosting | boolean | Çağıranın etkin veya bekleyen herhangi bir takviyesi olup olmadığı |
| boostingSince | ?ISO8601 zaman damgası | Çağıranın en eski güncel takviyesinin oluşturulduğu zaman |
| boostCount | integer | Çağıranın etkin veya bekleyen takviye sayısı |
| boostDays | integer | Rozet kademeleri için kullanılan, hesaba yazılmış takviye günleri |
| boostSlots | null | Her zaman null (kullanıcı başına sınır yoktur) |
| boostSlotsUsed | integer | boostCount ile aynı |
| boostSlotsRemaining | null | Her zaman null |
| isPremium | boolean | Çağıranın TEBHOS Pro'su olup olmadığı |
| boostUnitPriceMinor | integer | Kuruş cinsinden tek takviyenin fiyatı (4999) |
| boostCurrency | string | TRY |
| boostUnitPriceUsdMinor | integer | ABD senti cinsinden tek takviyenin fiyatı (299) |
| freeBoostAllowance | integer | Bu hesap için toplam ücretsiz takviye (Pro için 10, aksi hâlde 0) |
| freeBoostsUsed | integer | Kullanılmış ücretsiz takviyeler |
| freeBoostRemaining | integer | Kalan ücretsiz takviyeler |
Sunucu takviyelerini al¶
GET /servers/{guild_id}/boost
Bir sunucunun takviye durumunu döndürür. Okuma işlemi ayrıca bekleyen takviyeleri boş yerlere yükseltir.
| Alan | Tür | Açıklama |
|---|---|---|
| boostCount | integer | Sunucudaki toplam takviye (etkin ve bekleyen) |
| level | integer | Etkin takviyelerden gelen takviye seviyesi |
| effectiveLevel | integer | Ayrıcalıklar için kullanılan seviye (İş Sınıfı ile en az 2) |
| isBoosting | boolean | Çağıranın bu sunucuya takviye yapıp yapmadığı |
| myBoostCount | integer | Çağıranın bu sunucudaki takviyeleri (etkin ve bekleyen) |
| userBoost | ?object | Çağıranın buradaki en eski etkin takviyesinin {id, createdAt, expiresAt} değerleri |
| goal | integer | İlerleme çubuğu için sunucunun takviye hedefi (varsayılan 25, yalnızca görüntüleme amaçlı) |
| barEnabled | boolean | Sunucunun takviye ilerleme çubuğunu gösterip göstermediği |
Sunucuya takviye yap¶
POST /servers/{guild_id}/boost
Bir sunucuya takviye yapar. Ücretsiz takviyeler hemen uygulanır; ücretli kalan kısım tek bir Polar ödeme işleminde tahsil edilir.
JSON gövdesi¶
Gövde isteğe bağlıdır.
| Alan | Tür | Açıklama |
|---|---|---|
| count? | integer | Eklenecek takviye sayısı (1-100, varsayılan 1; sınırlara kırpılır) |
| currency? | string | try veya usd; bkz. ödeme para birimi |
Yanıt¶
İstenen tüm takviyeler ücretsiz takviyelerle karşılandığında yol 201 döndürür:
{
"id": "1501314428688998190",
"message": "...",
"free": true,
"applied": 1,
"priceMinor": 0,
"currency": "TRY",
"freeBoostRemaining": 9
}
Ödeme gerektiğinde bir ödeme URL'siyle 200 döndürür. Ücretli takviyeler Polar ödemeyi onayladıktan sonra uygulanır; tarayıcı sunucunun takviye sayfasına döner.
{
"paymentRequired": true,
"url": "https://checkout.example.com/polar_c_1a2b3c",
"freeApplied": 3,
"paidCount": 7,
"priceMinor": 34993,
"unitPriceMinor": 4999,
"currency": "TRY",
"freeBoostRemaining": 0
}
| Durum | Gövde | Koşul |
|---|---|---|
| 201 | ücretsiz sonuç | Tüm takviyeler ücretsiz uygulandı |
| 200 | ödeme sonucu | Takviyelerin bir kısmı veya tamamı ödeme gerektiriyor |
| 400 | hata yanıtı | Bu örnekte ücretli takviyeler yapılandırılmamış (BAD_REQUEST) |
| 409 | hata yanıtı | Aynı kullanıcının başka bir takviye isteği hâlâ sürüyor (CONFLICT); birkaç saniye sonra yeniden deneyin |
Takviyelerin uygulanması sunucuyu Keşif için yeniden dizinler ve bir Guild Update gönderir.
Takviyelerimi kaldır¶
DELETE /servers/{guild_id}/boost
Çağıranın sunucudaki tüm takviyelerini kaldırır ve {"message": "..."} döndürür. Bunlarda kullanılan ücretsiz takviyeler geri verilmez. Sunucu yeniden dizinlenir ve bir Guild Update gönderilir.
Takviye yapanları listele¶
GET /servers/{guild_id}/boost/boosters
Sunucuya takviye yapanları, en eskiden başlayarak ve kullanıcı başına gruplanmış olarak döndürür:
[
{
"profileId": "1501314428688998182",
"name": "example",
"imageUrl": "",
"boostCount": 3,
"boostedAt": "2026-09-01T10:00:00Z"
}
]
İş Sınıfı¶
İş Sınıfı (Business Class), tek bir sunucuya bağlı ve sunucunun sahibi tarafından İş Sınıfı ödemesi oluştur üzerinden satın alınan bir aboneliktir. Etkin olduğu sürece:
- sunucu
BUSINESS_CLASSsunucu özelliğine sahiptir ve sarı bir rozet gösterir, - sunucu seviye 2 takviye ayrıcalıkları kazanır (etkin takviye seviyesi en az 2'dir),
- sahip bir TEBHOS Pro üyesi olarak değerlendirilir,
- sahip, bağlılıklar ile en fazla 25 üyeyi sunucuya bağlayabilir,
- herkes Keşif sunucusuna katıl üzerinden sunucuya katılabilir.
Yalnızca sahibe açık yollar, sunucu sahibi olmayan herkese 404 NOT_FOUND ile yanıt verir; böylece sunucunun var olup olmadığını açığa çıkarmaz.
İş Sınıfı abonelik nesnesi¶
| Alan | Tür | Açıklama |
|---|---|---|
| guild_id | snowflake | Sunucu |
| active | boolean | Aboneliğin şu anda geçerli olup olmadığı |
| until | ?ISO8601 zaman damgası | Geçerli dönemin bittiği zaman |
| will_cancel | boolean | Yenilenmek yerine until tarihinde bitip bitmeyeceği |
| billing_cycle | ?string | monthly veya yearly |
| discovery_opt_in | boolean | Sunucunun İş Sınıfı keşfinde listelenip listelenmediği |
İş Sınıfı genel görünümümü al¶
GET /business/me
Çağıranın sahibi olduğu her sunucuyu İş Sınıfı durumuyla birlikte listeler:
{
"guilds": [
{
"guild_id": "1489002177550843904",
"name": "Example guild",
"icon_hash": null,
"business": null,
"business_active": false
}
],
"has_live": false
}
business bir abonelik nesnesi veya null'dır.
Sunucunun İş Sınıfını al¶
GET /business/guilds/{guild_id}
Yalnızca sahip. {"business": <subscription object or null>, "business_active": <bool>} döndürür.
İş Sınıfı keşif listelemesini ayarla¶
PUT /business/guilds/{guild_id}/discovery
Yalnızca sahip. Gövde {"enabled": true} veya {"enabled": false}. {"discovery_opt_in": <bool>} döndürür. Abonelik tek başına sunucuyu listelemez; bu katılım tercihi gereklidir.
İş Sınıfı sunucularını listele¶
GET /business/discovery
Keşfe katılmayı seçmiş geçerli İş Sınıfı sunucularını döndürür:
| Alan | Tür | Açıklama |
|---|---|---|
| guilds[].guild_id | snowflake | Sunucu |
| guilds[].name | ?string | Sunucu adı |
| guilds[].icon_hash | ?string | Sunucu simgesi özeti |
| guilds[].banner_hash | ?string | Sunucu afişi özeti |
| guilds[].member_count | integer | Üye sayısı |
| guilds[].owner | ?object | Sahibin {user_id, username, name, image_url} değerleri |
İş Sınıfı bağlılıkları¶
Bir bağlılık, bir sunucu üyesini bir İş Sınıfı sunucusuna bağlar; üye daha sonra sunucunun logosunu adının yanında gösterebilir. Sahip bir istek gönderir, üye kabul eder veya reddeder.
| Yol | Kim | Açıklama |
|---|---|---|
GET /business/guilds/{guild_id}/affiliations |
Sahip | Bağlılıkları {affiliations: [{user_id, status, username, name, image_url, created_at}], limit} olarak listeler |
POST /business/guilds/{guild_id}/affiliations |
Sahip | İstek gönderir. Gövde {"user_id": "..."} veya {"username": "..."}. Hedef sunucunun üyesi olmalıdır. {ok, status} döndürür |
DELETE /business/guilds/{guild_id}/affiliations/{user_id} |
Sahip | Bir bağlılığı kaldırır |
GET /business/affiliations/me |
Üye | Çağıranın bağlılıklarını {affiliations: [{guild_id, status, is_primary, guild_name, guild_icon_hash}]} olarak listeler |
POST /business/affiliations/{guild_id}/respond |
Üye | Gövde {"accept": true} kabul eder, false reddeder. {ok, accepted} döndürür |
POST /business/affiliations/{guild_id}/primary |
Üye | Kabul edilmiş bir bağlılığı çağıranın adının yanında gösterilen bağlılık yapar |
DELETE /business/affiliations/{guild_id} |
Üye | Bir bağlılıktan ayrılır (204) |
Bağlılık durumları pending, accepted ve inactive şeklindedir. Bir sunucu, inactive olmayan en fazla 25 bağlılık tutabilir. İstek gönderme, kullanıcı başına saatte 30 ile sınırlıdır (business:affiliate kovası).
Mağaza¶
Mağaza profil kozmetikleri satar. Satın almalar bir Polar ödeme işleminden geçer; öğe ödemeden sonra envantere eklenir.
Kozmetik yuvaları¶
| Yuva | Açıklama |
|---|---|
| NAME_PLATE | Üye listelerinde adın arkasında gösterilen ad plakası |
| AVATAR_DECORATION | Avatarın çevresindeki süsleme |
| PROFILE_EFFECT | Profildeki animasyonlu efekt |
| AVATAR_HAT | Avatarın üzerindeki şapka |
| APP_LOGO | Uygulama logosu kozmetiği |
Mağaza koleksiyonlarını listele¶
GET /shop/collections
{collections, items, bundles} döndürür. Öğelerde id, slug, collection_id, name, description, item_type (bir yuva), price, premium_price, asset_data ve purchasable bulunur; paketlerde id, slug, collection_id, name, description, price, premium_price, item_ids ve purchasable bulunur. Öğe için yapılandırılmış bir Polar ürünü yoksa purchasable değeri false olur.
Envanteri al¶
GET /shop/inventory
Çağıran için {"entries": [{id, item_id, source, bundle_id, purchased_at}]} döndürür.
Kuşanılan kozmetikleri al¶
GET /shop/equipped
Çağıranın her yuvada kuşandığı öğeyi {name_plate, avatar_decoration, profile_effect, avatar_hat, app_logo} olarak döndürür (her biri bir öğe veya null). {"profile_ids": [...]} ile POST /shop/equipped/bulk, aynısını birkaç kullanıcı için kullanıcı kimliğine göre anahtarlanmış olarak döndürür.
Mağaza öğesi satın al¶
POST /shop/items/{item_id}/purchase
Tek bir öğe için Polar ödeme işlemi açar ve bir yönlendirme URL nesnesi döndürür.
| Alan | Tür | Açıklama |
|---|---|---|
| currency? | string | try veya usd |
| gift_recipient_id? | snowflake | Öğeyi bu kullanıcıya hediye olarak satın alır; ödemeden sonra ona teslim edilir |
| gift_message? | string | Hediye alıcısı için bir not; 190 karaktere kısaltılır |
Alıcı (veya hediye alıcısı) öğeye zaten sahipse, alıcı çağıranın kendisiyse ya da öğe satın alınamıyorsa 400; öğe veya alıcı yoksa 404 döndürür.
Mağaza paketi satın al¶
POST /shop/bundles/{bundle_id}/purchase
Bir paket için Mağaza öğesi satın al ile aynıdır.
Kozmetik kuşan¶
PATCH /shop/equipped/{slot}
Gövde {"item_id": "<item uuid>"} bir öğeyi yuvaya kuşandırır; {"item_id": null} yuvayı temizler. Öğe türü yuvayla eşleşmelidir. Çağıranın öğeye sahip olması gerekir; yalnızca TEBHOS Pro (veya hediye edilmiş bir kopya) gerektiren Pro'ya özel öğeler bunun istisnasıdır. Çağıranın kuşandığı kozmetikleri döndürür.
Kozmetik hediyeleri¶
GET /shop/cosmetic-gifts, çağırana gönderilmiş ve henüz alınmamış kozmetik hediyelerini {"gifts": [{id, sender_id, item_type, item_id, message}]} olarak listeler. POST /shop/cosmetic-gifts/claim bunları alır ve 204 döndürür.