- const qdb = require("quick.db")
- const { AuditLogEvent,Events , GuildMember, EmbedBuilder} = require("discord.js")
- /* Event */
- module.exports = {
- name: "rolKoruma",
- eventName: "roleDelete",
- async execute(role) {
- //console.log(auditLog)
- let guild = role.guild
- const fetchedLogs = await guild.fetchAuditLogs({
- limit: 1,
- type: AuditLogEvent.RoleDelete,
- });
- let info = fetchedLogs.entries.first()
- let executor = info.executor
- const data = qdb.fetch(`rol.koruma.${guild.id}`)
- if(!data.activity) return
- if(executor.id == client.user.id) return
- //console.log(role)
- const membersWithRole = guild.members.cache.filter(member => member.roles.cache.has(role.id));
- // Üyeleri listeleyin veya işlem yapın
- membersWithRole.forEach(member => {
- console.log(`${member.user.tag} adlı üye, silinen rolü olan ${role.name} rolüne sahipti.`);
- });
- const member = await guild.members.fetch(executor.id);
- const whitelist = data.whitelist
- const kanal = guild.channels.cache.get(data.logChannel)
- var rolkontrol;
- whitelist.forEach(x => {
- if(member.roles.cache.get(x.replace(`&`,""))) rolkontrol = true
- });
- if (whitelist.find(x => x === `+${executor.id}`) || rolkontrol) return
- const rgbColor = [ (role.color >> 16) & 255, (role.color >> 8) & 255, role.color & 255 ];
- //console.log(rgbColor); // [ 46, 204, 113 ]
- const newrole = await guild.roles.create({
- name: role.name, // Kopyalanan rolün adı
- color: rgbColor, // Kopyalanan rolün rengi
- permissions: role.permissions.bitfield, // Kopyalanan rolün izinleri
- // Diğer ayarlar buraya eklenmeli
- reason: 'Kopyalanan rolün tıpatıp aynısı oluşturuluyor.', // İsteğe bağlı
- })
- newrole.setPosition(role.rawPosition)
- //console.log(newrole.id)
- ///role sahipleri bulduruyom
- const serverData = qdb.get(`sunucu.rol.bilgisi.${role.guild.id}`) || [];
- const roleDataArray = serverData.filter((data) =>
- data.roles.includes(role.id)
- );
- if (roleDataArray.length > 0) {
- // roleDataArray içinde ilgili role ait veriler bulunuyor
- roleDataArray.forEach((roleData) => {
- roleData.roles.forEach(async rolex => {
- //console.log(rolex)
- if(guild.members.cache.get(roleData.userID).roles.cache.has(rolex)) {
- return console.log("zaten rolü var")
- } else {
- console.log(rolex)
- guild.members.cache.get(roleData.userID).roles.add(newrole.id)
- return console.log(`rolü yoktu verdim`)
- }
- })
- });
- } else {
- console.log("Belirtilen rol için veri bulunamadı.")
- //message.reply("Belirtilen rol için veri bulunamadı.");
- }
- ///role sahipleri bulduruyom
- kanal.send({embeds: [new EmbedBuilder()
- .setAuthor({name:`${executor.username} rol sildi.`})
- .setDescription(`a`)
- .setFooter({text: `Rol tekrar oluşturuldu ve role sahip olanlara verildi.`})
- .setColor(client.config.renk.main)]})
- }
- }