· 6 years ago · Jun 01, 2019, 09:18 PM
1const Discord = require('discord.js');
2const bot = new Discord.Client();
3const client = new Discord.Client({disableEveryone: true});
4const fs = require("fs");
5const prefix = "$";
6const Canvas = require('canvas');
7const ytdl = require('ytdl-core');
8const getYoutubeID = require('get-youtube-id');
9const fetchVideoInfo = require('youtube-info');
10const YouTube = require('simple-youtube-api');
11const youtube = new YouTube("AIzaSyAdORXg7UZUo7sePv97JyoDqtQVi3Ll0b8");
12const request = require('request');
13const conv = require('number-to-words')
14const jimp = require('jimp')
15const mmss = require('ms');
16const dateFormat = require('dateformat');
17var AsciiTable = require('ascii-data-table').default
18const moment = require("moment");
19moment.locale('ar');
20
21const http = require('http');
22const express = require('express');
23const app = express();
24app.get("/", (request, response) => {
25response.sendStatus(200);
26});
27app.listen(process.env.PORT);
28setInterval(() => {
29 http.get(`http://rexahmedp.glitch.me/`);
30}, 280000);
31
32client.on('ready', () => {
33 console.log(`Logged in as ${client.user.tag}!`);
34 client.user.setGame(`RexBot ✨ | $help`);
35 client.user.setStatus("Online");
36});
37
38client.on("message", message => {
39
40 if(!message.channel.guild) return;
41
42 if (message.content === "$role") {
43 const embed = new Discord.RichEmbed()
44 .setColor("RANDOM")
45 .setThumbnail(message.author.avatarURL)
46 .setDescription(`
47
48**أمثله على الأوامر : **
49 **$arole @Name Admin :** لأعطاء رتبة لعضو معين
50 **$rrole @Name Admin :** لأزالة الرتبة من الشخص
51 **$role all User :** لأعطاء رتبة للجميع
52 **$role humans Humans :** لأعطاء رتبة للاشخاص فقط
53 **$role bots Bots :** لأعطاء رتبة لجميع البوتات
54`)
55 .setFooter(message.author.username, message.author.avatarURL)
56
57 message.channel.sendMessage({embed});
58 }
59});
60
61client.on('message', message => {
62 let args = message.content.split(' ').slice(1);
63 if(message.content.startsWith(prefix + 'role')) {
64 let member = message.mentions.users.first();
65 let role = args.join(' ').replace(member, '').replace(args[0], '').replace(' ', '');
66 console.log(role);
67 if(member) {
68 if(role.startsWith('-')) {
69 let roleRe = args.join(' ').replace(member, '').replace(args[0], '').replace('-', '').replace(' ', '');
70 console.log(roleRe);
71 let role1 = message.guild.roles.find('name', roleRe);
72 console.log(`hi`);
73 if(!role1) return message.reply(`? **| الرتبة غير موجودة بالسيرفر تأكد من الاسم****`);
74 message.guild.member(member).removeRole(role1.id);
75 } else if(!role.startsWith('-')) {
76 let roleRe = args.join(' ').replace(member, '').replace(args[0], '').replace('-', '').replace(' ', '');
77 let role1 = message.guild.roles.find('name', roleRe);
78 if(!role1) return message.reply(`? **| الرتبة غير موجودة بالسيرفر تأكد من الاسم****`);
79 message.guild.member(member).addRole(role1);
80 } else {
81 message.reply(`**يجب عليك كتابة اسم الرتبة**`);
82 }
83 }
84 else if(args[0] == 'all') {
85 if(role) {
86 let role1 = message.guild.roles.find('name', role);
87 if(!role1) return message.reply(`? **| الرتبة غير موجودة بالسيرفر تأكد من الاسم**`);
88 message.channel.send(`? **| الرجاء الانتظار حتى يتم الانتهاء من الامر**`).then(msg => {
89 message.guild.members.forEach(m => {
90 message.guild.member(m).addRole(role1);
91 });
92 msg.edit(`✅ **| تم الانتهاء من الامر ${message.guild.members.size}**`);
93 });
94}
95} else if(args[0] == 'humans') {
96 if(role) {
97 let role1 = message.guild.roles.find('name', role);
98 if(!role1) return message.reply(`? **| الرتبة غير موجودة بالسيرفر تأكد من الاسم**`);
99 message.channel.send(`? **| الرجاء الانتظار حتى يتم الانتهاء من الامر**`).then(msg => {
100 message.guild.members.filter(m =>m.user.bot == false).forEach(m => {
101 message.guild.member(m).addRole(role1);
102 });
103 msg.edit(`✅ **| تم الانتهاء من الامر ${message.guild.members.size}**`);
104 });
105 }
106} else if(args[0] == 'bots') {
107 if(role) {
108 let role1 = message.guild.roles.find('name', role);
109 if(!role1) return message.reply(`? **| الرتبة غير موجودة بالسيرفر تأكد من الاسم**`);
110 message.channel.send(`? **| الرجاء الانتظار حتى يتم الانتهاء من الامر**`).then(msg => {
111 message.guild.members.filter(m =>m.user.bot == true).forEach(m => {
112 message.guild.member(m).addRole(role1);
113 });
114msg.edit(`✅ **| تم الانتهاء من الامر ${message.guild.members.size}**`);
115});
116}
117}
118}
119});
120//addrole
121client.on('message', message => {
122 if (message.author.boss) return;
123 if (!message.content.startsWith(prefix)) return;
124 let command = message.content.split(" ")[0];
125 command = command.slice(prefix.length);
126 if (command == "arole") {
127 if (!message.channel.guild) return;
128 if(!message.guild.member(message.author).hasPermission("MANAGE_ROLES")) return message.reply("**:no_entry_sign: | انت لا تملك صلاحيات **").then(msg => msg.delete(5000));;
129 if(!message.guild.member(client.user).hasPermission("MANAGE_ROLES")) return message.reply("**? | البوت لايملك صلاحيات **").then(msg => msg.delete(5000));;
130 let user = message.mentions.users.first();
131 if (message.mentions.users.size < 1) return message.reply('**ضع منشن الشخص!!**').then(msg => {msg.delete(5000)});
132 let MRole = message.content.split(" ").slice(2).join(" ");
133 if(!MRole)return message.reply("⚠️ **| يجب عليك وضع اسم الرتبة**").then(msg => {msg.delete(5000)});
134 message.delete(10000);
135 message.guild.member(user).addRole(message.guild.roles.find("name", MRole));
136 message.reply('✅ **|** ***تم الانتهاء من الامر***').then(msg => {msg.delete(10000)});
137 }
138 });
139//removerole
140client.on('message', message => {
141 if (message.author.boss) return;
142 if (!message.content.startsWith(prefix)) return;
143 let command = message.content.split(" ")[0];
144 command = command.slice(prefix.length);
145 if (command == "rrole") {
146 if (!message.channel.guild) return;
147 if(!message.guild.member(message.author).hasPermission("MANAGE_ROLES")) return message.reply("**:no_entry_sign: | انت لا تملك صلاحيات **").then(msg => msg.delete(5000));;
148 if(!message.guild.member(client.user).hasPermission("MANAGE_ROLES")) return message.reply("**? | البوت لايملك صلاحيات **").then(msg => msg.delete(5000));;
149 let user = message.mentions.users.first();
150 if (message.mentions.users.size < 1) return message.reply('**ضع منشن الشخص!!**').then(msg => {msg.delete(5000)});
151 let RRole = message.content.split(" ").slice(2).join(" ");
152 if(!RRole)return message.reply("⚠️ **| يجب عليك وضع اسم الرتبة**").then(msg => {msg.delete(5000)});
153 message.delete(10000);
154 message.guild.member(user).removeRole(message.guild.roles.find("name", RRole));
155 message.reply('✅ **|** ***تم الانتهاء من الامر***').then(msg => {msg.delete(10000)});
156 }
157 });
158
159client.on('message', message => {
160 if (message.author.bot) return;
161 if (!message.content.startsWith(prefix)) return;
162
163 if (message.content.startsWith(prefix + 'ping')) {
164 message.channel.sendMessage('Pong! Your ping is `' + `${Date.now() - message.createdTimestamp}` + ' ms`?️');
165 }
166});
167
168client.on('message', message => {
169 if (message.content === "$server") {
170 if(!message.channel.guild) return;
171 const millis = new Date().getTime() - message.guild.createdAt.getTime();
172 const now = new Date();
173
174 const verificationLevels = ['None', 'Low', 'Medium', 'Insane', 'Extreme'];
175 const days = millis / 1000 / 60 / 60 / 24;
176 let roles = client.guilds.get(message.guild.id).roles.map(r => r.name);
177 var embed = new Discord.RichEmbed()
178 .setAuthor(message.guild.name, message.guild.iconURL)
179 .addField("**? Server ID**", "**"+message.guild.id+"**",true)
180 .addField("**? Server Owner**", "**"+message.guild.owner+"**",true)
181 .addField("**? Location **", "**"+message.guild.region+"**",true)
182 .addField('**? Text Channels **',`**[ ${message.guild.channels.filter(m => m.type === 'text').size} ] Channel **`,true)
183 .addField('**? Category **',`**[ ${message.guild.channels.filter(m => m.type === 'category').size} ] Category **`,true)
184 .addField("**? Voice Channels **", ` ** [ ${message.guild.channels.filter(m => m.type === 'voice').size} ] Channel ** `,true)
185 .addField("**? This server have been created for **", ` ** [ ${days.toFixed(0)} ] ** Day ` ,true)
186 .addField("**? Roles **",`**[${message.guild.roles.size}]** Role `,true)
187
188 .addField("?Members",`
189 **${message.guild.memberCount}**`)
190 .setThumbnail(message.guild.iconURL)
191 .setColor('RANDOM')
192 message.channel.sendEmbed(embed)
193
194 }
195 });
196
197const hastebin = require('hastebin.js');
198 var h = new hastebin({});
199
200 client.on('message', message => {
201 if (!message.content.startsWith(prefix)) return;
202 var args = message.content.split(' ');
203 var command = args[0];
204 switch(command) {
205 case "$clear":
206 if (message.channel.type !== "text") return message.reply("** This Command is Only For Servers | :x: **");
207 if (!message.member.hasPermission("MANAGE_MESSAGES")) return message.reply("** You Don't Have Access To Do This Command | :x: **");
208 if (!args[1]) args[1] = 100;
209 var count = parseInt(args[1]);
210 if (isNaN(count)) return message.reply("** You Have To Type Number | :x: **");
211 message.channel.bulkDelete(count).then(msgs => {
212 message.channel.send(`** Done ** | I have Deleted ${msgs.size} Messages ...`).then(m => m.delete(3000));
213 var x = 0;
214 var messages = msgs.map(m => `${++x} - ${m.author.tag} : ${m.content.split(" ").join(" ")}`).join(`
215 `);
216 fs.writeFile(`${message.guild.id}.txt`, messages, (err) => {
217 if (err) console.log(err.message);
218 h.post(messages).then(url => {
219 var c = message.guild.channels.find("name", "rex_log");
220 if (!c) return;
221 var embed = new Discord.RichEmbed()
222 .setTitle(`Bulk Delete. | ${msgs.size} Messages`)
223 .setAuthor(client.user.tag, client.user.avatarURL)
224 .setThumbnail(message.guild.iconURL)
225 .setColor("RANDOM")
226 .setDescription(`By \`${message.author.tag}\`\n\n In #${message.channel.name}\n\n [Vew Messages on : \`HasteBin\`](${url})`)
227 .attachFile(`./${message.guild.id}.txt`);
228 c.send(`Download Messages : `, {embed : embed});
229 });
230 });
231 });
232 break;
233 };
234 });
235
236let spaces = " "
237client.on("message", msg => {
238 if(msg.content.startsWith("$roles")) {
239 const roles = []
240 msg.guild.roles.forEach(c => {
241 roles.push(c.name+spaces.substring(c.name.length)+c.members.size+" members");
242 });
243 msg.channel.send("\`\`\`"+roles.join("\n")+"\`\`\`");
244 }
245})
246
247client.on('message', message => {
248 var prefix = "$";
249 if(message.content === prefix + "lock") {
250 if(!message.channel.guild) return message.reply('** This command only for servers**');
251
252 if(!message.member.hasPermission('MANAGE_MESSAGES')) return message.reply(' **__ليس لديك صلاحيات__**');
253 message.channel.overwritePermissions(message.guild.id, {
254 SEND_MESSAGES: false
255
256 }).then(() => {
257 message.reply("**__تم تقفيل الشات__ :white_check_mark: **")
258 });
259 }
260 //FIRE BOT
261 if(message.content === prefix + "unlock") {
262 if(!message.channel.guild) return message.reply('** This command only for servers**');
263
264 if(!message.member.hasPermission('MANAGE_MESSAGES')) return message.reply('**__ليس لديك صلاحيات__**');
265 message.channel.overwritePermissions(message.guild.id, {
266 SEND_MESSAGES: true
267
268 }).then(() => {
269 message.reply("**__تم فتح الشات__:white_check_mark:**")
270 });
271 }
272
273 });
274
275client.on('message', message => {
276 const mm = message.mentions.members.first() || message.member;
277 if(message.content.startsWith(prefix + "avatar")){
278 const embed = new Discord.RichEmbed()
279 .setAuthor(mm.user.tag, mm.user.avatarURL)
280 .setTitle("Avatar Link")
281 .setURL(mm.user.avatarURL)
282 .setImage(mm.user.avatarURL)
283 .setFooter(`Requested By : ${message.author.tag}`, message.author.avatarURL)
284 message.channel.send(embed);
285 }
286});
287
288client.on("message", message => {
289 if(!message.channel.guild) return;
290 if(message.author.bot) return;
291 if(message.content === prefix + "image"){
292 const embed = new Discord.RichEmbed()
293
294 .setTitle(`This is ** ${message.guild.name} ** Photo !`)
295 .setAuthor(message.author.username, message.guild.iconrURL)
296 .setColor(0x164fe3)
297 .setImage(message.guild.iconURL)
298 .setURL(message.guild.iconrURL)
299 .setTimestamp()
300
301 message.channel.send({embed});
302 }
303 });
304
305client.on('message', message => {
306 if (!message.channel.guild) return;
307 if(message.content =='$members')
308 var kayan = new Discord.RichEmbed()
309 .setThumbnail(message.author.avatarURL)
310 .setFooter(message.author.username, message.author.avatarURL)
311 .setTitle('?| معلومات الأعضاء')
312 .addBlankField(true)
313 .addField('?| متصل بالانترنت',
314 `${message.guild.members.filter(m=>m.presence.status == 'online').size}`)
315 .addField('?| مشغول',`${message.guild.members.filter(m=>m.presence.status == 'dnd').size}`)
316 .addField('?| وضع الخمول',`${message.guild.members.filter(m=>m.presence.status == 'idle').size}`)
317 .addField('?|غير متصل على الانترنت',`${message.guild.members.filter(m=>m.presence.status == 'offline').size}`)
318 .addField('????| اعضاء السيرفر',`${message.guild.memberCount}`)
319 message.channel.send(kayan);
320
321 });
322
323client.on('message', message => {
324 var command = message.content.toLowerCase().split(" ")[0];
325 if(command == prefix + 'sug') {
326 if(message.author.bot) return;
327 if(message.channel.type === 'dm') return;
328 var member = message.author.id;
329 var channel = message.guild.channels.find('name', '↝suggests');
330 if(!channel) return;
331 var sug = message.content.split(' ').slice(1).join(' ');
332 if(!sug) return message.channel.send(`** ↝ Useage:** ${prefix}sug <اقتراحك>`).then(msg => msg.delete(5000));
333 message.delete();
334
335 var sugDone = new Discord.RichEmbed()
336 .setTitle(`**تم ارسال اقتراحك بنجاح ! شكرا على اقتراحك**`)
337 .setColor('#36393e')
338 .setThumbnail(client.user.avatarURL)
339 .setDescription(`**\n ↝ اقتراحك هو**\n\n${sug}`)
340 .setTimestamp()
341 .setFooter(message.author.tag, message.author.avatarURL)
342
343 var sugSure = new Discord.RichEmbed()
344 .setThumbnail(client.user.avatarURL)
345 .setTitle(`**هل انت متأكد من انك تريد ارسال اقتراحك ؟ معك دقيقة قبل الالغاء**`)
346 .setDescription(`**\n ↝ اقتراحك هو**\n\n${sug}\n\n:white_check_mark: للارسال\n\n:negative_squared_cross_mark: للالغاء`)
347 .setFooter(`${message.author.username}#${message.author.discriminator}`, message.author.avatarURL)
348 .setTimestamp()
349 .setColor('#36393e')
350 message.channel.send(sugSure).then(msg => {
351 msg.react('✅').then(() => msg.react('❎'))
352
353let YesFilter = (reaction, user) => reaction.emoji.name === '✅' && user.id === message.author.id;
354let NoFilter = (reaction, user) => reaction.emoji.name === '❎' && user.id === message.author.id;
355
356let Yes = msg.createReactionCollector(YesFilter, { time: 60000 });
357let No = msg.createReactionCollector(NoFilter, { time: 60000 });
358
359Yes.on("collect", r => {
360 message.channel.send(sugDone).then(msg => msg.delete(6000));
361 msg.delete();
362 var newsug = new Discord.RichEmbed()
363 .setTitle(`**:bell: اقــــــتـــراح جـــــديــــــد :bell:**`)
364 .setDescription(`** ↝ من**\n<@${member}>\n\n** ↝ الاقتراح هو**\n\n${sug}`)
365 .setFooter(`${message.author.username}#${message.author.discriminator}`, message.author.avatarURL)
366 .setTimestamp()
367 .setThumbnail(client.user.avatarURL)
368 .setColor('#36393e')
369 channel.send(newsug).then(message => {
370 message.react('?').then(() => message.react('?'))
371 })
372})
373No.on("collect", r => {
374 message.reply('**:x: تم الغاء اقتراحك**').then(message => {message.delete(4000)})
375 msg.delete();
376})
377 })
378 }
379});
380
381 bot.on("guildBanAdd", (guild, member) => {
382
383 bot.setTimeout(() => {
384
385 guild.fetchAuditLogs({
386
387 limit: 1,
388
389 type: 22
390
391 })
392
393 .then(audit => {
394
395 let exec = audit.entries.map(a => a.executor.username);
396
397 try {
398
399 let log = guild.channels.find('name', 'rex_log');
400
401 if (!log) return;
402
403 bot.fetchUser(member.id).then(myUser => {
404
405 let embed = new Discord.RichEmbed()
406
407 .setAuthor(exec)
408
409 .setThumbnail(myUser.avatarURL)
410
411 .addField('- Banned User:',`**${myUser.username}**`,true)
412
413 .addField('- Banned By:',`**${exec}**`,true)
414
415 .setFooter(myUser.username,myUser.avatarURL)
416
417 .setTimestamp();
418
419 log.send(embed).catch(e => {
420
421 console.log(e);
422
423 });
424
425 });
426
427 } catch (e) {
428
429 console.log(e);
430
431 }
432
433 });
434
435 }, 1000);
436
437});
438
439 bot.on("guildBanRemove", (guild, member) => {
440 bot.setTimeout(() => {
441 guild.fetchAuditLogs({
442 limit: 1,
443 type: 22
444 })
445 .then(audit => {
446 let exec = audit.entries.map(a => a.executor.username);
447 try {
448 let log = guild.channels.find('name', 'rex_log');
449 if (!log) return;
450 client.fetchUser(member.id).then(myUser => {
451 let embed = new Discord.RichEmbed()
452 .setAuthor("UnBanned")
453 .setColor('#36393e')
454 .setThumbnail(myUser.avatarURL)
455 .addField('UnBanned User',`**${myUser.username}**`,true)
456 .addField('UnBanned By',`**${exec}**`,true)
457 .setFooter(myUser.username,myUser.avatarURL)
458 .setTimestamp();
459 log.send(embed).catch(e => {
460 console.log(e);
461 });
462 });
463 } catch (e) {
464 console.log(e);
465 }
466 });
467 }, 1000);
468});
469
470 bot.on("roleDelete", role => {
471 bot.setTimeout(() => {
472 role.guild.fetchAuditLogs({
473 limit: 1,
474 type: 30
475 })
476 .then(audit => {
477 let exec = audit.entries.map(a => a.executor.username)
478 try {
479
480 let log = role.guild.channels.find('name', 'rex_log');
481 if (!log) return;
482 let embed = new Discord.RichEmbed()
483 .setColor('#36393e')
484 .setTitle(' - Role Deleted ')
485 .addField('Role Name', role.name, true)
486 .addField('Role ID', role.id, true)
487 .addField('Role Color', role.hexColor, true)
488 .addField('Role Permission', role.permissions, true)
489 .addField('By', exec, true)
490 .setColor('#36393e')
491 .setTimestamp()
492 log.send(embed).catch(e => {
493 console.log(e);
494 });
495 } catch (e) {
496 console.log(e);
497 }
498 })
499 }, 1000)
500})
501
502bot.on('roleCreate', role => {
503 bot.setTimeout(() => {
504 role.guild.fetchAuditLogs({
505 limit: 1,
506 type: 30
507 })
508 .then(audit => {
509 let exec = audit.entries.map(a => a.executor.username)
510 try {
511
512 let log = role.guild.channels.find('name', 'rex_log');
513 if (!log) return;
514 let embed = new Discord.RichEmbed()
515 .setTitle('+ Role Created')
516 .addField('Role Name', role.name, true)
517 .addField('Role ID', role.id, true)
518 .addField('Role Color', role.hexColor, true)
519 .addField('Role Permission', role.permissions, true)
520 .addField('By', exec, true)
521 .setColor('#36393e')
522 .setTimestamp()
523 log.send(embed).catch(e => {
524 console.log(e);
525 });
526 } catch (e) {
527 console.log(e);
528 }
529 })
530 }, 1000)
531})
532
533bot.on('messageDelete', message => {
534 if (!message || !message.id || !message.content || !message.guild || message.author.bot) return;
535 const channel = message.guild.channels.find('name', 'rex_log');
536 if (!channel) return;
537
538 let embed = new Discord.RichEmbed()
539 .setAuthor(`${message.author.tag}`, message.author.avatarURL)
540 .setTitle('Message Deleted')
541 .addField('Deleted Message',`${message.cleanContent}`)
542 .addField('Deleted In',`<#${message.channel.id}>`)
543 .addField('By', `<@${message.author.id}> `)
544 .setColor('#36393e')
545 .setTimestamp();
546 channel.send({embed:embed});
547
548});
549
550 client.on("roleUpdate", (re,updated) => {
551 client.setTimeout(() => {
552 re.guild.fetchAuditLogs({
553 limit: 1,
554 type: 30
555 })
556 .then(audit => {
557 let exec = audit.entries.map(a => a.executor.username)
558 try {
559
560 let log = re.guild.channels.find('name', 'rex_log');
561 if (!log) return;
562 let embed = new Discord.RichEmbed()
563 .setColor('BLACK')
564 .setTitle("✏ Role Name Updated")
565 .addField("Old",`${re.name}`,true)
566 .addField("New",`${updated.name}`,true )
567 .addField("Role id",`${re.id}`,true )
568 .addField('By', exec, true)
569 .setTimestamp()
570 log.send(embed).catch(e => {
571 console.log(e);
572 });
573 } catch (e) {
574 console.log(e);
575 }
576 })
577 }, 1000)
578 })
579
580 bot.on('messageUpdate', (message, newMessage) => {
581 if (message.content === newMessage.content) return;
582 if (!message || !message.id || !message.content || !message.guild || message.author.bot) return;
583 const channel = message.guild.channels.find('name', 'rex_log');
584 if (!channel) return;
585
586 let embed = new Discord.RichEmbed()
587 .setAuthor(`${message.author.tag}`, message.author.avatarURL)
588 .setTitle('Message Edited')
589 .addField('Before Edit',`${message.cleanContent}`)
590 .addField('After Edit',`${newMessage.cleanContent}`)
591 .addField('Edit In',`<#${message.channel.id}>`)
592 .addField('By', `<@${message.author.id}> `)
593 .setColor('#36393e')
594 .setTimestamp();
595 channel.send({embed:embed});
596
597
598});
599
600 bot.on("channelDelete", dc => {
601 const channel = dc.guild.channels.find("name", "rex_log")
602 if(channel) {
603 var embed = new Discord.RichEmbed()
604 .setTitle(dc.guild.name)
605 .setDescription(`***Channel Deleted Name : *** **${dc.name}** ⬅️`)
606 .setColor(`RANDOM`)
607 .setTimestamp();
608 channel.sendEmbed(embed)
609 }
610 });
611
612client.on('guildMemberAdd', member => {
613 var logChannel = member.guild.channels.find(c => c.name === 'rex_log');
614 if(!logChannel) return;
615
616 let newMember = new Discord.RichEmbed()
617 .setTitle('**[NEW MEMBER ADDED]**')
618 .setThumbnail(member.user.avatarURL)
619 .setColor('GREEN')
620 .setDescription(`**\n**:arrow_lower_right: Joined **${member.user.username}** To the server!\n\n**User:** <@${member.user.id}> (ID: ${member.user.id})\n**Days In Discord:** ${Days(member.user.createdAt)}`)
621 .setTimestamp()
622 .setFooter(member.user.tag, member.user.avatarURL)
623
624 logChannel.send(newMember);
625});
626function Days(date) {
627 let now = new Date();
628 let diff = now.getTime() - date.getTime();
629 let days = Math.floor(diff / 86400000);
630 return days + (days == 1 ? " day" : " days") + " ago";
631}
632client.on('guildMemberRemove', member => {
633 var logChannel = member.guild.channels.find(c => c.name === 'rex_log');
634 if(!logChannel) return;
635
636 let leaveMember = new Discord.RichEmbed()
637 .setTitle('**[LEAVE MEMBER]**')
638 .setThumbnail(member.user.avatarURL)
639 .setColor('GREEN')
640 .setDescription(`**\n**:arrow_upper_left: Leave **${member.user.username}** From the server.\n\n**User:** <@${member.user.id}> (ID: ${member.user.id})`)
641 .setTimestamp()
642 .setFooter(member.user.tag, member.user.avatarURL)
643
644 logChannel.send(leaveMember);
645});
646
647client.on('channelUpdate', (oldChannel, newChannel) => {
648 if(!oldChannel.guild) return;
649
650 var logChannel = oldChannel.guild.channels.find(c => c.name === 'rex_log');
651 if(!logChannel) return;
652
653 if(oldChannel.type === 'text') {
654 var channelType = 'Text';
655 }else
656 if(oldChannel.type === 'voice') {
657 var channelType = 'Voice';
658 }else
659 if(oldChannel.type === 'category') {
660 var channelType = 'Category';
661 }
662
663 oldChannel.guild.fetchAuditLogs().then(logs => {
664 var userID = logs.entries.first().executor.id;
665 var userAvatar = logs.entries.first().executor.avatarURL;
666
667 if(oldChannel.name !== newChannel.name) {
668 let newName = new Discord.RichEmbed()
669 .setTitle('**[CHANNEL EDIT]**')
670 .setThumbnail(userAvatar)
671 .setColor('BLUE')
672 .setDescription(`**\n**:wrench: Successfully Edited **${channelType}** Channel Name\n\n**Old Name:** \`\`${oldChannel.name}\`\`\n**New Name:** \`\`${newChannel.name}\`\`\n**Channel ID:** ${oldChannel.id}\n**By:** <@${userID}> (ID: ${userID})`)
673 .setTimestamp()
674 .setFooter(oldChannel.guild.name, oldChannel.guild.iconURL)
675
676 logChannel.send(newName);
677 }
678 if(oldChannel.topic !== newChannel.topic) {
679 let newTopic = new Discord.RichEmbed()
680 .setTitle('**[CHANNEL EDIT]**')
681 .setThumbnail(userAvatar)
682 .setColor('BLUE')
683 .setDescription(`**\n**:wrench: Successfully Edited **${channelType}** Channel Topic\n\n**Old Topic:**\n\`\`\`${oldChannel.topic || 'NULL'}\`\`\`\n**New Topic:**\n\`\`\`${newChannel.topic || 'NULL'}\`\`\`\n**Channel:** ${oldChannel} (ID: ${oldChannel.id})\n**By:** <@${userID}> (ID: ${userID})`)
684 .setTimestamp()
685 .setFooter(oldChannel.guild.name, oldChannel.guild.iconURL)
686
687 logChannel.send(newTopic);
688 }
689 })
690});
691
692client.on('guildUpdate', (oldGuild, newGuild) => {
693
694 if(!oldGuild.member(client.user).hasPermission('EMBED_LINKS')) return;
695 if(!oldGuild.member(client.user).hasPermission('VIEW_AUDIT_LOG')) return;
696
697 var logChannel = oldGuild.channels.find(c => c.name === 'rex_log');
698 if(!logChannel) return;
699
700 oldGuild.fetchAuditLogs().then(logs => {
701 var userID = logs.entries.first().executor.id;
702 var userAvatar = logs.entries.first().executor.avatarURL;
703
704 if(oldGuild.name !== newGuild.name) {
705 let guildName = new Discord.RichEmbed()
706 .setTitle('**[CHANGE GUILD NAME]**')
707 .setThumbnail(userAvatar)
708 .setColor('BLUE')
709 .setDescription(`**\n**:white_check_mark: Successfully \`\`EDITED\`\` The guild name.\n\n**Old Name:** \`\`${oldGuild.name}\`\`\n**New Name:** \`\`${newGuild.name}\`\`\n**By:** <@${userID}> (ID: ${userID})`)
710 .setTimestamp()
711 .setFooter(newGuild.name, oldGuild.iconURL)
712
713 logChannel.send(guildName)
714 }
715 if(oldGuild.region !== newGuild.region) {
716 let guildRegion = new Discord.RichEmbed()
717 .setTitle('**[CHANGE GUILD REGION]**')
718 .setThumbnail(userAvatar)
719 .setColor('BLUE')
720 .setDescription(`**\n**:white_check_mark: Successfully \`\`EDITED\`\` The guild region.\n\n**Old Region:** ${oldGuild.region}\n**New Region:** ${newGuild.region}\n**By:** <@${userID}> (ID: ${userID})`)
721 .setTimestamp()
722 .setFooter(oldGuild.name, oldGuild.iconURL)
723
724 logChannel.send(guildRegion);
725 }
726 if(oldGuild.verificationLevel !== newGuild.verificationLevel) {
727 if(oldGuild.verificationLevel === 0) {
728 var oldVerLvl = 'Very Easy';
729 }else
730 if(oldGuild.verificationLevel === 1) {
731 var oldVerLvl = 'Easy';
732 }else
733 if(oldGuild.verificationLevel === 2) {
734 var oldVerLvl = 'Medium';
735 }else
736 if(oldGuild.verificationLevel === 3) {
737 var oldVerLvl = 'Hard';
738 }else
739 if(oldGuild.verificationLevel === 4) {
740 var oldVerLvl = 'Very Hard';
741 }
742
743 if(newGuild.verificationLevel === 0) {
744 var newVerLvl = 'Very Easy';
745 }else
746 if(newGuild.verificationLevel === 1) {
747 var newVerLvl = 'Easy';
748 }else
749 if(newGuild.verificationLevel === 2) {
750 var newVerLvl = 'Medium';
751 }else
752 if(newGuild.verificationLevel === 3) {
753 var newVerLvl = 'Hard';
754 }else
755 if(newGuild.verificationLevel === 4) {
756 var newVerLvl = 'Very Hard';
757 }
758
759 let verLog = new Discord.RichEmbed()
760 .setTitle('**[GUILD VERIFICATION LEVEL CHANGE]**')
761 .setThumbnail(userAvatar)
762 .setColor('BLUE')
763 .setDescription(`**\n**:white_check_mark: Successfully \`\`EDITED\`\` Guild verification level.\n\n**Old Verification Level:** ${oldVerLvl}\n**New Verification Level:** ${newVerLvl}\n**By:** <@${userID}> (ID: ${userID})`)
764 .setTimestamp()
765 .setFooter(oldGuild.name, oldGuild.iconURL)
766
767 logChannel.send(verLog);
768 }
769 })
770});
771
772client.on('guildMemberUpdate', (oldMember, newMember) => {
773 var logChannel = oldMember.guild.channels.find(c => c.name === 'rex_log');
774 if(!logChannel) return;
775
776 oldMember.guild.fetchAuditLogs().then(logs => {
777 var userID = logs.entries.first().executor.id;
778 var userAvatar = logs.entries.first().executor.avatarURL;
779 var userTag = logs.entries.first().executor.tag;
780
781 if(oldMember.nickname !== newMember.nickname) {
782 if(oldMember.nickname === null) {
783 var oldNM = '\`\`اسمه الاصلي\`\`';
784 }else {
785 var oldNM = oldMember.nickname;
786 }
787 if(newMember.nickname === null) {
788 var newNM = '\`\`اسمه الاصلي\`\`';
789 }else {
790 var newNM = newMember.nickname;
791 }
792
793 let updateNickname = new Discord.RichEmbed()
794 .setTitle('**[UPDATE MEMBER NICKNAME]**')
795 .setThumbnail(userAvatar)
796 .setColor('BLUE')
797 .setDescription(`**\n**:spy: Successfully \`\`CHANGE\`\` Member Nickname.\n\n**User:** ${oldMember} (ID: ${oldMember.id})\n**Old Nickname:** ${oldNM}\n**New Nickname:** ${newNM}\n**By:** <@${userID}> (ID: ${userID})`)
798 .setTimestamp()
799 .setFooter(oldMember.guild.name, oldMember.guild.iconURL)
800
801 logChannel.send(updateNickname);
802 }
803 if(oldMember.roles.size < newMember.roles.size) {
804 let role = newMember.roles.filter(r => !oldMember.roles.has(r.id)).first();
805
806 let roleAdded = new Discord.RichEmbed()
807 .setTitle('**[ADDED ROLE TO MEMBER]**')
808 .setThumbnail(oldMember.guild.iconURL)
809 .setColor('GREEN')
810 .setDescription(`**\n**:white_check_mark: Successfully \`\`ADDED\`\` Role to **${oldMember.user.username}**\n\n**User:** <@${oldMember.id}> (ID: ${oldMember.user.id})\n**Role:** \`\`${role.name}\`\` (ID: ${role.id})\n**By:** <@${userID}> (ID: ${userID})`)
811 .setTimestamp()
812 .setFooter(userTag, userAvatar)
813
814 logChannel.send(roleAdded);
815 }
816 if(oldMember.roles.size > newMember.roles.size) {
817 let role = oldMember.roles.filter(r => !newMember.roles.has(r.id)).first();
818
819 let roleRemoved = new Discord.RichEmbed()
820 .setTitle('**[REMOVED ROLE FROM MEMBER]**')
821 .setThumbnail(oldMember.guild.iconURL)
822 .setColor('RED')
823 .setDescription(`**\n**:negative_squared_cross_mark: Successfully \`\`REMOVED\`\` Role from **${oldMember.user.username}**\n\n**User:** <@${oldMember.user.id}> (ID: ${oldMember.id})\n**Role:** \`\`${role.name}\`\` (ID: ${role.id})\n**By:** <@${userID}> (ID: ${userID})`)
824 .setTimestamp()
825 .setFooter(userTag, userAvatar)
826
827 logChannel.send(roleRemoved);
828 }
829 })
830 if(oldMember.guild.owner.user.id !== newMember.guild.owner.user.id) {
831 let newOwner = new Discord.RichEmbed()
832 .setTitle('**[UPDATE GUILD OWNER]**')
833 .setThumbnail(oldMember.guild.iconURL)
834 .setColor('GREEN')
835 .setDescription(`**\n**:white_check_mark: Successfully \`\`TRANSFER\`\` The Owner Ship.\n\n**Old Owner:** <@${oldMember.user.id}> (ID: ${oldMember.user.id})\n**New Owner:** <@${newMember.user.id}> (ID: ${newMember.user.id})`)
836 .setTimestamp()
837 .setFooter(oldMember.guild.name, oldMember.guild.iconURL)
838
839 logChannel.send(newOwner);
840 }
841});
842
843// Voice Logs
844client.on('voiceStateUpdate', (voiceOld, voiceNew) => {
845
846 if(!voiceOld.guild.member(client.user).hasPermission('EMBED_LINKS')) return;
847 if(!voiceOld.guild.member(client.user).hasPermission('VIEW_AUDIT_LOG')) return;
848
849 var logChannel = voiceOld.guild.channels.find(c => c.name === 'rex_log');
850 if(!logChannel) return;
851
852 voiceOld.guild.fetchAuditLogs().then(logs => {
853 var userID = logs.entries.first().executor.id;
854 var userTag = logs.entries.first().executor.tag;
855 var userAvatar = logs.entries.first().executor.avatarURL;
856
857// Server Muted Voice
858 if(voiceOld.serverMute === false && voiceNew.serverMute === true) {
859 let serverMutev = new Discord.RichEmbed()
860 .setTitle('**[VOICE MUTE]**')
861 .setThumbnail('https://images-ext-1.discordapp.net/external/pWQaw076OHwVIFZyeFoLXvweo0T_fDz6U5C9RBlw_fQ/https/cdn.pg.sa/UosmjqDNgS.png')
862 .setColor('RED')
863 .setDescription(`**User:** <@${voiceOld.user.id}> (ID: ${voiceOld.user.id})\n**By:** <@${userID}> (ID: ${userID})\n**Channel:** \`\`${voiceOld.voiceChannel.name}\`\` (ID: ${voiceOld.voiceChannel.id})`)
864 .setTimestamp()
865 .setFooter(userTag, userAvatar)
866
867 logChannel.send(serverMutev);
868 }
869// Server UnMuted Voice
870 if(voiceOld.serverMute === true && voiceNew.serverMute === false) {
871 let serverUnmutev = new Discord.RichEmbed()
872 .setTitle('**[VOICE UNMUTE]**')
873 .setThumbnail('https://images-ext-1.discordapp.net/external/u2JNOTOc1IVJGEb1uCKRdQHXIj5-r8aHa3tSap6SjqM/https/cdn.pg.sa/Iy4t8H4T7n.png')
874 .setColor('GREEN')
875 .setDescription(`**User:** <@${voiceOld.user.id}> (ID: ${voiceOld.user.id})\n**By:** <@${userID}> (ID: ${userID})\n**Channel:** \`\`${voiceOld.voiceChannel.name}\`\` (ID: ${voiceOld.voiceChannel.id})`)
876 .setTimestamp()
877 .setFooter(userTag, userAvatar)
878
879 logChannel.send(serverUnmutev);
880 }
881// Server Deafen Voice
882 if(voiceOld.serverDeaf === false && voiceNew.serverDeaf === true) {
883 let serverDeafv = new Discord.RichEmbed()
884 .setTitle('**[VOICE DEAFEN]**')
885 .setThumbnail('https://images-ext-1.discordapp.net/external/7ENt2ldbD-3L3wRoDBhKHb9FfImkjFxYR6DbLYRjhjA/https/cdn.pg.sa/auWd5b95AV.png')
886 .setColor('RED')
887 .setDescription(`**User:** <@${voiceOld.user.id}> (ID: ${voiceOld.user.id})\n**By:** <@${userID}> (ID: ${userID})\n**Channel:** \`\`${voiceOld.voiceChannel.name}\`\` (ID: ${voiceOld.voiceChannel.id})`)
888 .setTimestamp()
889 .setFooter(userTag, userAvatar)
890
891 logChannel.send(serverDeafv);
892 }
893// Server UnDeafen Voice
894 if(voiceOld.serverDeaf === true && voiceNew.serverDeaf === false) {
895 let serverUndeafv = new Discord.RichEmbed()
896 .setTitle('**[VOICE UNDEAFEN]**')
897 .setThumbnail('https://images-ext-2.discordapp.net/external/s_abcfAlNdxl3uYVXnA2evSKBTpU6Ou3oimkejx3fiQ/https/cdn.pg.sa/i7fC8qnbRF.png')
898 .setColor('GREEN')
899 .setDescription(`**User:** <@${voiceOld.user.id}> (ID: ${voiceOld.user.id})\n**By:** <@${userID}> (ID: ${userID})\n**Channel:** \`\`${voiceOld.voiceChannel.name}\`\` (ID: ${voiceOld.voiceChannel.id})`)
900 .setTimestamp()
901 .setFooter(userTag, userAvatar)
902
903 logChannel.send(serverUndeafv);
904 }
905 })
906// Join Voice Channel
907 if(voiceOld.voiceChannelID !== voiceNew.voiceChannelID && !voiceOld.voiceChannel) {
908 let voiceJoin = new Discord.RichEmbed()
909 .setTitle('**[JOIN VOICE ROOM]**')
910 .setColor('GREEN')
911 .setThumbnail(voiceOld.user.avatarURL)
912 .setDescription(`**\n**:arrow_lower_right: Successfully \`\`JOIN\`\` To Voice Channel.\n\n**Channel:** \`\`${voiceNew.voiceChannel.name}\`\` (ID: ${voiceNew.voiceChannelID})\n**User:** ${voiceOld} (ID: ${voiceOld.id})`)
913 .setTimestamp()
914 .setFooter(voiceOld.user.tag, voiceOld.user.avatarURL)
915
916 logChannel.send(voiceJoin);
917 }
918// Leave Voice Channel
919 if(voiceOld.voiceChannelID !== voiceNew.voiceChannelID && !voiceNew.voiceChannel) {
920 let voiceLeave = new Discord.RichEmbed()
921 .setTitle('**[LEAVE VOICE ROOM]**')
922 .setColor('GREEN')
923 .setThumbnail(voiceOld.user.avatarURL)
924 .setDescription(`**\n**:arrow_upper_left: Successfully \`\`LEAVE\`\` From Voice Channel.\n\n**Channel:** \`\`${voiceOld.voiceChannel.name}\`\` (ID: ${voiceOld.voiceChannelID})\n**User:** ${voiceOld} (ID: ${voiceOld.id})`)
925 .setTimestamp()
926 .setFooter(voiceOld.user.tag, voiceOld.user.avatarURL)
927
928 logChannel.send(voiceLeave);
929 }
930// Changed Voice Channel
931 if(voiceOld.voiceChannelID !== voiceNew.voiceChannelID && voiceNew.voiceChannel && voiceOld.voiceChannel != null) {
932 let voiceLeave = new Discord.RichEmbed()
933 .setTitle('**[CHANGED VOICE ROOM]**')
934 .setColor('GREEN')
935 .setThumbnail(voiceOld.user.avatarURL)
936 .setDescription(`**\n**:repeat: Successfully \`\`CHANGED\`\` The Voice Channel.\n\n**From:** \`\`${voiceOld.voiceChannel.name}\`\` (ID: ${voiceOld.voiceChannelID})\n**To:** \`\`${voiceNew.voiceChannel.name}\`\` (ID: ${voiceNew.voiceChannelID})\n**User:** ${voiceOld} (ID: ${voiceOld.id})`)
937 .setTimestamp()
938 .setFooter(voiceOld.user.tag, voiceOld.user.avatarURL)
939
940 logChannel.send(voiceLeave);
941 }
942});
943
944client.on('message', message => {
945 var prefix = "$";
946 if (message.author.kick) return;
947 if (!message.content.startsWith(prefix)) return;
948
949 let command = message.content.split(" ")[0];
950 command = command.slice(prefix.length);
951
952 let args = message.content.split(" ").slice(1);
953
954 if (command == "kick") {
955 if (!message.channel.guild) return;
956
957 if(!message.guild.member(message.author).hasPermission("KICK_MEMBERS")) return message.reply("You Don't Have KICK_MEMBERS Permission").then(msg => msg.delete(5000));
958 if(!message.guild.member(client.user).hasPermission("KICK_MEMBERS")) return message.reply("I Don't Have KICK_Members Permission");
959 let user = message.mentions.users.first();
960 let reason = message.content.split(" ").slice(2).join(" ");
961
962 if (message.mentions.users.size < 1) return message.reply("**➥ Useage:** $kick \`\`@Name\`\`");
963 if(!reason) return message.reply ("Type The Reason Please");
964 if (!message.guild.member(user)
965 .bannable) return message.reply("I can not be higher than my rank");
966
967 message.guild.member(user).kick(7, user);
968 message.channel.send(`**:white_check_mark: ${user} has been kicked ! **`)
969 user.send(`**You are has been kicked in ${message.guild.name} reason: ${reason}**`)
970 message.delete()
971 }
972 });
973
974client.on('message', message => {
975 var prefix = "$"
976 if (message.author.x5bz) return;
977 if (!message.content.startsWith(prefix)) return;
978
979 let command = message.content.split(" ")[0];
980 command = command.slice(prefix.length);
981
982 let args = message.content.split(" ").slice(1);
983
984 if (command == "ban") {
985 if(!message.channel.guild) return message.reply('** This command only for servers**');
986
987 if(!message.guild.member(message.author).hasPermission("BAN_MEMBERS")) return message.reply("**You Don't Have ` BAN_MEMBERS ` Permission**");
988 if(!message.guild.member(client.user).hasPermission("BAN_MEMBERS")) return message.reply("**I Don't Have ` BAN_MEMBERS ` Permission**");
989 let user = message.mentions.users.first();
990 let reason = message.content.split(" ").slice(2).join(" ");
991 /*let b5bzlog = client.channels.find("name", "5bz-log");
992 if(!b5bzlog) return message.reply("I've detected that this server doesn't have a 5bz-log channel.");*/
993 if (message.mentions.users.size < 1) return message.reply("**➥ Useage:** $ban \`\`@Name\`\`");
994 if(!reason) return message.reply ("Type The Reason Please");
995 if (!message.guild.member(user)
996 .bannable) return message.reply("I can not be higher than my rank");
997
998 message.guild.member(user).ban(7, user);
999
1000 const banembed = new Discord.RichEmbed()
1001 .setAuthor(`BANNED!`, user.displayAvatarURL)
1002 .setColor("RANDOM")
1003 .setTimestamp()
1004 .addField("**User:**", '**[ ' + `${user.tag}` + ' ]**')
1005 .addField("**By:**", '**[ ' + `${message.author.tag}` + ' ]**')
1006 .addField("**Reason:**", '**[ ' + `${reason}` + ' ]**')
1007 message.channel.send({
1008 embed : banembed
1009 })
1010}
1011});
1012
1013
1014client.on('message',message =>{
1015 var command = message.content.toLowerCase().split(" ")[0];
1016 var args = message.content.toLowerCase().split(" ");
1017 var userM = message.mentions.users.first()
1018 if(command == prefix + 'unban') {
1019 if(!message.member.hasPermission('BAN_MEMBERS')) return message.channel.send(':no_entry: | You dont have **BAN_MEMBERS** Permission!');
1020 if(!message.guild.member(client.user).hasPermission("BAN_MEMBERS")) return message.channel.send(':no_entry: | I dont have **BAN_MEMBERS** Permission!');
1021 if(!args[1]) return message.channel.send(':no_entry: | Please type the ID of user');
1022 if(args[1].length < 16) return message.reply(':no_entry: | This ID is not id user!');
1023 message.guild.fetchBans().then(bans => {
1024 var Found = bans.find(m => m.id === args[1]);
1025 if(!Found) return message.channel.send(`:no_entry: | <@${message.author.id}> This preson not have any ban from this server! :unlock:`);
1026 message.guild.unban(args[1]);
1027 message.channel.send(`:white_check_mark: Successfully \`\`UNBANNED\`\` <@${args[1]}> From the server!`);
1028
1029 let banInfo = new Discord.RichEmbed()
1030 .setTitle('**New Unbanned User !**')
1031 .setThumbnail(message.author.avatarURL)
1032 .setColor('GREEN')
1033 .setDescription(`**\n:airplane: Successfully \`\`UNBANNED\`\` <@${args[1]}> From the server!\n\n**User:** <@${args[1]}> (ID: ${args[1]})\n**By:** <@${message.author.id}> (ID: ${message.author.id})`)
1034 .setTimestamp()
1035 .setFooter(userM.user.tag, userM.user.avatarURL)
1036
1037 let incidentchannel = message.guild.channels.find(`name`, "rex_log");
1038 if(!incidentchannel) return message.channel.send("Can't find rex_log channel.");
1039 incidentchannel.send(banEmbed);
1040 }
1041
1042 )}
1043 })
1044
1045
1046client.on('message', msg => {
1047 if(msg.content === "$help")
1048 var embed = new Discord.RichEmbed()
1049 .setDescription(`**• __General Commands__ :
1050\`\`$user\`\` , \`\`$ping\`\` , \`\`$support\`\` , \`\`$invite\`\` , \`\`$avatar\`\` , \`\`$image\`\` , \`\`$members\`\`
1051• __Staff Commands__ :
1052\`\`$kick\`\` , \`\`$ban\`\` , \`\`$unban\`\` , \`\`$mute\`\` , \`\`$unmute\`\` , \`\`$server\`\` , \`\`$lock\`\` , \`\`$unlock\`\`
1053• __Personal Commands__ :
1054\`\`$credit\`\` , \`\`$daily\`\`
1055• __Safety Commands__ :
1056\`\`$antibots\`\` , \`\`$antihack\`\`
1057• __Music Commands__ :
1058\`\`$play\`\` , \`\`$skip\`\` , \`\`$stop\`\` , \`\`$pause\`\` , \`\`$resume\`\` , \`\`$volume\`\` , \`\`$queue\`\` , \`\`$repeat\`\`
1059**`)
1060.setFooter('RexBot ✨')
1061msg.channel.send(embed)
1062})
1063
1064client.on("guildCreate", async guild => {
1065 let guildCreateChannel = client.channels.get("580448608873349151");
1066
1067
1068
1069 let joinEmbed = new Discord.RichEmbed()
1070 .setThumbnail(guild.iconURL) // هنا هيديك صورة السيرفر
1071 .setAuthor(`RexBot ✨ Joined A Server ✅`)
1072 .setDescription(`**
1073 Server name: __${guild.name}__
1074 Server id: __${guild.id}__
1075 Server owner: __${guild.owner}__
1076 Members Count: __${guild.memberCount}__
1077 Servers Counter : __${client.guilds.size}__**`)
1078
1079 guildCreateChannel.send(joinEmbed);
1080
1081});
1082
1083client.on("guildDelete", async guild => {
1084 let guildCreateDelete = client.channels.get("580448631178395695");
1085
1086 let leaveEmbed = new Discord.RichEmbed()
1087 .setThumbnail(guild.iconURL)
1088 .setAuthor(`RexBot ✨ left A Server ❎`)
1089 .setDescription(`**
1090 Server name: __${guild.name}__
1091 Server id: __${guild.id}__
1092 Server owner: __${guild.owner}__
1093 Members Count: __${guild.memberCount}__
1094 Servers Counter : __${client.guilds.size}__**`)
1095 guildCreateDelete.send(leaveEmbed);
1096});
1097
1098client.on('message', message => {
1099 let em1 = client.guilds.get("580441619405340692").emojis.find(r => r.name === "partner");
1100
1101 if(message.content === "$support")
1102 message.channel.send(`${em1} | **Server Support** : \nhttps://discord.gg/YGYXRV6 `)
1103});
1104
1105//invite
1106client.on('message', message => {
1107 let em1 = client.guilds.get("580441619405340692").emojis.find(r => r.name === "partner");
1108
1109
1110 if(message.content === "$invite")
1111 message.channel.send(`${em1} | **Bot Invite** : \nhttps://discordapp.com/oauth2/authorize?client_id=580123833478938629&permissions=2080374975&scope=bot`)
1112});
1113
1114client.on('message', message => {
1115 let em1 = client.guilds.get("580441619405340692").emojis.find(r => r.name === "partner");
1116
1117
1118 if(message.content === "$inv")
1119 message.channel.send(`${em1} | **Bot Invite** : \nhttps://discordapp.com/oauth2/authorize?client_id=580123833478938629&permissions=2080374975&scope=bot`)
1120});
1121
1122client.on('message', message => {
1123 if (message.author.bot) return;
1124 var prefix = "$";
1125 if (!message.content.startsWith(prefix)) return;
1126 let command = message.content.split(" ")[0];
1127 command = command.slice(prefix.length);
1128 let args = message.content.split(" ").slice(1);
1129 if (command == "mute") {
1130 if(!message.channel.guild) return message.reply(':no_entry: | This Command For Servers Only!');
1131 if(!message.member.hasPermission('MANAGE_ROLES')) return message.channel.send(':no_entry: | You dont have **MANAGE_ROLES** Permission!');
1132 if(!message.guild.member(client.user).hasPermission('MANAGE_ROLES')) return message.channel.send(':no_entry: | I dont have **MANAGE_ROLES** Permission!');
1133 let user = message.mentions.users.first();
1134 let muteRole = message.guild.roles.find("name", "Muted");
1135 if (!muteRole) return message.reply(":no_entry: Error | I Cant find 'Muted' Role").then(msg => {msg.delete(5000)});
1136 if (message.mentions.users.size < 1) return message.reply('**➥ Useage:** $mute \`\`@Name\`\` reason');
1137 let reason = message.content.split(" ").slice(2).join(" ");
1138 message.guild.member(user).addRole(muteRole);
1139 const muteembed = new Discord.RichEmbed()
1140 .setColor("RANDOM")
1141 .setAuthor(`Muted!`, user.displayAvatarURL)
1142 .setThumbnail(user.displayAvatarURL)
1143 .addField("**:busts_in_silhouette: المستخدم**", '**[ ' + `${user.tag}` + ' ]**',true)
1144 .addField("**:hammer: تم بواسطة **", '**[ ' + `${message.author.tag}` + ' ]**',true)
1145 .addField("**:book: السبب**", '**[ ' + `${reason}` + ' ]**',true)
1146 .addField("User", user, true)
1147 .setTitle('**[MUTED]**')
1148 .setThumbnail(message.author.avatarURL)
1149 .setColor('GREEN')
1150 .setDescription(`**\n:zipper_mouth: Successfully \`\`MUTED\`\` **${user.username}** From the server!\n\n**User:** <@${user.id}> (ID: ${user.id})\n**By:** <@${message.author.id}> (ID: ${message.author.id})\n**Reason:** \`\`${reason}\`\``)
1151 .setTimestamp()
1152 .setFooter(user.tag, user.avatarURL)
1153 client.channels.find('name', "rex_log").send({embed : muteembed});
1154 }
1155
1156 if (command == "unmute") {
1157 if(!message.channel.guild) return message.reply(':no_entry: | This Command For Servers Only!');
1158 if(!message.member.hasPermission('MANAGE_ROLES')) return message.channel.send(':no_entry: | You dont have **MANAGE_ROLES** Permission!');
1159 if(!message.guild.member(client.user).hasPermission('MANAGE_ROLES')) return message.channel.send(':no_entry: | I dont have **MANAGE_ROLES** Permission!');
1160 let user = message.mentions.users.first();
1161 let muteRole = message.guild.roles.find("name", "Muted");
1162 if (!muteRole) return message.reply(":no_entry: Error | I Cant find 'Muted' Role").then(msg => {msg.delete(5000)});
1163 if (message.mentions.users.size < 1) return message.reply('**➥ Useage:** $unmute \`\`@Name\`\`');
1164 let reason = message.content.split(" ").slice(2).join(" ");
1165 message.guild.member(user).removeRole(muteRole);
1166 const unmuteembed = new Discord.RichEmbed()
1167 .setTitle('**[UNMUTED]**')
1168 .setThumbnail(message.author.avatarURL)
1169 .setColor('GREEN')
1170 .setDescription(`**\n:zipper_mouth: Successfully \`\`UNMUTED\`\` **${user.username}** From the server!\n\n**User:** <@${user.id}> (ID: ${user.id})\n**By:** <@${message.author.id}> (ID: ${message.author.id})`)
1171 .setTimestamp()
1172 .setFooter(user.tag, user.avatarURL)
1173 client.channels.find('name', "rex_log").send({embed : unmuteembed});
1174 }
1175 });
1176
1177client.on('warn', console.warn);
1178
1179client.commands = new Discord.Collection();
1180client.aliases = new Discord.Collection();
1181
1182client.on('error', console.error);
1183
1184let active = new Map();
1185
1186client.on('message', async msg => {
1187 if(msg.author.bot) return undefined;
1188
1189
1190 const prefixMention = new RegExp(`^<@!?${client.user.id}>( |)$`);
1191 if (msg.content.match(prefixMention)) {
1192 return msg.reply(`My prefix is \`${prefix}\``);
1193 }
1194
1195if(!msg.content.startsWith(prefix)) return undefined;
1196
1197 const args = msg.content.slice(prefix.length).trim().split(/ +/g);
1198const command = args.shift().toLowerCase();
1199
1200 const url = args[1] ? args[1].replace(/<(.+)>/g, '$1') : '';
1201
1202 let cmds = {
1203 play: { cmd: 'play', a: ['p'] },
1204 skip: { cmd: 'skip', a: ['s'] },
1205 stop: { cmd: 'stop' },
1206 pause: { cmd: 'pause' },
1207 resume: { cmd: 'resume', a: ['r'] },
1208 volume: { cmd: 'volume', a: ['vol'] },
1209 queue: { cmd: 'queue', a: ['q'] },
1210 repeat: { cmd: 'repeat', a: ['re'] },
1211 forceskip: { cmd: 'forceskip', a: ['fs', 'fskip'] },
1212 skipto: { cmd: 'skipto', a: ['st'] }
1213 };
1214
1215 Object.keys(cmds).forEach(key => {
1216 var value = cmds[key];
1217 var command = value.cmd;
1218 client.commands.set(command, command);
1219
1220 if(value.a) {
1221 value.a.forEach(alias => {
1222 client.aliases.set(alias, command)
1223 })
1224 }
1225 })
1226
1227 let cmd = client.commands.get(command) || client.commands.get(client.aliases.get(command))
1228
1229 if(cmd === 'play') {
1230 const voiceChannel = msg.member.voiceChannel;
1231 if(!voiceChannel) return msg.channel.send(`:no_entry_sign: You must be listening in a voice channel to use that!`);
1232 const permissions = voiceChannel.permissionsFor(msg.client.user);
1233 if(!permissions.has('CONNECT')) {
1234 return msg.channel.send(`:no_entry_sign: I can't join Your voiceChannel because i don't have ` + '`' + '`CONNECT`' + '`' + ` permission!`);
1235 }
1236
1237 if(!permissions.has('SPEAK')) {
1238 return msg.channel.send(`:no_entry_sign: I can't SPEAK in your voiceChannel because i don't have ` + '`' + '`SPEAK`' + '`' + ` permission!`);
1239 }
1240
1241 if (url.match(/^https?:\/\/(www.youtube.com|youtube.com)\/playlist(.*)$/)) {
1242 const playlist = await youtube.getPlaylist(url);
1243 const videos = await playlist.getVideos();
1244
1245 for (const video of Object.values(videos)) {
1246 const video2 = await youtube.getVideoByID(video.id); // eslint-disable-line no-await-in-loop
1247 await handleVideo(video2, msg, voiceChannel, true); // eslint-disable-line no-await-in-loop
1248 }
1249 return msg.channel.send(`Added to queue: ${playlist.title}`);
1250 } else {
1251 try {
1252
1253 var video = await youtube.getVideo(url);
1254 } catch (error) {
1255 try {
1256 var videos = await youtube.searchVideos(args, 1);
1257
1258 // eslint-disable-next-line max-depth
1259 var video = await youtube.getVideoByID(videos[0].id);
1260 } catch (err) {
1261 console.error(err);
1262 return msg.channel.send('I can\'t find any thing');
1263 }
1264 }
1265
1266 return handleVideo(video, msg, voiceChannel);
1267 }
1268
1269 async function handleVideo(video, msg, voiceChannel, playlist = false) {
1270 const serverQueue = active.get(msg.guild.id);
1271
1272
1273// console.log('yao: ' + Util.escapeMarkdown(video.thumbnailUrl));
1274
1275let hrs = video.duration.hours == 1 ? (video.duration.hours > 9 ? `${video.duration.hours}:` : `0${video.duration.hours}:`) : '';
1276let min = video.duration.minutes > 9 ? `${video.duration.minutes}:` : `0${video.duration.minutes}:`;
1277let sec = video.duration.seconds > 9 ? `${video.duration.seconds}` : `0${video.duration.seconds}`;
1278let dur = `${hrs}${min}${sec}`
1279
1280 const song = {
1281 id: video.id,
1282 title: video.title,
1283 duration: dur,
1284 url: `https://www.youtube.com/watch?v=${video.id}`
1285 };
1286 if (!serverQueue) {
1287 const queueConstruct = {
1288 textChannel: msg.channel,
1289 voiceChannel: voiceChannel,
1290 connection: null,
1291 songs: [],
1292 volume: 50,
1293 playing: true,
1294 repeating: false
1295 };
1296 active.set(msg.guild.id, queueConstruct);
1297
1298 queueConstruct.songs.push(song);
1299
1300 try {
1301 var connection = await voiceChannel.join();
1302 queueConstruct.connection = connection;
1303 play(msg.guild, queueConstruct.songs[0]);
1304 } catch (error) {
1305 console.error(`I could not join the voice channel: ${error}`);
1306 active.delete(msg.guild.id);
1307 return msg.channel.send(`I cant join this voice channel`);
1308 }
1309 } else {
1310 serverQueue.songs.push(song);
1311
1312 if (playlist) return undefined;
1313 if(!args) return message.channel.send('no results.');
1314 else return msg.channel.send(':watch: Loading... [`' + args + '`]').then(m => {
1315 setTimeout(() => {//:watch: Loading... [let]
1316 m.edit(`:notes: Added **${song.title}**` + '(` ' + song.duration + ')`' + ` to the queue at position ` + `${serverQueue.songs.length}`);
1317 }, 500)
1318 }) //:notes: Added FROZEN | Let It Go Sing-along | Official Disney UK (04:03) to the queue at position 1
1319 }
1320 return undefined;
1321}
1322
1323function play(guild, song) {
1324 const serverQueue = active.get(guild.id);
1325
1326 if (!song) {
1327 serverQueue.voiceChannel.leave();
1328 active.delete(guild.id);
1329 return;
1330 }
1331 console.log(serverQueue.songs);
1332 if(serverQueue.repeating) {
1333 serverQueue.textChannel.send(`**Repeating:** ${song.title}`);
1334 } else {
1335 serverQueue.textChannel.send(':notes: Added **' + song.title + '** (`' + song.duration + '`) to begin playing.');
1336}
1337 const dispatcher = serverQueue.connection.playStream(ytdl(song.url))
1338 .on('end', reason => {
1339 if (reason === 'Stream is not generating quickly enough.') console.log('Song ended.');
1340 else console.log(reason);
1341 if(serverQueue.repeating) return play(guild, serverQueue.songs[0])
1342 serverQueue.songs.shift();
1343 play(guild, serverQueue.songs[0]);
1344 })
1345 .on('error', error => console.error(error));
1346 dispatcher.setVolumeLogarithmic(serverQueue.volume / 100);
1347
1348
1349}
1350} else if(cmd === 'stop') {
1351 if(msg.guild.me.voiceChannel !== msg.member.voiceChannel) return msg.channel.send(`You must be in ${msg.guild.me.voiceChannel.name}`)
1352 if(!msg.member.hasPermission('ADMINISTRATOR')) {
1353 msg.react('❌')
1354 return msg.channel.send('You don\'t have permission `ADMINSTRATOR`');
1355 }
1356 let queue = active.get(msg.guild.id);
1357 queue.voiceChannel.leave();
1358 return msg.channel.send(':notes: The player has stopped and the queue has been cleared.');
1359
1360 } else if(cmd === 'skip') {
1361
1362 let vCh = msg.member.voiceChannel;
1363
1364 let queue = active.get(msg.guild.id);
1365
1366 if(!vCh) return msg.channel.send('Sorry, but you can\'t because you are not in voice channel');
1367
1368 if(!queue) return msg.channel.send('No music playing to skip it');
1369
1370 if(queue.repeating) return msg.channel.send('You can\'t skip it, because repeating mode is on, run ' + `\`${prefix}forceskip\``);
1371
1372 let req = vCh.members.size - 1;
1373
1374 if(req == 1) {
1375 msg.channel.send('**:notes: Skipped **' + args);
1376 return queue.connection.dispatcher.end('Skipping ..')
1377 }
1378
1379 if(!queue.votes) queue.votes = [];
1380
1381 if(queue.votes.includes(msg.member.id)) return msg.say(`You already voted for skip! ${queue.votes.length}/${req}`);
1382
1383 queue.votes.push(msg.member.id);
1384
1385 if(queue.votes.length >= req) {
1386 msg.channel.send('**:notes: Skipped **' + args);
1387
1388 delete queue.votes;
1389
1390 return queue.connection.dispatcher.end('Skipping ..')
1391 }
1392
1393 msg.channel.send(`**You have successfully voted for skip! ${queue.votes.length}/${req}**`)
1394
1395 } else if(cmd === 'pause') {
1396
1397 let queue = active.get(msg.guild.id);
1398
1399 let vCh = msg.member.voiceChannel;
1400
1401 if(!vCh || vCh !== msg.guild.me.voiceChannel) return msg.channel.send(`You are not in my voice channel.`);
1402
1403 if(!queue) {
1404 return msg.channel.send('No music playing to pause.')
1405 }
1406
1407 if(!queue.playing) return msg.channel.send(':no_entry_sign: There must be music playing to use that!')
1408
1409 let disp = queue.connection.dispatcher;
1410
1411 disp.pause('Pausing..')
1412
1413 queue.playing = false;
1414
1415 msg.channel.send(':notes: Paused ' + args + '. **Type** `' + prefix + 'resume` to unpause!')
1416
1417 } else if (cmd === 'resume') {
1418
1419 let queue = active.get(msg.guild.id);
1420
1421 let vCh = msg.member.voiceChannel;
1422
1423 if(!vCh || vCh !== msg.guild.me.voiceChannel) return msg.channel.send(`You are not in my voice channel.`);
1424
1425 if(!queue) return msg.channel.send(':notes: No music paused to resume.')
1426
1427 if(queue.playing) return msg.channel.send(':notes: No music paused to resume.')
1428
1429 let disp = queue.connection.dispatcher;
1430
1431 disp.resume('Resuming..')
1432
1433 queue.playing = true;
1434
1435 msg.channel.send(':notes: Resumed ' + args + '.')
1436
1437 } else if(cmd === 'volume') {
1438
1439 let queue = active.get(msg.guild.id);
1440
1441 if(!queue || !queue.songs) return msg.channel.send(':notes: There is no music playing to set volume.');
1442
1443 let vCh = msg.member.voiceChannel;
1444
1445 if(!vCh || vCh !== msg.guild.me.voiceChannel) return msg.channel.send(':notes: You are not in my voice channel');
1446
1447 let disp = queue.connection.dispatcher;
1448
1449 if(isNaN(args[0])) return msg.channel.send(':notes: Numbers only!');
1450
1451 if(parseInt(args[0]) > 100) return msg.channel.send('You can\'t set the volume more than 100.')
1452//:speaker: Volume changed from 20 to 20 ! The volume has been changed from ${queue.volume} to ${args[0]}
1453 msg.channel.send(':speaker: Volume has been **changed** from (`' + queue.volume + '`) to (`' + args[0] + '`)');
1454
1455 queue.volume = args[0];
1456
1457 disp.setVolumeLogarithmic(queue.volume / 100);
1458
1459 } else if (cmd === 'queue') {
1460
1461 let queue = active.get(msg.guild.id);
1462
1463 if(!queue) return msg.channel.send(':no_entry_sign: There must be music playing to use that!');
1464
1465 let embed = new Discord.RichEmbed()
1466 .setAuthor(`${client.user.username}`, client.user.displayAvatarURL)
1467 let text = '';
1468
1469 for (var i = 0; i < queue.songs.length; i++) {
1470 let num;
1471 if((i) > 8) {
1472 let st = `${i+1}`
1473 console.log(st);
1474 let n1 = conv.toWords(st[0])
1475 let n2 = conv.toWords(st[1])
1476 num = `:${n1}::${n2}:`
1477 } else {
1478 let n = conv.toWords(i+1)
1479 num = `:${n}:`
1480 }
1481 text += `${num} ${queue.songs[i].title} [${queue.songs[i].duration}]\n`
1482 }
1483 embed.setDescription(`Songs Queue | ${msg.guild.name}\n\n ${text}`)
1484 msg.channel.send(embed)
1485
1486 } else if(cmd === 'repeat') {
1487
1488 let vCh = msg.member.voiceChannel;
1489
1490 if(!vCh || vCh !== msg.guild.me.voiceChannel) return msg.channel.send('You are not in my voice channel');
1491
1492 let queue = active.get(msg.guild.id);
1493
1494 if(!queue || !queue.songs) return msg.channel.send('There is no music playing to repeat it.');
1495
1496 if(queue.repeating) {
1497 queue.repeating = false;
1498 return msg.channel.send(':arrows_counterclockwise: **Repeating Mode** (`False`)');
1499 } else {
1500 queue.repeating = true;
1501 return msg.channel.send(':arrows_counterclockwise: **Repeating Mode** (`True`)');
1502 }
1503
1504 } else if(cmd === 'forceskip') {
1505
1506 let vCh = msg.member.voiceChannel;
1507
1508 if(!vCh || vCh !== msg.guild.me.voiceChannel) return msg.channel.send('You are not in my voice channel');
1509
1510 let queue = active.get(msg.guild.id);
1511
1512 if(queue.repeating) {
1513
1514 queue.repeating = false;
1515
1516 msg.channel.send('ForceSkipped, Repeating mode is on.')
1517
1518 queue.connection.dispatcher.end('ForceSkipping..')
1519
1520 queue.repeating = true;
1521
1522 } else {
1523
1524 queue.connection.dispatcher.end('ForceSkipping..')
1525
1526 msg.channel.send('ForceSkipped.')
1527
1528 }
1529
1530 } else if(cmd === 'skipto') {
1531
1532 let vCh = msg.member.voiceChannel;
1533
1534 if(!vCh || vCh !== msg.guild.me.voiceChannel) return msg.channel.send('You are not in my voice channel');
1535
1536 let queue = active.get(msg.guild.id);
1537
1538 if(!queue.songs || queue.songs < 2) return msg.channel.send('There is no music to skip to.');
1539
1540 if(queue.repeating) return msg.channel.send('You can\'t skip, because repeating mode is on, run ' + `\`${prefix}repeat\` to turn off.`);
1541
1542 if(!args[0] || isNaN(args[0])) return msg.channel.send('Please input song number to skip to it, run ' + prefix + `queue` + ' to see songs numbers.');
1543
1544 let sN = parseInt(args[0]) - 1;
1545
1546 if(!queue.songs[sN]) return msg.channel.send('There is no song with this number.');
1547
1548 while (0 < sN) {
1549 queue.songs.shift();
1550 }
1551
1552 msg.channel.send(`Skipped to: **${queue.songs[0].title}[${queue.songs[0].duration}]**`)
1553
1554 queue.connection.dispatcher.end('SkippingTo..')
1555
1556 }
1557
1558});
1559
1560
1561//////كود طرد البوتات
1562let antihack = JSON.parse(fs.readFileSync('./antihack.json' , 'utf8'));//require antihack.json file
1563client.on('message', message => {
1564 if(message.content.startsWith(prefix + "antihack")) {
1565 if(!message.channel.guild) return message.reply('**This Command Only For Servers**');
1566 if(!message.member.hasPermission('MANAGE_GUILD')) return message.channel.send('**Sorry But You Dont Have Permission** `MANAGE_GUILD`' );
1567 if(!antihack[message.guild.id]) antihack[message.guild.id] = {
1568 onoff: 'Off'
1569 }
1570 if(antihack[message.guild.id].onoff === 'Off') return [message.channel.send(`**⛔ The AntiJoin Is __??__ !**`), antihack[message.guild.id].onoff = 'On']
1571 if(antihack[message.guild.id].onoff === 'On') return [message.channel.send(`**⛔ The AntiJoin Is __???__ !**`), antihack[message.guild.id].onoff = 'Off']
1572 fs.writeFile("./antihack.json", JSON.stringify(antihack), (err) => {
1573 if (err) console.error(err)
1574 .catch(err => {
1575 console.error(err);
1576 });
1577 });
1578 }
1579
1580 })
1581 //antihack with ON , OFF ! RARE CODE
1582 //LIKE PLUSBOT !
1583
1584 let banse = new Set();
1585 let bane = JSON.parse(fs.readFileSync('./data1.json' , 'utf8'));//require data1.json
1586 client.on('guildBanAdd', function(guild) {
1587 guild.fetchAuditLogs().then(logs => {
1588 const ser = logs.entries.first().executor;
1589 if(!bane[ser.id+guild.id]) bane[ser.id+guild.id] = {
1590 bans: 2
1591 }
1592 if(antihack[guild.guild.id].onoff === 'Off') return;
1593 let boner = bane[ser.id+guild.id]
1594 banse.add(ser.id)
1595 boner.bans = Math.floor(boner.bans+1)
1596
1597
1598 setTimeout(() => {
1599 boner.bans = 2
1600 banse.delete(ser.id)
1601 },8000)
1602
1603 if(boner.bans > 2) {
1604 let roles = guild.members.get(ser.id).roles.array()
1605 guild.members.get(ser.id).removeRoles(roles)
1606 }
1607
1608 })
1609 fs.writeFile('./data1.json', JSON.stringify(bane), (err) => {
1610 if (err) console.error(err);
1611 })
1612
1613 })
1614 client.on('guildMemberRemove', (u) => {
1615 u.guild.fetchAuditLogs().then( s => {
1616 var ss = s.entries.first();
1617 if (ss.action == `MEMBER_KICK`) {
1618 if (!data[ss.executor.id]) {
1619 data[ss.executor.id] = {
1620 time : 1
1621 };
1622 if(antihack[u.guild.id].onoff === 'Off') return;
1623
1624 } else {
1625 data[ss.executor.id].time+=1
1626 };
1627 if(antihack[u.guild.id].onoff === 'Off') return;
1628 data[ss.executor.id].time = 0
1629 u.guild.members.get(ss.executor.id).roles.forEach(r => {
1630 r.edit({
1631 permissions : []
1632 });
1633 data[ss.executor.id].time = 0
1634 });
1635 setTimeout(function(){
1636 if (data[ss.executor.id].time <= 3) {
1637 data[ss.executor.id].time = 0
1638 }
1639 })
1640 };
1641 });
1642 const data = require("./data.json");
1643 });
1644 client.on('roleDelete', (u) => {
1645 u.guild.fetchAuditLogs().then( s => {
1646 var ss = s.entries.first();
1647 if (ss.action == `ROLE_DELETE`) {
1648 if (!data[ss.executor.id]) {
1649 data[ss.executor.id] = {
1650 time : 1
1651 };
1652 if(antihack[u.guild.id].onoff === 'Off') return;
1653
1654 } else {
1655 data[ss.executor.id].time+=1
1656 };
1657 if(antihack[u.guild.id].onoff === 'Off') return;
1658
1659 data[ss.executor.id].time = 0
1660 u.guild.members.get(ss.executor.id).roles.forEach(r => {
1661 r.edit({
1662 permissions : []
1663 });
1664 data[ss.executor.id].time = 0
1665 });
1666 setTimeout(function(){
1667 if (data[ss.executor.id].time <= 3) {
1668 data[ss.executor.id].time = 0
1669 }
1670 },60000)
1671 };
1672 });
1673 const data = require("./data.json");
1674 });
1675 client.on('channelDelete', (u) => {
1676 u.guild.fetchAuditLogs().then( s => {
1677 var ss = s.entries.first();
1678 if (ss.action == `CHANNEL_DELETE`) {
1679 if (!data[ss.executor.id]) {
1680 data[ss.executor.id] = {
1681 time : 1
1682 };
1683 if(antihack[u.guild.id].onoff === 'Off') return;
1684 } else {
1685 data[ss.executor.id].time+=1
1686 };
1687 if(antihack[u.guild.id].onoff === 'Off') return;
1688 data[ss.executor.id].time = 0
1689 u.guild.members.get(ss.executor.id).roles.forEach(r => {
1690 r.edit({
1691 permissions : []
1692 });
1693 data[ss.executor.id].time = 0
1694 });
1695 setTimeout(function(){
1696 if (data[ss.executor.id].time <= 3) { //Toxic Codes
1697 data[ss.executor.id].time = 0
1698 }
1699 })
1700 };
1701 });
1702 const data = require("./data.json");
1703 })
1704 let antibots = JSON.parse(fs.readFileSync('./antibots.json' , 'utf8'));//require antihack.json file
1705 client.on('message', message => {
1706 if(message.content.startsWith(prefix + "antibots on")) {
1707 if(!message.channel.guild) return message.reply('**This Command Only For Servers**');
1708 if(!message.member.hasPermission('ADMINISTRATOR')) return message.channel.send('**Sorry But You Dont Have Permission** `ADMINISTRATOR`' );
1709antibots[message.guild.id] = {
1710onoff: 'On',
1711}
1712message.channel.send(`**⛔ The AntiJoin Is __??__ !**`)
1713 fs.writeFile("./antibots.json", JSON.stringify(antibots), (err) => {
1714 if (err) console.error(err)
1715 .catch(err => {
1716 console.error(err);
1717 });
1718 });
1719 }
1720
1721
1722 if(message.content.startsWith(prefix + "antibots off")) {
1723 if(!message.channel.guild) return message.reply('**This Command Only For Servers**');
1724 if(!message.member.hasPermission('ADMINISTRATOR')) return message.channel.send('**Sorry But You Dont Have Permission** `ADMINISTRATOR`' );
1725antibots[message.guild.id] = {
1726onoff: 'Off',
1727}
1728message.channel.send(`**⛔ The AntiJoin Is __???__ !**`)
1729 fs.writeFile("./antibots.json", JSON.stringify(antibots), (err) => {
1730 if (err) console.error(err)
1731 .catch(err => {
1732 console.error(err);
1733 });
1734 });
1735 }
1736
1737 })
1738
1739client.on("guildMemberAdd", member => {
1740 if(!antibots[member.guild.id]) antibots[member.guild.id] = {
1741onoff: 'Off'
1742}
1743 if(antibots[member.guild.id].onoff === 'Off') return;
1744if(member.user.bot) return member.kick()
1745})
1746
1747fs.writeFile("./antibott.json", JSON.stringify(antibots), (err) => {
1748if (err) console.error(err)
1749.catch(err => {
1750console.error(err);
1751});
1752})
1753
1754//////كود منع التخريب
1755
1756var config = {
1757 events: [
1758 {type: "CHANNEL_CREATE", logType: "CHANNEL_CREATE", limit: 3 , delay: 5000},
1759 {type: "CHANNEL_DELETE", logType: "CHANNEL_DELETE", limit: 3, delay: 5000},
1760 {type: "GUILD_MEMBER_REMOVE", logType: "MEMBER_KICK", limit: 3, delay: 5000},
1761 {type: "GUILD_BAN_ADD", logType: "MEMBER_BAN_ADD", limit: 3, delay: 5000},
1762 {type: "GUILD_ROLE_CREATE", logType: "ROLE_CREATE", limit: 3, delay: 5000},
1763 {type: "GUILD_ROLE_DELETE", logType: "ROLE_DELETE", limit: 3, delay: 5000},
1764 ]
1765}
1766client.on("error", (e) => console.error(e));
1767client.on("raw", (packet)=> {
1768 let {t, d} = packet, type = t, {guild_id} = data = d || {};
1769 if (type === "READY") {
1770 client.startedTimestamp = new Date().getTime();
1771 client.captures = [];
1772 }
1773 let event = config.events.find(anEvent => anEvent.type === type);
1774 if (!event) return;
1775 let guild = client.guilds.get(guild_id);
1776 if (!guild) return;
1777 guild.fetchAuditLogs({limit : 1, type: event.logType})
1778 .then(eventAudit => {
1779 let eventLog = eventAudit.entries.first();
1780 if (!eventLog) return;
1781 let executor = eventLog.executor;
1782 guild.fetchAuditLogs({type: event.logType, user: executor})
1783 .then((userAudit, index) => {
1784 let uses = 0;
1785 userAudit.entries.map(entry => {
1786 if (entry.createdTimestamp > client.startedTimestamp && !client.captures.includes(index)) uses += 1;
1787 });
1788 setTimeout(() => {
1789 client.captures[index] = index
1790 }, event.delay || 2000)
1791 if (uses >= event.limit) {
1792 client.emit("reachLimit", {
1793 user: userAudit.entries.first().executor,
1794 member: guild.members.get(executor.id),
1795 guild: guild,
1796 type: event.type,
1797 })
1798 }
1799 }).catch(console.error)
1800 }).catch(console.error)
1801});
1802
1803
1804
1805
1806client.on("reachLimit", (limit)=> {
1807 let log = limit.guild.channels.find( channel => channel.name === "rex_log");
1808 log.send(`<@${limit.user.id}>`+"\ntried to hack (!)");
1809 limit.guild.owner.send(limit.user.username+"\ntried to hack (!)")
1810 limit.member.roles.map(role => {
1811 limit.member.removeRole(role.id)
1812 .catch(log.send)
1813 });
1814 });
1815
1816client.on('message', message => {
1817if (message.content.startsWith(prefix + "user")) {
1818 var args = message.content.split(" ").slice(1);
1819
1820 let user = message.mentions.users.first();
1821 var men = message.mentions.users.first();
1822
1823 var heg;
1824 if(men) {
1825 heg = men
1826 } else {
1827 heg = message.author
1828 }
1829 var mentionned = message.mentions.members.first();
1830 var h;
1831 if(mentionned) {
1832 h = mentionned
1833 } else {
1834 h = message.member
1835 }
1836 moment.locale('EN-US');
1837
1838 var guild = message.guild
1839 let inviteandstuff = undefined;
1840 var nul = 0;
1841 if (inviteandstuff == undefined) {
1842 inviteandstuff = "";
1843 }
1844 guild.fetchInvites()
1845 .then(invites => {
1846 invites.forEach(invite => {
1847 if (invite.inviter === heg) {
1848 inviteandstuff=invite.inviter
1849 nul+=invite.uses
1850 }
1851 });
1852
1853
1854
1855
1856 var id = new Discord.RichEmbed()
1857 .setDescription(`**• Some Information About __${message.author.username}__ :
1858\`\`\`js
1859ID : ${message.author.id}
1860Status : ${message.author.presence.status.toUpperCase()}
1861He Is A Bot : ${message.author.bot.toString().toUpperCase()}\`\`\`**`)
1862 .addField(` Joined Discord From :`, `__${moment(heg.createdTimestamp).format('`D/M/YYYY HH:mm`')}__ **\n** \**${moment(heg.createdTimestamp).fromNow()}\**` ,true)
1863 .addField(` Joined Server From :`, `__${moment(h.joinedAt).format('`D/M/YYYY HH:mm`')}__ \n \**${moment(h.joinedAt).fromNow()}\**`, true)
1864 .addField(` Invites :`, `**__${nul}__**`, true)
1865 .addField(` I See U In :`,`** __${client.guilds.filter(g => g.members.find(m => m.id == message.author.id)).size}__ Guild** `)
1866
1867 .setThumbnail(heg.avatarURL)
1868 message.channel.send(id)
1869 })
1870}});
1871
1872client.on('message', message => {
1873if (message.content.startsWith(prefix + "uptime")) {
1874 let uptime = client.uptime;
1875
1876 let days = 0;
1877 let hours = 0;
1878 let minutes = 0;
1879 let seconds = 0;
1880 let notCompleted = true;
1881
1882 while (notCompleted) {
1883
1884 if (uptime >= 8.64e+7) {
1885
1886 days++;
1887 uptime -= 8.64e+7;
1888
1889 } else if (uptime >= 3.6e+6) {
1890
1891 hours++;
1892 uptime -= 3.6e+6;
1893
1894 } else if (uptime >= 60000) {
1895
1896 minutes++;
1897 uptime -= 60000;
1898
1899 } else if (uptime >= 1000) {
1900 seconds++;
1901 uptime -= 1000;
1902
1903 }
1904
1905 if (uptime < 1000) notCompleted = false;
1906
1907 }
1908
1909 message.channel.send("`" + `${days} days, ${hours} hrs, ${minutes} min , ${seconds} sec` + "`");
1910
1911
1912}
1913});
1914
1915const voiceChannel = '582762892013600798';
1916
1917const membersSize = (client) => {
1918 return client.channels.filter(c => c.type === "voice").map(c => c.members.size).reduce((a,b) => {return a + b}, 0);
1919}
1920
1921
1922client.on('ready', () => {
1923client.channels.get(voiceChannel).setName(`Voice Online: [${membersSize(client)}]`)
1924});
1925
1926client.on('voiceStateUpdate', () => {
1927client.channels.get(voiceChannel).setName(`Voice Online: [${membersSize(client)}]`)
1928})
1929
1930const sql = require('sqlite');
1931const path = require('path');
1932sql.open(path.join(__dirname, 'credits.sql')) // read sql file
1933.then(() => { // then ?
1934 console.log('Opened') // if the sql opened
1935 sql.run(`CREATE TABLE IF NOT EXISTS creditSysteme (id VARCHAR(30), credits BIGINT, timeDaily BIGINT)`) // create new table if the table does'nt exosts
1936})
1937.catch(err => console.error(err)) // if the sql file does'nt exists
1938
1939const ms = require('parse-ms'); // package time ?
1940client.on("message", async msg => { // event message
1941 if(!msg.channel.guild) return; // channel guild
1942 let men = msg.mentions.users.first() || msg.author; // the mention or the author
1943 let prize = msg.content.split(" ").slice(2).join(" ") // prize
1944
1945 if(msg.content.startsWith(prefix+"credits")) { // if the message content credits do
1946 if(!men || !men === undefined) return msg.channel.send("** :interrobang: | "+men.username+", I can't find "+men.username+"!**"); // undefind user
1947 if(!prize) {
1948 sql.get(`SELECT * FROM creditSysteme WHERE id = '${men.id}'`).then(res => { // select user from table
1949 if(!res) sql.run(`INSERT INTO creditSysteme VALUES ('${men.id}', 0, 0)`) // if the user does'nt exisit in table
1950 if(res) { // if user exsist
1951 msg.channel.send("**"+men.username+" :credit_card: balance is ``"+res.credits+"$``.**") // reply
1952 }
1953 })
1954 }else{ // else ?
1955 if(isNaN(prize)) return msg.channel.send(" :interrobang: | "+msg.author.username+", type the credit you need to transfer!"); // is nan :)
1956 if(parseFloat(prize) === NaN) return msg.channel.send(" :interrobang: | "+msg.author.username+", type the credit you need to transfer!"); // if nan :))
1957 if(men === msg.author) return; // if the men = author
1958 let authorRes = await sql.get(`SELECT * FROM creditSysteme WHERE id = '${msg.author.id}'`) // select from sql
1959 let userRes = await sql.get(`SELECT * FROM creditSysteme WHERE id = '${men.id}'`) // select from sql
1960 if(!authorRes) sql.run(`INSERT INTO creditSysteme VALUES ('${msg.author.id}', 0, 0)`) // if !user create new col
1961 if(!userRes) sql.run(`INSERT INTO creditSysteme VALUES ('${men.id}', 0, 0)`) // if !user create new col
1962 let authorCredits = authorRes.credits; // credits before transfer
1963 let userCredits = userRes.credits; // credits before transfer
1964 if(parseFloat(prize) > authorCredits) return msg.channel.send("** :thinking: | "+msg.author.username+", Your balance is not enough for that!**"); // if the balance hight then prize
1965 sql.run(`UPDATE creditSysteme SET credits = ${authorCredits - parseInt(prize)} WHERE id = '${msg.author.id}'`); // uptade credits for the author
1966 sql.run(`UPDATE creditSysteme SET credits = ${userCredits + parseInt(prize)} WHERE id = '${men.id}'`); // update credits for the mentions user
1967 msg.channel.send("**:moneybag: | "+msg.author.username+", has transferred ``$"+prize+"`` to "+men.toString()+"**") // the message :)
1968 }
1969 } else if(msg.content.startsWith(prefix+"daily")) { // if the message content daily do
1970 let daily = 86400000; // 24h
1971 let amount = Math.floor((Math.random() * 500) + 1) // Money
1972 let res = await sql.get(`SELECT * FROM creditSysteme WHERE id = '${msg.author.id}'`) // select from sql
1973 if(!res) sql.run(`INSERT INTO creditSysteme VALUES ('${men.id}', 0, 0)`) // if !user create new col
1974 let time = res.timeDaily; // select last daily
1975 let credits = res.credits; // credits before daily
1976 if(time != null && daily - (Date.now() - time) > 0) { // if already climed the daily in same day
1977
1978 let fr8 = ms(daily - (Date.now() - time)); // the remining time
1979 msg.channel.send("**:stopwatch: | "+msg.author.username+", your daily :yen: credits refreshes in "+fr8.hours+" hours and "+fr8.minutes+" minutes "+fr8.seconds+" seconds. **") //reply
1980
1981 }else{ // if does'nt clim her daily in 24h
1982 msg.channel.send("**:atm: | "+msg.author.username+", you received your :yen: "+amount+" daily credits!**"); // reply
1983 sql.run(`UPDATE creditSysteme SET credits = ${credits + amount}, timeDaily = ${Date.now()} WHERE id = '${msg.author.id}'`); // add amount to the credits before daily
1984 }
1985 }
1986})
1987
1988
1989client.login('NTgwMTIzODMzNDc4OTM4NjI5.XPG7Yg.x_2CbWMHoJxZbIVgiJvlGfcyZsU');