├── .prettierrc ├── src ├── configs │ ├── emojis.json │ └── settings.js ├── schemas │ ├── forbiddenTag.js │ ├── forceBans.js │ ├── voiceJoinedAt.js │ ├── commands.js │ ├── penalPoints.js │ ├── afk.js │ ├── reload.js │ ├── staffs.js │ ├── roleLog.js │ ├── alarms.js │ ├── administrators.js │ ├── snipe.js │ └── penals.js ├── handlers │ ├── mongoHandler.js │ └── eventHandler.js ├── commands │ ├── user │ │ ├── serverIcon.js │ │ ├── avatar.js │ │ ├── tag.js │ │ ├── afk.js │ │ ├── booster.js │ │ ├── alarm.js │ │ └── git.js │ ├── botAdmin │ │ ├── uptime.js │ │ ├── ping.js │ │ ├── reload.js │ │ ├── emojiKur.js │ │ └── eval.js │ ├── guildAdmin │ │ ├── snipe.js │ │ ├── slowMode.js │ │ ├── yetkiliSay.js │ │ ├── say.js │ │ ├── sil.js │ │ ├── kilit.js │ │ ├── allMove.js │ │ ├── ekip.js │ │ ├── cezaPuan.js │ │ └── katıldı.js │ ├── staff │ │ ├── help.js │ │ ├── denetim.js │ │ ├── kes.js │ │ ├── çek.js │ │ └── taşı.js │ ├── info │ │ ├── cezaBilgi.js │ │ ├── jailBilgi.js │ │ ├── banBilgi.js │ │ ├── muteBilgi.js │ │ ├── üyeBilgi.js │ │ └── warnBilgi.js │ └── penal │ │ ├── forceBan.js │ │ ├── unBan.js │ │ ├── unJail.js │ │ ├── unMute.js │ │ ├── warn.js │ │ ├── vunmute.js │ │ ├── ban.js │ │ ├── jail.js │ │ ├── mute.js │ │ ├── vmute.js │ │ └── tempJail.js ├── utils │ └── Embed.js └── events │ ├── messageUpdate.js │ ├── afk.js │ ├── guildBanAdd.js │ ├── userUpdate.js │ ├── guildBanRemove.js │ ├── messageDelete.js │ ├── message.js │ ├── guildMemberAdd.js │ └── voiceStateUpdate.js ├── package.json ├── LICENSE.md ├── vortex.js ├── .eslintrc.json ├── .gitignore └── README.md /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "printWidth": 200, 3 | "tabWidth": 2, 4 | "useTabs": true, 5 | "semi": true, 6 | "singleQuote": false, 7 | "trailingComma": "none" 8 | } -------------------------------------------------------------------------------- /src/configs/emojis.json: -------------------------------------------------------------------------------- 1 | { 2 | "changeState": ":arrow_up_down:", 3 | "stream": ":desktop:", 4 | "mobile": ":mobile_phone:", 5 | "unCMuted": ":speech_balloon:", 6 | "alarm": ":alarm_clock:" 7 | } -------------------------------------------------------------------------------- /src/schemas/forbiddenTag.js: -------------------------------------------------------------------------------- 1 | const { Schema, model } = require("mongoose"); 2 | 3 | const forbiddenTag = Schema({ 4 | guildID: { type: String, default: "" }, 5 | forbiddenTags: { type: Array, default: [] }, 6 | }); 7 | 8 | module.exports = model("forbiddenTag", forbiddenTag); -------------------------------------------------------------------------------- /src/schemas/forceBans.js: -------------------------------------------------------------------------------- 1 | const { Schema, model } = require("mongoose"); 2 | 3 | const forceBans = Schema({ 4 | guildID: { type: String, default: "" }, 5 | userID: { type: String, default: "" }, 6 | staffID: { type: String, default: "" } 7 | }); 8 | 9 | module.exports = model("forceBans", forceBans); -------------------------------------------------------------------------------- /src/schemas/voiceJoinedAt.js: -------------------------------------------------------------------------------- 1 | const { Schema, model } = require("mongoose"); 2 | 3 | const voiceJoinedAt = Schema({ 4 | userID: { type: String, default: "" }, 5 | guildID: { type: String, default: "" }, 6 | date: Number, 7 | }); 8 | 9 | module.exports = model("voiceJoinedAt", voiceJoinedAt); -------------------------------------------------------------------------------- /src/schemas/commands.js: -------------------------------------------------------------------------------- 1 | const { Schema, model } = require("mongoose"); 2 | 3 | const commands = Schema({ 4 | guildID: { type: String, default: "" }, 5 | moderationCommands: { type: Array, default: [] }, 6 | registerCommands: { type: Array } 7 | }); 8 | 9 | module.exports = model("commands", commands); -------------------------------------------------------------------------------- /src/schemas/penalPoints.js: -------------------------------------------------------------------------------- 1 | const { Schema, model } = require("mongoose"); 2 | 3 | const penalPoints = Schema({ 4 | guildID: { type: String, default: "" }, 5 | userID: { type: String, default: "" }, 6 | penalPoint: { type: Number, default: "" }, 7 | }); 8 | 9 | module.exports = model("penalPoints", penalPoints); -------------------------------------------------------------------------------- /src/schemas/afk.js: -------------------------------------------------------------------------------- 1 | const { Schema, model } = require("mongoose"); 2 | 3 | const afk = Schema({ 4 | guildID: { type: String, default: "" }, 5 | userID: { type: String, default: "" }, 6 | reason: { type: String, default: "" }, 7 | date: { type: Number, default: Date.now() } 8 | }); 9 | 10 | module.exports = model("afk", afk); -------------------------------------------------------------------------------- /src/schemas/reload.js: -------------------------------------------------------------------------------- 1 | const { Schema, model } = require("mongoose"); 2 | 3 | const reload = Schema({ 4 | type: { type: String, default: "moderation"}, 5 | authorID: { type: String, default: "" }, 6 | channelID: { type: String, default: "" }, 7 | messageID: { type: String, default: "" }, 8 | }); 9 | 10 | module.exports = model("reload", reload); -------------------------------------------------------------------------------- /src/schemas/staffs.js: -------------------------------------------------------------------------------- 1 | const { Schema, model } = require("mongoose"); 2 | 3 | const staffs = Schema({ 4 | guildID: { type: String, default: "" }, 5 | authorID: { type: String, default: "" }, 6 | staffName: { type: String, default: "" }, 7 | staffs: { type: Array, default: [] }, 8 | staffRoles: { type: Array, default: [] }, 9 | date: { type: Number, default: Date.now() }, 10 | }); 11 | 12 | module.exports = model("staffs", staffs); -------------------------------------------------------------------------------- /src/handlers/mongoHandler.js: -------------------------------------------------------------------------------- 1 | const mongoose = require("mongoose"); 2 | const { MongoURL } = global.client.settings; 3 | 4 | mongoose.connect(MongoURL, { 5 | useUnifiedTopology: true, 6 | useNewUrlParser: true, 7 | useFindAndModify: false, 8 | }); 9 | 10 | mongoose.connection.on("connected", () => console.log("[DATABASE] Connected To Database")); 11 | mongoose.connection.on("error", () => console.error("[DATABASE] Failed To Connect Database")); -------------------------------------------------------------------------------- /src/schemas/roleLog.js: -------------------------------------------------------------------------------- 1 | const { Schema, model } = require("mongoose"); 2 | 3 | const roleLog = Schema({ 4 | type: { type: String, default: "" }, 5 | guildID: { type: String, default: "" }, 6 | staffID: { type: String, default: "" }, 7 | userID: { type: String, default: "" }, 8 | roleID: { type: String, default: "" }, 9 | date: { type: Number, default: Date.now() }, 10 | }); 11 | 12 | module.exports = model("roleLog", roleLog); -------------------------------------------------------------------------------- /src/handlers/eventHandler.js: -------------------------------------------------------------------------------- 1 | const { client } = global; 2 | const { readdir } = require("fs"); 3 | 4 | readdir("./src/events", (err, files) => { 5 | if (err) return console.error(err); 6 | files 7 | .filter((file) => file.endsWith(".js")) 8 | .forEach((file) => { 9 | let prop = require(`../events/${file}`); 10 | if (!prop.conf) return; 11 | client.on(prop.conf.event, prop); 12 | console.log(`[EVENT] ${prop.conf.name} Loaded`); 13 | }); 14 | }); -------------------------------------------------------------------------------- /src/schemas/alarms.js: -------------------------------------------------------------------------------- 1 | const { Schema, model } = require("mongoose"); 2 | 3 | const alarms = Schema({ 4 | guildID: { type: String, default: "" }, 5 | userID: { type: String, default: "" }, 6 | channelID: { type: String, default: "" }, 7 | reason: { type: String, default: "" }, 8 | startDate: { type: Number, default: Date.now() }, 9 | finishDate: { type: Number, default: Date.now() }, 10 | finished: { type: Boolean, default: false } 11 | }); 12 | 13 | module.exports = model("alarms", alarms); -------------------------------------------------------------------------------- /src/schemas/administrators.js: -------------------------------------------------------------------------------- 1 | const { Schema, model } = require("mongoose"); 2 | 3 | const administrators = Schema({ 4 | type: { type: String, default: "" }, 5 | guildID: { type: String, default: "" }, 6 | roleID: { type: String, default: "" }, 7 | userID: { type: String, default: "" }, 8 | userRoles: { type: Array, default: [] }, 9 | roleMembers: { type: Array, default: [] }, 10 | reason: { type: String, default: "Belirtilmedi!" }, 11 | }); 12 | 13 | module.exports = model("administrators", administrators); -------------------------------------------------------------------------------- /src/schemas/snipe.js: -------------------------------------------------------------------------------- 1 | const { Schema, model } = require("mongoose"); 2 | 3 | const snipe = Schema({ 4 | guildID: { type: String, default: "" }, 5 | channelID: { type: String, default: "" }, 6 | authorID: { type: String, default: ""}, 7 | userID: { type: String, default: "" }, 8 | messageContent: { type: String, default: "" }, 9 | image: { type: String, default: "" }, 10 | createdDate: Number, 11 | deletedDate: { type: Number, default: Date.now() } 12 | }); 13 | 14 | module.exports = model("snipe", snipe); -------------------------------------------------------------------------------- /src/commands/user/serverIcon.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | name: 'sunucuicon', 3 | aliases: ['servericon'], 4 | category: 'Kullanıcı', 5 | usage: '', 6 | guildOnly: true, 7 | cooldown: 5, 8 | 9 | /** 10 | * @param { Client } client 11 | * @param { Message } message 12 | * @param { Array } args 13 | * @param { MessageEmbed } Embed 14 | */ 15 | 16 | execute(client, message, args, Embed) { 17 | 18 | message.channel.success(message, Embed.setFooter(``).setImage(message.guild.iconURL({ dynamic: true, size: 256 })), { react: true }); 19 | 20 | }, 21 | }; -------------------------------------------------------------------------------- /src/commands/botAdmin/uptime.js: -------------------------------------------------------------------------------- 1 | const { developer } = require('../../configs/emojis.json'); 2 | 3 | module.exports = { 4 | name: 'uptime', 5 | aliases: [], 6 | category: 'Developer', 7 | developer: true, 8 | 9 | /** 10 | * @param { Client } client 11 | * @param { Message } message 12 | * @param { Array } args 13 | */ 14 | 15 | async execute(client, message, args) { 16 | 17 | let uptime = await client.duration(Date.now() - client.readyAt.getTime(), { comma: true }); 18 | message.channel.success(message, `Sistem **${uptime}dir** aktif ${developer ? developer : ``}`, { react: true }); 19 | 20 | }, 21 | }; -------------------------------------------------------------------------------- /src/schemas/penals.js: -------------------------------------------------------------------------------- 1 | const { Schema, model } = require("mongoose"); 2 | 3 | const penals = Schema({ 4 | id: { type: Number, default: 0 }, 5 | userID: { type: String, default: "" }, 6 | guildID: { type: String, default: "" }, 7 | type: { type: String, default: "" }, 8 | active: { type: Boolean, default: true }, 9 | staffID: { type: String, default: "" }, 10 | reason: { type: String, default: "" }, 11 | temp: { type: Boolean, default: false }, 12 | date: { type: Number, default: Date.now()}, 13 | finishDate: Number, 14 | removed: { type: Boolean, default: false }, 15 | date: { type: Number, default: Date.now() } 16 | }); 17 | 18 | module.exports = model("penals", penals); -------------------------------------------------------------------------------- /src/utils/Embed.js: -------------------------------------------------------------------------------- 1 | const { MessageEmbed } = require('discord.js'); 2 | const { Footer } = global.client.settings; 3 | 4 | /** 5 | * @param { String } authorName 6 | * @param { String } authorAvatar 7 | * @param { String } description 8 | * @param { String } footer 9 | * @param { String } color 10 | */ 11 | 12 | module.exports = (authorName, authorAvatar, description, footer = Footer, color = "RANDOM") => { 13 | const Embed = new MessageEmbed() 14 | .setAuthor(authorName || authorName == 'false' ? authorName : '', authorAvatar || authorAvatar == 'false' ? authorAvatar : '') 15 | .setDescription(description || description == 'false' ? description : '') 16 | .setFooter(footer) 17 | .setColor(color); 18 | 19 | return Embed; 20 | }; -------------------------------------------------------------------------------- /src/commands/botAdmin/ping.js: -------------------------------------------------------------------------------- 1 | const { mark, loading } = require('../../configs/emojis.json'); 2 | 3 | module.exports = { 4 | name: 'ping', 5 | aliases: [], 6 | category: 'Developer', 7 | developer: true, 8 | 9 | /** 10 | * @param { Client } client 11 | * @param { Message } message 12 | * @param { Array } args 13 | */ 14 | 15 | execute(client, message, args) { 16 | 17 | if(mark) message.react(mark); 18 | message.channel.send(`Ping Hesaplanıyor ${loading ? loading : ``}`).then(msg => { 19 | 20 | msg.edit(` 21 | Discord Gecikmesi : **${client.ws.ping} ms** 22 | Mesaj Gecikmesi : **${msg.createdTimestamp - message.createdTimestamp} ms** 23 | `); 24 | 25 | }); 26 | 27 | }, 28 | }; -------------------------------------------------------------------------------- /src/commands/botAdmin/reload.js: -------------------------------------------------------------------------------- 1 | const reload = require('../../schemas/reload.js'); 2 | const { loading } = require('../../configs/emojis.json'); 3 | 4 | module.exports = { 5 | name: 'reload', 6 | aliases: ['restart', 'reboot'], 7 | category: 'Developer', 8 | developer: true, 9 | 10 | /** 11 | * @param { Client } client 12 | * @param { Message } message 13 | * @param { Array } args 14 | * @param { MessageEmbed } Embed 15 | */ 16 | 17 | async execute(client, message, args, Embed) { 18 | 19 | await message.channel.send(`**Yeniden başlatılıyor** ${loading ? loading : ``}`).then(async msg => { 20 | 21 | console.log('[BOT] Started to reload'); 22 | await new reload({ type: 'moderation', authorID: message.author.id, channelID: msg.channel.id, messageID: msg.id }).save(); 23 | 24 | }); 25 | 26 | process.exit(); 27 | 28 | }, 29 | }; -------------------------------------------------------------------------------- /src/commands/user/avatar.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | name: 'avatar', 3 | aliases: ['pp'], 4 | category: 'Kullanıcı', 5 | usage: '<@Üye/ID>', 6 | guildOnly: true, 7 | cooldown: 5, 8 | 9 | /** 10 | * @param { Client } client 11 | * @param { Message } message 12 | * @param { Array } args 13 | * @param { MessageEmbed } Embed 14 | */ 15 | 16 | execute(client, message, args, Embed) { 17 | 18 | let user = message.mentions.members.first() || message.guild.members.cache.get(args[0]) || message.member; 19 | 20 | if(!user.user.avatar) return message.channel.error(message, `${user.user.id == message.author.id ? 'Maalesef sizin bir avatarınız yok!' : 'Belirtilen kullanıcı bir avatara sahip değil!'}`, { react: true }); 21 | 22 | message.channel.success(message, Embed.setFooter(``).setAuthor(user.user.username, client.user.avatarURL()).setImage(user.user.avatarURL({ dynamic: true, size: 256 })), { react: true }); 23 | 24 | }, 25 | }; -------------------------------------------------------------------------------- /src/commands/user/tag.js: -------------------------------------------------------------------------------- 1 | const { guildTags, guildDiscriminator } = global.client.guildSettings; 2 | 3 | module.exports = { 4 | name: 'tag', 5 | aliases: [], 6 | category: 'Kullanıcı', 7 | usage: '', 8 | guildOnly: true, 9 | 10 | /** 11 | * 12 | * @param { Client } client 13 | * @param { Message } message 14 | * @param { Array } args 15 | * @param { MessageEmbed } Embed 16 | */ 17 | 18 | async execute(client, message, args) { 19 | 20 | if(!guildTags.length && !guildDiscriminator) return message.channel.error(message, `Sunucu için herhangi bir tag ayarlanmamış`, { timeout: 10000, reply: true, react: true, keepMessage: true}); 21 | 22 | guildTags.forEach(async (tag, index) => { 23 | 24 | await client.wait(index * 1000); 25 | message.channel.send(`\`${tag}\``); 26 | 27 | }); 28 | 29 | if(guildDiscriminator) await client.wait(guildTags.length * 200).then(() => message.channel.send(`\`#${guildDiscriminator}\``)); 30 | 31 | }, 32 | }; -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vortex-moderation", 3 | "version": "1.0.0", 4 | "description": "Gelişmiş Discord Moderasyon Botu", 5 | "main": "vortex.js", 6 | "scripts": { 7 | "start": "node vortex.js", 8 | "lint": "eslint src", 9 | "lint:fix": "eslint src --fix", 10 | "prettier": "prettier --write src/**/*.js" 11 | }, 12 | "repository": { 13 | "type": "git", 14 | "url": "git+https://github.com/SeonerVorteX/discord-moderation-bot.git" 15 | }, 16 | "keywords": [ 17 | "node" 18 | ], 19 | "author": "SeonerVorteX", 20 | "license": "MIT", 21 | "bugs": { 22 | "url": "https://github.com/SeonerVorteX/discord-moderation-bot/issues" 23 | }, 24 | "homepage": "https://github.com/SeonerVorteX/discord-moderation-bot#readme", 25 | "dependencies": { 26 | "discord.js": "^12.5.3", 27 | "fs": "0.0.1-security", 28 | "moment": "^2.29.4", 29 | "moment-duration-format": "^2.3.2", 30 | "mongoose": "^5.13.15", 31 | "ms": "^2.1.3" 32 | }, 33 | "devDependencies": { 34 | "eslint": "^7.32.0", 35 | "prettier": "^2.4.1" 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 SeonerVorteX 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. -------------------------------------------------------------------------------- /vortex.js: -------------------------------------------------------------------------------- 1 | const { Client, Collection } = require('discord.js'); 2 | const client = (global.client = new Client({ fetchAllMembers: true })); 3 | const { readdirSync } = require('fs'); 4 | require('./src/configs/settings.js')(client); 5 | require('./src/handlers/functions.js')(client); 6 | const { Token } = client.settings; 7 | 8 | // Collections 9 | client.commands = new Collection(); 10 | client.cooldowns = new Collection(); 11 | 12 | // Handlers 13 | require('./src/handlers/mongoHandler.js'); 14 | require('./src/handlers/eventHandler.js'); 15 | 16 | // Checking Commands 17 | readdirSync('./src/commands').filter(async dir => { 18 | const commandFiles = readdirSync(`./src/commands/${dir}/`).filter(file => file.endsWith('.js')); 19 | for (const file of commandFiles) { 20 | const command = require(`./src/commands/${dir}/${file}`); 21 | await client.commands.set(command.name, command); 22 | // console.log(`[COMMAND] ${command.name} Loaded!`); 23 | } 24 | }); 25 | 26 | // Connecting To Client 27 | client.login(Token).then(() => console.log('[BOT] Connection started')).catch(() => { 28 | console.log('[BOT] Failed to start connection, trying again'); 29 | process.exit(); 30 | }); 31 | -------------------------------------------------------------------------------- /src/commands/guildAdmin/snipe.js: -------------------------------------------------------------------------------- 1 | const snipe = require('../../schemas/snipe.js'); 2 | 3 | module.exports = { 4 | name: 'snipe', 5 | aliases: [], 6 | category: 'Admin', 7 | usage: '<#Kanal/ID>', 8 | permission: 'ADMINISTRATOR', 9 | guildOnly: true, 10 | cooldown: 3, 11 | 12 | /** 13 | * @param { Client } client 14 | * @param { Message } message 15 | * @param { Array } args 16 | * @param { MessageEmbed } Embed 17 | */ 18 | 19 | async execute(client, message, args, Embed) { 20 | 21 | let data = await snipe.findOne({ guildID: message.guild.id, channelID: message.channel.id }); 22 | if(!data) return message.channel.success(message, Embed.setDescription(`Bu kanalda silinmiş herhangi bir mesaj bulunmuyor!`), { react: true }); 23 | 24 | message.channel.success(message, Embed.setDescription(` 25 | ${data.messageContent ? `\`Mesaj İçeriği :\` **${data.messageContent}**` : ``} 26 | \`Mesaj Sahibi :\` ${await client.fetchUser(data.userID).then(user => user.toString())} ${data.authorID ? `\n\`Silen Kişi :\` ${await client.fetchUser(data.authorID).then(user => user.toString())}` : ``} 27 | \`Mesajın Yazıldığı Tarih :\` ${await client.duration(Date.now() - data.createdDate)} önce 28 | \`Mesajın Silindiği Tarih :\` ${await client.duration(Date.now() - data.deletedDate)} önce 29 | `).setImage(data.image ? data.image : ``), { timeout: 15000, react: true }); 30 | 31 | }, 32 | }; -------------------------------------------------------------------------------- /src/commands/guildAdmin/slowMode.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | name: 'yavaşmod', 3 | aliases: ['slowmode'], 4 | category: 'Admin', 5 | usage: '', 6 | permission: 'ADMINISTRATOR', 7 | guildOnly: true, 8 | cooldown: 3, 9 | 10 | /** 11 | * @param { Client } client 12 | * @param { Message } message 13 | * @param { Array } args 14 | */ 15 | 16 | execute(client, message, args) { 17 | 18 | let number = args[0]; 19 | 20 | if(!number) return message.channel.error(message, `Yavaşmodun ayarlanması için bir sayı belirtmelisin!`, { timeout: 8000, reply: true, react: true }); 21 | if(isNaN(number) || number.includes('-')) return message.channel.error(message, `Geçerli bir sayı belirtmelisin!`, { timeout: 8000, reply: true, react: true }); 22 | if(number > 21600) return message.channel.error(message, `En fazla **21600** saniye \`(6 saat)\` belirte bilirsin!`, { timeout: 8000, reply: true, react: true }); 23 | if(message.channel.rateLimitPerUser == number) return message.channel.error(message, `Yavaş mod zaten ${number == 0 ? `kapatılmış!` : `**${number} saniye** olarak ayarlanmış!`}`, { timeout: 8000, reply: true, react: true }); 24 | 25 | message.channel.setRateLimitPerUser(args[0]); 26 | message.channel.success(message, `Yavaş mod başarıyla ${number == 0 ? `kapatıldı!` : `**${number} saniye** olarak ayarlandı!`}`, { react: true }); 27 | 28 | }, 29 | }; -------------------------------------------------------------------------------- /src/commands/user/afk.js: -------------------------------------------------------------------------------- 1 | const afk = require('../../schemas/afk.js'); 2 | const { Owners } = global.client.settings; 3 | const { guildTags, botYt } = global.client.guildSettings; 4 | 5 | module.exports = { 6 | name: 'afk', 7 | aliases: [], 8 | category: 'Kullanıcı', 9 | usage: '', 10 | guildOnly: true, 11 | cooldown: 5, 12 | 13 | /** 14 | * @param { Client } client 15 | * @param { Message } message 16 | * @param { Array } args 17 | * @param { MessageEmbed } Embed 18 | */ 19 | 20 | async execute(client, message, args, Embed) { 21 | 22 | if((!guildTags.length ? false : !message.member.hasPermission(8)) && !Owners.includes(message.author.id) && !message.member.roles.cache.has(botYt) && (!guildTags.length ? false : !guildTags.filter(tag => tag !== '').some(tag => message.member.user.username.includes(tag)))) return message.channel.error(message, `Bu özelliğği kullana bilmek için tag alman gerekiyor`, { timeout: 10000, reply: true, react: true, keepMessage: true }); 23 | 24 | let reason = args.slice(0).join(' ') || 'Belirtilmedi'; 25 | 26 | await afk.findOneAndUpdate({ guildID: message.guild.id, userID: message.author.id }, { $set: { reason, date: Date.now() } }, { upsert: true }); 27 | 28 | message.channel.success(message, Embed.setDescription(`Başarıyla AFK oldunuz. Sebep : \`${reason}\``), { timeout: 6000, react: true }); 29 | 30 | if (message.member.manageable) message.member.setNickname(`[AFK] ${message.member.displayName}`); 31 | 32 | }, 33 | }; -------------------------------------------------------------------------------- /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "eslint:recommended", 3 | "env": { 4 | "node": true, 5 | "es6": true 6 | }, 7 | "parserOptions": { 8 | "ecmaVersion": 2021 9 | }, 10 | "rules": { 11 | "brace-style": ["error", "stroustrup", { "allowSingleLine": true }], 12 | "comma-dangle": ["error", "always-multiline"], 13 | "comma-spacing": "error", 14 | "comma-style": "error", 15 | "curly": ["error", "multi-line", "consistent"], 16 | "dot-location": ["error", "property"], 17 | "handle-callback-err": "off", 18 | "indent": ["error", "tab"], 19 | "max-nested-callbacks": ["error", { "max": 4 }], 20 | "max-statements-per-line": ["error", { "max": 2 }], 21 | "no-console": "off", 22 | "no-empty-function": "error", 23 | "no-floating-decimal": "error", 24 | "no-inline-comments": "error", 25 | "no-lonely-if": "error", 26 | "no-multi-spaces": "error", 27 | "no-multiple-empty-lines": ["error", { "max": 2, "maxEOF": 1, "maxBOF": 0 }], 28 | "no-shadow": ["error", { "allow": ["err", "resolve", "reject"] }], 29 | "no-trailing-spaces": ["error"], 30 | "no-var": "error", 31 | "object-curly-spacing": ["error", "always"], 32 | "prefer-const": "error", 33 | "quotes": ["error", "single"], 34 | "semi": ["error", "always"], 35 | "space-before-blocks": "error", 36 | "space-before-function-paren": ["error", { 37 | "anonymous": "never", 38 | "named": "never", 39 | "asyncArrow": "always" 40 | }], 41 | "space-in-parens": "error", 42 | "space-infix-ops": "error", 43 | "space-unary-ops": "error", 44 | "spaced-comment": "error", 45 | "yoda": "error" 46 | } 47 | } -------------------------------------------------------------------------------- /src/events/messageUpdate.js: -------------------------------------------------------------------------------- 1 | const { Prefix } = global.client.settings; 2 | const { messageLog } = global.client.guildSettings.logs; 3 | const embed = require('../utils/Embed.js'); 4 | 5 | /** 6 | * @param { Message } oldMessage 7 | * @param { Message } newMessage 8 | */ 9 | 10 | module.exports = async (oldMessage, newMessage) => { 11 | 12 | if(newMessage.author.bot) return; 13 | if(oldMessage.content == newMessage.content) return; 14 | if(newMessage.content.toLowerCase().startsWith(`${Prefix}eval`) || oldMessage.content.toLowerCase().startsWith(`${Prefix}sil`) || newMessage.content.toLowerCase().startsWith(`${Prefix}sil`)) return; 15 | 16 | let Embed = embed('Mesaj Düzenlendi', newMessage.guild.iconURL({ dynamic: true }), false); 17 | let channel = newMessage.guild.channels.cache.get(messageLog); 18 | 19 | if(messageLog && channel && channel.type == 'text') channel.send( 20 | Embed 21 | .addFields( 22 | { name: `Mesaj Sahibi`, value: newMessage.author.toString(), inline: true }, 23 | { name: `Kanal`, value: newMessage.channel.toString(), inline: true }, 24 | { name: `Mesaj ID`, value: `\`${newMessage.id}\``, inline: true }, 25 | { name: `Eski Mesaj`, value: `${oldMessage.content ? `\`${oldMessage.content}\`` : `*Sadece Resim*`}`, inline: true }, 26 | { name: `Yeni Mesaj`, value: `${newMessage.content ? `\`${newMessage.content}\`` : `*Sadece Resim*`}`, inline: true }, 27 | ) 28 | .setThumbnail(newMessage.author.avatarURL({ dynamic: true })) 29 | .setImage(newMessage.attachments.first() ? newMessage.attachments.first().proxyURL : ``) 30 | .setColor('YELLOW') 31 | ); 32 | 33 | }; 34 | 35 | module.exports.conf = { 36 | name: 'Message Update', 37 | event: 'messageUpdate', 38 | }; -------------------------------------------------------------------------------- /src/commands/staff/help.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | name: 'help', 3 | aliases: ['yardım', 'komutlar'], 4 | staff: true, 5 | guildOnly: true, 6 | cooldown: 5, 7 | 8 | /** 9 | * @param { Client } client 10 | * @param { Message } message 11 | * @param { Array } args 12 | * @param { MessageEmbed } Embed 13 | */ 14 | 15 | execute(client, message, args, Embed) { 16 | 17 | Embed.setDescription(` 18 | **Admin Komutları** 19 | \`${client.commands.filter(command => command.category && command.category == 'Admin').map(command => `${client.settings.Prefix}${command.name}${!command.usage ? `` : ` ${command.usage}`}`).join(`\n`)}\` 20 | 21 | **Ceza Komutları** 22 | \`${client.commands.filter(command => command.category && command.category == 'Ceza').map(command => `${client.settings.Prefix}${command.name}${!command.usage ? `` : ` ${command.usage}`}`).join(`\n`)}\` 23 | 24 | **Yetkili Komutları** 25 | \`${client.commands.filter(command => command.category && command.category == 'Yetkili').map(command => `${client.settings.Prefix}${command.name}${!command.usage ? `` : ` ${command.usage}`}`).join(`\n`)}\` 26 | 27 | **Bilgi Komutları** 28 | \`${client.commands.filter(command => command.category && command.category == 'Bilgi').map(command => `${client.settings.Prefix}${command.name}${!command.usage ? `` : ` ${command.usage}`}`).join(`\n`)}\` 29 | 30 | **Kullanıcı Komutları** 31 | \`${client.commands.filter(command => command.category && command.category == 'Kullanıcı').map(command => `${client.settings.Prefix}${command.name}${!command.usage ? `` : ` ${command.usage}`}`).join(`\n`)}\` 32 | `); 33 | 34 | message.channel.success(message, Embed.setFooter(`${client.settings.Footer} • ${message.author.username} tarafından istendi`), { react: true }); 35 | 36 | }, 37 | }; -------------------------------------------------------------------------------- /src/events/afk.js: -------------------------------------------------------------------------------- 1 | const { MessageEmbed } = require('discord.js'); 2 | const moment = require("moment"); 3 | const afk = require('../schemas/afk.js'); 4 | const embed = require('../utils/Embed.js'); 5 | require("moment-duration-format"); 6 | 7 | /** 8 | * @param { Message } message 9 | */ 10 | 11 | module.exports = async (message) => { 12 | 13 | if(message.author.bot || !message.guild) return; 14 | 15 | let Embed = embed(message.author.username, message.author.avatarURL({ dynamic: true }), false); 16 | let afkData = await afk.findOne({ guildID: message.guild.id, userID: message.author.id }); 17 | 18 | if(afkData) { 19 | 20 | if(message.member.displayName.includes("[AFK]") && message.member.manageable) await message.member.setNickname(message.member.displayName.replace("[AFK]", "")); 21 | message.channel.success(message, Embed.setDescription(`${message.member.toString()}, Başarıyla AFK modundan çıktın. Toplam **${moment.duration(Date.now() - afkData.date).format("d [gün,] H [saat,] m [dakika,] s [saniyedir]")}** AFK'dın`), { timeout: 6000 }); 22 | await afk.deleteOne({ guildID: message.guild.id, userID: message.author.id }); 23 | 24 | }; 25 | 26 | let member = message.mentions.members.forEach(async member => { 27 | 28 | let memberData = await afk.findOne({ guildID: message.guild.id, userID: member.id }); 29 | if(memberData) { 30 | 31 | message.channel.send(Embed.setDescription(`${member.toString()} kullanıcısı ${memberData.reason == 'Belirtilmedi' ? '' : `\`${memberData.reason}\` nedeniyle,`} **${moment.duration(Date.now() - memberData.date).format("d [gün] H [saat], m [dakika] s [saniye]")}** önce afk oldu!`)); 32 | 33 | }; 34 | 35 | }); 36 | 37 | }; 38 | 39 | module.exports.conf = { 40 | name: 'AFK', 41 | event: 'message' 42 | }; -------------------------------------------------------------------------------- /src/commands/botAdmin/emojiKur.js: -------------------------------------------------------------------------------- 1 | const { writeFile } = require('fs'); 2 | const { systemEmojis } = global.client; 3 | const emojis = require('../../configs/emojis.json'); 4 | 5 | module.exports = { 6 | name: 'emojikur', 7 | aliases: ['emoji-kur'], 8 | category: 'Developer', 9 | developer: true, 10 | 11 | /** 12 | * @param { Client } client 13 | * @param { Message } message 14 | * @param { Array } args 15 | */ 16 | 17 | async execute(client, message, args) { 18 | 19 | message.channel.send(`**Sistem emojileri kurulmaya başladı** ${emojis.loading ? emojis.loading : ``}`).then(async msg => { 20 | 21 | await new Promise(async (resolve) => { 22 | 23 | systemEmojis.filter(systemEmoji => !emojis[systemEmoji.emojiName]).forEach(async (systemEmoji, index)=> { 24 | 25 | if(message.guild.emojis.cache.find(e => e.name == systemEmoji.emojiName)) emojis[systemEmoji.emojiName] = message.guild.emojis.cache.find(e => e.name == systemEmoji.emojiName).toString(); 26 | else { 27 | 28 | await client.wait(index * 250); 29 | await message.guild.emojis.create(systemEmoji.emojiUrl, systemEmoji.emojiName).then(emoji => { 30 | 31 | emojis[emoji.name] = emoji.toString(); 32 | writeFile('./src/configs/emojis.json', JSON.stringify(emojis, null, 2), err => { 33 | if(err) console.log(err); 34 | }); 35 | 36 | }); 37 | 38 | }; 39 | 40 | }); 41 | 42 | await client.wait(systemEmojis.filter(systemEmoji => !emojis[systemEmoji.emojiName]).length * 250).then(resolve) 43 | 44 | }); 45 | 46 | msg.edit(`**Sistem emojileri başarıyla kuruldu ${emojis['success']}**`); 47 | 48 | }); 49 | 50 | }, 51 | }; -------------------------------------------------------------------------------- /src/commands/guildAdmin/yetkiliSay.js: -------------------------------------------------------------------------------- 1 | const { staffRoles, transporterSpears, registerSpears, botYt } = global.client.guildSettings; 2 | 3 | module.exports = { 4 | name: 'yetkilisay', 5 | aliases: ['ytsay', 'yetkisay'], 6 | category: 'Admin', 7 | usage: '', 8 | permission: 'ADMINISTRATOR', 9 | guildOnly: true, 10 | cooldown: 3, 11 | 12 | /** 13 | * @param { Client } client 14 | * @param { Message } message 15 | * @param { Array } args 16 | */ 17 | 18 | async execute(client, message, args) { 19 | 20 | let members = message.guild.members.cache.filter(member => !member.user.bot && !member.voice.channel && (staffRoles.some(role => member.roles.cache.has(role)) || transporterSpears.some(role => member.roles.cache.has(role)) || registerSpears.some(role => member.roles.cache.has(role)) || member.roles.cache.has(botYt) || member.hasPermission('MANAGE_ROLES')) && member.user.presence.status !== 'offline'); 21 | 22 | if(args[0] && ['dm', 'dm-at'].some(arg => args[0].toLowerCase() == arg)) { 23 | 24 | message.channel.success(message, `Aktif olup seste bulunmayan **${members.size}** yetkili bulunuyor. Yetkililerin listesi :\n\n${members.map(member => member.toString()).join(`\n`)}\n\n**Yetkililere DM aracılığıyla haber verilmeye başlanıldı!**`); 25 | let index = 0; 26 | members.forEach(async member => { 27 | 28 | index += 1; 29 | await client.wait(index * 500); 30 | member.send(`Merhabalar, sunucumuzun ses aktifliğini arttırmak için lütfen müsaitsen public odalara değilsen özel odalara geçebilirmisin?`).catch(err => message.channel.send(`${member.toString()} adlı yetkiliye DM aracılığıyla ulaşamadım. Müsaitsen public odalara değilsen özel odalara geçebilirmisin?`)); 31 | 32 | }); 33 | 34 | } else if(args[0] || !args[0]) { 35 | 36 | message.channel.success(message, `Aktif olup seste bulunmayan **${members.size}** yetkili bulunuyor. Yetkililerin listesi :\n\n${members.map(member => member.toString()).join(`\n`)}`); 37 | 38 | }; 39 | 40 | }, 41 | }; 42 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | lerna-debug.log* 8 | 9 | # Diagnostic reports (https://nodejs.org/api/report.html) 10 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 11 | 12 | # Runtime data 13 | pids 14 | *.pid 15 | *.seed 16 | *.pid.lock 17 | 18 | # Directory for instrumented libs generated by jscoverage/JSCover 19 | lib-cov 20 | 21 | # Coverage directory used by tools like istanbul 22 | coverage 23 | *.lcov 24 | 25 | # nyc test coverage 26 | .nyc_output 27 | 28 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 29 | .grunt 30 | 31 | # Bower dependency directory (https://bower.io/) 32 | bower_components 33 | 34 | # node-waf configuration 35 | .lock-wscript 36 | 37 | # Compiled binary addons (https://nodejs.org/api/addons.html) 38 | build/Release 39 | 40 | # Dependency directories 41 | node_modules/ 42 | jspm_packages/ 43 | 44 | # TypeScript v1 declaration files 45 | typings/ 46 | 47 | # TypeScript cache 48 | *.tsbuildinfo 49 | 50 | # Optional npm cache directory 51 | .npm 52 | 53 | # Optional eslint cache 54 | .eslintcache 55 | 56 | # Microbundle cache 57 | .rpt2_cache/ 58 | .rts2_cache_cjs/ 59 | .rts2_cache_es/ 60 | .rts2_cache_umd/ 61 | 62 | # Optional REPL history 63 | .node_repl_history 64 | 65 | # Output of 'npm pack' 66 | *.tgz 67 | 68 | # Yarn Integrity file 69 | .yarn-integrity 70 | 71 | # dotenv environment variables file 72 | .env 73 | .env.test 74 | 75 | # parcel-bundler cache (https://parceljs.org/) 76 | .cache 77 | 78 | # Next.js build output 79 | .next 80 | 81 | # Nuxt.js build / generate output 82 | .nuxt 83 | dist 84 | 85 | # Gatsby files 86 | .cache/ 87 | # Comment in the public line in if your project uses Gatsby and *not* Next.js 88 | # https://nextjs.org/blog/next-9-1#public-directory-support 89 | # public 90 | 91 | # vuepress build output 92 | .vuepress/dist 93 | 94 | # Serverless directories 95 | .serverless/ 96 | 97 | # FuseBox cache 98 | .fusebox/ 99 | 100 | # DynamoDB Local files 101 | .dynamodb/ 102 | 103 | # TernJS port file 104 | .tern-port -------------------------------------------------------------------------------- /src/commands/user/booster.js: -------------------------------------------------------------------------------- 1 | const { guildTags, nameTag } = global.client.guildSettings; 2 | 3 | module.exports = { 4 | name: 'booster', 5 | aliases: ['zengin'], 6 | category: 'Kullanıcı', 7 | usage: '<İsim>', 8 | guildOnly: true, 9 | cooldown: 5, 10 | 11 | /** 12 | * @param { Client } client 13 | * @param { Message } message 14 | * @param { Array } args 15 | * @param { MessageEmbed } Embed 16 | */ 17 | 18 | execute(client, message, args, Embed) { 19 | 20 | if(!message.member.premiumSinceTimestamp) return message.channel.error(message, `Bu komutu kullanmak için önce boost basmanız gerekiyor!`, { timeout: 10000, reply: true, react: true, keepMessage: true }); 21 | if(!args[0]) return message.channel.error(message, `Bir isim belirtin!`, { timeout: 10000, reply: true, react: true, keepMessage: true }); 22 | 23 | let name = args.slice(0).join(' '); 24 | 25 | if(name.length > 25) return message.channel.error(message, `İsminiz 25 karakterden fazla olamaz!`, { timeout: 10000, reply: true, react: true, keepMessage: true }); 26 | if(guildTags.length) { 27 | 28 | let displayName = message.member.displayName.replace(nameTag, ''); 29 | guildTags.filter(tag => displayName.includes(tag)).forEach(tag => displayName = displayName.replace(tag, '')); 30 | 31 | if(name.trim() == displayName.trim()) return message.channel.error(message, `Sunucudaki ismin zaten böyle!`, { timeout: 10000, reply: true, react: true, keepMessage: true }); 32 | 33 | } else if(message.member.displayName.trim() == name.trim()) return message.channel.error(message, `Sunucudaki ismin zaten böyle!`, { timeout: 10000, reply: true, react: true, keepMessage: true }); 34 | if(message.member.manageable) { 35 | 36 | message.channel.success(message, Embed.setDescription(`İsminiz başarıyla **${!nameTag ? "" : nameTag} ${name}** olarak değiştirildi!`), { react: true, deleteMessage: 8000 }); 37 | message.member.setNickname(`${!nameTag ? "" : nameTag} ${name}`); 38 | 39 | } else message.channel.error(message, `Bu işlem için yeterli yetkim yok!`, { timeout: 10000, react: true, keepMessage: true }); 40 | 41 | }, 42 | }; -------------------------------------------------------------------------------- /src/events/guildBanAdd.js: -------------------------------------------------------------------------------- 1 | const { OtherBots } = global.client.settings; 2 | const { guildID, dmMessages, penals, logs } = global.client.guildSettings; 3 | const { log, penalPoint, banGifs } = penals.ban; 4 | const { client } = global; 5 | const embed = require('../utils/Embed.js'); 6 | const moment = require('moment'); 7 | require("moment-duration-format"); 8 | moment.locale("tr"); 9 | 10 | /** 11 | * @param { Guild } guild 12 | * @param { User } user 13 | */ 14 | 15 | module.exports = async (guild, user) => { 16 | 17 | if(guildID && guild.id !== guildID) return; 18 | 19 | let Embed = embed(user.username, user.avatarURL({ dynamic: true }), false); 20 | let audit = await guild.fetchAuditLogs({ type: 'MEMBER_BAN_ADD' }); 21 | let executor = audit.entries.first().executor; 22 | let reason = await client.fetchBan(guild, user.id).then(bannedUser => bannedUser.reason); 23 | 24 | if(executor.bot && (executor.id == client.user.id || OtherBots.includes(executor.id))) return; 25 | 26 | let point = await client.addPenalPoint(guild.id, user.id, penalPoint); 27 | let penal = await client.newPenal(guild.id, user.id, "BAN", true, executor.id, !reason ? 'Belirtilmedi!' : reason); 28 | 29 | guild.channels.cache.get(log).send(Embed.setFooter('').setImage(banGifs.random()).setDescription(` 30 | ${user.toString()} kullanıcısı ${executor.toString()} tarafından sağ tık ile **yasaklandı!** 31 | 32 | **Ceza ID :** \`#${penal.id}\` 33 | **Yasaklanan Kullanıcı :** \`${user.tag} (${user.id})\` 34 | **Yasaklayan Yetkili :** \`${executor.tag} (${executor.id})\` 35 | **Yasaklanma Tarihi :** \`${moment(penal.date).format(`DD MMMM YYYY (HH:mm)`)}\` 36 | **Yasaklanma Sebebi :** \`${!reason ? 'Belirtilmedi!' : reason}\` 37 | `)); 38 | 39 | if(dmMessages) user.send(`\`${guild.name}\` sunucusunda, **${executor.tag}** tarafından, ${!reason ? '' : `\`${reason}\` sebebiyle`} yasaklandınız! \`(Ceza ID : #${penal.id})\``).catch(() => {}); 40 | if(logs.pointLog) client.channels.cache.get(logs.pointLog).send(`${user.toString()}, aldığınız \`#${penal.id}\` ID'li **Ban** cezası ile toplam **${point.penalPoint}** ceza puanına ulaştınız!`); 41 | 42 | }; 43 | 44 | module.exports.conf = { 45 | name: 'Guild Ban Add', 46 | event: 'guildBanAdd' 47 | }; -------------------------------------------------------------------------------- /src/commands/guildAdmin/say.js: -------------------------------------------------------------------------------- 1 | const { Footer } = global.client.settings; 2 | const { guildTags, guildDiscriminator } = global.client.guildSettings; 3 | const { crown } = require('../../configs/emojis.json'); 4 | 5 | module.exports = { 6 | name: 'say', 7 | aliases: ['üyesay'], 8 | category: 'Admin', 9 | usage: '', 10 | permission: 'ADMINISTRATOR', 11 | guildOnly: true, 12 | cooldown: 5, 13 | 14 | /** 15 | * @param { Client } client 16 | * @param { Message } message 17 | * @param { Array } args 18 | * @param { MessageEmbed } Embed 19 | */ 20 | 21 | execute(client, message, args, Embed) { 22 | 23 | let totalMembers = message.guild.memberCount; 24 | let onlineMembers = message.guild.members.cache.filter(member => member.presence.status !== "offline").size.toString().replace(/ /g, " "); 25 | let tagMembers = message.guild.members.cache.filter(member => guildTags.some(tag => member.user.username.includes(tag)) || member.user.discriminator == guildDiscriminator).size.toString(); 26 | let voiceMembers = message.guild.members.cache.filter(member => member.voice.channel && !member.user.bot).size.toString(); 27 | let botMembers = message.guild.members.cache.filter(member => member.user.bot && member.voice.channel).size.toString(); 28 | let boostSize = message.guild.premiumSubscriptionCount; 29 | let boostLevel = message.guild.premiumTier; 30 | 31 | message.channel.success(message, Embed.setAuthor(message.author.username, message.author.avatarURL({ dynamic: true })).setTitle(`${message.guild.name} Bilgileri :`).setThumbnail(message.guild.iconURL({ dynamic: true })).setFooter(`${Footer} • ${message.author.username} tarafından istendi`).setDescription(` 32 | ${crown ? crown : ``} Sunucuda Toplam **${totalMembers}** Üye Var 33 | ${crown ? crown : ``} Sunucuda Toplam **${onlineMembers}** Çevrimiçi Üye Var 34 | ${crown ? crown : ``} Sunucuda Toplam **${tagMembers}** Taglı Üye Var 35 | ${crown ? crown : ``} Sunucudaki Ses Kanallarında **${voiceMembers}** ( **+${botMembers}** Bot ) Üye Var 36 | ${crown ? crown : ``} Sunucuda Toplam **${boostSize}** ${!boostLevel || boostLevel == 0 ? `` : `( **${boostLevel}.** Seviye )`} Boost Var 37 | `), { react: true }); 38 | 39 | }, 40 | }; -------------------------------------------------------------------------------- /src/commands/guildAdmin/sil.js: -------------------------------------------------------------------------------- 1 | const { messageLog } = global.client.guildSettings.logs; 2 | 3 | module.exports = { 4 | name: 'sil', 5 | aliases: ['temizle'], 6 | category: 'Yetkili', 7 | usage: ' ', 8 | permission: 'ADMINISTRATOR', 9 | guildOnly: true, 10 | cooldown: 3, 11 | 12 | /** 13 | * @param { Client } client 14 | * @param { Message } message 15 | * @param { Array } args 16 | * @param { MessageEmbed } Embed 17 | */ 18 | 19 | async execute(client, message, args, Embed) { 20 | 21 | let messageSize = args[0]; 22 | let reason = args.slice(1).join(' '); 23 | 24 | if(!messageSize) return message.channel.error(message, Embed.setDescription(`Silinicek mesaj sayısını belirtmelisin!`), { timeout: 6000, react: true }); 25 | if(isNaN(messageSize) || messageSize == 0 || messageSize.includes('-')) return message.channel.error(message, Embed.setDescription(`Geçerli bir sayı belirtmelisin!`), { timeout: 6000, react: true }); 26 | if(messageSize > 100) return message.channel.error(message, Embed.setDescription(`1 ve 100 arasında bir rakam belirtmelisin!`), { timeout: 6000, react: true }); 27 | 28 | await message.delete().catch(() => {}); 29 | await message.channel.bulkDelete(messageSize).then(async messages => await message.channel.success(message, Embed.setDescription(`**${messageSize}** adet mesaj ${!reason ? '' : `\`${reason}\` nedeniyle`} başarıyla silindi!`), { timeout: 6000 })).catch(() => {}); 30 | 31 | if(messageLog){ 32 | 33 | let mLog = message.guild.channels.cache.get(messageLog); 34 | 35 | if(mLog && mLog.type == 'text') mLog.send(Embed.setDescription('').setAuthor(`Toplu Mesaj Silindi`, message.guild.iconURL({ dynamic: true })).setThumbnail(message.author.avatarURL({ dynamic: true })).addFields( 36 | { name: `Silinen Mesaj Sayı`, value: `**${messageSize}**`, inline: true }, 37 | { name: `Silindiği Kanal`, value: message.channel.toString(), inline: true }, 38 | { name: `Silen Yetkili`, value: message.author.toString(), inline: true }, 39 | { name: `Silinme Sebebi`, value: reason ? `\`${reason}\`` : `\`Belirtilmedi!\``, inline: false }, 40 | )); 41 | 42 | }; 43 | 44 | }, 45 | }; -------------------------------------------------------------------------------- /src/commands/info/cezaBilgi.js: -------------------------------------------------------------------------------- 1 | const { mark2, cross2, muted, chatMuted, jailed, banned, warned } = require('../../configs/emojis.json'); 2 | const penals = require('../../schemas/penals.js'); 3 | const moment = require('moment'); 4 | require('moment-duration-format'); 5 | moment.locale('tr'); 6 | 7 | module.exports = { 8 | name: 'cezabilgi', 9 | aliases: ['cezasorgu'], 10 | category: 'Bilgi', 11 | usage: '<#Ceza ID>', 12 | permission: 'ADMINISTRATOR', 13 | guildOnly: true, 14 | cooldown: 3, 15 | 16 | /** 17 | * @param { Client } client 18 | * @param { Message } message 19 | * @param { Array } args 20 | * @param { MessageEmbed } Embed 21 | */ 22 | 23 | async execute(client, message, args, Embed) { 24 | 25 | if(!args[0]) return message.channel.error(message, Embed.setDescription(`Bir ceza ID'si belirtmelisin!`), { timeout: 8000, react: true }); 26 | 27 | let id = args[0].replace('#', ''); 28 | 29 | if(isNaN(id) || id.includes('-')) return message.channel.error(message, Embed.setDescription(`Geçerli bir ceza ID'si belirtmelisin!`), { timeout: 8000, react: true }); 30 | 31 | let penal = await penals.findOne({ id: id, guildID: message.guild.id }); 32 | 33 | if(!penal) return message.channel.error(message, Embed.setDescription(`Veritabanında \`#${id}\` ID'li bir ceza bulunamadı!`), { timeout: 8000, react: true }); 34 | 35 | let user = await client.fetchUser(penal.userID); 36 | let staff = await client.fetchUser(penal.staffID); 37 | message.channel.success(message, Embed.setDescription(`\`#${id}\` ${penal.active ? (mark2 ? mark2 : ``) : (cross2 ? cross2 : ``)} **[${penal.type}]** ${user.toString()} üyesi \`${staff.tag} (${staff.id})\` tarafından **${moment(penal.date).format("DD MMMM YYYY (HH:mm)")}** tarihinde ${!penal.reason || penal.reason == 'Belirtilmedi!' ? '' : `\`${penal.reason}\` sebebiyle`} ${penal.type == 'BAN' || penal.type == 'FORCE-BAN' ? (banned ? banned : ``) : penal.type == 'JAIL' || penal.type == 'TEMP-JAIL' ? (jailed ? jailed : ``) : penal.type == 'CHAT-MUTE' ? (chatMuted ? chatMuted : ``) : penal.type == 'VOICE-MUTE' ? (muted ? muted : ``) : (warned ? warned : ``)} **${penal.type.toLowerCase().replace("-", " ")}** cezası almış! ${penal.finishDate ? `Cezanın bitiş tarihi : \`${moment(penal.finishDate).format("DD MMMM YYYY (HH:mm)")}\`` : ''}`), { react: true }); 38 | 39 | }, 40 | }; -------------------------------------------------------------------------------- /src/commands/botAdmin/eval.js: -------------------------------------------------------------------------------- 1 | const { TextChannel, MessageEmbed, WebhookClient, Collection } = require('discord.js'); 2 | const { Owners, Prefix } = global.client.settings; 3 | const afk = require('../../schemas/afk.js'); 4 | const reload = require('../../schemas/reload.js'); 5 | const penals = require('../../schemas/penals.js'); 6 | const staffs = require('../../schemas/staffs.js'); 7 | const alarms = require('../../schemas/alarms.js'); 8 | const roleLog = require('../../schemas/roleLog.js'); 9 | const commands = require('../../schemas/commands.js'); 10 | const forceBans = require('../../schemas/forceBans.js'); 11 | const forbiddenTag = require('../../schemas/forbiddenTag'); 12 | const administrators = require('../../schemas/administrators.js'); 13 | const penalPoints = require('../../schemas/penalPoints.js'); 14 | const voiceJoinedAt = require('../../schemas/voiceJoinedAt.js'); 15 | const emojis = require('../../configs/emojis.json'); 16 | const fs = require('fs'); 17 | const ms = require('ms'); 18 | const moment = require('moment'); 19 | moment.locale('tr'); 20 | 21 | module.exports = { 22 | 23 | name: 'eval', 24 | aliases: ['evaluate', 'vortex'], 25 | category: 'Developer', 26 | usage: '', 27 | developer: true, 28 | 29 | /** 30 | * @param { Client } client 31 | * @param { Message } message 32 | * @param { Array } args 33 | * @param { MessageEmbed } Embed 34 | */ 35 | 36 | async execute(client, message, args, Embed){ 37 | 38 | if (!args[0]) return message.channel.error(message, `Kod belirtilmedi`, { timeout: 8000, reply: true }); 39 | let code = args.join(' '); 40 | if(message.channel.type == 'text') message.delete({ reason: "eval" }).catch(() => {}); 41 | function clean(text) { 42 | 43 | if (typeof text !== 'string') text = require('util').inspect(text, { depth: 0 }); 44 | text = text.replace(/`/g, '`' + String.fromCharCode(8203)).replace(/@/g, '@' + String.fromCharCode(8203)); 45 | return text; 46 | 47 | }; 48 | 49 | try { 50 | 51 | var evaled = clean(await eval(code)); 52 | if(evaled.match(new RegExp(`${client.token}`, 'g'))) evaled.replace(client.token, "Secret Information"); 53 | message.channel.send(`${evaled.replace(client.token, "Secret Information")}`, { code: 'js', split: true }); 54 | 55 | } 56 | catch(err) { message.channel.send(err, { code: 'js', split: true }) }; 57 | 58 | }, 59 | }; 60 | -------------------------------------------------------------------------------- /src/events/userUpdate.js: -------------------------------------------------------------------------------- 1 | const { client } = global; 2 | const { guildID, dmMessages, registration } = client.guildSettings; 3 | const { unregisterRoles } = registration; 4 | const { forbidRoles, forbidChannel, forbidLog } = client.guildSettings.forbiddenTag; 5 | const forbiddenTag = require('../schemas/forbiddenTag.js'); 6 | 7 | /** 8 | * @param { User } oldUser 9 | * @param { User } newUser 10 | */ 11 | 12 | module.exports = async (oldUser, newUser) => { 13 | 14 | if(oldUser.bot || newUser.bot || (oldUser.username === newUser.username)) return; 15 | 16 | let guild = client.guilds.cache.get(guildID); 17 | if(!guild) return; 18 | 19 | let member = guild.members.cache.get(newUser.id); 20 | if(!member) return; 21 | 22 | let data = await forbiddenTag.findOne({ guildID: guild.id }); 23 | 24 | if(data && data.forbiddenTags.length && data.forbiddenTags.some(tag => !oldUser.username.includes(tag) && newUser.username.includes(tag))) { 25 | 26 | setTimeout(() => { 27 | 28 | if(member.manageable) member.roles.set(forbidRoles); 29 | let tag = data.forbiddenTags.find(tag => newUser.username.includes(tag)); 30 | if(dmMessages) newUser.send(`Yeni kullanıcı adınızda bulunan \`${tag}\` tagı **${guild.name}** sunucusunun yasaklı taglarından biri olduğu için sunucuya erişiminiz kesildi!`).catch(() => {}); 31 | guild.channels.cache.get(forbidChannel).send(`${newUser.toString()}, Maalesef yeni kullanıcı adın sunucumuzdaki yasaklı taglardan birini ( \`${tag}\` ) içeriyor. Bu sebeple sunucuya erişemezsin!`); 32 | guild.channels.cache.get(forbidLog).send(`\`${member.user.tag} (${member.user.id})\` kullanıcısının sunucuya erişimi kesildi! \`(Tag: ${tag})\``); 33 | 34 | }, 2000); 35 | 36 | } else if(data && data.forbiddenTags.length && data.forbiddenTags.some(tag => oldUser.username.includes(tag) && !newUser.username.includes(tag))) { 37 | 38 | setTimeout(() => { 39 | 40 | if(member.manageable) member.roles.set(unregisterRoles); 41 | let tag = data.forbiddenTags.find(tag => oldUser.username.includes(tag) && !newUser.username.includes(tag)); 42 | if(dmMessages) newUser.send(`Kullanıcı adınızda bulunan ve **${guild.name}** sunucusunun yasaklı taglarından biri olan \`${tag}\` tagını kullanıcı adınızdan saldığınız için sunucuya erişiminiz tekrar açıldı!`).catch(() => {}); 43 | guild.channels.cache.get(forbidLog).send(`\`${member.user.tag} (${member.user.id})\` kullanıcısının sunucuya erişimi açıldı! \`(Tag: ${tag})\``); 44 | 45 | }, 2000); 46 | 47 | }; 48 | 49 | }; 50 | 51 | module.exports.conf = { 52 | name: 'User Update', 53 | event: 'userUpdate' 54 | }; -------------------------------------------------------------------------------- /src/commands/user/alarm.js: -------------------------------------------------------------------------------- 1 | const { Prefix } = global.client.settings; 2 | const { alarm } = require('../../configs/emojis.json'); 3 | const alarms = require('../../schemas/alarms'); 4 | const ms = require('ms'); 5 | const moment = require('moment'); 6 | require('moment-duration-format'); 7 | moment.locale('tr'); 8 | 9 | module.exports = { 10 | name: 'alarm', 11 | aliases: ['alarmkur'], 12 | category: 'Kullanıcı', 13 | usage: ' ', 14 | guildOnly: true, 15 | cooldown: 5, 16 | 17 | /** 18 | * @param { Client } client 19 | * @param { Message } message 20 | * @param { Array } args 21 | * @param { MessageEmbed } Embed 22 | */ 23 | 24 | async execute(client, message, args, Embed) { 25 | 26 | let duration = args[0]; 27 | let reason = args.slice(1).join(' '); 28 | 29 | if(!duration) return message.channel.error(message, `Bir süre belirtmelisin!`, { react: true }); 30 | if(!['s', 'sn', 'saniye', 'm', 'minute', 'dk', 'dakika', 'h', 'hour', 'st', 'saat', 'd', 'day', 'g', 'gün'].some(arg => duration.includes(arg))) return message.channel.error(message, `Sadece \`saniye(s, sn)\` , \`dakika(dk, m, minute)\` , \`saat(st, h, hour)\` , \`gün(g, d, day)\` cinsinden bir süre belirtmelisin! Örnek : \`${Prefix}alarm 15dk Arkadaşlarla oyun giricem\``, { react: true }); 31 | if(isNaN(client.replaceDuration(duration)) || client.replaceDuration(duration) == 0 || client.replaceDuration(duration).includes('-')) return message.channel.error(message, `Geçerli bir süre miktarı belirtmelisin`, { react: true }); 32 | 33 | duration = await client.ms(duration); 34 | 35 | if(ms(duration.duration) > 86400000) return message.channel.error(message, `En fazla **1 gün** belirte bilirsin!`, { react: true }); 36 | 37 | let datas = await alarms.find({ guildID: message.guild.id, userID: message.author.id, finished: false }); 38 | 39 | if(datas.length >= 5) return message.channel.error(message, `Görünüşe göre **${datas.length}** aktif alarmın bulunuyor. Yeni bir alarm daha kurmak için aktif alarmlarından birinin bitmesini beklemelisin!`, { reply: true, react: true }) 40 | 41 | let Alarm = await client.newAlarm(message.guild.id, message.author.id, message.channel.id, reason ? reason : 'Belirtilmedi!', Date.now(), Date.now()+ms(duration.duration)); 42 | message.channel.success(message, `${alarm ? alarm : `:alarm_clock:`} Alarm${reason ? ` \`${reason}\` nedeniyle` : ''} saat **${moment(Date.now()+ms(duration.duration)).format(`HH:mm`)}** tarihine kuruldu!`, { react: true }); 43 | 44 | setTimeout(async () => { 45 | 46 | Alarm.finished = true; 47 | await Alarm.save(); 48 | message.channel.send(`${alarm ? alarm : `:alarm_clock:`} ${message.author.toString()}, ${client.getTime(ms(duration.duration))} önce ${reason ? `\`${reason}\` sebebiyle` : `\`bilinmeyen\` bir nedenle`} alarm kurmuştun, Hatırladın mı?`); 49 | 50 | }, ms(duration.duration)); 51 | 52 | }, 53 | }; -------------------------------------------------------------------------------- /src/events/guildBanRemove.js: -------------------------------------------------------------------------------- 1 | const { OtherBots } = global.client.settings; 2 | const { guildID, penals } = global.client.guildSettings; 3 | const { log, unbanGifs } = penals.ban; 4 | const { client } = global; 5 | const forceBans = require('../schemas/forceBans.js'); 6 | const Penals = require('../schemas/penals.js'); 7 | const embed = require('../utils/Embed.js'); 8 | const moment = require('moment'); 9 | require("moment-duration-format"); 10 | moment.locale("tr"); 11 | 12 | /** 13 | * @param { Guild } guild 14 | * @param { User } user 15 | */ 16 | 17 | module.exports = async (guild, user) => { 18 | 19 | if(guildID && guild.id !== guildID) return; 20 | 21 | let Embed = embed(user.username, user.avatarURL({ dynamic: true }), false); 22 | let audit = await guild.fetchAuditLogs({ type: 'MEMBER_BAN_REMOVE' }); 23 | let executor = audit.entries.first().executor; 24 | let forceban = await forceBans.findOne({ guildID: guild.id, userID: user.id }); 25 | let penal = await Penals.findOne({ guildID: guild.id, userID: user.id, type: 'FORCE-BAN', active: true }); 26 | 27 | if(forceban) { 28 | 29 | guild.members.ban(user.id, { reason: 'Kalıcı yasağı kaldırıldığı için tekrar yasaklandı!' }).catch(() => {}); 30 | return guild.channels.cache.get(log).send(Embed.setDescription(` 31 | \`${user.tag} (${user.id})\` kullanıcısının **kalıcı yasağı** ${executor.toString()} tarafından kaldırıldığı için kullanıcı tekrar yasaklandı! 32 | 33 | **Ceza ID :** \`${!penal ? `Veri Bulunamadı!` : `#${penal.id}`}\` 34 | **Yasağı Kaldıran Yetkili :** \`${executor.tag} (${executor.id})\` 35 | **Yasaklanma Tarihi :** \`${!penal ? `Veri Bulunamadı!` : moment(penal.date).format(`DD MMMM YYYY (HH:mm)`)}\` 36 | **Yasaklanma Sebebi :** \`${!penal ? `Veri Bulunamadı!` : penal.reason}\` 37 | `)); 38 | 39 | } else { 40 | 41 | if(executor.bot && (executor.id == client.user.id || OtherBots.includes(executor.id))) return; 42 | 43 | penal = await Penals.findOne({ guildID: guild.id, userID: user.id, type: 'BAN', active: true }); 44 | 45 | if(penal) { 46 | 47 | penal.finishDate = Date.now(); 48 | penal.active = false; 49 | await penal.save(); 50 | 51 | }; 52 | 53 | 54 | guild.channels.cache.get(log).send(Embed.setFooter('').setImage(unbanGifs.random()).setDescription(` 55 | \`${user.username}\` kullanıcısının **yasağı** ${executor.toString()} tarafından sağ tık ile kaldırıldı! 56 | 57 | **Ceza ID :** \`${!penal ? `Veri Bulunamadı!` : `#${penal.id}`}\` 58 | **Yasağı Kaldırılan Kullanıcı :** \`${user.tag} (${user.id})\` 59 | **Yasağı Kaldıran Yetkili :** \`${executor.tag} (${executor.id})\` 60 | **Yasaklanma Tarihi :** \`${!penal ? `Veri Bulunamadı!` : moment(penal.date).format(`DD MMMM YYYY (HH:mm)`)}\` 61 | **Yasağın Kaldırılma Tarihi :** \`${moment(Date.now()).format(`DD MMMM YYYY (HH:mm)`)}\` 62 | `)); 63 | 64 | }; 65 | 66 | }; 67 | 68 | module.exports.conf = { 69 | name: 'Guild Ban Remove', 70 | event: 'guildBanRemove' 71 | }; -------------------------------------------------------------------------------- /src/commands/guildAdmin/kilit.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | name: 'kilit', 3 | aliases: ['lock'], 4 | category: 'Admin', 5 | usage: '<#Kanal/ID>', 6 | permission: 'ADMINISTRATOR', 7 | guildOnly: true, 8 | cooldown: 3, 9 | 10 | /** 11 | * 12 | * @param { Client } client 13 | * @param { Message } message 14 | * @param { Array } args 15 | * @param { MessageEmbed } Embed 16 | */ 17 | 18 | execute(client, message, args, Embed) { 19 | 20 | let channel = message.mentions.channels.first() || message.guild.channels.cache.get(args[0]); 21 | let reason = args.slice(1).join(' '); 22 | 23 | 24 | if(channel) { 25 | 26 | if(channel.type !== 'text') return message.channel.error(message, Embed.setDescription(`Belirttiğin kanal bir metin kanalı değil`), { timeout: 8000, react: true }); 27 | if(!channel.manageable) return message.channel.error(message, Embed.setDescription(`Bu işlem için yeterli yetkiye sahip değilim`), { timeout: 8000, react: true }); 28 | if(channel.permissionsFor(message.guild.roles.everyone).has('SEND_MESSAGES')) { 29 | 30 | channel.updateOverwrite(message.guild.roles.everyone, { 31 | SEND_MESSAGES: false, 32 | }); 33 | 34 | message.channel.success(message, Embed.setDescription(`${channel.toString()} kanalı ${message.author.toString()} tarafından ${!reason ? '' : `\`${reason}\` sebebiyle`} kilitlendi!`), { react: true }); 35 | 36 | } else { 37 | 38 | channel.updateOverwrite(message.guild.roles.everyone, { 39 | SEND_MESSAGES: true, 40 | }); 41 | 42 | message.channel.success(message, Embed.setDescription(`${channel.toString()} kanalının kilidi ${message.author.toString()} tarafından ${!reason ? '' : `\`${reason}\` sebebiyle`} açıldı!`), { react: true }); 43 | 44 | }; 45 | 46 | } else { 47 | 48 | if(!message.channel.manageable) return message.channel.error(message, Embed.setDescription(`Bu işlem için yeterli yetkiye sahip değilim`), { timeout: 8000, react: true }); 49 | if(message.channel.permissionsFor(message.guild.roles.everyone).has('SEND_MESSAGES')) { 50 | 51 | message.channel.success(message, Embed.setDescription(`${message.channel.toString()} kanalı ${message.author.toString()} tarafından ${!reason ? '' : `\`${reason}\` sebebiyle`} kilitlendi!`), { react: true }); 52 | 53 | message.channel.updateOverwrite(message.guild.roles.everyone, { 54 | SEND_MESSAGES: false, 55 | }); 56 | 57 | } else { 58 | 59 | message.channel.success(message, Embed.setDescription(`${message.channel.toString()} kanalının kilidi ${message.author.toString()} tarafından ${!reason ? '' : `\`${reason}\` sebebiyle`} açıldı!`), { react: true }); 60 | 61 | message.channel.updateOverwrite(message.guild.roles.everyone, { 62 | SEND_MESSAGES: true, 63 | }); 64 | 65 | }; 66 | 67 | }; 68 | 69 | }, 70 | }; -------------------------------------------------------------------------------- /src/commands/info/jailBilgi.js: -------------------------------------------------------------------------------- 1 | const { Owners } = global.client.settings; 2 | const { unAuthorizedMessages, botYt, penals } = global.client.guildSettings; 3 | const { staffs, jailRoles } = penals.jail; 4 | const Penals = require('../../schemas/penals.js'); 5 | const moment = require('moment'); 6 | require('moment-duration-format'); 7 | moment.locale('tr'); 8 | 9 | module.exports = { 10 | name: 'jailbilgi', 11 | aliases: ['jail-bilgi', 'karantinabilgi', 'karantina-bilgi'], 12 | category: 'Bilgi', 13 | usage: '<@Üye/ID>', 14 | guildOnly: true, 15 | cooldown: 3, 16 | 17 | /** 18 | * @param { Client } client 19 | * @param { Message } message 20 | * @param { Array } args 21 | * @param { MessageEmbed } Embed 22 | */ 23 | 24 | async execute(client, message, args, Embed) { 25 | 26 | if(!Owners.includes(message.author.id) && !message.member.hasPermission(8) && !message.member.roles.cache.has(botYt) && !staffs.some(role => message.member.roles.cache.has(role))) { 27 | if(unAuthorizedMessages) return message.channel.error(message, Embed.setDescription(`Maalesef, bu komutu kullana bilmek için yeterli yetkiye sahip değilsin!`), { timeout: 10000 }); 28 | else return; 29 | }; 30 | 31 | let user = message.mentions.members.first() || message.mentions.users.first() || message.guild.members.cache.get(args[0]) || client.users.cache.get(args[0]) || await client.fetchUser(args[0]).then(user => user); 32 | 33 | if(!args[0]) return message.channel.error(message, Embed.setDescription(`Bir üye belirtmelisin!`), { timeout: 8000, react: true }); 34 | if(!user) return message.channel.error(message, Embed.setDescription(`Geçerli bir üye belirtmelisin`), { timeout: 8000, react: true }); 35 | if((message.mentions.members.first() || message.guild.members.cache.get(args[0])) && !jailRoles.some(role => user.roles.cache.has(role))) return message.channel.error(message, Embed.setDescription(`Belirttiğin üye daha önce jaillenmemiş!`), { timeout: 8000, repyl: true, react: true }); 36 | 37 | let penal = await Penals.findOne({ guildID: message.guild.id, userID: user.id, type: 'JAIL', active: true }) || await Penals.findOne({ guildID: message.guild.id, userID: user.id, type: 'TEMP-JAIL', active: true }); 38 | 39 | if(!penal) return message.channel.error(message, Embed.setDescription(`Veritabanında belirtilen üyeye ait bir bilgi bulunamadı`), { timeout: 8000, react: true }); 40 | 41 | message.channel.success(message, Embed.setDescription(` 42 | ${user.toString()} kullanıcısının **${penal.type == 'TEMP-JAIL' ? `tempjail` : `jail`}** bilgisi : 43 | 44 | **Ceza ID :** \`#${penal.id}\` 45 | **Jaillenen Kullanıcı :** \`${user.user.tag} (${user.user.id})\` 46 | **Jailleyen Yetkili :** \`${client.users.cache.get(penal.staffID).tag} (${client.users.cache.get(penal.staffID).id})\` 47 | **Jaillenme Tarihi :** \`${moment(penal.date).format(`DD MMMM YYYY (HH:mm)`)}\` ${penals.type == 'TEMP-JAIL' ? `\n**Jailin Bitiş Tarihi** \`${moment(penal.finishDate).format(`DD MMMM YYYY (HH:mm)`)}\`` : ``} 48 | **Jaillenme Sebebi :** \`${!penal.reason ? 'Belirtilmedi!' : penal.reason}\` 49 | `), { react: true }); 50 | 51 | }, 52 | }; -------------------------------------------------------------------------------- /src/commands/guildAdmin/allMove.js: -------------------------------------------------------------------------------- 1 | const { voiceLog } = global.client.guildSettings.logs; 2 | const { mark, loading, success, changeState } = require('../../configs/emojis.json'); 3 | 4 | module.exports = { 5 | name: 'allmove', 6 | aliases: ['herkesitaşı'], 7 | category: 'Admin', 8 | usage: '<#Kanal/ID> ', 9 | permission: 'ADMINISTRATOR', 10 | guildOnyl: true, 11 | cooldown: 3, 12 | 13 | /** 14 | * @param { Client } client 15 | * @param { Message } message 16 | * @param { Array } args 17 | * @param { MessageEmbed } Embed 18 | */ 19 | 20 | async execute(client, message, args, Embed) { 21 | 22 | let memberChannel = message.member.voice.channel; 23 | let channel = message.mentions.channels.first() || message.guild.channels.cache.get(args[0]); 24 | let reason = args.slice(1).join(' '); 25 | 26 | if(!memberChannel) return message.channel.error(message, Embed.setDescription('Her hangi bir ses kanalında değilsin!'), { timeout: 10000, react: true }); 27 | if(!args[0]) return message.channel.error(message, Embed.setDescription('Üyelerin taşınacağı bir ses kanalı belirtmelisin!'), { timeout: 10000, react: true }); 28 | if(!channel || channel.type !== 'voice') return message.channel.error(message, Embed.setDescription('Üyelerin taşınacağı geçerli bir ses kanalı belirtmelisin!'), { timeout: 10000, react: true }); 29 | if(channel.id == memberChannel.id) return message.channel.error(message, Embed.setDescription('Zaten belirttiğin kanaldasınız!'), { timeout: 10000, react: true }); 30 | if(channel.userLimit !== 0 && memberChannel.members.size > channel.userLimit) return message.channel.error(message, Embed.setDescription('Belirttiğin kanalda, sesteki taşına bilecek üyelerin hepsi için yer yok!'), { timeout: 10000, react: true }); 31 | 32 | if(mark) message.react(mark); 33 | message.channel.send(Embed.setDescription(`${memberChannel.toString()} adlı ses kanalındaki üyeler ${!reason ? '' : `\`${reason}\` nedeniyle`} ${channel.toString()} adlı ses kanalına taşınmaya başlandı ${loading ? loading : ``} `)).then(async msg => { 34 | 35 | let memberSize = memberChannel.members.size; 36 | await new Promise(async (resolve) => { 37 | 38 | let index = 0; 39 | memberChannel.members.forEach(async member => { 40 | 41 | index += 1; 42 | await client.wait(index * 250); 43 | member.voice.setChannel(channel.id); 44 | 45 | if(voiceLog) { 46 | 47 | let vLog = message.guild.channels.cache.get(voiceLog); 48 | 49 | if(vLog && vLog.type == 'text') vLog.send(`${changeState ? changeState : `:arrow_up_down:`} \`${member.displayName}\` üyesi \`${message.member.displayName}\` tarafından ${member.voice.channel.toString()} adlı ses kanalından ${channel.toString()} adlı ses kanalına **taşındı!**`); 50 | 51 | }; 52 | 53 | }); 54 | await client.wait(memberSize * 250).then(resolve); 55 | 56 | }); 57 | 58 | msg.edit(Embed.setDescription(`${success ? success : ``} ${memberChannel.toString()} adlı ses kanalındaki **${memberSize}** üye ${!reason ? '' : `\`${reason}\` nedeniyle`} ${channel.toString()} adlı ses kanalına **taşındı!**`)); 59 | 60 | }); 61 | 62 | }, 63 | }; -------------------------------------------------------------------------------- /src/events/messageDelete.js: -------------------------------------------------------------------------------- 1 | const { Prefix, OtherBots } = global.client.settings; 2 | const { messageLog } = global.client.guildSettings.logs; 3 | const snipe = require('../schemas/snipe.js'); 4 | const embed = require('../utils/Embed.js'); 5 | const commands = require('../schemas/commands.js'); 6 | 7 | /** 8 | * @param { Message } message 9 | */ 10 | 11 | module.exports = async (message) => { 12 | 13 | if(message.author.bot) return; 14 | 15 | let Commands = await commands.findOne({ guildID: message.guild.id }); 16 | 17 | if(Commands && ((Commands.moderationCommands && Commands.moderationCommands.some(command => message.content.startsWith(command))) || (Commands.registerCommands && Commands.registerCommands.some(command => message.content.startsWith(command))))) return; 18 | 19 | let Embed = embed('Mesaj Silindi', message.guild.iconURL({ dynamic: true }), false); 20 | let data = await snipe.findOneAndUpdate({ guildID: message.guild.id, channelID: message.channel.id }, { $set: { messageContent: message.content, userID: message.author.id, image: message.attachments.first() ? message.attachments.first().proxyURL : null, createdDate: message.createdTimestamp, deletedDate: Date.now() } }, { upsert: true }); 21 | let channel = message.guild.channels.cache.get(messageLog); 22 | let audit = await message.guild.fetchAuditLogs(); 23 | let entry = audit.entries.first(); 24 | 25 | if(data && entry && entry.action == 'MESSAGE_DELETE' && entry.extra.channel.id == message.channel.id && entry.target.id == message.author.id && !OtherBots.includes(entry.executor.id) && entry.executor.id !== client.user.id) { 26 | 27 | data.authorID = entry.executor.id; 28 | data.save(); 29 | 30 | if(messageLog && channel && channel.type == 'text') channel.send( 31 | Embed 32 | .addFields( 33 | { name: `Mesaj Sahibi`, value: message.author.toString(), inline: true }, 34 | { name: `Silindiği Kanal`, value: message.channel.toString(), inline: true }, 35 | { name: `Silen Yetkili`, value: entry.executor.toString(), inline: true }, 36 | { name: `Silinen Mesaj`, value: `${message.content ? `\`${message.content}\`` : `*Mesaj Yok*`}`, inline: true }, 37 | { name: `Mesaj ID`, value: `\`${message.id}\``, inline: true }, 38 | ) 39 | .setThumbnail(message.author.avatarURL({ dynamic: true })) 40 | .setImage(message.attachments.first() ? message.attachments.first().proxyURL : ``) 41 | .setColor('#FF0000') 42 | ); 43 | 44 | } else { 45 | 46 | if(data) { 47 | data.authorID = undefined; 48 | data.save(); 49 | }; 50 | 51 | if(messageLog && channel && channel.type == 'text') channel.send( 52 | Embed 53 | .addFields( 54 | { name: `Mesaj Sahibi`, value: message.author.toString(), inline: true }, 55 | { name: `Silindiği Kanal`, value: message.channel.toString(), inline: true }, 56 | { name: `Mesaj ID`, value: `\`${message.id}\``, inline: true }, 57 | { name: `Silinen Mesaj`, value: `${message.content ? `\`${message.content}\`` : `*Mesaj Yok*`}`, inline: false }, 58 | ) 59 | .setThumbnail(message.author.avatarURL({ dynamic: true })) 60 | .setImage(message.attachments.first() ? message.attachments.first().proxyURL : ``) 61 | .setColor('#FF0000') 62 | ); 63 | 64 | }; 65 | 66 | }; 67 | 68 | module.exports.conf = { 69 | name: 'Message Delete', 70 | event: 'messageDelete', 71 | }; 72 | -------------------------------------------------------------------------------- /src/commands/penal/forceBan.js: -------------------------------------------------------------------------------- 1 | const { dmMessages, penals, logs } = global.client.guildSettings; 2 | const { penalPoint, log, banGifs } = penals.ban; 3 | const { pointLog } = logs; 4 | const { banned } = require('../../configs/emojis.json'); 5 | const forceBans = require('../../schemas/forceBans'); 6 | const penalPoints = require('../../schemas/penalPoints.js'); 7 | const moment = require('moment'); 8 | require('moment-duration-format'); 9 | moment.locale('tr'); 10 | 11 | module.exports = { 12 | name: 'forceban', 13 | aliases: [], 14 | category: 'Ceza', 15 | usage: '<@Üye/ID> ', 16 | guildOwner: true, 17 | guildOnly: true, 18 | cooldown: 3, 19 | 20 | /** 21 | * 22 | * @param { Client } client 23 | * @param { Message } message 24 | * @param { Array } args 25 | * @param { MessageEmbed } Embed 26 | */ 27 | 28 | async execute(client, message, args, Embed) { 29 | 30 | let user = message.mentions.members.first() || message.guild.members.cache.get(args[0]); 31 | let reason = args.slice(1).join(' '); 32 | 33 | if(!args[0]) return message.channel.error(message, `Bir üye belirtmelisin!`, { timeout: 8000, reply: true, react: true }); 34 | if(await client.fetchBan(message.guild, args[0])) return message.channel.error(message, `Belirttiğin üye sunucudan daha önce yasaklanmış!`, { timeout: 8000, react: true }) 35 | if(!user) return message.channel.error(message, `Geçerli bir üye belirtmelisin!`, { timeout: 8000, reply: true, react: true }); 36 | if(user.id == message.author.id) return message.channel.error(message, `Bu işlemi kendine uygulayamazsın!`, { timeout: 8000, reply: true, react: true }); 37 | if(!user.bannable) return message.channel.error(message, `Belirtilen üyeyi yasaklayamıyorum!`, { timeout: 8000, react: true }); 38 | 39 | message.guild.members.ban(user.id, { reason: `${!reason ? `${message.author.tag} tarafından bilinmeyen bir nedenle kalıcı olarak yasaklanması istendi!` : `${message.author.tag} tarafından ${reason} sebebiyle kalıcı olarak yasaklanması istendi!`}` }).catch(() => {}); 40 | let point = await client.addPenalPoint(message.guild.id, user.id, penalPoint); 41 | let penal = await client.newPenal(message.guild.id, user.id, "FORCE-BAN", true, message.author.id, !reason ? 'Belirtilmedi!' : reason); 42 | await new forceBans({ guildID: message.guild.id, userID: user.id, staffID: message.author.id }).save(); 43 | 44 | message.channel.success(message, Embed.setDescription(`${banned ? banned : ``} \`${user.user.tag}\` isimli kullanıcı, ${message.author.toString()} tarafından, ${!reason ? '' : `\`${reason}\` sebebiyle`} sunucudan **kalıcı olarak** yasaklandı! \`(Ceza ID : #${penal.id})\``), { react: true }); 45 | if(log) client.channels.cache.get(log).send(Embed.setColor('#FF0000').setFooter('').setImage(banGifs.random()).setDescription(` 46 | ${user.toString()} kullanıcısı **kalıcı olarak yasaklandı!** 47 | 48 | **Ceza ID :** \`#${penal.id}\` 49 | **Yasaklanan Kullanıcı :** \`${user.user.tag} (${user.user.id})\` 50 | **Yasaklayan Yetkili :** \`${message.author.tag} (${message.author.id})\` 51 | **Yasaklanma Tarihi :** \`${moment(penal.date).format(`DD MMMM YYYY (HH:mm)`)}\` 52 | **Yasaklanma Sebebi :** \`${!reason ? 'Belirtilmedi!' : reason}\` 53 | `)); 54 | 55 | if(dmMessages) user.send(`${banned ? banned : ``} \`${message.guild.name}\` sunucusunda, **${message.author.tag}** tarafından, ${!reason ? '' : `\`${reason}\` sebebiyle`} **kalıcı olarak** yasaklandınız! \`(Ceza ID : #${penal.id})\``).catch(() => {}); 56 | if(pointLog) client.channels.cache.get(pointLog).send(`${banned ? banned : ``} ${user.toString()}, aldığınız \`#${penal.id}\` ID'li **ForceBan** cezası ile toplam **${point.penalPoint}** ceza puanına ulaştınız!`); 57 | 58 | }, 59 | }; -------------------------------------------------------------------------------- /src/commands/penal/unBan.js: -------------------------------------------------------------------------------- 1 | const { Owners } = global.client.settings; 2 | const { unAuthorizedMessages, botYt, dmMessages, penals } = global.client.guildSettings; 3 | const { staffs, log, unbanGifs } = penals.ban; 4 | const Penals = require('../../schemas/penals.js'); 5 | const forceBans = require('../../schemas/forceBans.js'); 6 | const moment = require('moment'); 7 | require('moment-duration-format'); 8 | moment.locale('tr'); 9 | 10 | module.exports = { 11 | name: 'unban', 12 | aliases: [], 13 | category: 'Ceza', 14 | usage: '', 15 | guildOnly: true, 16 | cooldown: 3, 17 | 18 | /** 19 | * @param { Client } client 20 | * @param { Message } message 21 | * @param { Array } args 22 | * @param { MessageEmbed } Embed 23 | */ 24 | 25 | async execute(client, message, args, Embed) { 26 | 27 | if(!Owners.includes(message.author.id) && !message.member.hasPermission(8) && !message.member.hasPermission('BAN_MEMBERS') && !message.member.roles.cache.has(botYt) && !staffs.some(role => message.member.roles.cache.has(role))) { 28 | if(unAuthorizedMessages) return message.channel.error(message, `Maalesef, bu komutu kullana bilmek için yeterli yetkiye sahip değilsin!`, { timeout: 10000 }); 29 | else return; 30 | }; 31 | 32 | if(!args[0]) return message.channel.error(message, `Bir kullanıcı ID'si belirtmelisin!`, { timeout: 8000, reply: true, react: true }); 33 | 34 | let bannedUser = await client.fetchBan(message.guild, args[0]); 35 | 36 | if(!bannedUser) return message.channel.error(message, `Bu üye sunucudan yasaklı değil yada geçerli bir üye belirtilmedi!`, { timeout: 8000, react: true }); 37 | 38 | let forceban = await Penals.findOne({ guildID: message.guild.id, userID: bannedUser.user.id, type: "FORCE-BAN", active: true }); 39 | let forceBan = await forceBans.findOne({ guildID: message.guild.id, userID: bannedUser.user.id }); 40 | 41 | if(forceban || forceBan) return message.channel.error(message, `Bu üye sunucudan kalıcı olarak yasaklanmış, bu yüzden yasağı kaldırılamaz!`, { timeout: 8000, react: true }); 42 | 43 | message.guild.members.unban(bannedUser.user.id, `${message.author.tag} tarafından yasağın kaldırılması istendi!`).catch(() => {}); 44 | 45 | let reason = args.slice(1).join(' '); 46 | let penal = await Penals.findOne({ guildID: message.guild.id, userID: bannedUser.user.id, type: "BAN", active: true }); 47 | 48 | if(penal) { 49 | 50 | penal.active = false; 51 | penal.finishDate = Date.now(); 52 | await penal.save(); 53 | 54 | }; 55 | 56 | message.channel.success(message, Embed.setDescription(`\`${bannedUser.user.tag}\` kullanıcısının yasağı, ${message.author.toString()} tarafından kaldırıldı! \`(Ceza ID : ${!penal ? `Veri Bulunamadı` : `#${penal.id}`})\``), { react: true }); 57 | 58 | if(log) client.channels.cache.get(log).send(Embed.setColor('#00FF00').setFooter('').setImage(unbanGifs.random()).setDescription(` 59 | \`${bannedUser.user.username}\` kullanıcısının **yasağı** kaldırıldı! 60 | 61 | **Ceza ID :** \`${!penal ? `Veri Bulunamadı!` : `#${penal.id}`}\` 62 | **Yasağı Kaldırılan Kullanıcı :** \`${bannedUser.user.tag} (${bannedUser.user.id})\` 63 | **Yasağı Kaldıran Yetkili :** \`${message.author.tag} (${message.author.id})\` 64 | **Yasaklanma Tarihi :** \`${!penal ? `Veri Bulunamadı!` : moment(penal.date).format(`DD MMMM YYYY (HH:mm)`)}\` 65 | **Yasağın Kaldırılma Tarihi :** \`${moment(Date.now()).format(`DD MMMM YYYY (HH:mm)`)}\` 66 | **Yasağın Kaldırılma Sebebi :** \`${!reason ? 'Belirtilmedi!' : reason}\` 67 | `)); 68 | 69 | if(dmMessages) bannedUser.user.send(`\`${message.guild.name}\` sunucusundaki yasağınız, **${message.author.tag}** tarafından kaldırıldı! ${!penal ? `` : `\`(Ceza ID : #${penal.id})\``}`).catch(() => {}); 70 | 71 | }, 72 | }; -------------------------------------------------------------------------------- /src/commands/info/banBilgi.js: -------------------------------------------------------------------------------- 1 | const { Owners } = global.client.settings; 2 | const { unAuthorizedMessages, botYt, penals } = global.client.guildSettings; 3 | const { staffs } = penals.ban; 4 | const Penals = require('../../schemas/penals.js'); 5 | const moment = require('moment'); 6 | require('moment-duration-format'); 7 | moment.locale('tr'); 8 | 9 | module.exports = { 10 | name: 'banbilgi', 11 | aliases: ['ban-bilgi'], 12 | category: 'Bilgi', 13 | usage: '', 14 | guildOnyl: true, 15 | cooldown: true, 16 | 17 | /** 18 | * @param { Client } client 19 | * @param { Message } message 20 | * @param { Array } args 21 | * @param { MessageEmbed } Embed 22 | */ 23 | 24 | async execute(client, message, args, Embed) { 25 | 26 | if(!Owners.includes(message.author.id) && !message.member.hasPermission('BAN_MEMBERS') && !message.member.roles.cache.has(botYt) && !staffs.some(role => message.member.roles.cache.has(role))) { 27 | if(unAuthorizedMessages) return message.channel.error(message, Embed.setDescription(`Maalesef, bu komutu kullana bilmek için yeterli yetkiye sahip değilsin!`), { timeout: 10000 }); 28 | else return; 29 | }; 30 | 31 | if(!args[0]) return message.channel.error(message, Embed.setDescription(`Bir kullanıcı ID'si belirtmelisin!`), { timeout: 8000, react: true }); 32 | if(isNaN(args[0]) || args[0].toLocaleString().includes('-')) return message.channel.error(message, Embed.setDescription(`Geçerli bir kullanıcı ID'si belirtmelisin!`), { timeout: 8000, react: true,}) 33 | 34 | let bannedUser = await client.fetchBan(message.guild, args[0]); 35 | 36 | if(!bannedUser) return message.channel.error(message, Embed.setDescription(`Bu üye sunucudan yasaklı değil yada geçerli bir üye belirtilmedi!`), { timeout: 8000, react: true }); 37 | 38 | let penal = await Penals.findOne({ guildID: message.guild.id, userID: bannedUser.user.id, type: "BAN", active: true }); 39 | 40 | if(penal) { 41 | 42 | if(penal.type == 'BAN') { 43 | 44 | message.channel.success(message, Embed.setDescription(` 45 | \`${bannedUser.user.tag}\` kullanıcısının **yasaklanma** bilgisi : 46 | 47 | **Ceza ID :** \`#${penal.id}\` 48 | **Yasaklanan Kullanıcı :** \`${bannedUser.user.tag} (${bannedUser.user.id})\` 49 | **Yasaklayan Yetkili :** \`${client.users.cache.get(penal.staffID).tag} (${client.users.cache.get(penal.staffID).id})\` 50 | **Yasaklanma Tarihi :** ${moment(penal.date).format("DD MMMM YYYY (HH:mm)")} 51 | **Yasaklanma Sebebi :** \`${!penal.reason ? 'Belirtilmedi!' : penal.reason}\` 52 | `), { react: true }); 53 | 54 | } else if(penal.type == 'FORCE_BAN') { 55 | 56 | message.channel.success(message, Embed.setDescription(` 57 | \`${bannedUser.user.tag}\` kullanıcısının **kalıcı yasaklanma** bilgisi : 58 | 59 | **Ceza ID :** \`#${penal.id}\` 60 | **Yasaklanan Kullanıcı :** \`${bannedUser.user.tag} (${bannedUser.user.id})\` 61 | **Yasaklayan Yetkili :** \`${client.users.cache.get(penal.staffID).tag} (${client.users.cache.get(penal.staffID).id})\` 62 | **Yasaklanma Tarihi :** ${moment(penal.date).format("DD MMMM YYYY (HH:mm)")} 63 | **Yasaklanma Sebebi :** \`${!penal.reason ? 'Belirtilmedi!' : penal.reason}\` 64 | `), { react: true }); 65 | 66 | }; 67 | 68 | } else { 69 | 70 | message.channel.success(message, Embed.setDescription(` 71 | \`${bannedUser.user.tag}\` kullanıcısının **yasaklanma** bilgisi : 72 | 73 | **Ceza ID :** \`Veri Bulunamadı!\` 74 | **Yasaklanan Kullanıcı :** \`${bannedUser.user.tag} (${bannedUser.user.id})\` 75 | **Yasaklayan Yetkili :** \`Veri Bulunamadı!\` 76 | **Yasaklanma Tarihi :** \`Veri Bulunamadı!\` 77 | **Yasaklanma Sebebi :** \`${!bannedUser.reason ? `Belirtilmedi!` : bannedUser.reason}\` 78 | `), { react: true }); 79 | 80 | }; 81 | 82 | }, 83 | }; -------------------------------------------------------------------------------- /src/commands/penal/unJail.js: -------------------------------------------------------------------------------- 1 | const { Owners } = global.client.settings; 2 | const { unAuthorizedMessages, botYt, dmMessages, penals } = global.client.guildSettings; 3 | const { staffs, jailRoles, log } = penals.jail; 4 | const { unregisterRoles } = global.client.guildSettings.registration; 5 | const { jailed } = require('../../configs/emojis.json'); 6 | const Penals = require('../../schemas/penals.js'); 7 | const moment = require('moment'); 8 | require('moment-duration-format'); 9 | moment.locale('tr'); 10 | 11 | module.exports = { 12 | name: 'unjail', 13 | aliases: [], 14 | category: 'Ceza', 15 | usage: '<@Üye/ID> ', 16 | guildOnly: true, 17 | cooldown: 3, 18 | 19 | /** 20 | * @param { Client } client 21 | * @param { Message } message 22 | * @param { Array } args 23 | * @param { MessageEmbed } Embed 24 | */ 25 | 26 | async execute(client, message, args, Embed) { 27 | 28 | if(!Owners.includes(message.author.id) && !message.member.hasPermission(8) && !message.member.roles.cache.has(botYt) && !staffs.some(role => message.member.roles.cache.has(role))) { 29 | if(unAuthorizedMessages) return message.channel.error(message, `Maalesef, bu komutu kullana bilmek için yeterli yetkiye sahip değilsin!`, { timeout: 10000 }); 30 | else return; 31 | }; 32 | 33 | let user = message.mentions.members.first() || message.guild.members.cache.get(args[0]); 34 | let reason = args.slice(1).join(' '); 35 | 36 | if(!args[0]) return message.channel.error(message, `Bir üye belirtmelisin!`, { timeout: 8000, reply: true, react: true }); 37 | if(!user) return message.channel.error(message, `Geçerli bir üye belirtmelisin!`, { timeout: 8000, reply: true, react: true }); 38 | if(user.id == message.author.id) return message.channel.error(message, `Bu işlemi kendine uygulayamazsın!`, { timeout: 8000, reply: true, react: true }); 39 | if(!jailRoles.some(role => user.roles.cache.has(role))) return message.channel.error(message, `Belirttiğin üye daha önce jaillenmemiş!`, { timeout: 8000, react: true }); 40 | if(user.roles.highest.position >= message.member.roles.highest.position) return message.channel.error(message, `Kendinle aynı veya daha yüksek yetkide olan birine bu işlemi uygulayamazsın`, { timeout: 8000, reply: true, react: true }); 41 | if(!user.manageable) return message.channel.error(message, `Belirtilen üyeye bu işlemi uygulayamıyorum!`, { timeout: 8000, react: true }); 42 | 43 | user.roles.set(unregisterRoles).catch(() => {}); 44 | let penal = await Penals.findOne({ guildID: message.guild.id, userID: user.id, type: 'JAIL', active: true }) || await Penals.findOne({ guildID: message.guild.id, userID: user.id, type: 'TEMP-JAIL', active: true }); 45 | 46 | if(penal) { 47 | 48 | penal.finishDate = Date.now(); 49 | penal.active = false; 50 | penal.save(); 51 | 52 | }; 53 | 54 | message.channel.success(message, Embed.setDescription(`${jailed ? jailed : ``} \`${user.user.tag}\` isimli kullanıcının jaili ${message.author.toString()} tarafından, ${!reason ? '' : `\`${reason}\` sebebiyle`} kaldırıldı! \`(Ceza ID : #${penal.id})\``), { react: true }); 55 | if(log) client.channels.cache.get(log).send(Embed.setColor('#0000FF').setDescription(` 56 | ${user.toString()} kullanıcısının **jaili** kaldırıldı! 57 | 58 | **Ceza ID :** \`#${penal.id}\` 59 | **Jaili Kaldırılan Kullanıcı :** \`${user.user.tag} (${user.user.id})\` 60 | **Jaili Kaldıran Yetkili :** \`${message.author.tag} (${message.author.id})\` 61 | **Jaillenme Tarihi :** \`${moment(penal.date).format(`DD MMMM YYYY (HH:mm)`)}\` 62 | **Jaillenme Sebebi :** \`${!penal.reason ? 'Belirtilmedi!' : penal.reason}\` 63 | **Jailin Kaldırılma Sebebi :** \`${!reason ? 'Belirtilmedi!' : reason}\` 64 | `)); 65 | 66 | if(dmMessages) user.send(`${jailed ? jailed : ``} \`${message.guild.name}\` sunucusunda, **${message.author.tag}** tarafından, jailiniz kaldılırdı! \`(Ceza ID : #${penal.id})\``).catch(() => {}); 67 | 68 | }, 69 | }; -------------------------------------------------------------------------------- /src/commands/penal/unMute.js: -------------------------------------------------------------------------------- 1 | const { Owners } = global.client.settings; 2 | const { unAuthorizedMessages, botYt, dmMessages, penals } = global.client.guildSettings; 3 | const { staffs, cmuteRoles, log } = penals.chatMute; 4 | const { unCMuted } = require('../../configs/emojis.json'); 5 | const Penals = require('../../schemas/penals.js'); 6 | const moment = require('moment'); 7 | require('moment-duration-format'); 8 | moment.locale('tr'); 9 | 10 | module.exports = { 11 | name: 'unmute', 12 | aliases: [], 13 | category: 'Ceza', 14 | usage: '<@Üye/ID> ', 15 | guildOnly: true, 16 | cooldown: 3, 17 | 18 | /** 19 | * @param { Client } client 20 | * @param { Message } message 21 | * @param { Array } args 22 | * @param { MessageEmbed } Embed 23 | */ 24 | 25 | async execute(client, message, args, Embed) { 26 | 27 | if(!Owners.includes(message.author.id) && !message.member.hasPermission(8) && !message.member.roles.cache.has(botYt) && !staffs.some(role => message.member.roles.cache.has(role))) { 28 | if(unAuthorizedMessages) return message.channel.error(message, `Maalesef, bu komutu kullana bilmek için yeterli yetkiye sahip değilsin!`, { timeout: 10000 }); 29 | else return; 30 | }; 31 | 32 | let user = message.mentions.members.first() || message.guild.members.cache.get(args[0]); 33 | let reason = args.slice(1).join(' '); 34 | 35 | if(!args[0]) return message.channel.error(message, `Bir üye belirtmelisin!`, { timeout: 8000, reply: true, react: true }); 36 | if(!user) return message.channel.error(message, `Geçerli bir üye belirtmelisin!`, { timeout: 8000, reply: true, react: true }); 37 | if(user.id == message.author.id) return message.channel.error(message, `Bu işlemi kendine uygulayamazsın!`, { timeout: 8000, reply: true, react: true }); 38 | if(!cmuteRoles.some(role => user.roles.cache.has(role))) return message.channel.error(message, `Belirttiğin üye **metin kanallarında** daha önce susturulmamış!`, { timeout: 8000, react: true }); 39 | if(user.roles.highest.position >= message.member.roles.highest.position) return message.channel.error(message, `Kendinle aynı veya daha yüksek yetkide olan birine bu işlemi uygulayamazsın`, { timeout: 8000, reply: true, react: true }); 40 | if(!user.manageable) return message.channel.error(message, `Belirtilen üyeye bu işlemi uygulayamıyorum!`, { timeout: 8000, react: true }); 41 | 42 | user.roles.remove(cmuteRoles).catch(() => {}); 43 | let penal = await Penals.findOne({ guildID: message.guild.id, userID: user.id, type: 'CHAT-MUTE', active: true }); 44 | 45 | if(penal) { 46 | 47 | penal.finishDate = Date.now(); 48 | penal.active = false; 49 | penal.save(); 50 | 51 | }; 52 | 53 | message.channel.success(message, Embed.setDescription(`${unCMuted ? unCMuted : `:speech_balloon:`} \`${user.user.tag}\` isimli kullanıcının **metin kanallarındaki** susturulma cezası ${message.author.toString()} tarafından, ${!reason ? '' : `\`${reason}\` sebebiyle`} kaldırıldı! \`(Ceza ID : #${penal.id})\``), { react: true }); 54 | if(log) client.channels.cache.get(log).send(Embed.setColor('#0000FF').setDescription(` 55 | ${user.toString()} kullanıcısının **metin kanallarındaki** susturulma cezası kaldırıldı! 56 | 57 | **Ceza ID :** \`#${penal.id}\` 58 | **Cezası Kaldırılan Kullanıcı :** \`${user.user.tag} (${user.user.id})\` 59 | **Cezayı Kaldıran Yetkili :** \`${message.author.tag} (${message.author.id})\` 60 | **Susturulma Tarihi :** \`${moment(penal.date).format(`DD MMMM YYYY (HH:mm)`)}\` 61 | **Susturulma Sebebi :** \`${!penal.reason ? 'Belirtilmedi!' : penal.reason}\` 62 | **Cezanın Kaldırılma Sebebi :** \`${!reason ? 'Belirtilmedi!' : reason}\` 63 | `)); 64 | 65 | if(dmMessages) user.send(`${unCMuted ? unCMuted : `:speech_balloon:`} \`${message.guild.name}\` adlı sunucuda **${message.author.tag}** tarafından **metin kanallarında** olan susturulma cezanız kaldılırdı! \`(Ceza ID : #${penal.id})\``).catch(() => {}); 66 | 67 | }, 68 | }; -------------------------------------------------------------------------------- /src/commands/info/muteBilgi.js: -------------------------------------------------------------------------------- 1 | const { Owners } = global.client.settings; 2 | const { unAuthorizedMessages, botYt, penals } = global.client.guildSettings; 3 | const { staffs, cmuteRoles } = penals.chatMute; 4 | const { vmuteRoles } = penals.voiceMute; 5 | const Penals = require('../../schemas/penals.js'); 6 | const moment = require('moment'); 7 | require('moment-duration-format'); 8 | moment.locale('tr'); 9 | 10 | module.exports = { 11 | name: 'mutebilgi', 12 | aliases: ['mute-bilgi', 'vmutebilgi', 'vmute-bilgi'], 13 | category: 'Bilgi', 14 | usage: '<@Üye/ID>', 15 | guildOnly: true, 16 | cooldown: 3, 17 | 18 | /** 19 | * @param { Client } client 20 | * @param { Nessage } message 21 | * @param { Array } args 22 | * @param { MessageEmbed } Embed 23 | */ 24 | 25 | async execute(client, message, args, Embed) { 26 | 27 | if(!Owners.includes(message.author.id) && !message.member.hasPermission(8) && !message.member.roles.cache.has(botYt) && !staffs.some(role => message.member.roles.cache.has(role))) { 28 | if(unAuthorizedMessages) return message.channel.error(message, Embed.setDescription(`Maalesef, bu komutu kullana bilmek için yeterli yetkiye sahip değilsin!`), { timeout: 10000 }); 29 | else return; 30 | }; 31 | 32 | let user = message.mentions.members.first() || message.mentions.users.first() || message.guild.members.cache.get(args[0]) || client.users.cache.get(args[0]) || await client.fetchUser(args[0]).then(user => user); 33 | 34 | if(!args[0]) return message.channel.error(message, Embed.setDescription(`Bir üye belirtmelisin!`), { timeout: 8000, react: true }); 35 | if(!user) return message.channel.error(message, Embed.setDescription(`Geçerli bir üye belirtmelisin`), { timeout: 8000, react: true }); 36 | if((message.mentions.members.first() || message.guild.members.cache.get(args[0])) && !cmuteRoles.some(role => user.roles.cache.has(role)) && !vmuteRoles.some(role => user.roles.cache.has(role))) return message.channel.error(message, Embed.setDescription(`Belirttiğin üye daha önce susturulmamış`), { timeout: 8000, repyl: true, react: true }); 37 | 38 | let penal = await Penals.findOne({ guildID: message.guild.id, userID: user.id, type: 'CHAT-MUTE', active: true }) || await Penals.findOne({ guildID: message.guild.id, userID: user.id, type: 'VOICE-MUTE', active: true }); 39 | 40 | if(!penal) return message.channel.error(message, Embed.setDescription(`Veritabanında belirtilen üyeye ait bir bilgi bulunamadı`), { timeout: 8000, react: true }); 41 | 42 | if(penal.type == 'CHAT-MUTE') { 43 | 44 | message.channel.success(message, Embed.setDescription(` 45 | ${user.toString()} kullanıcısının **metin kanallarındaki** susturulma bilgisi : 46 | 47 | **Ceza ID :** \`#${penal.id}\` 48 | **Susturulan Kullanıcı :** \`${user.user.tag} (${user.user.id})\` 49 | **Susturan Yetkili :** \`${client.users.cache.get(penal.staffID).tag} (${client.users.cache.get(penal.staffID).id})\` 50 | **Susturulma Tarihi :** \`${moment(penal.date).format(`DD MMMM YYYY (HH:mm)`)}\` 51 | **Susturulmanın Bitiş Tarihi** \`${moment(penal.finishDate).format(`DD MMMM YYYY (HH:mm)`)}\` 52 | **Susturulma Sebebi :** \`${!penal.reason ? 'Belirtilmedi!' : penal.reason}\` 53 | `), { react: true }); 54 | 55 | } else if(penal.type == 'VOICE-MUTE') { 56 | 57 | message.channel.success(message, Embed.setDescription(` 58 | ${user.toString()} kullanıcısının **ses kanallarındaki** susturulma bilgisi : 59 | 60 | **Ceza ID :** \`#${penal.id}\` 61 | **Susturulan Kullanıcı :** \`${user.user.tag} (${user.user.id})\` 62 | **Susturan Yetkili :** \`${client.users.cache.get(penal.staffID).tag} (${client.users.cache.get(penal.staffID).id})\` 63 | **Susturulma Tarihi :** \`${moment(penal.date).format(`DD MMMM YYYY (HH:mm)`)}\` 64 | **Susturulmanın Bitiş Tarihi** \`${moment(penal.finishDate).format(`DD MMMM YYYY (HH:mm)`)}\` 65 | **Susturulma Sebebi :** \`${!penal.reason ? 'Belirtilmedi!' : penal.reason}\` 66 | `), { react: true }); 67 | 68 | }; 69 | 70 | }, 71 | }; 72 | -------------------------------------------------------------------------------- /src/commands/user/git.js: -------------------------------------------------------------------------------- 1 | const { voiceLog } = global.client.guildSettings.logs; 2 | const { changeState } = require('../../configs/emojis.json'); 3 | 4 | module.exports = { 5 | name: 'git', 6 | aliases: [], 7 | category: 'Kullanıcı', 8 | usage: '<@Üye/ID>', 9 | guildOnly: true, 10 | cooldown: 5, 11 | 12 | /** 13 | * @param { Client } client 14 | * @param { Message } message 15 | * @param { Array } args 16 | * @param { MessageEmbed } Embed 17 | */ 18 | 19 | execute(client, message, args, Embed) { 20 | 21 | let user = message.mentions.members.first() || message.guild.members.cache.get(args[0]); 22 | let vLog = message.guild.channels.cache.get(voiceLog); 23 | 24 | if(!message.member.voice.channel) return message.channel.error(message, `Bir ses kanalında olmalısın!`, { timeout: 10000, reply: true, react: true, keepMessage: true }); 25 | if(!args[0]) return message.channel.error(message, `Bir üye belirtmelisin!`, { timeout: 10000, reply: true, react: true, keepMessage: true }); 26 | if(!user) return message.channel.error(message, `Geçerli bir üye belirtmelisn!`, { timeout: 10000, reply: true, react: true, keepMessage: true }); 27 | if(user.id == message.author.id) return message.channel.error(message, `Bu işlemi kendine uygulayamazsın!`, { timeout: 10000, reply: true, react: true, keepMessage: true }); 28 | if(!user.voice.channel) return message.channel.error(message, `Belirttiğin kullanıcı bir ses kanalında değil!`, { timeout: 10000, reply: true, react: true, keepMessage: true }); 29 | if(user.voice.channel.id == message.member.voice.channel.id) return message.channel.error(message, `Belittiğin üye ile zaten aynı ses kanalındasın!`, { timeout: 10000, reply: true, react: true, keepMessage: true }); 30 | 31 | message.channel.send(`${user.toString()}`, Embed.setDescription(`${message.member.toString()} kullanıcısı bulunduğun ( \`${user.voice.channel.name}\` ) ses kanalına gelmek istiyor. Kabul ediyormusun?`)).then(async msg => { 32 | 33 | let reactions = ['✅', '❌']; 34 | for (let reaction of reactions) await msg.react(reaction); 35 | 36 | const accept = msg.createReactionCollector((reaction, reactionUser) => reaction.emoji.name == "✅" && reactionUser.id == user.id, { time: 25000 }); 37 | const deny = msg.createReactionCollector((reaction, reactionUser) => reaction.emoji.name == "❌" && reactionUser.id == user.id, { time: 25000 }); 38 | 39 | accept.on("collect", async reaction => { 40 | 41 | accept.stop(); 42 | deny.stop(); 43 | msg.reactions.removeAll(); 44 | 45 | await msg.edit(``, Embed.setDescription(`${user.toString()} kullanıcısı \`${user.voice.channel.name}\` isimli ses kanalına gelme isteğini kabul etti!`)); 46 | 47 | if(vLog && vLog.type == 'text') vLog.send(`${changeState ? changeState : ':arrow_up_down:'} \`${message.member.displayName}\` üyesi ${message.member.voice.channel.toString()} adlı ses kanalından ${user.voice.channel.toString()} adlı ses kanalına **gitti!**`) 48 | 49 | return await message.member.voice.setChannel(user.voice.channel.id); 50 | 51 | }); 52 | 53 | deny.on("collect", async reaction => { 54 | 55 | accept.stop(); 56 | deny.stop(); 57 | msg.reactions.removeAll(); 58 | 59 | return await msg.edit(`${message.member.toString()}`, Embed.setDescription(`${user.toString()} kullanıcısı \`${user.voice.channel.name}\` isimli ses kanalına gelme isteğini redd etti!`)); 60 | 61 | }); 62 | 63 | accept.on("end", async reaction => { 64 | 65 | accept.stop(); 66 | deny.stop(); 67 | msg.reactions.removeAll(); 68 | 69 | return await msg.edit(`${message.member.toString()}`, Embed.setDescription(`${user.toString()} kullanıcısı yanıt vermediği için istek redd edildi!`)); 70 | 71 | }); 72 | 73 | }); 74 | 75 | }, 76 | }; 77 | -------------------------------------------------------------------------------- /src/commands/penal/warn.js: -------------------------------------------------------------------------------- 1 | const { Owners, Prefix } = global.client.settings; 2 | const { unAuthorizedMessages, botYt, dmMessages, penals, logs } = global.client.guildSettings; 3 | const { staffs, warnRoles, penalPoint, log } = penals.warn; 4 | const { warned } = require('../../configs/emojis.json'); 5 | const Penals = require('../../schemas/penals.js'); 6 | const moment = require('moment'); 7 | require('moment-duration-format'); 8 | moment.locale('tr'); 9 | 10 | module.exports = { 11 | name: 'warn', 12 | aliases: ['uyar'], 13 | category: 'Ceza', 14 | usage: '<@Üye/ID> ', 15 | guildOnly: true, 16 | cooldown: 3, 17 | 18 | /** 19 | * @param { Client } client 20 | * @param { Message } message 21 | * @param { Array } args 22 | * @param { MessageEmbed } Embed 23 | */ 24 | 25 | async execute(client, message, args, Embed) { 26 | 27 | if(!Owners.includes(message.author.id) && !message.member.hasPermission('ADMINISTRATOR') && !message.member.roles.cache.has(botYt) && !staffs.some(role => message.member.roles.cache.has(role))) { 28 | if(unAuthorizedMessages) return message.channel.error(message, `Maalesef, bu komutu kullana bilmek için yeterli yetkiye sahip değilsin!`, { timeout: 10000 }); 29 | else return; 30 | }; 31 | 32 | let user = message.mentions.members.first() || message.guild.members.cache.get(args[0]); 33 | let reason = args.slice(1).join(' '); 34 | 35 | if(!args[0]) return message.channel.error(message, `Bir üye belirtmelisin!`, { timeout: 8000, reply: true, react: true }); 36 | if(!user) return message.channel.error(message, `Geçerli bir üye belirtmelisin!`, { timeout: 8000, reply: true, react: true }); 37 | if(warnRoles.some(role => user.roles.cache.has(role))) return message.channel.error(message, `Belirttiğin üye daha önce uyarılmış! Bilgi için : \`${Prefix}warnbilgi \``, { timeout: 8000, react: true }); 38 | if(user.id == message.author.id) return message.channel.error(message, `Bu işlemi kendine uygulayamazsın!`, { timeout: 8000, reply: true, react: true }); 39 | if(user.roles.highest.position >= message.member.roles.highest.position) return message.channel.error(message, `Kendinle aynı veya daha yüksek yetkide olan birine bu işlemi uygulayamazsın!`, { timeout: 8000, reply: true, react: true }); 40 | if(!user.manageable) return message.channel.error(message, `Belirtilen üyeyi uyaramıyorum!`, { timeout: 8000, react: true }); 41 | 42 | let point = await client.addPenalPoint(message.guild.id, user.id, penalPoint); 43 | let penal = await client.newPenal(message.guild.id, user.id, "WARN", false, message.author.id, !reason ? 'Belirtilmedi!' : reason); 44 | let datas = await Penals.find({ guildID: message.guild.id, userID: user.id, type: "WARN" }); 45 | 46 | if(datas.length > 0 && warnRoles.some(role => role.warnCount == datas.length)) user.roles.add(warnRoles.find(role => role.warnCount == datas.length).warnRole); 47 | 48 | message.channel.success(message, Embed.setDescription(`${warned} \`${user.user.tag}\` isimli kullanıcı, ${message.author.toString()} tarafından, ${!reason ? '' : `\`${reason}\` sebebiyle`} uyarıldı! \`(Ceza ID : #${penal.id})\``), { react: true }); 49 | if(log) client.channels.cache.get(log).send(Embed.setDescription(` 50 | ${user.toString()} kullanıcısı **uyarıldı!** 51 | 52 | **Ceza ID :** \`#${penal.id}\` 53 | **Uyarılan Kullanıcı :** \`${user.user.tag} (${user.user.id})\` 54 | **Uyaran Yetkili :** \`${message.author.tag} (${message.author.id})\` 55 | **Uyarılma Tarihi :** \`${moment(penal.date).format(`DD MMMM YYYY (HH:mm)`)}\` 56 | **Uyarılma Sebebi :** \`${!reason ? 'Belirtilmedi!' : reason}\` 57 | `)); 58 | 59 | if(dmMessages) user.send(`${warned} \`${message.guild.name}\` sunucusunda, **${message.author.tag}** tarafından, ${!reason ? '' : `\`${reason}\` sebebiyle`} uyarıldınız! \`(Ceza ID : #${penal.id})\``).catch(() => {}); 60 | if(logs.pointLog) client.channels.cache.get(logs.pointLog).send(`${warned} ${user.toString()}, aldığınız \`#${penal.id}\` ID'li **Warn** cezası ile toplam **${point.penalPoint}** ceza puanına ulaştınız!`); 61 | 62 | }, 63 | }; -------------------------------------------------------------------------------- /src/commands/penal/vunmute.js: -------------------------------------------------------------------------------- 1 | const { Owners } = global.client.settings; 2 | const { unAuthorizedMessages, botYt, dmMessages, penals } = global.client.guildSettings; 3 | const { staffs, vmuteRoles, log } = penals.voiceMute; 4 | const { unMuted } = require('../../configs/emojis.json'); 5 | const Penals = require('../../schemas/penals.js'); 6 | const ms = require('ms') 7 | const moment = require('moment'); 8 | require('moment-duration-format'); 9 | moment.locale('tr'); 10 | 11 | module.exports = { 12 | name: 'vunmute', 13 | aliases: [], 14 | category: 'Ceza', 15 | usage: '<@Üye/ID> ', 16 | guildOnly: true, 17 | cooldown: 3, 18 | 19 | /** 20 | * @param { Client } client 21 | * @param { Message } message 22 | * @param { Array } args 23 | * @param { MessageEmbed } Embed 24 | */ 25 | 26 | async execute(client, message, args, Embed) { 27 | 28 | if(!Owners.includes(message.author.id) && !message.member.hasPermission('MUTE_MEMBERS') && !message.member.roles.cache.has(botYt) && !staffs.some(role => message.member.roles.cache.has(role))) { 29 | if(unAuthorizedMessages) return message.channel.error(message, `Maalesef, bu komutu kullana bilmek için yeterli yetkiye sahip değilsin!`, { timeout: 10000 }); 30 | else return; 31 | }; 32 | 33 | let user = message.mentions.members.first() || message.guild.members.cache.get(args[0]); 34 | let reason = args.slice(1).join(' '); 35 | 36 | if(!args[0]) return message.channel.error(message, `Bir üye belirtmelisin!`, { timeout: 8000, reply: true, react: true }); 37 | if(!user) return message.channel.error(message, `Geçerli bir üye belirtmelisin!`, { timeout: 8000, reply: true, react: true }); 38 | if(user.id == message.author.id) return message.channel.error(message, `Bu işlemi kendine uygulayamazsın!`, { timeout: 8000, reply: true, react: true }); 39 | if(!vmuteRoles.some(role => user.roles.cache.has(role))) return message.channel.error(message, `Belirttiğin üye **ses kanallarında** daha önce susturulmamış!`, { timeout: 8000, react: true }); 40 | if(user.roles.highest.position >= message.member.roles.highest.position) return message.channel.error(message, `Kendinle aynı veya daha yüksek yetkide olan birine bu işlemi uygulayamazsın`, { timeout: 8000, reply: true, react: true }); 41 | if(!user.manageable) return message.channel.error(message, `Belirtilen üyeye bu işlemi uygulayamıyorum!`, { timeout: 8000, react: true }); 42 | 43 | user.roles.remove(vmuteRoles).catch(() => {}); 44 | if(user.voice.channel && user.voice.serverMute) user.voice.setMute(false); 45 | let penal = await Penals.findOne({ guildID: message.guild.id, userID: user.id, type: 'VOICE-MUTE', active: true }); 46 | 47 | if(penal) { 48 | 49 | penal.finishDate = Date.now(); 50 | penal.active = false; 51 | penal.removed = true; 52 | penal.save(); 53 | 54 | }; 55 | 56 | message.channel.success(message, Embed.setDescription(`${unMuted ? unMuted : ``} \`${user.user.tag}\` isimli kullanıcının **ses kanallarındaki** susturulma cezası ${message.author.toString()} tarafından, ${!reason ? '' : `\`${reason}\` sebebiyle`} kaldırıldı! \`(Ceza ID : #${penal.id})\``), { react: true }); 57 | if(log) client.channels.cache.get(log).send(Embed.setColor('#0000FF').setDescription(` 58 | ${user.toString()} kullanıcısının **ses kanallarındaki** susturulma cezası kaldırıldı! 59 | 60 | **Ceza ID :** \`#${penal.id}\` 61 | **Cezası Kaldırılan Kullanıcı :** \`${user.user.tag} (${user.user.id})\` 62 | **Cezayı Kaldıran Yetkili :** \`${message.author.tag} (${message.author.id})\` 63 | **Susturulma Tarihi :** \`${moment(penal.date).format(`DD MMMM YYYY (HH:mm)`)}\` 64 | **Susturulma Sebebi :** \`${!penal.reason ? 'Belirtilmedi!' : penal.reason}\` 65 | **Cezanın Kaldırılma Sebebi :** \`${!reason ? 'Belirtilmedi!' : reason}\` 66 | `)); 67 | 68 | if(dmMessages) user.send(`${unMuted ? unMuted : ``} \`${message.guild.name}\` adlı sunucuda **${message.author.tag}** tarafından **ses kanallarında** olan susturulma cezanız kaldılırdı! \`(Ceza ID : #${penal.id})\``).catch(() => {}); 69 | 70 | }, 71 | }; -------------------------------------------------------------------------------- /src/commands/guildAdmin/ekip.js: -------------------------------------------------------------------------------- 1 | const { guildTags, guildTeams, staffRoles, botYt } = global.client.guildSettings; 2 | const { Prefix } = global.client.settings; 3 | const { crown2 } = require('../../configs/emojis.json'); 4 | 5 | module.exports = { 6 | name: 'ekip', 7 | aliases: [], 8 | category: 'Admin', 9 | usage: '[ / liste]', 10 | permission: 'ADMINISTRATOR', 11 | guildOnly: true, 12 | cooldown: 3, 13 | 14 | /** 15 | * @param { Client } client 16 | * @param { Message } message 17 | * @param { Array } args 18 | * @param { MessageEmbed } Embed 19 | */ 20 | 21 | async execute(client, message, args, Embed) { 22 | 23 | if(!guildTeams || !guildTeams.length) return message.channel.error(message, Embed.setDescription(`Bu sunucuda herhangi bir ekip ayarlanmamış. Lütfen botun yapımcısıyla iletişime geçin!`), { timeout: 15000, react: true }); 24 | 25 | if(!args[0]) return message.channel.error(message, Embed.setDescription(`Bir ekip ismi veya numarası belirtmelisin. Tüm ekipleri görmek için : \`${Prefix}ekip liste\``), { timeout: 8000, react: true }); 26 | 27 | if(['liste', 'tüm', 'hepsi', 'all', 'list'].some(arg => arg == args[0])) { 28 | 29 | await new Promise(async (resolve) => { 30 | 31 | for (let i = 0; i < guildTeams.length; i++) { 32 | 33 | let team = guildTeams[i]; 34 | let teamRole = message.guild.roles.cache.get(team) 35 | 36 | if(!teamRole) continue; 37 | 38 | await client.wait(i * 300); 39 | let onlineMembers = teamRole.members.filter(member => member.user.presence.status !== 'offline'); 40 | let tagMembers = teamRole.members.filter(member => guildTags.some(tag => member.user.username.includes(tag))); 41 | let staffMembers = teamRole.members.filter(member => staffRoles.some(role => member.roles.cache.has(role)) || member.roles.cache.has(botYt)); 42 | let voiceMembers = teamRole.members.filter(member => member.voice.channel); 43 | 44 | Embed.addField(`${teamRole.name} `, ` 45 | ${crown2 ? crown2 : ``} Toplam Üye : **${teamRole.members.size}** 46 | ${crown2 ? crown2 : ``} Aktif Üye : **${onlineMembers.size}** 47 | ${crown2 ? crown2 : ``} Taglı Üye : **${tagMembers.size}** 48 | ${crown2 ? crown2 : ``} Sesli Üye : **${voiceMembers.size}** 49 | ${crown2 ? crown2 : ``} Yetkili Üye : **${staffMembers.size}** 50 | `, true); 51 | 52 | }; 53 | 54 | await client.wait(guildTeams.length * 300).then(resolve); 55 | 56 | }); 57 | 58 | message.channel.success(message, Embed.setAuthor(message.guild.name, message.guild.iconURL({ dynamic: true })).setDescription('').setColor('YELLOW'), { react: true }); 59 | 60 | } else { 61 | 62 | let team = args[0] 63 | let teamRole = message.guild.roles.cache.get(guildTeams[team-1]) || message.guild.roles.cache.find(role => role.name.trim() == args.slice(0).join(' ').trim()) || message.guild.roles.cache.get(team); 64 | let onlineMembers = teamRole.members.filter(member => member.user.presence.status !== 'offline'); 65 | let tagMembers = teamRole.members.filter(member => guildTags.some(tag => member.user.username.includes(tag))); 66 | let staffMembers = teamRole.members.filter(member => staffRoles.some(role => member.roles.cache.has(role)) || member.roles.cache.has(botYt)); 67 | let voiceMembers = teamRole.members.filter(member => member.voice.channel); 68 | 69 | message.channel.success(message, Embed.setAuthor(message.guild.name, message.guild.iconURL({ dynamic: true })).setDescription(` 70 | ${teamRole.toString()} ekibinin sunucu bilgileri : 71 | 72 | ${crown2 ? crown2 : ``} Ekipteki Toplam Üye : **${teamRole.members.size}** 73 | ${crown2 ? crown2 : ``} Ekipteki Aktif Üye : **${onlineMembers.size}** 74 | ${crown2 ? crown2 : ``} Ekipteki Taglı Üye : **${tagMembers.size}** 75 | ${crown2 ? crown2 : ``} Ekipteki Sesli Üye : **${voiceMembers.size}** 76 | ${crown2 ? crown2 : ``} Ekipteki Yetkili Üye : **${staffMembers.size}** 77 | `).setColor('YELLOW'), { react: true }); 78 | 79 | }; 80 | 81 | }, 82 | }; -------------------------------------------------------------------------------- /src/commands/penal/ban.js: -------------------------------------------------------------------------------- 1 | const { Owners, Prefix } = global.client.settings; 2 | const { unAuthorizedMessages, botYt, dmMessages, penals, logs } = global.client.guildSettings; 3 | const { staffs, penalPoint, penalLimit, log, banGifs } = penals.ban; 4 | const { banned } = require('../../configs/emojis.json'); 5 | const Penals = require('../../schemas/penals.js'); 6 | const moment = require('moment'); 7 | require('moment-duration-format'); 8 | moment.locale('tr'); 9 | 10 | module.exports = { 11 | name: 'ban', 12 | aliases: ['yasakla'], 13 | category: 'Ceza', 14 | usage: '<@Üye/ID> ', 15 | guildOnly: true, 16 | cooldown: 3, 17 | 18 | /** 19 | * @param { Client } client 20 | * @param { Message } message 21 | * @param { Array } args 22 | * @param { MessageEmbed } Embed 23 | */ 24 | 25 | async execute(client, message, args, Embed) { 26 | 27 | if(!Owners.includes(message.author.id) && !message.member.hasPermission('BAN_MEMBERS') && !message.member.roles.cache.has(botYt) && !staffs.some(role => message.member.roles.cache.has(role))) { 28 | if(unAuthorizedMessages) return message.channel.error(message, `Maalesef, bu komutu kullana bilmek için yeterli yetkiye sahip değilsin!`, { timeout: 10000 }); 29 | else return; 30 | }; 31 | 32 | let user = message.mentions.members.first() || message.guild.members.cache.get(args[0]); 33 | let ban = await client.fetchBan(message.guild, args[0]); 34 | let reason = args.slice(1).join(' '); 35 | 36 | if(!args[0]) return message.channel.error(message, `Bir üye belirtmelisin!`, { timeout: 8000, reply: true, react: true }); 37 | if(!user) return message.channel.error(message, `Geçerli bir üye belirtmelisin!`, { timeout: 8000, reply: true, react: true }); 38 | if(ban) return message.channel.error(message, `Belirttiğin üye sunucudan daha önce yasaklanmış! Bilgi için : \`${Prefix}banbilgi \``, { timeout: 8000, react: true }); 39 | if(user.id == message.author.id) return message.channel.error(message, `Bu işlemi kendine uygulayamazsın!`, { timeout: 8000, reply: true, react: true }); 40 | if(user.roles.highest.position >= message.member.roles.highest.position) return message.channel.error(message, `Kendinle aynı veya daha yüksek yetkide olan birine bu işlemi uygulayamazsın!`, { timeout: 8000, reply: true, react: true }); 41 | if(!user.bannable) return message.channel.error(message, `Belirtilen üyeyi yasaklayamıyorum!`, { timeout: 8000, react: true }); 42 | 43 | let staffDatas = await Penals.find({ guildID: message.guild.id, type: 'BAN', staffID: message.author.id }); 44 | let dataSize = staffDatas.filter(staffData => staffData.date && (Date.now() - staffData.date) < 3600 * 1000); 45 | 46 | if(!Owners.includes(message.author.id) && !message.member.hasPermission(8) && message.member.roles.cache.has(botYt) && penalLimit > 0 && dataSize.length >= penalLimit) return message.channel.error(message, `Saatlik ban sınırına ulaştın!`, { timeout: 8000, react: true }); 47 | 48 | message.guild.members.ban(user.id, { reason: `${!reason ? `${message.author.tag} tarafından bilinmeyen bir nedenle yasaklanması istendi!` : `${message.author.tag} tarafından ${reason} sebebiyle yasaklanması istendi!`}` }).catch(() => {}); 49 | let point = await client.addPenalPoint(message.guild.id, user.id, penalPoint); 50 | let penal = await client.newPenal(message.guild.id, user.id, "BAN", true, message.author.id, !reason ? 'Belirtilmedi!' : reason); 51 | 52 | message.channel.success(message, Embed.setDescription(`${banned ? banned : ``} \`${user.user.tag}\` isimli kullanıcı, ${message.author.toString()} tarafından, ${!reason ? '' : `\`${reason}\` sebebiyle`} sunucudan yasaklandı! \`(Ceza ID : #${penal.id})\``), { react: true }); 53 | if(log) client.channels.cache.get(log).send(Embed.setColor('#FF0000').setFooter('').setImage(banGifs.random()).setDescription(` 54 | ${user.toString()} kullanıcısı **yasaklandı!** 55 | 56 | **Ceza ID :** \`#${penal.id}\` 57 | **Yasaklanan Kullanıcı :** \`${user.user.tag} (${user.user.id})\` 58 | **Yasaklayan Yetkili :** \`${message.author.tag} (${message.author.id})\` 59 | **Yasaklanma Tarihi :** \`${moment(penal.date).format(`DD MMMM YYYY (HH:mm)`)}\` 60 | **Yasaklanma Sebebi :** \`${!reason ? 'Belirtilmedi!' : reason}\` 61 | `)); 62 | 63 | if(dmMessages) user.send(`${banned ? banned : ``} \`${message.guild.name}\` sunucusunda, **${message.author.tag}** tarafından, ${!reason ? '' : `\`${reason}\` sebebiyle`} yasaklandınız! \`(Ceza ID : #${penal.id})\``).catch(() => {}); 64 | if(logs.pointLog) client.channels.cache.get(logs.pointLog).send(`${banned ? banned : ``} ${user.toString()}, aldığınız \`#${penal.id}\` ID'li **Ban** cezası ile toplam **${point.penalPoint}** ceza puanına ulaştınız!`); 65 | 66 | }, 67 | }; -------------------------------------------------------------------------------- /src/commands/guildAdmin/cezaPuan.js: -------------------------------------------------------------------------------- 1 | const { Prefix } = global.client.settings; 2 | const { botYt } = global.client.guildSettings; 3 | const { mark } = require('../../configs/emojis.json'); 4 | const penalPoints = require('../../schemas/penalPoints'); 5 | 6 | module.exports = { 7 | name: 'cezapuan', 8 | aliases: ['puan'], 9 | category: 'Admin', 10 | usage: '[<@Üye/ID> / (ekle / sil)]', 11 | permission: 'ADMINISTRATOR', 12 | guildOnly: true, 13 | cooldown: 3, 14 | 15 | /** 16 | * @param { Client } client 17 | * @param { Message } message 18 | * @param { Array } args 19 | */ 20 | 21 | async execute(client, message, args) { 22 | 23 | if(!args[0]) { 24 | 25 | let data = await penalPoints.findOne({ guildID: message.guild.id, userID: message.author.id }); 26 | message.channel.success(message, `Ceza Puanın : **${data && data.penalPoint ? data.penalPoint : 0}**`, { react: true }); 27 | 28 | } else if(['ekle', 'add'].some(arg => args[0].toLocaleLowerCase() == arg)) { 29 | 30 | let user = message.mentions.members.first() || message.guild.members.cache.get(args[1]); 31 | let point = args[2]; 32 | let reason = args.slice(3).join(' '); 33 | 34 | if(!args[1]) return message.channel.error(message, `Bir üye belirtmelisin!`, { timeout: 8000, reply: true, react: true }); 35 | if(!user) return message.channel.error(message, `Geçerli bir üye belirtmelisin!`, { timeout: 8000, reply: true, react: true }); 36 | if(user.hasPermission(8) || user.roles.cache.has(botYt) || user.roles.highest.position >= message.member.roles.highest.position) return message.channel.error(message, `Yetkili birine bu işlemi uygulayamazsın!`, { timeout: 8000, reply: true, react: true }); 37 | if(!point) return message.channel.error(message, `Eklenecek puan miktarını belirtmelisin!`, { timeout: 8000, reply: true, react: true }); 38 | if(isNaN(point) || point == 0 || point.includes('-')) return message.channel.error(message, `Geçerli bir puan miktarını belirtmelisin!`, { timeout: 8000, reply: true, react: true }); 39 | 40 | let data = await penalPoints.findOneAndUpdate({ guildID: message.guild.id, userID: user.id }, { $inc: { penalPoint: point } }, { upsert: true }); 41 | 42 | message.channel.success(message, `\`${user.displayName}\` üyesinin ceza puanı${reason ? ` \`${reason}\` sebebiyle` : ``} **${point}** puan artırıldı!`, { react: true }); 43 | 44 | } else if(['sil', 'çıkar', 'remove'].some(arg => args[0].toLocaleLowerCase() == arg)) { 45 | 46 | let user = message.mentions.members.first() || message.guild.members.cache.get(args[1]); 47 | let point = args[2]; 48 | let reason = args.slice(3).join(' '); 49 | 50 | if(!args[1]) return message.channel.error(message, `Bir üye belirtmelisin!`, { timeout: 8000, reply: true, react: true }); 51 | if(!user) return message.channel.error(message, `Geçerli bir üye belirtmelisin!`, { timeout: 8000, reply: true, react: true }); 52 | if(user.hasPermission(8) || user.roles.cache.has(botYt) || user.roles.highest.position >= message.member.roles.highest.position) return message.channel.error(message, `Yetkili birine bu işlemi uygulayamazsın!`, { timeout: 8000, reply: true, react: true }); 53 | if(!point) return message.channel.error(message, `Silinecek puan miktarını belirtmelisin!`, { timeout: 8000, reply: true, react: true }); 54 | if(isNaN(point) || point == 0 || point.includes('-')) return message.channel.error(message, `Geçerli bir puan miktarını belirtmelisin!`, { timeout: 8000, reply: true, react: true }); 55 | 56 | let data = await penalPoints.findOne({ guildID: message.guild.id, userID: user.id }); 57 | 58 | if(!data || data.penalPoint < point) return message.channel.error(message, `\`${user.displayName}\` üyesinin belirtilen miktarda silinecek kadar puanı yok. Sahip olduğu ceza puanı : **${data && data.penalPoint ? data.penalPoint : 0}**`, { react: true }); 59 | 60 | data = await penalPoints.findOneAndUpdate({ guildID: message.guild.id, userID: user.id }, { $inc: { penalPoint: -point } }, { upsert: true }); 61 | 62 | message.channel.success(message, `\`${user.displayName}\` üyesinin ceza puanı${reason ? ` \`${reason}\` sebebiyle` : ``} **${point}** puan eksildi!`, { react: true }); 63 | 64 | } else if(args[0]) { 65 | 66 | let user = message.mentions.members.first() || message.guild.members.cache.get(args[0]); 67 | 68 | if(!user) return message.channel.error(message, `${mark ? mark : ``} Doğru kullanım : \`${Prefix}cezapuan <@Üye/ID> / (ekle / sil)\``, { timeout: 8000, reply: true, react: true }); 69 | 70 | let data = await penalPoints.findOne({ guildID: message.guild.id, userID: user.id }); 71 | message.channel.success(message, `\`${user.displayName}\` Üyesinin Ceza Puanı : **${data && data.penalPoint ? data.penalPoint : 0}**`, { react: true }); 72 | 73 | }; 74 | 75 | }, 76 | }; -------------------------------------------------------------------------------- /src/commands/penal/jail.js: -------------------------------------------------------------------------------- 1 | const { Owners, Prefix } = global.client.settings; 2 | const { unAuthorizedMessages, botYt, dmMessages, penals, logs } = global.client.guildSettings; 3 | const { staffs, jailRoles, penalPoint, penalLimit, log } = penals.jail; 4 | const { jailed } = require('../../configs/emojis.json'); 5 | const Penals = require('../../schemas/penals.js'); 6 | const moment = require('moment'); 7 | require('moment-duration-format'); 8 | moment.locale('tr'); 9 | 10 | module.exports = { 11 | name: 'jail', 12 | aliases: ['cezalı'], 13 | category: 'Ceza', 14 | usage: '<@Üye/ID> ', 15 | guildOnly: true, 16 | cooldown: 3, 17 | 18 | /** 19 | * @param { Client } client 20 | * @param { Message } message 21 | * @param { Array } args 22 | * @param { MessageEmbed } Embed 23 | */ 24 | 25 | async execute(client, message, args, Embed) { 26 | 27 | if(!Owners.includes(message.author.id) && !message.member.hasPermission(8) && !message.member.roles.cache.has(botYt) && !staffs.some(role => message.member.roles.cache.has(role))) { 28 | if(unAuthorizedMessages) return message.channel.error(message, `Maalesef, bu komutu kullana bilmek için yeterli yetkiye sahip değilsin!`, { timeout: 10000 }); 29 | else return; 30 | }; 31 | 32 | let user = message.mentions.members.first() || message.guild.members.cache.get(args[0]); 33 | let reason = args.slice(1).join(' '); 34 | 35 | if(!args[0]) return message.channel.error(message, `Bir üye belirtmelisin!`, { timeout: 8000, reply: true, react: true }); 36 | if(!user) return message.channel.error(message, `Geçerli bir üye belirtmelisin!`, { timeout: 8000, reply: true, react: true }); 37 | if(!jailRoles || !jailRoles.length) return message.channel.error(message, `Jail rolleri ayarlanmamış, lütfen botun yapımcısıyla iletişime geçin!`, { timeout: 15000, react: true }); 38 | if(jailRoles.some(role => user.roles.cache.has(role))) return message.channel.error(message, `Belirttiğin üye daha önce jaillenmiş! Bilgi için : \`${Prefix}jailbilgi <@Üye/ID>\``, { timeout: 8000, react: true }); 39 | if(user.id == message.author.id) return message.channel.error(message, `Bu işlemi kendine uygulayamazsın!`, { timeout: 8000, reply: true, react: true }); 40 | if(user.roles.highest.position >= message.member.roles.highest.position) return message.channel.error(message, `Kendinle aynı veya daha yüksek yetkide olan birine bu işlemi uygulayamazsın!`, { timeout: 8000, reply: true, react: true }); 41 | if(!user.manageable) return message.channel.error(message, `Belirtilen üyeyi jailleyemiyorum!`, { timeout: 8000, react: true }); 42 | 43 | let staffDatas = await Penals.find({ guildID: message.guild.id, type: 'JAIL', ID: message.author.id }); 44 | let staffDatas2 = await Penals.find({ guildID: message.guild.id, type: 'TEMP-JAIL', staffID: message.author.id }); 45 | let dataSize = staffDatas.filter(staffData => staffData.date && (Date.now() - staffData.date) < 3600 * 1000); 46 | let dataSize2 = staffDatas2.filter(staffData => staffData.date && (Date.now() - staffData.date) < 3600 * 1000); 47 | 48 | if(!Owners.includes(message.author.id) && !message.member.hasPermission(8) && message.member.roles.cache.has(botYt) && penalLimit > 0 && (dataSize.length + dataSize2.length) >= penalLimit) return message.channel.error(message, `Saatlik jail sınırına ulaştın!`, { timeout: 8000, react: true }); 49 | 50 | user.roles.set(jailRoles).catch(() => {}); 51 | if(user.voice.channel) user.voice.kick().catch(() => {}); 52 | let point = await client.addPenalPoint(message.guild.id, user.id, penalPoint); 53 | let penal = await client.newPenal(message.guild.id, user.id, "JAIL", true, message.author.id, !reason ? 'Belirtilmedi!' : reason); 54 | 55 | message.channel.success(message, Embed.setDescription(`${jailed ? jailed : ``} \`${user.user.tag}\` isimli kullanıcı, ${message.author.toString()} tarafından, ${!reason ? '' : `\`${reason}\` sebebiyle`} jaillendi! \`(Ceza ID : #${penal.id})\``), { react: true }); 56 | if(log) client.channels.cache.get(log).send(Embed.setColor('#FF0000').setDescription(` 57 | ${user.toString()} kullanıcısı **jaillendi!** 58 | 59 | **Ceza ID :** \`#${penal.id}\` 60 | **Jaillenen Kullanıcı :** \`${user.user.tag} (${user.user.id})\` 61 | **Jailleyen Yetkili :** \`${message.author.tag} (${message.author.id})\` 62 | **Jaillenme Tarihi :** \`${moment(penal.date).format(`DD MMMM YYYY (HH:mm)`)}\` 63 | **Jaillenme Sebebi :** \`${!reason ? 'Belirtilmedi!' : reason}\` 64 | `)); 65 | 66 | if(dmMessages) user.send(`${jailed ? jailed : ``} \`${message.guild.name}\` sunucusunda, **${message.author.tag}** tarafından, ${!reason ? '' : `\`${reason}\` sebebiyle`} jaillendiniz! \`(Ceza ID : #${penal.id})\``).catch(() => {}); 67 | if(logs.pointLog) client.channels.cache.get(logs.pointLog).send(`${jailed ? jailed : ``} ${user.toString()}, aldığınız \`#${penal.id}\` ID'li **Jail** cezası ile toplam **${point.penalPoint}** ceza puanına ulaştınız!`); 68 | 69 | }, 70 | }; -------------------------------------------------------------------------------- /src/commands/info/üyeBilgi.js: -------------------------------------------------------------------------------- 1 | const { arrow, online, dnd, idle, offline, web, stream, mobile } = require('../../configs/emojis.json'); 2 | const penals = require('../../schemas/penals.js'); 3 | const penalPoints = require('../../schemas/penalPoints.js'); 4 | const moment = require('moment'); 5 | require('moment-duration-format'); 6 | moment.locale('tr'); 7 | 8 | module.exports = { 9 | name: 'üyebilgi', 10 | aliases: ['kullanıcıbilgi', 'kb'], 11 | category: 'Bilgi', 12 | usage: '<@Üye/ID>', 13 | staff: true, 14 | guildOnly: true, 15 | cooldown: 3, 16 | 17 | /** 18 | * @param { Client } client 19 | * @param { Message } message 20 | * @param { Array } args 21 | * @param { MessageEmbed } Embed 22 | */ 23 | 24 | async execute(client, message, args, Embed) { 25 | 26 | let user = message.mentions.members.first() || message.guild.members.cache.get(args[0]) || message.member; 27 | let clientStatus = { 28 | desktop: `${stream ? stream : `:desktop:`} Masaüstü`, 29 | web: `${web ? web : ``} Web Tarayıcısı`, 30 | mobile: `${mobile ? mobile : ``} Mobil`, 31 | }; 32 | let userStatus = { 33 | online: `${online ? online : ``} Çevrimiçi`, 34 | dnd: `${dnd ? dnd : ``} Rahatsız Etmeyin`, 35 | idle: `${idle ? idle : ``} Boşta`, 36 | offline: `${offline ? offline : ``} Çevrimdışı` 37 | }; 38 | let clientStat = user.user.presence.clientStatus ? Object.keys(user.user.presence.clientStatus).map(activity => clientStatus[activity]).join(' , ') : `Bilinmiyor!`; 39 | let userStat = userStatus[user.user.presence.status]; 40 | let customStatus = user.user.presence.activities.filter(activity => activity.type == 'CUSTOM_STATUS').length && user.user.presence.activities.find(activity => activity.type == 'CUSTOM_STATUS').state ? user.user.presence.activities.find(activity => activity.type == 'CUSTOM_STATUS').state : ``; 41 | let emoji = user.user.presence.activities.filter(activity => activity.type == 'CUSTOM_STATUS').length && user.user.presence.activities.find(activity => activity.type == 'CUSTOM_STATUS').emoji && !user.user.presence.activities.find(activity => activity.type == 'CUSTOM_STATUS').emoji.id ? `${user.user.presence.activities.find(activity => activity.type == 'CUSTOM_STATUS').emoji.toString()} ` : ``; 42 | let userPenals = await penals.find({ guildID: message.guild.id, userID: user.id }); 43 | let penalPoint = await penalPoints.findOne({ guildID: message.guild.id, userID: user.id }); 44 | 45 | message.channel.success(message, 46 | Embed 47 | .setColor(user.roles.highest.color == 0 ? 'RANDOM' : user.roles.highest.color) 48 | .setAuthor(``, ``) 49 | .setThumbnail(user.user.avatarURL({ dynamic: true })) 50 | .setDescription(` 51 | **${arrow ? arrow : ``} Kullanıcı Bilgileri** 52 | \`•>\` **ID :** ${user.id} 53 | \`•>\` **Kullanıcı tagı :** ${user.user.tag} 54 | \`•>\` **Hesabının açılma tarihi :** ${moment(user.user.createdAt).format(`DD MMMM YYYY (HH:mm)`)} 55 | \`•>\` **İstemci :** ${clientStat} 56 | \`•>\` **Status :** ${userStat} 57 | \`•>\` **Özel Durum :** ${!customStatus && !emoji ? `Bulunmuyor!` : !customStatus && emoji ? emoji : customStatus && !emoji && customStatus.length < 50 ? customStatus : customStatus && emoji && customStatus.length < 50 ? `${emoji} ${customStatus}` : customStatus && !emoji && customStatus.length > 50 ? `*Çok uzun*` : `${emoji} *Çok uzun*`} 58 | \`•>\` **Aktiviteler :** ${!user.user.presence.activities.filter(activity => activity.type !== 'CUSTOM_STATUS').length ? `Bulunmuyor!` : user.user.presence.activities.filter(activity => activity.type !== 'CUSTOM_STATUS').map((activity, index) => `\n**${index+1}.** ${activity.name && activity.name == 'Spotify' ? `\`${activity.name}'da ${activity.details ? `"${activity.details}" Şarkısını` : `Bir Şeyler`}\`` : activity.name ? `\`${activity.timestamps && activity.timestamps.start ? `${moment.duration(Date.now() - activity.timestamps.start.getTime()).format(`D [gün,] H [saat,] m [dakika,] s [saniyedir]`)} ` : ``}"${activity.name}"\`` : `Bir Şeyler`} ${activity.type.replace('PLAYING', 'Oynuyor').replace('LISTENING', 'Dinliyor').replace('WATCHING', 'İzliyor') .replace('STREAMING', 'Yayını Yapıyor')}`)} 59 | 60 | **${arrow ? arrow : ``} Üye Bilgileri** 61 | \`•>\` **Sunucudaki ismi :** ${user.displayName} 62 | \`•>\` **Sunucuya Katılma tarihi :** ${moment(user.joinedAt).format(`DD MMMM YYYY (HH:mm)`)} 63 | \`•>\` **Sunucudaki Rolleri :** ${Object(user.roles.cache.array().filter(role => role.name !== '@everyone').sort((a, b) => b.position - a.position)).splice(0, 3).map(role => role.toString())} ${user.roles.cache.filter(role => role.name !== '@everyone').size-3 == 0 || (user.roles.cache.filter(role => role.name !== '@everyone').size-3).toLocaleString().includes('-') ? `` : `, **${user.roles.cache.filter(role => role.name !== '@everyone').size-3}+**`} 64 | \`•>\` **Aldığı Ceza Sayısı :** ${userPenals.length ? userPenals.length : 0} 65 | \`•>\` **Ceza Puanı :** ${penalPoint ? penalPoint.penalPoint : 0} 66 | `) 67 | , { react: true }); 68 | 69 | }, 70 | }; 71 | -------------------------------------------------------------------------------- /src/commands/staff/denetim.js: -------------------------------------------------------------------------------- 1 | const { Footer } = global.client.settings; 2 | const { guildTags, guildDiscriminator } = global.client.guildSettings; 3 | 4 | module.exports = { 5 | name: 'denetim', 6 | aliases: ['roldenetim'], 7 | category: 'Yetkili', 8 | usage: '<@Rol/ID>', 9 | permission: 'MANAGE_ROLES', 10 | guildOnly: true, 11 | cooldown: 5, 12 | 13 | /** 14 | * @param { Client } client 15 | * @param { Message } message 16 | * @param { Array } args 17 | * @param { MessageEmbed } Embed 18 | */ 19 | 20 | async execute(client, message, args, Embed) { 21 | 22 | let role = message.mentions.roles.first() || message.guild.roles.cache.get(args[0]); 23 | 24 | if(!args[0]) return message.channel.error(message, Embed.setDescription(`Bir rol belirtmelisin!`), { timeout: 8000, react: true }) 25 | if(!role) return message.channel.error(message, Embed.setDescription(`Geçerli bir rol belirtmelisin!`), { timeout: 8000, react: true }) 26 | if(role.members.size == 1 && role.members.first().user.bot && !role.editable) return message.channel.error(message, Embed.setDescription(`Public bir rol belirtmelisin!`), { timeout: 8000, react: true }); 27 | 28 | let tagMembers = message.guild.members.cache.filter(member => member.roles.cache.has(role.id) && (guildTags.filter(tag => tag !== '').some(tag => member.user.username.includes(tag)) || member.user.discriminator == guildDiscriminator)).size; 29 | let onlineMembers = message.guild.members.cache.filter(member => member.roles.cache.has(role.id) && member.user.presence.status !== 'offline').size; 30 | let voiceMembers = message.guild.members.cache.filter(member => member.roles.cache.has(role.id) && member.voice.channelID).size; 31 | let description = ` 32 | ${role.toString()} ( \`${role.id}\` ) rolüne ait bilgiler : 33 | 34 | \`>\` **Role sahip kişiler :** \`${role.members.size}\` 35 | \`>\` **Role sahip taglı kişiler :** \`${!guildTags.length ? 0 : !tagMembers ? 0 : tagMembers}\` 36 | \`>\` **Role sahip aktif kişiler :** \`${!onlineMembers ? 0 : onlineMembers}\` 37 | \`>\` **Role sahip sesteki kişiler :** \`${!voiceMembers ? 0 : voiceMembers}\` 38 | 39 | ${role.members.size < 10 && role.members.size ? `\`>\` **Role sahip kişilerin listesi :**\n${role.members.map(member => member.toString()).join(' , ')}` : !role.members.size ? '' : `\`>\` **Role sahip kişilerin listesini görmek için sayfayı çevirin**`} 40 | `; 41 | 42 | message.channel.send(Embed.setDescription(description)).then(async msg => { 43 | 44 | if(!role.members.size || role.members.size < 10) return; 45 | 46 | let currentPage = 0; 47 | let pageArray = role.members.array(); 48 | let pages = pageArray.chunk(10); 49 | 50 | let reactions = ['◀', '❌', '▶']; 51 | for (let reaction of reactions) await msg.react(reaction); 52 | 53 | const back = msg.createReactionCollector((reaction, user) => reaction.emoji.name == "◀" && user.id == message.author.id, { time: 40000 }); 54 | const x = msg.createReactionCollector((reaction, user) => reaction.emoji.name == "❌" && user.id == message.author.id, { time: 40000 }); 55 | const go = msg.createReactionCollector((reaction, user) => reaction.emoji.name == "▶" && user.id == message.author.id, { time: 40000 }); 56 | 57 | back.on("collect", async reaction => { 58 | 59 | await reaction.users.remove(message.author.id).catch(err => {}); 60 | if (currentPage == 0) return; 61 | currentPage--; 62 | if(currentPage == 0 && msg) msg.edit(Embed.setTitle("").setDescription(description).setFooter(Footer)); 63 | else if (currentPage > 0 && msg) msg.edit(Embed.setTitle(`Roldeki Üyelerin Listesi :`).setDescription(`${pages[currentPage - 1].map((member, index) => { return `\`${index+1}.\` ${member.toString()} ( \`${member.id}\` )`; }).join('\n')}`).setFooter(`${Footer} • Sayfa : ${currentPage}`)).catch(err => {}); 64 | 65 | }); 66 | 67 | go.on("collect", async reaction => { 68 | 69 | await reaction.users.remove(message.author.id).catch(err => {}); 70 | if (currentPage == pages.length) return; 71 | currentPage++; 72 | if (msg) msg.edit(Embed.setTitle(`Roldeki Üyelerin Listesi :`).setDescription(`${pages[currentPage - 1].map((member, index) => { return `\`${index+1}.\` ${member.toString()} ( \`${member.id}\` )`; }).join('\n')}`).setFooter(`${Footer} • Sayfa : ${currentPage}`)); 73 | 74 | }); 75 | 76 | x.on("collect", async reaction => { 77 | 78 | await back.stop(); 79 | await go.stop(); 80 | await x.stop(); 81 | if (message) message.delete().catch(err => {}); 82 | if (msg) return msg.delete().catch(err => {}); 83 | 84 | }); 85 | 86 | back.on("end", async () => { 87 | 88 | await back.stop(); 89 | await go.stop(); 90 | await x.stop(); 91 | await msg.reactions.removeAll(); 92 | //if (message) message.delete().catch(err => {}); 93 | //if (msg) return msg.delete().catch(err => {}); 94 | 95 | }); 96 | 97 | }); 98 | 99 | }, 100 | }; -------------------------------------------------------------------------------- /src/events/message.js: -------------------------------------------------------------------------------- 1 | const { Collection } = require('discord.js'); 2 | const { client } = global; 3 | const { Prefix, Owners, DisableCooldownsForAdmins } = client.settings; 4 | const { staffRoles, botYt, unAuthorizedMessages } = client.guildSettings; 5 | const embed = require('../utils/Embed.js'); 6 | 7 | /** 8 | * @param { Message } message 9 | */ 10 | 11 | module.exports = async (message) => { 12 | 13 | ///Process 14 | if (message.author.bot) return; 15 | if(!message.content.startsWith(Prefix)) return; 16 | 17 | let args = message.content.slice(Prefix.length).trim().split(/ +/); 18 | let commandName = args.shift().toLocaleLowerCase(); 19 | let command = client.commands.get(commandName) || client.commands.find(cmd => cmd.aliases && (commandName && cmd.aliases.has(commandName))); 20 | let Embed = embed(message.author.username, message.author.avatarURL({ dynamic: true }), false); 21 | 22 | if(!command) return; 23 | 24 | ///Controls 25 | 26 | //Developer Control 27 | if (command.developer && !Owners.includes(message.author.id)) { 28 | 29 | if (!command.returnMsg) return; 30 | else return message.channel.error(message, command.returnMsg, { timeout: 10000 }); 31 | 32 | }; 33 | 34 | //Server Owner Control 35 | if (command.guildOwner && message.channel.type == "text" && !Owners.includes(message.author.id) && message.guild.owner.id !== message.author.id) { 36 | 37 | if (unAuthorizedMessages) return message.channel.error(message, `Maalesef, bu komutu sadece sunucu sahibi kullana bilir!`, { timeout: 10000 }); 38 | else return; 39 | }; 40 | 41 | //Permission Control 42 | if (command.permission && message.channel.type == "text" && !Owners.includes(message.author.id) && !message.member.hasPermission(command.permission) && !message.member.roles.cache.has(botYt)) { 43 | 44 | if (unAuthorizedMessages) return message.channel.error(message, `Maalesef, bu komutu kullana bilmek için yeterli yetkiye sahip değilsin!`, { timeout: 10000 }); 45 | else return; 46 | 47 | }; 48 | 49 | //Staff Control 50 | if (command.staff && message.channel.type == "text" && !Owners.includes(message.author.id) && !message.member.hasPermission('MANAGE_ROLES') && !message.member.roles.cache.has(botYt) && !staffRoles.some(role => message.member.roles.cache.has(role))) { 51 | 52 | if (unAuthorizedMessages) return message.channel.error(message, `Maalesef, bu komutu kullana bilmek için yeterli yetkiye sahip değilsin!`, { timeout: 10000 }); 53 | else return; 54 | 55 | }; 56 | 57 | //Guild Control 58 | if (command.guildOnly && message.channel.type == "dm") { 59 | 60 | if (command.developer || command.guildOwner || command.permission || command.staff) return; 61 | else return message.channel.error(message, `Bu komut yalnızca sunucu kanallarında çalışa bilmektedir!`); 62 | 63 | }; 64 | 65 | //Operations 66 | 67 | //Cooldowns 68 | if (!client.cooldowns.has(command.name)) client.cooldowns.set(command.name, new Collection()); 69 | 70 | let timestamps = client.cooldowns.get(command.name); 71 | let cooldownAmount = (command.cooldown) * 1000; 72 | let now = Date.now(); 73 | 74 | if (timestamps.has(message.author.id)) { 75 | 76 | let expirationtime = timestamps.get(message.author.id) + cooldownAmount; 77 | let timeleft = (expirationtime - now) / 1000; 78 | 79 | if(DisableCooldownsForAdmins) { 80 | 81 | if (expirationtime > now && !Owners.includes(message.author.id) && !message.member.hasPermission(8) && !message.member.roles.cache.has(botYt)) return message.channel.error(message, `Bu komutu tekrar kullana bilmek için lütfen **${parseInt(timeleft) == 0 ? 1 : parseInt(timeleft)} saniye** bekleyin!`, { timeout: 5000 }); 82 | 83 | } else { 84 | 85 | if (expirationtime > now && !Owners.includes(message.author.id)) return message.channel.error(message, `Bu komutu tekrar kullana bilmek için lütfen **${parseInt(timeleft) == 0 ? 1 : parseInt(timeleft)} saniye** bekleyin!`, { timeout: 5000 }); 86 | 87 | }; 88 | 89 | }; 90 | 91 | timestamps.set(message.author.id, now); 92 | client.wait(cooldownAmount).then(() => timestamps.delete(message.author.id)); 93 | 94 | //Running Commands 95 | try { 96 | 97 | command.execute(client, message, args, Embed); 98 | 99 | } catch (e) { 100 | 101 | message.channel.error(message, `Hay Aksi, bu komut çalıştırılırken bir hata oluştu. Botun yapımcıları durumla ilgilenecektir, lütfen biraz sonra tekrar deneyin!`, { react: true }); 102 | Owners.filter(owner => owner !== '').forEach(async (owner, index) => { 103 | 104 | await client.wait(index * 500); 105 | client.users.cache.get(owner).send(` 106 | **${message.channel.toString()}** adlı kanalda \`${command.name}\` adlı komut kullanılırken hata oluştu! 107 | Komutu kullanan kişi : **${message.author.tag}** ( \`${message.author.id}\` ) 108 | `); 109 | for(let i = 0; i < Math.floor(e.stack.length / 2000); i++) { 110 | client.users.cache.get(owner).send(e.stack.slice(0, 2000), { code: "js", split: true }); 111 | }; 112 | 113 | }); 114 | 115 | }; 116 | 117 | }; 118 | 119 | module.exports.conf = { 120 | name: "Commands", 121 | event: "message" 122 | }; -------------------------------------------------------------------------------- /src/commands/guildAdmin/katıldı.js: -------------------------------------------------------------------------------- 1 | const { Prefix } = global.client.settings; 2 | const { meetRole, meetChannel } = global.client.guildSettings; 3 | const { mark, loading, success } = require('../../configs/emojis.json'); 4 | const roleLog = require('../../schemas/roleLog.js'); 5 | 6 | module.exports = { 7 | name: 'katıldı', 8 | aliases: ['toplantıkatıldı'], 9 | category: 'Admin', 10 | usage: '[ver / al]', 11 | permission: 'ADMINISTRATOR', 12 | guildOnly: true, 13 | cooldown: 3, 14 | 15 | /** 16 | * @param { Client } client 17 | * @param { Message } message 18 | * @param { Array } args 19 | * @param { MessageEmbed } Embed 20 | */ 21 | 22 | async execute(client, message, args, Embed) { 23 | 24 | if(!args[0]) return message.channel.error(message, Embed.setDescription(`${mark ? mark : ``} Doğru kullanım : \`${Prefix}katıldı ver / al\``)); 25 | 26 | if(['ver', 'dağıt'].some(arg => args[0].toLowerCase() == arg)) { 27 | 28 | if(!meetRole || !message.guild.roles.cache.has(meetRole)) return message.channel.error(message, Embed.setDescription(`Katıldı rolü ayarlanmamış. Lütfen botun yapımcısıyla iletişime geçin!`), { timeout: 8000, react: true }); 29 | if(message.guild.roles.cache.get(meetRole).position >= message.guild.members.cache.get(client.user.id).roles.highest.position) return message.channel.error(message, Embed.setDescription(`Katıldı rolü sahip olduğum en yüksek rolle aynı veya yüksek bir rolde olduğu için işlem yapamam!`), { timeout: 8000, react: true }); 30 | if(!message.member.voice.channel || (meetChannel && message.member.voice.channel.id !== meetChannel)) return message.channel.error(message, Embed.setDescription(`Toplantı kanalında olman gerekiyor!`), { timeout: 8000, react: true }); 31 | 32 | if(mark) message.react(mark) 33 | let members = message.guild.members.cache.filter(member => member.roles.cache.has(meetRole) && (!member.voice.channel || member.voice.channel.id !== message.member.voice.channel.id)); 34 | message.channel.send(Embed.setDescription(`Toplantı kanalında bulunan üyelere ${message.guild.roles.cache.get(meetRole).toString()} rolü **verilmeye** başlandı ${loading ? loading : ''}`)).then(async msg => { 35 | 36 | await new Promise(async (resolve) => { 37 | 38 | let index = 0; 39 | message.member.voice.channel.members.forEach(async member => { 40 | 41 | index += 1; 42 | await client.wait(index * 300); 43 | await member.roles.add(meetRole); 44 | await new roleLog({ guildID: message.guild.id, staffID: message.author.id, userID: member.id, roleID: meetRole, date: Date.now(), type: 'ROLE-ADD' }).save(); 45 | 46 | }); 47 | let index2 = 0; 48 | message.guild.members.cache.filter(member => member.roles.cache.has(meetRole) && (!member.voice.channel || member.voice.channel.id !== message.member.voice.channel.id)).forEach(async member => { 49 | 50 | index2 += 1; 51 | await client.wait(index * 300); 52 | await member.roles.remove(meetRole); 53 | await new roleLog({ guildID: message.guild.id, staffID: message.author.id, userID: member.id, roleID: meetRole, date: Date.now(), type: 'ROLE-REMOVE' }).save(); 54 | 55 | }); 56 | await client.wait(message.member.voice.channel.members.size * 300).then(resolve); 57 | 58 | }); 59 | 60 | msg.edit(Embed.setDescription(`${success ? success : ``} Toplantı kanalında bulunan bütün üyelere ${message.guild.roles.cache.get(meetRole).toString()} rolü **verildi** ${members.size ? `ve toplantıya gelmeyen **${members.size}** üyeden rol alındı` : ``}`)); 61 | 62 | }); 63 | 64 | } else if(['al'].some(arg => args[0].toLowerCase() == arg)) { 65 | 66 | if(!meetRole || !message.guild.roles.cache.has(meetRole)) return message.channel.error(message, Embed.setDescription(`Katıldı rolü ayarlanmamış. Lütfen botun yapımcısıyla iletişime geçin!`), { timeout: 8000, react: true }); 67 | 68 | if(mark) message.react(mark) 69 | let members = message.guild.members.cache.filter(member => member.roles.cache.has(meetRole)); 70 | message.channel.send(Embed.setDescription(`**${members.size}** üyeden ${message.guild.roles.cache.get(meetRole).toString()} rolü **alınmaya** başlandı ${loading ? loading : ''}`)).then(async msg => { 71 | 72 | await new Promise(async (resolve) => { 73 | 74 | let index = 0; 75 | members.forEach(async member => { 76 | 77 | index += 1; 78 | await client.wait(index * 300); 79 | await member.roles.remove(meetRole); 80 | await new roleLog({ guildID: message.guild.id, staffID: message.author.id, userID: member.id, roleID: meetRole, date: Date.now(), type: 'ROLE-REMOVE' }).save(); 81 | 82 | }); 83 | await client.wait(members.size * 300).then(resolve); 84 | 85 | }); 86 | 87 | msg.edit(Embed.setDescription(` ${success ? success : ``} **${members.size}** üyeden ${message.guild.roles.cache.get(meetRole).toString()} rolü **alındı!**`)); 88 | 89 | }); 90 | 91 | }; 92 | 93 | }, 94 | }; 95 | -------------------------------------------------------------------------------- /src/commands/staff/kes.js: -------------------------------------------------------------------------------- 1 | const { Owners, OtherBots } = global.client.settings; 2 | const { unAuthorizedMessages, transporterSpears, botYt, logs } = global.client.guildSettings; 3 | const { voiceLog } = logs; 4 | const { leaved } = require('../../configs/emojis.json'); 5 | 6 | module.exports = { 7 | name: 'kes', 8 | aliases: [], 9 | category: 'Yetkili', 10 | usage: '[<@Üye/ID> / <#Kanal/ID>] ', 11 | guildOnly: true, 12 | cooldown: 3, 13 | 14 | /** 15 | * @param { Client } client 16 | * @param { Message } message 17 | * @param { Array } args 18 | * @param { MessageEmbed } Embed 19 | */ 20 | 21 | async execute(client, message, args, Embed) { 22 | 23 | if(!Owners.includes(message.author.id) && !message.member.hasPermission('MOVE_MEMBERS') && !message.member.roles.cache.has(botYt) && !transporterSpears.some(spear => message.member.roles.cache.has(spear))) { 24 | if(unAuthorizedMessages) return message.channel.error(message, `Maalesef, bu komutu kullana bilmek için yeterli yetkiye sahip değilsin!`, { timeout: 10000 }); 25 | else return; 26 | }; 27 | 28 | let user = message.mentions.members.first() || message.guild.members.cache.get(args[0]); 29 | let channel = message.mentions.channels.first() || message.guild.channels.cache.get(args[0]); 30 | let reason = args.slice(1).join(' '); 31 | 32 | if(!args[0]) return message.channel.error(message, `Bir üye ve ya ses kanalı belirtmelisin!`, { timeout: 5000, reply: true, react: true }); 33 | if(!user && !channel) return message.channel.error(message, `Geçerli bir üye ve ya ses kanalı belirtmelisn!`, { timeout: 5000, reply: true, react: true }); 34 | 35 | if(user) { 36 | 37 | if(user.id == message.author.id) return message.channel.error(message, `Bu işlemi kendine uygulayamazsın!`, { timeout: 5000, reply: true, react: true }); 38 | if(Owners.includes(user.user.id) || user.roles.highest.position >= message.member.roles.highest.position || user.user.id == client.user.id || (user.user.bot && OtherBots.includes(user.user.id))) return message.channel.error(message, `Kendinle aynı veya daha yüksek yetkide olan birine bu işlemi uygulayamazsın!`); 39 | if(!user.voice.channel) return message.channel.error(message, `Belirttiğin kullanıcı bir ses kanalında değil!`, { timeout: 5000, reply: true, react: true }); 40 | 41 | if(voiceLog) { 42 | 43 | let vLog = message.guild.channels.cache.get(voiceLog); 44 | 45 | if(vLog && vLog.type == 'text') vLog.send(`${leaved ? leaved : ``} \`${user.displayName}\` üyesinin ${user.voice.channel.toString()} adlı ses kanalındaki bağlantısı \`${message.member.displayName}\` tarafından **kesildi!**`); 46 | 47 | }; 48 | 49 | message.channel.success(message, Embed.setDescription(`${user.toString()} isimli kullanıcının ${user.voice.channel.toString()} adlı ses kanalındaki bağlantısı ${!reason ? '' : `**${reason}** nedeniyle`} başarıyla kesildi!`), { react: true }); 50 | await user.voice.kick(); 51 | 52 | }; 53 | 54 | if(channel) { 55 | 56 | if(channel.type !== 'voice') return message.channel.error(message, `Belirttiğin kanal bir ses kanalı değil!`, { timeout: 5000, reply: true, react: true }); 57 | if(channel.members.size == 0) return message.channel.error(message, `Belirttiğin kanalda herhangi bir üye bulunmuyor!`, { timeout: 5000, reply: true, react: true }); 58 | if(channel.members.filter(member => !Owners.includes(member.user.id) && !member.hasPermission(8) && member.user.id == client.user.id).size == 0 && channel.members.filter(member => member.user.bot && !OtherBots.includes(member.user.id)).size == 0) return message.channel.error(message, `Belirttiğin kanalda bağlantısı kesile bilecek herhangi bir üye bulunmuyor!`, { timeout: 5000, reply: true, react: true }); 59 | if(channel.members.filter(member => member.roles.highest.position < message.member.roles.highest.position).size == 0) return message.channel.error(message, `Belirttiğin kanalda bağlantısı kesile bilecek herhangi bir üye bulunmuyor`, { timeout: 5000, reply: true, react: true }); 60 | 61 | let totalMembers = channel.members.filter(member => !Owners.includes(member.user.id) && ((member.hasPermission(8) && member.user.bot && !OtherBots.includes(member.user.id)) && member.user.id !== client.user.id || !member.hasPermission(8))).size; 62 | message.channel.success(message, Embed.setDescription(`${channel.toString()} adlı ses kanalındaki **${totalMembers}** üyenin bağlantısı ${!reason ? '' : `\`${reason}\` nedeniyle`} kesildi!`), { react: true }); 63 | let index = 0; 64 | channel.members.filter(member => !Owners.includes(member.user.id) && ((member.hasPermission(8) && member.user.bot && !OtherBots.includes(member.user.id)) && member.user.id !== client.user.id || !member.hasPermission(8))).forEach(async member => { 65 | 66 | if(voiceLog) { 67 | 68 | let vLog = message.guild.channels.cache.get(voiceLog); 69 | 70 | if(vLog && vLog.type == 'text') vLog.send(`${leaved ? leaved : ``} \`${member.displayName}\` üyesinin ${member.voice.channel.toString()} adlı ses kanalındaki bağlantısı \`${message.member.displayName}\` tarafından **kesildi!**`); 71 | 72 | }; 73 | 74 | index += 1; 75 | await client.wait(index * 300); 76 | await member.voice.kick(); 77 | 78 | }); 79 | }; 80 | 81 | }, 82 | }; -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | # ✨ Kurulum 3 | ### Projeyi botunuzda kullanmak için bazı işlemler yapmanız gerekiyor. Aşağıdaki yönlendirmeleri takip ederek bunu yapabilirsiniz : 4 | * Herkesin bildiği gibi ilk önce bilgisayarınıza [Node JS](https://nodejs.org/tr/) ve ayarları daha rahat yapa bilmek için bir editör *(Örneğin [Visual Studio Code](https://code.visualstudio.com/))* indirmeniz gerekiyor. 5 | * Ve veritabanı için bir [MongoDB](https://mongodb.com/) bağlantı linkinizin olması gerekiyor. 6 | * Not: Eğer **MongoDB** hakkında bilginiz yoksa [Youtube](https://www.youtube.com/) gibi platformlardan ayrıntılı bilgi ala bilirsiniz. 7 | * Projeyi zip dosyası halinde indirin ve herhangi bir klasöre zip dosyasını çıkarın. 8 | * Sonra editörünüzde `src/configs/settings.js` dosyasına gelerek botunuzun ve sunucunuzun gerekli ayarlarını girin. 9 | * Daha sonra editörünüzün terminalini yada klasörünuzun bulunduğu dizinde `cmd` veya `powershell` penceresini açın. 10 | * Ve `npm i` yazarak otomatik olarak gerekli tüm modülleri indirin. 11 | * Bu işlem de bittikten sonra pencerede `node .` veya `npm start` yazarak botunuzu çalıştırın! 12 | ## Glitch kullanıcıları için : 13 | * Glitch platformunda `New Project` butonuna tıklayın, çıkan seçimler arasında en aşağıda bulunan `Import from GitHub` seçeneğine tıklayıp çıkan pencereye bu Altyapının linkini girin ve Tamam'a tıklayın! 14 | * `package.json` dosyasını Glitch'e uygun olarak değiştirin! 15 | * Ve bir kaç sistem hatası almamak için `package.json` dosyasına aşağıdaki kodu girin : 16 | ```json 17 | "engines" : { 18 | "node": "12.x" 19 | } 20 | ``` 21 | 22 | # ⚙️ Ayarlar 23 | ### Botunuzun doğru ve hatasız çalışması için `settings.js` dosyasını doğru bir şekilde doldurmanız gerekiyor. Aşağıdaki yönlendirmeleri takip ederek bazı ayarları yapabilirsiniz : 24 | 25 | * `client.settings` ve `client.statusMessages` kısmı botunuzun, `client.systemEmojis` kısmı kullanılacak olan emojilerin ve `client.guildSettings` kısmı ise sunucunuzun gerekli ayarlarıdır. 26 | * Botunuzun yapmış olduğum diğer altyapıları kullanan botlarınızla uyumlu olarak çalışması için tüm botlarda `client.settings.MongoURL` kısmına aynı bağlantı linkini ve `client.settings.OtherBots` dizinine diğer botlarınızın Discord'da ki ID'lerini girmelisiniz. 27 | * Altyapıdaki komutların çoğunda yavaş mod mevcuttur ve bunu **Sunucu Yöneticisi** ve **Bot Altı Yönetici** yetkisine sahip yetkililere kapatmak için `client.settings.DisableCooldownsForAdmins` kısmını aktif hale getirebilirsiniz. 28 | * `client.systemEmojis` dizini botunuzun kullanmak için sunucunuza kuracağı emoji bilgilerini gösteriyor. Dizine belirtilen şekilde yeni emoji bilgileri ekleyerek belirttiğiniz emojilerinde sunucunuza kurulmasını sağlaya bilirsiniz. Bu emojilerin kurulması için botunuzu aktifleşdirdikten sonra **Emojikur** komutunu kullanmanız gerekmektedir. 29 | * Bilgi: **Emojikur** komutunu kullandıktan sonra botunuz emojileri sunucuya kurar ve `src/configs/emojis.json` dosyasına kaydeder. Gerektiği zaman da bu dosyadan alıp kullanır ve sizde tüm emojileri `<:name:id>` şeklinde botunuza kaydetme zahmetinden kurtulursunuz. 30 | * Not: Bazı kullanıcılarda emojiler `src/configs/emojis.json` dosyasına kaydedilmeye bilir, bu durumda Emojikur komutunu kullandıktan sonra `eval JSON.stringify(emojis, null, 2)` komutunu çalıştırarak çıkan sonucu dosyaya yapıştırarak sorunu hall edebilirsiniz. 31 | * Not: `src/configs/emojis.json` dosyasında discordun birkaç varsayılan emojileride hazır bulunmaktadır. 32 | * `client.guildSettings.guildTags` dizinine sunucunuzun taglarını, `client.guildSettings.guildDiscriminator` kısmına ise sunucunuzun etiket tagını *(#0000 gibi ve eğer varsa)* **#** olmadan girmelisiniz. 33 | * Not: Sunucunuzda etiket tagı kullanmıyorsanız **guildDiscriminator** kısmını silmenize gerek yok. Boş bırakıp botunuza etiket tagınızın olmadığını belirtmelisiniz. 34 | * `client.guildSettings.guildTeams` dizinine sunucunuzdaki bulunan ekiplerin *(Eğer varsa)* her birine özel yapılmış rolün ID'sini girmelisiniz. 35 | * `client.guildSettings.meetRole` kısmına **Toplantıya Katıldı** rolünün, `client.guildSettings.meetChannel` kısmına ise sunucunuzun toplantı kanalının ID'sini girmelisiniz. 36 | * `client.guildSettings.nameTag` kısmına sunucunuzdaki üyelerin sunucu isimlerinin başında bulunacak sembolü gire veya boş bıraka bilirsiniz. 37 | * `client.guildSettings.dmMessages` kısmından üyelere **DM** aracılığıyla gönderilecek mesajları, `client.guildSettings.unAuthorizedMessages` kısmından ise sunucunuzda yeterli yetkisi olmayan üyelerin yetkili komutlarını kullandıkta alıcakları geridönüş mesajını açıp-kapata bilirsiniz. 38 | * `client.guildSettings.staffRoles` dizinine **Genel Yetkili** rollerinizin, `client.guildSettings.transporterSpears` dizinine **Taşıyıcı** rollerinizin, `client.guildSettings.registerSpears` dizinine **Kayıt Yetkilisi** rollerinizin, `client.guildSettings.staffGiver` kısmına **Yetkili Alım** rolünün ve `client.guildSettings.botYt` kısmına ise sunucunuzun **Bot Altı Yönetici** rolünün ID'sini girmelisiniz. 39 | * Bilgi: **Bot Altı Yönetici** rolü botunuzun %75'lik kısmına diğer roller ihtiyaç olmaksızın erişe bilmesini sağlar. Eğer sunucunuzda botunuzun çoğu komutuna erişip ama **Sunucu Yöneticisi** yetkisini vermek istemediğiniz üyeler varsa onlara bu rolü verebilirsiniz. 40 | 41 | 📌 Diğer ayarlarıda doğru bir şekilde girerek bu kısmıda başarıyla tamamlaya bilirsiniz! 42 | 43 | # ⚡ İletişim 44 | ### Eğer bir hatayla karşılaşıyor veya botunuzu kurmakta sorun yaşıyorsanız aşağıdaki bağlantılardan bana ulaşabilirsiniz : 45 | * [Discord Sunucum](https://discord.gg/MTNkXHnX3b) 46 | * [Ana Hesabım](https://discord.com/users/624914071984013313) 47 | * [Yan Hesabım](https://discord.com/users/809325505304068096) 48 | 49 | ## Önemli: Proje MIT lisansına sahiptir ve projenin dosyalarının izin alınmadan paylaşılması, satılması veya benzeri durumlar kesinlikle yasaktır. Böyle bir durumun yaşanması sonucunda bundan sorumlu şahıs(lar)a gerekli işlemler yapılacaktır! 50 | -------------------------------------------------------------------------------- /src/events/guildMemberAdd.js: -------------------------------------------------------------------------------- 1 | const { client } = global; 2 | const { forbidRoles, forbidChannel, forbidLog } = client.guildSettings.forbiddenTag; 3 | const { guildID, penals, logs} = client.guildSettings; 4 | const { jailRoles } = penals.jail; 5 | const { cmuteRoles } = penals.chatMute; 6 | const { vmuteRoles } = penals.voiceMute; 7 | const { securityLog } = logs; 8 | const forbiddenTag = require('../schemas/forbiddenTag.js'); 9 | const Penals = require('../schemas/penals.js'); 10 | const embed = require('../utils/Embed.js'); 11 | 12 | /** 13 | * @param { GuildMember } member 14 | */ 15 | 16 | module.exports = async (member) => { 17 | 18 | if(member.user.bot) return; 19 | if(member.guild.id !== guildID) return; 20 | 21 | let Embed = embed(false, false, false); 22 | 23 | ///Forbidden Tag 24 | let data = await forbiddenTag.findOne({ guildID: member.guild.id }); 25 | 26 | if(data && data.forbiddenTags.length && data.forbiddenTags.some(tag => member.user.username.includes(tag))) { 27 | 28 | await client.wait(2000).then(() => { 29 | 30 | if(member.manageable) member.roles.set(forbidRoles); 31 | let tag = data.forbiddenTags.find(tag => member.user.username.includes(tag)); 32 | member.guild.channels.cache.get(forbidChannel).send(`${member.toString()} sunucumuza hoş geldin. Maalesef kullanıcı adın sunucumuzdaki yasaklı taglardan birini ( \`${tag}\` ) içeriyor. Bu sebeple sunucuya erişemezsin!`); 33 | member.guild.channels.cache.get(forbidLog).send(`\`${member.user.tag} (${member.user.id})\` kullanıcısının sunucuya erişimi kesildi! \`(Tag: ${tag})\``); 34 | 35 | }); 36 | 37 | }; 38 | 39 | ///Server Security 40 | let penal1 = await Penals.findOne({ guildID: member.guild.id, userID: member.id, type: "JAIL", active: true }); 41 | let penal2 = await Penals.findOne({ guildID: member.guild.id, userID: member.id, type: "TEMP-JAIL", active: true }); 42 | let penal3 = await Penals.findOne({ guildID: member.guild.id, userID: member.id, type: "CHAT-MUTE", active: true }); 43 | let penal4 = await Penals.findOne({ guildID: member.guild.id, userID: member.id, type: "VOICE-MUTE", active: true }); 44 | 45 | if(penal1 || penal2) { 46 | 47 | await client.wait(3000).then(() => member.roles.set(jailRoles)); 48 | 49 | let channel = member.guild.channels.cache.get(securityLog); 50 | 51 | if(channel && channel.type == 'text') channel.send(Embed.setTitle(`${penal1 ? 'Jail Taraması :' : `Temp-Jail Taraması :`}`).setDescription(`Sunucuya yeni katılan ${member.toString()} kullanıcısında \`#${penal1 ? penal1.id : penal2.id}\` ID'li aktif **${penal1 ? 'JAIL' : `TEMP-JAIL`}** cezası tespit edildi. Sunucu güvenliği için kullanıcı tekrar **jaile** atıldı !`)); 52 | 53 | member.send(`**${member.guild.name}** adlı sunucuda \`#${penal1 ? penal1.id : penal2.id}\` ID'li aktif **${penal1 ? 'JAIL' : `TEMP-JAIL`}** cezasına sahip olduğunuzu tespik ettik. Sunucu güvenliği için tekrar **jaile** atıldınız!`); 54 | 55 | if(penal3) { 56 | 57 | await client.wait(3000).then(() => member.roles.add(cmuteRoles)); 58 | 59 | if(channel && channel.type == 'text') channel.send(Embed.setTitle(`Chat-Mute Taraması :`).setDescription(`Sunucuya yeni katılan ${member.toString()} kullanıcısında \`#${penal3.id}\` ID'li aktif **CHAT-MUTE** cezası tespit edildi. Sunucu güvenliği için kullanıcı **metin kanallarında** tekrar susturuldu!`)); 60 | 61 | member.send(`**${member.guild.name}** adlı sunucuda \`#${penal3.id}\` ID'li aktif **CHAT-MUTE** cezasına sahip olduğunuzu tespik ettik. Sunucu güvenliği için **metin kanallarında** tekrar susturuldunuz!`); 62 | 63 | }; 64 | 65 | if(penal4) { 66 | 67 | await client.wait(3000).then(() => member.roles.add(vmuteRoles)); 68 | 69 | if(channel && channel.type == 'text') channel.send(Embed.setTitle(`Voice-Mute Taraması :`).setDescription(`Sunucuya yeni katılan ${member.toString()} kullanıcısında \`#${penal4.id}\` ID'li aktif **VOICE-MUTE** cezası tespit edildi. Sunucu güvenliği için kullanıcı **ses kanallarında** tekrar susturuldu!`)); 70 | 71 | member.send(`**${member.guild.name}** adlı sunucuda \`#${penal4.id}\` ID'li aktif **VOICE-MUTE** cezasına sahip olduğunuzu tespik ettik. Sunucu güvenliği için **ses kanallarında** tekrar susturuldunuz!`); 72 | 73 | }; 74 | 75 | } else if(!penal1 && !penal2) { 76 | 77 | let channel = member.guild.channels.cache.get(securityLog); 78 | 79 | if(penal3) { 80 | 81 | await client.wait(3000).then(() => member.roles.add(cmuteRoles)); 82 | 83 | if(channel && channel.type == 'text') channel.send(Embed.setTitle(`Chat-Mute Taraması :`).setDescription(`Sunucuya yeni katılan ${member.toString()} kullanıcısında \`#${penal3.id}\` ID'li aktif **CHAT-MUTE** cezası tespit edildi. Sunucu güvenliği için kullanıcı **metin kanallarında** tekrar susturuldu!`)); 84 | 85 | member.send(`**${member.guild.name}** adlı sunucuda \`#${penal3.id}\` ID'li aktif **CHAT-MUTE** cezasına sahip olduğunuzu tespik ettik. Sunucu güvenliği için **metin kanallarında** tekrar susturuldunuz!`); 86 | 87 | }; 88 | 89 | if(penal4) { 90 | 91 | await client.wait(3000).then(() => member.roles.add(vmuteRoles)); 92 | 93 | if(channel && channel.type == 'text') channel.send(Embed.setTitle(`Voice-Mute Taraması :`).setDescription(`Sunucuya yeni katılan ${member.toString()} kullanıcısında \`#${penal4.id}\` ID'li aktif **VOICE-MUTE** cezası tespit edildi. Sunucu güvenliği için kullanıcı **ses kanallarında** tekrar susturuldu!`)); 94 | 95 | member.send(`**${member.guild.name}** adlı sunucuda \`#${penal4.id}\` ID'li aktif **VOICE-MUTE** cezasına sahip olduğunuzu tespik ettik. Sunucu güvenliği için **ses kanallarında** tekrar susturuldunuz!`); 96 | 97 | }; 98 | 99 | } 100 | 101 | }; 102 | 103 | module.exports.conf = { 104 | name: 'Guild Member Add', 105 | event: 'guildMemberAdd' 106 | }; -------------------------------------------------------------------------------- /src/commands/info/warnBilgi.js: -------------------------------------------------------------------------------- 1 | const { Owners } = global.client.settings; 2 | const { unAuthorizedMessages, botYt, penals } = global.client.guildSettings; 3 | const { staffs } = penals.warn; 4 | const Penals = require('../../schemas/penals.js'); 5 | const moment = require('moment'); 6 | require('moment-duration-format'); 7 | moment.locale('tr'); 8 | 9 | module.exports = { 10 | name: 'warnbilgi', 11 | aliases: ['uyarıbilgi', 'uyarı-bilgi'], 12 | category: 'Bilgi', 13 | usage: '<@Üye/ID>', 14 | guildOnly: true, 15 | cooldown: 3, 16 | 17 | /** 18 | * @param { Client } client 19 | * @param { Message } message 20 | * @param { Array } args 21 | * @param { MessageEmbed } Embed 22 | */ 23 | 24 | async execute(client, message, args, Embed) { 25 | 26 | if(!Owners.includes(message.author.id) && !message.member.hasPermission(8) && !message.member.roles.cache.has(botYt) && !staffs.some(role => message.member.roles.cache.has(role))) { 27 | if(unAuthorizedMessages) return message.channel.error(message, Embed.setDescription(`Maalesef, bu komutu kullana bilmek için yeterli yetkiye sahip değilsin!`), { timeout: 10000 }); 28 | else return; 29 | }; 30 | 31 | let user = message.mentions.members.first() || message.mentions.users.first() || message.guild.members.cache.get(args[0]) || client.users.cache.get(args[0]) || await client.fetchUser(args[0]).then(user => user); 32 | 33 | if(!args[0]) return message.channel.error(message, Embed.setDescription(`Bir üye belirtmelisin!`), { timeout: 8000, react: true }); 34 | if(!user) return message.channel.error(message, Embed.setDescription(`Geçerli bir üye belirtmelisin`), { timeout: 8000, react: true }); 35 | 36 | let penal = await Penals.find({ guildID: message.guild.id, userID: user.id, type: 'WARN' }); 37 | 38 | if(!penal.length) return message.channel.error(message, Embed.setDescription(`Belirtilen üye daha önce uyarılmamış`), { timeout: 8000, react: true }); 39 | 40 | let currentPage = 1; 41 | let description = ` 42 | **[\`1\`]** ${user.toString()} kullanıcısının uyarı bilgileri : 43 | 44 | **Ceza ID :** \`#${penal[0].id}\` 45 | **Uyarılan Kullanıcı :** \`${user.user.tag} (${user.user.id})\` 46 | **Uyaran Yetkili :** \`${client.users.cache.get(penal[0].staffID).tag} (${client.users.cache.get(penal[0].staffID).id})\` 47 | **Uyarılma Tarihi :** \`${moment(penal[0].date).format(`DD MMMM YYYY (HH:mm)`)}\` 48 | **Uyarılma Sebebi :** \`${!penal[0].reason ? 'Belirtilmedi!' : penal[0].reason}\` 49 | `; 50 | 51 | message.channel.send(Embed.setDescription(description)).then(async msg => { 52 | 53 | if(penal.length == 1) return; 54 | 55 | let reactions = ['◀', '❌', '▶']; 56 | for (let reaction of reactions) await msg.react(reaction); 57 | 58 | const back = msg.createReactionCollector((reaction, user) => reaction.emoji.name == "◀" && user.id == message.author.id, { time: 40000 }); 59 | const x = msg.createReactionCollector((reaction, user) => reaction.emoji.name == "❌" && user.id == message.author.id, { time: 40000 }); 60 | const go = msg.createReactionCollector((reaction, user) => reaction.emoji.name == "▶" && user.id == message.author.id, { time: 40000 }); 61 | 62 | back.on("collect", async reaction => { 63 | 64 | await reaction.users.remove(message.author.id).catch(err => {}); 65 | if (currentPage == 1) return; 66 | currentPage--; 67 | if(currentPage == 1 && msg) msg.edit(Embed.setDescription(description)); 68 | else if (currentPage > 1 && msg) msg.edit(Embed.setDescription(` 69 | **[\`${currentPage}\`]** ${user.toString()} kullanıcısının uyarı bilgileri : 70 | 71 | **Ceza ID :** \`#${penal[currentPage-1].id}\` 72 | **Uyarılan Kullanıcı :** \`${user.user.tag} (${user.user.id})\` 73 | **Uyaran Yetkili :** \`${client.users.cache.get(penal[currentPage-1].staffID).tag} (${client.users.cache.get(penal[currentPage-1].staffID).id})\` 74 | **Uyarılma Tarihi :** \`${moment(penal[currentPage-1].date).format(`DD MMMM YYYY (HH:mm)`)}\` 75 | **Uyarılma Sebebi :** \`${!penal[currentPage-1].reason ? 'Belirtilmedi!' : penal[currentPage-1].reason}\` 76 | `)).catch(err => {}); 77 | 78 | }); 79 | 80 | go.on("collect", async reaction => { 81 | 82 | await reaction.users.remove(message.author.id).catch(err => {}); 83 | if (currentPage == penal.length) return; 84 | currentPage++; 85 | if (msg) msg.edit(Embed.setDescription(` 86 | **[\`${currentPage}\`]** ${user.toString()} kullanıcısının uyarı bilgileri : 87 | 88 | **Ceza ID :** \`#${penal[currentPage-1].id}\` 89 | **Uyarılan Kullanıcı :** \`${user.user.tag} (${user.user.id})\` 90 | **Uyaran Yetkili :** \`${client.users.cache.get(penal[currentPage-1].staffID).tag} (${client.users.cache.get(penal[currentPage-1].staffID).id})\` 91 | **Uyarılma Tarihi :** \`${moment(penal[currentPage-1].date).format(`DD MMMM YYYY (HH:mm)`)}\` 92 | **Uyarılma Sebebi :** \`${!penal[currentPage-1].reason ? 'Belirtilmedi!' : penal[currentPage-1].reason}\` 93 | `)).catch(err => {}); 94 | 95 | }); 96 | 97 | x.on("collect", async reaction => { 98 | 99 | await back.stop(); 100 | await go.stop(); 101 | await x.stop(); 102 | if (message) message.delete().catch(err => {}); 103 | if (msg) return msg.delete().catch(err => {}); 104 | 105 | }); 106 | 107 | back.on("end", async () => { 108 | 109 | await back.stop(); 110 | await go.stop(); 111 | await x.stop(); 112 | await msg.reactions.removeAll(); 113 | //if (message) message.delete().catch(err => {}); 114 | //if (msg) return msg.delete().catch(err => {}); 115 | 116 | }); 117 | 118 | }); 119 | 120 | }, 121 | }; -------------------------------------------------------------------------------- /src/commands/staff/çek.js: -------------------------------------------------------------------------------- 1 | const { Owners } = global.client.settings; 2 | const { unAuthorizedMessages, transporterSpears, botYt, logs } = global.client.guildSettings; 3 | const { voiceLog } = logs; 4 | const { mark, loading, success, changeState} = require('../../configs/emojis.json'); 5 | 6 | module.exports = { 7 | name: 'çek', 8 | aliases: [], 9 | category: 'Yetkili', 10 | usage: '[<@Üye/ID> / <#Kanal/ID>] ', 11 | guildOnly: true, 12 | cooldown: 3, 13 | 14 | /** 15 | * @param { Client } client 16 | * @param { Message } message 17 | * @param { Array } args 18 | * @param { MessageEmbed } Embed 19 | */ 20 | 21 | async execute(client, message, args, Embed) { 22 | 23 | if(!message.member.hasPermission('MOVE_MEMBERS') && !Owners.includes(message.author.id) && !message.member.roles.cache.has(botYt) && !transporterSpears.some(spear => message.member.roles.cache.has(spear))) { 24 | if(unAuthorizedMessages) return message.channel.error(message, `Maalesef, bu komutu kullana bilmek için yeterli yetkiye sahip değilsin!`, { timeout: 10000 }); 25 | else return; 26 | }; 27 | 28 | let user = message.mentions.members.first() || message.guild.members.cache.get(args[0]); 29 | let channel = message.mentions.channels.first() || message.guild.channels.cache.get(args[0]); 30 | 31 | if(!message.member.voice.channel) return message.channel.error(message, `Bir ses kanalında olmalısın!`, { timeout: 5000, reply: true, react: true }); 32 | if(!args[0]) return message.channel.error(message, `Bir üye ve ya ses kanalı belirtmelisin!`, { timeout: 5000, reply: true, react: true }); 33 | if(!user && !channel) return message.channel.error(message, `Geçerli bir üye ve ya ses kanalı belirtmelisin!`, { timeout: 5000, reply: true, react: true }); 34 | 35 | if(user) { 36 | 37 | if(user.id == message.author.id) return message.channel.error(message, `Bu işlemi kendine uygulayamazsın!`, { timeout: 5000, reply: true, react: true }); 38 | if(message.member.roles.highest.position <= user.roles.highest.position) return message.channel.error(message, `Kendinle aynı veya daha yüksek yetkide olan birine bu işlemi uygulayamazsın!`); 39 | if(!user.voice.channel) return message.channel.error(message, `Belirttiğin kullanıcı bir ses kanalında değil!`, { timeout: 5000, reply: true, react: true }); 40 | if(user.voice.channel == message.member.voice.channel) return message.channel.error(message, `Belittiğin üye ile zaten aynı ses kanalındasın!`, { timeout: 5000, reply: true, react: true }); 41 | 42 | if(voiceLog) { 43 | 44 | let vLog = message.guild.channels.cache.get(voiceLog); 45 | 46 | if(vLog && vLog.type == 'text') vLog.send(`${changeState ? changeState : `:arrow_up_down:`} \`${user.displayName}\` üyesi \`${message.member.displayName}\` tarafından ${user.voice.channel.toString()} adlı ses kanalından ${message.member.voice.channel.toString()} adlı ses kanalına **çekildi!**`); 47 | 48 | }; 49 | 50 | await user.voice.setChannel(message.member.voice.channel); 51 | message.channel.success(message, Embed.setDescription(`${user.toString()} isimli kullanıcı bulunduğun ( \`${message.member.voice.channel.name}\` ) ses kanalına **çekildi!**`), { react: true }); 52 | 53 | }; 54 | 55 | if(channel) { 56 | 57 | if(channel.type !== 'voice') return message.channel.error(message, `Belirttiğin kanal bir ses kanalı değil!`, { timeout: 5000, reply: true, react: true }); 58 | if(channel.members.size == 0) return message.channel.error(message, `Belirttiğin kanalda herhangi bir üye bulunmuyor!`, { timeout: 5000, reply: true, react: true }); 59 | if(member.voice.channel.id == channel.id) return message.channel.error(message, `Bulunduğun ses kanalıyla belirttiğin ses kanalı aynı!`, { timeout: 5000, reply: true, react: true }); 60 | if(channel.members.filter(member => !Owners.includes(member.user.id) && !member.hasPermission(8)).size == 0) return message.channel.error(message, `Belirttiğin kanalda çekile bilecek herhangi bir üye bulunmuyor!`, { timeout: 5000, reply: true, react: true }); 61 | if(channel.members.filter(member => member.roles.highest.position < message.member.roles.highest.position).size == 0) return message.channel.error(message, `Belirttiğin kanalda çekile bilecek herhangi bir üye bulunmuyor`, { timeout: 5000, reply: true, react: true }); 62 | 63 | let reason = args.slice(1).join(' '); 64 | let index = 0; 65 | if(mark) message.react(mark); 66 | message.channel.send(Embed.setDescription(`${channel.toString()} adlı ses kanalındaki **${channel.members.filter(member => !Owners.includes(member.user.id) && !member.hasPermission(8)).size}** üye ${!reason ? '' : `\`${reason}\` nedeniyle`} ${message.member.voice.channel.toString()} adlı ses kanalına **çekiliyor** ${loading ? loading : ``} `)).then(async msg => { 67 | 68 | await new Promise(async (resolve) => { 69 | 70 | channel.members.filter(member => !Owners.includes(member.user.id) && !member.hasPermission(8)).forEach(async member => { 71 | 72 | if(voiceLog) { 73 | 74 | let vLog = message.guild.channels.cache.get(voiceLog); 75 | 76 | if(vLog && vLog.type == 'text') vLog.send(`${changeState ? changeState : `:arrow_up_down:`} \`${member.displayName}\` üyesi \`${message.member.displayName}\` tarafından ${member.voice.channel.toString()} adlı ses kanalından ${message.member.voice.channel.toString()} adlı ses kanalına **çekildi!**`); 77 | 78 | }; 79 | 80 | index += 1; 81 | await client.wait(index * 300); 82 | await member.voice.setChannel(message.member.voice.channel.id); 83 | 84 | }); 85 | 86 | await client.wait(channel.members.filter(member => !Owners.includes(member.user.id) && !member.hasPermission(8)) * 300).then(resolve); 87 | 88 | }); 89 | 90 | msg.edit(Embed.setDescription(`${success ? success : ``} ${channel.toString()} adlı ses kanalındaki **${channel.members.filter(member => !Owners.includes(member.user.id) && !member.hasPermission(8)).size}** üye ${!reason ? '' : `\`${reason}\` nedeniyle`} ${message.member.voice.channel.toString()} adlı ses kanalına **çekildi!**`)) 91 | 92 | }); 93 | 94 | }; 95 | 96 | }, 97 | }; -------------------------------------------------------------------------------- /src/configs/settings.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Client Settings 3 | * @param { Client } client 4 | */ 5 | 6 | module.exports = (client) => { 7 | 8 | //General Settings 9 | client.settings = { 10 | 11 | Prefix: ".", 12 | Token: "", 13 | Owners: [], 14 | OtherBots: [], 15 | VoiceChannel: "", 16 | Activity: "LISTENING", 17 | Status: "idle", 18 | MongoURL: "", 19 | Footer: "SeonerVorteX", 20 | DisableCooldownsForAdmins: true, 21 | 22 | }; 23 | 24 | //Activity Messages 25 | client.statusMessages = [ 26 | 27 | "Only VorteX!", 28 | "Created By VorteX!", 29 | "discord.gg/MTNkXHnX3b" 30 | 31 | ]; 32 | 33 | //Emojis 34 | client.systemEmojis = [ 35 | 36 | ///System 37 | { emojiName: 'developer', emojiUrl: 'https://cdn.discordapp.com/emojis/853642013332865035.gif?v=1' }, 38 | { emojiName: 'loading', emojiUrl: 'https://cdn.discordapp.com/emojis/857935194203226118.gif?v=1' }, 39 | { emojiName: 'arrow', emojiUrl: 'https://cdn.discordapp.com/emojis/821298641863442442.gif?v=1' }, 40 | { emojiName: 'crown', emojiUrl: 'https://cdn.discordapp.com/emojis/876942324909871114.gif?v=1' }, 41 | { emojiName: 'crown2', emojiUrl: 'https://cdn.discordapp.com/emojis/876929331572662323.gif?v=1' }, 42 | { emojiName: 'mark', emojiUrl: 'https://cdn.discordapp.com/emojis/876153262796079115.gif?v=1' }, 43 | { emojiName: 'mark2', emojiUrl: 'https://cdn.discordapp.com/emojis/853641429146140684.png?v=1' }, 44 | { emojiName: 'cross', emojiUrl: 'https://cdn.discordapp.com/emojis/876153078863253514.gif?v=1' }, 45 | { emojiName: 'cross2', emojiUrl: 'https://cdn.discordapp.com/emojis/853641452227264522.png?v=1' }, 46 | { emojiName: 'success', emojiUrl: 'https://cdn.discordapp.com/emojis/793774156067373066.gif?v=1' }, 47 | 48 | ///Status 49 | { emojiName: 'online', emojiUrl: 'https://cdn.discordapp.com/emojis/686601950275698692.png?v=1' }, 50 | { emojiName: 'dnd', emojiUrl: 'https://cdn.discordapp.com/emojis/686601950355390545.png?v=1' }, 51 | { emojiName: 'idle', emojiUrl: 'https://cdn.discordapp.com/emojis/686601950069915667.png?v=1' }, 52 | { emojiName: 'offline', emojiUrl: 'https://cdn.discordapp.com/emojis/686601950686609420.png?v=1' }, 53 | { emojiName: 'web', emojiUrl: 'https://cdn.discordapp.com/emojis/825429354707288065.png?v=1' }, 54 | 55 | ///Penal 56 | { emojiName: 'banned', emojiUrl: 'https://cdn.discordapp.com/emojis/748618263071555645.gif?v=1' }, 57 | { emojiName: 'jailed', emojiUrl: 'https://cdn.discordapp.com/emojis/878303820181024788.png?v=1' }, 58 | { emojiName: 'chatMuted', emojiUrl: 'https://cdn.discordapp.com/emojis/878303318743609384.png?v=1' }, 59 | { emojiName: 'warned', emojiUrl: 'https://cdn.discordapp.com/emojis/826369282942042112.png?v=1' }, 60 | 61 | ///Voice 62 | { emojiName: 'joined', emojiUrl: 'https://cdn.discordapp.com/emojis/742688545977794560.gif?v=1' }, 63 | { emojiName: 'leaved', emojiUrl: 'https://cdn.discordapp.com/emojis/742688545168293968.gif?v=1' }, 64 | { emojiName: 'unMuted', emojiUrl: 'https://cdn.discordapp.com/emojis/871710450633564271.png?v=1' }, 65 | { emojiName: 'muted', emojiUrl: 'https://cdn.discordapp.com/emojis/871710451086524416.png?v=1' }, 66 | { emojiName: 'unDeafen', emojiUrl: 'https://cdn.discordapp.com/emojis/871710450243502091.png?v=1' }, 67 | { emojiName: 'deafen', emojiUrl: 'https://cdn.discordapp.com/emojis/871710450138619915.png?v=1' }, 68 | { emojiName: 'camera', emojiUrl: 'https://cdn.discordapp.com/emojis/839043294717542400.png?v=1' } 69 | 70 | ]; 71 | 72 | //Guild Settings 73 | client.guildSettings = { 74 | 75 | ///General 76 | guildID: "", 77 | guildTags: [], 78 | guildDiscriminator: "", 79 | guildTeams: [], 80 | meetRole: "", 81 | meetChannel: "", 82 | nameTag: "", 83 | dmMessages: true, 84 | unAuthorizedMessages: true, 85 | 86 | ///Staffs 87 | staffRoles: [], 88 | transporterSpears: [], 89 | registerSpears: [], 90 | staffGiver: "", 91 | botYt: "", 92 | 93 | ///Penals 94 | penals: { 95 | 96 | ///Ban 97 | ban: { 98 | staffs: [], 99 | penalPoint: 40, 100 | penalLimit: 5, 101 | log: "", 102 | banGifs: ['https://media1.tenor.com/images/ed33599ac8db8867ee23bae29b20b0ec/tenor.gif?itemid=14760307', 'https://media.giphy.com/media/fe4dDMD2cAU5RfEaCU/giphy.gif', 'https://media1.tenor.com/images/4732faf454006e370fa9ec6e53dbf040/tenor.gif?itemid=14678194'], 103 | unbanGifs: ['https://data.whicdn.com/images/192611812/original.gif'], 104 | }, 105 | 106 | ///Jail 107 | jail: { 108 | staffs: [], 109 | jailRoles: [], 110 | jailChannel: "", 111 | penalPoint: 30, 112 | penalLimit: 5, 113 | log: "", 114 | }, 115 | 116 | ///Chat Mute 117 | chatMute: { 118 | staffs: [], 119 | cmuteRoles: [], 120 | penalPoint: 20, 121 | penalLimit: 5, 122 | log: "", 123 | }, 124 | 125 | ///Voice Mute 126 | voiceMute: { 127 | staffs: [], 128 | vmuteRoles: [], 129 | penalPoint: 20, 130 | penalLimit: 5, 131 | log: "", 132 | }, 133 | 134 | ///Warn 135 | warn: { 136 | staffs: [], 137 | warnRoles: [{ 138 | warnCount: 1, 139 | warnRole: "", 140 | }, { 141 | warnCount: 2, 142 | warnRole: "", 143 | }, { 144 | warnCount: 3, 145 | warnRole: "", 146 | }], 147 | penalPoint: 10, 148 | log: "", 149 | }, 150 | 151 | }, 152 | 153 | ///Registration 154 | registration: { 155 | unregisterName: "", 156 | unregisterRoles: [], 157 | unregisterChannel: "", 158 | quarantineRole: "", 159 | familyRole: "", 160 | }, 161 | 162 | ///Forbidden Tag 163 | forbiddenTag: { 164 | forbidRoles: [], 165 | forbidChannel: "", 166 | forbidLog: "", 167 | }, 168 | 169 | ///Logs 170 | logs: { 171 | pointLog: "", 172 | voiceLog: "", 173 | messageLog: "", 174 | securityLog: "", 175 | }, 176 | 177 | }; 178 | 179 | }; -------------------------------------------------------------------------------- /src/commands/penal/mute.js: -------------------------------------------------------------------------------- 1 | const { Owners, Prefix } = global.client.settings; 2 | const { unAuthorizedMessages, botYt, dmMessages, penals, logs } = global.client.guildSettings; 3 | const { staffs, cmuteRoles, penalPoint, penalLimit, log } = penals.chatMute; 4 | const { chatMuted, unCMuted } = require('../../configs/emojis.json'); 5 | const Penals = require('../../schemas/penals.js'); 6 | const ms = require('ms') 7 | const moment = require('moment'); 8 | require('moment-duration-format'); 9 | moment.locale('tr'); 10 | 11 | module.exports = { 12 | name: 'mute', 13 | aliases: [], 14 | category: 'Ceza', 15 | usage: '<@Üye/ID> ', 16 | guildOnly: true, 17 | cooldown: 3, 18 | 19 | /** 20 | * @param { Client } client 21 | * @param { Message } message 22 | * @param { Array } args 23 | * @param { Embed } Embed 24 | */ 25 | 26 | async execute(client, message, args, Embed) { 27 | 28 | if(!Owners.includes(message.author.id) && !message.member.hasPermission(8) && !message.member.roles.cache.has(botYt) && !staffs.some(role => message.member.roles.cache.has(role))) { 29 | if(unAuthorizedMessages) return message.channel.error(message, `Maalesef, bu komutu kullana bilmek için yeterli yetkiye sahip değilsin!`, { timeout: 10000 }); 30 | else return; 31 | }; 32 | 33 | let user = message.mentions.members.first() || message.guild.members.cache.get(args[0]); 34 | let duration = args[1]; 35 | let reason = args.slice(2).join(' '); 36 | 37 | if(!args[0]) return message.channel.error(message, `Bir üye belirtmelisin!`, { timeout: 8000, reply: true, react: true }); 38 | if(!user) return message.channel.error(message, `Geçerli bir üye belirtmelisin!`, { timeout: 8000, reply: true, react: true }); 39 | if(!cmuteRoles || !cmuteRoles.length) return message.channel.error(message, `Chat-Mute rolleri ayarlanmamış, lütfen botun yapımcısıyla iletişime geçin!`, { timeout: 15000, react: true }); 40 | if(cmuteRoles.some(role => user.roles.cache.has(role))) return message.channel.error(message, `Belirttiğin üye **metin kanallarında** daha önce susturulmuş! Bilgi için : \`${Prefix}mutebilgi <@Üye/ID>\``, { timeout: 8000, react: true }); 41 | if(user.id == message.author.id) return message.channel.error(message, `Bu işlemi kendine uygulayamazsın!`, { timeout: 8000, reply: true, react: true }); 42 | if(user.roles.highest.position >= message.member.roles.highest.position) return message.channel.error(message, `Kendinle aynı veya daha yüksek yetkide olan birine bu işlemi uygulayamazsın!`, { timeout: 8000, reply: true, react: true }); 43 | if(!user.manageable) return message.channel.error(message, `Belirtilen üyeyi susturamıyorum!`, { timeout: 8000, react: true }); 44 | if(!duration) return message.channel.error(message, `Bir süre belirtmelisin!`, { timeout: 8000, reply: true, react: true }); 45 | if(!['s', 'sn', 'saniye', 'm', 'minute', 'dk', 'dakika', 'h', 'hour', 'st', 'saat', 'd', 'day', 'g', 'gün'].some(arg => duration.includes(arg))) return message.channel.error(message, `Sadece \`saniye(s, sn)\` , \`dakika(dk, m, minute)\` , \`saat(st, h, hour)\` , \`gün(g, d, day)\` cinsinden bir süre belirtmelisin! Örnek : \`${Prefix}mute @Üye/ID 15dk küfür\``, { timeout: 15000, reply: true, react: true }); 46 | if(isNaN(client.replaceDuration(duration)) || client.replaceDuration(duration) == 0 || client.replaceDuration(duration).includes('-')) return message.channel.error(message, `Geçerli bir süre miktarı belirtmelisin`, { timeout: 8000, reply: true, react: true }); 47 | 48 | let staffDatas = await Penals.find({ guildID: message.guild.id, type: 'CHAT-MUTE', staffID: message.author.id }); 49 | let dataSize = staffDatas.filter(staffData => staffData.date && (Date.now() - staffData.date) < 3600 * 1000); 50 | 51 | if(!Owners.includes(message.author.id) && !message.member.hasPermission(8) && message.member.roles.cache.has(botYt) && penalLimit > 0 && dataSize.length >= penalLimit) return message.channel.error(message, `Saatlik mute sınırına ulaştın!`, { timeout: 8000, react: true }); 52 | 53 | duration = await client.ms(duration); 54 | user.roles.add(cmuteRoles); 55 | let point = await client.addPenalPoint(message.guild.id, user.id, penalPoint); 56 | let penal = await client.newPenal(message.guild.id, user.id, "CHAT-MUTE", true, message.author.id, !reason ? 'Belirtilmedi!' : reason, true, Date.now(), Date.now() + ms(duration.duration)); 57 | 58 | message.channel.success(message, Embed.setDescription(`${chatMuted ? chatMuted : ``} \`${user.user.tag}\` isimli kullanıcı, ${message.author.toString()} tarafından, ${!reason ? '' : `\`${reason}\` sebebiyle,`} **${duration.durationMsg}** boyunca susturuldu! \`(Ceza ID : #${penal.id})\``), { react: true }); 59 | if(log) client.channels.cache.get(log).send(Embed.setColor('#FF0000').setDescription(` 60 | ${user.toString()} kullanıcısı **metin kanallarında** \`${duration.durationMsg}\` boyunca **susturuldu!** 61 | 62 | **Ceza ID :** \`#${penal.id}\` 63 | **Susturulan Kullanıcı :** \`${user.user.tag} (${user.user.id})\` 64 | **Susturan Yetkili :** \`${message.author.tag} (${message.author.id})\` 65 | **Susturulma Tarihi :** \`${moment(penal.date).format(`DD MMMM YYYY (HH:mm)`)}\` 66 | **Susturulmanın Bitiş Tarihi :** \`${moment(penal.finishDate).format(`DD MMMM YYYY (HH:mm)`)}\` 67 | **Susturulma Sebebi :** \`${!reason ? 'Belirtilmedi!' : reason}\` 68 | `)); 69 | 70 | if(dmMessages) user.send(`${chatMuted ? chatMuted : ``} \`${message.guild.name}\` sunucusunda **${message.author.tag}** tarafından **metin kanallarında** ${!reason ? '' : `\`${reason}\` sebebiyle,`} **${duration.durationMsg}** boyunca susturuldunuz! \`(Ceza ID : #${penal.id})\``).catch(() => {}); 71 | if(logs.pointLog) client.channels.cache.get(logs.pointLog).send(`${chatMuted ? chatMuted : ``} ${user.toString()}, aldığınız \`#${penal.id}\` ID'li **ChatMute** cezası ile toplam **${point.penalPoint}** ceza puanına ulaştınız!`); 72 | 73 | setTimeout(async () => { 74 | 75 | if(message.guild.members.cache.has(user.id) && cmuteRoles.some(role => user.roles.cache.has(role)) && user.manageable) user.roles.remove(cmuteRoles); 76 | 77 | penal = await Penals.findOne({ guildID: message.guild.id, userID: user.id, type: 'CHAT-MUTE', active: true }); 78 | 79 | if(!penal) return; 80 | 81 | penal.active = false; 82 | await penal.save(); 83 | 84 | if(log) client.channels.cache.get(log).send(Embed.setColor('#00FF00').setDescription(` 85 | ${user.toString()} kullanıcısının **metin kanallarında** olan susturulmasının süresi bitti! 86 | 87 | **Ceza ID :** \`#${penal.id}\` 88 | **Susturulan Kullanıcı :** \`${user.user.tag} (${user.user.id})\` 89 | **Susturan Yetkili :** \`${message.author.tag} (${message.author.id})\` 90 | **Susturulma Tarihi :** \`${moment(penal.date).format(`DD MMMM YYYY (HH:mm)`)}\` 91 | **Susturulmanın Bitiş Tarihi :** \`${moment(penal.finishDate).format(`DD MMMM YYYY (HH:mm)`)}\` 92 | **Susturulma Sebebi :** \`${!penal.reason ? 'Belirtilmedi!' : penal.reason}\` 93 | `)); 94 | 95 | if(dmMessages) user.send(`${unCMuted ? unCMuted : `:speech_balloon:`} \`${message.guild.name}\` sunucusunda, **${message.author.tag}** tarafından, ${!reason ? '' : `\`${reason}\` sebebiyle`} **metin kanallarında** aldığınız susturulma cezasının süresi bitti! \`(Ceza ID : #${penal.id})\``).catch(() => {}); 96 | 97 | }, ms(duration.duration)); 98 | 99 | }, 100 | }; -------------------------------------------------------------------------------- /src/commands/staff/taşı.js: -------------------------------------------------------------------------------- 1 | const { Owners, OtherBots } = global.client.settings; 2 | const { unAuthorizedMessages, transporterSpears, botYt, logs } = global.client.guildSettings; 3 | const { voiceLog } = logs; 4 | const { mark, loading, success, changeState } = require('../../configs/emojis.json'); 5 | 6 | module.exports = { 7 | name: 'taşı', 8 | aliases: [], 9 | category: 'Yetkili', 10 | usage: '[<@Üye/ID> / <#Kanal/ID>] <#Kanal/ID>', 11 | guildOnly: true, 12 | cooldown: 3, 13 | 14 | /** 15 | * @param { Client } client 16 | * @param { Message } message 17 | * @param { Array } args 18 | * @param { MessageEmbed } Embed 19 | */ 20 | 21 | async execute(client, message, args, Embed) { 22 | 23 | if(!message.member.hasPermission('MOVE_MEMBERS') && !Owners.includes(message.author.id) && !message.member.roles.cache.has(botYt) && !transporterSpears.some(spear => message.member.roles.cache.has(spear))) { 24 | if(unAuthorizedMessages) return message.channel.error(message, `Maalesef, bu komutu kullana bilmek için yeterli yetkiye sahip değilsin!`, { timeout: 10000 }); 25 | else return; 26 | }; 27 | 28 | let user = message.mentions.members.first() || message.guild.members.cache.get(args[0]); 29 | let channel = message.mentions.channels.first() || message.guild.channels.cache.get(args[0]); 30 | let channel2 = message.mentions.channels.array()[1] || message.guild.channels.cache.get(args[1]); 31 | let reason = args.slice(2).join(' '); 32 | 33 | if(!args[0]) return message.channel.error(message, `Bir üye ve ya ses kanalı belirtmelisin!`, { timeout: 5000, reply: true, react: true }); 34 | if(!user && !channel) return message.channel.error(message, `Geçerli bir üye ve ya ses kanalı belirtmelisin!`, { timeout: 5000, reply: true, react: true }); 35 | 36 | if(user) { 37 | 38 | if(user.id == message.author.id) return message.channel.error(message, `Bu işlemi kendine uygulayamazsın!`, { timeout: 5000, reply: true, react: true }); 39 | if(Owners.includes(user.user.id) || user.roles.highest.position >= message.member.roles.highest.position || user.user.id == client.user.id || (user.user.bot && OtherBots.includes(user.user.id))) return message.channel.error(message, `Kendinle aynı veya daha yüksek yetkide olan birine bu işlemi uygulayamazsın!`); 40 | if(!user.voice.channel) return message.channel.error(message, `Belirttiğin kullanıcı bir ses kanalında değil!`, { timeout: 5000, reply: true, react: true }); 41 | if(!channel2) return message.channel.error(message, `Belirttiğin üyenin taşınacağı ses kanalını belirtmelisin!`, { timeout: 5000, reply: true, react: true }); 42 | if(user.voice.channel.id == channel2.id) return message.channel.error(message, `Belittiğin üye zaten belirtilen ses kanalında!`, { timeout: 5000, reply: true, react: true }); 43 | 44 | if(voiceLog) { 45 | 46 | let vLog = message.guild.channels.cache.get(voiceLog); 47 | 48 | if(vLog && vLog.type == 'text') vLog.send(`${changeState ? changeState : `:arrow_up_down:`} \`${user.displayName}\` üyesi \`${message.member.displayName}\` tarafından ${user.voice.channel.toString()} adlı ses kanalından ${channel2.toString()} adlı ses kanalına **taşındı!**`); 49 | 50 | }; 51 | 52 | message.channel.success(message, Embed.setDescription(`${user.toString()} isimli kullanıcı ${user.voice.channel.toString()} adlı ses kanalından ${!reason ? '' : `\`${reason}\` nedeniyle`} ${channel2.toString()} adlı ses kanalına **taşındı!**`), { react: true }); 53 | await user.voice.setChannel(channel2.id); 54 | 55 | }; 56 | 57 | if(channel) { 58 | 59 | if(channel.type !== 'voice') return message.channel.error(message, `Belirttiğin kanal bir ses kanalı değil!`, { timeout: 5000, reply: true, react: true }); 60 | if(channel.members.size == 0) return message.channel.error(message, `Belirttiğin kanalda herhangi bir üye bulunmuyor!`, { timeout: 5000, reply: true, react: true }); 61 | if(channel.members.filter(member => !Owners.includes(member.user.id) && !member.hasPermission(8) && member.user.id == client.user.id).size == 0 && channel.members.filter(member => member.user.bot && !OtherBots.includes(member.user.id)).size == 0) return message.channel.error(message, `Belirttiğin kanalda taşına bilecek herhangi bir üye bulunmuyor!`, { timeout: 5000, reply: true, react: true }); 62 | if(channel.members.filter(member => member.roles.highest.position < message.member.roles.highest.position).size == 0) return message.channel.error(message, `Belirttiğin kanalda taşına bilecek herhangi bir üye bulunmuyor`, { timeout: 5000, reply: true, react: true }); 63 | if(!channel2) return message.channel.error(message, `Belirttiğin kanaldaki üyelerin taşınacağı ses kanalını belirtmelisin!`, { timeout: 5000, reply: true, react: true }); 64 | if(channel2.type !== 'voice') return message.channel.error(message, `Belirttiğin kanal bir ses kanalı değil!`, { timeout: 5000, reply: true, react: true }); 65 | if(channel.id == channel2.id) return message.channel.error(message, `Belittiğin kanaldaki üyeler zaten belirtilen ses kanalında!`, { timeout: 5000, reply: true, react: true }); 66 | 67 | let totalMembers = channel.members.filter(member => !Owners.includes(member.user.id) && ((member.hasPermission(8) && member.user.bot && !OtherBots.includes(member.user.id)) && member.user.id !== client.user.id || !member.hasPermission(8))).size; 68 | let index = 0; 69 | if(mark) message.react(mark); 70 | message.channel.send(Embed.setDescription(`${channel.toString()} adlı ses kanalındaki **${totalMembers}** üye ${!reason ? '' : `\`${reason}\` nedeniyle`} ${channel2.toString()} adlı ses kanalına **taşınıyor** ${loading ? loading : ``} `)).then(async msg => { 71 | 72 | await new Promise(async (resolve) => { 73 | 74 | channel.members.filter(member => !Owners.includes(member.user.id) && ((member.hasPermission(8) && member.user.bot && !OtherBots.includes(member.user.id)) && member.user.id !== client.user.id || !member.hasPermission(8))).forEach(async member => { 75 | 76 | if(voiceLog) { 77 | 78 | let vLog = message.guild.channels.cache.get(voiceLog); 79 | 80 | if(vLog && vLog.type == 'text') vLog.send(`${changeState ? changeState : `:arrow_up_down:`} \`${member.displayName}\` üyesi \`${message.member.displayName}\` tarafından ${member.voice.channel.toString()} adlı ses kanalından ${channel2.toString()} adlı ses kanalına **taşındı!**`); 81 | 82 | }; 83 | 84 | index += 1; 85 | await client.wait(index * 500); 86 | await member.voice.setChannel(channel2.id); 87 | 88 | }); 89 | 90 | await client.wait(channel.members.filter(member => !Owners.includes(member.user.id) && ((member.hasPermission(8) && member.user.bot && !OtherBots.includes(member.user.id)) && member.user.id !== client.user.id || !member.hasPermission(8))).size * 500).then(resolve) 91 | 92 | }); 93 | 94 | msg.edit(Embed.setDescription(`${success ? success : ``} ${channel.toString()} adlı ses kanalındaki **${totalMembers}** üye ${!reason ? '' : `\`${reason}\` nedeniyle`} ${channel2.toString()} adlı ses kanalına **taşındı!**`), { react: true }); 95 | 96 | }); 97 | 98 | }; 99 | 100 | }, 101 | }; -------------------------------------------------------------------------------- /src/commands/penal/vmute.js: -------------------------------------------------------------------------------- 1 | const { Owners, Prefix } = global.client.settings; 2 | const { unAuthorizedMessages, botYt, dmMessages, penals, logs } = global.client.guildSettings; 3 | const { staffs, vmuteRoles, penalPoint, penalLimit, log } = penals.voiceMute; 4 | const { muted, unMuted } = require('../../configs/emojis.json'); 5 | const Penals = require('../../schemas/penals.js'); 6 | const ms = require('ms') 7 | const moment = require('moment'); 8 | require('moment-duration-format'); 9 | moment.locale('tr'); 10 | 11 | module.exports = { 12 | name: 'vmute', 13 | aliases: [], 14 | category: 'Ceza', 15 | usage: '<@Üye/ID> ', 16 | guildOnly: true, 17 | cooldown: 3, 18 | 19 | /** 20 | * 21 | * @param { Client } client 22 | * @param { Message } message 23 | * @param { Array } args 24 | * @param { MessageEmbed } Embed 25 | */ 26 | 27 | async execute(client, message, args, Embed) { 28 | 29 | if(!Owners.includes(message.author.id) && !message.member.hasPermission('MUTE_MEMBERS') && !message.member.roles.cache.has(botYt) && !staffs.some(role => message.member.roles.cache.has(role))) { 30 | if(unAuthorizedMessages) return message.channel.error(message, `Maalesef, bu komutu kullana bilmek için yeterli yetkiye sahip değilsin!`, { timeout: 10000 }); 31 | else return; 32 | }; 33 | 34 | let user = message.mentions.members.first() || message.guild.members.cache.get(args[0]); 35 | let duration = args[1]; 36 | let reason = args.slice(2).join(' '); 37 | 38 | if(!args[0]) return message.channel.error(message, `Bir üye belirtmelisin!`, { timeout: 8000, reply: true, react: true }); 39 | if(!user) return message.channel.error(message, `Geçerli bir üye belirtmelisin!`, { timeout: 8000, reply: true, react: true }); 40 | if(!vmuteRoles || !vmuteRoles.length) return message.channel.error(message, `Voice-Mute rolleri ayarlanmamış, lütfen botun yapımcısıyla iletişime geçin!`, { timeout: 15000, react: true }); 41 | if(vmuteRoles.some(role => user.roles.cache.has(role))) return message.channel.error(message, `Belirttiğin üye **ses kanallarında** daha önce susturulmuş! Bilgi için : \`${Prefix}mutebilgi <@Üye/ID>\``, { timeout: 8000, react: true }); 42 | if(user.id == message.author.id) return message.channel.error(message, `Bu işlemi kendine uygulayamazsın!`, { timeout: 8000, reply: true, react: true }); 43 | if(user.roles.highest.position >= message.member.roles.highest.position) return message.channel.error(message, `Kendinle aynı veya daha yüksek yetkide olan birine bu işlemi uygulayamazsın!`, { timeout: 8000, reply: true, react: true }); 44 | if(!user.manageable) return message.channel.error(message, `Belirtilen üyeyi susturamıyorum!`, { timeout: 8000, react: true }); 45 | if(!duration) return message.channel.error(message, `Bir süre belirtmelisin!`, { timeout: 8000, reply: true, react: true }); 46 | if(!['s', 'sn', 'saniye', 'm', 'minute', 'dk', 'dakika', 'h', 'hour', 'st', 'saat', 'd', 'day', 'g', 'gün'].some(arg => duration.includes(arg))) return message.channel.error(message, `Sadece \`saniye(s, sn)\` , \`dakika(dk, m, minute)\` , \`saat(st, h, hour)\` , \`gün(g, d, day)\` cinsinden bir süre belirtmelisin! Örnek : \`${Prefix}mute @Üye/ID 15dk küfür\``, { timeout: 15000, reply: true, react: true }); 47 | if(isNaN(client.replaceDuration(duration)) || client.replaceDuration(duration) == 0 || client.replaceDuration(duration).includes('-')) return message.channel.error(message, `Geçerli bir süre miktarı belirtmelisin`, { timeout: 8000, reply: true, react: true }); 48 | 49 | let staffDatas = await Penals.find({ guildID: message.guild.id, type: 'VOICE-MUTE', staffID: message.author.id }); 50 | let dataSize = staffDatas.filter(staffData => staffData.date && (Date.now() - staffData.date) < 3600 * 1000); 51 | 52 | if(!Owners.includes(message.author.id) && !message.member.hasPermission(8) && message.member.roles.cache.has(botYt) && penalLimit > 0 && dataSize.length >= penalLimit) return message.channel.error(message, `Saatlik vmute sınırına ulaştın!`, { timeout: 8000, react: true }); 53 | 54 | duration = await client.ms(duration); 55 | user.roles.add(vmuteRoles); 56 | if(user.voice.channel && !user.voice.serverMute) user.voice.setMute(true); 57 | let point = await client.addPenalPoint(message.guild.id, user.id, penalPoint); 58 | let penal = await client.newPenal(message.guild.id, user.id, "VOICE-MUTE", true, message.author.id, !reason ? 'Belirtilmedi!' : reason, undefined, Date.now(), Date.now() + ms(duration.duration)); 59 | 60 | message.channel.success(message, Embed.setDescription(`${muted ? muted : ``} \`${user.user.tag}\` isimli kullanıcı ${message.author.toString()} tarafından **ses kanallarında** ${!reason ? '' : `\`${reason}\` sebebiyle,`} **${duration.durationMsg}** boyunca susturuldu! \`(Ceza ID : #${penal.id})\``), { react: true }); 61 | if(log) client.channels.cache.get(log).send(Embed.setColor('#FF0000').setDescription(` 62 | ${user.toString()} kullanıcısı **ses kanallarında** \`${duration.durationMsg}\` boyunca **susturuldu!** 63 | 64 | **Ceza ID :** \`#${penal.id}\` 65 | **Susturulan Kullanıcı :** \`${user.user.tag} (${user.user.id})\` 66 | **Susturan Yetkili :** \`${message.author.tag} (${message.author.id})\` 67 | **Susturulma Tarihi :** \`${moment(penal.date).format(`DD MMMM YYYY (HH:mm)`)}\` 68 | **Susturulmanın Bitiş Tarihi :** \`${moment(penal.finishDate).format(`DD MMMM YYYY (HH:mm)`)}\` 69 | **Susturulma Sebebi :** \`${!reason ? 'Belirtilmedi!' : reason}\` 70 | `)); 71 | 72 | if(dmMessages) user.send(`${muted ? muted : ``} \`${message.guild.name}\` sunucusunda **${message.author.tag}** tarafından **ses kanallarında** ${!reason ? '' : `\`${reason}\` sebebiyle,`} **${duration.durationMsg}** boyunca susturuldunuz! \`(Ceza ID : #${penal.id})\``).catch(() => {}); 73 | if(logs.pointLog) client.channels.cache.get(logs.pointLog).send(`${muted ? muted : ``} ${user.toString()}, aldığınız \`#${penal.id}\` ID'li **VoiceMute** cezası ile toplam **${point.penalPoint}** ceza puanına ulaştınız!`); 74 | 75 | setTimeout(async () => { 76 | 77 | if(message.guild.members.cache.has(user.id) && vmuteRoles.some(role => user.roles.cache.has(role)) && user.manageable) user.roles.remove(vmuteRoles); 78 | if(user.voice.channel && user.voice.serverMute) user.voice.setMute(false); 79 | 80 | penal = await Penals.findOne({ guildID: message.guild.id, userID: user.id, type: 'VOICE-MUTE', active: true }); 81 | 82 | if(!penal) return; 83 | 84 | penal.active = false; 85 | penal.removed = true; 86 | await penal.save(); 87 | 88 | if(log) client.channels.cache.get(log).send(Embed.setColor('#00FF00').setDescription(` 89 | ${user.toString()} kullanıcısının **ses kanallarında** olan susturulmasının süresi bitti! 90 | 91 | **Ceza ID :** \`#${penal.id}\` 92 | **Susturulan Kullanıcı :** \`${user.user.tag} (${user.user.id})\` 93 | **Susturan Yetkili :** \`${message.author.tag} (${message.author.id})\` 94 | **Susturulma Tarihi :** \`${moment(penal.date).format(`DD MMMM YYYY (HH:mm)`)}\` 95 | **Susturulmanın Bitiş Tarihi :** \`${moment(penal.finishDate).format(`DD MMMM YYYY (HH:mm)`)}\` 96 | **Susturulma Sebebi :** \`${!penal.reason ? 'Belirtilmedi!' : penal.reason}\` 97 | `)); 98 | 99 | if(dmMessages) user.send(`${unMuted ? unMuted : ``} \`${message.guild.name}\` sunucusunda, **${message.author.tag}** tarafından, ${!reason ? '' : `\`${reason}\` sebebiyle`} **ses kanallarında** aldığınız susturulma cezasının süresi bitti! \`(Ceza ID : #${penal.id})\``).catch(() => {}); 100 | 101 | }, ms(duration.duration)); 102 | 103 | }, 104 | }; -------------------------------------------------------------------------------- /src/commands/penal/tempJail.js: -------------------------------------------------------------------------------- 1 | const { Owners, Prefix } = global.client.settings; 2 | const { unregisterRoles } = global.client.guildSettings.registration; 3 | const { unAuthorizedMessages, botYt, dmMessages, penals, logs } = global.client.guildSettings; 4 | const { staffs, jailRoles, penalPoint, penalLimit, log } = penals.jail; 5 | const { jailed } = require('../../configs/emojis.json'); 6 | const Penals = require('../../schemas/penals.js'); 7 | const ms = require('ms'); 8 | const moment = require('moment'); 9 | require('moment-duration-format'); 10 | moment.locale('tr'); 11 | 12 | module.exports = { 13 | name: 'tempjail', 14 | aliases: [], 15 | category: 'Ceza', 16 | usage: '<@Üye/ID> ', 17 | guildOnly: true, 18 | cooldown: 3, 19 | 20 | /** 21 | * @param { Client } client 22 | * @param { Message } message 23 | * @param { Array } args 24 | * @param { MessageEmbed } Embed 25 | */ 26 | 27 | async execute(client, message, args, Embed) { 28 | 29 | if(!Owners.includes(message.author.id) && !message.member.hasPermission(8) && !message.member.roles.cache.has(botYt) && !staffs.some(role => message.member.roles.cache.has(role))) { 30 | if(unAuthorizedMessages) return message.channel.error(message, `Maalesef, bu komutu kullana bilmek için yeterli yetkiye sahip değilsin!`, { timeout: 10000 }); 31 | else return; 32 | }; 33 | 34 | let user = message.mentions.members.first() || message.guild.members.cache.get(args[0]); 35 | let duration = args[1]; 36 | let reason = args.slice(2).join(' '); 37 | 38 | if(!args[0]) return message.channel.error(message, `Bir üye belirtmelisin!`, { timeout: 8000, reply: true, react: true }); 39 | if(!user) return message.channel.error(message, `Geçerli bir üye belirtmelisin!`, { timeout: 8000, reply: true, react: true }); 40 | if(!jailRoles || !jailRoles.length) return message.channel.error(message, `Jail rolleri ayarlanmamış, lütfen botun yapımcısıyla iletişime geçin!`, { timeout: 15000, react: true }); 41 | if(jailRoles.some(role => user.roles.cache.has(role))) return message.channel.error(message, `Belirttiğin üye daha önce jaillenmiş! Bilgi için : \`${Prefix}jailbilgi <@Üye/ID>\``, { timeout: 8000, react: true }); 42 | if(user.id == message.author.id) return message.channel.error(message, `Bu işlemi kendine uygulayamazsın!`, { timeout: 8000, reply: true, react: true }); 43 | if(user.roles.highest.position >= message.member.roles.highest.position) return message.channel.error(message, `Kendinle aynı veya daha yüksek yetkide olan birine bu işlemi uygulayamazsın!`, { timeout: 8000, reply: true, react: true }); 44 | if(!user.manageable) return message.channel.error(message, `Belirtilen üyeyi jailleyemiyorum!`, { timeout: 8000, react: true }); 45 | if(!duration) return message.channel.error(message, `Bir süre belirtmelisin!`, { timeout: 8000, reply: true, react: true }); 46 | if(!['s', 'sn', 'saniye', 'm', 'minute', 'dk', 'dakika', 'h', 'hour', 'st', 'saat', 'd', 'day', 'g', 'gün'].some(arg => duration.includes(arg))) return message.channel.error(message, `Sadece \`saniye(s, sn)\` , \`dakika(dk, m, minute)\` , \`saat(st, h, hour)\` , \`gün(g, d, day)\` cinsinden bir süre belirtmelisin! Örnek : \`${Prefix}tempjail @Üye/ID 15dk ırkçılık\``, { timeout: 15000, reply: true, react: true }); 47 | if(isNaN(client.replaceDuration(duration)) || client.replaceDuration(duration) == 0 || client.replaceDuration(duration).includes('-')) return message.channel.error(message, `Geçerli bir süre miktarı belirtmelisin`, { timeout: 8000, reply: true, react: true }); 48 | 49 | let staffDatas = await Penals.find({ guildID: message.guild.id, type: 'JAIL', staffID: message.author.id }); 50 | let staffDatas2 = await Penals.find({ guildID: message.guild.id, type: 'TEMP-JAIL', staffID: message.author.id }); 51 | let dataSize = staffDatas.filter(staffData => staffData.date && (Date.now() - staffData.date) < 3600 * 1000); 52 | let dataSize2 = staffDatas2.filter(staffData => staffData.date && (Date.now() - staffData.date) < 3600 * 1000); 53 | 54 | if(!Owners.includes(message.author.id) && !message.member.hasPermission(8) && message.member.roles.cache.has(botYt) && penalLimit > 0 && (dataSize.length + dataSize2.length) >= penalLimit) return message.channel.error(message, `Saatlik jail sınırına ulaştın!`, { timeout: 8000, react: true }); 55 | 56 | duration = await client.ms(duration); 57 | user.roles.set(jailRoles).catch(() => {}); 58 | if(user.voice.channel) user.voice.kick().catch(() => {}); 59 | let point = await client.addPenalPoint(message.guild.id, user.id, penalPoint); 60 | let penal = await client.newPenal(message.guild.id, user.id, "TEMP-JAIL", true, message.author.id, !reason ? 'Belirtilmedi!' : reason, undefined, Date.now(), Date.now() + ms(duration.duration)); 61 | 62 | message.channel.success(message, Embed.setDescription(`${jailed ? jailed : ``} \`${user.user.tag}\` isimli kullanıcı, ${message.author.toString()} tarafından, ${!reason ? '' : `\`${reason}\` sebebiyle,`} **${duration.durationMsg}** boyunca jaillendi! \`(Ceza ID : #${penal.id})\``), { react: true }); 63 | if(log) client.channels.cache.get(log).send(Embed.setColor('#FF0000').setDescription(` 64 | ${user.toString()} kullanıcısı \`${duration.durationMsg}\` boyunca **jaillendi!** 65 | 66 | **Ceza ID :** \`#${penal.id}\` 67 | **Jaillenen Kullanıcı :** \`${user.user.tag} (${user.user.id})\` 68 | **Jailleyen Yetkili :** \`${message.author.tag} (${message.author.id})\` 69 | **Jaillenme Tarihi :** \`${moment(penal.date).format(`DD MMMM YYYY (HH:mm)`)}\` 70 | **Jailin Bitiş Tarihi :** \`${moment(penal.finishDate).format(`DD MMMM YYYY (HH:mm)`)}\` 71 | **Jaillenme Sebebi :** \`${!reason ? 'Belirtilmedi!' : reason}\` 72 | `)); 73 | 74 | if(dmMessages) user.send(`${jailed ? jailed : ``} \`${message.guild.name}\` sunucusunda, **${message.author.tag}** tarafından, ${!reason ? '' : `\`${reason}\` sebebiyle,`} **${duration.durationMsg}** boyunca jaillendiniz! \`(Ceza ID : #${penal.id})\``).catch(() => {}); 75 | if(logs.pointLog) client.channels.cache.get(logs.pointLog).send(`${jailed ? jailed : ``} ${user.toString()}, aldığınız \`#${penal.id}\` ID'li **TempJail** cezası ile toplam **${point.penalPoint}** ceza puanına ulaştınız!`); 76 | 77 | setTimeout(async () => { 78 | 79 | if(message.guild.members.cache.has(user.id) && jailRoles.some(role => user.roles.cache.has(role)) && user.manageable) user.roles.set(unregisterRoles); 80 | 81 | penal = await Penals.findOne({ guildID: message.guild.id, userID: user.id, type: 'TEMP-JAIL', active: true }); 82 | 83 | if(!penal) return; 84 | 85 | penal.active = false; 86 | await penal.save(); 87 | 88 | if(log) message.guild.channels.cache.get(log).send(Embed.setColor('#00FF00').setDescription(` 89 | ${user.toString()} kullanıcısının **temp-jail** cezasının süresi bitti! 90 | 91 | **Ceza ID :** \`#${penal.id}\` 92 | **Jaillenen Kullanıcı :** \`${user.user.tag} (${user.user.id})\` 93 | **Jailleyen Yetkili :** \`${message.author.tag} (${message.author.id})\` 94 | **Jaillenme Tarihi :** \`${moment(penal.date).format(`DD MMMM YYYY (HH:mm)`)}\` 95 | **Jailin Bitiş Tarihi :** \`${moment(penal.finishDate).format(`DD MMMM YYYY (HH:mm)`)}\` 96 | **Jaillenme Sebebi :** \`${!penal.reason ? 'Belirtilmedi!' : penal.reason}\` 97 | `)); 98 | 99 | if(dmMessages) user.send(`${jailed ? jailed : ``} \`${message.guild.name}\` sunucusunda, **${message.author.tag}** tarafından, ${!reason ? '' : `\`${reason}\` sebebiyle`} aldığınız **temp-jail** cezasının süresi bitti! \`(Ceza ID : #${penal.id})\``).catch(() => {}); 100 | 101 | }, ms(duration.duration)); 102 | 103 | }, 104 | }; -------------------------------------------------------------------------------- /src/events/voiceStateUpdate.js: -------------------------------------------------------------------------------- 1 | const { vmuteRoles } = global.client.guildSettings.penals.voiceMute; 2 | const { voiceLog } = global.client.guildSettings.logs; 3 | const { unMuted, muted, unDeafen, deafen, joined, leaved, camera, stream, changeState } = require('../configs/emojis.json'); 4 | const voiceJoinedAt = require('../schemas/voiceJoinedAt.js'); 5 | const penals = require('../schemas/penals.js'); 6 | 7 | /** 8 | * @param { VoiceChannel } oldState 9 | * @param { VoiceChannel } newState 10 | */ 11 | 12 | module.exports = async (oldState, newState) => { 13 | 14 | if (!oldState.channelID && newState.channelID) await voiceJoinedAt.findOneAndUpdate({ guildID: newState.guild.id, userID: newState.id }, { $set: { date: Date.now() } }, { upsert: true }); 15 | else if (oldState.channelID && !newState.channelID) await voiceJoinedAt.findOneAndDelete({ guildID: oldState.guild.id, userID: oldState.id }); 16 | 17 | let penal = await penals.findOne({ guildID: newState.guild.id, userID: newState.member.id, type: 'VOICE-MUTE', active: true }); 18 | let penal2 = await penals.findOne({ guildID: newState.guild.id, userID: newState.member.id, type: 'VOICE-MUTE', removed: false, temp: true, finishDate: { $lte: Date.now() }}) 19 | 20 | if(penal) { 21 | 22 | if(!newState.serverMute) newState.setMute(true); 23 | if(!vmuteRoles.some(role => newState.member.roles.cache.has(role))) newState.member.roles.add(vmuteRoles); 24 | 25 | }; 26 | 27 | if(penal2) { 28 | 29 | if(newState.serverMute) newState.setMute(false); 30 | if(vmuteRoles.some(role => newState.member.roles.cache.has(role))) newState.member.roles.remove(vmuteRoles); 31 | penal2.finishDate = Date.now(); 32 | penal2.active = false; 33 | penal2.removed = true; 34 | await penal2.save(); 35 | 36 | }; 37 | 38 | if(voiceLog) { 39 | 40 | let vLog = client.channels.cache.get(voiceLog); 41 | 42 | if(!vLog) return; 43 | if(!oldState.channel && newState.channel) return vLog.send(`${joined ? joined : ``} \`${newState.member.displayName}\` üyesi ${newState.channel.toString()} adlı **ses kanalına girdi!**`); 44 | 45 | if(oldState.channel && !newState.channel) { 46 | 47 | let audit = await newState.guild.fetchAuditLogs(); 48 | let entry = audit.entries.first(); 49 | if(entry && entry.action == 'MEMBER_DISCONNECT' && entry.executor.id !== client.user.id) return vLog.send(`${leaved ? leaved : ``} \`${newState.member.displayName}\` üyesinin ${oldState.channel.toString()} adlı ses kanalındaki bağlantısı \`${newState.guild.members.cache.get(entry.executor.id).displayName}\` tarafından **kesildi!**`); 50 | if(entry && entry.action == 'MEMBER_DISCONNECT' && entry.executor.id == client.user.id) return; 51 | return vLog.send(`${leaved ? leaved : ``} \`${newState.member.displayName}\` üyesi ${oldState.channel.toString()} adlı **ses kanalından ayrıldı!**`); 52 | 53 | }; 54 | 55 | if(oldState.channel.id && newState.channel.id && oldState.channel.id !== newState.channel.id) { 56 | 57 | let audit = await newState.guild.fetchAuditLogs(); 58 | let entry = audit.entries.first(); 59 | if(entry && entry.action == 'MEMBER_MOVE' && entry.executor.id !== newState.id && entry.executor.id !== client.user.id) return vLog.send(`${changeState ? changeState : `:arrow_up_down:`} \`${newState.member.displayName}\` üyesi \`${newState.guild.members.cache.get(entry.executor.id).displayName}\` tarafından ${oldState.channel.toString()} adlı ses kanalından ${newState.channel.toString()} adlı ses kanalına **taşındı!**`); 60 | 61 | if(!entry || entry.executor.id !== client.user.id) return vLog.send(`${changeState ? changeState : `:arrow_up_down:`} \`${newState.member.displayName}\` üyesi ${oldState.channel.toString()} adlı ses kanalından ${newState.channel.toString()} adlı ses kanalına **geçiş yaptı!**`); 62 | 63 | }; 64 | 65 | if(oldState.channel.id && oldState.selfDeaf && !newState.selfDeaf) return vLog.send(`${unDeafen ? unDeafen : ``} \`${newState.member.displayName}\` üyesi ${newState.channel.toString()} adlı ses kanalında **kulaklığını açtı!**`); 66 | if(oldState.channel.id && !oldState.selfDeaf && newState.selfDeaf) return vLog.send(`${deafen ? deafen : ``} \`${newState.member.displayName}\` üyesi ${newState.channel.toString()} adlı ses kanalında **kulaklığını kapattı!**`); 67 | if(oldState.channel.id && oldState.selfMute && !newState.selfMute) return vLog.send(`${unMuted ? unMuted : ``} \`${newState.member.displayName}\` üyesi ${newState.channel.toString()} adlı ses kanalında **mikrofonunu açtı!**`); 68 | if(oldState.channel.id && !oldState.selfMute && newState.selfMute) return vLog.send(`${muted ? muted : ``} \`${newState.member.displayName}\` üyesi ${newState.channel.toString()} adlı ses kanalında **mikrofonunu kapattı!**`); 69 | 70 | if(oldState.channel.id && oldState.serverMute && !newState.serverMute) { 71 | 72 | let audit = await newState.guild.fetchAuditLogs({ type: 'MEMBER_UPDATE' }); 73 | let executor = audit.entries.first().executor; 74 | 75 | if(executor.id == global.client.user.id) return; 76 | else return vLog.send(`${unMuted ? unMuted : ``} \`${newState.member.displayName}\` üyesinin ${newState.channel.toString()} adlı ses kanalındaki susturulması \`${newState.guild.members.cache.get(executor.id).displayName}\` tarafından **kaldırıldı!**`); 77 | 78 | }; 79 | 80 | if(oldState.channel.id && !oldState.serverMute && newState.serverMute) { 81 | 82 | let audit = await newState.guild.fetchAuditLogs({ type: 'MEMBER_UPDATE' }); 83 | let executor = audit.entries.first().executor; 84 | 85 | if(executor.id == global.client.user.id) return; 86 | else return vLog.send(`${muted ? muted : ``} \`${newState.member.displayName}\` üyesi \`${newState.guild.members.cache.get(executor.id).displayName}\` tarafından ${newState.channel.toString()} adlı ses kanalında **susturuldu!**`); 87 | 88 | }; 89 | 90 | if(oldState.channel.id && oldState.serverDeaf && !newState.serverDeaf) { 91 | 92 | let audit = await newState.guild.fetchAuditLogs({ type: 'MEMBER_UPDATE' }); 93 | let executor = audit.entries.first().executor; 94 | return vLog.send(`${unDeafen ? unDeafen : ``} \`${newState.member.displayName}\` üyesinin ${newState.channel.toString()} adlı ses kanalındaki sağırlığı \`${newState.guild.members.cache.get(executor.id).displayName}\` tarafından **kaldırıldı!**`); 95 | 96 | }; 97 | 98 | if(oldState.channel.id && !oldState.serverDeaf && newState.serverDeaf) { 99 | 100 | let audit = await newState.guild.fetchAuditLogs({ type: 'MEMBER_UPDATE' }); 101 | let executor = audit.entries.first().executor; 102 | return vLog.send(`${deafen ? deafen : ``} \`${newState.member.displayName}\` üyesi \`${newState.guild.members.cache.get(executor.id).displayName}\` tarafından ${newState.channel.toString()} adlı ses kanalında **sağırlaştırıldı!**`); 103 | 104 | }; 105 | 106 | if(oldState.channel.id && !oldState.streaming && newState.channel.id && newState.streaming) return vLog.send(`${stream ? stream : `:desktop:`} \`${newState.member.displayName}\` üyesi ${newState.channel.toString()} adlı ses kanalında **yayın açtı!**`); 107 | if(oldState.channel.id && oldState.streaming && newState.channel.id && !newState.streaming) return vLog.send(`${stream ? stream : `:desktop:`} \`${newState.member.displayName}\` üyesi ${newState.channel.toString()} adlı ses kanalında **yayını kapattı!**`); 108 | if(oldState.channel.id && !oldState.selfVideo && newState.channel.id && newState.selfVideo) return vLog.send(`${camera ? camera : ``} \`${newState.member.displayName}\` üyesi ${newState.channel.toString()} adlı ses kanalında **kamerasını açtı!**`); 109 | if(oldState.channel.id && oldState.selfVideo && newState.channel.id && !newState.selfVideo) return vLog.send(`${camera ? camera : ``} \`${newState.member.displayName}\` üyesi ${newState.channel.toString()} adlı ses kanalında **kamerasını kapattı!**`); 110 | 111 | }; 112 | 113 | }; 114 | 115 | module.exports.conf = { 116 | name: 'Voice State Update', 117 | event: 'voiceStateUpdate' 118 | } --------------------------------------------------------------------------------