const { Client, GatewayIntentBits, Events } = require('discord.js'); const { Rcon } = require('rcon-client'); const client = new Client({ intents: [GatewayIntentBits.Guilds, GatewayIntentBits.GuildMessages, GatewayIntentBits.MessageContent] }); const TOKEN = 'MTI4MTM3OTY5NDY4MzM2MTQyNA.GJuMks.RcB6i2oosYwQ2281QojtVjrqUMUSTP7QmgWTzE'; // Discord bot token'ı const RCON_HOST = '5.180.104.180'; // Minecraft sunucunun IP adresi const RCON_PORT = 25640; // Rcon port numarası const RCON_PASSWORD = 'babayim12'; // Rcon şifrenizi buraya girin // İzin verilen kullanıcı ID'leri const ALLOWED_USER_IDS = ['800128919416078366', '1077084000125993012', '349064252222341120']; // Moderatör rolü (örnek: '123456789012345678') const ROLE_ID = '1279890871512334379'; // Bu rol sadece tempmute ve unmute komutlarını kullanabilir // Yönetim rolü (örnek: '987654321012345678') const ADMIN_ROLE_ID = '1279890870644113481'; // Bu rol ban, tempban, mute, unmute, unban komutlarını kullanabilir client.once('ready', () => { console.log(`Bot ${client.user.tag} olarak giriş yaptı.`); // Botun oynuyor durumunu ayarla client.user.setPresence({ activities: [{ name: 'oyna.atherianetwork.com', type: 0 }], // 0 -> watching status: 'online', }); }); client.on(Events.MessageCreate, async message => { if (message.author.bot) return; // Botlardan gelen mesajları işleme // Eğer mesaj '!minecraft ' ile başlamıyorsa, işleme if (!message.content.startsWith('!minecraft ')) return; // Diğer mesajları yok say // Mesaj gönderen kişinin ID'sini kontrol et if (!ALLOWED_USER_IDS.includes(message.author.id)) { const member = message.guild.members.cache.get(message.author.id); // Yönetim rolüne sahip olanlar için komutlar if (member && member.roles.cache.has(ADMIN_ROLE_ID)) { const command = message.content.slice(11).trim().toLowerCase(); const args = command.split(' '); const baseCommand = args[0]; // İlk kısmı komut olarak al // Yönetim rolü ban, tempban, mute, unmute, unban komutlarını kullanabilir if (['ban', 'tempban', 'mute', 'unban'].includes(baseCommand)) { const player = args[1]; // Oyuncu adı const reason = args[2] || 'Sebep belirtilmedi'; // Sebep (opsiyonel) const duration = args[3] || 'Süre belirtilmedi'; // Süre (opsiyonel) if (player) { const fullCommand = `${baseCommand} ${player} ${reason} ${duration}`; try { console.log('Connecting to RCON...'); const rcon = await Rcon.connect({ host: RCON_HOST, port: RCON_PORT, password: RCON_PASSWORD }); if (rcon) { console.log('Sending command...'); const response = await rcon.send(fullCommand); message.channel.send(`Komut çalıştırıldı: ${response}`); await rcon.end(); } else { throw new Error('RCON bağlantısı kurulamadı.'); } } catch (error) { console.error('RCON error:', error); } } else { return message.reply("Komutu düzgün girmelisiniz. Örnek kullanım: `!minecraft ban Clodex [sebep] [süre]`"); } } else { return message.reply("Bu komutu kullanma izniniz yok."); } } // Moderatör rolüne sahip olanlar için komutlar else if (member && member.roles.cache.has(ROLE_ID)) { const command = message.content.slice(11).trim().toLowerCase(); const args = command.split(' '); const baseCommand = args[0]; if (baseCommand === 'tempmute' || baseCommand === 'unmute') { const player = args[1]; const reason = args[2] || 'Sebep belirtilmedi'; const duration = args[3] || 'Süre belirtilmedi'; if (player) { const fullCommand = `${baseCommand} ${player} ${reason} ${duration}`; try { console.log('Connecting to RCON...'); const rcon = await Rcon.connect({ host: RCON_HOST, port: RCON_PORT, password: RCON_PASSWORD }); if (rcon) { console.log('Sending command...'); const response = await rcon.send(fullCommand); message.channel.send(`Komut çalıştırıldı: ${response}`); await rcon.end(); } else { throw new Error('RCON bağlantısı kurulamadı.'); } } catch (error) { console.error('RCON error:', error); } } else { return message.reply("Komutu düzgün girmelisiniz. Örnek kullanım: `!minecraft tempmute Clodex [sebep] [süre]`"); } } else { return message.reply("Bu rol yalnızca 'tempmute' ve 'unmute' komutlarını kullanabilir."); } } else { return message.reply("Bu komutu kullanma izniniz yok."); } } else { // İzin verilen kullanıcılar için komutları işleme const command = message.content.slice(11).trim(); // 'stop' komutunu engelle if (command.toLowerCase() === 'stop') { return message.reply("Bu komut discord üzerinden yasaklanmıştır."); } // 'op' komutunu engelle if (command.toLowerCase() === 'op') { return message.reply("Bu komut discord üzerinden yasaklanmıştır."); } // 'deop' komutunu engelle if (command.toLowerCase() === 'deop') { return message.reply("Bu komut discord üzerinden yasaklanmıştır."); } // 'save-all' komutunu engelle if (command.toLowerCase() === 'save-all') { return message.reply("Bu komut discord üzerinden yasaklanmıştır."); } try { console.log('Connecting to RCON...'); const rcon = await Rcon.connect({ host: RCON_HOST, port: RCON_PORT, password: RCON_PASSWORD }); if (rcon) { console.log('Sending command...'); const response = await rcon.send(command); message.channel.send(`Komut çalıştırıldı: ${response}`); await rcon.end(); } else { throw new Error('RCON bağlantısı kurulamadı.'); } } catch (error) { console.error('RCON error:', error); } } }); client.login(TOKEN);