├── ayarlar.json ├── models └── inviter.js ├── package.json ├── README.md ├── LICENSE └── yashinu.js /ayarlar.json: -------------------------------------------------------------------------------- 1 | { 2 | "botOwner": "460813657811582986", 3 | "botPrefix": "", 4 | "botToken": "", 5 | "guildID": "", 6 | "botVoiceChannelID": "", 7 | "inviteChannelID": "", 8 | "durum" : "Serendia ❤️ Yashinu" 9 | } 10 | -------------------------------------------------------------------------------- /models/inviter.js: -------------------------------------------------------------------------------- 1 | const mongoose = require('mongoose'); 2 | 3 | const inviterSchema = mongoose.Schema({ 4 | _id: mongoose.Schema.Types.ObjectId, 5 | guildID: String, 6 | userID: String, 7 | inviterID: String, 8 | regular: Number, 9 | bonus: Number, 10 | fake: Number 11 | }); 12 | 13 | module.exports = mongoose.model("Invites", inviterSchema); -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "yashinu-invite", 3 | "version": "0.0.1", 4 | "description": "Yashinu Invite Bot", 5 | "main": "yashinu.js", 6 | "scripts": { 7 | "test": "node yashinu.js" 8 | }, 9 | "author": "Yashinu", 10 | "license": "ISC", 11 | "dependencies": { 12 | "discord.js": "^12.2.0", 13 | "mongoose": "^5.9.19" 14 | }, 15 | "keywords": [] 16 | } 17 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## Selam dostlarım, bir iki ay önce kullandığım sunucuya özel botlarımı açık kaynak olarak herkese açık bir şekilde paylaşmaya karar verdim. Kullanımıyla alakalı ve diğer şeylerle ilgili destek/yardım almak için aşağıya bırakacağım topluluk sunucumuzdan yardım alabilirsiniz. 2 | 3 | # Yashinu 4 | 5 | Projenin ücretli satılması veya başkası tarafından, başka bir ad ile dağıtılması kesinlikle yasaktır. Proje lisanslı bir projedir, bu tarz işlemlerde bulunanlar olur ise lisans aracılığı ile gerekli yasal yollara başvurulacaktır. 6 |
10 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 yashinu 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /yashinu.js: -------------------------------------------------------------------------------- 1 | const { Discord, Client, MessageEmbed } = require('discord.js'); 2 | const client = global.client = new Client({fetchAllMembers: true}); 3 | const { botOwner, botPrefix, botToken, guildID, botVoiceChannelID, inviteChannelID, durum } = require('./ayarlar.json'); 4 | const guildInvites = new Map(); 5 | const mongoose = require('mongoose'); 6 | mongoose.connect('', {useNewUrlParser: true, useUnifiedTopology: true});// Mongo connect linki 7 | // Yashinu tarafından kodlanmıştır. 8 | 9 | client.on("ready", async () => { 10 | client.user.setPresence({ activity: { name: durum }, status: "dnd" }); 11 | let botVoiceChannel = client.channels.cache.get(botVoiceChannelID); 12 | if (botVoiceChannel) botVoiceChannel.join().catch(err => console.error("Bot ses kanalına bağlanamadı!")); 13 | client.guilds.cache.forEach(guild => { 14 | guild.fetchInvites().then(invites => guildInvites.set(guild.id, invites)).catch(err => console.log(err)); 15 | }); 16 | }); 17 | client.on("inviteCreate", async invite => guildInvites.set(invite.guild.id, await invite.guild.fetchInvites())); 18 | client.on("inviteDelete", invite => setTimeout(async () => { guildInvites.set(invite.guild.id, await invite.guild.fetchInvites()); }, 5000)); 19 | const Database = require('./models/inviter.js'); 20 | client.on("guildMemberAdd", async member => { 21 | let cachedInvites = guildInvites.get(member.guild.id); 22 | let newInvites = await member.guild.fetchInvites(); 23 | let usedInvite = newInvites.find(inv => cachedInvites.get(inv.code).uses < inv.uses) || cachedInvites.find(inv => !newInvites.has(inv.code)) || {code: member.guild.vanityURLCode, uses: null, inviter: {id: null}}; 24 | let inviter = client.users.cache.get(usedInvite.inviter.id) || {id: member.guild.id}; 25 | let isMemberFake = (Date.now() - member.user.createdTimestamp) < 7*24*60*60*1000; 26 | let inviteChannel = client.channels.cache.get(inviteChannelID); 27 | Database.findOne({ guildID: member.guild.id, userID: member.id }, (err, joinedMember) => { 28 | if (!joinedMember) { 29 | let newJoinedMember = new Database({ 30 | _id: new mongoose.Types.ObjectId(), 31 | guildID: member.guild.id, 32 | userID: member.id, 33 | inviterID: inviter.id, 34 | regular: 0, 35 | bonus: 0, 36 | fake: 0 37 | }); 38 | newJoinedMember.save(); 39 | } else { 40 | joinedMember.inviterID = inviter.id; 41 | joinedMember.save(); 42 | }; 43 | }); 44 | if (isMemberFake) { 45 | Database.findOne({ guildID: member.guild.id, userID: inviter.id }, (err, inviterData) => { 46 | if (!inviterData) { 47 | let newInviter = new Database({ 48 | _id: new mongoose.Types.ObjectId(), 49 | guildID: member.guild.id, 50 | userID: inviter.id, 51 | inviterID: null, 52 | regular: 0, 53 | bonus: 0, 54 | fake: 1 55 | }); 56 | newInviter.save().then(x => { 57 | if (inviteChannel) inviteChannel.send(`${member} katıldı! **Davet eden**: ${inviter.id == member.guild.id ? member.guild.name : inviter.tag} (**${(x.regular ? x.regular : 0)+(x.bonus ? x.bonus : 0)}** davet ❌)`).catch(err => {}); 58 | }); 59 | } else { 60 | inviterData.fake++ 61 | inviterData.save().then(x => { 62 | if (inviteChannel) inviteChannel.send(`${member} katıldı! **Davet eden**: ${inviter.id == member.guild.id ? member.guild.name : inviter.tag} (**${(x.regular ? x.regular : 0)+(x.bonus ? x.bonus : 0)}** davet ❌)`).catch(err => {}); 63 | }); 64 | }; 65 | }); 66 | } else { 67 | Database.findOne({ guildID: member.guild.id, userID: inviter.id }, (err, inviterData) => { 68 | if (!inviterData) { 69 | let newInviter = new Database({ 70 | _id: new mongoose.Types.ObjectId(), 71 | guildID: member.guild.id, 72 | userID: inviter.id, 73 | inviterID: null, 74 | regular: 1, 75 | bonus: 0, 76 | fake: 0 77 | }); 78 | newInviter.save().then(x => { 79 | if (inviteChannel) inviteChannel.send(`${member} katıldı! **Davet eden**: ${inviter.id == member.guild.id ? member.guild.name : inviter.tag} (**${(x.regular ? x.regular : 0)+(x.bonus ? x.bonus : 0)}** davet ✅)`).catch(err => {}); 80 | }); 81 | } else { 82 | inviterData.regular++; 83 | inviterData.save().then(x => { 84 | if (inviteChannel) inviteChannel.send(`${member} katıldı! **Davet eden**: ${inviter.id == member.guild.id ? member.guild.name : inviter.tag} (**${(x.regular ? x.regular : 0)+(x.bonus ? x.bonus : 0)}** davet ✅)`).catch(err => {}); 85 | }); 86 | }; 87 | }); 88 | }; 89 | guildInvites.set(member.guild.id, newInvites); 90 | }); 91 | 92 | client.on("guildMemberRemove", async member => { 93 | let isMemberFake = (Date.now() - member.user.createdTimestamp) < 7*24*60*60*1000; 94 | let inviteChannel = client.channels.cache.get(inviteChannelID); 95 | Database.findOne({ guildID: member.guild.id, userID: member.id }, async (err, memberData) => { 96 | if (memberData && memberData.inviterID) { 97 | let inviter = client.users.cache.get(memberData.inviterID) || {id: member.guild.id}; 98 | Database.findOne({ guildID: member.guild.id, userID: memberData.inviterID }, async (err, inviterData) => { 99 | if (!inviterData) { 100 | let newInviter = new Database({ 101 | _id: new mongoose.Types.ObjectId(), 102 | guildID: member.guild.id, 103 | userID: inviter.id, 104 | inviterID: null, 105 | regular: 0, 106 | bonus: 0, 107 | fake: 0 108 | }); 109 | newInviter.save(); 110 | } else { 111 | if (isMemberFake) { 112 | if (inviterData.fake-1 >= 0) inviterData.fake--; 113 | } else { 114 | if (inviterData.regular-1 >= 0) inviterData.regular--; 115 | }; 116 | inviterData.save().then(x => { 117 | if (inviteChannel) inviteChannel.send(`\`${member.user.tag}\` ayrıldı! ${inviter.tag ? `**Davet eden**: ${inviter.id == member.guild.id ? member.guild.name : inviter.tag} (**${(x.regular ? x.regular : 0)+(x.bonus ? x.bonus : 0)}** davet)` : `Davetçi bulunamadı!`}`).catch(err => {}); 118 | }); 119 | }; 120 | }); 121 | } else { 122 | if (inviteChannel) inviteChannel.send(`\`${member.user.tag}\` ayrıldı! Davetçi bulunamadı!`).catch(err => {}); 123 | }; 124 | }); 125 | }); 126 | 127 | client.on("message", async message => { 128 | if (message.author.bot || !message.guild || !message.content.toLowerCase().startsWith(botPrefix)) return; 129 | let args = message.content.split(' ').slice(1); 130 | let command = message.content.split(' ')[0].slice(botPrefix.length); 131 | 132 | if (command === "eval" && message.author.id === botOwner) { 133 | if (!args[0]) return message.channel.send(`Kod belirtilmedi`); 134 | let code = args.join(' '); 135 | 136 | function clean(text) { 137 | if (typeof text !== 'string') text = require('util').inspect(text, { depth: 0 }) 138 | text = text.replace(/`/g, '`' + String.fromCharCode(8203)).replace(/@/g, '@' + String.fromCharCode(8203)) 139 | return text; 140 | }; 141 | try { 142 | var evaled = clean(await eval(code)); 143 | if(evaled.match(new RegExp(`${client.token}`, 'g'))) evaled.replace("token", "Yasaklı komut").replace(client.token, "Yasaklı komut"); 144 | message.channel.send(`${evaled.replace(client.token, "Yasaklı komut")}`, {code: "js", split: true}); 145 | } catch(err) { message.channel.send(err, {code: "js", split: true}) }; 146 | }; 147 | 148 | if (command === "davet" || command === "info" || command === "invites") { 149 | let uye = message.mentions.members.first() || message.guild.members.cache.get(args[0]) || message.member; 150 | let embed = new MessageEmbed().setAuthor(uye.displayName, uye.user.displayAvatarURL({dynamic: true})).setColor(uye.displayHexColor).setFooter(`${client.users.cache.get(botOwner).tag} was here!`).setTimestamp(); 151 | Database.findOne({guildID: message.guild.id, userID: uye.id}, (err, inviterData) => { 152 | if (!inviterData) { 153 | embed.setDescription(`Davet bilgileri bulunmamaktadır!`); 154 | message.channel.send(embed); 155 | } else { 156 | Database.find({guildID: message.guild.id, inviterID: uye.id}).sort().exec((err, inviterMembers) => { 157 | let dailyInvites = 0; 158 | if (inviterMembers.length) { 159 | dailyInvites = inviterMembers.filter(x => message.guild.members.cache.has(x.userID) && (Date.now() - message.guild.members.cache.get(x.userID).joinedTimestamp) < 1000*60*60*24).length; 160 | }; 161 | embed.setDescription(`Toplam **${inviterData.regular+inviterData.bonus}** davete sahip! (**${inviterData.regular}** gerçek, **${inviterData.bonus}** bonus, **${inviterData.fake}** fake, **${dailyInvites}** günlük)`); 162 | message.channel.send(embed); 163 | }); 164 | }; 165 | }); 166 | }; 167 | 168 | if (command === "bonus") { 169 | if (!message.member.hasPermission("ADMINISTRATOR")) return; 170 | let uye = message.mentions.members.first () || message.guild.members.cache.get(args[0]); 171 | let sayi = args[1]; 172 | if (!uye || !sayi) return message.reply(`Geçerli bir üye ve sayı belirtmelisin! (${botPrefix}bonus @üye +10/-10)`); 173 | Database.findOne({guildID: message.guild.id, userID: uye.id}, (err, inviterData) => { 174 | if (!inviterData) { 175 | let newInviter = new Database({ 176 | _id: new mongoose.Types.ObjectId(), 177 | guildID: message.guild.id, 178 | userID: uye.id, 179 | inviterID: null, 180 | regular: 0, 181 | bonus: sayi, 182 | fake: 0 183 | }); 184 | newInviter.save().then(x => message.reply(`Belirtilen üyenin bonus daveti **${sayi}** olarak ayarlandı!`)); 185 | } else { 186 | eval(`inviterData.bonus = inviterData.bonus+${Number(sayi)}`); 187 | inviterData.save().then(x => message.reply(`Belirtilen üyenin bonus davetine **${sayi}** eklendi!`)); 188 | }; 189 | }); 190 | }; 191 | 192 | if (command === "üyeler" || command === "members") { 193 | let uye = message.mentions.members.first() || message.guild.members.cache.get(args[0]) || message.member; 194 | let embed = new MessageEmbed().setColor(uye.displayHexColor).setAuthor(uye.displayName + " Üyeleri", uye.user.displayAvatarURL({dynamic: true})).setFooter(message.member.displayName + " tarafından istendi!", message.author.displayAvatarURL({dynamic: true})).setThumbnail().setFooter(`${client.users.cache.get(botOwner).tag} was here!`); 195 | let currentPage = 1; 196 | Database.find({guildID: message.guild.id, inviterID: uye.id}).sort([["descending"]]).exec(async (err, pageArray) => { 197 | pageArray = pageArray.filter(x => message.guild.members.cache.has(x.userID)); 198 | if (err) console.log(err); 199 | if (!pageArray.length) { 200 | Database.findOne({guildID: message.guild.id, userID: uye.id}, async (err, uyeData) => { 201 | if (!uyeData) uyeData = {inviterID: null}; 202 | let inviterUye = client.users.cache.get(uyeData.inviterID) || {id: message.guild.id}; 203 | message.channel.send(embed.setDescription(`${uye} üyesini davet eden: ${inviterUye.id == message.guild.id ? message.guild.name : inviterUye.toString()}\n\nDavet ettiği üye bulunamadı!`)); 204 | }); 205 | } else { 206 | let pages = pageArray.chunk(10); 207 | if (!pages.length || !pages[currentPage - 1].length) return message.channel.send("Davet ettiği üye bulunamadı!"); 208 | let msg = await message.channel.send(embed); 209 | let reactions = ["◀", "❌", "▶"]; 210 | for (let reaction of reactions) await msg.react(reaction); 211 | Database.findOne({guildID: message.guild.id, userID: uye.id}, async (err, uyeData) => { 212 | let inviterUye = client.users.cache.get(uyeData.inviterID) || {id: message.guild.id}; 213 | if (msg) await msg.edit(embed.setDescription(`${uye} üyesini davet eden: ${inviterUye.id == message.guild.id ? message.guild.name : inviterUye.toString()}\n\n${pages[currentPage - 1].map((kisi, index) => { let kisiUye = message.guild.members.cache.get(kisi.userID); return `\`${index+1}.\` ${kisiUye.toString()} | ${client.tarihHesapla(kisiUye.joinedAt)}`; }).join('\n')}`).setFooter(`Şu anki sayfa: ${currentPage}`)).catch(err => {}); 214 | }); 215 | const back = msg.createReactionCollector((reaction, user) => reaction.emoji.name == "◀" && user.id == message.author.id, 216 | { time: 20000 }), 217 | x = msg.createReactionCollector((reaction, user) => reaction.emoji.name == "❌" && user.id == message.author.id, 218 | { time: 20000 }), 219 | go = msg.createReactionCollector((reaction, user) => reaction.emoji.name == "▶" && user.id == message.author.id, 220 | { time: 20000 }); 221 | back.on("collect", async reaction => { 222 | await reaction.users.remove(message.author.id).catch(err => {}); 223 | if (currentPage == 1) return; 224 | currentPage--; 225 | if (msg) msg.edit(embed.setDescription(`${pages[currentPage - 1].map((kisi, index) => { let kisiUye = message.guild.members.cache.get(kisi.userID); return `\`${index+1}.\` ${kisiUye.toString()} | ${client.tarihHesapla(kisiUye.joinedAt)}`; }).join('\n')}`).setFooter(`Şu anki sayfa: ${currentPage}`)).catch(err => {}); 226 | }); 227 | go.on("collect", async reaction => { 228 | await reaction.users.remove(message.author.id).catch(err => {}); 229 | if (currentPage == pages.length) return; 230 | currentPage++; 231 | if (msg) msg.edit(embed.setDescription(`${pages[currentPage - 1].map((kisi, index) => { let kisiUye = message.guild.members.cache.get(kisi.userID); return `\`${index+1}.\` ${kisiUye.toString()} | ${client.tarihHesapla(kisiUye.joinedAt)}`; }).join('\n')}`).setFooter(`Şu anki sayfa: ${currentPage}`)); 232 | }); 233 | x.on("collect", async reaction => { 234 | await back.stop(); 235 | await go.stop(); 236 | await x.stop(); 237 | if (message) message.delete().catch(err => {}); 238 | if (msg) return msg.delete().catch(err => {}); 239 | }); 240 | back.on("end", async () => { 241 | await back.stop(); 242 | await go.stop(); 243 | await x.stop(); 244 | if (message) message.delete().catch(err => {}); 245 | if (msg) return msg.delete().catch(err => {}); 246 | }); 247 | }; 248 | }); 249 | }; 250 | 251 | if (command === "top" || command === "sıralama") { 252 | let embed = new MessageEmbed().setColor(message.member.displayHexColor).setAuthor("Davet Sıralaması", message.guild.iconURL({dynamic: true})).setFooter(message.member.displayName + " tarafından istendi!", message.author.displayAvatarURL({dynamic: true})).setThumbnail().setFooter(`${client.users.cache.get(botOwner).tag} was here!`); 253 | let currentPage = 1; 254 | Database.find({guildID: message.guild.id}).sort().exec(async (err, pageArray) => { 255 | pageArray = pageArray.filter(x => message.guild.members.cache.has(x.userID)).sort((uye1, uye2) => ((uye2.regular ? uye2.regular : 0)+(uye2.bonus ? uye2.bonus : 0))-((uye1.regular ? uye1.regular : 0)+(uye1.bonus ? uye1.bonus : 0))); 256 | if (err) console.log(err); 257 | if (!pageArray.length) { 258 | message.channel.send(embed.setDescription("Davet verisi bulunamadı!")); 259 | } else { 260 | let pages = pageArray.chunk(10); 261 | if (!pages.length || !pages[currentPage - 1].length) return message.channel.send("Daveti olan üye bulunamadı!"); 262 | let msg = await message.channel.send(embed); 263 | let reactions = ["◀", "❌", "▶"]; 264 | for (let reaction of reactions) await msg.react(reaction); 265 | if (msg) await msg.edit(embed.setDescription(`${pages[currentPage - 1].map((kisi, index) => `\`${index+1}.\` ${message.guild.members.cache.get(kisi.userID).toString()} | **${kisi.regular+kisi.bonus}** davet`).join('\n')}`).setFooter(`Şu anki sayfa: ${currentPage}`)); 266 | const back = msg.createReactionCollector((reaction, user) => reaction.emoji.name == "◀" && user.id == message.author.id, 267 | { time: 20000 }), 268 | x = msg.createReactionCollector((reaction, user) => reaction.emoji.name == "❌" && user.id == message.author.id, 269 | { time: 20000 }), 270 | go = msg.createReactionCollector((reaction, user) => reaction.emoji.name == "▶" && user.id == message.author.id, 271 | { time: 20000 }); 272 | back.on("collect", async reaction => { 273 | await reaction.users.remove(message.author.id).catch(err => {}); 274 | if (currentPage == 1) return; 275 | currentPage--; 276 | if (msg) msg.edit(embed.setDescription(`${pages[currentPage - 1].map((kisi, index) => `\`${index+1}.\` ${message.guild.members.cache.get(kisi.userID).toString()} | **${kisi.regular+kisi.bonus}** davet`).join('\n')}`).setFooter(`Şu anki sayfa: ${currentPage}`)); 277 | }); 278 | go.on("collect", async reaction => { 279 | await reaction.users.remove(message.author.id).catch(err => {}); 280 | if (currentPage == pages.length) return; 281 | currentPage++; 282 | if (msg) msg.edit(embed.setDescription(`${pages[currentPage - 1].map((kisi, index) => `\`${index+1}.\` ${message.guild.members.cache.get(kisi.userID).toString()} | **${kisi.regular+kisi.bonus}** davet`).join('\n')}`).setFooter(`Şu anki sayfa: ${currentPage}`)); 283 | }); 284 | x.on("collect", async reaction => { 285 | await back.stop(); 286 | await go.stop(); 287 | await x.stop(); 288 | if (message) message.delete().catch(err => {}); 289 | if (msg) return msg.delete().catch(err => {}); 290 | }); 291 | back.on("end", async () => { 292 | await back.stop(); 293 | await go.stop(); 294 | await x.stop(); 295 | if (message) message.delete().catch(err => {}); 296 | if (msg) return msg.delete().catch(err => {}); 297 | }); 298 | }; 299 | }); 300 | }; 301 | }); 302 | client.tarihHesapla = (date) => { 303 | const startedAt = Date.parse(date); 304 | var msecs = Math.abs(new Date() - startedAt); 305 | 306 | const years = Math.floor(msecs / (1000 * 60 * 60 * 24 * 365)); 307 | msecs -= years * 1000 * 60 * 60 * 24 * 365; 308 | const months = Math.floor(msecs / (1000 * 60 * 60 * 24 * 30)); 309 | msecs -= months * 1000 * 60 * 60 * 24 * 30; 310 | const weeks = Math.floor(msecs / (1000 * 60 * 60 * 24 * 7)); 311 | msecs -= weeks * 1000 * 60 * 60 * 24 * 7; 312 | const days = Math.floor(msecs / (1000 * 60 * 60 * 24)); 313 | msecs -= days * 1000 * 60 * 60 * 24; 314 | const hours = Math.floor(msecs / (1000 * 60 * 60)); 315 | msecs -= hours * 1000 * 60 * 60; 316 | const mins = Math.floor((msecs / (1000 * 60))); 317 | msecs -= mins * 1000 * 60; 318 | const secs = Math.floor(msecs / 1000); 319 | msecs -= secs * 1000; 320 | 321 | var string = ""; 322 | if (years > 0) string += `${years} yıl ${months} ay` 323 | else if (months > 0) string += `${months} ay ${weeks > 0 ? weeks+" hafta" : ""}` 324 | else if (weeks > 0) string += `${weeks} hafta ${days > 0 ? days+" gün" : ""}` 325 | else if (days > 0) string += `${days} gün ${hours > 0 ? hours+" saat" : ""}` 326 | else if (hours > 0) string += `${hours} saat ${mins > 0 ? mins+" dakika" : ""}` 327 | else if (mins > 0) string += `${mins} dakika ${secs > 0 ? secs+" saniye" : ""}` 328 | else if (secs > 0) string += `${secs} saniye` 329 | else string += `saniyeler`; 330 | 331 | string = string.trim(); 332 | return `\`${string} önce\``; 333 | }; 334 | 335 | Array.prototype.chunk = function(chunk_size) { 336 | let myArray = Array.from(this); 337 | let tempArray = []; 338 | for (let index = 0; index < myArray.length; index += chunk_size) { 339 | let chunk = myArray.slice(index, index + chunk_size); 340 | tempArray.push(chunk); 341 | } 342 | return tempArray; 343 | }; 344 | 345 | client.login(botToken).then(c => console.log(`${client.user.tag} olarak giriş yapıldı!`)).catch(err => console.error("Bota giriş yapılırken başarısız olundu!")); 346 | --------------------------------------------------------------------------------