statsify
v1.0.0
Published
Discord sunucu istatistikleri ve event takibi için kapsamlı TypeScript modülü
Downloads
16
Maintainers
Readme
📊 Statsify
Discord sunucuları için kapsamlı istatistik ve analiz modülü
Statsify, Discord sunucularında gerçekleşen tüm aktiviteleri izleyen, analiz eden ve raporlayan güçlü bir TypeScript modülüdür. Ses kanalı aktivitelerinden mesaj istatistiklerine, üye hareketlerinden rol değişikliklerine kadar her şeyi takip eder.
✨ Özellikler
🎯 Kapsamlı İzleme
- 🔊 Ses Aktiviteleri: Kanal katılım/ayrılma, streaming, kamera kullanımı
- 💬 Mesaj İstatistikleri: Mesaj sayısı, karakter sayısı, kanal dağılımı, reaction'lar
- 👥 Üye Aktiviteleri: Katılım/ayrılma, rol değişiklikleri, ban/unban işlemleri
- 🏰 Sunucu Olayları: Kanal/rol oluşturma, sunucu ayar değişiklikleri
- 📨 Davet Takibi: Davet oluşturma/silme, kullanım istatistikleri
🗄️ Esnek Depolama
- MongoDB: Production-ready, ölçeklenebilir database desteği
- Dosya Sistemi: JSON tabanlı yerel depolama
- Bellek: Geçici, hızlı erişim için in-memory depolama
📈 Gerçek Zamanlı Analytics
- Canlı istatistik takibi
- Detaylı event logging
- Otomatik kaydetme sistemi
- Performans optimizasyonları
🚀 Hızlı Başlangıç
Kurulum
npm install statsifyTemel Kullanım
const { Client, GatewayIntentBits } = require('discord.js');
const { DiscordStats } = require('statsify');
const client = new Client({
intents: [
GatewayIntentBits.Guilds,
GatewayIntentBits.GuildMembers,
GatewayIntentBits.GuildMessages,
GatewayIntentBits.MessageContent,
GatewayIntentBits.GuildVoiceStates,
GatewayIntentBits.GuildPresences
]
});
// Statsify'ı başlat
const stats = new DiscordStats({
client: client,
// Takip seçenekleri
trackVoice: true,
trackMessages: true,
trackMembers: true,
trackReactions: true,
trackRoles: true,
trackChannels: true,
// Depolama seçenekleri
storageType: 'database', // 'file', 'memory', 'database'
mongoUri: 'mongodb://localhost:27017/statsify',
// Otomatik kaydetme
autoSave: true,
saveInterval: 5 // dakika
});
client.once('ready', async () => {
console.log('Bot hazır!');
// Statsify'ı başlat
await stats.init();
console.log('Statsify başlatıldı!');
});
client.login('YOUR_BOT_TOKEN');📊 API Kullanımı
Ses İstatistikleri
// Tüm kullanıcıların ses istatistikleri
const voiceStats = stats.getVoiceStats(guildId);
// Belirli bir kullanıcının ses istatistikleri
const userVoiceStats = stats.getVoiceStats(guildId, userId);
// En aktif ses kullanıcıları
const topVoiceUsers = stats.getMostActiveVoiceUsers(guildId, 10);
// Toplam ses süresi
const totalVoiceTime = stats.getTotalVoiceTime(guildId);Mesaj İstatistikleri
// Tüm mesaj istatistikleri
const messageStats = stats.getMessageStats(guildId);
// Saatlik mesaj dağılımı
const hourlyMessages = stats.getMessagesByHour(guildId);
// En aktif mesaj kullanıcıları
const topMessageUsers = stats.getMostActiveMessageUsers(guildId, 10);
// Ortalama mesaj uzunluğu
const avgLength = stats.getAverageMessageLength(guildId);Event Listening
// Ses eventleri
stats.on('voiceJoin', (member, channel) => {
console.log(`${member.user.username} ses kanalına katıldı: ${channel.name}`);
});
stats.on('voiceLeave', (member, channel) => {
console.log(`${member.user.username} ses kanalından ayrıldı: ${channel.name}`);
});
// Mesaj eventleri
stats.on('messageCreate', (message) => {
console.log(`Yeni mesaj: ${message.author.username}`);
});
stats.on('messageDelete', (message) => {
console.log(`Mesaj silindi: ${message.author.username}`);
});
// Üye eventleri
stats.on('memberJoin', (member) => {
console.log(`Yeni üye: ${member.user.username}`);
});
stats.on('memberBan', (guild, user) => {
console.log(`Üye banlandı: ${user.username}`);
});
// Guild eventleri
stats.on('roleCreate', (role) => {
console.log(`Yeni rol oluşturuldu: ${role.name}`);
});
stats.on('channelCreate', (channel) => {
console.log(`Yeni kanal oluşturuldu: ${channel.name}`);
});⚙️ Konfigürasyon
Tam Konfigürasyon Örneği
const stats = new DiscordStats({
client: client,
// Tracking Options
trackVoice: true, // Ses aktiviteleri
trackMessages: true, // Mesaj aktiviteleri
trackInvites: true, // Davet aktiviteleri
trackMembers: true, // Üye aktiviteleri
trackStreaming: true, // Streaming aktiviteleri
trackCamera: true, // Kamera aktiviteleri
trackReactions: true, // Reaction aktiviteleri
trackRoles: true, // Rol aktiviteleri
trackChannels: true, // Kanal aktiviteleri
trackPresence: true, // Durum aktiviteleri
trackBans: true, // Ban aktiviteleri
// Storage Options
storageType: 'database', // 'file', 'memory', 'database'
storagePath: './stats-data', // Dosya depolama yolu
// MongoDB Options
mongoUri: 'mongodb://localhost:27017/statsify',
mongoOptions: {
maxPoolSize: 10,
serverSelectionTimeoutMS: 5000,
socketTimeoutMS: 45000
},
// Auto Save
autoSave: true, // Otomatik kaydetme
saveInterval: 5, // Kaydetme aralığı (dakika)
// Event Logging
enableEventLogging: true, // Event logları
logRetentionDays: 30 // Log tutma süresi (gün)
});🗄️ MongoDB Kurulumu
Yerel MongoDB
# MongoDB'yi indir ve kur
# Windows: https://www.mongodb.com/try/download/community
# macOS: brew install mongodb-community
# Ubuntu: sudo apt install mongodb
# MongoDB'yi başlat
mongod --dbpath /path/to/data/directoryMongoDB Atlas (Cloud)
- MongoDB Atlas'a kaydol
- Yeni cluster oluştur
- Database kullanıcısı oluştur
- IP adresini whitelist'e ekle
- Connection string'i al
const mongoUri = 'mongodb+srv://username:[email protected]/statsify?retryWrites=true&w=majority';📱 Örnek Bot
Detaylı örnek bot için examples/mongodb-bot.js dosyasına bakın:
node examples/mongodb-bot.jsBot Komutları
!stats info- Genel sunucu istatistikleri!stats voice- Ses kanalı istatistikleri!stats messages- Mesaj istatistikleri!stats top [voice|messages]- En aktif kullanıcılar!stats me- Kişisel istatistikler!stats server- Sunucu analitikleri!stats analytics- Detaylı analizler
🔧 TypeScript Desteği
Statsify tam TypeScript desteği ile gelir:
import { Client, GatewayIntentBits } from 'discord.js';
import { DiscordStats, VoiceStats, MessageStats } from 'statsify';
const stats = new DiscordStats({
client,
trackVoice: true,
trackMessages: true
});
// Tip güvenli API kullanımı
const voiceStats: VoiceStats[] = stats.getVoiceStats(guildId) as VoiceStats[];
const messageStats: MessageStats[] = stats.getMessageStats(guildId) as MessageStats[];🔒 Güvenlik
- ✅ Bot token'larını environment variable'larda saklayın
- ✅ MongoDB connection string'lerini güvenli tutun
- ✅ Üretim ortamında uygun firewall kuralları kullanın
- ✅ MongoDB kullanıcı yetkilendirmesi yapın
🚀 Performans
- Bulk Operations: MongoDB için optimize edilmiş toplu işlemler
- Memory Caching: Sık kullanılan veriler için akıllı önbellekleme
- Event Filtering: Gereksiz eventleri filtreleme
- Lazy Loading: İhtiyaç halinde veri yükleme
🤝 Katkıda Bulunma
- Fork'layın
- Feature branch oluşturun (
git checkout -b feature/amazing-feature) - Commit'leyin (
git commit -m 'Add amazing feature') - Push'layın (
git push origin feature/amazing-feature) - Pull Request açın
📄 Lisans
Bu proje MIT lisansı altında yayınlanmıştır. Detaylar için LICENSE dosyasına bakın.
👨💻 Geliştirici
MODLOFF - GitHub
📞 Destek
- 🐛 Bug raporları için Issues açın
- 💡 Feature istekleri için Discussions kullanın
- 📚 Daha fazla dökümantasyon için Wiki bölümüne bakın
Statsify ile Discord sunucunuzun her anını takip edin! 📊✨
