disrev.js
v1.2.0
Published
Discord ve Revolt botları için tek client modülü
Maintainers
Readme
disrev.js
Disrev.js, Discord ve Revolt platformlarını tek bir client üzerinden yönetebilen, güçlü ve modüler bir Node.js bot framework'üdür. Ayrıca AOI.js tarzı variable sistemi ve çoklu database desteği sunar.
📦 Kurulum
npm install disrev.jsNode.js ≥18 gereklidir.
🔑 İçe Aktarma
const { database, DisrevClient } = require('disrev.js');DisrevClient: Discord ve Revolt botlarını yönetmek için ana clientdatabase: Desteklenen database türlerini yönetmek için factory
⚡ Desteklenen Database Türleri
Disrev.js, farklı veri saklama ihtiyaçları için modüler database desteği sağlar.
| Tip | Açıklama | | -------- | ----------------------------------------------- | | JSON | Dosya tabanlı basit key-value storage | | SQLite | Hafif ve dosya tabanlı ilişkisel veri | | KeyValue | Hızlı, hafif ve RAM tabanlı key-value storage | | MySQL | Büyük ve ilişkisel veritabanı | | MongoDB | NoSQL, esnek veri modeli | | LavaLink | Müzik botları için özel queue ve state yönetimi |
🔹 JSON Database Örneği
const db = new database('json', { filePath: './data.json' });
await db.set('prefix', '!');
const prefix = await db.get('prefix');
console.log(prefix); // !🔹 SQLite Örneği
const db = new database('sqlite', { filePath: './db.sqlite' });
await db.set('welcome', 'Hello World!');
console.log(await db.get('welcome'));🔹 MongoDB Örneği
const db = new database('mongodb', { url: 'mongodb://localhost:27017', dbName: 'disrevDB' });
await db.set('guild_123_prefix', '!');🛠 Variable Sistemi
Variable sistemi ile sunucu, kullanıcı ve global değişkenleri rahatça yönetebilirsiniz.
// Sunucuya özel değişken
await client.variable.set('guild', 'GUILD_ID', 'prefix', '!');
const prefix = await client.variable.get('guild', 'GUILD_ID', 'prefix');
// Kullanıcıya özel değişken
await client.variable.set('user', 'USER_ID', 'coins', 100);
const coins = await client.variable.get('user', 'USER_ID', 'coins');
// Global değişken
await client.variable.set('global', null, 'botStatus', 'online');
const status = await client.variable.get('global', null, 'botStatus');- scope:
'guild' | 'user' | 'global' - id: guildID veya userID (global için
null) - key: değişken adı
- value: değişken değeri
🤖 DisrevClient Kullanımı
const { DisrevClient } = require('disrev.js');
const client = new DisrevClient({ dbType: 'json', dbOptions: { filePath: './db.json' } });
client.on('ready', info => console.log(`${info.platform} is ready!`));
client.on('message', msg => {
console.log(`[${msg.platform}] ${msg.author.username}: ${msg.content}`);
// Mesaj yanıtı
if(msg.content === '!ping') {
msg.reply(client, 'Pong!');
}
});
client.login('DISCORD_TOKEN', 'REVOLT_TOKEN');- login(discordToken, revoltToken): İki platformu aynı anda başlatır
- sendMessage(platform, channelID, content): Her iki platformda mesaj gönderebilir
🔄 Discord ↔ Revolt Mesaj Köprüsü
const crossMap = {
discordToRevolt: 'REVOLT_CHANNEL_ID',
revoltToDiscord: 'DISCORD_CHANNEL_ID'
};
client.on('message', msg => {
if(msg.platform === 'discord') {
client.sendMessage('revolt', crossMap.discordToRevolt, `[Discord] ${msg.author.username}: ${msg.content}`);
}
if(msg.platform === 'revolt') {
client.sendMessage('discord', crossMap.revoltToDiscord, `[Revolt] ${msg.author.username}: ${msg.content}`);
}
});- Sonsuz döngü önlemek için kendi gönderdiğiniz mesajları filtreleyin.
🧩 Database ve Variable Özet
- Her database adapteri aynı interface’e sahiptir:
set(key, value),get(key),delete(key) - Variable sistemi tüm database’lerle uyumludur
- Sunucu, kullanıcı ve global scope desteği mevcuttur
🔗 Özet
Disrev.js ile:
- Tek bir client üzerinden Discord ve Revolt botları yönetebilirsiniz
- Database seçimi tamamen kullanıcıya bırakılmıştır
- variable yönetimi ile gelişmiş state yönetimi
- Mesaj köprüsü (bridge) ile iki platform birbirini görebilir
📝 Notlar
- Node.js ≥18 önerilir
- Discord.js ≥14 ve Revolt.js ≥2 ile uyumludur
- Database için gerekli npm paketlerini kurmayı unutmayın (sqlite3, mysql2, mongodb vb.)
