Greatking
Admin
Discord
greatking
- Katılım
- 12 Yıl 9 Ay 27 Gün
- Mesajlar
- 494
- Tepkime puanı
- 416
- Puanları
- 63
- Yaş
- 38
- Cinsiyetiniz
- Bay
- Şube
- Bursa
Discord bot geliştirirken komutları sadece dosyalara bölmek yeterli olmaz; slash command, button, select menu ve modal akışının en baştan planlanması gerekir. Bu rehber, küçük ve orta ölçekli botlarda interaction tabanlı yapıyı daha okunabilir, genişletilebilir ve kullanıcı dostu kurmak için temel bir çerçeve sunar.
Discord tarafında slash command çalıştırmak, bir butona basmak, dropdown seçmek veya modal göndermek aynı ana fikre dayanır: Kullanıcı bir etkileşim başlatır, uygulama da buna uygun bir yanıt döner. Bu yüzden modern botlarda komut sistemi ile arayüz bileşenlerini ayrı dünyalar gibi değil, aynı akışın parçaları gibi düşünmek daha sağlıklıdır.
Küçük botlarda bile her şeyi tek dosyada toplamak ileride bakım zorluğu çıkarır. Daha net bir yapı için komutun amacı, interaction yanıtı ve yardımcı servisler ayrı tutulabilir.
Bu yapı zorunlu bir standart değil, okunabilirlik için pratik bir ayrımdır. Önemli olan buton, modal ve select işlemlerinin rastgele dosyalara dağılmaması ve hangi interaction'ın hangi komut akışına bağlı olduğunun anlaşılır kalmasıdır.
Interaction akışında en çok yapılan hatalardan biri, sadece başarılı senaryoyu düşünmektir. Oysa kullanıcı yetkisiz olabilir, modal süresi dolabilir, botun rolü yetersiz kalabilir veya komut sadece belirli kanalda çalışmalıdır.
Discord bot mimarisinde amaç sadece komutun çalışması değil, kullanıcı etkileşiminin tahmin edilebilir olmasıdır. Slash command ana giriş noktası, button ve select menu hızlı seçim alanı, modal ise veri toplama aracı olarak düşünülürse proje büyüdükçe kontrol daha kolay kalır.
Interaction mantığı nedir?
Discord tarafında slash command çalıştırmak, bir butona basmak, dropdown seçmek veya modal göndermek aynı ana fikre dayanır: Kullanıcı bir etkileşim başlatır, uygulama da buna uygun bir yanıt döner. Bu yüzden modern botlarda komut sistemi ile arayüz bileşenlerini ayrı dünyalar gibi değil, aynı akışın parçaları gibi düşünmek daha sağlıklıdır.
Hangi durumda hangi yapı kullanılmalı?
- Slash command: Kullanıcının doğrudan bir işlem başlatacağı durumlar için uygundur. Örneğin ban, profil, kayıt, yardım veya ayar komutları.
- Button: Mesaj üzerindeki kısa ve net aksiyonlarda kullanılır. Onayla, iptal et, sayfa değiştir, rol al gibi işlemler buna örnektir.
- Select menu: Kullanıcının birkaç seçenek arasından tercih yapması gerektiğinde daha temiz görünür.
- Modal: Kullanıcıdan metin girişi almak için uygundur. Başvuru formu, destek talebi, sebep yazma veya uzun açıklama isteyen işlemlerde kullanılır.
Komut tasarımında önerilen ayrım
Küçük botlarda bile her şeyi tek dosyada toplamak ileride bakım zorluğu çıkarır. Daha net bir yapı için komutun amacı, interaction yanıtı ve yardımcı servisler ayrı tutulabilir.
Kod:
src/
commands/
moderation/
ban.js
utility/
userinfo.js
interactions/
buttons/
modals/
selects/
services/
permissions.js
logger.js
Bu yapı zorunlu bir standart değil, okunabilirlik için pratik bir ayrımdır. Önemli olan buton, modal ve select işlemlerinin rastgele dosyalara dağılmaması ve hangi interaction'ın hangi komut akışına bağlı olduğunun anlaşılır kalmasıdır.
Yetki ve hata mesajı planı
Interaction akışında en çok yapılan hatalardan biri, sadece başarılı senaryoyu düşünmektir. Oysa kullanıcı yetkisiz olabilir, modal süresi dolabilir, botun rolü yetersiz kalabilir veya komut sadece belirli kanalda çalışmalıdır.
- Yetki kontrolünü komutun en başında yapın.
- Kullanıcıya gösterilecek hata mesajını kısa ve anlaşılır yazın.
- Gereksiz herkese açık hata mesajı yerine uygun yerlerde ephemeral yanıt kullanın.
- Log kanalına geliştirici için daha teknik bilgi gönderebilirsiniz.
İpucu
Kullanıcıya "interaction failed" hissi yaşatmamak için uzun süren işlemlerde önce yanıtı erteleyip işlemi sonra tamamlamak daha iyi sonuç verir.
Basit planlama örneği
| İşlem | Uygun interaction | Not |
|---|---|---|
| Rol alma | Button veya select menu | Seçenek sayısına göre karar verilebilir |
| Destek talebi | Modal | Kullanıcıdan açıklama alınabilir |
| Kullanıcı sorgulama | Slash command | Parametreyle temiz çalışır |
| Sayfalı yardım menüsü | Button | Önceki ve sonraki sayfa akışı kurulabilir |
Discord bot mimarisinde amaç sadece komutun çalışması değil, kullanıcı etkileşiminin tahmin edilebilir olmasıdır. Slash command ana giriş noktası, button ve select menu hızlı seçim alanı, modal ise veri toplama aracı olarak düşünülürse proje büyüdükçe kontrol daha kolay kalır.