Package Exports
- sencinion
- sencinion/types
Readme
Sencinion.js - Türkçe Discord.js Wrapper
🚀 Modern, performanslı ve kullanıcı dostu Discord bot geliştirme kütüphanesi
🌟 Özellikler
- 🇹🇷 Türkçe API: Kolay anlaşılır Türkçe metodlar (
baslat(),komutEkle(),dinleyiciEkle()) - ⚡ Modern ES6+: Async/await, ES modules, modern JavaScript özellikleri
- 🧩 Modüler Mimari: Komut, event ve hata yönetimi için ayrı bileşenler
- 🔧 Kolay Konfigürasyon: JSON/JS config dosyaları ve environment variables
- 📦 Plugin Sistemi: Üçüncü parti eklentiler için altyapı
- 🛡️ Güvenlik: Rate limiting, input validation, hata yönetimi
- 📊 Performans: Cache sistemi, bellek optimizasyonu
- 🎯 TypeScript Desteği: Type definitions ve IntelliSense
- 🖥️ CLI Araçları: Proje başlatma, komut/event oluşturma
- 📝 Detaylı Loglama: Renkli console output ve dosya loglama
🚀 Hızlı Başlangıç
1. Kurulum
npm install sencinion2. Bot Oluşturma
import Sencinion from 'sencinion'
const bot = new Sencinion({
token: process.env.DISCORD_TOKEN,
prefix: '!',
sahipler: ['SAHIP_ID']
})
// Komut ekleme
bot.komutEkle({
isim: 'ping',
aciklama: 'Botun gecikmesini gösterir',
kategori: 'genel',
async calistir({ mesaj }) {
await mesaj.yanitla('🏓 Pong!')
}
})
// Event dinleyici
bot.dinleyiciEkle('mesajOlusturuldu', async (mesaj) => {
if (mesaj.icerik === '!merhaba') {
await mesaj.yanitla('Merhaba! 👋')
}
})
// Botu başlat
await bot.baslat()3. Çalıştırma
node main.js📋 API Referansı
Sencinion Sınıfı
| Metod | Açıklama | Örnek |
|---|---|---|
baslat() |
Botu başlatır | await bot.baslat() |
komutEkle(komut) |
Komut ekler | bot.komutEkle(komutObj) |
dinleyiciEkle(event, callback) |
Event dinleyici ekler | bot.dinleyiciEkle('ready', callback) |
pluginYukle(plugin, secenekler) |
Plugin yükler | await bot.pluginYukle('plugin-adi') |
cacheAl(anahtar) |
Cache'den veri alır | bot.cacheAl('anahtar') |
cacheEkle(anahtar, veri, sure) |
Cache'e veri ekler | bot.cacheEkle('anahtar', veri) |
rateLimitKontrol(kullaniciId) |
Rate limit kontrolü | bot.rateLimitKontrol(id) |
Komut Yapısı
export default {
isim: 'komut-adi',
aciklama: 'Komut açıklaması',
kategori: 'genel',
kullanim: 'komut-adi [argümanlar]',
ornekler: ['komut-adi argüman'],
izinler: ['SEND_MESSAGES'],
cooldown: 5,
sadeceSahip: false,
async calistir({ mesaj, argumanlar, client, log }) {
// Komut mantığı
await mesaj.reply('Merhaba!')
}
}Event Yapısı
export default {
isim: 'event-adi',
aciklama: 'Event açıklaması',
async calistir({ client, log }, ...argumanlar) {
// Event mantığı
log('Event tetiklendi!')
}
}🛠️ CLI Araçları
Proje Başlatma
npx sencinion initBu komut şunları oluşturur:
sencinion.config.js- Konfigürasyon dosyasımain.js- Ana bot dosyasıkomutlar/- Komut klasörüeventler/- Event klasörü.env- Environment variablesREADME.md- Proje dokümantasyonu
Komut Oluşturma
npx sencinion create-command komut-adiEvent Oluşturma
npx sencinion create-event event-adiYardım
npx sencinion help📁 Proje Yapısı
sencinion-proje/
├── lib/ # Ana kütüphane dosyaları
│ ├── Sencinion.js # Ana sınıf
│ ├── KomutYoneticisi.js # Komut yönetimi
│ ├── EventYoneticisi.js # Event yönetimi
│ ├── HataYoneticisi.js # Hata yönetimi
│ └── Yardimcilar.js # Yardımcı fonksiyonlar
├── komutlar/ # Komut dosyaları
│ ├── genel/
│ │ ├── ping.js
│ │ └── yardim.js
│ ├── moderasyon/
│ └── eglence/
├── eventler/ # Event dosyaları
│ ├── ready.js
│ ├── messageCreate.js
│ └── interactionCreate.js
├── logs/ # Log dosyaları
├── main.js # Ana bot dosyası
├── sencinion.config.js # Konfigürasyon
├── .env # Environment variables
└── README.md # Dokümantasyon⚙️ Konfigürasyon
sencinion.config.js
export default {
// Discord bot token'i
token: process.env.DISCORD_TOKEN,
// Komut ön eki
prefix: '!',
// Bot sahipleri
sahipler: ['SAHIP_ID_1', 'SAHIP_ID_2'],
// Gateway intents
intents: [
'GUILDS',
'GUILD_MESSAGES',
'MESSAGE_CONTENT'
],
// Cache ayarları
cache: {
aktif: true,
buyukluk: 1000,
sure: 300000 // 5 dakika
},
// Rate limiting
rateLimit: {
aktif: true,
istek: 5,
pencere: 15000 // 15 saniye
},
// Log ayarları
log: {
seviye: 'info',
renkli: true
}
}Environment Variables (.env)
DISCORD_TOKEN=your_bot_token_here
NODE_ENV=development
DB_URL=mongodb://localhost:27017/sencinion🔧 Gelişmiş Özellikler
Middleware Sistemi
// Middleware ekleme
bot.middlewareEkle(async (baglam, secenekler) => {
// Komut öncesi işlemler
console.log('Komut çalıştırılıyor:', baglam.komut.isim)
// true dönerse komut çalışır, false dönerse durur
return true
}, {
zaman: 'once', // 'once', 'sonra', 'herikiside'
sira: 1
})Plugin Sistemi
// Plugin yükleme
await bot.pluginYukle('@sencinion/database', {
tur: 'mongodb',
url: process.env.DB_URL
})Cache Sistemi
// Cache'e veri ekleme
bot.cacheEkle('kullanici_verisi', veri, 60000) // 1 dakika
// Cache'den veri alma
const veri = bot.cacheAl('kullanici_verisi')Rate Limiting
// Rate limit kontrolü
if (bot.rateLimitKontrol(kullaniciId, 'komut')) {
await mesaj.reply('⏱️ Çok fazla komut kullanıyorsunuz!')
return
}📊 Performans ve Optimizasyon
- Bellek Yönetimi: Otomatik cache temizleme ve garbage collection optimizasyonu
- Ağ Optimizasyonu: Request batching ve retry mekanizması
- CPU Optimizasyonu: Event loop blocking önleme
- Hata Yönetimi: Graceful error handling ve recovery
🛡️ Güvenlik
- Input Validation: Tüm input'ların doğrulanması
- SQL Injection Koruması: Parametrelenmiş sorgular
- XSS Koruması: HTML escaping
- Rate Limiting: Spam koruması
- Permission Kontrolü: Komut izinleri
🧪 Test
# Unit testler
npm test
# Coverage raporu
npm run test:coverage
# Lint kontrolü
npm run lint📚 Dokümantasyon
🤝 Katkıda Bulunma
- Fork edin
- Feature branch oluşturun (
git checkout -b feature/amazing-feature) - Commit edin (
git commit -m 'Add amazing feature') - Push edin (
git push origin feature/amazing-feature) - Pull Request oluşturun
📝 Lisans
Bu proje MIT lisansı altında lisanslanmıştır. Detaylar için LICENSE dosyasına bakın.
🙏 Teşekkürler
- Discord.js - Harika Discord kütüphanesi
- Node.js - JavaScript runtime
- Community Contributors
📞 İletişim
- 🌐 Website: https://sencinion.js.org
- 📧 Email: info@sencinion.js.org
- 🐛 Issues: GitHub Issues
- 💬 Discord: Sencinion Community
Sencinion.js ile Discord botlarınızı kolayca geliştirin! 🚀