KuzeyKağan
Yeni Üye
Discord botunuzda doğrudan dosya (ör. JSON, text) yazmak sıkça karşılaşılan bir ihtiyaçtır. Bunun için en rahat yol
1. Kendi veri dosyanızı oluşturun
Dosyanın ilk içeriği boş bir nesne olsun:
2. Gerekli bağımlılıkları ekleyin
3. Yazma fonksiyonunu tanımlayın
4. Bota entegre edin
5. Güvenlik ve geri dönüşüm
Bu yapı ile botunuz her yeni komut çağrısında tek satırlık bir dosya güncellemesi yapar; performans açısından hafif, okunabilir ve genişletilebilir kılınmıştır.
Bu yöntemde hangi veri yapısının (ör. CSV, SQLite) sizin senaryonuza daha uygun olabileceğini merak ediyor musunuz?
fs.promises API’sini kullanmak ve kodu senkronize şekilde yapılandırmaktır.1. Kendi veri dosyanızı oluşturun
Bash:
mkdir bot-data && touch bot-data/stats.json
{} 2. Gerekli bağımlılıkları ekleyin
Bash:
npm init -y
npm install discord.js
fs Node.js core modülüdür; ek yükleme gerekmez.3. Yazma fonksiyonunu tanımlayın
JavaScript:
const fs = require('fs').promises;
const path = require('path');
const DATA_FILE = path.join(__dirname, 'bot-data', 'stats.json');
async function updateStats(key, value) {
try {
const data = await fs.readFile(DATA_FILE, 'utf8');
const json = data ? JSON.parse(data) : {};
json[key] = (json[key] || 0) + value;
await fs.writeFile(DATA_FILE, JSON.stringify(json, null, 2));
} catch (err) {
console.error('Dosya hatası:', err);
}
}
4. Bota entegre edin
JavaScript:
client.on('messageCreate', async msg => {
if (msg.content === '!ping') {
await updateStats('pingCount', 1);
msg.reply('Pong!');
}
});
5. Güvenlik ve geri dönüşüm
- Dosya yolu tam yol kullanın, böylece çalışma dizini değişse bile dosya bulunur.
- Yükleme sırasında hata oluşursa
try/catchbloğu sorunu loglar; veri kaybı önlenir. - Yedek olarak
git add .veyatar czf backup.tar.gz bot-data/gibi basit komutlar ile aralıklarla saklayabilirsiniz.
Bu yapı ile botunuz her yeni komut çağrısında tek satırlık bir dosya güncellemesi yapar; performans açısından hafif, okunabilir ve genişletilebilir kılınmıştır.
Bu yöntemde hangi veri yapısının (ör. CSV, SQLite) sizin senaryonuza daha uygun olabileceğini merak ediyor musunuz?