Mesajlara yanıt verme¶
TEBHOS'ta desteklenmez
TEBHOS'ta uygulama komutları (eğik çizgi komutları), etkileşim uç noktası, mesaj bileşenleri veya modal pencereler yoktur. Kaydedilecek hiçbir şey ve INTERACTION_CREATE olayı yoktur. Botlar komutları, bu sayfada anlatıldığı gibi sıradan mesajları okuyarak uygular.
Olağan kalıp bir önek komutudur: bot gateway üzerinde MESSAGE_CREATE olayını dinler, mesajın kendi önekiyle (örneğin !) başlayıp başlamadığını denetler ve bir REST çağrısıyla yanıt verir.
Mesajları alma¶
Botun görebildiği bir kanala gönderilen her mesaj bir MESSAGE_CREATE gönderimi (dispatch) olarak gelir. Yük, d alanının en üst düzeyinde bir mesaj nesnesidir. Bir komut işleyicisinin genellikle ihtiyaç duyduğu alanlar:
| Alan | Tür | Açıklama |
|---|---|---|
| id | snowflake | Mesaj kimliği |
| channel_id | snowflake | Mesajın gönderildiği kanal |
| guild_id? | snowflake | Kanalın sunucusu. DM ve grup mesajlarında bulunmaz |
| author | object | Gönderen: id, username, discriminator, global_name, avatar ve bot hesapları için bot: true |
| content | string | Mesajın tam metni. Botlar bunu her zaman alır; istenmesi gereken ayrıcalıklı bir intent yoktur |
| mentions | array | Mesajda bahsedilen kullanıcılar |
| webhook_id? | snowflake | Mesajı bir webhook gönderdiyse bulunur |
| message_reference? | object | Mesaj başka bir mesaja yanıt veriyor veya onu iletiyorsa bulunur |
| member? | object | Sunucu mesajlarında yazarın sunucu üyesi nesnesi |
{
"op": 0,
"t": "MESSAGE_CREATE",
"s": 17,
"d": {
"id": "1290851938027593728",
"channel_id": "1290849012346880000",
"guild_id": "1290848871133052928",
"author": {
"id": "1290845402212401152",
"username": "deniz",
"discriminator": "0042",
"global_name": "Deniz",
"avatar": null,
"flags": 0
},
"type": 0,
"content": "!ping",
"timestamp": "2026-09-23T08:15:02.114Z",
"edited_timestamp": null,
"mentions": [],
"mention_roles": [],
"attachments": [],
"embeds": []
}
}
Düzenlemeler MESSAGE_UPDATE, silmeler ise MESSAGE_DELETE (id, channel_id ve silinen mesajın content ile author_id değerleri) olarak gelir. Bkz. Gateway olayları.
Kendinizi ve diğer botları yok sayın
author.id değerini READY içindeki user.id ile karşılaştırın ve kendi mesajlarınızı atlayın. Botların birbirini gerçekten tetiklemesini istemiyorsanız author.bot değeri true olan mesajları da atlayın; aksi halde iki bot sonsuza dek birbirine yanıt verebilir.
Önek komutunu ayrıştırma¶
const PREFIX = "!";
function parseCommand(message, botUserId) {
if (message.author.id === botUserId || message.author.bot) return null;
const content = message.content.trim();
if (!content.startsWith(PREFIX)) return null;
const [name, ...args] = content.slice(PREFIX.length).split(/\s+/);
return { name: name.toLowerCase(), args };
}
Bahsetmeler mesaj metninde <@user_id> olarak yazılır; bu nedenle bot <@{bot_user_id}> ile başlayan mesajları da komut olarak değerlendirebilir.
Mesaj gönderme¶
POST /channels/{channel_id}/messages
Bot olarak bir mesaj gönderir. O kanalda Kanalı Görüntüle (View Channel) ve Mesaj Gönder (Send Messages) izinlerini gerektirir. Hız sınırı: kanal başına gönderen başına 10 saniyede 20 mesaj; bkz. Hız sınırları.
| Alan | Tür | Açıklama |
|---|---|---|
| content? | string | Mesaj metni; botlar için en fazla 4000 karakter. embeds, ekler veya sticker_ids verilmedikçe zorunludur |
| embeds? | array | En fazla 10 zengin gömme (embed): title, description, url, color, timestamp, author, image, thumbnail, footer, fields. Bağlantı Yerleştir (Embed Links) iznini gerektirir. Bkz. Gömme sınırları |
| message_reference? | object | Mesajı bir yanıt yapar: {"message_id": "..."} |
| allowed_mentions? | object | content içindeki hangi bahsetmelerin kişilere bildirim göndereceğini sınırlar |
| tts? | boolean | Metinden konuşmaya; Sesli Mesaj Gönder (Send TTS Messages) iznini gerektirir |
| sticker_ids? | array | En fazla 3 çıkartma kimliği |
Ekler dahil tam alan listesi Mesajlar sayfasındadır. Yanıt, oluşturulan mesaj nesnesiyle birlikte 200'dür.
curl -X POST https://tebhos.com/api/v1/channels/1290849012346880000/messages \
-H "Authorization: Bot $TEBHOS_BOT_TOKEN" \
-H "Content-Type: application/json" \
-d '{"content": "pong"}'
Bir mesaja yanıt verme¶
Yanıt verdiğiniz mesajın kimliğiyle message_reference ekleyin. Başvurulan mesaj aynı kanalda olmalıdır.
Diğer yararlı çağrılar¶
| İşlem | Uç nokta |
|---|---|
| Çalışırken "Bot yazıyor..." göstergesini gösterme | POST /channels/{channel_id}/typing |
| Botun gönderdiği bir mesajı düzenleme | {"content": "..."} ile PATCH /channels/{channel_id}/messages/{message_id} |
| Bir mesajı silme | DELETE /channels/{channel_id}/messages/{message_id} (başka bir kullanıcının mesajı Mesajları Yönet (Manage Messages) gerektirir) |
| Bir mesaja tepki verme | PUT /channels/{channel_id}/messages/{message_id}/reactions/{emoji}/@me |
| Son mesajları getirme | GET /channels/{channel_id}/messages (Mesaj Geçmişini Oku (Read Message History) gerektirir) |
İzinler¶
Bir bot yalnızca rollerinin izin verdiği yerlerde okuyup yazabilir. Bot bir permissions değeriyle eklendiyse TEBHOS tam olarak bu izinlere sahip bir rol oluşturmuş ve bunu bota vermiştir; sunucu yöneticileri bu rolü veya kanal izin geçersiz kılmalarını istedikleri zaman değiştirebilir. Botun yapmasına izin verilmeyen bir istek 403 ile başarısız olur; hata metnine göre değil, durum koduna göre dallanın. Bkz. İzinler ve Sunucuya bot ekleme.
Eksiksiz örnek¶
Örnekler sayfasında gateway'e bağlanan, READY ve MESSAGE_CREATE olaylarını işleyen ve !ping komutuna pong ile yanıt veren, çalıştırılabilir JavaScript ve Python botları bulunur.