Ana içeriğe geç

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.

{
  "content": "pong",
  "message_reference": { "message_id": "1290851938027593728" }
}

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.