Mesajlar¶
Mesaj, bir kanaldaki tek bir gönderidir; metni, ekleri, gömmeleri, çıkartmaları ve tepkileri onunla birlikte saklanır. Kanal meta verileri ve üyelik Kanallar kaynağında tanımlanır.
Metin taşıyan kanal, mesaj saklayan bir kanal türüdür: sunucu kategorisi ve sunucu bağlantı kanalı dışındaki her tür. Mesaj geçmişi kesme noktası, sunucuda saklanan bir zamandır; READ_MESSAGE_HISTORY iznine sahip olmayan bir üye, bu zamandan önce oluşturulmuş hiçbir şeyi okuyamaz.
Bir yol yalnızca kullanıcı olarak belirtilmedikçe hem kullanıcı oturumunu (Authorization: Bearer <token>) hem de bot token'ını (Authorization: Bot <token>) kabul eder. Hata gövdeleri Hatalar sayfasındaki biçime uyar.
Kanal çözümleme¶
TEBHOS, yola özgü herhangi bir yetkilendirmeyi uygulamadan önce kanalı çözümler:
- Var olmayan bir kanal, çağıranın üyesi olmadığı bir sunucu ve çağıranın alıcısı olmadığı bir özel kanal, hepsi 404
NOT_FOUNDdöndürür. - Kanalda VIEW_CHANNEL iznine sahip olmayan bir sunucu üyesi 403
FORBIDDENalır. READ_MESSAGE_HISTORYiznine sahip olmayan bir sunucu çağıranı, yalnızca sunucunun mesaj geçmişi kesme noktasında veya sonrasında oluşturulan mesajları görür; sunucunun kesme noktası yoksa hiçbir şey görmez. Daha eski mesajlar 403 olarak değil, hiç yokmuş gibi davranır (boş liste veya 404).- Zaman aşımındaki bir üye o sunucuda mesaj gönderemez, yazıyor göstergesi yayınlayamaz, tepki veremez veya yükleme yapamaz (403
FORBIDDEN).
İzin bitleri yalnızca sunucu kanallarında değerlendirilir.
Mesaj nesnesi¶
Yapı¶
| Alan | Tür | Açıklama |
|---|---|---|
| id | snowflake | Mesajın kimliği |
| channel_id | snowflake | Kanalın kimliği |
| author | kısmi kullanıcı nesnesi | Mesajın sahibi olarak gösterilen kullanıcı |
| webhook_id? | snowflake | Kaynak webhook kimliği; yalnızca webhook tarafından yazılmış mesajlarda bulunur |
| type | integer | Mesaj türü |
| flags | integer | Mesaj bayrakları |
| content | string | Mesajın metni; mesaj yalnızca medya içeriyorsa boştur |
| timestamp | ISO8601 zaman damgası | Mesajın snowflake değerinden türetilen oluşturulma zamanı |
| edited_timestamp | ?ISO8601 zaman damgası | En son düzenleme zamanı; mesaj hiç düzenlenmemişse null |
| pinned | boolean | Mesajın sabitlenip sabitlenmediği |
| mention_everyone | boolean | İçeriğin @everyone veya @here içerip içermediği |
| tts | boolean | Mesajın metinden konuşmaya (text-to-speech) olarak gönderilip gönderilmediği |
| mentions | array[kısmi kullanıcı nesnesi] | İçerikte bahsedilen kullanıcılar |
| mention_roles | array[snowflake] | İçerikte bahsedilen rollerin kimlikleri |
| mention_channels? | array[kanal bahsetme nesnesi] | İçeriğin kimlikle bağlantı verdiği kanallar |
| embeds | array[gömme nesnesi] | Mesajdaki bağlantı önizlemeleri ve zengin gömmeler |
| attachments | array[mesaj eki nesnesi] | Mesaja eklenen dosyalar |
| stickers | array[çıkartma öğesi nesnesi] | Mesajla gönderilen çıkartmalar |
| reactions? | array[tepki nesnesi] | Tepki özetleri; mesajda tepki yoksa yer almaz |
| message_reference? | mesaj referansı nesnesi | Yanıt veya iletme referansı |
| message_snapshots? | array[mesaj anlık görüntüsü nesnesi] | Bir iletme için yakalanan kopyalar |
| nonce? | string | Çağıranın verdiği nonce; yalnızca oluşturma yanıtında ve ilgili Gateway olayında geri yansıtılır |
| call? | mesaj araması nesnesi | Bir CALL mesajına bağlı arama durumu |
| referenced_message? | ?mesaj nesnesi | Çözümlenmiş yanıt hedefi; kendi referenced_message alanı olmadan |
mentions, mention_roles, embeds, attachments ve stickers her zaman bulunur ve boş olabilir. ? ile işaretlenmiş bir alan, değeri yoksa yanıtta yer almaz.
referenced_message üç durumdan birindedir: mesaj bir yanıt değilse anahtar hiç yoktur; yanıt hedefi artık mevcut değilse anahtar vardır ve null olur; hedef mevcutsa anahtar mesajla birlikte gelir. İstemci, yokluğu null değerinden anahtarın varlığına bakarak ayırt etmelidir.
Webhook tarafından yazılmış bir mesajın kullanıcı yazarı yoktur. TEBHOS yazarı webhook'tan oluşturur: id webhook kimliği, username mesajın gönderildiği ad, discriminator "0", avatar webhook avatar hash'i ve bot true olur. Yazar hesabı artık çözümlenemeyen bir mesaj, yalnızca gerçek bir id içeren bir yazar nesnesi taşır.
İletilen mesajın message_snapshots içinde değişmez kopyaları vardır
Yanıt referenced_message alanına çözümlenir; iletmede bu alan yoktur. TEBHOS anlık görüntüyü iletme anında yakalar ve bu görüntü kaynaktaki sonraki düzenlemeleri hiçbir zaman izlemez.
Örnek¶
{
"id": "1501320000000000000",
"channel_id": "1501314428688998182",
"author": {
"id": "1501314428688990000",
"username": "ada",
"discriminator": "0",
"global_name": "Ada",
"avatar": "a1b2c3d4e5f60718293a4b5c6d7e8f90",
"avatar_color": null,
"flags": 0
},
"type": 0,
"flags": 0,
"content": "shipping it",
"timestamp": "2026-08-31T09:14:02.000Z",
"edited_timestamp": null,
"pinned": false,
"mention_everyone": false,
"tts": false,
"mentions": [],
"mention_roles": [],
"embeds": [],
"attachments": [],
"stickers": []
}
Mesaj türleri¶
| Değer | Ad | Açıklama |
|---|---|---|
| 0 | DEFAULT | Sıradan mesaj (iletmeler ve webhook mesajları için de kullanılır) |
| 1 | RECIPIENT_ADD | Grup DM'e alıcı eklendiğini bildiren sistem mesajı |
| 2 | RECIPIENT_REMOVE | Grup DM'den alıcı çıkarıldığını bildiren sistem mesajı |
| 3 | CALL | Özel arama sistem mesajı |
| 4 | CHANNEL_NAME_CHANGE | Grup DM ad değişikliği sistem mesajı |
| 5 | CHANNEL_ICON_CHANGE | Grup DM simge değişikliği sistem mesajı |
| 6 | CHANNEL_PINNED_MESSAGE | Sabitlenen mesaja referans veren sabitleme sistem mesajı |
| 7 | USER_JOIN | Sunucuya katılma sistem mesajı |
| 19 | REPLY | Yanıt referansı içeren mesaj |
Yalnızca DEFAULT ve REPLY mesajları sabitlenebilir veya sabitlemesi kaldırılabilir; diğer türler 400 BAD_REQUEST döndürür.
Mesaj bayrakları¶
| Değer | Ad | Açıklama |
|---|---|---|
| 1 << 2 | SUPPRESS_EMBEDS | Gömmelerin gösterilmesini engeller (bağlantı önizlemeleri yine çözümlenir ancak yayınlanmaz) |
| 1 << 12 | SUPPRESS_NOTIFICATIONS | Anlık bildirim veya masaüstü bildirimi oluşturmaz |
| 1 << 13 | VOICE_MESSAGE | Mesaj bir sesli mesajdır |
| 1 << 17 | COMPACT_ATTACHMENTS | Ekleri sıkışık bir düzende gösterir |
Bu bitler gönderilebilir kümenin tamamıdır. Oluşturma işlemi verilen değerden yalnızca bu bitleri tutar; değiştirme işlemi yalnızca bu bitleri değiştirir ve saklanan diğer tüm bitleri korur. Diğer bitler hata verilmeden atılır.
Mesaj eki nesnesi¶
Ek, bir mesaja bağlı olarak saklanan ve TEBHOS CDN'inden sunulan tek bir dosyadır.
Yapı¶
| Alan | Tür | Açıklama |
|---|---|---|
| id | snowflake | Ekin kimliği |
| filename | string | Saklanan dosya adı |
| title | ?string | Görünen başlık veya null |
| description | ?string | Alternatif metin veya null |
| content_type | ?string | Yükleme sırasında kaydedilen medya türü |
| content_hash | ?string | Saklanan baytların SHA-256 hash'i; hiç hesaplanmamışsa null |
| size | integer | Bayt cinsinden saklanan boyut |
| url | ?string | Herkese açık dosya URL'si: https://cdn.tebhos.com/attachments/{channel_id}/{attachment_id}/{filename} |
| proxy_url | ?string | Görseller için (SVG hariç): https://tebhos.com/api/v1/files/attachments/{channel_id}/{attachment_id}/{filename} biçiminde yeniden boyutlandırılabilir bir URL. Diğer dosyalar için null |
| width? | integer | Görsel medya için piksel genişliği |
| height? | integer | Görsel medya için piksel yüksekliği |
| placeholder? | string | Kodlanmış medya yer tutucusu |
| flags | integer | Ek bayrakları |
| nsfw? | boolean | TEBHOS medya güvenliği taraması tarafından ayarlanır; true, dosyanın işaretlendiği ve istemcilerin onu tıklayarak açılan bir perdenin arkasına gizlediği anlamına gelir |
| duration? | integer | Saniye cinsinden ses veya video süresi |
| waveform? | string | Yükleyenin sağladığı, Base64 ile kodlanmış sesli mesaj dalga biçimi |
| expires_at | ?ISO8601 zaman damgası | Ekin kaydedilmiş depolama bitiş zamanı veya null |
| expired? | boolean | expires_at zamanının geçip geçmediği |
Ek URL'leri imzalı değildir ve kendiliğinden süresi dolmaz. proxy_url; width, height ve format sorgu parametrelerini kabul eder; bkz. Medya vekili.
Örnek¶
{
"id": "1501320000000000001",
"filename": "diagram.png",
"title": null,
"description": "Sequence diagram",
"content_type": "image/png",
"content_hash": null,
"size": 18422,
"url": "https://cdn.tebhos.com/attachments/1501314428688998182/1501320000000000001/diagram.png",
"proxy_url": "https://tebhos.com/api/v1/files/attachments/1501314428688998182/1501320000000000001/diagram.png",
"width": 1280,
"height": 720,
"flags": 0,
"expires_at": null
}
Ek bayrakları¶
| Değer | Ad | Açıklama |
|---|---|---|
| 1 << 3 | IS_SPOILER | Ek, spoiler olarak gösterilir |
| 1 << 4 | CONTAINS_EXPLICIT_MEDIA | Medya denetimi eki müstehcen olarak işaretledi |
| 1 << 5 | IS_ANIMATED | Ek hareketlidir |
Emoji nesnesi¶
| Alan | Tür | Açıklama |
|---|---|---|
| id | ?snowflake | Özel emojinin kimliği; Unicode emoji için null |
| name | string | Özel emojinin adı veya Unicode emojinin kendisi |
| animated? | boolean | Özel emojinin hareketli olup olmadığı |
Tepki nesnesi¶
Tepki nesnesi, bir mesajdaki tek bir emoji grubunu özetler.
| Alan | Tür | Açıklama |
|---|---|---|
| emoji | emoji nesnesi | Bu grubun saydığı emoji |
| count | integer | Bu emojiyi ekleyen kullanıcı sayısı |
| me | boolean | Çağıranın bu emojiyi ekleyip eklemediği |
Gruplar, ilk tepkilerinin eklendiği sırayla listelenir. TEBHOS, mesaj başına tepki grubu veya kullanıcı sayısına bir üst sınır uygulamaz.
Örnek¶
{
"emoji": {"id": "1501314428688991234", "name": "party_parrot", "animated": true},
"count": 7,
"me": true
}
Mesaj referansı nesnesi¶
| Alan | Tür | Açıklama |
|---|---|---|
| channel_id | snowflake | Referans verilen kanalın kimliği |
| message_id | snowflake | Referans verilen mesajın kimliği |
| guild_id? | snowflake | Referans verilen sunucunun kimliği |
| type | integer | Mesaj referansı türü |
Mesaj referansı türleri¶
| Değer | Ad | Açıklama |
|---|---|---|
| 0 | DEFAULT | Yanıt referansı (type verilmediğinde varsayılan) |
| 1 | FORWARD | message_snapshots ile temsil edilen iletme referansı |
Mesaj anlık görüntüsü nesnesi¶
Anlık görüntü, iletilen tek bir mesajın düz ve değişmez bir kopyasıdır. Mesaj kimliği, kanal kimliği veya yazarı yoktur.
| Alan | Tür | Açıklama |
|---|---|---|
| content? | string | Anlık görüntüsü alınan metin |
| timestamp | ISO8601 zaman damgası | Özgün oluşturulma zamanı |
| edited_timestamp? | ISO8601 zaman damgası | Özgün düzenleme zamanı |
| mentions? | array[snowflake] | Anlık görüntüdeki bahsedilen kullanıcı kimlikleri |
| mention_roles? | array[snowflake] | Anlık görüntüdeki bahsedilen rol kimlikleri |
| embeds? | array[gömme nesnesi] | Anlık görüntüdeki gömmeler (kaynakta SUPPRESS_EMBEDS varsa yer almaz) |
| attachments? | array[mesaj eki nesnesi] | Anlık görüntüdeki ekler. Hedef kanala kopyalanırlar; bu yüzden kaynağın silinmesi onları etkilemez |
| stickers? | array[çıkartma öğesi nesnesi] | Anlık görüntüdeki çıkartmalar |
| type | integer | Özgün mesaj türü |
| flags | integer | Özgün mesaj bayrakları |
Mesaj araması nesnesi¶
| Alan | Tür | Açıklama |
|---|---|---|
| participants | array[snowflake] | Katılımcı kullanıcı kimlikleri |
| ended_timestamp | ?ISO8601 zaman damgası | Aramanın bitiş zamanı; arama sürerken null |
Kanal bahsetme nesnesi¶
| Alan | Tür | Açıklama |
|---|---|---|
| id | snowflake | Bahsedilen kanalın kimliği |
| name | string | Kanalın adı |
| type | integer | Kanal türü |
Çıkartma öğesi nesnesi¶
| Alan | Tür | Açıklama |
|---|---|---|
| id | snowflake | Çıkartmanın kimliği |
| name | string | Gönderim anındaki çıkartma adı |
| animated | boolean | Çıkartmanın hareketli olup olmadığı |
| image_url? | string | Çıkartmanın güncel görsel URL'si; çıkartma artık mevcut değilse yer almaz |
| guild_id? | snowflake | Çıkartmanın sahibi olan sunucunun kimliği |
| legacy_id? | string | Çıkartmanın eski bir tanımlayıcısı; bazı çıkartmalarda bulunur |
Gömme nesnesi¶
Gömme, bir mesajdaki işlenmiş önizlemedir: ya içerikteki bir bağlantıdan çözümlenir ya da bir zengin gömme girdisi olarak sağlanır.
Yapı¶
| Alan | Tür | Açıklama |
|---|---|---|
| type | string | Gömme türü |
| title? | string | Gömme başlığı |
| description? | string | Gömme açıklaması |
| url? | string | Gömmenin hedef URL'si |
| timestamp? | ISO8601 zaman damgası | Gömme zaman damgası |
| color? | integer | 24 bitlik RGB tamsayısı olarak gömme rengi |
| author? | gömme yazarı nesnesi | Gömme yazarı |
| provider? | gömme sağlayıcısı nesnesi | Harici sağlayıcı (yalnızca bağlantı önizlemeleri) |
| thumbnail? | gömme medyası nesnesi | Küçük resim |
| image? | gömme medyası nesnesi | Ana görsel |
| video? | gömme medyası nesnesi | Video medyası (yalnızca bağlantı önizlemeleri) |
| audio? | gömme medyası nesnesi | Ses medyası (yalnızca bağlantı önizlemeleri) |
| footer? | gömme alt bilgisi nesnesi | Gömme alt bilgisi |
| fields? | array[gömme alanı nesnesi] | Gömme alanları |
| html? | string | Temizlenmiş oEmbed işaretlemesi (yalnızca bağlantı önizlemeleri) |
| children? | array[gömme nesnesi] | İç içe bağlantı önizleme gömmeleri |
İsteğe bağlı her alan, değeri yoksa yanıtta yer almaz.
Örnek¶
{
"type": "rich",
"title": "Release 2.4.0",
"description": "Voice reconnects are now instant.",
"url": "https://example.com/releases/2.4.0",
"color": 5793266,
"footer": {"text": "example.com"},
"fields": [{"name": "Platform", "value": "Desktop", "inline": true}]
}
Gömme türleri¶
| Değer | Açıklama |
|---|---|
| rich | Bir bot, kullanıcı veya webhook tarafından sağlanan zengin gömme |
| link | Genel bir bağlantı önizlemesi; henüz çözümlenmemiş bir önizlemenin türü de budur |
| image | Bir bağlantıdan çözümlenen görsel önizlemesi |
| video | Bir bağlantıdan çözümlenen video önizlemesi |
| gifv | Döngüyle oynayan hareketli video önizlemesi (örneğin bir KLIPY GIF bağlantısı) |
| article | Ansiklopedi makalesi önizlemesi |
| social | Sosyal ağ gönderisi önizlemesi |
Gömme yazarı nesnesi¶
| Alan | Tür | Açıklama |
|---|---|---|
| name | string | Yazar adı |
| url? | string | Yazar bağlantısı |
| icon_url? | string | Yazar simgesi URL'si |
Gömme medyası nesnesi¶
| Alan | Tür | Açıklama |
|---|---|---|
| url | string | Medya URL'si |
| proxy_url | string | Her zaman url ile aynıdır |
| width? | integer | Piksel genişliği |
| height? | integer | Piksel yüksekliği |
| duration? | integer | Saniye cinsinden süre |
| description? | string | Medya açıklaması |
| content_type? | string | Medya türü |
| placeholder? | string | Kodlanmış medya yer tutucusu |
| flags? | integer | Ek bayraklarından CONTAINS_EXPLICIT_MEDIA ve IS_ANIMATED kullanan medya bayrakları |
Gömme alt bilgisi nesnesi¶
| Alan | Tür | Açıklama |
|---|---|---|
| text | string | Alt bilgi metni |
| icon_url? | string | Alt bilgi simgesi URL'si |
Gömme alanı nesnesi¶
| Alan | Tür | Açıklama |
|---|---|---|
| name | string | Alan adı |
| value | string | Alan değeri |
| inline | boolean | Alanın satır içi gösterilip gösterilemeyeceği |
Gömme sağlayıcısı nesnesi¶
| Alan | Tür | Açıklama |
|---|---|---|
| name | string | Sağlayıcı adı |
| url? | string | Sağlayıcı URL'si |
İzin verilen bahsetmeler nesnesi¶
İzin verilen bahsetmeler nesnesi, mesaj metninde yazılan bahsetmelerden hangilerinin birine bildirim göndereceğini seçer. Bahsetmeler yine gösterilir ve mesajda saklanır; yalnızca bildirimler filtrelenir.
| Alan | Tür | Açıklama |
|---|---|---|
| parse? | array[string] | Bildirim gönderen bahsetme kategorileri: users, roles, everyone |
| users? | array[snowflake] | Bildirim almasına izin verilen kullanıcı kimlikleri (parse: ["users"] yerine kullanılır) |
| roles? | array[snowflake] | Bildirim almasına izin verilen rol kimlikleri (parse: ["roles"] yerine kullanılır) |
| replied_user? | boolean | Yanıtlanan mesajın yazarının bildirim alıp almayacağı (varsayılan true) |
Nesne verilmediğinde her bahsetme bildirim gönderir. Nesne verildiğinde users veya roles verilmemişse parse varsayılan olarak üç kategorinin hepsidir; bir kategori ancak parse onu adlandırıyorsa veya açık kimlik listesi o kimliğe izin veriyorsa bildirim gönderir. Boş nesne {}, yanıt bildirimi dahil tüm bildirimleri bastırır. Boş olmayan bir parse, boş olmayan bir users veya roles listesiyle birlikte verilirse istek 400 PARSE_AND_USERS_OR_ROLES_CANNOT_BE_USED_TOGETHER ile reddedilir.
Bir yanıt (bire bir DM'ler dışında), replied_user false olmadıkça veya nesne {} olmadıkça yanıtlanan mesajın yazarını mesajın mentions listesine ekler ve ona bildirim gönderir. Kendi mesajınızı yanıtlamak size bildirim göndermez.
Bu nesneden bağımsız olarak @everyone ve @here, yalnızca gönderen bir sunucu kanalında MENTION_EVERYONE iznine sahipse bildirim gönderir; bir rol bahsetmesi ise rolün üyelerine yalnızca rol bahsedilebilir durumdaysa veya gönderen MENTION_EVERYONE iznine sahipse bildirim gönderir.
Zengin gömme girdisi nesnesi¶
Bir bot veya kullanıcının Mesaj oluştur isteğinde embeds içinde verdiği biçim. TEBHOS verilen her gömmeyi rich türüyle saklar.
| Alan | Tür | Açıklama |
|---|---|---|
| url? | string | Gömmenin hedef URL'si, http veya https |
| title? | string | Gömme başlığı, en fazla 256 karakter |
| description? | string | Gömme açıklaması, en fazla 4.096 karakter |
| color? | integer | 24 bitlik RGB tamsayısı olarak gömme rengi, 0 ile 16777215 (0xFFFFFF) arası |
| timestamp? | ISO8601 zaman damgası veya integer | Gömme zaman damgası; ISO 8601 string'i ya da Unix döneminden bu yana milisaniye olarak |
| author? | object | {name, url?, icon_url?}. name en fazla 256 karakterdir. name eksik veya boşsa atılır |
| image? | object | {url, description?}. url eksik veya boşsa atılır. url, attachment://{filename} olabilir; bkz. Eklerden gömme görselleri |
| thumbnail? | object | {url, description?}. url eksik veya boşsa atılır. url, attachment://{filename} olabilir |
| footer? | object | {text, icon_url?}. text en fazla 2.048 karakterdir. text eksik veya boşsa atılır |
| fields? | array[object] | En fazla 25 {name, value, inline?} girdisi. name 1-256, value 0-1.024 karakterdir |
Her URL (url, author.url, author.icon_url, image.url, thumbnail.url, footer.icon_url) http veya https kullanmalıdır. image.url ve thumbnail.url bunun yerine attachment://{filename} olabilir.
Gömme sınırları¶
| Sınır | Değer | Aşıldığında |
|---|---|---|
| Mesaj başına verilen gömme | 10 | 400 INVALID_FORM_BODY, embeds yolunda TOO_MANY_EMBEDS hata kodu |
| Verilen tüm gömmelerdeki toplam karakter | 6.000 | 400 INVALID_FORM_BODY, embeds yolunda EMBEDS_EXCEED_MAX_CHARACTERS hata kodu |
| Başlık | 256 karakter | Şema ihlali, aşağıya bakın |
| Açıklama | 4.096 karakter | Şema ihlali |
| Gömme başına alan | 25 | Şema ihlali |
| Alan adı / değeri | 1-256 / 0-1.024 karakter | Şema ihlali |
| Alt bilgi metni | 2.048 karakter | Şema ihlali |
| Yazar adı | 256 karakter | Şema ihlali |
| Renk | 0 ile 16777215 arası | Şema ihlali |
| İçerikten çözümlenen bağlantı önizlemeleri | 3 URL | Sonraki URL'ler önizleme almaz |
6.000 karakterlik toplam, verilen her gömmenin title, description, footer.text, author.name alanlarını ve her alanın name ile value değerlerini sayar.
Verilen gömmeler önce gelir; içerikteki URL'lerin bağlantı önizlemeleri bunların ardından toplam 10 gömmeye kadar eklenir, fazlası atılır.
Şema ihlalinin nasıl bildirildiği gövdeye bağlıdır:
- JSON gövde:
message_datayolundaINVALID_MESSAGE_DATAkoduyla tek bir hata içeren 400INVALID_FORM_BODY. Yanıt hangi alanın başarısız olduğunu söylemez. - Multipart gövde (
payload_json): Başarısız her alan için bir hata içeren 400INVALID_FORM_BODY; örneğinembeds.0.titleyolundaSTRING_LENGTH_INVALIDkodu.
Aynı sınırlar Mesajı değiştir ve Webhook'u çalıştır için de geçerlidir.
Eklerden gömme görselleri¶
Bir gömmenin image.url veya thumbnail.url değeri, Mesaj oluştur ve Mesajı değiştir isteklerinde aynı mesajla gönderilen bir dosyaya attachment://{filename} biçiminde işaret edebilir. Referans, mesaj saklanırken çözümlenir:
- URL, ekin dosya URL'siyle değiştirilir; ekin genişliği, yüksekliği, içerik türü ve yer tutucusu gömme medyasına kopyalanır;
- referans verilen ek, mesajın
attachmentslistesinden çıkarılır; böylece dosya yalnızca gömmenin içinde görünür.
{filename}, ekin dosya adıdır. TEBHOS dosya adlarını, güvenli olmayan karakterleri _ ile değiştirerek saklar (örneğin my photo.png, my_photo.png olur); iki yazım da eşleşir. Yalnızca görsel dosyalara (png, jpg, jpeg, webp, gif) referans verilebilir. Aşağıdaki durumlarda istek, hiçbir şey saklanmadan 400 INVALID_FORM_BODY ile başarısız olur:
errors[].code |
Koşul |
|---|---|
CANNOT_REFERENCE_ATTACHMENTS_WITHOUT_ATTACHMENTS |
Mesaj hiç ek taşımıyor |
REFERENCED_ATTACHMENT_NOT_FOUND |
Mesajın hiçbir eki bu dosya adına sahip değil |
ATTACHMENT_MUST_BE_IMAGE |
Referans verilen dosya bir görsel değil |
Ek yüklemeleri¶
Bir mesaj, önceden yüklenmiş dosyalara referans verir. Akış şöyledir:
{"attachments": [{"id", "filename", "file_size", "content_type?"}]}gövdesiyle (1-10 girdi)POST /channels/{channel_id}/attachments. Her sonuçtaupload_filename(yükleme anahtarı) veupload_modebulunur. En fazla 10 MiB olan bir dosyaupload_mode: "singlepart"ve tek birupload_url(300 saniye geçerli, önceden imzalanmış birPUTURL'si) alır; daha büyük bir dosya iseupload_id,part_sizeve parça başına yükleme URL'lerinden oluşan birpartslistesiyle birlikteupload_mode: "multipart"alır.- Her dosyayı kendi
upload_urladresine, çok parçalı bir dosyanın her parçasını ise kendi parça URL'sinePUTile gönderin. - Çok parçalı dosyalar için Ek yüklemelerini tamamla (
POST /channels/{channel_id}/attachments/complete) çağrısını yapın. - Mesajı, yükleme anahtarlarını
attachment_idsiçinde (veya kanal kapsamlı yoldaattachments[].upload_filenameiçinde) vererek gönderin.
Bir mesaj dosyalarını doğrudan multipart/form-data olarak da taşıyabilir; bkz. Çok parçalı gövde.
Yükleme, bir sunucu kanalında SEND_MESSAGES ve ATTACH_FILES izinlerini gerektirir. Bot token'ları kabul edilir. Dosya başına üst sınır 10 MiB, TEBHOS Pro ile 200 MiB veya sunucunun takviye sınırıdır (1. seviyede 50 MiB, 2. seviyede 100 MiB); hangisi büyükse o geçerlidir. Yol, her kullanıcı ve kanal için 10 saniyede 10 isteğe izin verir (channel:attachment:upload). Yüklemeler sayfası yükleme yollarını ayrıntılı olarak anlatır.
Kanal mesajlarını listele¶
GET /channels/{channel_id}/messages
En yeniden eskiye doğru bir mesaj nesneleri dizisi döndürür. VIEW_CHANNEL gerektirir.
Sorgu parametreleri¶
| Alan | Tür | Açıklama |
|---|---|---|
| limit? | integer | Döndürülecek mesaj sayısı (en fazla 100, varsayılan 50) |
| before? | snowflake | Bu mesaj kimliğinden önceki mesajları döndürür |
| after? | snowflake | Bu mesaj kimliğinden sonraki mesajları döndürür |
| around? | snowflake | Bu mesaj kimliğini merkez alan bir pencere döndürür; before ve after değerlerini geçersiz kılar. limit 50 iken pencerede 25 daha yeni mesaj, hedef mesaj ve 24 daha eski mesaj bulunur |
before ve after birlikte kullanılabilir. Bazı mesajlar çağıranın mesaj geçmişi kesme noktasının dışında kalıyorsa bir sayfa limit değerinden az mesaj içerebilir. Kesme noktası olmayan bir sunucuda READ_MESSAGE_HISTORY iznine sahip olmayan bir çağıran boş dizi alır.
Hız sınırı¶
channel:messages:read kovasında, her kullanıcı ve kanal için 10 saniyede 100 istek.
curl "https://tebhos.com/api/v1/channels/1501314428688998182/messages?limit=20" \
-H "Authorization: Bot $TEBHOS_BOT_TOKEN"
Birden fazla kanaldan mesaj listele¶
POST /channels/messages/bulk
Tek bir istekte birkaç kanaldan sınırlı mesaj pencereleri döndürür. Yalnızca kullanıcı.
Her kanal, Kanal mesajlarını listele ile tamamen aynı şekilde yetkilendirilir. Erişilemeyen tek bir kanal tüm isteği başarısız kılar.
JSON gövdesi¶
| Alan | Tür | Açıklama |
|---|---|---|
| requests | array[object] | Her biri {channel_id, limit, before?, after?, around?} olan 1-25 girdi. limit 1-25 arasında olmalı ve limit değerlerinin toplamı en fazla 250 olmalıdır |
Yanıt gövdesi¶
| Alan | Tür | Açıklama |
|---|---|---|
| channels | array[object] | İstekteki her girdi için, istek sırasıyla bir {channel_id, messages} girdisi. messages en yeniden eskiye sıralıdır |
Hız sınırı¶
channel:messages:bulk_read kovasında, her kullanıcı için 10 saniyede 20 istek.
Mesajı getir¶
GET /channels/{channel_id}/messages/{message_id}
Tek bir mesaj nesnesi döndürür. VIEW_CHANNEL gerektirir. Kanala ait olmayan, var olmayan veya çağıranın mesaj geçmişi kesme noktasının dışında kalan bir mesaj 404 NOT_FOUND döndürür.
Hız sınırı¶
channel:message:read kovasında, her kullanıcı ve kanal için 10 saniyede 100 istek.
Mesaj oluştur¶
POST /channels/{channel_id}/messages
Bir mesaj oluşturur ve oluşturulan mesaj nesnesiyle birlikte 200 döndürür. Bir Message Create Gateway olayı yayınlar. Gövde JSON'dur veya aynı istekte dosya göndermek için multipart/form-data olur (bkz. Çok parçalı gövde).
Kısıtlamalar¶
- Kanal metin taşıyan bir kanal olmalıdır; bağlantı kanalı 400
BAD_REQUESTdöndürür. - Bir sunucu kanalı
VIEW_CHANNELve SEND_MESSAGES izinlerini gerektirir ve çağıran, zaman aşımında olmayan bir üye olmalıdır. - Kilitli bir kanal her göndereni 403
FORBIDDENile reddeder. - Bir sunucu kanalında ekler ATTACH_FILES, gömmeler ise EMBED_LINKS iznini gerektirir (aksi hâlde 403
FORBIDDEN).EMBED_LINKSolmadan içerikteki bağlantılar önizleme almaz. - Başka bir sunucuya ait özel emoji veya çıkartma, USE_EXTERNAL_EMOJIS veya USE_EXTERNAL_STICKERS iznini ve TEBHOS Pro'yu gerektirir (403
FORBIDDEN). - Bire bir DM'de herhangi bir yöndeki engelleme 403
FORBIDDEN, gizlilik ayarları göndereni reddeden bir alıcı ise 400CANNOT_SEND_MESSAGES_TO_USERdöndürür. - Çağıran BYPASS_SLOWMODE iznine sahip değilse yavaş mod uygulanır; bkz. Yavaş mod.
JSON gövdesi¶
| Alan | Tür | Açıklama |
|---|---|---|
| content? | string | Mesaj metni. Bkz. içerik uzunluğu |
| embeds? | array[zengin gömme girdisi nesnesi] | Zengin gömmeler (bkz. gömme sınırları) |
| attachment_ids? | array[string] | Ek yüklemelerinden gelen yükleme anahtarları, en fazla 10 |
| attachments? | array[object] | Yüklemelerin meta verileri: {upload_filename, width?, height?, description?, title?, duration?, waveform?, flags?}. Bu yolda bir girdinin upload_filename değeri yüklemeyi attachment_ids listesine de ekler; IS_SPOILER içeren bir flags değeri onu spoiler olarak işaretler |
| spoiler_attachment_ids? | array[string] | Spoiler olarak işaretlenecek yükleme anahtarları |
| sticker_ids? | array[snowflake] | En fazla 3 çıkartma kimliği |
| message_reference? | object | {message_id, channel_id?, guild_id?, type?}. Bkz. yanıtlar ve iletmeler |
| reply_to_id? | snowflake | Aynı kanaldaki bir mesaja yanıt referansı için kısaltma |
| allowed_mentions? | izin verilen bahsetmeler nesnesi | Bildirim politikası |
| flags? | integer | Gönderilebilir kümeyle maskelenen mesaj bayrakları |
| tts? | boolean | Metinden konuşmaya isteği. Çağıran SEND_TTS_MESSAGES iznine sahip değilse sunucu kanalında false değerine zorlanır |
| nonce? | string | integer | Çağıranın ürettiği bir nonce: 1-32 karakterlik bir string ya da negatif olmayan bir tamsayı (string'e çevrilir). Oluşturulan mesajda ve Gateway olayında nonce olarak geri yansıtılır. Başka bir değer 400 (message_data / INVALID_MESSAGE_DATA) ile başarısız olur |
| _optimistic_id? | string | nonce için eski ad; nonce yoksa kullanılır |
content, sticker_ids ve bir gömmenin fields alanı null olabilir; bu, alanın verilmemesiyle aynıdır. Bir mesajın görünür içeriği, eki, çıkartması veya gömmesi olmalıdır. Bunların hiçbirini içermeyen bir istek 400 CANNOT_SEND_EMPTY_MESSAGE ile başarısız olur.
Çalışan en küçük gövde:
Yeniden kullanılan nonce ilk sonucu tekrarlar
Bir nonce, gönderen için beş dakika boyunca hatırlanır. Aynı kanalda yeniden kullanılması, yeni bir kopya oluşturmak yerine ilk isteğin oluşturduğu mesajı (200) döndürür. Farklı bir kanalda yeniden kullanılması 404 NOT_FOUND döndürür. Zaman aşımından sonra gönderimi yeniden deneyen bir istemci aynı nonce'u kullanmalıdır.
Çok parçalı gövde¶
Content-Type: multipart/form-data ile istek şunları taşır:
| Parça | Açıklama |
|---|---|
payload_json |
Yukarıda açıklanan JSON gövdesi, bir dize olarak |
files[n] |
Bir dosya; n 0-9 arasındadır. Eski file ve file{n} adları da kabul edilir |
content, nonce, tts, flags, sticker_ids |
İsteğe bağlı düz alanlar; her biri payload_json içindeki aynı anahtarı geçersiz kılar |
id değeri bir dosyanın sırasına eşit olan bir attachments girdisi, o dosyanın filename, description ve flags değerlerini sağlar (IS_SPOILER spoiler olarak işaretler). Her dosya, yüklenmiş bir dosyayla aynı denetimlerden geçer (izinler, boyut sınırı, engellenen dosya listesi) ve gövdenin tamamı en fazla 100 MiB olabilir. Gömmeler dosyalara attachment://{filename} ile referans verebilir.
curl -X POST https://tebhos.com/api/v1/channels/1501314428688998182/messages \
-H "Authorization: Bot $TEBHOS_BOT_TOKEN" \
-F 'payload_json={"content":"Chart","embeds":[{"title":"Today","image":{"url":"attachment://chart.png"}}],"attachments":[{"id":0,"filename":"chart.png"}]}' \
-F "files[0][email protected]"
İçerik uzunluğu¶
| Gönderen | En fazla karakter |
|---|---|
| TEBHOS Pro'su olmayan kullanıcı | 2.000 |
| TEBHOS Pro'lu kullanıcı | 4.000 |
| Bot | 4.000 |
| Webhook (Webhook'u çalıştır) | 4.000 |
4.000 karakteri aşan içerik doğrulamadan 400 INVALID_FORM_BODY ile geçemez; TEBHOS Pro'su olmayan bir kullanıcıdan gelen ve iki sınır arasında kalan içerik ise 400 BAD_REQUEST ile başarısız olur.
Yanıtlar ve iletmeler¶
Bir yanıt (message_reference.type verilmemiş veya 0, ya da reply_to_id) aynı kanaldaki bir mesajı hedeflemelidir; aksi hâlde istek 400 BAD_REQUEST ile başarısız olur. Oluşturulan mesajın türü REPLY (19) olur ve çözümlenmiş bir referenced_message içerir.
Bir iletme (message_reference.type 1) hem channel_id hem de message_id gerektirir ve içerik, ek veya çıkartma taşımamalıdır (400 BAD_REQUEST). Çağıran kaynak kanalı görüntüleyebilmelidir; var olmayan bir kaynak mesaj 404 döndürür. Oluşturulan mesajın türü DEFAULT olur ve bir message_snapshots girdisi içerir; kaynağın ekleri hedef kanala kopyalanır.
Yavaş mod¶
rate_limit_per_user değeri sıfır olmayan bir sunucu kanalında her üye, aralık başına bir mesaj gönderebilir. Aralık içindeki bir gönderim, tam saniye cinsinden bir Retry-After başlığı ve ondalıklı saniye cinsinden üst düzey bir retry_after üyesiyle birlikte 400 SLOWMODE_RATE_LIMITED (429 değil) döndürür:
{
"error": "400 Bad Request",
"code": "SLOWMODE_RATE_LIMITED",
"message": "...",
"retry_after": 4.2
}
Sahip, yöneticiler ve BYPASS_SLOWMODE iznine sahip üyeler muaftır; tek başına MANAGE_MESSAGES veya MANAGE_CHANNELS izni bir üyeyi muaf kılmaz. Özel kanallarda yavaş mod yoktur.
Yan etkiler¶
İşlem mesajı saklar, referans verilen yüklemeleri bağlar, gönderenin okuma durumunu ilerletir (botlar hariç), kapalı bir DM'i alıcıları için yeniden açar, mesajı arama için dizinler ve kanalı görebilen her oturuma Message Create yayınlar. İçerikteki en fazla 3 bağlantı eşzamansız olarak önizlemelere çözümlenir; SUPPRESS_EMBEDS ayarlanmamışsa her çözümleme bir Message Update yayınlar.
Hız sınırı¶
channel:message:create kovasında, her kullanıcı ve kanal için 10 saniyede 20 istek.
const res = await fetch(
"https://tebhos.com/api/v1/channels/1501314428688998182/messages",
{
method: "POST",
headers: {
Authorization: `Bot ${process.env.TEBHOS_BOT_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({ content: "Build finished" }),
},
);
const message = await res.json();
Mesajı değiştir¶
PATCH /channels/{channel_id}/messages/{message_id}
Bir mesajı değiştirir ve güncellenmiş mesaj nesnesini döndürür. Bir Message Update Gateway olayı yayınlar. Kullanıcı oturumlarını ve bot token'larını kabul eder. Gövde JSON veya multipart/form-data olur (Çok parçalı gövde bölümündeki gibi payload_json ile files[n]).
JSON gövdesi¶
| Alan | Tür | Açıklama |
|---|---|---|
| content? | string | Yeni metin (en fazla 4.000 karakter; TEBHOS Pro olmadan en fazla 2.000). embeds ile birlikte "" metni temizler. İçeriği yalnızca yazar değiştirebilir |
| flags? | integer | Yeni mesaj bayrakları; yalnızca gönderilebilir bitler değişir. Bayrakları yazar veya MANAGE_MESSAGES iznine sahip bir üye değiştirebilir |
| embeds? | array[zengin gömme girdisi nesnesi] | Mesajın verilmiş gömmelerini değiştirir ([] hepsini kaldırır). Yalnızca yazar; sunucu kanalında EMBED_LINKS gerektirir. Bağlantı önizlemeleri korunur. Görseller attachment://{filename} kullanabilir |
| attachments? | array[object] | Yeni ek listesinin tamamı; bkz. Ekleri düzenleme. Ekleri değiştirmeden bırakmak için bu alanı göndermeyin |
En az bir alan zorunludur; boş bir content yanında boş olmayan embeds, attachments veya flags gerektirir (aksi hâlde 400 CANNOT_SEND_EMPTY_MESSAGE). Yazar olmayan ve content veya embeds gönderen bir çağıran 403 FORBIDDEN alır.
İçerik değişikliği edited_timestamp değerini ilerletir, bahsetmeleri yeniden hesaplar, bağlantı önizlemelerini yeni içerikteki bağlantıların önizlemeleriyle değiştirir ve mesajı arama için yeniden dizinler. Yalnızca bayrakları veya yalnızca ekleri değiştiren bir istek mesajı düzenlenmiş olarak işaretlemez.
Ekleri düzenleme¶
attachments listesinin her girdisi şunlardan biridir:
| Girdi | Etki |
|---|---|
{id, title?, description?} |
Mevcut bir eki korur. id, ekin kimliği veya güncel listedeki konumudur. title ve description saklanan değerlerin yerine geçer (null onları temizler) |
{upload_filename, filename?, description?, title?, width?, height?, duration?, waveform?, flags?} |
Çağıranın bu kanalda Ek yüklemeleri ile yüklediği bir dosyayı ekler. Sunucu kanalında ATTACH_FILES gerektirir; dosya engellenen dosya denetiminden ve boyut sınırından geçer |
Listelenmeyen mevcut bir ek mesajdan kaldırılır; [] hepsini kaldırır. En fazla 10 girdi olabilir. Çok parçalı bir istekte id değeri bir dosya sırasına eşit olan girdiler yeni ek olur; dosya gönderildiğinde yeni liste, listelenen mevcut ekler ile dosyalardan oluşur. Eşleşen bir dosyası olmadan bir filename adlandıran girdi 400 INVALID_FORM_BODY (errors[].code NO_FILE_FOR_ATTACHMENT_METADATA) ile başarısız olur.
Yazar olmayan bir üye attachments alanını yalnızca bir sunucu kanalında ve MANAGE_MESSAGES iznine sahipse gönderebilir: ekleri kaldırabilir veya title/description değerlerini değiştirebilir; başka herhangi bir anahtar 400 INVALID_FORM_BODY (errors[].code CANNOT_EDIT_ATTACHMENT_METADATA) ile başarısız olur. İzin olmadan istek 403 CANNOT_EDIT_OTHER_USER_MESSAGE ile başarısız olur.
| Durum | Koşul |
|---|---|
400 INVALID_FORM_BODY (errors[].code FILE_NOT_FOUND) |
Bir upload_filename bilinmiyor, zaten kullanılmış veya başka bir hesaba ya da kanala ait |
400 FILE_SIZE_TOO_LARGE |
Yeni bir dosya çağıranın boyut sınırını aşıyor |
403 CONTENT_BLOCKED |
Yeni bir dosya engellenen dosya listesinde |
403 MISSING_PERMISSIONS |
ATTACH_FILES olmadan yeni dosyalar |
TEBHOS'ta desteklenmez
allowed_mentions bu yol üzerinden değiştirilemez.
Hız sınırı¶
channel:message:update kovasında, her kullanıcı ve kanal için 10 saniyede 20 istek.
Mesajı sil¶
DELETE /channels/{channel_id}/messages/{message_id}
Tek bir mesajı siler ve bir message dizesi içeren JSON gövdesiyle 200 döndürür. Bir Message Delete Gateway olayı yayınlar.
Yazar kendi mesajını silebilir. Başka bir kullanıcının mesajını silmek MANAGE_MESSAGES gerektirir (aksi hâlde 403 FORBIDDEN).
Yan etkiler¶
Mesaj kaldırılır ve aramadan silinir. Message Delete; kanal kimliğini, mesaj kimliğini, silinen içeriği ve yazar kimliğini taşır. Mesaj sabitlenmişse kanalın değişmemiş son sabitleme zaman damgasıyla birlikte Channel Pins Update de yayınlanır.
Hız sınırı¶
channel:message:delete kovasında, her kullanıcı ve kanal için 10 saniyede 20 istek.
Mesaj ekini sil¶
DELETE /channels/{channel_id}/messages/{message_id}/attachments/{attachment_id}
Çağıranın kendi mesajından bir eki kaldırır ve 204 döndürür. Kullanıcı oturumlarını ve bot token'larını kabul eder. Bu yolu yalnızca yazar kullanabilir; MANAGE_MESSAGES yeterli değildir (403 MISSING_PERMISSIONS). Çağıran kanalı görüntüleyebilmelidir.
attachment_id, mesaj nesnesindeki ekin id değeridir.
Ek mesajın son ekiyse ve mesajın içeriği, gömmesi veya çıkartması yoksa mesajın tamamı silinir ve Message Delete yayınlanır. Aksi hâlde dosya depolamadan silinir (ve CDN önbellek temizliği için kuyruğa alınır), ek mesajdan kaldırılır, edited_timestamp ilerler ve Message Update yayınlanır.
| Durum | Koşul |
|---|---|
| 204 | Ek (veya mesajın tamamı) silindi |
403 MISSING_PERMISSIONS |
Çağıran yazar değil |
404 UNKNOWN_MESSAGE |
Mesaj bu kanalda yok, hiç eki yok veya bu kimliğe sahip bir eki yok |
| 404 / 403 | Çağıran kanala erişemiyor (bkz. Kanal çözümleme) |
DELETE /messages/{message_id}/attachments/{attachment_id}, aynı işlemin eski bir TEBHOS biçimidir. Kanalı mesajdan çözümler ve güncellenmiş mesaj nesnesiyle 200, mesajın tamamı silindiğinde ise bir message dizesiyle 200 yanıtı verir.
Hız sınırı¶
channel:message:delete kovasında, her kullanıcı ve kanal için 10 saniyede 20 istek.
Mesajları toplu sil¶
POST /channels/{channel_id}/messages/bulk-delete
Tek bir kanaldaki 1-100 mesajı siler ve 204 döndürür. MANAGE_MESSAGES gerektirir. POST /channels/{channel_id}/messages/bulk_delete takma adı aynı şekilde davranır.
JSON gövdesi¶
| Alan | Tür | Açıklama |
|---|---|---|
| message_ids? | array[snowflake] | Silinecek mesaj kimlikleri (1-100) |
| messages? | array[snowflake] | message_ids için takma ad; message_ids yoksa kullanılır |
Boş bir liste veya 100'den fazla kimlik 400 BAD_REQUEST ile başarısız olur. Geçerli olmayan veya kanalda hiçbir mesajı adlandırmayan kimlikler atlanır. Her yaştaki mesaj seçilebilir.
Yan etkiler¶
Eşleşen her mesaj kaldırılır ve aramadan silinir. Kanalı görebilen oturumlara, silinen kimlikleri içeren tek bir Message Delete Bulk yayınlanır.
Hız sınırı¶
channel:message:bulk_delete kovasında, her kullanıcı ve kanal için 10 saniyede 10 istek.
Kendi mesajlarını toplu sil¶
POST /channels/{channel_id}/messages/bulk-delete-mine
Çağıranın tek bir kanalda yazdığı her mesajı siler ve 202 döndürür. VIEW_CHANNEL ve sudo kipi gerektirir: bir kullanıcı oturumu son birkaç dakika içinde POST /auth/sudo ile bir sudo yetkisi almış olmalıdır; aksi hâlde istek 403 SUDO_MODE_REQUIRED ile başarısız olur. Bot token'ı sudo kipini her zaman karşılar.
Silme işlemi istek içinde çalışır; dolayısıyla yanıt geldiğinde mesajlar silinmiş olur. Tek bir Message Delete Bulk yayınlanır. Mesajları toplu sil ile aynı kova uygulanır.
Geri yükleme yoktur
Çağıranın kanalda yazdığı her mesaj, yaş sınırı olmadan silinir.
Aynı sudo gereksinimine sahip iki geniş varyant vardır: POST /users/@me/guilds/{guild_id}/messages/bulk-delete-mine, çağıranın bir sunucunun her kanalındaki mesajlarını siler (kullanıcı ve sunucu başına 10 saniyede 10 istek); POST /users/@me/messages/bulk-delete-mine ise çağıranın DM'leri, grup DM'leri ve sunucuları genelinde siler (yalnızca kullanıcı, kullanıcı başına 30 dakikada 5 istek; gövde include_dms, include_group_dms, include_guilds (her birinin varsayılanı true) ile ISO8601 zaman damgası olarak start_date/end_date kabul eder).
Kişisel notları temizle¶
POST /channels/{channel_id}/messages/purge
Çağıranın kişisel notlar kanalındaki her mesajı siler ve {"deleted_count": N} döndürür. channel_id, çağıranın kullanıcı kimliğine eşit olmalıdır; başka herhangi bir kanal 400 BAD_REQUEST döndürür. Bir şey silindiyse Message Delete Bulk yayınlar.
Hız sınırı¶
channel:message:purge kovasında, her kullanıcı ve kanal için dakikada 2 istek.
Sabitlenmiş mesajları listele¶
GET /channels/{channel_id}/pins
En son sabitlenen başta olacak şekilde sabitlenmiş mesajların bir sayfasını döndürür. VIEW_CHANNEL gerektirir. GET /channels/{channel_id}/messages/pins takma adı aynı şekilde davranır.
READ_MESSAGE_HISTORY iznine sahip olmayan bir sunucu çağıranı, yalnızca mesajı geçmiş kesme noktasında veya sonrasında olan sabitlemeleri görür.
Sorgu parametreleri¶
| Alan | Tür | Açıklama |
|---|---|---|
| limit? | integer | Döndürülecek sabitleme sayısı (en fazla 50, varsayılan 50) |
| before? | snowflake | Önceki sayfanın son sabitlenmiş mesajının kimliği |
Yanıt gövdesi¶
| Alan | Tür | Açıklama |
|---|---|---|
| items | array[mesaj nesnesi] | En son sabitlenen başta olacak şekilde sabitlenmiş mesajlar |
| has_more | boolean | Başka bir sayfanın olabileceği |
Hız sınırı¶
channel:pins kovasında, her kullanıcı ve kanal için 10 saniyede 20 istek.
Mesajı sabitle¶
PUT /channels/{channel_id}/pins/{message_id}
Bir DEFAULT veya REPLY mesajını sabitler ve 204 döndürür. Sunucu kanalında PIN_MESSAGES gerektirir; özel kanalda her alıcı sabitleyebilir. Bir sistem mesajı 400 BAD_REQUEST, kanalda olmayan bir mesaj ise 404 döndürür.
Yan etkiler¶
Mesajın sabitlenme zamanı ve kanalın son sabitleme zaman damgası şimdiye ayarlanır ve sabitlenen mesaja referans veren bir CHANNEL_PINNED_MESSAGE (6) sistem mesajı oluşturulur. TEBHOS, mesaj için Message Update (pinned: true), channel_id, message_id, guild_id ve last_pin_timestamp ile birlikte Channel Pins Update ve sistem mesajı için Message Create yayınlar.
Not
Zaten sabitlenmiş bir mesajı sabitlemek, sabitlenme zamanını yeniler ve bir sistem mesajı daha oluşturur.
Hız sınırı¶
channel:pins kovasında, her kullanıcı ve kanal için 10 saniyede 20 istek.
Mesajın sabitlemesini kaldır¶
DELETE /channels/{channel_id}/pins/{message_id}
Bir mesajın sabitlemesini kaldırır ve 204 döndürür. Yetkilendirme Mesajı sabitle ile aynıdır. Message Update (pinned: false) ve kanalın değişmemiş son sabitleme zaman damgasıyla birlikte Channel Pins Update yayınlar. Sistem mesajı oluşturulmaz ve özgün CHANNEL_PINNED_MESSAGE yerinde kalır. İşlem idempotenttir. Sabitlemeyle aynı kovayı kullanır.
Sabitlemeleri onayla¶
POST /channels/{channel_id}/pins/ack
Kanalın güncel son sabitleme zaman damgasını çağıranın okuma durumuna kaydeder ve 204 döndürür. Yalnızca kullanıcı. İsteğin gövdesi yoktur.
Kanalda hiç sabitleme olmamışsa hiçbir şey yazılmaz ve hiçbir şey yayınlanmaz. Aksi hâlde TEBHOS kanalın son sabitleme zaman damgasını yazar ve çağıranın kendi oturumlarına channel_id ile last_pin_timestamp içeren Channel Pins ACK yayınlar.
Hız sınırı¶
channel:pins kovasında, her kullanıcı ve kanal için 10 saniyede 20 istek.
Tepki emojisi yol değeri¶
emoji yol değeri URI ile kodlanır ve şu biçimlerden birini alır:
| Biçim | Örnek | Anlam |
|---|---|---|
| Unicode emoji | %F0%9F%91%8D |
Standart bir emoji |
name:id |
party_parrot:1501314428688991234 |
Özel bir emoji |
a:name:id |
a:party_parrot:1501314428688991234 |
Hareketli özel bir emoji |
<:name:id> / <a:name:id> |
%3C%3Aparty_parrot%3A1501314428688991234%3E |
Mesaj belirteci biçiminde özel bir emoji |
Tüm özel biçimler saklanan aynı tepkiyi adresler. Ekleme, kendi tepkini kaldırma ve kullanıcının tepkisini kaldırma yolları, isteğe bağlı bir session_id sorgu parametresi (1-64 karakter) kabul eder; bu değer Gateway olayında geri yansıtılır, böylece isteği başlatan oturum kendi yankısını atlayabilir.
Tepki veren kullanıcıları listele¶
GET /channels/{channel_id}/messages/{message_id}/reactions/{emoji}/users
Bir tepkiyi ekleyen kullanıcıların bir sayfasını döndürür. VIEW_CHANNEL gerektirir; çağıranın geçmiş kesme noktasının dışındaki bir mesaj 404 döndürür.
Sorgu parametreleri¶
| Alan | Tür | Açıklama |
|---|---|---|
| limit? | integer | Döndürülecek kullanıcı sayısı (1-100, varsayılan 100) |
| after? | snowflake | Kimliği bu kullanıcı kimliğinden sonra gelen kullanıcıları döndürür |
Yanıt gövdesi¶
| Alan | Tür | Açıklama |
|---|---|---|
| items | array[object] | Artan kullanıcı kimliği sırasıyla kullanıcılar; her biri {id, name, image_url} biçimindedir ve image_url avatar hash'idir (yoksa boş dize) |
| has_more | boolean | Başka bir sayfanın olup olmadığı |
| next_after | ?snowflake | Sonraki sayfa için imleç (son kullanıcı kimliği) veya null |
Hız sınırı¶
channel:reactions kovasında, her kullanıcı ve kanal için 10 saniyede 30 istek.
Tepki veren kullanıcıları sayfasız listele¶
GET /channels/{channel_id}/messages/{message_id}/reactions/{emoji}
{emoji, users} döndürür; burada emoji bir emoji nesnesi, users ise tepkiyi ekleyen her kullanıcıdır ve aynı {id, name, image_url} biçimindedir. Yetkilendirme ve kova Tepki veren kullanıcıları listele ile aynıdır.
Kendi tepkini ekle¶
PUT /channels/{channel_id}/messages/{message_id}/reactions/{emoji}/@me
Çağıranın tepkisini ekler ve 204 döndürür. Message Reaction Add yayınlar.
- Mesaj kanala ait olmalıdır (aksi hâlde 404) ve çağıran onu geçmiş kesme noktası kapsamında görüntüleyebilmelidir.
- Zaman aşımındaki bir üye tepki veremez (403
FORBIDDEN). - Bir sunucu kanalında yeni bir emoji grubu oluşturmak ADD_REACTIONS gerektirir; mevcut bir gruba katılmak gerektirmez.
- Başka bir sunucuya ait özel emojiyle yeni bir grup oluşturmak USE_EXTERNAL_EMOJIS iznini ve TEBHOS Pro'yu gerektirir (403
FORBIDDEN).
İşlem idempotenttir ve her başarılı çağrı olayı yayınlar. Message Reaction Add; channel_id, message_id, user_id, emoji ve verildiyse session_id taşır.
Hız sınırı¶
channel:reactions kovasında, her kullanıcı ve kanal için 10 saniyede 30 istek.
Kendi tepkini kaldır¶
DELETE /channels/{channel_id}/messages/{message_id}/reactions/{emoji}/@me
Çağıranın tepkisini kaldırır ve 204 döndürür. Tepki var olsun ya da olmasın Message Reaction Remove yayınlar. Eklemeyle aynı kovayı kullanır.
Başka bir kullanıcının tepkisini kaldır¶
DELETE /channels/{channel_id}/messages/{message_id}/reactions/{emoji}/{user_id}
Bir kullanıcının tepkisini kaldırır ve 204 döndürür. user_id çağıranın kendisi olsa bile MANAGE_MESSAGES gerektirir. Hedef kullanıcı kimliğiyle birlikte Message Reaction Remove yayınlar. Eklemeyle aynı kovayı kullanır.
Bir emojinin tüm tepkilerini kaldır¶
DELETE /channels/{channel_id}/messages/{message_id}/reactions/{emoji}
Tek bir emojiye ait her tepkiyi kaldırır ve 204 döndürür. MANAGE_MESSAGES gerektirir. Tek bir Message Reaction Remove Emoji yayınlar. Eklemeyle aynı kovayı kullanır.
Tüm tepkileri kaldır¶
DELETE /channels/{channel_id}/messages/{message_id}/reactions
Bir mesajdaki her tepkiyi kaldırır ve 204 döndürür. MANAGE_MESSAGES gerektirir. Tek bir Message Reaction Remove All yayınlar. Eklemeyle aynı kovayı kullanır.
Yazıyor göstergesi¶
POST /channels/{channel_id}/typing
Yazma etkinliğini yayınlar ve 204 döndürür. Sunucu kanalında VIEW_CHANNEL ve SEND_MESSAGES gerektirir ve çağıran zaman aşımında olmamalıdır; özel kanalda yalnızca alıcı erişimi yeterlidir.
channel_id, user_id ve saniye cinsinden bir Unix timestamp ile birlikte Typing Start yayınlar. Hiçbir şey saklanmaz; göstergenin süresini istemciler kendileri doldurur.
Hız sınırı¶
channel:typing kovasında, her kullanıcı ve kanal için 10 saniyede 20 istek.
Mesajı onayla¶
POST /channels/{channel_id}/messages/{message_id}/ack
Çağıranın kanaldaki okuma durumunu message_id değerine kadar ilerletir. Yalnızca kullanıcı. TEBHOS ne kanalı ne de mesajı çözümler.
Saklanan bahsetme sayısı 0 değerine sıfırlanır; saklanan eşik değerinin altındaki bir message_id girdiyi değiştirmez. İstek gövdesi yoktur; bahsetme sayısını saklamak veya eşiği geriye taşımak için Okuma durumlarını onayla kullanın.
Yanıt¶
{"read_states": [read state], "read_state_proto": string} ile 200; bkz. Okuma durumu nesnesi. Çağıranın kendi oturumlarına Message ACK yayınlar.
Hız sınırı¶
channel:message:ack kovasında, her kullanıcı ve kanal için 10 saniyede 100 istek.
Kanal okuma durumunu temizle¶
DELETE /channels/{channel_id}/messages/ack
Çağıranın tek bir kanala ait okuma durumu girdisini siler ve 204 döndürür. Yalnızca kullanıcı. Kanal çözümlenmez, işlem idempotenttir ve hiçbir Gateway olayı yayınlanmaz.
Hız sınırı¶
channel:read_state:delete kovasında, her kullanıcı ve kanal için 10 saniyede 40 istek.