Void bot platformunun tam teknik referansı: kimlik doğrulama, izin kapsamları, REST uç noktaları, gerçek zamanlı gateway, etkileşimler ve webhook’lar. Yeni başlıyorsan önce dostça anlatımlı botlar sayfasına göz at.
Bütün uç noktalar tek bir temel adresin altındadır. Her isteğe bot token’ını Authorization başlığında Bearer olarak eklersin. Token’lar void_app_ ile başlar.
base url
https://api.thevoidhub.com
httpkimlik başlığı
Authorization: Bearer void_app_XXXXXXXXXXXXXXXX
Token ve izin kapsamları
Bir token’ı masaüstü uygulamada Ayarlar > Geliştirici bölümünden bir uygulama oluşturarak alırsın. Token yalnızca BİR KEZ gösterilir, o an kopyala. Uygulamayı oluştururken hangi kapsamların (scope) olacağını seçersin. Bir eylem için hem token kapsamı hem de kurulum izni gerekir.
messages.readBir kanaldaki mesajları okur.
messages.writeMesaj gönderir ve botun kendi mesajlarını düzenler.
messages.manageMesajları siler (moderasyon).
reactions.writeMesajlara tepki ekler.
channels.readSunucu ve kanal bilgisini okur.
channels.manageKanal oluşturur, yeniden adlandırır, siler.
members.readÜyeleri listeler ve okur.
members.manageÜyeleri atar, banlar, susturur.
roles.manageRolleri okur ve üyelere rol verir/alır.
Sunucuya kurulum
Bir bot, bir sunucuda (grupta) işlem yapabilmek için önce o sunucunun yöneticisi tarafından kurulmalıdır. Kurulum, botun o sunucudaki izinlerinin (bir alt kümesinin) verildiği yerdir. Her eylem hem token kapsamını hem de aşağıdaki kurulum izinlerinden ilgili olanı ister.
Her yanıt X-RateLimit-Limit, X-RateLimit-Remaining ve X-RateLimit-Reset (saniye) başlıklarını taşır. HTTP 429 durumunda ayrıca Retry-After (saniye) gelir. Kovalar uygulama başına ve yetenek başına ayrıdır.
Botun KENDİ mesajını düzenler. content, components ya da ikisini birden gönder (en az biri). Bir alanı atlarsan değişmeden kalır; components: [] butonları temizler. Başarıda 204. Bot kendi mesajı değilse 403, mesaj silinmişse 410.
Botun kendi mesajındaki butonları ve menüleri değiştirir. components bir buton/menü nesneleri dizisidir; boş dizi ([]) hepsini temizler. Kullanıcı bir butona ya da menüye dokununca gateway üzerinden interaction.create (kind: component) gelir.
jsonistek gövdesi
{
"components": []
}
Sunucular ve kanallar
GET/bot/v1/groups/{groupId}
gerekli sunucuya kurulu olmak
Sunucu bilgisini ve herkese açık kanallarını döner.
Slash komutlarını kaydeder (hepsini değiştirir, en fazla 25). Bir kullanıcı, botun kurulu olduğu bir kanalda /ping yazınca bota gateway üzerinden interaction.create gelir.
jsonistek gövdesi
{
"commands": [
{ "name": "ping", "description": "Check the bot is alive" }
]
}
Gerçek zamanlı gateway
Olayları anlık almak için gateway’e bir WebSocket bağlantısı açarsın. Bot token’ını ya Bearer başlığıyla ya da bearer.<token> WebSocket alt protokolüyle gönder. Bağlanınca bir hello mesajı alırsın, ardından olaylar akmaya başlar. Olaylar yalnızca botun kurulu olduğu sunuculara ve görebildiği kanallara göredir.
# 1) Bearer header on the upgrade request
Authorization: Bearer void_app_YOUR_TOKEN
# 2) or the WebSocket subprotocol
Sec-WebSocket-Protocol: bearer.void_app_YOUR_TOKEN
interaction.createSlash komut, buton/menü ya da modal gönderimi (kind: command | component | modal_submit).
! Şu an devam/tekrar (resume/replay) YOK
Bağlantı düşerse, kopukluk sırasındaki olaylar kaçırılır. Tekrar bağlan ve kaldığın yerden devam et. Kritik durumu REST ile de tarayarak doğrula.
Etkileşimler
Bir kullanıcı slash komut çalıştırdığında ya da bir butona/menüye dokunduğunda, bot gateway üzerinden bir interactionId taşıyan interaction.create alır. Bot buna REST API ile yanıt verir: kanala bir mesaj gönderir ve/veya bir modal açar. Bot çevrimdışıysa kullanıcıya "bu bot yanıt vermiyor" denir.
Bot gerektirmeyen en basit yol. Bir sunucu yöneticisi Sunucu Ayarları > Webhooks bölümünü açar, bir metin kanalına bağlı bir webhook oluşturur ve adresini kopyalar (https://api.thevoidhub.com/hooks/{id}/{token} gibi görünür). Herhangi bir dış sistem o adrese { "text": "..." } gönderince kanala mesaj düşer. Token başlığı yok, kurulum yok; gizli bilgi adresin içindedir.