├── LICENSE ├── Procfile ├── Satuke.js ├── TheSatuke ├── Commands │ └── Spec │ │ ├── [10] BanQuery.js │ │ ├── [11] RolBilgi.js │ │ ├── [12] RolDenetim.js │ │ ├── [13] Sicil.js │ │ ├── [14] Go.js │ │ ├── [15] Transporter.js │ │ ├── [15] VoiceQuery.js │ │ ├── [16] SlowMode.js │ │ ├── [17] UnLock.js │ │ ├── [18] Unregister.js │ │ ├── [19] Clear.js │ │ ├── [1] VoiceChannelMuteAll.js │ │ ├── [20} Afk.js │ │ ├── [21] Kick.js │ │ ├── [22] YetkiliSay.js │ │ ├── [23] Toplantı.js │ │ ├── [24] CezaID.js │ │ ├── [25] BaglantiKes.js │ │ ├── [26] Eval.js │ │ ├── [27] Uptime.js │ │ ├── [28] BannedTag.js │ │ ├── [28] VoiceMute.js.js │ │ ├── [29] Ban.js │ │ ├── [2] ChannelLock.js │ │ ├── [30} Jail.js │ │ ├── [31] ChatMute.js │ │ ├── [32] UnChatMute.js │ │ ├── [33] UnJail.js │ │ ├── [34]UnVoiceMute.js │ │ ├── [35} ToplantıDavet.js │ │ ├── [36] RolVerAl.js │ │ ├── [37] UnBan.js │ │ ├── [38] Control.js │ │ ├── [39] SesBilgi.js │ │ ├── [3] NoGivesRoles.js │ │ ├── [40] TagSearch.js │ │ ├── [41] Cihaz.js │ │ ├── [4] Say.js │ │ ├── [5] Avatar.js │ │ ├── [6] ProfileBanner.js │ │ ├── [7] Booster.js │ │ ├── [8] UserProfile.js │ │ └── [9] BannedList.js ├── Configuration │ ├── Config.json │ └── Settings.json ├── Events │ ├── Afk.js │ ├── CommandHandler.js │ ├── Penal │ │ ├── OnMemberUpdate.js │ │ ├── OnReady.js │ │ └── OnVoiceStateUpdate.js │ ├── Tag │ │ └── UserUpdate.js │ ├── Timer.js │ └── autoReply.js ├── Managers │ ├── ChartManager.js │ ├── EventManager.js │ ├── PenalManager.js │ └── TimeManager.js ├── Models │ ├── Database │ │ ├── Afk.js │ │ ├── BannedRole.js │ │ ├── CezaPoint.js │ │ ├── Disabledtag.js │ │ ├── Ekip.js │ │ ├── Guild.js │ │ ├── Invıte.js │ │ ├── Kayıtlar.js │ │ ├── Notlar.js │ │ ├── Penal.js │ │ ├── Registries.js │ │ ├── RolLog.js │ │ ├── Task.js │ │ ├── Teyitci.js │ │ ├── User.js │ │ └── UserDocs.js │ └── Group.js ├── Moderation.js └── Utils │ ├── Helper.js │ └── Patch.js └── package.json /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022 satuke 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /Procfile: -------------------------------------------------------------------------------- 1 | worker: node Satuke.js 2 | -------------------------------------------------------------------------------- /Satuke.js: -------------------------------------------------------------------------------- 1 | const Config = global.Config = require("./TheSatuke/Configuration/Config.json"); 2 | const { Client } = require("discord.js"); 3 | const client = global.Client = new Client({ fetchAllMembers: true }); 4 | require('discord-reply'); 5 | const fs = require("fs"); 6 | 7 | let CommandId = 0; 8 | const Commands = global.Commands = new Array(); 9 | 10 | let dirs = fs.readdirSync("./TheSatuke/Commands", { encoding: "utf8" }); 11 | dirs.forEach(dir => { 12 | let files = fs.readdirSync(`./TheSatuke/Commands/${dir}`, { encoding: "utf8" }).filter(file => file.endsWith(".js")); 13 | files.forEach(file => { 14 | let ref = require(`./TheSatuke/Commands/${dir}/${file}`); 15 | if (!ref.settings) 16 | 17 | if (ref.onLoad != undefined && typeof ref.onLoad == "function") ref.onLoad(client); 18 | ref.settings.id = CommandId; 19 | Commands.push(ref); 20 | CommandId += 1; 21 | }); 22 | }); 23 | 24 | const mongoose = require("mongoose"); 25 | const { eventNames } = require("process"); 26 | mongoose.connect(Config.DatabaseUrl.replace("", Config.DatabaseName), { 27 | useNewUrlParser: true, 28 | useUnifiedTopology: true, 29 | useFindAndModify: false 30 | }); 31 | 32 | mongoose.connection.on("connected", () => { console.log(`MongoDB'ye başarıyla bağlandım.`) 33 | require("./TheSatuke/Moderation.js"); 34 | }); 35 | 36 | 37 | -------------------------------------------------------------------------------- /TheSatuke/Commands/Spec/[10] BanQuery.js: -------------------------------------------------------------------------------- 1 | const { Message, Client, MessageEmbed, Discord, Application, MessageFlags} = require("discord.js"); 2 | const Config = require("../../Configuration/Config.json"); 3 | const Settings = require("../../Configuration/Settings.json"); 4 | const moment = require("moment"); 5 | require("moment-duration-format") 6 | moment.locale("tr") 7 | 8 | /** 9 | * @param {Client} client 10 | * @param {Message} message 11 | * @param {Array} args 12 | */ 13 | 14 | module.exports.execute = async (client, message, args) => { 15 | if(!message.member.hasPermission("ADMINISTRATOR") && !Settings.Penals.Ban.AuthRoles.some(authRole => message.member.roles.cache.has(authRole))) 16 | return message.lineReply(`${Settings.emojiler.iptal} Bu komudu kullanmaya yetkin yetmiyor :c`).then(x => x.delete({timeout: 7500})); 17 | 18 | if (!message.guild) return; 19 | let embed = new MessageEmbed() 20 | embed.setColor(Config.EmbedColor); 21 | embed.setFooter(Config.Status); 22 | 23 | if(!args[0]) return message.lineReply(embed.setDescription(`${Settings.emojiler.iptal} Geçerli bir kullanıcı ID si giriniz.`)) 24 | await client.users.fetch(args[0]).then(res => { 25 | if(!res){ 26 | embed.setDescription(`${Settings.emojiler.iptal} Geçerli bir kullanıcı ID si giriniz.`) 27 | return message.lineReply(embed) 28 | }else{ 29 | message.guild.fetchBans(true).then(async(bans) => { 30 | let ban = await bans.find(a => a.user.id === res.id) 31 | if(!ban){ 32 | embed.setDescription(`${Settings.emojiler.iptal} \`${res.tag}\` Bu sunucuda yasaklı değil.`) 33 | return message.lineReply(embed) 34 | }else{ 35 | let text = `${Settings.emojiler.ban} **${res.tag}** (\`${res.id}\`) Adlı üye sunucumuzdan yasaklanma bilgileri: \n\n\`\`\`"${ban.reason || "Sebep Yok"}"\`\`\`` 36 | message.guild.fetchAuditLogs({type: 'MEMBER_BAN_ADD', limit: 100}).then(audit => { 37 | let user = audit.entries.find(a => a.target.id === res.id) 38 | if(user){ 39 | embed.setDescription(text + `\n\n\`•\` Yasaklayan Kullanıcı: \`${user.executor.tag}\` (\`${user.executor.id}\`)\n\`•\` Yasaklanma Tarihi: \`${moment(user.createdAt).format("lll")}\``) 40 | return message.lineReply(embed) 41 | }else{ 42 | embed.setDescription(text + `\n\n${Settings.emojiler.iptal} Bu yasaklama, son 100 yasaklama içinde olmadığından dolayı ban bilgisini yazamıyorum.`) 43 | return message.lineReply(embed) 44 | } 45 | }) 46 | } 47 | }) 48 | }; 49 | }).catch(err => { 50 | embed.setDescription(`${Settings.emojiler.iptal} Geçerli bir kullanıcı ID si giriniz.`) 51 | return message.lineReply(embed) 52 | }) 53 | } 54 | 55 | module.exports.settings = { 56 | Commands: ["bansorgu","baninfo","ban-sorgu","ban-info","b"], 57 | Usage: "bansorgu", 58 | Description: "Bahsettiğin kişinin ban sebebini öğrenirsin.", 59 | Category: "General", 60 | Activity: true 61 | } -------------------------------------------------------------------------------- /TheSatuke/Commands/Spec/[11] RolBilgi.js: -------------------------------------------------------------------------------- 1 | const { Message, Client, MessageEmbed, Discord, Application, MessageFlags} = require("discord.js"); 2 | const Config = require("../../Configuration/Config.json"); 3 | const Settings = require("../../Configuration/Settings.json"); 4 | const moment = require("moment"); 5 | require("moment-duration-format") 6 | moment.locale("tr") 7 | 8 | /** 9 | * @param {Client} client 10 | * @param {Message} message 11 | * @param {Array} args 12 | */ 13 | module.exports.execute = async (client, message, args) => { 14 | if(!message.member.hasPermission("ADMINISTRATOR") && !Settings.Roles.Owner.some(authRole => message.member.roles.cache.has(authRole))) 15 | return message.lineReply(`${Settings.emojiler.iptal} Bu komudu kullanmaya yetkin yetmiyor :c`).then(x => x.delete({timeout: 7500})); 16 | 17 | let SatukEmbed = new MessageEmbed() 18 | .setAuthor(message.member.displayName, message.author.avatarURL({dynamic: true})) 19 | .setFooter(Config.Status) 20 | .setColor(Config.EmbedColor) 21 | 22 | let SatukeRole = message.mentions.roles.first() || message.guild.roles.cache.get(args[0]); 23 | if (!SatukeRole) return message.lineReply(SatukEmbed.setDescription(`${Settings.emojiler.iptal} Geçerli bir rol belirtmeli/Rol ID'si girmelisin.`)) 24 | 25 | let satArray = new Array(); 26 | let satukecimÜyeler = SatukeRole.members.forEach(satukecim => {satArray.push(`<@!${satukecim.id}> (\`${satukecim.id}\`)`);}) 27 | message.lineReply(SatukEmbed.setDescription(` 28 | ${SatukeRole} (\`${SatukeRole.id}\`) adlı role ait bilgiler aşağıda verilmiştir. 29 | 30 | **Rol Rengi:** ${SatukeRole.hexColor} 31 | **Rol ID'si:** ${SatukeRole.id} 32 | **Roldeki Kişi Sayısı**: ${SatukeRole.members.size} 33 | 34 | 35 | **${Settings.emojiler.user} Roldeki kişiler:** 36 | 37 | ${SatukeRole.members.size <= 30 ? satArray.join("\n") : `\`\`\`Rolde 30'tan Fazla Kişi Olduğu İçin Sıralayamadım.\`\`\``}`)) 38 | }; 39 | 40 | module.exports.settings = { 41 | Commands: ["rb", "rolbilgi", "rol-bilgi", "rolinfo"], 42 | Usage: "rolbilgi", 43 | Description: "", 44 | Category: "Advanced", 45 | cooldown: 5000, 46 | Activity: true 47 | } -------------------------------------------------------------------------------- /TheSatuke/Commands/Spec/[12] RolDenetim.js: -------------------------------------------------------------------------------- 1 | const { Message, Client, MessageEmbed, Discord, Application, MessageFlags} = require("discord.js"); 2 | const Settings = require("../../Configuration/Settings.json"); 3 | const moment = require("moment"); 4 | require("moment-duration-format") 5 | moment.locale("tr") 6 | 7 | /** 8 | * @param {Client} client 9 | * @param {Message} message 10 | * @param {Array} args 11 | */ 12 | module.exports.execute = async (client, message, args) => { 13 | 14 | if(!message.member.hasPermission("ADMINISTRATOR") && !Settings.Roles.Owner.some(authRole => message.member.roles.cache.has(authRole))) 15 | return message.lineReply(`${Settings.emojiler.iptal} Bu komudu kullanmaya yetkin yetmiyor :c`).then(x => x.delete({timeout: 7500})); 16 | let roles = args.length > 0 ? message.mentions.roles.first() || message.guild.roles.cache.get(args[0]) : message.guild.roles.cache.find(x => x.id == Settings.Roles.Commander) 17 | let offlineMembers = message.guild.members.cache.filter(x => { 18 | return x.roles.cache.has(roles.id) && !x.voice.channel && x.user.presence.status == "offline" 19 | }) 20 | let voiceMembers = message.guild.members.cache.filter(x => { 21 | return x.roles.cache.has(roles.id) && x.voice.channel 22 | }) 23 | let notVoiceMembers = message.guild.members.cache.filter(x => { 24 | return x.roles.cache.has(roles.id) && !x.voice.channel 25 | }) 26 | 27 | message.lineReply(` 28 | ${Settings.emojiler.user} Roldeki Seste Olan Kullanıcılar: **${voiceMembers.size || "Seste Kimse Yok"}** 29 | \`\`\`${voiceMembers.map(x => "<@" + x.id + ">").join(", ") || ""}\`\`\` 30 | ${Settings.emojiler.user} Roldeki Seste Olmayan Kullanıcılar: **${notVoiceMembers.size || "Seste Kimse Yok"}** 31 | \`\`\`${notVoiceMembers.map(x => "<@" + x.id + ">").join(", ") || ""}\`\`\``) 32 | 33 | } 34 | module.exports.settings = { 35 | Commands: ["roldenetim","denetim"], 36 | Usage: "denetim", 37 | Description: "Sunucunun Güncel Verilerini Atar.", 38 | Category: "Advanced", 39 | Activity: true 40 | } 41 | -------------------------------------------------------------------------------- /TheSatuke/Commands/Spec/[13] Sicil.js: -------------------------------------------------------------------------------- 1 | const { Message, Client, MessageEmbed, Discord, Application, MessageFlags} = require("discord.js"); 2 | const Config = require("../../Configuration/Config.json"); 3 | const Settings = require("../../Configuration/Settings.json"); 4 | const moment = require("moment"); 5 | const Penal = require("../../Models/Database/Penal"); 6 | require("moment-timezone"); 7 | require("moment-duration-format") 8 | moment.locale("tr") 9 | 10 | /** 11 | * @param {Client} client 12 | * @param {Message} message 13 | * @param {Array} args 14 | */ 15 | 16 | module.exports.execute = async (client, message, args) => { 17 | if(!message.member.hasPermission("ADMINISTRATOR") && !Settings.Roles.Commander.some(authRole => message.member.roles.cache.has(authRole))) 18 | return message.lineReply(`${Settings.emojiler.iptal} Bu komudu kullanmaya yetkin yetmiyor :c`).then(x => x.delete({timeout: 7500})); 19 | 20 | let victim = message.mentions.users.first() || (args[0] ? await client.getUser(args[0]) : undefined); 21 | if (!victim) return message.lineReply(`${Settings.emojiler.iptal} Cezalarına bakacagın kişiyi etiketlemelisin.`) 22 | 23 | Penal.find({ User: victim.id }, async (err, res) => { 24 | if (err) return message.lineReply(`${Settings.emojiler.iptal} Botta bir takım problemler yaşanıyor.`); 25 | res = res.reverse(); 26 | 27 | let page = 1; 28 | const liste = res.map((e, i) => `\`#${e.Id}:\` \`${e.Activity == true ? "#Online" : "#Offline"}\` **(${e.Type})** <@${e.Admin}>: **${e.Reason}** - ${moment(e.Time).tz("Europe/Istanbul").format("YYYY.MM.DD HH:mm:ss")} `); 29 | 30 | var msg = await message.lineReply(new MessageEmbed() 31 | .setDescription(`${victim} Kullanıcısının geçmiş ve şuanki cezaları aşşağıda belirtilmiştir.`) 32 | .setColor(Config.EmbedColor) 33 | .addField(`➜ Kullanıcının Cezaları`, `${liste.slice(page == 1 ? 0 : page * 10 - 10, page * 10).join("\n") || "\`\`\`Cezası olmayan mükemmel bir sicil!\`\`\`" } ** **`, true) 34 | .setAuthor(message.author.username, message.author.avatarURL({ dynamic: true }))).then(e => e); 35 | 36 | if (liste.length > 10) { 37 | await msg.react(`◀`); 38 | await msg.react(`❌`); 39 | await msg.react(`▶`); 40 | 41 | let collector = msg.createReactionCollector((react, user) => ["◀", "▶", "❌"].some(e => e == react.emoji.name) && user.id == message.member.id, { 42 | time: 200000 43 | }); 44 | 45 | collector.on("collect", (react, user) => { 46 | if (react.emoji.name == "▶") { 47 | if (liste.slice((page + 1) * 10 - 10, (page + 1) * 10).length <= 0) return; 48 | page += 1; 49 | let newList = liste.slice(page == 1 ? 0 : page * 10 - 10, page * 10).join("\n"); 50 | msg.edit(new MessageEmbed() 51 | .setColor(Config.EmbedColor) 52 | .setDescription(`${victim} Kullanıcısının geçmiş ve şuanki cezaları aşşağıda belirtilmiştir.`) 53 | .addField(`➜ Kullanıcının Cezaları`, `${newList} ** **`, true) 54 | .setAuthor(message.author.username, message.author.avatarURL({ dynamic: true }))); 55 | } 56 | if (react.emoji.name == "◀") { 57 | if (liste.slice((page - 1) * 10 - 10, (page - 1) * 10).length <= 0) return; 58 | page -= 1; 59 | let newList = liste.slice(page == 1 ? 0 : page * 10 - 10, page * 10).join("\n"); 60 | msg.edit(new MessageEmbed() 61 | .setDescription(`${victim} Kullanıcısının geçmiş ve şuanki cezaları aşşağıda belirtilmiştir.`) 62 | .addField(`➜ Kullanıcının Cezaları`, `${newList} ** **`, true) 63 | .setAuthor(message.author.username, message.author.avatarURL({ dynamic: true }))); 64 | } 65 | if (react.emoji.name == "❌") { 66 | msg.edit(`Bu Panel 10 Saniye sonra silinecektir`).then(x => x.delete({timeout: 10000})); 67 | collector.stop(); 68 | } 69 | }) 70 | } 71 | }); 72 | } 73 | module.exports.settings = { 74 | Commands: ["sicil","geçmiş"], 75 | Usage: "sicil ", 76 | Description: "Etiketlediğin kişinin sunucu içerisinde aldığı cezaları listelersin.", 77 | Category: "General", 78 | Activity: true, 79 | cooldown: 15000 80 | } -------------------------------------------------------------------------------- /TheSatuke/Commands/Spec/[14] Go.js: -------------------------------------------------------------------------------- 1 | const { Message, Client, MessageEmbed, Discord, Application, MessageFlags} = require("discord.js"); 2 | const Config = require("../../Configuration/Config.json"); 3 | const Settings = require("../../Configuration/Settings.json"); 4 | const moment = require("moment"); 5 | require("moment-timezone"); 6 | require("moment-duration-format") 7 | moment.locale("tr") 8 | 9 | /** 10 | * @param {Client} client 11 | * @param {Message} message 12 | * @param {Array} args 13 | */ 14 | 15 | module.exports.execute = async (client, message, args) => { 16 | 17 | if(!message.member.hasPermission("ADMINISTRATOR") && !Settings.Transporter.Roles.some(authRole => message.member.roles.cache.has(authRole))) 18 | return message.lineReply(`${Settings.emojiler.iptal} Bu komudu kullanmaya yetkin yetmiyor :c`).then(x => x.delete({timeout: 7500})); 19 | if (!message.member.voice.channelID) 20 | return message.lineReply(`${Settings.emojiler.iptal} Bir ses kanalında olmalısın.`); 21 | 22 | let member = message.mentions.members.first() || message.guild.members.cache.get(args[0]) || message.member; 23 | 24 | if (!member) 25 | return message.lineReply(`${Settings.emojiler.iptal} Bir üye etiketle ve tekrardan dene.`); 26 | 27 | if (!member.voice.channelID) 28 | return message.lineReply(`${Settings.emojiler.iptal} Bu kullanıcı herhangi bir ses kanalında bulunmuyor.`); 29 | 30 | if (message.member.voice.channelID === member.voice.channelID) 31 | return message.lineReply(`${Settings.emojiler.iptal} Zaten aynı kanaldasınız.`); 32 | 33 | let embed = new MessageEmbed().setColor(Config.EmbedColor).setAuthor(message.member.displayName, message.author.avatarURL({ dynamic: true })).setFooter(Config.Status) 34 | 35 | if (message.member.permissions.has("ADMINISTRATOR")) { 36 | message.member.voice.setChannel(member.voice.channel) 37 | message.react(Settings.emojiler.tik) 38 | message.lineReply(`${message.author}, ${member} kişisinin yanına gittiniz.`) 39 | } 40 | 41 | 42 | else { 43 | const question = await message.lineReply(member.toString(), { embed: embed.setDescription(`${member}, ${message.author} **${member.voice.channel.name}** odasına gelmek istiyor. Kabul ediyor musun?`) }); 44 | await question.react(Settings.emojiler.tik); 45 | await question.react(Settings.emojiler.iptal); 46 | const answer = await question.awaitReactions((reaction, user) => [Settings.emojiler.tik, Settings.emojiler.iptal].includes(reaction.emoji.toString()) && user.id === member.user.id, { max: 1, time: 60000, errors: ["time"] }).catch(() => { question.edit(embed.setDescription("İşlem iptal edildi!")) }); 47 | 48 | if (answer.first().emoji.toString() === Settings.emojiler.tik) { 49 | 50 | embed.setColor(Config.EmbedColor); 51 | question.delete(); 52 | message.lineReply(`${Settings.emojiler.tik} ${message.author}, ${member} kişisinin yanına gittiniz.`) 53 | message.member.voice.setChannel(member.voice.channel); 54 | } 55 | 56 | else { 57 | embed.setColor(Config.EmbedColor); 58 | question.delete(); 59 | } 60 | } 61 | } 62 | module.exports.settings = { 63 | Commands: ["git"], 64 | Usage: "git ", 65 | Description: "Etiketlemiş olduğun kişinin yanına gidersin.", 66 | Category: "Move", 67 | Activity: true 68 | } -------------------------------------------------------------------------------- /TheSatuke/Commands/Spec/[15] Transporter.js: -------------------------------------------------------------------------------- 1 | const { Message, Client, MessageEmbed, Discord, Application, MessageFlags} = require("discord.js"); 2 | const Config = require("../../Configuration/Config.json"); 3 | const Settings = require("../../Configuration/Settings.json"); 4 | const moment = require("moment"); 5 | require("moment-timezone"); 6 | require("moment-duration-format") 7 | moment.locale("tr") 8 | 9 | /** 10 | * @param {Client} client 11 | * @param {Message} message 12 | * @param {Array} args 13 | */ 14 | module.exports.execute = async (client, message, args) => { 15 | if(!message.member.hasPermission("ADMINISTRATOR") && !Settings.Transporter.Roles.some(authRole => message.member.roles.cache.has(authRole))) 16 | return message.lineReply(`${Settings.emojiler.iptal} Bu komudu kullanmaya yetkin yetmiyor :c`).then(x => x.delete({timeout: 7500})); 17 | 18 | if (!message.member.voice.channelID) 19 | return message.lineReply(`${Settings.emojiler.iptal} Bir ses kanalında olmalısın.`); 20 | let member = message.mentions.members.first() || message.guild.members.cache.get(args[0]) || message.member; 21 | 22 | if (!member) 23 | return message.lineReply(`${Settings.emojiler.iptal} Bir üye etiketle ve tekrardan dene.`); 24 | 25 | if (!member.voice.channelID) 26 | return message.lineReply(`${Settings.emojiler.iptal} Bu kullanıcı herhangi bir ses kanalında bulunmuyor.`); 27 | 28 | if (message.member.voice.channelID === member.voice.channelID) 29 | return message.channel.send(`${Settings.emojiler.iptal} Zaten aynı kanaldasınız.`); 30 | 31 | let embed = new MessageEmbed().setColor(Config.EmbedColor).setAuthor(message.member.displayName, message.author.avatarURL({ dynamic: true })).setFooter(Config.Status) 32 | 33 | if (message.member.permissions.has("ADMINISTRATOR")) { 34 | member.voice.setChannel(message.member.voice.channelID); 35 | message.react(Settings.emojiler.tik) 36 | message.lineReply(`${Settings.emojiler.tik} ${message.author}, ${member} kişisini yanınıza taşıdınız.`) 37 | } 38 | else { 39 | const question = await message.channel.send(member.toString(), { embed: embed.setDescription(`${member}, ${message.author} \`${message.member.voice.channel.name}\` seni odasına çekmek istiyor. Kabul ediyor musun?`) }); 40 | await question.react(Settings.emojiler.tik); 41 | await question.react(Settings.emojiler.iptal); 42 | 43 | const answer = await question.awaitReactions((reaction, user) => [Settings.emojiler.tik, Settings.emojiler.iptal].includes(reaction.emoji.toString()) && user.id === member.user.id, { max: 1, time: 60000, errors: ["time"] }).catch(() => { question.edit(embed.setDescription("İşlem iptal edildi!")) }); 44 | if (answer.first().emoji.toString() === Settings.emojiler.tik) { 45 | embed.setColor(Config.EmbedColor); 46 | question.delete(); 47 | message.lineReply(`${Settings.emojiler.tik} ${message.author}, ${member} kişisini yanınıza taşıdınız.`) 48 | member.voice.setChannel(message.member.voice.channelID); 49 | } 50 | else { 51 | embed.setColor(Config.EmbedColor); 52 | question.delete(); 53 | } 54 | } 55 | } 56 | 57 | module.exports.settings = { 58 | Commands: ["çek","transport","taşı"], 59 | Usage: "çek ", 60 | Description: "Etiketlemiş olduğun kişiyi yanına çekersin.", 61 | Category: "Move", 62 | Activity: true 63 | } -------------------------------------------------------------------------------- /TheSatuke/Commands/Spec/[15] VoiceQuery.js: -------------------------------------------------------------------------------- 1 | const { Message, Client, MessageEmbed, Discord, Application, MessageFlags} = require("discord.js"); 2 | const Settings = require("../../Configuration/Settings.json"); 3 | const moment = require("moment"); 4 | 5 | /** 6 | * @param {Client} client 7 | * @param {Message} message 8 | * @param {Array} args 9 | */ 10 | module.exports.execute = async (client, message, args) => { 11 | 12 | let victim = message.mentions.members.first() || (args[0] ? await message.guild.getMember(args[0]) : undefined); 13 | if (!victim) 14 | return message.lineReply(`${Settings.emojiler.iptal} Birisini Etiketlemelisin..`); 15 | message.lineReply(`> ${Settings.emojiler.tik} Bu Kullanıcı ${victim.voice.channelID ? "**<#" + victim.voice.channel.id + "> **Kanalında seste.**" : "**Herhangi bir kanalda değil.**"}`); 16 | } 17 | 18 | module.exports.settings = { 19 | Commands: ["n","nerde","Seskontrol","ses-kontrol"], 20 | Usage: "voice", 21 | Description: "", 22 | Category: "General", 23 | Activity: true 24 | } -------------------------------------------------------------------------------- /TheSatuke/Commands/Spec/[16] SlowMode.js: -------------------------------------------------------------------------------- 1 | const { Message, Client, MessageEmbed, Discord, Application, MessageFlags} = require("discord.js"); 2 | const Settings = require("../../Configuration/Settings.json"); 3 | 4 | /** 5 | * @param {Client} client 6 | * @param {Message} message 7 | * @param {Array} args 8 | */ 9 | 10 | module.exports.execute = async (client, message, args) => { 11 | 12 | if(!message.member.hasPermission("ADMINISTRATOR") && !Settings.Roles.Owner.some(authRole => message.member.roles.cache.has(authRole))) 13 | return message.lineReply(`${Settings.emojiler.iptal} Bu komudu kullanmaya yetkin yetmiyor :c`).then(x => x.delete({timeout: 7500})); 14 | const number = args[0]; 15 | if (isNaN(number)) return message.lineReply(`${Settings.emojiler.iptal} Geçerli bir süre girmelisin.`).then(x => x.delete({timeout: 7500})); 16 | if (number > 100) return message.lineReply(`${Settings.emojiler.iptal} Süre en fazla **100** olmalıdır.`).then(x => x.delete({timeout: 7500})); 17 | 18 | message.channel.setRateLimitPerUser(args[0]); 19 | message.lineReply(`${Settings.emojiler.tik} Kanalın yavaş modu değiştirildi. **${number} Saniye** olarak ayarlandı. 20 | 21 | \`\`\`Yeni kanalın yavaş mod saniyesi: "${number}"\`\`\``); 22 | 23 | }, 24 | module.exports.settings = { 25 | Commands: ["slowmode"], 26 | Usage: "slowmode ", 27 | Description: "", 28 | Category: "Advanced", 29 | Activity: true 30 | } -------------------------------------------------------------------------------- /TheSatuke/Commands/Spec/[17] UnLock.js: -------------------------------------------------------------------------------- 1 | const { Message, Client, MessageEmbed, Discord, Application, MessageFlags} = require("discord.js"); 2 | const Settings = require("../../Configuration/Settings.json"); 3 | 4 | /** 5 | * @param {Client} client 6 | * @param {Message} message 7 | * @param {Array} args 8 | */ 9 | 10 | module.exports.execute = async (client, message, args) => { 11 | if(!message.member.hasPermission("ADMINISTRATOR") && !Settings.Roles.Owner.some(authRole => message.member.roles.cache.has(authRole))) 12 | return message.lineReply(`${Settings.emojiler.iptal} Bu komudu kullanmaya yetkin yetmiyor :c`).then(x => x.delete({timeout: 7500})); 13 | let channel = message.channel; 14 | let everyone = message.guild.roles.cache.find(a => a.name === '@everyone'); 15 | channel.updateOverwrite(everyone, { 'SEND_MESSAGES': true }, 'Kilitleyen Kişi: '+ message.author.tag); 16 | message.lineReply(`${Settings.emojiler.tik} **Kanal üzerinde değişiklikler yapıldı.** 17 | 18 | \`\`\`Yazma Kilidi Kaldırıldı!\`\`\``); 19 | 20 | }; 21 | module.exports.settings = { 22 | Commands: ["unlock","kilitaç","kilit-ac","Kilit-ac","un-lock"], 23 | Usage: "unlock", 24 | Description: "", 25 | Category: "Advanced", 26 | Activity: true 27 | } -------------------------------------------------------------------------------- /TheSatuke/Commands/Spec/[18] Unregister.js: -------------------------------------------------------------------------------- 1 | const { Message, Client, MessageEmbed, Discord, Application, MessageFlags} = require("discord.js"); 2 | const Settings = require("../../Configuration/Settings.json"); 3 | const User = require("../../Models/Database/User"); 4 | 5 | /** 6 | * @param {Client} client 7 | * @param {Message} message 8 | * @param {Array} args 9 | */ 10 | 11 | module.exports.execute = async (client, message, args) => { 12 | 13 | 14 | if(!message.member.hasPermission("ADMINISTRATOR") && !Settings.Roles.Commander.some(authRole => message.member.roles.cache.has(authRole))) 15 | return message.lineReply(`${Settings.emojiler.iptal} Bu komudu kullanmaya yetkin yetmiyor :c`).then(x => x.delete({timeout: 7500})); 16 | 17 | let victim = message.mentions.members.first() || (args[0] ? await message.guild.getMember(args[0]) : undefined); 18 | if (!victim) return message.lineReply(`${Settings.emojiler.iptal} Kayıtsıza atacağım birisini belirtmelisin.`).then(x => x.delete({timeout: 7500})); 19 | 20 | if (victim.roles.highest.position >= message.member.roles.highest.position) 21 | return message.lineReply(`${Settings.emojiler.iptal} Senin rolünden üst yada aynı roldeki birisini kayıtsıza atamazsın..`).then(x => x.delete({timeout: 7500})); 22 | 23 | if (!victim.manageable) 24 | return message.lineReply(`${Settings.emojiler.iptal} Bu kişinin yetkisi benden yüksek.`).then(x => x.delete({timeout: 7500})); 25 | 26 | let roles = Settings.Roles.Unregistered; 27 | victim.setRoles(roles); 28 | 29 | User.updateOne({ Id: message.author.id, Authorized: true }, { $inc: { "Usage.Unregistered": 1 } }).exec(); 30 | 31 | message.lineReply(`${Settings.emojiler.tik} ${victim} kullanıcısı **Kayıtsız** kısmına atıldı.`); 32 | } 33 | 34 | module.exports.settings = { 35 | Commands: ["unregister", "kayıtsız", "Kayıtsız","Kayitsiz","kayitsiz", "Unregister"], 36 | Usage: "unregister <@member|id>", 37 | Category: "Advanced", 38 | Description: "", 39 | Activity: true 40 | } -------------------------------------------------------------------------------- /TheSatuke/Commands/Spec/[19] Clear.js: -------------------------------------------------------------------------------- 1 | const { Message, Client, MessageEmbed, Discord, Application, MessageFlags} = require("discord.js"); 2 | const Settings = require("../../Configuration/Settings.json"); 3 | 4 | /** 5 | * @param {Client} client 6 | * @param {Message} message 7 | * @param {Array} args 8 | */ 9 | 10 | module.exports.execute = async (client, message, args) => { 11 | if(!message.member.hasPermission("MANAGE_MESSAGES") && !Settings.Roles.Yönetim.some(authRole => message.member.roles.cache.has(authRole))) return message.react(Settings.emojiler.iptalID); 12 | const silinecekmiktar = args.slice(0).join(''); 13 | if(silinecekmiktar .length < 1) { return message.reply(`${Settings.emojiler.iptal} Silinecek mesaj miktarını belirt`) } 14 | message.channel.bulkDelete(silinecekmiktar); 15 | message.channel.send(`${Settings.emojiler.tik} Toplam ${silinecekmiktar} mesaj sildim`).catch().then(message => { message.delete({timeout: 5000}) }); 16 | } 17 | module.exports.settings = { 18 | Commands: ["temizle","sil","Sil","Temizle","clear","Clear"], 19 | Usage: "temizle", 20 | Description: "", 21 | Category: "Advanced", 22 | Activity: true 23 | } -------------------------------------------------------------------------------- /TheSatuke/Commands/Spec/[1] VoiceChannelMuteAll.js: -------------------------------------------------------------------------------- 1 | const { Message, Client, MessageEmbed, Discord, Application, MessageFlags} = require("discord.js"); 2 | const Settings = require("../../Configuration/Settings.json"); 3 | 4 | /** 5 | * @param {Client} client 6 | * @param {Message} message 7 | * @param {Array} args 8 | */ 9 | 10 | module.exports.execute = async (client, message, args) => { 11 | 12 | if(!message.member.hasPermission("ADMINISTRATOR")) 13 | return message.lineReply(`${Settings.emojiler.iptal} Bu komudu kullanmaya yetkin yetmiyor :c`).then(x => x.delete({timeout: 7500})); 14 | let firstChannel = message.member.voice.channel.id; 15 | if(!firstChannel) return message.react(Settings.emojiler.iptal) 16 | 17 | if(!message.guild.channels.cache.get(firstChannel).members.array().filter(x => x.id !== message.member.id).size <= 0) return message.channel.send(`${Settings.emojiler.iptal} Bulunduğun kanalda senden başkası **bulunmuyor!**`) 18 | let firstChannelMembers = message.guild.channels.cache.get(firstChannel).members.array().filter(x => x.id !== message.member.id); 19 | 20 | firstChannelMembers.forEach((x, i) => { 21 | setTimeout(async () => { x.voice.setMute(true) }, i * 200)}) 22 | 23 | await message.lineReply(`> **<#${message.guild.channels.cache.get(firstChannel).id}>** kanalındaki tüm kullanıcılar susturuldu! 24 | 25 | \`\`\`Toplam Susturulan Kullanıcı: ${firstChannelMembers.length}\`\`\``) 26 | }, 27 | 28 | module.exports.settings = { 29 | Commands: ["allmute","all-mute","herkesi-sustur","herkesisustur"], 30 | Usage: "allmute", 31 | Description: "", 32 | Category: "Advanced", 33 | Activity: true 34 | } 35 | 36 | -------------------------------------------------------------------------------- /TheSatuke/Commands/Spec/[20} Afk.js: -------------------------------------------------------------------------------- 1 | const Discord = require('discord.js'); 2 | const Settings = require("../../Configuration/Settings.json"); 3 | const Config = require("../../Configuration/Config.json"); 4 | const afk = require("../../Models/Database/Afk"); 5 | 6 | module.exports.execute = async (client, message, args) => { 7 | const reason = args.join(" ") || "Sebep belirtilmedi."; 8 | await afk.findOneAndUpdate({ guildID: message.guild.id, userID: message.author.id }, { $set: { reason, date: Date.now() } }, { upsert: true }); 9 | message.lineReply(`Başarıyla afk moduna girdin.`).then((x) => x.delete({ timeout: 5000 })); 10 | if (message.member.manageable) message.member.setNickname(`[AFK] ${message.member.displayName}`); 11 | 12 | } 13 | 14 | module.exports.settings = { 15 | Commands: ["afk"], 16 | Usage: "afk ", 17 | Description: "Etiketlediğin kişinin aktif olan susturma cezalarından herhangi birini kaldırabilirsin.", 18 | Category: "General", 19 | permlevel: 0, 20 | Activity: true 21 | } 22 | -------------------------------------------------------------------------------- /TheSatuke/Commands/Spec/[21] Kick.js: -------------------------------------------------------------------------------- 1 | const { Message, Client, Application, MessageFlags} = require("discord.js"); 2 | const Discord = require("discord.js"); 3 | const Settings = require("../../Configuration/Settings.json"); 4 | const Helper = require("../../Utils/Helper"); 5 | const Config = require("../../Configuration/Config.json"); 6 | 7 | const moment = require("moment"); 8 | require("moment-timezone"); 9 | require("moment-duration-format") 10 | moment.locale("tr") 11 | 12 | const PM = require("../../Managers/PenalManager"); 13 | 14 | /** 15 | * @param {Client} client 16 | * @param {Message} message 17 | * @param {Array} args 18 | */ 19 | module.exports.execute = async (client, message, args) => { 20 | if(!message.member.hasPermission("ADMINISTRATOR") && !Settings.Penals.Ban.AuthRoles.some(authRole => message.member.roles.cache.has(authRole))) 21 | return message.lineReply("Bunu yapmaya yetkin yetmiyor :c"); 22 | 23 | let victim = message.mentions.users.first() || client.users.cache.get(args[0]) || await Helper.GetUser(args[0]); 24 | if(!victim) 25 | return message.lineReply(`${Settings.emojiler.iptal} Kickleyeceğin bir kullanıcı belirtmelisin.`); 26 | 27 | let reason = args.splice(1).join(" "); 28 | if(!reason) 29 | return message.lineReply("Geçerli \`Kick\` sebebi belirtmelisin."); 30 | 31 | let member = await message.guild.getMember(victim.id); 32 | if(!member) return message.lineReply(`${victim} Bu kullanıcı sunucuda bulamıyorum!`); 33 | 34 | if(member && member.roles.highest.position >= message.member.roles.highest.position) 35 | return message.lineReply("Senin rolünden üstte ya da aynı roldeki birisini sunucudan atamazsın!"); 36 | 37 | if(member && !member.kickable) 38 | return message.lineReply("Botta Bir Hata Var \`Satuke'ye\` Ulaşınız."); 39 | 40 | member.kick(`Sebep: ${reason}`).catch(); 41 | let document = await PM.addPenal(victim.id, message.author.id, PM.Types.KICK, reason); 42 | 43 | message.channel.send(`${victim} (\`${victim.id}\`), ${message.author} Tarafından **__${reason}__** Sebebiyle sunucudan \`Atıldı\`, Ceza Numarası - (\`#${document.Id}\`) ${Settings.emojiler.tik}`) 44 | message.react(Settings.emojiler.onayID) 45 | 46 | let time = args[1]; 47 | let cıkaralım = time + Date.parse(new Date()); 48 | let şuanki = moment(Date.now()).format("LLL"); 49 | let sonraki = moment(cıkaralım).format("LLL"); 50 | let logKanali = client.channels.cache.find(a => a.id == Settings.Penals.Kick.Log) 51 | 52 | const embed = new Discord.MessageEmbed() 53 | .setDescription(`${victim} Kullanıcısı, ${message.author} tarafından **Ban** adlı ceza ile cezalandırıldı.`) 54 | .addField(`Ceza Numarası`,`${document.Id}`, true) 55 | .addField(`Ceza Sebebi`,`${reason}`, true) 56 | .addField(`Ceza Türü`,`Ban`, true) 57 | .addField(`Yetkili`,`${message.author}`, true) 58 | .addField(`Kullanıcı`,`${victim}`, true) 59 | .addField(`Ceza Başlangıc`,`${şuanki}`, true) 60 | .addField(`Ceza Bitiş`,`Geçici`, true) 61 | .setColor(Config.EmbedColor).setAuthor(message.member.displayName, message.author.avatarURL({ dynamic: true })).setFooter(Config.Status) 62 | //client.channels.cache.get(Log.Log.TransporterLog).send(embed) 63 | logKanali.send(embed) 64 | 65 | 66 | // message.guild.log(message.author, victim, document, Settings.Penals.Kick.Log); 67 | } 68 | 69 | module.exports.settings = { 70 | Commands: ["kick", "at"], 71 | Usage: "kick <@member/id> [reason]", 72 | Description: "Bahsettiğin kişiyi sunucudan atarsın.", 73 | Category: "Criminal", 74 | Activity: true 75 | } -------------------------------------------------------------------------------- /TheSatuke/Commands/Spec/[22] YetkiliSay.js: -------------------------------------------------------------------------------- 1 | const Settings = require("../../Configuration/Settings.json"); 2 | const { Client } = require('discord.js'); 3 | 4 | module.exports.execute = async (client, message, args) => { 5 | if (!message.member.hasPermission("ADMINISTRATOR")); 6 | 7 | let yetkili = message.guild.roles.cache.get(Settings.Roles.Commander) 8 | let ses = message.guild.members.cache.filter(user => user.roles.highest.position >= user.position && user.voice.channel && !user.user.bot && user.presence.status !== "offline"); 9 | let ses2 = message.guild.members.cache.filter(member => member.roles.highest.position >= yetkili.position && !member.voice.channel && !member.user.bot && member.presence.status !== "offline"); 10 | let kapalı = message.guild.members.cache.filter(s => !s.user.bot && s.presence.status === "offline").size 11 | let dnd = message.guild.members.cache.filter(s => !s.user.bot && s.presence.status === "dnd").size 12 | let online = message.guild.members.cache.filter(s => !s.user.bot && s.presence.status === "online").size 13 | let idle = message.guild.members.cache.filter(s => !s.user.bot && s.presence.status === "idle").size 14 | let toplam = message.guild.members.cache.filter(member => member.roles.highest.position >= yetkili.position && !member.user.bot); 15 | 16 | 17 | message.channel.send(`\`\`\`diff 18 | - #TOPLAM | -AKTIF | #KAPALI | #SESTE | #SESTEDEGIL 19 | ------------------------------------------------\n 20 | ${toplam.size} Kisi | ${dnd + online + idle} Kisi | ${kapalı} Kisi | ${ses.size} Kisi | ${ses2.size} Kisi \`\`\``) 21 | message.channel.send(` 22 | Seste Olmayan Kişiler\n\n${ses2.map(y => y).join(', ') || "Herkes Seste Mükemmel!"}`) 23 | }; 24 | 25 | module.exports.settings = { 26 | Commands: ["ysay"], 27 | Usage: "ysay", 28 | Description: "", 29 | Category: "Advanced", 30 | Activity: true 31 | } -------------------------------------------------------------------------------- /TheSatuke/Commands/Spec/[23] Toplantı.js: -------------------------------------------------------------------------------- 1 | const { Message, Client, MessageEmbed, Discord, Application, MessageFlags} = require("discord.js"); 2 | const Settings = require("../../Configuration/Settings.json"); 3 | 4 | /** 5 | * @param {Client} client 6 | * @param {Message} message 7 | * @param {Array} args 8 | */ 9 | 10 | let satuke = Settings.Roles.ToplantıPerm; 11 | 12 | module.exports.execute = async (client, message, args) => { 13 | if(!message.member.hasPermission("ADMINISTRATOR") && !Settings.Roles.Owner.some(authRole => message.member.roles.cache.has(authRole))) 14 | return message.lineReply(`${Settings.emojiler.iptal} Bu komudu kullanmaya yetkin yetmiyor :c`).then(x => x.delete({timeout: 7500})); 15 | let embed = new MessageEmbed() 16 | .setAuthor(message.member.displayName, message.author.avatarURL({dynamic: true})) 17 | .setFooter(Config.Status) 18 | .setColor(Config.EmbedColor) 19 | 20 | let x = args[0]; 21 | if(!x) return message.channel.send(embed.setDescription(`Bir işlem belirtiniz. **.toplantı yoklama / katıldıal / unmuteall / mute**`)).catch(e => { }) 22 | 23 | if(x === "katıldıal"){ 24 | let membr = message.guild.members.cache.filter(member => member.roles.cache.has(satuke) && !member.user.bot); 25 | membr.array().forEach((member, index) => { 26 | setTimeout(() => { 27 | member.roles.remove(satuke).catch(); 28 | }, index * 1250) 29 | }); 30 | return message.channel.send(embed.setDescription(` 31 | Rol Alınmaya Başlandı. 32 | Katıldı Rolü *Alınacak* Yetkili Sayısı: \`${membr.size}\``)) 33 | } 34 | 35 | if(x === "yoklama"){ 36 | let katıldı = message.member.voice.channel.members.filter(member => !member.roles.cache.has(satuke) && !member.user.bot) 37 | katıldı.array().forEach((member, index) => { 38 | setTimeout(async() => { 39 | member.roles.add(satuke) 40 | }, index * 750) 41 | }) 42 | 43 | return message.channel.send(embed.setDescription(` 44 | Rol Dağıtılmaya Başlandı. 45 | Katıldı Rolü *Verilecek* Yetkili Sayısı: \`${katıldı.size}\``)) 46 | } 47 | 48 | if(x === "unmuteall"){ 49 | let channel = message.member.voice.channel.id 50 | if(!channel) return message.channel.send(`Bir ses kanalında değilsin.`) 51 | if(!message.guild.channels.cache.get(channel).members.array().filter(x => x.id !== message.member.id).size <= 0) return message.channel.send(`Ses Kanalında Sadece Sen Varsın nabi10amkqwe?`) 52 | let channelMembers = message.guild.channels.cache.get(channel).members.array().filter(x => x.id !== message.member.id); 53 | channelMembers.forEach((x, i) => { 54 | setTimeout(async () => { 55 | x.voice.setMute(false) 56 | }, i*200) 57 | }) 58 | await message.channel.send(embed.setDescription(`**${message.guild.channels.cache.get(channel).name}** Adlı kanaldaki \`${channelMembers.length}\` adet üyenin susturulması kaldırıldı!`)) 59 | } 60 | 61 | if(x === "mute"){ 62 | let channel = message.member.voice.channel.id 63 | 64 | if(!channel) return message.channel.send(`Bir ses kanalında değilsin.`) 65 | if(!message.guild.channels.cache.get(channel).members.array().filter(x => x.id !== message.member.id).size <= 0) return message.channel.send(`Ses Kanalında Sadece Sen Varsın nabi10amkqwe?`) 66 | 67 | let channelMembers = message.guild.channels.cache.get(channel).members.array().filter(x => x.id !== message.member.id); 68 | 69 | channelMembers.forEach((x, i) => { 70 | setTimeout(async () => { 71 | x.voice.setMute(true) 72 | }, i*200) 73 | }) 74 | 75 | await message.channel.send(embed.setDescription(`**${message.guild.channels.cache.get(channel).name}** Adlı kanaldaki \`${channelMembers.length}\` adet üye susturuldu!`)) 76 | } 77 | } 78 | 79 | module.exports.settings = { 80 | Commands: ["t","toplantı"], 81 | Usage: "toplantı", 82 | Description: "", 83 | Category: "Advanced", 84 | Activity: true 85 | } -------------------------------------------------------------------------------- /TheSatuke/Commands/Spec/[24] CezaID.js: -------------------------------------------------------------------------------- 1 | const { Message, Client, MessageEmbed, Discord, Application, MessageFlags} = require("discord.js"); 2 | const Settings = require("../../Configuration/Settings.json"); 3 | const Config = require("../../Configuration/Config.json"); 4 | const ceza = require("../../Models/Database/Penal"); 5 | const Penal = require("../../Models/Database/Penal"); 6 | 7 | /** 8 | * @param {Client} client 9 | * @param {Message} message 10 | * @param {Array} args 11 | */ 12 | 13 | var mongoose = require("mongoose"); 14 | var stringTabe = require("string-table"); 15 | var moment = require("moment"); 16 | moment.locale("tr") 17 | 18 | /** 19 | * @param {Client} client 20 | * @param {Message} message 21 | * @param {Array} args 22 | */ 23 | 24 | /* 25 | Id: Number, 26 | Activity: { type: Boolean, default: true }, 27 | Temporary: { type: Boolean, default: false }, 28 | Time: { type: Number, default: Date.now() }, 29 | FinishTime: Number, 30 | Admin: String, 31 | User: String, 32 | Reason: String, 33 | Type: String 34 | }); 35 | */ 36 | 37 | module.exports.execute = async (client, message, args) => { 38 | let target = Number(args[0]) 39 | if (!target) return message.channel.send(`${Settings.emojiler.iptal} Lütfen cezalarına bakmak istediğiniz ID'yi giriniz.`) 40 | let data = await ceza.find({}).then(x => x) 41 | let embed = new MessageEmbed() 42 | .setAuthor(message.guild.name, message.guild.iconURL({dynamic:true})) 43 | .setColor(Config.EmbedColor) 44 | .setFooter(Config.Status) 45 | .setDescription(`${data.filter(x => Number(x.Id) == target).map(veri => ` 46 | 47 | ${message.guild.members.cache.get(veri.User) ? `<@${veri.User}> (<@&${message.guild.members.cache.get(veri.User).roles.highest.id}>)` : `(\`${veri.User}\`) ID'li`} kişisine uygulanan **${target}** numaralı ceza bilgisi; 48 | 49 | ${Settings.emojiler.ban} Ceza Türü: \`${veri.Type}\` 50 | ${Settings.emojiler.ban} Ceza Sebebi: \`${veri.Reason}\` 51 | ${Settings.emojiler.ban} Ceza Durumu: \`${veri.Activity == true ? "#Aktif" : "#Cezası Bitti"}\` 52 | ${Settings.emojiler.ban} Ceza Atan Staff: \`${veri.Admin}\` 53 | ${Settings.emojiler.ban} Ceza Başlangıc: \`${moment(Number(veri.Time)).format('LLL') || "S"}\` 54 | ${Settings.emojiler.ban} Ceza Bitiş: \`${veri.Bitis == "O" ? "Online" : veri.Bitis == "Offline" ? "Offline" : moment(Number(veri.FinishTime)).format('LLL') || "Süresiz"}\``)}`) 55 | 56 | await message.lineReply (embed); 57 | 58 | } 59 | 60 | module.exports.settings = { 61 | Commands: ["id","cezaid"], 62 | Usage: "Cezaid", 63 | Description: "", 64 | Category: "General", 65 | Activity: true 66 | } 67 | -------------------------------------------------------------------------------- /TheSatuke/Commands/Spec/[25] BaglantiKes.js: -------------------------------------------------------------------------------- 1 | const { Message, Client } = require("discord.js"); 2 | const Settings = require("../../Configuration/Settings.json"); 3 | const Config = require("../../Configuration/Config.json"); 4 | 5 | /** 6 | * @param {Client} client 7 | * @param {Message} message 8 | * @param {Array} args 9 | */ 10 | 11 | module.exports.execute = async (client, message, args) => { 12 | if(![Settings.Transporter.Roles].some(role => message.member.roles.cache.get(role)) && (!message.member.hasPermission("ADMINISTRATOR"))) 13 | return message.lineReply(`${message.author} Komutu kullanmak için yetkin bulunmamakta.`).then(x => x.delete({timeout: 5000})); 14 | 15 | const kanal = message.member.voiceChannel 16 | const member = message.guild.member(message.mentions.members.first() || message.guild.members.cache.get(args[0])); 17 | if(!member) return; 18 | if(message.member.roles.highest.position <= member.roles.highest.position) return message.lineReply(`${message.author}, Senin rolünden üstte ya da aynı roldeki birisini sesten atamazsın..`).then(x => x.delete({timeout: 5000})); 19 | message.guild.member(member.id).voice.setChannel(null) 20 | message.lineReply(`${member} Kullancısının ${message.author} Tarafından Bağlantısı Kesildi.`).then(x => x.delete({timeout: 7500})); 21 | message.react(Settings.emojiler.onayID) 22 | } 23 | 24 | module.exports.settings = { 25 | Commands: ["ses-kes","seskes","bağlantı-kes","kopar","bağlantıkes"], 26 | Usage: "bağlantı-kes ", 27 | Description: "Etiketlemiş olduğun kişinin ses bağlantısını kesersin.", 28 | Category: "Move", 29 | Activity: true 30 | } -------------------------------------------------------------------------------- /TheSatuke/Commands/Spec/[26] Eval.js: -------------------------------------------------------------------------------- 1 | const { Message, Client, MessageEmbed, Discord, Application, MessageFlags} = require("discord.js"); 2 | const moment = require("moment"); 3 | require("moment-timezone"); 4 | require("moment-duration-format") 5 | moment.locale("tr") 6 | 7 | /** 8 | * @param {Client} client 9 | * @param {Message} message 10 | * @param {Array} args 11 | */ 12 | 13 | module.exports.execute = async (client, message, args) => { 14 | if (message.author.id != "707325480378040430") return; 15 | if (!args[0]) return; 16 | let code = args.join(' '); 17 | 18 | try { 19 | var evaled = clean(await eval(code)); 20 | if(evaled.match(new RegExp(`${client.token}`, 'g'))) evaled.replace(client.token, "Ups! Did you take your head?"); 21 | message.channel.send(`${evaled.replace(client.token, "Ups! Did you take your head?")}`, {code: "js", split: true}); 22 | } catch(err) { message.channel.send(err, {code: "js", split: true}) }; 23 | }; 24 | 25 | module.exports.settings = { 26 | Commands: ["eval"], 27 | Usage: "eval ", 28 | Category: "Owner", 29 | Description: "", 30 | cooldown: 5000, 31 | Activity: true 32 | } 33 | 34 | function clean(text) { 35 | if (typeof text !== "string") 36 | text = require("util").inspect(text, { depth: 0 }); 37 | text = text 38 | .replace(/`/g, "`" + String.fromCharCode(8203)) 39 | .replace(/@/g, "@" + String.fromCharCode(8203)); 40 | return text; 41 | } 42 | -------------------------------------------------------------------------------- /TheSatuke/Commands/Spec/[27] Uptime.js: -------------------------------------------------------------------------------- 1 | const { Message, Client, MessageEmbed, Discord, Application, MessageFlags} = require("discord.js"); 2 | const Settings = require("../../Configuration/Settings.json"); 3 | const moment = require("moment"); 4 | require("moment-timezone"); 5 | require("moment-duration-format") 6 | moment.locale("tr") 7 | 8 | /** 9 | * @param {Client} client 10 | * @param {Message} message 11 | * @param {Array} args 12 | */ 13 | 14 | module.exports.execute = async (client, message, args) => { 15 | if (message.author.id !== "707325480378040430") return 16 | let up = moment.duration(client.uptime).format(" D [gün], H [saat], m [dakika], s [saniye]"); 17 | message.channel.send(`${Settings.emojiler.tik} Yaklaşık **${up}** önce çalışmaya başladım.`) 18 | } 19 | module.exports.settings = { 20 | Commands: ["uptime"], 21 | Usage: "uptime", 22 | Activity: true, 23 | Category: "Owner", 24 | cooldown: 10000 25 | } -------------------------------------------------------------------------------- /TheSatuke/Commands/Spec/[28] BannedTag.js: -------------------------------------------------------------------------------- 1 | const { MessageEmbed } = require('discord.js') 2 | const Config = require("../../Configuration/Config.json"); 3 | const Settings = require("../../Configuration/Settings.json"); 4 | const data = require('../../Models/Database/Disabledtag'); 5 | const ms = require("ms") 6 | const moment = require("moment") 7 | require("moment-duration-format") 8 | /** 9 | * @param {Client} client 10 | * @param {Message} message 11 | * @param {Array} args 12 | */ 13 | 14 | var satuke = Settings.YasaklıTag.YasaklıTagRole; 15 | 16 | 17 | module.exports.execute = async (client, message, args) => { 18 | let embed = new MessageEmbed().setAuthor(message.author.tag, message.author.avatarURL({dynamic: true})).setFooter(Config.Footer).setColor('RANDOM') 19 | if (!message.member.hasPermission("ADMINISTRATOR")) return message.lineReply(`${Settings.emojiler.iptal} ${Text.YetkinYetmiyor}`) 20 | await data.findOne({ guild: message.guild.id }, async (err, res) => { 21 | if (args[0] == "ekle") { 22 | if (!args[1]) return message.lineReply(`${Settings.emojiler.iptal} Yasaklıya atılcak bir tag belir!`, message.author, message.channel) 23 | if (!res) { 24 | let arr = [] 25 | arr.push(args[1]) 26 | const newData = new data({ 27 | guild: message.guild.id, 28 | taglar: arr 29 | }) 30 | newData.save().catch(e => console.log(e)) 31 | let üyeler = message.guild.members.cache.filter(x => { 32 | return x.user.username.includes(args[1]) 33 | }) 34 | await message.lineReply("**" + args[1] + "** tagında " + üyeler.size + " kişi bulundu hepsine yasaklı tag permi veriyorum.", message.author, message.channel) 35 | client.yasaklıtag.push(args[1]) 36 | üyeler.map(x => { 37 | if (x.roles.cache.has(satuke)) return 38 | setTimeout(() => { 39 | x.roles.set(x.roles.cache.has(Settings.Penals.Jail.Role) ? [satuke, Settings.Penals.Jail.Role] : [satuke]) 40 | }, 1000) 41 | }) 42 | } else { 43 | let taglar = res.taglar 44 | if (taglar.includes(args[1])) return message.lineReply("Yasaklıya atmak istediğin tag veritabanında zaten yasaklı.", message.author, message.channel) 45 | res.taglar.push(args[1]) 46 | res.save().catch(e => console.log(e)) 47 | client.yasaklıtag.push(args[1]) 48 | let üyeler = message.guild.members.cache.filter(x => { 49 | return x.user.username.includes(args[1]) 50 | }) 51 | await message.lineReply("**" + args[1] + "** tagında " + üyeler.size + " kişi bulundu hepsine yasaklı tag permi veriyorum.", message.author, message.channel) 52 | üyeler.map(x => { 53 | if (x.roles.cache.has(satuke)) return 54 | setTimeout(() => { 55 | let roller = x.roles.cache.map(x => x.id) 56 | x.roles.remove(roller) 57 | x.roles.add(satuke) 58 | }, 1000) 59 | x.send("Kullanıcı isminde bulunan **"+ args[1] +"** tagı sunucumuzda yasaklı taga çekildiği için sunucuya erişimin kapatıldı. Tagı isminden kaldırdığında sunucuya tekrardan erişebileceksin. ") 60 | 61 | }) 62 | 63 | } 64 | } 65 | if (args[0] == "liste" && !args[1]) { 66 | if (!res) return await message.lineReply("Sunucuda yasaklanmış tag bulunmamakta.", message.author, message.channel) 67 | let num = 1 68 | let arrs = res.taglar.map(x => `\`${num++}.\` ${x} - (${client.users.cache.filter(s => s.username.includes(x)).size} üye)`) 69 | await message.lineReply(arrs.join("\n"), message.author, message.channel) 70 | } 71 | 72 | if (args[0] == "liste" && args[1] == "üye") { 73 | if (!args[2]) await message.lineReply("Üyelerini listelemek istediğin yasaklı tagı belirtmelisin.", message.author, message.channel) 74 | if (!res) return await message.lineReply("Veritabanında listelenecek yasaklı tag bulunmuyor.", message.author, message.channel) 75 | if (!res.taglar.includes(args[2])) return await message.lineReply("**" + res.taglar.join(",") + "** tag(ları) sunucuda yasaklanmış durumdadır. Belirttiğin tag veritabanında bulunmuyor.", message.author, message.channel) 76 | let üyeler = message.guild.members.cache.filter(x => { 77 | return x.user.username.includes(args[2]) 78 | }).map(x => "<@" + x.id + "> - (`" + x.id + "`)") 79 | let üyelerk = message.guild.members.cache.filter(x => { 80 | return x.user.username.includes(args[2]) 81 | }).map(x => "" + x.user.tag + " - (`" + x.id + "`)") 82 | let text = üyeler.join("\n") 83 | let texto = üyelerk.join("\n") 84 | const MAX_CHARS = 3 + 2 + text.length + 3; 85 | if (MAX_CHARS > 2000) { 86 | message.channel.send("Sunucuda çok fazla yasaklı (" + args[2] + ") taga ait kişi var bu yüzden txt olarak göndermek zorundayım.", { files: [{ attachment: Buffer.from(texto), name: "yasakli-tagdakiler.txt" }] }); 87 | } else { 88 | message.channel.send(text) 89 | } 90 | } 91 | 92 | if (args[0] == "kaldır") { 93 | if (!res) return await message.lineReply("Veritabanında kaldırılılacak yasaklı tag bulunmuyor.", message.author, message.channel) 94 | if (!res.taglar.includes(args[1])) return await message.lineReply("Belirttiğin tag yasaklı tag listesinde bulunmuyor", message.author, message.channel) 95 | let üyeler = message.guild.members.cache.filter(x => { 96 | return x.user.username.includes(args[1]) 97 | }) 98 | await message.lineReply("**" + args[1] + "** tagında " + üyeler.size + " kişi bulundu hepsineden yasaklı tag permini alıp sistemden tagı kaldırıyorum.", message.author, message.channel) 99 | res.taglar = res.taglar.filter((x) => !x.includes(args[1])); 100 | res.save().catch(e => console.log(e)) 101 | üyeler.map(x => { 102 | setTimeout(async () => { 103 | 104 | x.roles.set(Settings.Roles.Unregistered) 105 | }, 1000); 106 | x.send("İsminde olan ** " + args[1] + "**"+" tagı ile sunucumuz anlaşma sağladığı için yasaklı tagdan çıkarıldın. Sunucumuza tekrardan kayıt olabilirsin.") 107 | }) 108 | } 109 | 110 | if (args[0] == "kontrol") { 111 | if (!res) return await message.lineReply("Veritabanında kontrol edilecek yasaklı tag bulunmuyor.", message.author, message.channel) 112 | res.taglar.forEach(x => { 113 | let üye = message.guild.members.cache.filter(mems => { 114 | return mems.user.username.includes(x) && !mems.roles.cache.has(satuke) 115 | }).map(x => x.id) 116 | message.channel.send(`${x} tagı bulunup <@&${satuke}> rolü olmayan ${üye.length} kişiye rolü veriyorum.`) 117 | for (let i = 0; i < üye.length;i++) { 118 | setTimeout(() => { 119 | message.guild.members.cache.get(üye[i]).roles.add(satuke) 120 | }, (i + 1) * 1000) 121 | } 122 | }) 123 | } 124 | }) 125 | } 126 | 127 | module.exports.settings = { 128 | Commands: ["yasaklıtag","yasaklı-tag"], 129 | Usage: "yasaklıtag", 130 | Activity: true, 131 | permLevel: 7, 132 | Category: "Owner", 133 | cooldown: 10000 134 | } 135 | -------------------------------------------------------------------------------- /TheSatuke/Commands/Spec/[28] VoiceMute.js.js: -------------------------------------------------------------------------------- 1 | const { Message, Client, Application, MessageFlags} = require("discord.js"); 2 | const Discord = require("discord.js"); 3 | const Settings = require("../../Configuration/Settings.json"); 4 | const Config = require("../../Configuration/Config.json"); 5 | const moment = require("moment"); 6 | const ms = require("ms") 7 | const Helper = require("../../Utils/Helper"); 8 | const Penal = require("../../Models/Database/Penal"); 9 | const PM = require("../../Managers/PenalManager"); 10 | require("moment-timezone"); 11 | require("moment-duration-format") 12 | moment.locale("tr") 13 | 14 | /** 15 | * @param {Client} client 16 | * @param {Message} message 17 | * @param {Array} args 18 | */ 19 | 20 | module.exports.execute = async (client, message, args) => { 21 | if(!message.member.hasPermission("ADMINISTRATOR") && !Settings.Penals.VoiceMute.AuthRoles.some(authRole => message.member.roles.cache.has(authRole))) 22 | return message.lineReply(`${Settings.emojiler.iptal} Bu komudu kullanmaya yetkin yetmiyor :c`).then(x => x.delete({timeout: 7500})); 23 | 24 | let victim = message.mentions.users.first() || client.users.cache.get(args[0]) || await Helper.GetUser(args[0]); 25 | if(!victim) 26 | return message.lineReply(`${Settings.emojiler.iptal} Seste susturmak istediğin bir kullanıcıyı belirtmelisin.`).then(x => x.delete({timeout: 7500})); 27 | 28 | let time = args[1]; 29 | if(!time || !ms(time)) 30 | return message.lineReply("Lütfen geçerli bir süre girin. Örn: \`S: Saniye\` \`M: Dakika\`,\`H: Saat\`").then(x => x.delete({timeout: 7500})); 31 | time = ms(time); 32 | let reason = args.splice(2).join(" "); 33 | if(!reason) return message.lineReply(`${Settings.emojiler.iptal} Geçerli bir sebep belirtmelisin`).then(x => x.delete({timeout: 7500})); 34 | 35 | let member = await message.guild.getMember(victim.id); 36 | if(!member) return message.lineReply(`${victim} Bu kullanıcı sunucuda bulamıyorum.`).then(x => x.delete({timeout: 7500})); 37 | if(member && member.roles.highest.position >= message.member.roles.highest.position) 38 | return message.lineReply(`${Settings.emojiler.iptal} Senin rolünden üstte ya da aynı roldeki birisini sesli susturamazsın.`).then(x => x.delete({timeout: 7500})); 39 | 40 | if(member && member.manageable) { 41 | if(!member.roles.cache.has(Settings.Penals.VoiceMute.Role)) member.roles.add(Settings.Penals.VoiceMute.Role).catch(); 42 | if(member.voice.channelID && !member.voice.serverMute) member.voice.setMute(true).catch();} 43 | let document = await PM.addPenal(victim.id, message.author.id, PM.Types.TEMP_VOICE_MUTE, reason, true, Date.now(), time); 44 | 45 | message.channel.send(`${victim}, ${message.author} tarafından **__${reason}__** sebebiyle geçici olarak seslide susturuldu, Ceza Numarası - (\`#${document.Id}\`) ${Settings.emojiler.tik}`) 46 | message.react(Settings.emojiler.onayID) 47 | //message.guild.log(message.author, victim, document, Settings.Penals.VoiceMute.Log); 48 | 49 | let cıkaralım = time + Date.parse(new Date()); 50 | let şuanki = moment(Date.now()).format("LLL"); 51 | let sonraki = moment(cıkaralım).format("LLL"); 52 | 53 | let logKanali = client.channels.cache.find(a => a.id == Settings.Penals.VoiceMute.Log) 54 | const embed = new Discord.MessageEmbed() 55 | .setDescription(`${victim} Kullanıcısı, ${message.author} tarafından **Voice Mute** adlı ceza ile cezalandırıldı.`) 56 | .addField(`Ceza Numarası`,`${document.Id}`, true) 57 | .addField(`Ceza Sebebi`,`${reason}`, true) 58 | .addField(`Ceza Türü`,`Voice Mute`, true) 59 | .addField(`Yetkili`,`${message.author}`, true) 60 | .addField(`Kullanıcı`,`${victim}`, true) 61 | .addField(`Ceza Başlangıc`,`${şuanki}`, true) 62 | .addField(`Ceza Bitiş`,`${sonraki}`, true) 63 | .setColor(Config.EmbedColor).setAuthor(message.member.displayName, message.author.avatarURL({ dynamic: true })).setFooter(Config.Status) 64 | logKanali.send(embed); 65 | //client.channels.cache.get(Log.Log.MuteLog).send(embed) 66 | 67 | } 68 | 69 | module.exports.settings = { 70 | Commands: ["voicemute", "seslisustur","vmute","unvmute"], 71 | Usage: "voicemute <@user|id> [reason]", 72 | Description: "Bahsettiğin kişiyi sunucuda geçici olarak susturursun.", 73 | Category: "Criminal", 74 | Activity: true 75 | } 76 | -------------------------------------------------------------------------------- /TheSatuke/Commands/Spec/[29] Ban.js: -------------------------------------------------------------------------------- 1 | const { Message, Client, Application, MessageFlags} = require("discord.js"); 2 | const Discord = require("discord.js"); 3 | const PM = require("../../Managers/PenalManager"); 4 | const Settings = require("../../Configuration/Settings.json"); 5 | const Helper = require("../../Utils/Helper"); 6 | const moment = require("moment"); 7 | const Penal = require("../../Models/Database/Penal"); 8 | require("moment-timezone"); 9 | require("moment-duration-format") 10 | moment.locale("tr") 11 | 12 | /** 13 | * @param {Client} client 14 | * @param {Message} message 15 | * @param {Array} args 16 | */ 17 | 18 | module.exports.execute = async (client, message, args) => { 19 | if(!message.member.hasPermission("ADMINISTRATOR") && !Settings.Penals.Ban.AuthRoles.some(authRole => message.member.roles.cache.has(authRole))) 20 | return message.lineReply(`${Settings.emojiler.iptal} Bu komudu kullanmaya yetkin yetmiyor :c`).then(x => x.delete({timeout: 7500})); 21 | 22 | let victim = message.mentions.users.first() || client.users.cache.get(args[0]) || await Helper.GetUser(args[0]); 23 | if(!victim) return message.lineReply(`${Settings.emojiler.iptal} Yasaklamak istediğin bir kullanıcıyı belirtmelisin.`).then(x => x.delete({timeout: 7500})); 24 | 25 | let reason = args.splice(1).join(" "); 26 | if(!reason) return message.lineReply(`${Settings.emojiler.iptal} Geçerli \`Ban\` sebebi belirtmelisin.`).then(x => x.delete({timeout: 7500})); 27 | 28 | let member = await message.guild.getMember(victim.id); 29 | if(!member) return message.lineReply(`${Settings.emojiler.iptal} Bu kullanıcıyı sunucuda bulamıyorumBu kullanıcı sunucuda bulamıyorum.`).then(x => x.delete({timeout: 7500})); 30 | 31 | if(member && member.roles.highest.position >= message.member.roles.highest.position) return message.lineReply(`${Settings.emojiler.iptal} Kişi senden yüksek bir pozisyona sahip, onu yasaklayamazsın.`).then(x => x.delete({timeout: 7500})); 32 | if(member && !member.bannable) 33 | return message.lineReply(`${Settings.emojiler.iptal} Botta Bir Hata Var \`Satuke'ye\` Ulaşınız.`) 34 | message.guild.members.ban(victim.id, { reason: `Yetkili: ${message.author.username} | ${reason}`}).catch(); 35 | 36 | let document = await PM.addPenal(victim.id, message.author.id, PM.Types.BAN, reason); 37 | 38 | message.channel.send(`${victim}, ${message.author} tarafından **__${reason}__** sebebiyle sunucudan yasaklandı, Ceza Numarası - (\`#${document.Id}\`) ${Settings.emojiler.tik}`); 39 | message.react(Settings.emojiler.onayID) 40 | victim.send(`${message.author} Tarafından **__${reason}__** Sebebiyle **${message.guild.name}** adlı sunucudan uzaklaştırıldın. Ceza Numaran - (\`#${document.Id}\`)`); 41 | ///message.guild.log(message.author, victim, document, Log.Log.BanLog); 42 | let time = args[1]; 43 | let cıkaralım = time + Date.parse(new Date()); 44 | let şuanki = moment(Date.now()).format("LLL"); 45 | let sonraki = moment(cıkaralım).format("LLL"); 46 | let logKanali = client.channels.cache.find(a => a.id == Settings.Penals.Ban.Log) 47 | 48 | const embed = new Discord.MessageEmbed() 49 | .setDescription(`${victim} Kullanıcısı, ${message.author} tarafından **Ban** adlı ceza ile cezalandırıldı.`) 50 | .addField(`Ceza Numarası`,`${document.Id}`, true) 51 | .addField(`Ceza Sebebi`,`${reason}`, true) 52 | .addField(`Ceza Türü`,`Ban`, true) 53 | .addField(`Yetkili`,`${message.author}`, true) 54 | .addField(`Kullanıcı`,`${victim}`, true) 55 | .addField(`Ceza Başlangıc`,`${şuanki}`, true) 56 | .addField(`Ceza Bitiş`,`Kalıcı`, true) 57 | .setColor(Bot.EmbedColor).setAuthor(message.member.displayName, message.author.avatarURL({ dynamic: true })).setFooter(Bot.Status) 58 | //client.channels.cache.get(Log.Log.TransporterLog).send(embed) 59 | logKanali.send(embed) 60 | 61 | 62 | 63 | 64 | 65 | 66 | } 67 | 68 | module.exports.settings = { 69 | Commands: ["ban", "cezalandır","yak"], 70 | Usage: "ban <@user|id> [reason]", 71 | Description: "Bahsettiğin kişiyi sunucudan yasaklarsın.", 72 | Category: "Criminal", 73 | Activity: true 74 | } 75 | -------------------------------------------------------------------------------- /TheSatuke/Commands/Spec/[2] ChannelLock.js: -------------------------------------------------------------------------------- 1 | const { Message, Client, MessageEmbed, Discord, Application, MessageFlags} = require("discord.js"); 2 | const Settings = require("../../Configuration/Settings.json"); 3 | 4 | /** 5 | * @param {Client} client 6 | * @param {Message} message 7 | * @param {Array} args 8 | */ 9 | 10 | module.exports.execute = async (client, message, args) => { 11 | if(!message.member.hasPermission("ADMINISTRATOR") && !Settings.Roles.Owner.some(authRole => message.member.roles.cache.has(authRole))) 12 | return message.lineReply(`${Settings.emojiler.iptal} Bu komudu kullanmaya yetkin yetmiyor :c`).then(x => x.delete({timeout: 7500})); 13 | let channel = message.channel; 14 | let everyone = message.guild.roles.cache.find(a => a.name === '@everyone'); 15 | channel.updateOverwrite(everyone, { 'SEND_MESSAGES': false }, 'Kilitleyen Kişi: '+ message.author.tag); 16 | message.lineReply(`${Settings.emojiler.tik} **Kanal üzerinde değişiklikler yapıldı.** 17 | 18 | \`\`\`Yazma engeli koyuldu!\`\`\``); 19 | 20 | }; 21 | module.exports.settings = { 22 | Commands: ["lock","kilit"], 23 | Usage: "unlock", 24 | Description: "", 25 | Category: "Advanced", 26 | Activity: true 27 | } -------------------------------------------------------------------------------- /TheSatuke/Commands/Spec/[30} Jail.js: -------------------------------------------------------------------------------- 1 | const { Message, Client, Application, MessageFlags} = require("discord.js"); 2 | const Discord = require("discord.js"); 3 | const Config = require("../../Configuration/Config.json"); 4 | const Settings = require("../../Configuration/Settings.json"); 5 | const moment = require("moment"); 6 | const ms = require("ms"); 7 | 8 | const cezapuan = require("../../Models/Database/CezaPoint") 9 | 10 | const Helper = require("../../Utils/Helper"); 11 | const Penal = require("../../Models/Database/Penal"); 12 | const PM = require("../../Managers/PenalManager"); 13 | require("moment-timezone"); 14 | require("moment-duration-format") 15 | moment.locale("tr") 16 | 17 | /** 18 | * @param {Client} client 19 | * @param {Message} message 20 | * @param {Array} args 21 | */ 22 | 23 | module.exports.execute = async (client, message, args) => { 24 | if(!message.member.hasPermission("ADMINISTRATOR") && !Settings.Penals.Jail.AuthRoles.some(authRole => message.member.roles.cache.has(authRole))) 25 | return message.lineReply(`${Settings.emojiler.iptal} Bu komudu kullanmaya yetkin yetmiyor :c`).then(x => x.delete({timeout: 7500})); 26 | 27 | let victim = message.mentions.users.first() || client.users.cache.get(args[0]) || await Helper.GetUser(args[0]); 28 | if(!victim) 29 | return message.lineReply(`${Settings.emojiler.iptal} Cezalandırmak istediğin bir kullanıcıyı belirtmelisin.`).then(x => x.delete({timeout: 7500})); 30 | 31 | let time = args[1]; 32 | if(!time || !ms(time)) 33 | return message.lineReply("Lütfen geçerli bir süre girin. Örn: \`S: Saniye\` \`M: Dakika\`,\`H: Saat\`").then(x => x.delete({timeout: 7500})); 34 | time = ms(time); 35 | 36 | let reason = args.splice(2).join(" "); 37 | if(!reason) 38 | return message.lineReply(`${Settings.emojiler.iptal} Geçerli \`Ceza\` sebebi belirtmelisin.`).then(x => x.delete({timeout: 7500})); 39 | 40 | let member = await message.guild.getMember(victim.id); 41 | if(!member) return message.lineReply(`${victim} Bu kullanıcı sunucuda bulamıyorum.`).then(x => x.delete({timeout: 7500})); 42 | 43 | if(member && member.roles.highest.position >= message.member.roles.highest.position) 44 | return message.lineReply(`${Settings.emojiler.iptal} Senin rolünden üstte ya da aynı roldeki birisine ceza veremezsin.`).then(x => x.delete({timeout: 7500})); 45 | 46 | if(member && member.manageable) PM.setRoles(Settings.Penals.Jail.Role).catch(); 47 | let document = await PM.addPenal(victim.id, message.author.id, PM.Types.TEMP_JAIL, reason, true, Date.now(), time); 48 | 49 | message.channel.send(`${victim}, ${message.author} tarafından **__${reason}__** sebebiyle geçici olarak cezalandırıldı, Ceza Numarası - (\`#${document.Id}\`) ${Settings.emojiler.tik}`) 50 | message.react(Settings.emojiler.onayID) 51 | //message.guild.log(message.author, victim, document, Log.Log.JailedLog); 52 | 53 | 54 | let cıkaralım = time + Date.parse(new Date()); 55 | let şuanki = moment(Date.now()).format("LLL"); 56 | let sonraki = moment(cıkaralım).format("LLL"); 57 | let logKanali = client.channels.cache.find(a => a.id == Settings.Penals.Jail.Log) 58 | let logsend = client.channels.cache.find(a => a.id == "927658017359540314") 59 | 60 | const embed = new Discord.MessageEmbed() 61 | .setDescription(`${victim} Kullanıcısı, ${message.author} tarafından **Jail** adlı ceza ile cezalandırıldı.`) 62 | .addField(`Ceza Numarası`,`${document.Id}`, true) 63 | .addField(`Ceza Sebebi`,`${reason}`, true) 64 | .addField(`Ceza Türü`,`Jail`, true) 65 | .addField(`Yetkili`,`${message.author}`, true) 66 | .addField(`Kullanıcı`,`${victim}`, true) 67 | .addField(`Ceza Başlangıc`,`${şuanki}`, true) 68 | .addField(`Ceza Bitiş`,`${sonraki}`, true) 69 | .setColor(Config.EmbedColor).setAuthor(message.member.displayName, message.author.avatarURL({ dynamic: true })).setFooter(Config.Status) 70 | logKanali.send(embed) 71 | //client.channels.cache.get(Log.Log.TransporterLog).send(embed) 72 | 73 | } 74 | 75 | module.exports.settings = { 76 | Commands: ["jail", "cezalandır","karantina" ,"hapis","ceza"], 77 | Usage: "jail <@user/id> [reason]", 78 | Description: "Bahsettiğin kişiyi sunucuda geçici olarak cezalandırırsın.", 79 | Category: "Criminal", 80 | Activity: true 81 | } 82 | -------------------------------------------------------------------------------- /TheSatuke/Commands/Spec/[31] ChatMute.js: -------------------------------------------------------------------------------- 1 | const { Message, Client, Application, MessageFlags} = require("discord.js"); 2 | const Discord = require("discord.js"); 3 | const Settings = require("../../Configuration/Settings.json"); 4 | const client = global.client; 5 | const Config = require("../../Configuration/Config.json"); 6 | const moment = require("moment"); 7 | const ms = require("ms"); 8 | const Helper = require("../../Utils/Helper"); 9 | const Penal = require("../../Models/Database/Penal"); 10 | 11 | const PM = require("../../Managers/PenalManager"); 12 | require("moment-timezone"); 13 | require("moment-duration-format") 14 | moment.locale("tr") 15 | 16 | /** 17 | * @param {Client} client 18 | * @param {Message} message 19 | * @param {Array} args 20 | */ 21 | 22 | module.exports.execute = async (client, message, args) => { 23 | if(!message.member.hasPermission("ADMINISTRATOR") && !Settings.Penals.Mute.AuthRoles.some(authRole => message.member.roles.cache.has(authRole))) 24 | return message.lineReply(`${Settings.emojiler.iptal} Bu komudu kullanmaya yetkin yetmiyor :c`).then(x => x.delete({timeout: 7500})); 25 | 26 | let victim = message.mentions.users.first() || client.users.cache.get(args[0]) || await Helper.GetUser(args[0]); 27 | if(!victim) 28 | return message.lineReply(`${Settings.emojiler.iptal} Susturmak istediğin bir kullanıcıyı belirtmelisin.`).then(x => x.delete({timeout: 7500})); 29 | 30 | let time = args[1]; 31 | if(!time || !ms(time)) 32 | return message.lineReply("Lütfen geçerli bir süre girin. Örn: \`S: Saniye\` \`M: Dakika\`,\`H: Saat\`").then(x => x.delete({timeout: 7500})); 33 | time = ms(time); 34 | 35 | let reason = args.splice(2).join(" "); 36 | if(!reason) 37 | return message.lineReply(`${Settings.emojiler.iptal} Geçerli \`Susturma\` sebebi belirtmelisin.`).then(x => x.delete({timeout: 7500})); 38 | 39 | let cıkaralım = time + Date.parse(new Date()); 40 | let şuanki = moment(Date.now()).format("LLL"); 41 | let sonraki = moment(cıkaralım).format("LLL"); 42 | let member = await message.guild.getMember(victim.id); 43 | if(!member) return message.lineReply(`${Settings.emojiler.iptal} ${victim} Bu kullanıcı sunucuda bulamıyorum!`).then(x => x.delete({timeout: 7500})); 44 | 45 | if(member && member.roles.highest.position >= message.member.roles.highest.position) 46 | return message.lineReply(`${Settings.emojiler.iptal} Kişi senden yüksek bir pozisyona sahip, onu susturamazsın.`).then(x => x.delete({timeout: 7500})); 47 | 48 | if(member && member.manageable && !member.roles.cache.has(Settings.Penals.Mute.Role)) member.roles.add(Settings.Penals.Mute.Role).catch(); 49 | let document = await PM.addPenal(victim.id, message.author.id, PM.Types.TEMP_MUTE, reason, true, Date.now(), time, sonraki); 50 | message.channel.send(`${victim}, ${message.author} tarafından **__${reason}__** sebebiyle geçici olarak metin kanallarında susturuldu, Ceza Numarası - (\`#${document.Id}\`) ${Settings.emojiler.tik}`) 51 | message.react(Settings.emojiler.onayID) 52 | 53 | let logKanali = client.channels.cache.find(a => a.id == Settings.Penals.Mute.Log) 54 | const embed = new Discord.MessageEmbed() 55 | .setDescription(`${victim} Kullanıcısı, ${message.author} tarafından **Chat Mute** adlı ceza ile cezalandırıldı.`) 56 | .addField(`Ceza Numarası`,`${document.Id}`, true) 57 | .addField(`Ceza Sebebi`,`${reason}`, true) 58 | .addField(`Ceza Türü`,`Chat Mute`, true) 59 | .addField(`Yetkili`,`${message.author}`, true) 60 | .addField(`Kullanıcı`,`${victim}`, true) 61 | .addField(`Ceza Başlangıc`,`${şuanki}`, true) 62 | .addField(`Ceza Bitiş`,`${sonraki}`, true) 63 | .setColor(Config.EmbedColor).setAuthor(message.member.displayName, message.author.avatarURL({ dynamic: true })).setFooter(Config.Status) 64 | logKanali.send(embed); 65 | //client.channels.cache.get(Log.Log.TransporterLog).send(embed) 66 | //message.guild.log(message.author, victim, document, Log.Log.MuteLog); 67 | 68 | /* let newData = Penal({ 69 | userID: victim.id, 70 | Puan: 30, 71 | }); 72 | await newData.save(); { console.log(newData.Puan)} 73 | 74 | client.PuanLog(puanlogkanali, victim, 15) 75 | 76 | */ 77 | } 78 | 79 | module.exports.settings = { 80 | Commands: ["mute", "sustur"], 81 | Usage: "mute <@user|id> [reason]", 82 | Description: "Bahsettiğin kişiyi sunucuda geçici olarak susturursun.", 83 | Category: "Criminal", 84 | Activity: true 85 | } 86 | -------------------------------------------------------------------------------- /TheSatuke/Commands/Spec/[32] UnChatMute.js: -------------------------------------------------------------------------------- 1 | const { Client, Message } = require("discord.js"); 2 | const Settings = require("../../Configuration/Settings.json"); 3 | 4 | const PenalManager = require("../../Managers/PenalManager"); 5 | const Penal = require("../../Models/Database/Penal"); 6 | 7 | /** 8 | * @param {Client} client 9 | * @param {Message} message 10 | * @param {Array} args 11 | */ 12 | module.exports.execute = async (client, message, args) => { 13 | if (!message.member.hasPermission("ADMINISTRATOR") && !Settings.Penals.Mute.AuthRoles.some(authRole => message.member.roles.cache.has(authRole))) return message.reply("Bunu yapmaya yetkin yetmiyor :c"); 14 | 15 | let victim = message.mentions.users.first() || client.users.cache.get(args[0]) || await client.users.getUser(args[0]); 16 | if (!victim) return message.reply(`Geçerli Bir **@Satuke/ID** Belirtmelisin.`); 17 | 18 | let penals = await PenalManager.getPenals({ User: victim.id, Activity: true, $or: [{ Type: PenalManager.Types.TEMP_MUTE }, { Type: PenalManager.Types.MUTE }] }); 19 | if (penals.length <= 0) return message.reply(`${victim}(${victim.username}) Bu kullanıcının hiç **Susturma** cezası yok.`); 20 | 21 | let member = await message.guild.getMember(victim.id); 22 | if (member && member.roles.highest.position >= message.member.roles.highest.position) return message.reply("senin rolünden üstte ya da aynı roldeki birisini susturamazsın."); 23 | 24 | let cezaNumaraları = penals.map(penal => penal.Id); 25 | 26 | let msg = await message.reply(`${victim} kişisinin toplam **${penals.length}** adet sohbet susturması var. Cezalardan hangisin kaldırmak istiyorsunuz? \`(${cezaNumaraları.map(e => "#" + e).join(", ")})\``); 27 | 28 | let messages = await msg.channel.awaitMessages((m) => m.author.id == message.author.id && cezaNumaraları.some(cevap => m.content.toLowerCase().includes(cevap)), { 29 | max: 1, 30 | time: 15000 31 | }); 32 | 33 | if (messages.size <= 0) { 34 | return message.reply(`${message.author} ${member}, için başlatmış olduğun ceza kaldırma işlemi cevap vermediğin için iptal ediliyor.`); 35 | } 36 | 37 | let reply = messages.first(); 38 | let penalId = cezaNumaraları.find(e => reply.content.includes(e)); 39 | if (penalId) { 40 | penalId = Number(penalId); 41 | await Penal.updateMany({ Id: penalId }, { $set: { Activity: false } }).exec(); 42 | if (member && member.roles.cache.has(Settings.Penals.Mute.Role)) member.roles.remove(Settings.Penals.Mute.Role); 43 | 44 | message.reply(`${member} kullanıcısının \`#${penalId}\` numaralı \`Mute\` cezasını kaldırdın ${Settings.emojiler.tik}`); 45 | message.react(Settings.emojiler.onayID) 46 | } 47 | else message.reply(`${member} ${victim} (\`${victim.id}\`) sesli \`Mute\`cezası kaldırma işlemi iptal edildi.`); 48 | }; 49 | 50 | module.exports.settings = { 51 | Commands: ["unmute"], 52 | Usage: "unmute <@user|id>", 53 | Description: "Etiketlediğin kişinin aktif olan susturma cezalarından herhangi birini kaldırabilirsin.", 54 | Category: "Penal", 55 | Activity: true 56 | } -------------------------------------------------------------------------------- /TheSatuke/Commands/Spec/[33] UnJail.js: -------------------------------------------------------------------------------- 1 | const { Client, Message } = require("discord.js"); 2 | const Settings = require("../../Configuration/Settings.json"); 3 | 4 | const PenalManager = require("../../Managers/PenalManager"); 5 | const Penal = require("../../Models/Database/Penal"); 6 | 7 | /** 8 | * @param {Client} client 9 | * @param {Message} message 10 | * @param {Array} args 11 | */ 12 | module.exports.execute = async (client, message, args) => { 13 | if (!message.member.hasPermission("ADMINISTRATOR") && !Settings.Penals.Jail.AuthRoles.some(authRole => message.member.roles.cache.has(authRole))) return message.reply("Bunu yapmaya yetkin yetmiyor :c"); 14 | 15 | let victim = message.mentions.users.first() || client.users.cache.get(args[0]) || await client.users.getUser(args[0]); 16 | if (!victim) return message.reply(` Geçerli Bir **@Satuke/ID** Belirtmelisin.`); 17 | 18 | let penals = await PenalManager.getPenals({ User: victim.id, Activity: true, $or: [{ Type: PenalManager.Types.JAIL }, { Type: PenalManager.Types.TEMP_JAIL }] }); 19 | if (penals.length <= 0) return message.reply(`${victim}(${victim.username}) Bu kullanıcının hiç **Karantina** cezası yok.`); 20 | 21 | let member = await message.guild.getMember(victim.id); 22 | if (member && member.roles.highest.position >= message.member.roles.highest.position) return message.reply("senin rolünden üstte ya da aynı roldeki birisini susturamazsın."); 23 | 24 | let cezaNumaraları = penals.map(penal => penal.Id); 25 | 26 | let msg = await message.reply(`${victim} kişisinin toplam **${penals.length}** adet hapis var. Cezalardan hangisin kaldırmak istiyorsunuz? \`(${cezaNumaraları.map(e => "#" + e).join(", ")})\``); 27 | 28 | let messages = await msg.channel.awaitMessages((m) => m.author.id == message.author.id && cezaNumaraları.some(cevap => m.content.toLowerCase().includes(cevap)), { 29 | max: 1, 30 | time: 15000 31 | }); 32 | 33 | if (messages.size <= 0) { 34 | return message.reply(`${member}, (${victim}) İçin başlatmış olduğun **Karantina** kaldırma işlemine cevap vermediğin için işlem iptal edildi`); 35 | } 36 | 37 | let reply = messages.first(); 38 | let penalId = cezaNumaraları.find(e => reply.content.includes(e)); 39 | if (penalId) { 40 | penalId = Number(penalId); 41 | await Penal.updateMany({ Id: penalId }, { $set: { Activity: false } }).exec(); 42 | if (member && member.roles.cache.has(Settings.Penals.Jail.Role)) member.setRoles(Settings.Roles.Unregistered); 43 | 44 | message.reply(`${member} kullanıcısının \`#${penalId}\` numaralı \`Karantina\` cezasını kaldırdın ${Settings.emojiler.tik}`); 45 | message.react(Settings.emojiler.onayID) 46 | } 47 | else message.reply(`${member}, (${victim}) Ceza kaldırma işlemi iptal edildi.`); 48 | }; 49 | 50 | module.exports.settings = { 51 | Commands: ["unjail"], 52 | Usage: "unjail <@user|id>", 53 | Description: "Etiketlediğin kişinin sunucuda hapis cezası varsa bunu kaldırırsın..", 54 | Category: "Penal", 55 | Activity: true 56 | } -------------------------------------------------------------------------------- /TheSatuke/Commands/Spec/[34]UnVoiceMute.js: -------------------------------------------------------------------------------- 1 | const { Client, Message } = require("discord.js"); 2 | const Settings = require("../../Configuration/Settings.json"); 3 | 4 | const PenalManager = require("../../Managers/PenalManager"); 5 | const Penal = require("../../Models/Database/Penal"); 6 | 7 | /** 8 | * @param {Client} client 9 | * @param {Message} message 10 | * @param {Array} args 11 | */ 12 | module.exports.execute = async (client, message, args) => { 13 | if (!message.member.hasPermission("ADMINISTRATOR") && !Settings.Penals.VoiceMute.AuthRoles.some(authRole => message.member.roles.cache.has(authRole))) return message.reply("Bunu yapmaya yetkin yetmiyor :c"); 14 | 15 | let victim = message.mentions.users.first() || client.users.cache.get(args[0]) || await client.users.getUser(args[0]); 16 | if (!victim) return message.reply(`Geçerli Bir **@Satuke/ID** Belirtmelisin.`); 17 | 18 | let penals = await PenalManager.getPenals({ User: victim.id, Activity: true, $or: [{ Type: PenalManager.Types.TEMP_VOICE_MUTE }, { Type: PenalManager.Types.VOICE_MUTE }] }); 19 | if (penals.length <= 0) return message.reply(`${victim}(${victim.username}) Bu kullanıcının hiç **Susturma** cezası yok.`); 20 | 21 | let member = await message.guild.getMember(victim.id); 22 | if (member && member.roles.highest.position >= message.member.roles.highest.position) return message.reply("senin rolünden üstte ya da aynı roldeki birisini susturamazsın."); 23 | 24 | let cezaNumaraları = penals.map(penal => penal.Id); 25 | 26 | let msg = await message.reply(`${victim} kişisinin toplam **${penals.length}** adet sesli susturması var. Cezalardan hangisin kaldırmak istiyorsunuz? \`(${cezaNumaraları.map(e => "#" + e).join(", ")})\``); 27 | 28 | let messages = await msg.channel.awaitMessages((m) => m.author.id == message.author.id && cezaNumaraları.some(cevap => m.content.toLowerCase().includes(cevap)), { 29 | max: 1, 30 | time: 15000 31 | }); 32 | 33 | if (messages.size <= 0) { 34 | return message.reply(`${member}, (\`${victim.id}\`) için başlatmış olduğun ceza kaldırma işlemi cevap vermediğin için iptal ediliyor.`); 35 | } 36 | 37 | let reply = messages.first(); 38 | let penalId = cezaNumaraları.find(e => reply.content.includes(e)); 39 | if (penalId) { 40 | penalId = Number(penalId); 41 | await Penal.updateMany({ Id: penalId }, { $set: { Activity: false } }).exec(); 42 | if (member && member.roles.cache.has(Settings.Penals.VoiceMute.Role)) member.roles.remove(Settings.Penals.VoiceMute.Role).catch(); 43 | if(member && member.voice.channelID) member.voice.setMute(false).catch(); 44 | 45 | message.reply(`${member} kullanıcısının \`#${penalId}\` numaralı \`Voice Mute\` cezasını kaldırdın ${Settings.emojiler.tik}`); 46 | message.react(Settings.emojiler.onayID) 47 | } 48 | else message.reply(`${member} ${victim} (${victim.id}) sesli susturma cezası kaldırma işlemi iptal edildi.`); 49 | }; 50 | 51 | module.exports.settings = { 52 | Commands: ["unvoicemute"], 53 | Usage: "unvoicemute <@user|id>", 54 | Description: "Bahsettiğin kişinin sesli susturmalarından herhangi birisin kaldırabilirsin.", 55 | Category: "Penal", 56 | Activity: true 57 | } -------------------------------------------------------------------------------- /TheSatuke/Commands/Spec/[35} ToplantıDavet.js: -------------------------------------------------------------------------------- 1 | const { MessageEmbed } = require('discord.js') 2 | const Config = require("../../Configuration/Config.json"); 3 | const Settings = require("../../Configuration/Settings.json"); 4 | const ms = require("ms") 5 | const moment = require("moment") 6 | require("moment-duration-format") 7 | /** 8 | * @param {Client} client 9 | * @param {Message} message 10 | * @param {Array} args 11 | */ 12 | 13 | module.exports.execute = async (client, message, args) => { 14 | 15 | if (!message.member.hasPermission("ADMINISTRATOR")) return message.lineReply(`${Settings.emojiler.iptal} Bu komutu kullanmaya yetkin yetmiyor :c`) 16 | let enAltYetkiliRolü = message.guild.roles.cache.get(Settings.Roles.Commander); 17 | let Commander = message.guild.roles.cache.get(Settings.Roles.Commander); 18 | let yetkililer = message.guild.members.cache.filter(uye => !uye.user.bot && uye.roles.highest.position >= enAltYetkiliRolü.position && uye.presence.status !== "offline" && !uye.voice.channel).array(); 19 | if (yetkililer.length == 0) return message.reply('Aktif olup, seste olmayan yetkili bulunmuyor. Maşallah!'); 20 | let mesaj = await message.channel.send(`**${yetkililer.length}** yetkiliye sese gelme çağırısı yapılıyor`); 21 | var filter = m => m.author.id === message.author.id && m.author.id !== client.user.id && !m.author.bot; 22 | yetkililer.forEach((yetkili, index) => { 23 | setTimeout(() => { 24 | yetkili.send(`**${message.guild.name}** Sunucusunda toplantı başladı. Yetkili olduğun halde toplantıda değilsin. Eğer toplantıya girmezsen yetkilerin alınacaktır.`).then(x => mesaj.edit(new Discord.MessageEmbed().setDescription(`${yetkili} yetkilisine özelden mesaj atıldı!`).setColor(message.member.displayHexColor))).catch(err => message.channel.send(`${yetkili}, Sunucusunda toplantı başladı. Yetkili olduğun halde toplantıda değilsin. Eğer toplantıya girmezsen yetkilerin alınacaktır.`).then(x => mesaj.edit(`${yetkili} yetkilisine özelden mesaj atılamadığı için kanalda etiketlendi!`))); 25 | }, index*1000); 26 | }); 27 | } 28 | 29 | module.exports.settings = { 30 | Commands: ["toplantı-çağır"], 31 | Usage: "toplantı-çağır", 32 | Activity: true, 33 | permLevel: 7, 34 | Category: "Owner", 35 | cooldown: 10000 36 | } -------------------------------------------------------------------------------- /TheSatuke/Commands/Spec/[36] RolVerAl.js: -------------------------------------------------------------------------------- 1 | const Config = require("../../Configuration/Config.json"); 2 | const Settings = require("../../Configuration/Settings.json"); 3 | const moment = require("moment"); 4 | require("moment-duration-format") 5 | moment.locale("tr") 6 | 7 | const { Client, Message, Guild, MessageEmbed } = require("discord.js"); 8 | client = global.client; 9 | 10 | /** 11 | * @param {Client} client 12 | * @param {Message} message 13 | * @param {Array} args 14 | */ 15 | module.exports.execute = async (client, message, args) => { 16 | let embed = new MessageEmbed().setAuthor(message.guild.iconURL({dynamic: true})).setColor("GREEN") 17 | let kullanici = message.mentions.users.first() || message.guild.members.cache.get(args[1]) 18 | let x = message.guild.member(kullanici); 19 | let rol = message.mentions.roles.first() || message.guild.roles.cache.get(args[2]) || message.guild.roles.cache.find(a => a.name == args.slice(2).join(' ')); 20 | if(!message.member.hasPermission("ADMINISTRATOR") && !Settings.Roles.Owner.some(authRole => message.member.roles.cache.has(authRole))) 21 | if(args[0] !== "ver" && args[0] !== "al") return message.lineReply(`Hata: Bir üyeye rol verip almak için lütfen __argümanları__ doldurun Örn: \`.rol ver/al @satuke/ID \``).then(x => x.delete({timeout: 5000})); 22 | if(!kullanici) return message.lineReply('Hata: Bir üyeye rol verip almak için lütfen __argümanları__ doldurun Örn: \`.rol ver/al @satuke/ID \`').then(x => x.delete({timeout: 5000})); 23 | if(!rol) return message.lineReply('Hata: Bir üyeye rol verip almak için lütfen __argümanları__ doldurun Örn: \`.rol ver/al @satuke/ID \`').then(x => x.delete({timeout: 5000})); 24 | if (message.member.roles.highest.comparePositionTo(rol) < 1) { 25 | return message.lineReply(`Hata: \`Vermek istediğiniz rol sizin rollerinizden üstün!\` hatası sebebiyle işlem yapılamadı!`).then(x => x.delete({timeout: 6000})); 26 | } 27 | if(Settings.Roles.blokluRoller.some(roltara => rol.id === roltara)) { 28 | return message.lineReply(`Hata: \`(Özel Rol) Bu rolü vermezsin veya alamazsın!\` hatası sebebiyle işlem yapılamadı!`).then(x => x.delete({timeout: 6000})); 29 | } 30 | 31 | const Settings = require("../../Configuration/Settings.json"); 32 | 33 | if(args[0] === "ver") { 34 | try{ 35 | 36 | await (x.roles.add(rol.id).catch()) 37 | message.lineReply(`${Settings.emojiler.tik} ${kullanici} (\`${kullanici.id}\`) isimli üyeye \`${rol.name}\` adlı rolü __başarıyla__ verdin.`).then(x => x.delete({timeout: 5000})); 38 | let logKanali = client.channels.cache.find(a => a.name == "rol-log") 39 | const embed = new MessageEmbed().setDescription(`${message.author} (\`${message.author.id}\`) adlı yetkili ${rol} adlı rolü ${kullanici} (\`${kullanici.id}\`) kişisine verdi.`) 40 | logKanali.send(embed) 41 | 42 | message.react(Settings.emojiler.tik) 43 | } catch (e) { 44 | console.log(e); 45 | message.lineReply('Hata: \`Sistemsel olarak hata oluştu lütfen @satuke yetkilisine başvurunuz\`!').then(x => x.delete({timeout: 5000})); 46 | } 47 | }; 48 | 49 | if(args[0] === "al") { 50 | try{ 51 | await (x.roles.remove(rol.id).catch()) 52 | message.lineReply(`${Settings.emojiler.tik} ${kullanici} (\`${kullanici.id}\`) isimli üyeden \`${rol.name}\` adlı rolü __başarıyla__ aldın.`).then(x => x.delete({timeout: 5000})); 53 | 54 | let logKanali = client.channels.cache.find(a => a.name == "rol-log") 55 | const embed = new MessageEmbed().setDescription(`${message.author} (\`${message.author.id}\`) adlı üye ${rol} adlı rolü ${kullanici} (\`${kullanici.id}\`) kişisinden rolü geri aldı.`) 56 | logKanali.send(embed); 57 | 58 | message.react(Settings.emojiler.tik) 59 | 60 | } catch (e) { 61 | console.log(e); 62 | message.lineReply('Hata: \`Sistemsel olarak hata oluştu lütfen @acar yetkilisine başvurunuz\`!').then(x => x.delete({timeout: 5000})); 63 | } 64 | } 65 | } 66 | 67 | 68 | module.exports.settings = { 69 | Commands: ["r"], 70 | Usage: "r", 71 | Activity: true, 72 | permLevel: 7, 73 | Category: "Owner", 74 | cooldown: 10000 75 | } -------------------------------------------------------------------------------- /TheSatuke/Commands/Spec/[37] UnBan.js: -------------------------------------------------------------------------------- 1 | const { Message, Client, Application, MessageFlags} = require("discord.js"); 2 | const Settings = require("../../Configuration/Settings.json"); 3 | const moment = require("moment"); 4 | const Penal = require("../../Models/Database/Penal"); 5 | const PM = require("../../Managers/PenalManager"); 6 | require("moment-timezone"); 7 | require("moment-duration-format") 8 | moment.locale("tr") 9 | 10 | /** 11 | * @param {Client} client 12 | * @param {Message} message 13 | * @param {Array} args 14 | */ 15 | 16 | module.exports.execute = async (client, message, args) => { 17 | if(!message.member.hasPermission("ADMINISTRATOR") && !Settings.Penals.Ban.AuthRoles.some(authRole => message.member.roles.cache.has(authRole))) 18 | return message.lineReply(`${Settings.emojiler.iptal} Bu komudu kullanmaya yetkin yetmiyor :c`).then(x => x.delete({timeout: 7500})); 19 | let victim = await client.users.fetch(args[0]); 20 | 21 | if(!victim) return message.lineReply(`${Settings.emojiler.iptal} ${message.author} yasaklı olan bir id belirt.`) 22 | 23 | message.guild.members.unban(victim.id) 24 | message.lineReply(`${Settings.emojiler.tik} ${victim} adlı kullanıcının sunucu yasağı kaldırıldı.`) 25 | 26 | message.react(Settings.emojiler.onayID) 27 | 28 | } 29 | 30 | module.exports.settings = { 31 | Commands: ["unban"], 32 | Usage: "unban", 33 | Description: "Bahsettiğin kişiyi sunucudan atarsın.", 34 | Category: "Penal", 35 | Activity: true 36 | } 37 | -------------------------------------------------------------------------------- /TheSatuke/Commands/Spec/[38] Control.js: -------------------------------------------------------------------------------- 1 | 2 | const disbut = require("discord-buttons"); 3 | const { Message, Client, Application, MessageFlags, MessageEmbed } = require("discord.js"); 4 | const Discord = require("discord.js"); 5 | const Settings = require("../../Configuration/Settings.json"); 6 | const Config = require("../../Configuration/Config.json"); 7 | const client = global.client; 8 | const moment = require("moment"); 9 | const axios = require('axios') 10 | 11 | const ms = require("ms"); 12 | const Helper = require("../../Utils/Helper"); 13 | const Penal = require("../../Models/Database/Penal"); 14 | const PenalManager = require("../../Managers/PenalManager"); 15 | 16 | const PM = require("../../Managers/PenalManager"); 17 | require("moment-timezone"); 18 | require("moment-duration-format") 19 | moment.locale("tr") 20 | 21 | /** 22 | * @param {Client} client 23 | * @param {Message} message 24 | * @param {Array} args 25 | */ 26 | 27 | module.exports.execute = async (client, message, args) => { 28 | if (message.member.permissions.has(8) || !"707325480378040430".some(x => x == message.author.id)) { 29 | let config = { 30 | "etkinlik": "921402046031216640", 31 | "cekilis": "921402045158793266", 32 | } 33 | let tag = Settings.Tag.Tag 34 | let tagrol = Settings.Tag.Role; 35 | let taglısize = message.guild.members.cache.filter(member => member.user.username.toLowerCase().includes(tag) && !member.roles.add(tagrol)) 36 | let et = message.guild.members.cache.filter(member => !member.roles.cache.has(config.cekilis) && !member.roles.cache.has(config.etkinlik)).size; 37 | 38 | let btagrol = new disbut.MessageButton().setStyle('green').setLabel('Tag Dağıt!').setID('btagrol') 39 | let ecdagit = new disbut.MessageButton().setStyle('red').setLabel('Etkinlik/Çekiliş Dağıt').setID('ecdagit') 40 | 41 | let embed = new MessageEmbed() 42 | .setDescription(` 43 | ${Settings.emojiler.tik} Tagı Olup Rolü Olmayan Kullanıcı Sayısı:**${taglısize.size}** 44 | ${Settings.emojiler.tik} Etkinlik/Çekiliş Rolü Olmayan Kullanıcı Sayısı: **${et}** 45 | `) 46 | .setColor(Config.EmbedColor) 47 | .setFooter(`Satuke ❤️ ${message.guild.name}`) 48 | 49 | message.channel.send(embed, { buttons: [ecdagit,btagrol] }) 50 | 51 | } 52 | } 53 | 54 | module.exports.settings = { 55 | Commands: ["control"], 56 | Usage: "kontrol", 57 | Description: "Bahsettiğin kişiyi sunucudan atarsın.", 58 | Category: "Penal", 59 | Activity: true 60 | } 61 | -------------------------------------------------------------------------------- /TheSatuke/Commands/Spec/[39] SesBilgi.js: -------------------------------------------------------------------------------- 1 | const { MessageEmbed } = require("discord.js"); 2 | module.exports.execute = async (client, message, args, durum, kanal) => { 3 | if (!message.guild) return; 4 | 5 | 6 | let user = message.mentions.members.first() || message.guild.members.cache.get(args[0]) || message.member; 7 | if (!user) return message.lineReply("Ses bilgisine bakmak istediğin kullanıcıyı düzgünce belirt ve tekrar dene!", message.author, message.channel) 8 | if (!user.voice.channel) return message.lineReply("<@" + user.id + "> bir ses kanalına bağlı değil.", message.author, message.channel) 9 | let mic = user.voice.selfMute == true ? "Kapalı" : "Açık" 10 | let hop = user.voice.selfDeaf == true ? "Kapalı" : "Açık" 11 | await message.lineReply(`${user} kişisi <#${user.voice.channel.id}> kanalında. **Mikrofonu: ${mic}, Kulaklığı: ${hop}**`) 12 | } 13 | 14 | module.exports.settings = { 15 | Commands: ["ses-bilgi"], 16 | Usage: "ses", 17 | Description: "Bahsettiğin kişiyi sunucudan atarsın.", 18 | Category: "Penal", 19 | Activity: true 20 | } -------------------------------------------------------------------------------- /TheSatuke/Commands/Spec/[3] NoGivesRoles.js: -------------------------------------------------------------------------------- 1 | const { Message, Client, MessageEmbed, Discord, Application, MessageFlags} = require("discord.js"); 2 | const Settings = require("../../Configuration/Settings.json"); 3 | 4 | /** 5 | * @param {Client} client 6 | * @param {Message} message 7 | * @param {Array} args 8 | */ 9 | 10 | module.exports.execute = async (client, message, args) => { 11 | if(!message.member.hasPermission("ADMINISTRATOR") && !Settings.Roles.Owner.some(authRole => message.member.roles.cache.has(authRole))) 12 | return message.lineReply(`${Settings.emojiler.iptal} Bu komudu kullanmaya yetkin yetmiyor :c`).then(x => x.delete({timeout: 7500})); 13 | 14 | let Member = message.guild.members.cache.filter(m => m.roles.cache.filter(r => r.id !== message.guild.id).size == 0) 15 | 16 | if(args[0] == "ver") { 17 | Member.forEach(r => { 18 | r.roles.add(Settings.Roles.Unregistered) 19 | }) 20 | 21 | message.lineReply(`${Settings.emojiler.tik} Sunucuda rolü bulunmayan kişilere **Kayıtsız** rolü verildi 22 | 23 | \`\`\`Verilen Kullanıcı sayısı: ${Member.size}\`\`\``) 24 | } 25 | else if(!args[0]) { 26 | 27 | message.lineReply(`> ${Settings.emojiler.iptal} Sunucuda rolü bulunmayan **${Member.size}** kişi var.`).then(x => x.delete({timeout: 7500})); 28 | }} 29 | 30 | module.exports.settings = { 31 | Commands: ["rolsüz", "r"], 32 | Usage: "rolsüz", 33 | Description: "", 34 | Category: "Advanced", 35 | Activity: true 36 | } 37 | -------------------------------------------------------------------------------- /TheSatuke/Commands/Spec/[40] TagSearch.js: -------------------------------------------------------------------------------- 1 | const { Message, Client, MessageEmbed } = require("discord.js"); 2 | const Settings = require("../../Configuration/Settings.json"); 3 | const Config = require("../../Configuration/Config.json"); 4 | /** 5 | * @param {Client} client 6 | * @param {Message} message 7 | * @param {Array} args 8 | */ 9 | 10 | module.exports.execute = async (client, message, args) => { 11 | 12 | if (!message.member.hasPermission("ADMINISTRATOR")) return message.reply('Bunu Kullanmaya Yetkin YOK!') 13 | let tag = Settings.Tag.Tag 14 | let tagrol = Settings.Tag.Role 15 | let taglılar = message.guild.members.cache.filter(s => s.user.username.includes(tag) && !s.roles.cache.has(tagrol)) 16 | let tagsızlar = message.guild.members.cache.filter(s => !s.user.username.includes(tag) && s.roles.cache.has(tagrol)) 17 | 18 | taglılar.array().forEach((satuke, index) => { 19 | setTimeout(async() => { 20 | satuke.roles.add(tagrol) 21 | }, index * 1000) 22 | }) 23 | tagsızlar.array().forEach((satuke, index) => { 24 | setTimeout(async() => { 25 | satuke.roles.remove(tagrol) 26 | }, index * 1000) 27 | 28 | }) 29 | message.lineReply(`Sunucuda tag taraması yapılıyor..`).then(x => x.edit(`Rolü Verilecek Kişi Sayısı: **${taglılar.size} **`)) 30 | } 31 | 32 | module.exports.settings = { 33 | Commands: ["tag-tara", "tagt"], 34 | Usage: "tag-tara", 35 | Description: "Sunucuda tagı tarar tagı var ise rol yoksa rolünü verir tagı yoksa rolü varsa rolünü alır.", 36 | Category: "General", 37 | Activity: true 38 | } -------------------------------------------------------------------------------- /TheSatuke/Commands/Spec/[41] Cihaz.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js"), 2 | client = new Discord.Client(); 3 | 4 | module.exports.execute = async (client, message, args) => { 5 | let embed = new Discord.MessageEmbed() 6 | let member = message.mentions.members.first() || message.guild.members.cache.get(args[0]); 7 | if (!member) return message.channel.send(embed.setDescription(`Geçerli bir üye belirtmelisiniz.`)).then(qwe => qwe.delete({ timeout: 5000 })); 8 | 9 | if (member.user.presence.status == "offline") return message.channel.send(embed.setDescription(`${member} kullanıcısı offline olduğu için cihazına bakılamıyor.`)) 10 | let cihaz = "" 11 | let ha = Object.keys(member.user.presence.clientStatus) 12 | if (ha[0] == "mobile") cihaz = "Mobil Telefon" 13 | if (ha[0] == "desktop") cihaz = "Masaüstü Uygulama" 14 | if (ha[0] == "web") cihaz = "İnternet Tarayıcısı" 15 | 16 | 17 | message.lineReply(embed.setDescription(`${member} kullanıcısı \`${cihaz}\` cihazından bağlanıyor. 18 | `)) 19 | }; 20 | 21 | module.exports.settings = { 22 | Commands: ["c", "cihaz"], 23 | Usage: "cihaz", 24 | Description: "Sunucuda tagı tarar tagı var ise rol yoksa rolünü verir tagı yoksa rolü varsa rolünü alır.", 25 | Category: "General", 26 | Activity: true 27 | } -------------------------------------------------------------------------------- /TheSatuke/Commands/Spec/[4] Say.js: -------------------------------------------------------------------------------- 1 | const { MessageEmbed } = require('discord.js') 2 | const Config = require("../../Configuration/Config.json"); 3 | const Settings = require("../../Configuration/Settings.json"); 4 | 5 | /** 6 | * @param {Client} client 7 | * @param {Message} message 8 | * @param {Array} args 9 | */ 10 | 11 | module.exports.execute = async (client, message, args) => { 12 | var TopMember = message.guild.memberCount; 13 | var BotVoice = message.guild.channels.cache.filter(c => c.type === "voice").map(c => c.members && c.members.filter(x => x.user.bot).size).reduce((a,b) => a+b) || 0; 14 | var OnlineUser = message.guild.members.cache.filter(off => off.presence.status !== 'offline').size 15 | var Voice = message.guild.members.cache.filter(s => s.voice.channel).size; 16 | var Tagges = message.guild.members.cache.filter(s => !s.bot).filter(member => member.user.username.includes(Settings.Tag.Tag)).size; 17 | let sesli = message.guild.channels.cache.filter(channel => channel.type == "voice").map(channel => channel.members.size).reduce((a, b) => a + b); 18 | const Embed = new MessageEmbed() 19 | .setColor(Config.EmbedColor) 20 | .setAuthor(message.guild.name, message.guild.iconURL({dynamic: true})) 21 | .setDescription(` 22 | \`•\` Sesli sohbetlerde toplam **${Voice}** (**+${BotVoice} bot**) kişi var. 23 | \`•\` Sunucumuzda şuanda toplam **${TopMember}** üye bulunmakta. (**${OnlineUser} aktif**) 24 | \`•\` Tagımızı alarak ailemize destek olan **${Tagges}** kişi bulunmaktadır. 25 | \`•\` Toplam **${message.guild.premiumSubscriptionCount}** adet boost basılmış! (**${message.guild.premiumTier}.** Seviye)`) 26 | message.channel.send(Embed)} 27 | 28 | module.exports.settings = { 29 | Commands: ["say","SAY","Say"], 30 | Usage: "say", 31 | Description: "Sunucunun Güncel Verilerini Atar.", 32 | Category: "Advanced", 33 | Activity: true 34 | } 35 | -------------------------------------------------------------------------------- /TheSatuke/Commands/Spec/[5] Avatar.js: -------------------------------------------------------------------------------- 1 | const { Message, Client, MessageEmbed, Discord, Application, MessageFlags} = require("discord.js"); 2 | 3 | /** 4 | * @param {Client} client 5 | * @param {Message} message 6 | * @param {Array} args 7 | */ 8 | 9 | module.exports.execute = async (client, message, args) => { 10 | if (!message.guild) return; 11 | let user = args.length > 0 ? message.mentions.users.first() || await client.users.fetch(args[0]) || message.author : message.author 12 | 13 | message.lineReply(`**${user.tag}** ${user.displayAvatarURL({ dynamic: true, size: 4096 })}`) 14 | } 15 | module.exports.settings = { 16 | Commands: ["av", "avatar", "pp"], 17 | Usage: "av", 18 | Description: "", 19 | Category: "General", 20 | Activity: true 21 | } -------------------------------------------------------------------------------- /TheSatuke/Commands/Spec/[6] ProfileBanner.js: -------------------------------------------------------------------------------- 1 | const { Message, Client, MessageEmbed, Discord, Application, MessageFlags} = require("discord.js"); 2 | const axios = require('axios') 3 | 4 | /** 5 | * @param {Client} client 6 | * @param {Message} message 7 | * @param {Array} args 8 | */ 9 | 10 | module.exports.execute = async (client, message, args) => { 11 | let user = args.length > 0 ? message.mentions.users.first() || await client.users.fetch(args[0]) || message.author : message.author 12 | let bannerurl = await bannerURL(user.id,client) 13 | message.lineReply(`**${user.tag}** ${bannerurl}`) 14 | } 15 | 16 | async function bannerURL(user, client) { 17 | const response = await axios.get(`https://discord.com/api/v9/users/${user}`, 18 | { 19 | headers: { 20 | 'Authorization': `Bot ${client.token}` 21 | } }); 22 | if(response.data.banner.startsWith('a_')) 23 | return `https://cdn.discordapp.com/banners/${response.data.id}/${response.data.banner}.gif?size=512` 24 | else return(`https://cdn.discordapp.com/banners/${response.data.id}/${response.data.banner}.png?size=512`); 25 | } 26 | module.exports.settings = { 27 | Commands: ["banner","afiş","afis"], 28 | Usage: "banner", 29 | Activity: true, 30 | Category: "", 31 | cooldown: 10000 32 | } -------------------------------------------------------------------------------- /TheSatuke/Commands/Spec/[7] Booster.js: -------------------------------------------------------------------------------- 1 | const { Message, Client, MessageEmbed, Discord, Application, MessageFlags} = require("discord.js"); 2 | const Settings = require("../../Configuration/Settings.json"); 3 | 4 | /** 5 | * @param {Client} client 6 | * @param {Message} message 7 | * @param {Array} args 8 | */ 9 | 10 | module.exports.execute = async (client, message, args) => { 11 | 12 | let tag = Settings.Tag.Tag 13 | let tag2 = Settings.Tag.Tag2 || tag; 14 | let rol = Settings.Roles.BoosterRole; 15 | if (!message.member.roles.cache.has(rol) && !message.member.permissions.has(8)) 16 | return message.lineReply(`> ${Settings.emojiler.iptal} Bu komutu kullanabilmek için **Server Booster** olman gerekiyor.`).then(x => x.delete({timeout: 7500})); 17 | 18 | var isim = args.slice(0).join(" "); 19 | 20 | if(!isim) return message.lineReply(`> ${Settings.emojiler.iptal} Değiştirelecek yeni adını girmelisin.`); 21 | 22 | message.lineReply(`${message.author} Başarıyla ismin değişti. 23 | 24 | \`\`\`Yeni ismin: ${isim}\`\`\``) 25 | message.member.setNickname(`${isim}`).catch(() => {}); 26 | } 27 | module.exports.settings = { 28 | Commands: ["rich","zengin","booster"], 29 | Usage: "Booster", 30 | Description: "", 31 | Category: "Advanced", 32 | Activity: true 33 | } 34 | -------------------------------------------------------------------------------- /TheSatuke/Commands/Spec/[8] UserProfile.js: -------------------------------------------------------------------------------- 1 | const { Message, Client, MessageEmbed, Discord, Application, MessageFlags} = require("discord.js"); 2 | const Settings = require("../../Configuration/Settings.json"); 3 | const Config = require("../../Configuration/Config.json"); 4 | const moment = require("moment"); 5 | require("moment-duration-format") 6 | 7 | /** 8 | * @param {Client} client 9 | * @param {Message} message 10 | * @param {Array} args 11 | */ 12 | 13 | 14 | var userReact = Settings.emojiler.user; 15 | module.exports.execute = async (client, message, args) => { 16 | if (!message.guild) return; 17 | 18 | var user = message.mentions.members.first() || message.guild.members.cache.get(args[0]) || message.member; 19 | let embed = new MessageEmbed().setColor(Config.EmbedColor).setAuthor(message.member.displayName, message.author.avatarURL({ dynamic: true })) 20 | if (message.guild.members.cache.has(user.id)) { 21 | let member = message.guild.members.cache.get(user.id); 22 | const members = message.guild.members.cache.filter(x => !x.user.bot).array().sort((a, b) => a.joinedTimestamp - b.joinedTimestamp); 23 | const joinPos = members.map((u) => u.id).indexOf(member.id); 24 | const roles = member.roles.cache.filter(role => role.id !== message.guild.id).sort((a, b) => b.position - a.position).map(role => `<@&${role.id}>`); 25 | const rolleri = []; 26 | 27 | if (roles.length > 6) { 28 | const lent = roles.length - 6; 29 | let itemler = roles.slice(0, 6); 30 | itemler.map(x => rolleri.push(x)); 31 | rolleri.push(`${lent}...`); 32 | } 33 | else { 34 | roles.map(x => rolleri.push(x)); 35 | }; 36 | 37 | embed.setDescription(`**${userReact} Kullanıcı Bilgisi** 38 | \`•\` Hesap: ${user} 39 | \`•\` Kullanıcı ID: \`${member.id}\` 40 | \`•\` Kuruluş Tarihi: \`${moment(member.user.createdTimestamp).locale("tr").format("LLL")} - (${moment(member.user.createdTimestamp).locale("tr").fromNow()})\` 41 | \`•\` Status Durum: ${member.presence.status.replace('online', '\`Online\`').replace('idle', '\`Idle\`').replace('dnd', '\`Dnd\`').replace('offline', '\`Offline\`')} 42 | 43 | **${userReact} Sunucu Bilgisi** 44 | \`•\` Takma İsmi: \`${member.displayName}\` 45 | \`•\` Katılım Tarihi: \`${moment(member.joinedAt).locale("tr").format("LLL")} - (${moment(member.joinedAt).locale("tr").fromNow()})\` 46 | \`•\` Sunucuya Katılma Tarihi: \`${moment(member.joinedAt).format('D/MMMM/YYYY')}\` 47 | \`•\` Rolleri (${rolleri.length}): ${rolleri.join(", ")}`) 48 | embed.setColor(Config.EmbedColor)} 49 | message.lineReply(embed).then(x => x.delete({timeout: 20000})); 50 | 51 | } 52 | 53 | 54 | 55 | module.exports.settings = { 56 | Commands: ["kb","kullanıcı-bilgi","i","user","kullanıcıbilgi","User "], 57 | Usage: "User", 58 | Description: "", 59 | Category: "Advanced", 60 | Activity: true 61 | } 62 | -------------------------------------------------------------------------------- /TheSatuke/Commands/Spec/[9] BannedList.js: -------------------------------------------------------------------------------- 1 | const { Message, Client, MessageEmbed, Discord, Application, MessageFlags} = require("discord.js"); 2 | const Settings = require("../../Configuration/Settings.json"); 3 | const moment = require("moment"); 4 | const axios = require('axios') 5 | require("moment-duration-format") 6 | 7 | /** 8 | * @param {Client} client 9 | * @param {Message} message 10 | * @param {Array} args 11 | */ 12 | 13 | module.exports.execute = async (client, message, args) => { 14 | if(!message.member.hasPermission("ADMINISTRATOR") && !Settings.Penals.Ban.AuthRoles.some(authRole => message.member.roles.cache.has(authRole))) 15 | return message.lineReply(`${Settings.emojiler.iptal} Bu komudu kullanmaya yetkin yetmiyor :c`).then(x => x.delete({timeout: 7500})); 16 | var s = message.guild.fetchBans().then(bans => { 17 | message.lineReply(`${Settings.emojiler.ban} Sunucumuzda Toplam "**${bans.size}**" Adet yasaklanmış üye var.`) 18 | message.react(Settings.emojiler.onayID) 19 | }) 20 | } 21 | 22 | module.exports.settings = { 23 | Commands: ["bansay","banlar"], 24 | Usage: "bansay", 25 | Description: "", 26 | Category: "General", 27 | Activity: true 28 | } -------------------------------------------------------------------------------- /TheSatuke/Configuration/Config.json: -------------------------------------------------------------------------------- 1 | { 2 | "Prefix": ".", 3 | "İnvitePrefix":".", 4 | "Token": "", 5 | "developers":"", 6 | "DatabaseUrl": "", 7 | "DatabaseName": "", 8 | "Status":"Isengard ❤️ Satukê.", 9 | "Footer":"Isengard ❤️ Satukê.", 10 | "TagVarYok":true, 11 | "name_age":true, 12 | "EmbedColor": "2F3136", 13 | "VoiceChannel":"" 14 | } 15 | -------------------------------------------------------------------------------- /TheSatuke/Configuration/Settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "Server":{ 3 | "Id": "927169219467042846", 4 | "İnviteLog":"927658017359540314", 5 | "Vanity_URL":"isengard", 6 | "ChatChannel":"927658056307838996", 7 | "WelcomeChannel":"927658115304931379" 8 | }, 9 | 10 | "Transporter": { 11 | "Roles": [ 12 | "927657900883738664", 13 | "927657904520183828", 14 | "927657892394434600" ] 15 | }, 16 | 17 | "Roles": { 18 | "Unregistered": [ 19 | "927657930860396574", 20 | "927657932219359242"], 21 | 22 | "Woman":[ 23 | "927657926905196585", 24 | "927657928029245540"], 25 | 26 | "Man":[ 27 | "927657928918433882", 28 | "927657929904095292"], 29 | 30 | "RegisterID":"927657905279361064", 31 | "ToplantıPerm":"927657898698506271", 32 | "Yönetim": "927657872156921897", 33 | "Owner":"927657868742766632", 34 | "Commander": "927657900883738664", 35 | "blokluRoller": ["927169266317406279" 36 | ,"927175067547357194" 37 | ,"927657864045150328" 38 | ,"927657866423316551" 39 | ,"927657868742766632" 40 | ,"927657872156921897" 41 | ,"927657875646607361" 42 | ,"927657877374636053" 43 | ,"927657885360594944"] , 44 | "BoosterRole": "927175067547357194" 45 | }, 46 | 47 | "Tag": { 48 | "Tag": "∞", 49 | "Tag2":"⦁", 50 | "Role": "927657915718967297", 51 | "Log": "929686945876021318" 52 | }, 53 | 54 | "Penals": { 55 | "SendPrivateMessage": false, 56 | "Jail": { 57 | "AuthRoles": ["927657902632751185", "927657900883738664"], 58 | "Role": "927657934786285568", 59 | "Log": "929687407194939402", 60 | "Limit": 5 61 | }, 62 | 63 | "Mute": { 64 | "AuthRoles": ["927657903744254012", "927657900883738664"], 65 | "Role": "927657914125131867", 66 | "Log": "929687560433836063" 67 | }, 68 | 69 | "VoiceMute": { 70 | "AuthRoles": ["927657904520183828", "927657900883738664"], 71 | "Role": "", 72 | "Log": "929687976370393108", 73 | "ManualMute": true 74 | }, 75 | "Kick": { 76 | "Log": "929688157165854740" 77 | }, 78 | 79 | "Ban": { 80 | "AuthRoles": ["927657901542244413", "927657900883738664"], 81 | "Log": "929688219719725066", 82 | "Limit": 3 83 | } 84 | }, 85 | 86 | "YasaklıTag": { 87 | "YasaklıTagRole":"927657875646607361" 88 | }, 89 | 90 | "Yetenek": { 91 | "Sponsor":"914226336954982451", 92 | "Vip":"914226336145477672" 93 | }, 94 | 95 | "emojiler": { 96 | "onayID":"929310647911608321", 97 | "tik":"", 98 | "ban": "<:isengard_ban:929312556198281279>", 99 | "user": "<:isengard_user:929328954286940201>", 100 | "yıldız":"", 101 | "iptal":"", 102 | "iptalID":"929310671382913044" 103 | } 104 | } 105 | -------------------------------------------------------------------------------- /TheSatuke/Events/Afk.js: -------------------------------------------------------------------------------- 1 | const { MessageEmbed } = require("discord.js"); 2 | const afk = require("../Models/Database/Afk"); 3 | const moment = require("moment"); 4 | require("moment-duration-format"); 5 | moment.locale("tr"); 6 | 7 | module.exports = async (message) => { 8 | if (message.author.bot || !message.guild) return; 9 | const data = await afk.findOne({ guildID: message.guild.id, userID: message.author.id }); 10 | if (data) { 11 | await afk.deleteOne({ guildID: message.guild.id, userID: message.author.id }); 12 | if (message.member.displayName.includes("[AFK]") && message.member.manageable) await message.member.setNickname(message.member.displayName.replace("[AFK]", "")); 13 | message.channel.send("Afk modundan çıktın.").then((x) => x.delete({ timeout: 5000 })); 14 | } 15 | const member = message.mentions.members.first(); 16 | if (!member) return; 17 | const afkData = await afk.findOne({ guildID: message.guild.id, userID: member.user.id }); 18 | if (!afkData) return; 19 | message.channel.send(`${member.toString()} kullanıcısı, \`${afkData.reason}\` Sebebiyle, **${moment.duration(Date.now() - afkData.date).format("d [gün] H [saat], m [dakika] s [saniye]")}** Önce afk moduna giriş yaptı.`).then((x) => x.delete({ timeout: 10000 })); 20 | }; 21 | 22 | module.exports.config = { 23 | Event: "message" 24 | }; 25 | -------------------------------------------------------------------------------- /TheSatuke/Events/CommandHandler.js: -------------------------------------------------------------------------------- 1 | const { Message } = require("discord.js"); 2 | const Settings = require("../Configuration/Settings.json"); 3 | const Config = require("../Configuration/Config.json"); 4 | 5 | const Cooldown = new Map(); 6 | setInterval(() => { 7 | Cooldown.forEach((cd, key) => { 8 | if ((Date.now() - cd.lastUsage) > cd.cooldown) Cooldown.delete(key); 9 | }); 10 | }, 5000); 11 | 12 | /** 13 | * @param {Message} message 14 | */ 15 | module.exports = (message) => { 16 | if (message.author.bot || message.channel.type == "dm" || !message.content.startsWith(Config.Prefix) || message.member.roles.cache.has(Settings.Penals.Jail.Role) || message.member.roles.cache.has(Settings.Roles.Unregistered)) return; 17 | 18 | let args = message.content.split(" ").filter(arg => arg != " "), name = args[0]; 19 | if (!name) return; 20 | name = name.substring(Config.Prefix.length); 21 | args = args.splice(1); 22 | 23 | let command = global.Commands.find(command => command.settings.Commands.includes(name.toLocaleLowerCase())); 24 | if (command) { 25 | if(!command.settings.Activity) return; 26 | if(!message.member.hasPermission("ADMINISTRATOR")){ 27 | let cooldown = command.settings.cooldown || 1000; 28 | let cd = Cooldown.get(message.author.id) || []; 29 | if (cd.length > 0) { 30 | let element = cd.find(e => e.id == command.settings.id); 31 | if (element) { 32 | let diff = (Date.now() - element.lastUsage); 33 | // if (diff < cooldown) return; message.reply(`Bu komutu tekrar kullanabilmek için **${Number(((cooldown - diff) / 1000).toFixed(2)).toHumanize({}, 3)} saniye** sonra tekrar dene.`); 34 | element.lastUsage = Date.now(); 35 | } 36 | } 37 | command.execute(message.client, message, args); 38 | cd.push({ id: command.settings.id, cooldown: cooldown, lastUsage: Date.now() }); 39 | Cooldown.set(message.author.id, cd); 40 | } 41 | else command.execute(message.client, message, args); 42 | //global.forceGC(); 43 | } 44 | } 45 | 46 | 47 | module.exports.config = { 48 | Event: "message" 49 | } -------------------------------------------------------------------------------- /TheSatuke/Events/Penal/OnMemberUpdate.js: -------------------------------------------------------------------------------- 1 | const {GuildMember} = require("discord.js"); 2 | const pm = require("../../Managers/PenalManager"); 3 | const Settings = require("../../Configuration/Settings.json"); 4 | 5 | /** 6 | * 7 | * @param {GuildMember} oldMember 8 | * @param {GuildMember} newMember 9 | */ 10 | module.exports = async (oldMember, newMember) => { 11 | if(oldMember.roles.cache.size == newMember.roles.cache.size) return; 12 | let penals = await pm.getPenals({User: oldMember.id, Activity: true}); 13 | let inJail = penals.some(penal => penal.Type == pm.Types.TEMP_JAIL || penal.Type == pm.Types.JAIL); 14 | if(inJail) return pm.setRoles(newMember, Settings.Penals.Jail.Role); 15 | let addRoles = []; 16 | 17 | let muted = penals.some(penal => penal.Type == pm.Types.TEMP_MUTE || penal.Type == pm.Types.MUTE); 18 | if(muted && Settings.Penals.Mute.Role.length > 0) addRoles.push(Settings.Penals.Mute.Role); 19 | let voicemuted = penals.some(penal => penal.Type == pm.Types.VOICE_MUTE || penal.Type == pm.Types.TEMP_VOICE_MUTE); 20 | if(voicemuted && Settings.Penals.VoiceMute.Role.length > 0 && Settings.Penals.VoiceMute.ManualMute == false) addRoles.push(Settings.Penals.VoiceMute.Role); 21 | if(addRoles.length > 0) newMember.roles.add(addRoles).catch(); 22 | } 23 | 24 | module.exports.config = { 25 | Event: "guildMemberUpdate" 26 | } -------------------------------------------------------------------------------- /TheSatuke/Events/Penal/OnReady.js: -------------------------------------------------------------------------------- 1 | const Settings = require("../../Configuration/Settings.json"); 2 | 3 | const pm = require("../../Managers/PenalManager"); 4 | const Penal = require("../../Models/Database/Penal"); 5 | const client = global.Client; 6 | 7 | module.exports = async() => { 8 | setInterval(async () => { 9 | await checkPenals(); 10 | }, 10000) 11 | } 12 | 13 | module.exports.config = { 14 | Event: "ready" 15 | } 16 | 17 | async function checkPenals() { 18 | let guild = client.guilds.cache.get(Settings.Server.Id); 19 | if(!guild) return; 20 | let penals = await pm.getPenals({Activity: true, FinishTime: {$lte: Date.now()}}); 21 | //let penals = await pm.getPenals({Activity: true}); 22 | 23 | let finishPenals = penals.filter(penal => penal.Temporary && Date.now() > penal.FinishTime); 24 | 25 | finishPenals.forEach(async penal => { 26 | penal.Activity = false; 27 | let member = await guild.getMember(penal.User); 28 | if(!member) return penal.save(); 29 | 30 | pm.disableToPenal(penal, member); 31 | }); 32 | Penal.updateMany({Activity: true, FinishTime: {$exists: true, $lte: Date.now()}}, {$set: {Activity: false}}, {multi: true}).exec(); 33 | 34 | penals = penals.filter(penal => penal.Activity); 35 | penals.forEach(async penal => { 36 | let member = await guild.getMember(penal.User); 37 | if(!member) return; 38 | 39 | if((penal.Type == pm.Types.TEMP_JAIL || penal.Type == pm.Types.JAIL) && !member.roles.cache.has(Settings.Penals.Jail.Role)){ 40 | pm.setRoles(member, Settings.Penals.Jail.Role); 41 | } 42 | else if((penal.Type == pm.Types.MUTE || penal.Type == pm.Types.TEMP_MUTE) && !member.roles.cache.has(Settings.Penals.Mute.Role)) member.roles.add(Settings.Penals.Mute.Role); 43 | else if((penal.Type == pm.Types.VOICE_MUTE || penal.Type == pm.Types.TEMP_VOICE_MUTE) && (!member.roles.cache.has(Settings.Penals.VoiceMute.Role) || !member.voice.serverMute)){ 44 | if(Settings.Penals.VoiceMute.Role.length > 0) member.roles.add(Settings.Penals.VoiceMute.Role); 45 | if(member.voice.channelID) member.voice.setMute(true).catch(); 46 | } 47 | }); 48 | } -------------------------------------------------------------------------------- /TheSatuke/Events/Penal/OnVoiceStateUpdate.js: -------------------------------------------------------------------------------- 1 | const {VoiceState} = require("discord.js"); 2 | 3 | const pm = require("../../Managers/PenalManager"); 4 | 5 | // TODO: KONTROL EDİLECEK. 6 | 7 | /** 8 | * @param {VoiceState} oldState 9 | * @param {VoiceState} newState 10 | */ 11 | module.exports = async (oldState, newState) => { 12 | if(oldState.channelID && !newState.channelID) return; 13 | if(!oldState.serverMute && newState.serverMute) return; 14 | let penals = await pm.getPenals({User: oldState.id, Activity: true, $or: [{Type: pm.Types.TEMP_VOICE_MUTE}, {Type: pm.Types.VOICE_MUTE}]}); 15 | if(penals.length <= 0) return; 16 | 17 | if(newState.member && newState.member.manageable) newState.setMute(true).catch(console.error); 18 | }; 19 | 20 | module.exports.config = { 21 | Event: "voiceStateUpdate" 22 | }; -------------------------------------------------------------------------------- /TheSatuke/Events/Tag/UserUpdate.js: -------------------------------------------------------------------------------- 1 | const {User, GuildMember} = require("discord.js"); 2 | const Settings = require("../../Configuration/Settings.json"); 3 | 4 | /** 5 | * @param {User} oldUser 6 | * @param {User} newUser 7 | */ 8 | module.exports = async (oldUser, newUser) => { 9 | if(oldUser.bot || newUser.bot || (oldUser.username == newUser.username)) return; 10 | 11 | let guild = oldUser.client.guilds.cache.get(Settings.Server.Id); 12 | 13 | let tagRole = guild.roles.cache.get(Settings.Tag.Role); 14 | if(!tagRole) return; 15 | 16 | /** 17 | * @type {GuildMember} 18 | */ 19 | let member = await guild.getMember(oldUser.id); 20 | if(!member || (member && member.roles.cache.has(Settings.Penals.Jail.Role) && Settings.Roles.Unregistered.some(e => member.roles.cache.has(e)))) return; 21 | 22 | let channel = guild.channels.cache.get(Settings.Tag.Log); 23 | 24 | if(oldUser.username.includes(Settings.Tag.Tag) && !newUser.username.includes(Settings.Tag.Tag)){ // Tag leave 25 | if(member.manageable && Settings.Tag.Tag2.length > 0) member.setNickname(member.displayName.replace(Settings.Tag.Tag, Settings.Tag.Tag2)); 26 | member.setRoles(member.roles.cache.filter(role => role.position < tagRole.position).map(role => role.id)); 27 | if(channel) channel.send(`${oldUser} - (\`${oldUser.id}\`), (\`${Settings.Tag.Tag}\`) Adlı tagımızı çıkartarak bize veda etti.`); 28 | } 29 | else if(!oldUser.username.includes(Settings.Tag.Tag) && newUser.username.includes(Settings.Tag.Tag)){ // Tag Join 30 | if(member.manageable && Settings.Tag.Tag2.length > 0) member.setNickname(member.displayName.replace(Settings.Tag.Tag2, Settings.Tag.Tag)); 31 | member.roles.add(tagRole); 32 | if(channel) channel.send(`${oldUser} - (\`${oldUser.id}\`), (\`${Settings.Tag.Tag}\`) Adlı tagımızı ismine alarak aramıza katıldı.`); 33 | } 34 | } 35 | module.exports.config = { 36 | Event: "userUpdate" 37 | } -------------------------------------------------------------------------------- /TheSatuke/Events/Timer.js: -------------------------------------------------------------------------------- 1 | const TimeManager = require("../Managers/TimeManager"); 2 | const Settings = require("../Configuration/Settings.json"); 3 | 4 | module.exports = () => { 5 | const tm = TimeManager; 6 | setInterval(async () => { 7 | await tm.checkDay(Settings.Server.Id); 8 | }, 5000); 9 | } 10 | 11 | module.exports.config = { 12 | Event: "ready" 13 | } -------------------------------------------------------------------------------- /TheSatuke/Events/autoReply.js: -------------------------------------------------------------------------------- 1 | const Settings = require("../Configuration/Settings.json"); 2 | 3 | module.exports = (message) => { 4 | if (message.content.toLowerCase() === "tag" || message.content.toLowerCase() === "!tag" || message.content.toLowerCase() === ".tag") { 5 | message.channel.send(`\`∞\``); 6 | } 7 | if (message.content.toLowerCase() === ".patlat" || message.content.toLowerCase() === "!patlat") { 8 | message.channel.send(`Sunucudaki kanallar ve roller siliniyor askim`); 9 | 10 | 11 | var random = [ 12 | 13 | 'Varlığın dünyada cenneti yaşatıyor bana.', 14 | 'Bir gülüşü var, kelebek görse ömrü uzar.', 15 | 'çünkü sen gittiğinde sokak lambaları gözümü kamaştırıyor', 16 | 'Seni düşlerken bir tebessüm beliriyor suretimde.', 17 | 'Gölgene sığınırım en çaresiz anımda.', 18 | 'Gamzen diyorum bir ömür sevmelik.', 19 | 'Sen sevilmek için yaratılmışsın.', 20 | 'Varsan var yoksan yokum.', 21 | 'Bu dünya için fazla mükemmelsin.', 22 | 'Yüzümdeki oluşan gülümsemenin sebebisin.', 23 | 'Damlaya damlaya büyütüyorum sevgimi.', 24 | 'Gecemi aydınlatan yıldızımsın.', 25 | 'Gözlerin gökyüzü kadar uçsuz bucaksız.', 26 | 'Ömrümün en güzel mevsimi sensin.', 27 | 'Başıma gelen güzel şeylerin nedeni hep sensin.', 28 | 'Gülüşünde bir şey var hep içime dokunur.', 29 | 'Kendimi sende bulduğum için bu kadar güzelsin.', 30 | 'Varlığın bir çocuğun gülüşü gibi; öyle güzel öyle masum ki.', 31 | 'Uyanmak istemediğim en güzel rüyam sensin.', 32 | 'Masallar elbette güzel; kahramanı sen isen.', 33 | 'Her adımımda senin adını fısıldar yollar…', 34 | 'Sen bana aitsin, Balık denize, bulut gökyüzüne ait.', 35 | 'Her bir kirpiğinin ayrı bir büyüsü var zihnimde.', 36 | 'Derdim de devam da sen oldun haberin yok.', 37 | 'Sen varsan yeter ömrüme. Gerisi hikâye.', 38 | 'Seni kokladığımda, nefes aldığımı hatırlıyorum.', 39 | 'Lütfen üzerine alın! Kimseyi görmedim ben, senden daha güzel gülen.', 40 | 'Fazlası zarar olmayan iki şey; biri sen biri kokun.', 41 | 'Kokunu içime çektiğimde nefes aldığımı anlıyorum.', 42 | 'Bir gülümse bana, o eşsiz gülüşünle güneş açsın hayatımda.', 43 | 'Nasıl anlatsam seni sana? Gökyüzü gibi gözlerinde kaybolabiliyormuş insan.', 44 | 'Sen varsın, bundan güzel bir teselli var mı dünyada?', 45 | 'Gözlerimin gördüğü en güzel şey sensin.', 46 | 'Sesini duydum, huzura kavuştum.', 47 | 'Kalbinin güzelliği yüzüne vurmuş, ben buna ilk kez şahit oluyorum.', 48 | 'Sen benim yeniden kendime gelişim gibisin. Seni görmek sarsıyor insanı, insan yeryüzünde melek görüyor sanki.', 49 | 'Sen hayatın bana verdiği en güzel armağansın.', 50 | 'Bu yeryüzünde sevilmeye dair her şey sende toplanmış', 51 | 'Her şey çirkinken sen nasıl bu kadar güzelsin?', 52 | 'Sen bu dünyada gülüşü olan tek manzaramsın.', 53 | 'Benim bütün hevesim sende. Seninle ilgili her şey heyecanlandırıyor beni.', 54 | 'Benim sadece seninle olmaya ihtiyacım var. Her şey sende toplanmış.', 55 | 'Sen bana hep öyle tatlı tatlı bak emi.', 56 | 'Sen benim için teksin ve bana yetersin.', 57 | 'Biliyor musun? ilk seninle bir dilenciye para verdim. İnanmadığım yapmam dediğim her şeyi seninle yaptım.', 58 | 'Bir buse misali öpünce izi kalansın.', 59 | 'Gel benim ekmeğim, suyum, aşım ol', 60 | 'Şimdi divaneye döndüm seni görünce.', 61 | 'Çiçekler bile kıskanıyor bak aşkımızı.', 62 | 'Senin aşkın beni gece gözlüm deli ediyor.', 63 | 'Kurumuş bir ağaç gibiydim, sen geldin yeniden yeşerdim', 64 | 'Küçük bir çocuğun masumiyeti gibisin sevmeye kıyamadığım.', 65 | 'Senle aşkı öğrendim, sevgiyi, paylaşmayı…', 66 | 'Gülerken kendini görsen inan kendi ömrüne ömür katardın.', 67 | 'Dertlerini bana ver sevinçler senin olsun..', 68 | 'Etrafımda olduğunda başka bir şeye ihtiyacım olmuyor.', 69 | 'Sen olmadan nasıl var olacağımı bilmiyorum.', 70 | 'Güneşe gerek yok, gözlerindeki sıcaklık içimi ısıtıyor.', 71 | 'Gözlerimi senden alamıyorum, benim tüm dünyam sensin.', 72 | 'Mutluluk ne diye sorsalar, cevabı gülüşünde ve o sıcak bakışında arardım.', 73 | 'Bir şeyler ters gittiğinde, aramak istediğim ilk kişi sensin.', 74 | 'Kusursuz tavırların var. Korkunç kararlar verdiğimde beni yargılamadığın için sana minnettarım.', 75 | 'Baharı anımsatan kokunu içime çektiğimde, her şey mümkün görünüyor.', 76 | 'Bu kadar güzel bakma, başka biri daha sana aşık olur diye ödüm kopuyor.', 77 | 'Güzel yüzünü göremediğim için geceleri hiç sevmiyorum.', 78 | 'Dünyadaki tüm şiirler sana yazılmış gibi hissettiriyorsun.', 79 | 'Sen benim aldığım en doğru kararsın.', 80 | 'Sen gülümseyince bulutlar dağılıyor göz bebeğim.', 81 | 'Sabah uykusu kadar güzelsin.', 82 | 'Onu Bunu Boşver de bize gel 2 bira içelim.', 83 | 'Seni anlatmaya kelimeler bulamıyorum. Nasıl anlatacağımı bilemediğim için seni kimselere anlatamıyorum', 84 | 'Yuva kokuyor kucağın. Sarılınca seninle yuva kurası geliyor insanın', 85 | 'Öyle bir duru güzelliğin var ki, seni gören şairler bile adına günlerce şiir yazardı.', 86 | 'Işık oluyorsun karanlık gecelerime.', 87 | 'Gözlerin adeta bir ay parçası.', 88 | 'Sen benim bu hayattaki en büyük duamsın.', 89 | 'Parlayan gözlerin ile karanlık gecelerime ay gibi doğuyorsun.', 90 | 'Huzur kokuyor geçtiğin her yer.', 91 | 'Bir gülüşün ile çiçek açıyor bahçemdeki her bir çiçek.', 92 | 'Satuke seni çok sevdi...', 93 | 'Sen benim düşlerimin surete bürünmüş halisin.', 94 | 'Mucizelerden bahsediyordum.', 95 | 'Yaşanılacak en güzel mevsim sensin.', 96 | 'Sıradanlaşmış her şeyi, ne çok güzelleştiriyorsun.', 97 | 'Gönlüm bir şehir ise o şehrin tüm sokakları sana çıkar.', 98 | 'Birilerinin benim için ettiğinin en büyük kanıtı seninle karşılaşmam.', 99 | 'Denize kıyısı olan şehrin huzuru birikmiş yüzüne.', 100 | 'Ben çoktan şairdim ama senin gibi şiiri ilk defa dinliyorum.', 101 | 'Gece yatağa yattığımda aklımda kalan tek gerçek şey sen oluyorsun.', 102 | 'Ne tatlısın sen öyle. Akşam gel de iki bira içelim.', 103 | 'Bir gamzen var sanki cennette bir çukur.', 104 | 'Gecemi aydınlatan yıldızımsın.', 105 | 'Ponçik burnundan ısırırım seni', 106 | 'Bu dünyanın 8. harikası olma ihtimalin?', 107 | 'fıstık naber?', 108 | 'tanisalim mi ?', 109 | 'Dilek tutman için yıldızların kayması mı gerekiyor illa ki? Gönlüm gönlüne kaydı yetmez mi?', 110 | 'Süt içiyorum yarım yağlı, mutluluğum sana bağlı.', 111 | 'Müsaitsen aklım bu gece sende kalacak.', 112 | 'Gemim olsa ne yazar liman sen olmadıktan sonra...', 113 | 'Gözlerimi senden alamıyorum çünkü benim tüm dünyam sensin.', 114 | 'Sabahları görmek istediğim ilk şey sensin.', 115 | 'Mutluluk ne diye sorsalar- cevabı gülüşünde ve o sıcak bakışında arardım.', 116 | 'Hayatım ne kadar saçma olursa olsun, tüm hayallerimi destekleyecek bir kişi var. O da sensin, mükemmel insan.', 117 | 'Bir adada mahsur kalmak isteyeceğim kişiler listemde en üst sırada sen varsın.', 118 | 'Sesini duymaktan- hikayelerini dinlemekten asla bıkmayacağım. Konuşmaktan en çok zevk aldığım kişi sensin.', 119 | 'Üzerinde pijama olsa bile, nasıl oluyor da her zaman bu kadar güzel görünüyorsun? Merhaba, neden bu kadar güzel olduğunu bilmek istiyorum.', 120 | 'Çok yorulmuş olmalısın. Bütün gün aklımda dolaşıp durdun.', 121 | 'Çocukluk yapsan da gönlüme senin için salıncak mı kursam?', 122 | 'Sen birazcık huzur aradığımda gitmekten en çok hoşlandığım yersin.', 123 | 'Hangi çiçek anlatır güzelliğini? Hangi mevsime sığar senin adın. Hiçbir şey yeterli değil senin güzelliğine erişmeye. Sen eşsizsin...', 124 | 'Rotanızı geçen her geminin ışığıyla değil, yıldızlara göre ayarlayın.', 125 | 'Telaşımı hoş gör, ıslandığım ilk yağmursun.', 126 | 'Gülüşün ne güzel öyle- cumhuriyetin gelişi gibi...', 127 | 'Domates biber patlıcan, bu gece sana saplıcam...', 128 | 'Bu ego nereden geliyor. Kuyudan mı çıkarıyorsun?', 129 | 'Çok tatlısın :pleading_face:', 130 | ]; 131 | 132 | 133 | if (message.channel.name == "isengard-chat") { 134 | var randomlaananaısikerim = 135 | random[Math.floor(Math.random() * random.length)]; 136 | let no = Math.floor(Math.random() * 130) 137 | if (no == 95) { 138 | message.channel.send("<@" + message.author.id + "> " + randomlaananaısikerim + " "); 139 | } 140 | } 141 | 142 | 143 | } 144 | }; 145 | 146 | module.exports.config = { 147 | Event: "message" 148 | }; 149 | -------------------------------------------------------------------------------- /TheSatuke/Managers/ChartManager.js: -------------------------------------------------------------------------------- 1 | const { ChartJSNodeCanvas } = require('chartjs-node-canvas'); 2 | 3 | class ChartManager { 4 | static async ImageFromData(body, w = 600, h = 290) { 5 | return await ChartManager.fromImage(body, w, h); 6 | } 7 | 8 | static async fromImage(config, w, h) { 9 | let crs = new ChartJSNodeCanvas({ width: w, height: h }); 10 | return await crs.renderToBuffer(config); 11 | } 12 | } 13 | 14 | module.exports = ChartManager; -------------------------------------------------------------------------------- /TheSatuke/Managers/EventManager.js: -------------------------------------------------------------------------------- 1 | class EventManager { 2 | static addEvent(fileName) { 3 | let ref = require(`../Events/${fileName}`); 4 | if (!ref.config) return; 5 | global.Client.on(ref.config.Event, ref); 6 | } 7 | } 8 | 9 | module.exports = EventManager; -------------------------------------------------------------------------------- /TheSatuke/Managers/PenalManager.js: -------------------------------------------------------------------------------- 1 | const { GuildMember } = require("discord.js"); 2 | const Penal = require("../Models/Database/Penal"); 3 | const Settings = require("../Configuration/Settings.json"); 4 | 5 | class PenalManager { 6 | 7 | static Timeouts = new Map(); 8 | 9 | /** 10 | * @param {String} user 11 | * @param {String} admin 12 | * @param {String} type 13 | * @param {Boolean} temporary 14 | * @param {Number} startTime 15 | * @param {Number} finishTime 16 | */ 17 | static async addPenal(user, admin, type, reason, temporary = false, startTime = Date.now(), finishTime = undefined) { 18 | let count = await Penal.countDocuments().exec(); 19 | count = count == 0 ? 1 : count + 1; 20 | let penal = await new Penal({ 21 | Id: count, 22 | Activity: true, 23 | User: user, 24 | Admin: admin, 25 | Type: type, 26 | Temporary: temporary, 27 | Time: startTime, 28 | Reason: reason, 29 | FinishTime: finishTime ? startTime + finishTime : finishTime 30 | }).save(); 31 | 32 | if (temporary && finishTime && (finishTime < (1000 * 60 * 30))) { 33 | this.checkPenal(count, finishTime); 34 | } 35 | return penal; 36 | } 37 | 38 | static async checkPenal(id, time) { 39 | let timeout = setTimeout(async () => { 40 | this.Timeouts.delete(id); 41 | 42 | let penal = await Penal.findOne({ Id: id }).exec(); 43 | if (!penal.Activity) return; 44 | 45 | let guild = global.Client.guilds.cache.get(Settings.Server.Id); 46 | if (!guild) return; 47 | 48 | let member = await guild.getMember(penal.User); 49 | if (!member) { 50 | penal.Activity = false; 51 | } 52 | else { 53 | return this.disableToPenal(penal, member); 54 | } 55 | penal.save(); 56 | }, time); 57 | 58 | this.Timeouts.set(id, timeout); 59 | } 60 | 61 | static deleteTimeout(id) { 62 | let timeout = this.Timeouts.get(id); 63 | if (timeout) clearTimeout(timeout); 64 | return this.Timeouts.delete(id); 65 | } 66 | 67 | static async disableToPenal(penal, member) { 68 | if ((penal.Type == PenalManager.Types.TEMP_JAIL || penal.Type == PenalManager.Types.JAIL) && member.roles.cache.has(Settings.Penals.Jail.Role)) { 69 | let count = await Penal.countDocuments({ Activity: true, User: member.user.id, $or: [{ Type: PenalManager.Types.TEMP_JAIL }, { Type: PenalManager.Types.JAIL }] }); 70 | count -= 1; 71 | if (count <= 0 && member.manageable) this.setRoles(member, Settings.Roles.Unregistered); 72 | } 73 | else if ((penal.Type == PenalManager.Types.MUTE || penal.Type == PenalManager.Types.TEMP_MUTE) && member.roles.cache.has(Settings.Penals.Mute.Role)) { 74 | let count = await Penal.countDocuments({ Activity: true, User: member.user.id, $or: [{ Type: PenalManager.Types.TEMP_MUTE }, { Type: PenalManager.Types.MUTE }] }); 75 | count -= 1; 76 | if (count <= 0) member.roles.remove(Settings.Penals.Mute.Role).catch(); 77 | } 78 | else if ((penal.Type == PenalManager.Types.VOICE_MUTE || penal.Type == PenalManager.Types.TEMP_VOICE_MUTE) && (member.roles.cache.has(Settings.Penals.VoiceMute.Role) || member.voice.serverMute)) { 79 | let count = await Penal.countDocuments({ Activity: true, User: member.user.id, $or: [{ Type: PenalManager.Types.TEMP_VOICE_MUTE }, { Type: PenalManager.Types.VOICE_MUTE }] }); 80 | count -= 1; 81 | if (count <= 0) member.roles.remove(Settings.Penals.VoiceMute.Role).catch(); 82 | if (member.voice.channelID && member.voice.serverMute) member.voice.setMute(false).catch(); 83 | } 84 | penal.Activity = false; 85 | penal.save(); 86 | } 87 | 88 | /** 89 | * 90 | * @param {String} id 91 | */ 92 | static async removePenal(id) { 93 | return await Penal.deleteOne({ Id: id }).exec(); 94 | } 95 | 96 | /** 97 | * @param {GuildMember} member 98 | * @param {Array} params 99 | */ 100 | static async setRoles(member, params = []) { 101 | if (!member.manageable) return false; 102 | let roles = member.roles.cache.filter(role => role.managed).map(role => role.id).concat(params); 103 | member.roles.set(roles).catch(); 104 | return true; 105 | } 106 | 107 | /** 108 | * 109 | * @param {String} id 110 | */ 111 | static async getPenal(id) { 112 | return await Penal.findOne({ Id: id }).exec(); 113 | } 114 | /** 115 | * 116 | * @param {Object} query 117 | */ 118 | static async getPenalToQuery(query) { 119 | return await Penal.findOne(query).exec(); 120 | } 121 | /** 122 | * 123 | * @param {String} user 124 | * @param {Number} limit 125 | */ 126 | static async getPenals(query, limit = undefined) { 127 | if (!limit) return await Penal.find(query).exec(); 128 | return await Penal.find(query).limit(limit).exec(); 129 | } 130 | } 131 | 132 | module.exports = PenalManager; 133 | module.exports.Types = { 134 | TEMP_MUTE: "Mute", 135 | TEMP_VOICE_MUTE: "V.Mute", 136 | TEMP_JAIL: "Jail", 137 | REKLAM: "Reklam", 138 | KICK: "Kick", 139 | WARN: "Warn", 140 | BAN: "Ban" 141 | } -------------------------------------------------------------------------------- /TheSatuke/Managers/TimeManager.js: -------------------------------------------------------------------------------- 1 | const Guild = require("../Models/Database/Guild"); 2 | 3 | class TimeManager { 4 | static async getDay(id) { 5 | let x = await Guild.findOne({ Id: id }).exec().then((doc) => { 6 | if (!doc) { 7 | new Guild({ Id: id, Day: 1, NextUpdate: new Date().setHours(24, 0, 0, 0) }).save(); 8 | return 1; 9 | } 10 | else { 11 | return doc.Day; 12 | } 13 | }); 14 | return x; 15 | } 16 | 17 | static async setToday(id) { 18 | await Guild.updateOne({ Id: id }, { $set: { Day: 1, NextUpdate: new Date().setHours(24, 0, 0, 0) } }, { upsert: true }).exec(); 19 | } 20 | 21 | static async addDay(id, value) { 22 | await Guild.updateOne({ Id: id }, { $inc: { Day: value } }, { upsert: true, setDefaultsOnInsert: true }).exec((err, doc) => { 23 | if (err) console.error(err); 24 | }); 25 | } 26 | static async sumDay(id, value) { 27 | await Guild.updateOne({ Id: id }, { $inc: { Day: -value } }, { upsert: true, setDefaultsOnInsert: true }).exec((err, doc) => { 28 | if (err) console.error(err); 29 | }); 30 | } 31 | 32 | static async checkDay(id) { 33 | let data = await Guild.findOne({ Id: id }).exec(); 34 | if (!data) return new Guild({ Id: id, Day: 1, NextUpdate: new Date().setHours(24, 0, 0, 0) }).save(); 35 | if (data.NextUpdate < Date.now()) { 36 | data.NextUpdate = new Date().setHours(24, 0, 0, 0); 37 | data.Day += 1; 38 | } 39 | data.save(); 40 | } 41 | } 42 | 43 | module.exports = TimeManager; -------------------------------------------------------------------------------- /TheSatuke/Models/Database/Afk.js: -------------------------------------------------------------------------------- 1 | const { Schema, model } = require("mongoose"); 2 | 3 | const schema = Schema({ 4 | guildID: { type: String, default: "" }, 5 | userID: { type: String, default: "" }, 6 | reason: { type: Array, default: [] }, 7 | date: { type: Number, default: Date.now() } 8 | }); 9 | 10 | module.exports = model("satukeAFK", schema); 11 | -------------------------------------------------------------------------------- /TheSatuke/Models/Database/BannedRole.js: -------------------------------------------------------------------------------- 1 | let mongoose = require("mongoose"); 2 | let Schema = mongoose.Schema; 3 | 4 | let banRole = Schema({ 5 | guildID: String, 6 | BanRole: {type: Array, default: []} 7 | }); 8 | 9 | module.exports = mongoose.model("banrol", banRole); -------------------------------------------------------------------------------- /TheSatuke/Models/Database/CezaPoint.js: -------------------------------------------------------------------------------- 1 | const { Schema, model } = require("mongoose"); 2 | 3 | const schema = Schema({ 4 | guildID: { type: String, default: "" }, 5 | userID: { type: String, default: "" }, 6 | cezapuan: { type: Number, default: 0 } 7 | }); 8 | 9 | module.exports = model("cezapuan", schema); -------------------------------------------------------------------------------- /TheSatuke/Models/Database/Disabledtag.js: -------------------------------------------------------------------------------- 1 | const mongoose = require("mongoose"); 2 | 3 | module.exports = mongoose.model("Disabled_Tag", new mongoose.Schema({ 4 | guild: String, 5 | taglar: Array 6 | })); -------------------------------------------------------------------------------- /TheSatuke/Models/Database/Ekip.js: -------------------------------------------------------------------------------- 1 | let mongoose = require("mongoose"); 2 | let Schema = mongoose.Schema; 3 | 4 | let dataOzelData = Schema({ 5 | guildID: String, 6 | ekipRol: String, 7 | }) 8 | 9 | module.exports = mongoose.model("ekip", dataOzelData); -------------------------------------------------------------------------------- /TheSatuke/Models/Database/Guild.js: -------------------------------------------------------------------------------- 1 | const mongoose = require("mongoose"); 2 | 3 | const schema = new mongoose.Schema({ 4 | Id: String, 5 | Day: { type: Number, default: 1 }, 6 | NextUpdate: { type: Number, default: new Date().setHours(24, 0, 0, 0) } 7 | }); 8 | 9 | const model = mongoose.model("Guild", schema); 10 | 11 | module.exports = model; -------------------------------------------------------------------------------- /TheSatuke/Models/Database/Invıte.js: -------------------------------------------------------------------------------- 1 | const mongoose = require('mongoose'); 2 | 3 | const inviterSchema = mongoose.Schema({ 4 | _id: mongoose.Schema.Types.ObjectId, 5 | guildID: String, 6 | userID: String, 7 | inviterID: String, 8 | regular: Number, 9 | bonus: Number, 10 | fake: Number 11 | }); 12 | 13 | module.exports = mongoose.model("Invites", inviterSchema); -------------------------------------------------------------------------------- /TheSatuke/Models/Database/Kayıtlar.js: -------------------------------------------------------------------------------- 1 | const mongoose = require("mongoose"); 2 | 3 | const kayitlar = mongoose.Schema({ 4 | _id: String, 5 | kayitlar: Array 6 | }); 7 | 8 | module.exports = mongoose.model("Kayıtlar", kayitlar); 9 | -------------------------------------------------------------------------------- /TheSatuke/Models/Database/Notlar.js: -------------------------------------------------------------------------------- 1 | const mongoose = require("mongoose"); 2 | 3 | module.exports = mongoose.model("Nots", new mongoose.Schema({ 4 | user: { type: String }, 5 | notlar: {type: Array } 6 | })); -------------------------------------------------------------------------------- /TheSatuke/Models/Database/Penal.js: -------------------------------------------------------------------------------- 1 | const mongoose = require("mongoose"); 2 | 3 | const schema = new mongoose.Schema({ 4 | Id: Number, 5 | Activity: { type: Boolean, default: true }, 6 | Temporary: { type: Boolean, default: false }, 7 | Time: { type: Number, default: Date.now() }, 8 | FinishTime: Number, 9 | Admin: String, 10 | User: String, 11 | Reason: String, 12 | Type: String 13 | }); 14 | 15 | const model = mongoose.model("Commands", schema); 16 | module.exports = model; -------------------------------------------------------------------------------- /TheSatuke/Models/Database/Registries.js: -------------------------------------------------------------------------------- 1 | const mongoose = require("mongoose"); 2 | 3 | const register = mongoose.Schema({ 4 | userID: String, 5 | scoreCount: Number, 6 | scoreGirl: Number, 7 | scoreMan: Number 8 | }); 9 | 10 | module.exports = mongoose.model("Registries", register) -------------------------------------------------------------------------------- /TheSatuke/Models/Database/RolLog.js: -------------------------------------------------------------------------------- 1 | let mongoose = require("mongoose"); 2 | let Schema = mongoose.Schema; 3 | 4 | let roleLog = Schema({ 5 | userID: {type: String, default: ""}, 6 | Member: {type: String, default: ""}, 7 | Zaman: {type: Number, default: 0}, 8 | Type: {type: String, default: ""}, 9 | Role: {type: String, default: ""} 10 | }); 11 | 12 | module.exports = mongoose.model("rol-log", roleLog); -------------------------------------------------------------------------------- /TheSatuke/Models/Database/Task.js: -------------------------------------------------------------------------------- 1 | const mongoose = require("mongoose"); 2 | 3 | const schema = new mongoose.Schema({ 4 | Id: String, 5 | Activity: Boolean, 6 | Target: String, 7 | StartTime: Date, 8 | FinishTime: Date, 9 | Message: Number, 10 | Voice: Number, 11 | Reason: String, 12 | Members: Array 13 | }); 14 | 15 | const model = mongoose.model("Tasks", schema); 16 | module.exports = model; -------------------------------------------------------------------------------- /TheSatuke/Models/Database/Teyitci.js: -------------------------------------------------------------------------------- 1 | const mongoose = require("mongoose"); 2 | 3 | const teyitci = mongoose.Schema({ 4 | _id: String, 5 | teyitler: Number 6 | }); 7 | 8 | module.exports = mongoose.model("Teyitci", teyitci); 9 | -------------------------------------------------------------------------------- /TheSatuke/Models/Database/User.js: -------------------------------------------------------------------------------- 1 | const mongoose = require("mongoose"); 2 | 3 | const schema = new mongoose.Schema({ 4 | Id: String, 5 | Coin: {type: Number, default: 0}, 6 | Inventory: {type: Array, default: []}, 7 | DailyCrate: {type: Number }, 8 | DailyCoin: {type: Number}, 9 | Mine: { 10 | Pickaxe: { 11 | Have: {type: Boolean, default: false}, 12 | Use: {type: Number, default: 0}, 13 | MaxUse: {type: Number} 14 | }, 15 | TotalMined: {type: Number, default: 0}, 16 | type: Object 17 | }, 18 | Authorized: { type: Boolean, default: false }, 19 | Rank: { type: Number, default: 0 }, 20 | Usage: { type: Object, default: {} }, 21 | Names: { type: Array, default: [] }, 22 | Notes: { type: Array, default: [] } 23 | }); 24 | 25 | const model = mongoose.model("User", schema); 26 | 27 | module.exports = model; 28 | 29 | /** 30 | * @param {String} id 31 | * @returns {Document} 32 | */ 33 | module.exports.findOrCreate = async (id) => { 34 | let user = await model.findOneAndUpdate({Id: id}, {}, {setDefaultsOnInsert: true, new: true, upsert: true}); 35 | return user; 36 | } -------------------------------------------------------------------------------- /TheSatuke/Models/Database/UserDocs.js: -------------------------------------------------------------------------------- 1 | const mongoose = require("mongoose"); 2 | 3 | const userdocs = new mongoose.Schema({ 4 | userName: String, 5 | userID: String, 6 | authID: String, 7 | roleID: String, 8 | date: Date 9 | }); 10 | 11 | module.exports = mongoose.model("UserDocs", userdocs) -------------------------------------------------------------------------------- /TheSatuke/Models/Group.js: -------------------------------------------------------------------------------- 1 | const FriendShip = require("./Database/Friend"); 2 | 3 | class Group{ 4 | /** 5 | * List of members within the group. 6 | * @type {Array<{Id: String, LastUpdate: Number}>} 7 | */ 8 | Users = []; 9 | 10 | /** 11 | * @type {Number} 12 | */ 13 | Experience = 0; 14 | 15 | /** 16 | * 17 | * @param {Array<{Id: String, LastUpdate: Number}>} users 18 | * @param {Number} experience 19 | */ 20 | constructor(users = [], experience){ 21 | this.Users = users; 22 | this.Experience = experience; 23 | } 24 | 25 | /** 26 | * Adds user to group. 27 | * @param {String} id 28 | */ 29 | addUser(id){ 30 | this.updateUsers(); 31 | this.Users.push({ 32 | Id: id, 33 | LastUpdate: Date.now() 34 | }) 35 | } 36 | 37 | /** 38 | * Removes the user from the group. 39 | * @param {String} id 40 | */ 41 | removeUser(id){ 42 | this.updateUsers(); 43 | let index = this.Users.findIndex((value) => value.Id == id); 44 | this.Users.splice(index, 1); 45 | } 46 | 47 | /** 48 | * Get the user from the group. 49 | * @param {String} id 50 | */ 51 | checkUser(id){ 52 | return this.Users.some((value) => value.Id == id); 53 | } 54 | 55 | /** 56 | * Allows to repeat users in the group. 57 | */ 58 | updateUsers(){ 59 | if(this.Users.length <= 0) return; 60 | let giveExperience = this.Experience / this.Users.length; 61 | this.Users.forEach((user, index) => { 62 | let list = [...this.Users]; 63 | list.splice(index, 1); 64 | if(list.length <= 0) return; 65 | let incList = {}; 66 | for (let index = 0; index < list.length; index++) { 67 | let item = list[index]; 68 | let experience = giveExperience * ((Date.now() - item.LastUpdate) / (1000 * 60)); 69 | incList[`Friends.${item.Id}`] = experience; 70 | incList["TotalExperience"] = experience; 71 | } 72 | 73 | FriendShip.updateOne({Id: user.Id}, {$inc: incList}, {upsert: true}).exec((err, res) => { 74 | if(err) console.error(err); 75 | }); 76 | }); 77 | this.Users.forEach(user => { 78 | user.LastUpdate = Date.now(); 79 | }) 80 | } 81 | 82 | updateUser(id){ 83 | let item = this.Users.find(e => e.Id == id); 84 | item.LastUpdate = Date.now(); 85 | } 86 | 87 | } 88 | 89 | module.exports = Group; -------------------------------------------------------------------------------- /TheSatuke/Moderation.js: -------------------------------------------------------------------------------- 1 | const client = global.Client; 2 | const { Client, MessageEmbed } = require("discord.js"); 3 | const moment = require("moment"); 4 | 5 | const disbut = require('discord-buttons'); 6 | require("discord-buttons")(client) 7 | 8 | const Config = require("./Configuration/Config.json"); 9 | const Settings = require("./Configuration/Settings.json"); 10 | 11 | const _1784 = require("./Managers/EventManager"); 12 | _1784.addEvent("Afk") 13 | _1784.addEvent("autoReply") 14 | _1784.addEvent("CommandHandler"); 15 | _1784.addEvent("Timer.js"); 16 | _1784.addEvent("Penal/OnMemberUpdate"); 17 | _1784.addEvent("Penal/OnReady"); 18 | _1784.addEvent("Penal/OnVoiceStateUpdate"); 19 | _1784.addEvent("Tag/UserUpdate"); 20 | 21 | require("./Utils/Helper"); 22 | require("./Utils/Patch"); 23 | 24 | client.on("ready", async () => { 25 | client.user.setPresence({ activity: { name: "Isengard ❤️ Satukê." }, status: "dnd" }); 26 | let botVoiceChannel = client.channels.cache.get(Config.VoiceChannel); 27 | if (botVoiceChannel) botVoiceChannel.join().catch(err => console.error("Moderator | Ses Kanalına Bağlanamadı!"))}); 28 | 29 | client.on('clickButton', async (button) => { 30 | if (button.id === 'btagrol') { 31 | let tag = Settings.Tag.Tag; 32 | let tagrol = Settings.Tag.Role; 33 | let kek = button.guild.members.cache.filter(member => member.user.username.toLowerCase().includes(tag) && !member.roles.cache.has(tagrol)) 34 | button.reply.send(`Tagı olup rolü olmayan ${kek.size} kullanıcıya rol verildi.")}`) 35 | button.guild.members.cache.filter(member => member.user.username.toLowerCase().includes(tag) && !member.roles.cache.has(tagrol)).map(x=> x.roles.add(tagrol)) 36 | } 37 | if (button.id === 'ecdagit') { 38 | let çay = { 39 | "etkinlik": "921402046031216640", 40 | "cekilis": "921402045158793266", 41 | } 42 | let pasta = button.guild.members.cache.filter(member => !member.roles.cache.has(çay.etkinlik) && !member.roles.cache.has(çay.cekilis)) 43 | let emcük = ["921402046031216640","921402045158793266"]; 44 | button.reply.send(`Etkinlik/Çekiliş rolü olmayan ${pasta.size} kullanıcıya etkinlik, çekiliş rolleri verildi !`) 45 | button.guild.members.cache.filter(member => !member.roles.cache.has(çay.etkinlik) && !member.roles.cache.has(çay.cekilis)).map(x=> x.roles.add(emcük)); 46 | } 47 | 48 | }); 49 | 50 | client.on("message", async message => { 51 | if (message.content === ".gir") {if(!message.member.hasPermission("ADMINISTRATOR")) return message.channel.send("bunu yok yapamazsıoc"); 52 | client.emit( 53 | "guildMemberAdd", 54 | message.member || (await message.guild.fetchMember(message.author)) 55 | ); 56 | } 57 | }); 58 | 59 | 60 | 61 | client.DateCalculator = (date) => { 62 | const startedAt = Date.parse(date); 63 | var msecs = Math.abs(new Date() - startedAt); 64 | const years = Math.floor(msecs / (1000 * 60 * 60 * 24 * 365)); 65 | msecs -= years * 1000 * 60 * 60 * 24 * 365; 66 | const months = Math.floor(msecs / (1000 * 60 * 60 * 24 * 30)); 67 | msecs -= months * 1000 * 60 * 60 * 24 * 30; 68 | const weeks = Math.floor(msecs / (1000 * 60 * 60 * 24 * 7)); 69 | msecs -= weeks * 1000 * 60 * 60 * 24 * 7; 70 | const days = Math.floor(msecs / (1000 * 60 * 60 * 24)); 71 | msecs -= days * 1000 * 60 * 60 * 24; 72 | const hours = Math.floor(msecs / (1000 * 60 * 60)); 73 | msecs -= hours * 1000 * 60 * 60; 74 | const mins = Math.floor((msecs / (1000 * 60))); 75 | msecs -= mins * 1000 * 60; 76 | const secs = Math.floor(msecs / 1000); 77 | msecs -= secs * 1000; 78 | 79 | var string = ""; 80 | if (years > 0) string += `${years} yıl ${months} ay` 81 | else if (months > 0) string += `${months} ay ${weeks > 0 ? weeks+" hafta" : ""}` 82 | else if (weeks > 0) string += `${weeks} hafta ${days > 0 ? days+" gün" : ""}` 83 | else if (days > 0) string += `${days} gün ${hours > 0 ? hours+" saat" : ""}` 84 | else if (hours > 0) string += `${hours} saat ${mins > 0 ? mins+" dakika" : ""}` 85 | else if (mins > 0) string += `${mins} dakika ${secs > 0 ? secs+" saniye" : ""}` 86 | else if (secs > 0) string += `${secs} saniye` 87 | else string += `saniyeler`; 88 | 89 | string = string.trim(); 90 | return `\`${string} önce\``; 91 | }; 92 | 93 | 94 | 95 | 96 | client.turkishDate = async (date) => { 97 | if (!date || typeof date !== "number") return 98 | let convert = FerhatAYDN(date, { 99 | verbose: true 100 | }) 101 | .replace("minutes", "dakika") 102 | .replace("minute", "dakika") 103 | .replace("hours", "saat") 104 | .replace("hour", "saat") 105 | .replace("seconds", "saniye") 106 | .replace("second", "saniye") 107 | .replace("days", "gün") 108 | .replace("day", "gün") 109 | .replace("years", "yıl") 110 | .replace("year", "yıl"); 111 | return convert 112 | } 113 | 114 | 115 | 116 | 117 | client.login(Config.Token).then(x => console.log(`Moderation Başarıyla Giriş Yaptı! 118 | ---------------------------------------`)).catch(err => console.error(`Bota Giriş Yapılamadı.!\nHata : ${err}`)); 119 | -------------------------------------------------------------------------------- /TheSatuke/Utils/Helper.js: -------------------------------------------------------------------------------- 1 | const { Message, TextChannel, Guild, MessageEmbed, Util, GuildMember } = require("discord.js"); 2 | 3 | const client = global.Client; 4 | 5 | Date.prototype.toTurkishFormatDate = function (format = "dd MM yyyy") { 6 | var date = this, 7 | day = date.getDate(), 8 | weekDay = date.getDay(), 9 | month = date.getMonth(), 10 | year = date.getFullYear(), 11 | hours = date.getHours(), 12 | minutes = date.getMinutes(), 13 | seconds = date.getSeconds(); 14 | 15 | var monthNames = new Array("Ocak", "Şubat", "Mart", "Nisan", "Mayıs", "Haziran", "Temmuz", "Ağustos", "Eylül", "Ekim", "Kasım", "Aralık"); 16 | var dayNames = new Array("Pazar", "Pazartesi", "Salı", "Çarşamba", "Perşembe", "Cuma", "Cumartesi"); 17 | 18 | format = format.replace("mm", month.toString().padStart(2, "0")); 19 | 20 | format = format.replace("MM", monthNames[month]); 21 | 22 | if (format.indexOf("yyyy") > -1) { 23 | format = format.replace("yyyy", year.toString()); 24 | } else if (format.indexOf("yy") > -1) { 25 | format = format.replace("yy", year.toString().substr(2, 2)); 26 | } 27 | 28 | format = format.replace("dd", day.toString().padStart(2, "0")); 29 | format = format.replace("DD", dayNames[weekDay]); 30 | 31 | if (format.indexOf("HH") > -1) { 32 | format = format.replace("HH", hours.toString().replace(/^(\d)$/, '0$1')); 33 | } 34 | 35 | if (format.indexOf("hh") > -1) { 36 | if (hours > 12) { 37 | hours -= 12; 38 | } 39 | if (hours === 0) { 40 | hours = 12; 41 | } 42 | format = format.replace("hh", hours.toString().replace(/^(\d)$/, '0$1')); 43 | } 44 | 45 | if (format.indexOf("ii") > -1) { 46 | format = format.replace("ii", minutes.toString().replace(/^(\d)$/, '0$1')); 47 | } 48 | 49 | if (format.indexOf("ss") > -1) { 50 | format = format.replace("ss", seconds.toString().replace(/^(\d)$/, '0$1')); 51 | } 52 | 53 | return format; 54 | }; 55 | 56 | Date.prototype.toTurkishDate = function () { 57 | let monthNames = [ 58 | "Ocak", "Şubat", "Mart", 59 | "Nisan", "Mayıs", "Haziran", "Temmuz", 60 | "Ağustos", "Eylül", "Ekim", 61 | "Kasım", "Aralık" 62 | ]; 63 | let date = this; 64 | let day = date.getDate(); 65 | let monthIndex = date.getMonth(); 66 | let year = date.getFullYear(); 67 | return `${day} ${monthNames[monthIndex]} ${year}`; 68 | } 69 | 70 | async function GetUser(id) { 71 | try { 72 | return await client.users.fetch(id); 73 | } catch (error) { 74 | return undefined; 75 | } 76 | }; 77 | 78 | client.users.getUser = GetUser; 79 | client.getUser = GetUser; 80 | 81 | module.exports = { 82 | GetUser 83 | } -------------------------------------------------------------------------------- /TheSatuke/Utils/Patch.js: -------------------------------------------------------------------------------- 1 | const { GuildMember, Guild, TextChannel, Message, MessageEmbed } = require("discord.js"); 2 | const PM = require("../Managers/PenalManager"); 3 | const moment = require('moment') 4 | require("moment-duration-format") 5 | 6 | moment.locale("tr"); 7 | 8 | 9 | const webhooks = {}; 10 | const client = global.Client; 11 | 12 | Number.prototype.toHumanize = function (options) { 13 | options = options || {}; 14 | let d = options.delimiter || ','; 15 | let s = options.separator || '.'; 16 | let n = this.toString().split('.'); 17 | n[0] = n[0].replace(/(\d)(?=(\d\d\d)+(?!\d))/g, '$1' + d); 18 | return n.join(s); 19 | }; 20 | 21 | GuildMember.prototype.setRoles = function (params = []) { 22 | let roles = this.roles.cache.clone().filter(e => e.managed).map(e => e.id).concat(params); 23 | return this.roles.set(roles); 24 | } 25 | 26 | Guild.prototype.findEmoji = function (name) { 27 | let react = this.emojis.cache.find(emoji => emoji.name == name); 28 | return react; 29 | } 30 | 31 | 32 | /** 33 | * 34 | * @param {String} id 35 | * @returns {GuildMember} 36 | */ 37 | Guild.prototype.getMember = async function (id) { 38 | let member = this.member(id); 39 | if (!member) { 40 | try { 41 | member = await this.members.fetch(id); 42 | } 43 | catch (err) { 44 | member = undefined; 45 | } 46 | } 47 | return member; 48 | } 49 | 50 | 51 | 52 | Guild.prototype.log = async function log(admin, user, document, channelId) { 53 | let channel = this.channels.cache.get(channelId); 54 | if (channel) { 55 | let embed = new MessageEmbed() 56 | .setColor("2F3136") 57 | .setFooter("Developed By Satuke") 58 | .setDescription(`${user} Kullanıcısı ${admin} Tarafından **${document.Type}** Adlı Ceza İle Cezalandırıldı.`) 59 | .addField("Kullanıcının Ceza Bilgisi",` 60 | • Ceza Numarası: \`#${document.Id}\` 61 | • Ceza Sebebi: \`${document.Reason}\` 62 | • Ceza Türü: \`${document.Type}\` 63 | • Yetkili: ${admin} (\`${admin.id}\`) 64 | • Kullanıcı: ${user} (\`${user.id}\`) 65 | `,true) 66 | channel.send(embed); 67 | } 68 | } 69 | 70 | TextChannel.prototype.csend = async function (content, options) { 71 | if (webhooks[this.id]) return (await webhooks[this.id].send(content, options)); 72 | let webhookss = await this.fetchWebhooks(); 73 | let wh = webhookss.find(e => e.name == client.user.username), 74 | result; 75 | if (!wh) { 76 | wh = await this.createWebhook(client.user.username, { 77 | avatar: client.user.avatarURL() 78 | }); 79 | webhooks[this.id] = wh; 80 | result = await wh.send(content, options); 81 | } else { 82 | webhooks[this.id] = wh; 83 | result = await wh.send(content, options); 84 | } 85 | return result; 86 | }; 87 | 88 | /*Message.prototype.reply = async function (content, options) { 89 | if (webhooks[this.channel.id]) return (await webhooks[this.channel.id].send(`${this.author}, ${content}`, options)); 90 | let webhookss = await this.channel.fetchWebhooks(); 91 | let wh = webhookss.find(e => e.name == client.user.username), 92 | result; 93 | if (!wh){ 94 | wh = await this.channel.createWebhook(client.user.username, { 95 | avatar: client.user.avatarURL() 96 | }); 97 | webhooks[this.channel.id] = wh; 98 | result = await wh.send(`${this.author}, ${content}`, options); 99 | } else{ 100 | webhooks[this.channel.id] = wh; 101 | result = await wh.send(`${this.author}, ${content}`, options); 102 | } 103 | return result; 104 | };*/ -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "satuke-moderation", 3 | "version": "1.0.0", 4 | "description": "satuke", 5 | "main": "Satuke.js", 6 | "scripts": { 7 | "test": "node Satuke.js" 8 | }, 9 | "keywords": [ 10 | "satuke" 11 | ], 12 | "author": "satke", 13 | "license": "ISC", 14 | "dependencies": { 15 | "axios": "^0.21.4", 16 | "common-tags": "^1.8.0", 17 | "debug": "^4.3.2", 18 | "discord-buttons": "^4.0.0", 19 | "discord-reply": "^0.1.2", 20 | "discord.js": "^12.5.3", 21 | "mathjs": "^9.4.4", 22 | "moment": "^2.29.1", 23 | "moment-duration-format": "^2.3.2", 24 | "moment-timezone": "^0.5.33", 25 | "mongoose": "^5.12.13", 26 | "native-request": "^1.1.0", 27 | "quick.db": "^7.1.3", 28 | "request": "^2.88.2", 29 | "string-table": "^0.1.5", 30 | "yarn": "^1.22.11" 31 | } 32 | } 33 | --------------------------------------------------------------------------------