nix-tools
Version:
NixJS
750 lines (670 loc) • 39.8 kB
JavaScript
const Discord = require('discord.js');
const fs = require('fs');
const chalk = require('chalk');
const path = require('path');
const db = require('./veritabanı.js')
const mz = require('./müzik.js');
const translate = require('node-google-translate-skidz');
const mesajlar = {
hatalar: {
token: chalk.redBright("Token bilginiz yanlış görünüyor. Lütfen doğru ve geçerli bir token bilgisi yazınız."),
ayarlar: chalk.redBright("Lütfen Discord botunuzun {x} yazınız.")
}
};
class AdvancedBot extends Discord.Client {
constructor(ayarlar) {
super(ayarlar);
this.kayıt = {};
this.kayıt.komutlar = new Discord.Collection();
this.kayıt.alternatifler = new Discord.Collection();
this.kayıt.kategoriler = new Discord.Collection();
this.kayıt.kategoriArray = '';
if (!ayarlar.token || ayarlar.token === "") return console.log(mesajlar.hatalar.ayarlar.replace('{x}', 'token bilgisini'));
if (!ayarlar.prefix || ayarlar.prefix === "") return console.log(mesajlar.hatalar.ayarlar.replace('{x}', 'prefix\'ini'));
if (!ayarlar.sahip || ayarlar.sahip === "" || Array.isArray(ayarlar.sahip) === true && ayarlar.sahip[0] === "" || !ayarlar.sahip[0]) return console.log(mesajlar.hatalar.ayarlar.replace('{x}', 'sahibinin/sahiplerinin ID adresini'));
// if (!ayarlar.komutDosya || ayarlar.komutDosya === "") return console.log(mesajlar.hatalar.ayarlar.replace('{x}', 'komutlarının olacağı klasörü ( "klasör adı" biçiminde olacak şekilde )'));
if (ayarlar.varsayılanKomutlar !== undefined && ayarlar.varsayılanKomutlar !== 'hepsi' && Array.isArray(ayarlar.varsayılanKomutlar) === false) return console.log(chalk.redBright("Kapatılacak varsayılan komutları \"Array\" biçiminde yazınız. Hepsi kapatılacak ise `varsayılanKomutar: 'hepsi'` yazınız."))
this.ayarlar = {};
this.ayarlar.token = ayarlar.token;
this.token = ayarlar.token;
this.ayarlar.prefix = ayarlar.prefix;
this.ayarlar.sahip = ayarlar.sahip;
// this.ayarlar.komutDosya = ayarlar.komutDosya;
if (ayarlar.everyoneKapat) {
ayarlar.disableEveryone = ayarlar.everyoneKapat;
this.ayarlar.everyoneKapat = ayarlar.everyoneKapat;
}
this.varsayılanKomutlarFiltre = ayarlar.varsayılanKomutlar ? ayarlar.varsayılanKomutlar : null;
this.veritabanı = ayarlar.veritabanı ? new db(ayarlar.veritabanı.dosya) : null;
this.event = super.on;
this.eventTest = super.emit;
//Türkçeleştirilmiş eventler - başlangıç.
this.on("ready", () => {
this.emit("hazır");
});
this.on("message", msg => {
this.emit("mesaj", msg);
msg.gönder = async function gönder(mesaj, ayarlar) {
let kanal = "";
let m = "";
if (ayarlar && ayarlar.kanal) {
kanal = msg.guild.channels.get(ayarlar.kanal) || msg.guild.channels.find(c=>c.name===ayarlar.kanal);
if (!kanal) throw Error(`${msg.guild.name} adlı sunucuda ${ayarlar.kanal} adında/ID'inde bir kanal bulunmuyor.`);
} else {
kanal = msg.channel;
}
if (ayarlar && ayarlar.embed) {
let embed = new Discord.RichEmbed()
.setColor(ayarlar.embed.renk ? ayarlar.embed.renk : (ayarlar.embed.color ? ayarlar.embed.color : ""))
if (ayarlar.embed.başlık || ayarlar.embed.author) {
embed.setAuthor(ayarlar.embed.başlık || ayarlar.embed.author)
}
embed.setDescription(mesaj)
if (ayarlar.embed.alanlar || ayarlar.embed.fields) {
if (ayarlar.embed.alanlar) {
ayarlar.embed.alanlar.forEach(a => {
embed.addField(a.başlık || a.author, a.açıklama || a.value || a.description)
})
} else if (ayarlar.embed.fields) {
ayarlar.embed.fields.forEach(a => {
embed.addField(a.başlık || a.author, a.açıklama || a.value || a.description)
})
}
}
if (ayarlar.embed.altbilgi || ayarlar.embed.footer) {
embed.setFooter(ayarlar.embed.altbilgi || ayarlar.embed.footer)
}
if (ayarlar.embed.resim || ayarlar.embed.image) {
embed.setImage(ayarlar.embed.resim || ayarlar.embed.image)
}
if (ayarlar.embed.küçükResim || ayarlar.embed.thumbnail) {
embed.setThumbnail(ayarlar.embed.küçükResim || ayarlar.embed.thumbnail)
}
if (ayarlar.embed.zamanDamgası || ayarlar.embed.timeStamp) {
embed.setTimestamp()
}
m = embed;
} else {
m = mesaj;
}
let gönderilenMesaj = await kanal.send(m)
return gönderilenMesaj
};
});
this.on("guildCreate", guild => {
this.emit("sunucuyaEklendi", guild);
});
this.on("guildDelete", guild => {
this.emit("sunucudanAtıldı", guild);
});
this.on("guildMemberAdd", member => {
this.emit("üyeKatıldı", member);
});
this.on("guildMemberRemove", member => {
this.emit("üyeAyrıldı", member);
});
this.on("guildBanAdd", (guild, user) => {
this.emit("üyeYasaklandı", guild, user);
});
this.on("guildBanRemove", (guild, user) => {
this.emit("üyeYasağıKaldırıldı", guild, user);
});
this.on("messageCreate", message => {
this.emit("mesajGönderildi", message);
});
this.on("messageUpdate", (oldMsg, newMsg) => {
this.emit("mesajDüzenlendi", oldMsg, newMsg);
});
this.on("messageDelete", message => {
this.emit("mesajSilindi", message);
});
this.on("channelCreate", channel => {
this.emit("kanalOluşturuldu", channel);
});
this.on("channelDelete", channel => {
this.emit("kanalSilindi", channel);
});
this.on("channelUpdate", channel => {
this.emit("kanalDüzenlendi", channel);
});
this.on("messageReactionAdd", (reaction, user) => {
this.emit("tepkiEklendi", reaction, user);
});
this.on("messageReactionRemove", (reaction, user) => {
this.emit("tepkiKaldırıldı", reaction, user);
});
//Türkçeleştirilmiş eventler - bitiş.
this.on("mesaj", async msg => {
//object Promise vermemesi için işsizliğimin eseri "başlangıç".
this.veritabanı.ayarla = await this.veritabanı.ayarla;
this.veritabanı.veri = await this.veritabanı.veri;
this.veritabanı.ekle = await this.veritabanı.ekle;
this.veritabanı.çıkar = await this.veritabanı.çıkar;
this.veritabanı.arttır = await this.veritabanı.arttır;
this.veritabanı.azalt = await this.veritabanı.azalt;
//object Promise vermemesi için işsizliğimin eseri "son".
this.müzik = new mz(this, msg);
var prefixx = this.ayarlar.prefix
if (this.veritabanı !== null || this.veritabanı !== undefined) {
if (msg.guild) {
var prefixx = this.veritabanı.veri(`${msg.guild.id}.prefix`) || this.ayarlar.prefix;
}
}
const prefixMention = new RegExp(`^<@!?${this.user.id}> `);
const prefix = msg.content.match(prefixMention) ? msg.content.match(prefixMention)[0] : prefixx;
if(!msg.content.startsWith(prefix)) return;
let arg = msg.content.slice(prefix.length).trim().split(/ +/g);
var command = arg.shift().toLowerCase();
let cmd = this.kayıt.komutlar.get(command) || this.kayıt.komutlar.get(this.kayıt.alternatifler.get(command));
if(!cmd) return;
if (cmd.yetki) {
if (typeof cmd.yetki === "number") {
console.log(chalk.redBright(""));
if (cmd.yetki === 1) {
if (!msg.member.hasPermission("MANAGE_MESSAGES")) {
msg.reply("Üzgünüm! Bu komutu kullanabilmek için `Mesajları Yönet` iznine sahip olmalısın.")
return
}
}
if (cmd.yetki === 2) {
if (!msg.member.hasPermission("KICK_MEMBERS")) {
msg.reply("Üzgünüm! Bu komutu kullanabilmek için `Üyeleri At` iznine sahip olmalısın.")
return
}
}
if (cmd.yetki === 3) {
if (!msg.member.hasPermission("BAN_MEMBERS")) {
msg.reply("Üzgünüm! Bu komutu kullanabilmek için `Üyeleri Yasakla` iznine sahip olmalısın.")
return
}
}
if (cmd.yetki === 4) {
if (!msg.member.hasPermission("ADMINISTRATOR")) {
msg.reply("Üzgünüm! Bu komutu kullanabilmek için `Yönetici` iznine sahip olmalısın.")
return
}
}
if (cmd.yetki === 5) {
if (this.ayarlar.sahip.includes(msg.author.id) === false) {
msg.reply("Üzgünüm! Bu komutu kullanabilmek için `Botun Sahibi` olmalısın.")
return
}
}
};
if (typeof cmd.yetki !== "number") {
if (cmd.yetki === "BOT_OWNER") {
if (this.ayarlar.sahip.includes(msg.author.id) === false) {
msg.reply("Üzgünüm! Bu komutu kullanabilmek için `Bot Sahibi/Geliştiricisi` olmalısın.")
return
}
}
if (cmd.yetki !== "BOT_OWNER") {
var gerekli = await translate({text: cmd.yetki.split("_").join(" "), source: 'en', target: 'tr'})
if (!msg.member.hasPermission(cmd.yetki)) {
msg.reply("Üzgünüm! Bu komutu kullanabilmek için `"+gerekli.translation+"` iznine sahip olmalısın.")
return
}
}
if (this.veritabanı.veri(`karaliste_${msg.author.id}`) == 'acik') {
msg.reply("Üzgünüm! Bu komutu kullanabilmek için karalisteden çıkmanız gerekmektedir.")
return
}
};
};
let content = '';
let args = [];
if (cmd.args && cmd.args !== null || cmd.args !== undefined) {
let cevaps = [];
var c = msg.content.slice(prefix.length).trim().split(/ +/g)[1];
var cxc = msg.content.slice(prefix.length).trim().split(/ +/g);
var val = '';
var xxx = '';
if (c !== undefined || c) {
for (var i = 0; i < cmd.args.length; i++) {
if (cmd.args[i].varsayılan) {
if (c) {
if (cmd.args[i].tip === 'yazi') {
if (cmd.args.length === 1) {
var c = cxc.slice(1).join(' ');
}
var c = cxc[i+1];
}
if (cmd.args[i].tip === 'sayi') {
var c = cxc[i+1];
if (isNaN(c)) return yanlışVeriYeniArgs(this, msg, cmd, 'sayı')
}
if (cmd.args[i].tip === 'kullanici') {
var cc = msg.guild.members.find(m=>m.user.username===cxc[i+1]) || msg.guild.members.get(cxc[i+1]) || msg.mentions.members.first();
if (cmd.args.length === 1) {
var cc = msg.guild.members.find(m=>m.user.username===cxc.slice(1).join(' ')) || msg.guild.members.get(cxc.slice(1).join(' ')) || msg.mentions.members.first();
}
if (msg.guild.members.find(m => m === cc) === null || msg.guild.members.find(m => m === cc) === undefined) return yanlışVeriYeniArgs(this, msg, cmd, 'kullanıcı')
var c = this.users.get(cc.id)
}
if (cmd.args[i].tip === 'kanal') {
if (cmd.args.length === 1) {
var c = msg.guild.channels.find(c=>c.name===cxc.slice(1).join(' ')) || msg.guild.channels.get(cxc.slice(1).join(' ')) || msg.mentions.channels.first();
}
var c = msg.guild.channels.find(c=>c.name===cxc[i+1]) || msg.guild.channels.get(cxc[i+1]) || msg.mentions.channels.first();
if (msg.guild.channels.find(ch => ch === c) === null || msg.guild.channels.find(ch => ch === c) === undefined) return yanlışVeriYeniArgs(this, msg, cmd, 'kanal')
}
if (cmd.args[i].tip === 'rol') {
if (cmd.args.length === 1) {
var c = msg.guild.roles.find(r=>r.name===cxc.slice(1).join(' ')) || msg.guild.roles.get(cxc.slice(1).join(' ')) || msg.mentions.roles.first();
}
var c = msg.guild.roles.find(r=>r.name===cxc[i+1]) || msg.guild.roles.get(cxc[i+1]) || msg.mentions.roles.first();
if (msg.guild.roles.find(r => r === c) === null || msg.guild.roles.find(r => r === c) === undefined) return yanlışVeriYeniArgs(this, msg, cmd, 'rol')
}
if (cmd.args[i].tip === 'kategori') {
if (cmd.args.length === 1) {
var c = cxc.slice(1).join(' ');
}
var c = cxc[i+1];
if (this.kayıt.kategoriler.has(c) === false) return yanlışVeriYeniArgs(this, msg, cmd, 'kategori')
}
if (cmd.args[i].tip === 'komut') {
if (cmd.args.length === 1) {
var c = cxc.slice(1).join(' ');
}
var c = cxc[i+1];
if (this.kayıt.komutlar.has(c) === false && this.kayıt.alternatifler.has(c) === false) return yanlışVeriYeniArgs(this, msg, cmd, 'komut')
}
}
args[cmd.args[i].anahtar] = c || cmd.args[i].varsayılan;
args['soru-'+Math.floor(i+1)] = cmd.args[i].soru;
cmd.baslat(this, msg, args)
return
};
if (cmd.args[i].tip === 'yazi') {
var c = cxc[i+1];
if (cmd.args.length === 1) {
var c = cxc.slice(1).join(' ');
}
}
if (cmd.args[i].tip === 'sayi') {
var c = cxc[i+1];
if (isNaN(c)) return yanlışVeriYeniArgs(this, msg, cmd, 'sayı')
}
if (cmd.args[i].tip === 'kullanici') {
var cc = msg.guild.members.find(m=>m.user.username===cxc[i+1]) || msg.guild.members.get(cxc[i+1]) || msg.mentions.members.first();
if (cmd.args.length === 1) {
var cc = msg.guild.members.find(m=>m.user.username===cxc.slice(1).join(' ')) || msg.guild.members.get(cxc.slice(1).join(' ')) || msg.mentions.members.first();
}
if (msg.guild.members.find(m => m === cc) === null || msg.guild.members.find(m => m === cc) === undefined) return yanlışVeriYeniArgs(this, msg, cmd, 'kullanıcı')
var c = this.users.get(cc.id)
}
if (cmd.args[i].tip === 'kanal') {
if (cmd.args.length === 1) {
var c = msg.guild.channels.find(c=>c.name===cxc.slice(1).join(' ')) || msg.guild.channels.get(cxc.slice(1).join(' ')) || msg.mentions.channels.first();
}
var c = msg.guild.channels.find(c=>c.name===cxc[i+1]) || msg.guild.channels.get(cxc[i+1]) || msg.mentions.channels.first();
if (msg.guild.channels.find(ch => ch === c) === null || msg.guild.channels.find(ch => ch === c) === undefined) return yanlışVeriYeniArgs(this, msg, cmd, 'kanal')
}
if (cmd.args[i].tip === 'rol') {
if (cmd.args.length === 1) {
var c = msg.guild.roles.find(r=>r.name===cxc.slice(1).join(' ')) || msg.guild.roles.get(cxc.slice(1).join(' ')) || msg.mentions.roles.first();
}
var c = msg.guild.roles.find(r=>r.name===cxc[i+1]) || msg.guild.roles.get(cxc[i+1]) || msg.mentions.roles.first();
if (msg.guild.roles.find(r => r === c) === null || msg.guild.roles.find(r => r === c) === undefined) return yanlışVeriYeniArgs(this, msg, cmd, 'rol')
}
if (cmd.args[i].tip === 'kategori') {
if (cmd.args.length === 1) {
var c = cxc.slice(1).join(' ');
}
var c = cxc[i+1];
if (this.kayıt.kategoriler.has(c) === false) return yanlışVeriYeniArgs(this, msg, cmd, 'kategori')
}
if (cmd.args[i].tip === 'komut') {
if (cmd.args.length === 1) {
var c = cxc.slice(1).join(' ');
}
var c = cxc[i+1];
if (this.kayıt.komutlar.has(c) === false && this.kayıt.alternatifler.has(c) === false) return yanlışVeriYeniArgs(this, msg, cmd, 'komut')
}
if (cxc[i+1] === undefined) {
msg.channel.send(new Discord.RichEmbed().setColor("DARKBLUE").setAuthor(`Komut İşlemi - ${msg.author.username}`, msg.author.avatarURL).setDescription(cmd.args[i].soru).setFooter("Komut işlemini iptal etmek için \"iptal\" yazınız. \nKomut işlemi otomatik olarak \"30\" saniye sonra iptal edilecektir."))
try {
var collected = await msg.channel.awaitMessages(m => m.author.id === msg.author.id && m.author.id !== this.user.id && !m.author.bot, {
max: 1,
time: 30000,
errors: ['time']
});
if (collected.first()) {
if (collected.first().content.toLowerCase() === 'iptal') {
msg.reply("Komut işlemi iptal edildi.")
return
}
if (cmd.args[i].tip === 'yazi') {
var xxx = collected.first().content;
}
if (cmd.args[i].tip === 'sayi') {
var xxx = collected.first().content;
if (isNaN(xxx)) return yanlışVeriYeniArgs(this, msg, cmd, 'sayı')
}
if (cmd.args[i].tip === 'kullanici') {
var xx = msg.guild.members.find(m=>m.user.username===collected.first().content) || msg.guild.members.get(collected.first().content) || msg.guild.members.get(collected.first().content.replace("<@", "").replace(">", ""));
if (msg.guild.members.find(m => m === xx) === null) return yanlışVeriYeniArgs(this, msg, cmd, 'kullanıcı')
var xxx = this.users.get(xx.id)
}
if (cmd.args[i].tip === 'kanal') {
var xxx = msg.guild.channels.find(c=>c.name===collected.first().content) || msg.guild.channels.get(collected.first().content) || msg.guild.channels.get(collected.first().content.replace("<#", "").replace(">", ""));
if (msg.guild.channels.find(c => c === xxx) === null || msg.guild.channels.find(c => c === xxx) === undefined) return yanlışVeriYeniArgs(this, msg, cmd, 'kanal')
}
if (cmd.args[i].tip === 'rol') {
var xxx = msg.guild.roles.find(r=>r.name===collected.first().content) || msg.guild.roles.get(collected.first().content) || msg.guild.roles.get(collected.first().content.replace("<@", "").replace(">", ""));;
if (msg.guild.roles.find(r => r === xxx) === null || msg.guild.roles.find(r => r === xxx) === undefined) return yanlışVeriYeniArgs(this, msg, cmd, 'rol')
}
if (cmd.args[i].tip === 'kategori') {
var xxx = collected.first().content;
if (this.kayıt.kategoriler.has(xxx) === false) return yanlışVeriYeniArgs(this, msg, cmd, 'kategori')
}
if (cmd.args[i].tip === 'komut') {
var xxx = collected.first().content;
if (this.kayıt.komutlar.has(xxx) === false && this.kayıt.alternatifler.has(xxx) === false) return yanlışVeriYeniArgs(this, msg, cmd, 'komut')
}
var val = xxx;
}
} catch(err) {
return msg.reply('Üzgünüm! Komut işlemi süresi doldu ve komut işlemi otomatik olarak iptal edildi!')
}
content = val;
args[cmd.args[i].anahtar] = content;
args['soru-'+Math.floor(i+1)] = cmd.args[i].soru;
};
if (cxc[i+1] !== undefined) {
args[cmd.args[i].anahtar] = c;
args['soru-'+Math.floor(i+1)] = cmd.args[i].soru;
};
}
cmd.baslat(this, msg, args)
return
};
if (c === undefined || !c) {
for (var i = 0; i < cmd.args.length; i++) {
if (cmd.args[i].varsayılan) {
if (cmd.args[i].tip === 'yazi') {
if (cmd.args.length === 1) {
var c = cxc.slice(1).join(' ');
}
var c = cxc[i+1];
}
if (c) {
if (cmd.args[i].tip === 'sayi') {
var c = cxc[i+1];
if (isNaN(c)) return yanlışVeriYeniArgs(this, msg, cmd, 'sayı')
}
if (cmd.args[i].tip === 'kullanici') {
var cc = msg.guild.members.find(m=>m.user.username===cxc[i+1]) || msg.guild.members.get(cxc[i+1]) || msg.mentions.members.first();
if (cmd.args.length === 1) {
var cc = msg.guild.members.find(m=>m.user.username===cxc.slice(1).join(' ')) || msg.guild.members.get(cxc.slice(1).join(' ')) || msg.mentions.members.first();
}
if (msg.guild.members.find(m => m === cc) === null || msg.guild.members.find(m => m === cc) === undefined) return yanlışVeriYeniArgs(this, msg, cmd, 'kullanıcı')
var c = this.users.get(cc.id)
}
if (cmd.args[i].tip === 'kanal') {
if (cmd.args.length === 1) {
var c = msg.guild.channels.find(c=>c.name===cxc.slice(1).join(' ')) || msg.guild.channels.get(cxc.slice(1).join(' ')) || msg.mentions.channels.first();
}
var c = msg.guild.channels.find(c=>c.name===cxc[i+1]) || msg.guild.channels.get(cxc[i+1]) || msg.mentions.channels.first();
if (msg.guild.channels.find(ch => ch === c) === null || msg.guild.channels.find(ch => ch === c) === undefined) return yanlışVeriYeniArgs(this, msg, cmd, 'kanal')
}
if (cmd.args[i].tip === 'rol') {
if (cmd.args.length === 1) {
var c = msg.guild.roles.find(r=>r.name===cxc.slice(1).join(' ')) || msg.guild.roles.get(cxc.slice(1).join(' ')) || msg.mentions.roles.first();
}
var c = msg.guild.roles.find(r=>r.name===cxc[i+1]) || msg.guild.roles.get(cxc[i+1]) || msg.mentions.roles.first();
if (msg.guild.roles.find(r => r === c) === null || msg.guild.roles.find(r => r === c) === undefined) return yanlışVeriYeniArgs(this, msg, cmd, 'rol')
}
if (cmd.args[i].tip === 'kategori') {
if (cmd.args.length === 1) {
var c = cxc.slice(1).join(' ');
}
var c = cxc[i+1];
if (this.kayıt.kategoriler.has(c) === false) return yanlışVeriYeniArgs(this, msg, cmd, 'kategori')
}
if (cmd.args[i].tip === 'komut') {
if (cmd.args.length === 1) {
var c = cxc.slice(1).join(' ');
}
var c = cxc[i+1];
if (this.kayıt.komutlar.has(c) === false && this.kayıt.alternatifler.has(c) === false) return yanlışVeriYeniArgs(this, msg, cmd, 'komut')
}
}
args[cmd.args[i].anahtar] = c || cmd.args[i].varsayılan;
args['soru-'+Math.floor(i+1)] = cmd.args[i].soru;
cmd.baslat(this, msg, args)
return
};
msg.channel.send(new Discord.RichEmbed().setColor("DARKBLUE").setAuthor(`Komut İşlemi - ${msg.author.username}`, msg.author.avatarURL).setDescription(cmd.args[i].soru).setFooter("Komut işlemini iptal etmek için \"iptal\" yazınız. \nKomut işlemi otomatik olarak \"30\" saniye sonra iptal edilecektir."))
try {
var collected = await msg.channel.awaitMessages(m => m.author.id === msg.author.id && m.author.id !== this.user.id && !m.author.bot, {
max: 1,
time: 30000,
errors: ['time']
});
if (collected.first()) {
if (collected.first().content.toLowerCase() === 'iptal') {
msg.reply("Komut işlemi iptal edildi.")
return
}
if (cmd.args[i].tip === 'yazi') {
var xxx = collected.first().content;
}
if (cmd.args[i].tip === 'sayi') {
var xxx = collected.first().content;
if (isNaN(xxx)) return yanlışVeriYeniArgs(this, msg, cmd, 'sayı')
}
if (cmd.args[i].tip === 'kullanici') {
var xx = msg.guild.members.find(m=>m.user.username===collected.first().content) || msg.guild.members.get(collected.first().content) || msg.guild.members.get(collected.first().content.replace("<@", "").replace(">", ""));
if (msg.guild.members.find(m => m === xx) === null) return yanlışVeriYeniArgs(this, msg, cmd, 'kullanıcı')
var xxx = this.users.get(xx.id)
}
if (cmd.args[i].tip === 'kanal') {
var xxx = msg.guild.channels.find(c=>c.name===collected.first().content) || msg.guild.channels.get(collected.first().content) || msg.guild.channels.get(collected.first().content.replace("<#", "").replace(">", ""));
if (msg.guild.channels.find(c => c === xxx) === null || msg.guild.channels.find(c => c === xxx) === undefined) return yanlışVeriYeniArgs(this, msg, cmd, 'kanal')
}
if (cmd.args[i].tip === 'rol') {
var xxx = msg.guild.roles.find(r=>r.name===collected.first().content) || msg.guild.roles.get(collected.first().content) || msg.guild.roles.get(collected.first().content.replace("<@", "").replace(">", ""));;
if (msg.guild.roles.find(r => r === xxx) === null || msg.guild.roles.find(r => r === xxx) === undefined) return yanlışVeriYeniArgs(this, msg, cmd, 'rol')
}
if (cmd.args[i].tip === 'kategori') {
var xxx = collected.first().content;
if (this.kayıt.kategoriler.has(xxx) === false) return yanlışVeriYeniArgs(this, msg, cmd, 'kategori')
}
if (cmd.args[i].tip === 'komut') {
var xxx = collected.first().content;
if (this.kayıt.komutlar.has(xxx) === false && this.kayıt.alternatifler.has(xxx) === false) return yanlışVeriYeniArgs(this, msg, cmd, 'komut')
}
var val = xxx;
}
} catch(err) {
return msg.reply('Üzgünüm! Komut işlemi süresi doldu ve komut işlemi otomatik olarak iptal edildi!')
}
content = val;
cevaps.push(content)
args[cmd.args[i].anahtar] = cevaps[i];
args['soru-'+Math.floor(i+1)] = cmd.args[i].soru;
};
cmd.baslat(this, msg, args)
return
}
return
};
cmd.baslat(this, msg, args)
});
async function yanlışVeriYeniArgs(bot, msg, cmd, arg, content = '', args = [], cevaps = [], val = '', xxx = '') {
for (var i = 0; i < cmd.args.length; i++) {
msg.channel.send(new Discord.RichEmbed().setColor("#FF0000").setDescription(`Yazılan argüman bir ${arg} olmalı! Lütfen tekrar deneyiniz.`).setFooter("Komut işlemini iptal etmek için \"iptal\" yazınız. \nKomut işlemi otomatik olarak \"30\" saniye sonra iptal edilecektir."))
try {
var collected = await msg.channel.awaitMessages(m => m.author.id === msg.author.id && m.author.id !== bot.user.id && !m.author.bot, {
max: 1,
time: 30000,
errors: ['time']
});
if (collected.first()) {
if (collected.first().content.toLowerCase() === 'iptal') {
msg.reply("Komut işlemi iptal edildi.")
return
}
if (cmd.args[i].tip === 'yazi') {
var xxx = collected.first().content;
}
if (cmd.args[i].tip === 'sayi') {
var xxx = collected.first().content;
if (isNaN(xxx)) return msg.channel.send(new Discord.RichEmbed().setColor("#FF0000").setDescription(`Bir kez daha yanlış bir argümen yazdığınız için bilerek yaptığınızdan şüphe duyarak komut işlemini iptal ettim! Komutu tekrar kullanmanız gerekecek.`))
}
if (cmd.args[i].tip === 'kullanici') {
var xx = msg.guild.members.find(m=>m.user.username===collected.first().content) || msg.guild.members.get(collected.first().content) || msg.guild.members.get(collected.first().content.replace("<@", "").replace(">", ""));
if (msg.guild.members.find(m => m === xx) === null) return msg.channel.send(new Discord.RichEmbed().setColor("#FF0000").setDescription(`Bir kez daha yanlış bir argümen yazdığınız için bilerek yaptığınızdan şüphe duyarak komut işlemini iptal ettim! Komutu tekrar kullanmanız gerekecek.`))
var xxx = bot.users.get(xx.id)
}
if (cmd.args[i].tip === 'kanal') {
var xxx = msg.guild.channels.find(c=>c.name===collected.first().content) || msg.guild.channels.get(collected.first().content) || msg.guild.channels.get(collected.first().content.replace("<#", "").replace(">", ""));
if (msg.guild.channels.find(c => c === xxx) === null || msg.guild.channels.find(c => c === xxx) === undefined) return msg.channel.send(new Discord.RichEmbed().setColor("#FF0000").setDescription(`Bir kez daha yanlış bir argümen yazdığınız için bilerek yaptığınızdan şüphe duyarak komut işlemini iptal ettim! Komutu tekrar kullanmanız gerekecek.`))
}
if (cmd.args[i].tip === 'rol') {
var xxx = msg.guild.roles.find(r=>r.name===collected.first().content) || msg.guild.roles.get(collected.first().content) || msg.guild.roles.get(collected.first().content.replace("<@", "").replace(">", ""));;
if (msg.guild.roles.find(r => r === xxx) === null || msg.guild.roles.find(r => r === xxx) === undefined) return msg.channel.send(new Discord.RichEmbed().setColor("#FF0000").setDescription(`Bir kez daha yanlış bir argümen yazdığınız için bilerek yaptığınızdan şüphe duyarak komut işlemini iptal ettim! Komutu tekrar kullanmanız gerekecek.`))
}
if (cmd.args[i].tip === 'kategori') {
var xxx = collected.first().content;
if (bot.kayıt.kategoriler.has(xxx) === false) return msg.channel.send(new Discord.RichEmbed().setColor("#FF0000").setDescription(`Bir kez daha yanlış bir argümen yazdığınız için bilerek yaptığınızdan şüphe duyarak komut işlemini iptal ettim! Komutu tekrar kullanmanız gerekecek.`))
}
if (cmd.args[i].tip === 'komut') {
var xxx = collected.first().content;
if (bot.kayıt.komutlar.has(xxx) === false && bot.kayıt.alternatifler.has(xxx) === false) return msg.channel.send(new Discord.RichEmbed().setColor("#FF0000").setDescription(`Bir kez daha yanlış bir argümen yazdığınız için bilerek yaptığınızdan şüphe duyarak komut işlemini iptal ettim! Komutu tekrar kullanmanız gerekecek.`))
}
var val = xxx;
}
} catch(err) {
return msg.reply('Üzgünüm! Komut işlemi süresi doldu ve komut işlemi otomatik olarak iptal edildi!')
}
content = val;
cevaps.push(content)
args[cmd.args[i].anahtar] = cevaps[i];
args['soru-'+Math.floor(i+1)] = cmd.args[i].soru;
}
cmd.baslat(bot, msg, args)
};
this.on("hazır", () => {
console.log(`${chalk.cyan("Bot")} ${chalk.blue(`${this.user.username}`)} ${chalk.yellow("(")}${chalk.blue(`${this.user.tag}`)}${chalk.yellow(")")} ${chalk.cyan("adıyla giriş yaptı")}${chalk.redBright("!")}`)
});
};
giris() {
this.komutYükle()
if (!this.token || this.token === "") return
super.login(this.token).catch(err => {
if (err.message === 'Incorrect login details were provided.') {
return console.log(mesajlar.hatalar.token)
}
});
};
kategoriYükle(veri) {
if (Array.isArray(veri) === false) throw new TypeError('Lütfen kategoriler verisini Array biçiminde yazınız. Örneğin; `client.kategoriYükle([\n["test", "Test Komutları"]\n])`')
this.kayıt.kategoriArray = veri
return veri
};
komutYükle() {
this.kayıt.kategoriArray.forEach((kk) => {
var k = kk[0]
var k2 = kk[1]
this.kayıt.kategoriler.set(k, k2)
fs.readdir(`komutlar/${k}/`, (err, files) => {
if(!files || files.length == 0) {
return
}
let jsfiles = files.filter(f => f.split(".").pop() === "js")
if(jsfiles.length <= 0) {
return
} else {
if (err) {
return
}
console.log(`${chalk.grey(`${k2} kategorisinde`)} ${chalk.red(`${jsfiles.length}`)} ${chalk.yellow("tane komut yüklenecek")}${chalk.grey(".")}`)
if (this.veritabanı.varMı("kapatılmışKomutlar") === true) {
jsfiles.filter(f => this.veritabanı.veri("kapatılmışKomutlar").includes(f.split(".")[0]) === false).forEach(f => {
let props = require(`${process.cwd()}komutlar/${k}/${f}`)
var cmd = props;
this.kayıt.komutlar.set(cmd.komut, cmd)
cmd.alternatifler.forEach(a => {
this.kayıt.alternatifler.set(a, cmd.komut)
})
console.log(`${chalk.greenBright(`${cmd.komut}`)} ${chalk.yellow("adlı komut yüklendi")}${chalk.grey(".")}`)
})
} else {
jsfiles.forEach(f => {
let props = require(`${process.cwd()}komutlar/${k}/${f}`)
var cmd = props;
this.kayıt.komutlar.set(cmd.komut, cmd)
cmd.alternatifler.forEach(a => {
this.kayıt.alternatifler.set(a, cmd.komut)
})
console.log(`${chalk.greenBright(`${cmd.komut}`)} ${chalk.yellow("adlı komut yüklendi")}${chalk.grey(".")}`)
})
}
}
})
})
//Varsayılan/hazır komutlar
if (this.varsayılanKomutlarFiltre === 'hepsi') { return }
if (this.varsayılanKomutlarFiltre !== 'hepsi') {
var vKategoriler = [['genel', 'Genel Komutlar'], ['yapımcı', 'Bot Yapımcısı Komutları']]
vKategoriler.forEach((kk) => {
var k = kk[0]
var k2 = kk[1]
this.kayıt.kategoriler.set(k, k2)
fs.readdir(`${path.join(__dirname, 'varsayılanKomutlar')}/${k}/`, (err, files) => {
let jsfiles = files.filter(f => f.split(".").pop() === "js")
if(jsfiles.length == 0) {
return
} else {
if (err) {
return
}
if (this.varsayılanKomutlarFiltre !== null) {
jsfiles.filter(f => this.varsayılanKomutlarFiltre.includes(f.split(".")[0]) === false).forEach(f => {
let props = require(`./varsayılanKomutlar/${k}/${f}`)
var cmd = props;
this.kayıt.komutlar.set(cmd.komut, cmd)
cmd.alternatifler.forEach(a => {
this.kayıt.alternatifler.set(a, cmd.komut)
})
})
};
if (this.varsayılanKomutlarFiltre === null) {
jsfiles.forEach(f => {
let props = require(`./varsayılanKomutlar/${k}/${f}`)
var cmd = props;
this.kayıt.komutlar.set(cmd.komut, cmd)
cmd.alternatifler.forEach(a => {
this.kayıt.alternatifler.set(a, cmd.komut)
})
})
};
}
})
})
}
};
eventYükle(dosya) {
if (!dosya) return console.log(mesajlar.hatalar.ayarlar.replace("{x}", "ayrı event dosyasını (Örneğin: 'client.eventYükle(\"klasör adı\")')"))
fs.readdir(`${dosya}/`, (err, files) => {
if(!files || files.length == 0) {
return
}
let jsfiles = files.filter(f => f.split(".").pop() === "js")
if(jsfiles.length == 0) {
return
} else {
if (err) {
return
}
jsfiles.forEach(f => {
let event = require(`${process.cwd()}/${dosya}/${f}`)
this.on(f.split(".")[0], event.bind(null, this))
})
}
})
};
};
module.exports = AdvancedBot;