· 6 years ago · Jun 05, 2019, 07:30 AM
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 let banEmbed = new Discord.RichEmbed()
1040 incidentchannel.send(banEmbed);
1041 }
1042
1043 )}
1044 })
1045
1046
1047client.on('message', msg => {
1048 if(msg.content === "$help")
1049 var embed = new Discord.RichEmbed()
1050 .setDescription(`**• __General Commands__ :
1051\`\`$user\`\` , \`\`$ping\`\` , \`\`$support\`\` , \`\`$invite\`\` , \`\`$avatar\`\` , \`\`$image\`\` , \`\`$members\`\`
1052• __Staff Commands__ :
1053\`\`$kick\`\` , \`\`$ban\`\` , \`\`$unban\`\` , \`\`$mute\`\` , \`\`$unmute\`\` , \`\`$server\`\` , \`\`$lock\`\` , \`\`$unlock\`\`
1054• __Personal Commands__ :
1055\`\`$credit\`\` , \`\`$daily\`\`
1056• __Safety Commands__ :
1057\`\`$antibots\`\` , \`\`$antihack\`\`
1058• __Music Commands__ :
1059\`\`$play\`\` , \`\`$skip\`\` , \`\`$stop\`\` , \`\`$pause\`\` , \`\`$resume\`\` , \`\`$volume\`\` , \`\`$queue\`\` , \`\`$repeat\`\`
1060**`)
1061.setFooter('RexBot ✨')
1062msg.channel.send(embed)
1063})
1064
1065client.on("guildCreate", async guild => {
1066 let guildCreateChannel = client.channels.get("580448608873349151");
1067
1068
1069
1070 let joinEmbed = new Discord.RichEmbed()
1071 .setThumbnail(guild.iconURL) // هنا هيديك صورة السيرفر
1072 .setAuthor(`RexBot ✨ Joined A Server ✅`)
1073 .setDescription(`**
1074 Server name: __${guild.name}__
1075 Server id: __${guild.id}__
1076 Server owner: __${guild.owner}__
1077 Members Count: __${guild.memberCount}__
1078 Servers Counter : __${client.guilds.size}__**`)
1079
1080 guildCreateChannel.send(joinEmbed);
1081
1082});
1083
1084client.on("guildDelete", async guild => {
1085 let guildCreateDelete = client.channels.get("580448631178395695");
1086
1087 let leaveEmbed = new Discord.RichEmbed()
1088 .setThumbnail(guild.iconURL)
1089 .setAuthor(`RexBot ✨ left A Server ❎`)
1090 .setDescription(`**
1091 Server name: __${guild.name}__
1092 Server id: __${guild.id}__
1093 Server owner: __${guild.owner}__
1094 Members Count: __${guild.memberCount}__
1095 Servers Counter : __${client.guilds.size}__**`)
1096 guildCreateDelete.send(leaveEmbed);
1097});
1098
1099client.on('message', message => {
1100 let em1 = client.guilds.get("580441619405340692").emojis.find(r => r.name === "partner");
1101
1102 if(message.content === "$support")
1103 message.channel.send(`${em1} | **Server Support** : \nhttps://discord.gg/YGYXRV6 `)
1104});
1105
1106//invite
1107client.on('message', message => {
1108 let em1 = client.guilds.get("580441619405340692").emojis.find(r => r.name === "partner");
1109
1110
1111 if(message.content === "$invite")
1112 message.channel.send(`${em1} | **Bot Invite** : \nhttps://discordapp.com/oauth2/authorize?client_id=580123833478938629&permissions=2080374975&scope=bot`)
1113});
1114
1115client.on('message', message => {
1116 let em1 = client.guilds.get("580441619405340692").emojis.find(r => r.name === "partner");
1117
1118
1119 if(message.content === "$inv")
1120 message.channel.send(`${em1} | **Bot Invite** : \nhttps://discordapp.com/oauth2/authorize?client_id=580123833478938629&permissions=2080374975&scope=bot`)
1121});
1122
1123client.on('message', message => {
1124 if (message.author.bot) return;
1125 var prefix = "$";
1126 if (!message.content.startsWith(prefix)) return;
1127 let command = message.content.split(" ")[0];
1128 command = command.slice(prefix.length);
1129 let args = message.content.split(" ").slice(1);
1130 if (command == "mute") {
1131 if(!message.channel.guild) return message.reply(':no_entry: | This Command For Servers Only!');
1132 if(!message.member.hasPermission('MANAGE_ROLES')) return message.channel.send(':no_entry: | You dont have **MANAGE_ROLES** Permission!');
1133 if(!message.guild.member(client.user).hasPermission('MANAGE_ROLES')) return message.channel.send(':no_entry: | I dont have **MANAGE_ROLES** Permission!');
1134 let user = message.mentions.users.first();
1135 let muteRole = message.guild.roles.find("name", "Muted");
1136 if (!muteRole) return message.reply(":no_entry: Error | I Cant find 'Muted' Role").then(msg => {msg.delete(5000)});
1137 if (message.mentions.users.size < 1) return message.reply('**➥ Useage:** $mute \`\`@Name\`\` reason');
1138 let reason = message.content.split(" ").slice(2).join(" ");
1139 message.guild.member(user).addRole(muteRole);
1140 const muteembed = new Discord.RichEmbed()
1141 .setColor("RANDOM")
1142 .setAuthor(`Muted!`, user.displayAvatarURL)
1143 .setThumbnail(user.displayAvatarURL)
1144 .addField("**:busts_in_silhouette: المستخدم**", '**[ ' + `${user.tag}` + ' ]**',true)
1145 .addField("**:hammer: تم بواسطة **", '**[ ' + `${message.author.tag}` + ' ]**',true)
1146 .addField("**:book: السبب**", '**[ ' + `${reason}` + ' ]**',true)
1147 .addField("User", user, true)
1148 .setTitle('**[MUTED]**')
1149 .setThumbnail(message.author.avatarURL)
1150 .setColor('GREEN')
1151 .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}\`\``)
1152 .setTimestamp()
1153 .setFooter(user.tag, user.avatarURL)
1154 client.channels.find('name', "rex_log").send({embed : muteembed});
1155 }
1156
1157 if (command == "unmute") {
1158 if(!message.channel.guild) return message.reply(':no_entry: | This Command For Servers Only!');
1159 if(!message.member.hasPermission('MANAGE_ROLES')) return message.channel.send(':no_entry: | You dont have **MANAGE_ROLES** Permission!');
1160 if(!message.guild.member(client.user).hasPermission('MANAGE_ROLES')) return message.channel.send(':no_entry: | I dont have **MANAGE_ROLES** Permission!');
1161 let user = message.mentions.users.first();
1162 let muteRole = message.guild.roles.find("name", "Muted");
1163 if (!muteRole) return message.reply(":no_entry: Error | I Cant find 'Muted' Role").then(msg => {msg.delete(5000)});
1164 if (message.mentions.users.size < 1) return message.reply('**➥ Useage:** $unmute \`\`@Name\`\`');
1165 let reason = message.content.split(" ").slice(2).join(" ");
1166 message.guild.member(user).removeRole(muteRole);
1167 const unmuteembed = new Discord.RichEmbed()
1168 .setTitle('**[UNMUTED]**')
1169 .setThumbnail(message.author.avatarURL)
1170 .setColor('GREEN')
1171 .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})`)
1172 .setTimestamp()
1173 .setFooter(user.tag, user.avatarURL)
1174 client.channels.find('name', "rex_log").send({embed : unmuteembed});
1175 }
1176 });
1177
1178client.on('warn', console.warn);
1179
1180client.commands = new Discord.Collection();
1181client.aliases = new Discord.Collection();
1182
1183client.on('error', console.error);
1184
1185let active = new Map();
1186
1187client.on('message', async msg => {
1188 if(msg.author.bot) return undefined;
1189
1190
1191 const prefixMention = new RegExp(`^<@!?${client.user.id}>( |)$`);
1192 if (msg.content.match(prefixMention)) {
1193 return msg.reply(`My prefix is \`${prefix}\``);
1194 }
1195
1196if(!msg.content.startsWith(prefix)) return undefined;
1197
1198 const args = msg.content.slice(prefix.length).trim().split(/ +/g);
1199const command = args.shift().toLowerCase();
1200
1201 const url = args[1] ? args[1].replace(/<(.+)>/g, '$1') : '';
1202
1203 let cmds = {
1204 play: { cmd: 'play', a: ['p'] },
1205 skip: { cmd: 'skip', a: ['s'] },
1206 stop: { cmd: 'stop' },
1207 pause: { cmd: 'pause' },
1208 resume: { cmd: 'resume', a: ['r'] },
1209 volume: { cmd: 'volume', a: ['vol'] },
1210 queue: { cmd: 'queue', a: ['q'] },
1211 repeat: { cmd: 'repeat', a: ['re'] },
1212 forceskip: { cmd: 'forceskip', a: ['fs', 'fskip'] },
1213 skipto: { cmd: 'skipto', a: ['st'] }
1214 };
1215
1216 Object.keys(cmds).forEach(key => {
1217 var value = cmds[key];
1218 var command = value.cmd;
1219 client.commands.set(command, command);
1220
1221 if(value.a) {
1222 value.a.forEach(alias => {
1223 client.aliases.set(alias, command)
1224 })
1225 }
1226 })
1227
1228 let cmd = client.commands.get(command) || client.commands.get(client.aliases.get(command))
1229
1230 if(cmd === 'play') {
1231 const voiceChannel = msg.member.voiceChannel;
1232 if(!voiceChannel) return msg.channel.send(`:no_entry_sign: You must be listening in a voice channel to use that!`);
1233 const permissions = voiceChannel.permissionsFor(msg.client.user);
1234 if(!permissions.has('CONNECT')) {
1235 return msg.channel.send(`:no_entry_sign: I can't join Your voiceChannel because i don't have ` + '`' + '`CONNECT`' + '`' + ` permission!`);
1236 }
1237
1238 if(!permissions.has('SPEAK')) {
1239 return msg.channel.send(`:no_entry_sign: I can't SPEAK in your voiceChannel because i don't have ` + '`' + '`SPEAK`' + '`' + ` permission!`);
1240 }
1241
1242 if (url.match(/^https?:\/\/(www.youtube.com|youtube.com)\/playlist(.*)$/)) {
1243 const playlist = await youtube.getPlaylist(url);
1244 const videos = await playlist.getVideos();
1245
1246 for (const video of Object.values(videos)) {
1247 const video2 = await youtube.getVideoByID(video.id); // eslint-disable-line no-await-in-loop
1248 await handleVideo(video2, msg, voiceChannel, true); // eslint-disable-line no-await-in-loop
1249 }
1250 return msg.channel.send(`Added to queue: ${playlist.title}`);
1251 } else {
1252 try {
1253
1254 var video = await youtube.getVideo(url);
1255 } catch (error) {
1256 try {
1257 var videos = await youtube.searchVideos(args, 1);
1258
1259 // eslint-disable-next-line max-depth
1260 var video = await youtube.getVideoByID(videos[0].id);
1261 } catch (err) {
1262 console.error(err);
1263 return msg.channel.send('I can\'t find any thing');
1264 }
1265 }
1266
1267 return handleVideo(video, msg, voiceChannel);
1268 }
1269
1270 async function handleVideo(video, msg, voiceChannel, playlist = false) {
1271 const serverQueue = active.get(msg.guild.id);
1272
1273
1274// console.log('yao: ' + Util.escapeMarkdown(video.thumbnailUrl));
1275
1276let hrs = video.duration.hours == 1 ? (video.duration.hours > 9 ? `${video.duration.hours}:` : `0${video.duration.hours}:`) : '';
1277let min = video.duration.minutes > 9 ? `${video.duration.minutes}:` : `0${video.duration.minutes}:`;
1278let sec = video.duration.seconds > 9 ? `${video.duration.seconds}` : `0${video.duration.seconds}`;
1279let dur = `${hrs}${min}${sec}`
1280
1281 const song = {
1282 id: video.id,
1283 title: video.title,
1284 duration: dur,
1285 url: `https://www.youtube.com/watch?v=${video.id}`
1286 };
1287 if (!serverQueue) {
1288 const queueConstruct = {
1289 textChannel: msg.channel,
1290 voiceChannel: voiceChannel,
1291 connection: null,
1292 songs: [],
1293 volume: 50,
1294 playing: true,
1295 repeating: false
1296 };
1297 active.set(msg.guild.id, queueConstruct);
1298
1299 queueConstruct.songs.push(song);
1300
1301 try {
1302 var connection = await voiceChannel.join();
1303 queueConstruct.connection = connection;
1304 play(msg.guild, queueConstruct.songs[0]);
1305 } catch (error) {
1306 console.error(`I could not join the voice channel: ${error}`);
1307 active.delete(msg.guild.id);
1308 return msg.channel.send(`I cant join this voice channel`);
1309 }
1310 } else {
1311 serverQueue.songs.push(song);
1312
1313 if (playlist) return undefined;
1314 let message = new Discord.RichEmbed()
1315 if(!args) return message.channel.send('no results.');
1316 else return msg.channel.send(':watch: Loading... [`' + args + '`]').then(m => {
1317 setTimeout(() => {//:watch: Loading... [let]
1318 m.edit(`:notes: Added **${song.title}**` + '(` ' + song.duration + ')`' + ` to the queue at position ` + `${serverQueue.songs.length}`);
1319 }, 500)
1320 }) //:notes: Added FROZEN | Let It Go Sing-along | Official Disney UK (04:03) to the queue at position 1
1321 }
1322 return undefined;
1323}
1324
1325function play(guild, song) {
1326 const serverQueue = active.get(guild.id);
1327
1328 if (!song) {
1329 serverQueue.voiceChannel.leave();
1330 active.delete(guild.id);
1331 return;
1332 }
1333 console.log(serverQueue.songs);
1334 if(serverQueue.repeating) {
1335 serverQueue.textChannel.send(`**Repeating:** ${song.title}`);
1336 } else {
1337 serverQueue.textChannel.send(':notes: Added **' + song.title + '** (`' + song.duration + '`) to begin playing.');
1338}
1339 const dispatcher = serverQueue.connection.playStream(ytdl(song.url))
1340 .on('end', reason => {
1341 if (reason === 'Stream is not generating quickly enough.') console.log('Song ended.');
1342 else console.log(reason);
1343 if(serverQueue.repeating) return play(guild, serverQueue.songs[0])
1344 serverQueue.songs.shift();
1345 play(guild, serverQueue.songs[0]);
1346 })
1347 .on('error', error => console.error(error));
1348 dispatcher.setVolumeLogarithmic(serverQueue.volume / 100);
1349
1350
1351}
1352} else if(cmd === 'stop') {
1353 if(msg.guild.me.voiceChannel !== msg.member.voiceChannel) return msg.channel.send(`You must be in ${msg.guild.me.voiceChannel.name}`)
1354 if(!msg.member.hasPermission('ADMINISTRATOR')) {
1355 msg.react('❌')
1356 return msg.channel.send('You don\'t have permission `ADMINSTRATOR`');
1357 }
1358 let queue = active.get(msg.guild.id);
1359 queue.voiceChannel.leave();
1360 return msg.channel.send(':notes: The player has stopped and the queue has been cleared.');
1361
1362 } else if(cmd === 'skip') {
1363
1364 let vCh = msg.member.voiceChannel;
1365
1366 let queue = active.get(msg.guild.id);
1367
1368 if(!vCh) return msg.channel.send('Sorry, but you can\'t because you are not in voice channel');
1369
1370 if(!queue) return msg.channel.send('No music playing to skip it');
1371
1372 if(queue.repeating) return msg.channel.send('You can\'t skip it, because repeating mode is on, run ' + `\`${prefix}forceskip\``);
1373
1374 let req = vCh.members.size - 1;
1375
1376 if(req == 1) {
1377 msg.channel.send('**:notes: Skipped **' + args);
1378 return queue.connection.dispatcher.end('Skipping ..')
1379 }
1380
1381 if(!queue.votes) queue.votes = [];
1382
1383 if(queue.votes.includes(msg.member.id)) return msg.say(`You already voted for skip! ${queue.votes.length}/${req}`);
1384
1385 queue.votes.push(msg.member.id);
1386
1387 if(queue.votes.length >= req) {
1388 msg.channel.send('**:notes: Skipped **' + args);
1389
1390 delete queue.votes;
1391
1392 return queue.connection.dispatcher.end('Skipping ..')
1393 }
1394
1395 msg.channel.send(`**You have successfully voted for skip! ${queue.votes.length}/${req}**`)
1396
1397 } else if(cmd === 'pause') {
1398
1399 let queue = active.get(msg.guild.id);
1400
1401 let vCh = msg.member.voiceChannel;
1402
1403 if(!vCh || vCh !== msg.guild.me.voiceChannel) return msg.channel.send(`You are not in my voice channel.`);
1404
1405 if(!queue) {
1406 return msg.channel.send('No music playing to pause.')
1407 }
1408
1409 if(!queue.playing) return msg.channel.send(':no_entry_sign: There must be music playing to use that!')
1410
1411 let disp = queue.connection.dispatcher;
1412
1413 disp.pause('Pausing..')
1414
1415 queue.playing = false;
1416
1417 msg.channel.send(':notes: Paused ' + args + '. **Type** `' + prefix + 'resume` to unpause!')
1418
1419 } else if (cmd === 'resume') {
1420
1421 let queue = active.get(msg.guild.id);
1422
1423 let vCh = msg.member.voiceChannel;
1424
1425 if(!vCh || vCh !== msg.guild.me.voiceChannel) return msg.channel.send(`You are not in my voice channel.`);
1426
1427 if(!queue) return msg.channel.send(':notes: No music paused to resume.')
1428
1429 if(queue.playing) return msg.channel.send(':notes: No music paused to resume.')
1430
1431 let disp = queue.connection.dispatcher;
1432
1433 disp.resume('Resuming..')
1434
1435 queue.playing = true;
1436
1437 msg.channel.send(':notes: Resumed ' + args + '.')
1438
1439 } else if(cmd === 'volume') {
1440
1441 let queue = active.get(msg.guild.id);
1442
1443 if(!queue || !queue.songs) return msg.channel.send(':notes: There is no music playing to set volume.');
1444
1445 let vCh = msg.member.voiceChannel;
1446
1447 if(!vCh || vCh !== msg.guild.me.voiceChannel) return msg.channel.send(':notes: You are not in my voice channel');
1448
1449 let disp = queue.connection.dispatcher;
1450
1451 if(isNaN(args[0])) return msg.channel.send(':notes: Numbers only!');
1452
1453 if(parseInt(args[0]) > 100) return msg.channel.send('You can\'t set the volume more than 100.')
1454//:speaker: Volume changed from 20 to 20 ! The volume has been changed from ${queue.volume} to ${args[0]}
1455 msg.channel.send(':speaker: Volume has been **changed** from (`' + queue.volume + '`) to (`' + args[0] + '`)');
1456
1457 queue.volume = args[0];
1458
1459 disp.setVolumeLogarithmic(queue.volume / 100);
1460
1461 } else if (cmd === 'queue') {
1462
1463 let queue = active.get(msg.guild.id);
1464
1465 if(!queue) return msg.channel.send(':no_entry_sign: There must be music playing to use that!');
1466
1467 let embed = new Discord.RichEmbed()
1468 .setAuthor(`${client.user.username}`, client.user.displayAvatarURL)
1469 let text = '';
1470
1471 for (var i = 0; i < queue.songs.length; i++) {
1472 let num;
1473 if((i) > 8) {
1474 let st = `${i+1}`
1475 console.log(st);
1476 let n1 = conv.toWords(st[0])
1477 let n2 = conv.toWords(st[1])
1478 num = `:${n1}::${n2}:`
1479 } else {
1480 let n = conv.toWords(i+1)
1481 num = `:${n}:`
1482 }
1483 text += `${num} ${queue.songs[i].title} [${queue.songs[i].duration}]\n`
1484 }
1485 embed.setDescription(`Songs Queue | ${msg.guild.name}\n\n ${text}`)
1486 msg.channel.send(embed)
1487
1488 } else if(cmd === 'repeat') {
1489
1490 let vCh = msg.member.voiceChannel;
1491
1492 if(!vCh || vCh !== msg.guild.me.voiceChannel) return msg.channel.send('You are not in my voice channel');
1493
1494 let queue = active.get(msg.guild.id);
1495
1496 if(!queue || !queue.songs) return msg.channel.send('There is no music playing to repeat it.');
1497
1498 if(queue.repeating) {
1499 queue.repeating = false;
1500 return msg.channel.send(':arrows_counterclockwise: **Repeating Mode** (`False`)');
1501 } else {
1502 queue.repeating = true;
1503 return msg.channel.send(':arrows_counterclockwise: **Repeating Mode** (`True`)');
1504 }
1505
1506 } else if(cmd === 'forceskip') {
1507
1508 let vCh = msg.member.voiceChannel;
1509
1510 if(!vCh || vCh !== msg.guild.me.voiceChannel) return msg.channel.send('You are not in my voice channel');
1511
1512 let queue = active.get(msg.guild.id);
1513
1514 if(queue.repeating) {
1515
1516 queue.repeating = false;
1517
1518 msg.channel.send('ForceSkipped, Repeating mode is on.')
1519
1520 queue.connection.dispatcher.end('ForceSkipping..')
1521
1522 queue.repeating = true;
1523
1524 } else {
1525
1526 queue.connection.dispatcher.end('ForceSkipping..')
1527
1528 msg.channel.send('ForceSkipped.')
1529
1530 }
1531
1532 } else if(cmd === 'skipto') {
1533
1534 let vCh = msg.member.voiceChannel;
1535
1536 if(!vCh || vCh !== msg.guild.me.voiceChannel) return msg.channel.send('You are not in my voice channel');
1537
1538 let queue = active.get(msg.guild.id);
1539
1540 if(!queue.songs || queue.songs < 2) return msg.channel.send('There is no music to skip to.');
1541
1542 if(queue.repeating) return msg.channel.send('You can\'t skip, because repeating mode is on, run ' + `\`${prefix}repeat\` to turn off.`);
1543
1544 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.');
1545
1546 let sN = parseInt(args[0]) - 1;
1547
1548 if(!queue.songs[sN]) return msg.channel.send('There is no song with this number.');
1549
1550 while (0 < sN) {
1551 queue.songs.shift();
1552 }
1553
1554 msg.channel.send(`Skipped to: **${queue.songs[0].title}[${queue.songs[0].duration}]**`)
1555
1556 queue.connection.dispatcher.end('SkippingTo..')
1557
1558 }
1559
1560});
1561
1562
1563//////كود طرد البوتات
1564let antihack = JSON.parse(fs.readFileSync('./antihack.json' , 'utf8'));//require antihack.json file
1565client.on('message', message => {
1566 if(message.content.startsWith(prefix + "antihack")) {
1567 if(!message.channel.guild) return message.reply('**This Command Only For Servers**');
1568 if(!message.member.hasPermission('MANAGE_GUILD')) return message.channel.send('**Sorry But You Dont Have Permission** `MANAGE_GUILD`' );
1569 if(!antihack[message.guild.id]) antihack[message.guild.id] = {
1570 onoff: 'Off'
1571 }
1572 if(antihack[message.guild.id].onoff === 'Off') return [message.channel.send(`**⛔ The AntiJoin Is __??__ !**`), antihack[message.guild.id].onoff = 'On']
1573 if(antihack[message.guild.id].onoff === 'On') return [message.channel.send(`**⛔ The AntiJoin Is __???__ !**`), antihack[message.guild.id].onoff = 'Off']
1574 fs.writeFile("./antihack.json", JSON.stringify(antihack), (err) => {
1575 if (err) console.error(err)
1576 .catch(err => {
1577 console.error(err);
1578 });
1579 });
1580 }
1581
1582 })
1583 //antihack with ON , OFF ! RARE CODE
1584 //LIKE PLUSBOT !
1585
1586 let banse = new Set();
1587 let bane = JSON.parse(fs.readFileSync('./data1.json' , 'utf8'));//require data1.json
1588 client.on('guildBanAdd', function(guild) {
1589 guild.fetchAuditLogs().then(logs => {
1590 const ser = logs.entries.first().executor;
1591 if(!bane[ser.id+guild.id]) bane[ser.id+guild.id] = {
1592 bans: 2
1593 }
1594 if(antihack[guild.guild.id].onoff === 'Off') return;
1595 let boner = bane[ser.id+guild.id]
1596 banse.add(ser.id)
1597 boner.bans = Math.floor(boner.bans+1)
1598
1599
1600 setTimeout(() => {
1601 boner.bans = 2
1602 banse.delete(ser.id)
1603 },8000)
1604
1605 if(boner.bans > 2) {
1606 let roles = guild.members.get(ser.id).roles.array()
1607 guild.members.get(ser.id).removeRoles(roles)
1608 }
1609
1610 })
1611 fs.writeFile('./data1.json', JSON.stringify(bane), (err) => {
1612 if (err) console.error(err);
1613 })
1614
1615 })
1616 client.on('guildMemberRemove', (u) => {
1617 u.guild.fetchAuditLogs().then( s => {
1618 var ss = s.entries.first();
1619 if (ss.action == `MEMBER_KICK`) {
1620 if (!data[ss.executor.id]) {
1621 data[ss.executor.id] = {
1622 time : 1
1623 };
1624 if(antihack[u.guild.id].onoff === 'Off') return;
1625
1626 } else {
1627 data[ss.executor.id].time+=1
1628 };
1629 if(antihack[u.guild.id].onoff === 'Off') return;
1630 data[ss.executor.id].time = 0
1631 u.guild.members.get(ss.executor.id).roles.forEach(r => {
1632 r.edit({
1633 permissions : []
1634 });
1635 data[ss.executor.id].time = 0
1636 });
1637 setTimeout(function(){
1638 if (data[ss.executor.id].time <= 3) {
1639 data[ss.executor.id].time = 0
1640 }
1641 })
1642 };
1643 });
1644 const data = require("./data.json");
1645 });
1646 client.on('roleDelete', (u) => {
1647 u.guild.fetchAuditLogs().then( s => {
1648 var ss = s.entries.first();
1649 if (ss.action == `ROLE_DELETE`) {
1650 if (!data[ss.executor.id]) {
1651 data[ss.executor.id] = {
1652 time : 1
1653 };
1654 if(antihack[u.guild.id].onoff === 'Off') return;
1655
1656 } else {
1657 data[ss.executor.id].time+=1
1658 };
1659 if(antihack[u.guild.id].onoff === 'Off') return;
1660
1661 data[ss.executor.id].time = 0
1662 u.guild.members.get(ss.executor.id).roles.forEach(r => {
1663 r.edit({
1664 permissions : []
1665 });
1666 data[ss.executor.id].time = 0
1667 });
1668 setTimeout(function(){
1669 if (data[ss.executor.id].time <= 3) {
1670 data[ss.executor.id].time = 0
1671 }
1672 },60000)
1673 };
1674 });
1675 const data = require("./data.json");
1676 });
1677 client.on('channelDelete', (u) => {
1678 u.guild.fetchAuditLogs().then( s => {
1679 var ss = s.entries.first();
1680 if (ss.action == `CHANNEL_DELETE`) {
1681 if (!data[ss.executor.id]) {
1682 data[ss.executor.id] = {
1683 time : 1
1684 };
1685 if(antihack[u.guild.id].onoff === 'Off') return;
1686 } else {
1687 data[ss.executor.id].time+=1
1688 };
1689 if(antihack[u.guild.id].onoff === 'Off') return;
1690 data[ss.executor.id].time = 0
1691 u.guild.members.get(ss.executor.id).roles.forEach(r => {
1692 r.edit({
1693 permissions : []
1694 });
1695 data[ss.executor.id].time = 0
1696 });
1697 setTimeout(function(){
1698 if (data[ss.executor.id].time <= 3) { //Toxic Codes
1699 data[ss.executor.id].time = 0
1700 }
1701 })
1702 };
1703 });
1704 const data = require("./data.json");
1705 })
1706 let antibots = JSON.parse(fs.readFileSync('./antibots.json' , 'utf8'));//require antihack.json file
1707 client.on('message', message => {
1708 if(message.content.startsWith(prefix + "antibots on")) {
1709 if(!message.channel.guild) return message.reply('**This Command Only For Servers**');
1710 if(!message.member.hasPermission('ADMINISTRATOR')) return message.channel.send('**Sorry But You Dont Have Permission** `ADMINISTRATOR`' );
1711antibots[message.guild.id] = {
1712onoff: 'On',
1713}
1714message.channel.send(`**⛔ The AntiJoin Is __??__ !**`)
1715 fs.writeFile("./antibots.json", JSON.stringify(antibots), (err) => {
1716 if (err) console.error(err)
1717 .catch(err => {
1718 console.error(err);
1719 });
1720 });
1721 }
1722
1723
1724 if(message.content.startsWith(prefix + "antibots off")) {
1725 if(!message.channel.guild) return message.reply('**This Command Only For Servers**');
1726 if(!message.member.hasPermission('ADMINISTRATOR')) return message.channel.send('**Sorry But You Dont Have Permission** `ADMINISTRATOR`' );
1727antibots[message.guild.id] = {
1728onoff: 'Off',
1729}
1730message.channel.send(`**⛔ The AntiJoin Is __???__ !**`)
1731 fs.writeFile("./antibots.json", JSON.stringify(antibots), (err) => {
1732 if (err) console.error(err)
1733 .catch(err => {
1734 console.error(err);
1735 });
1736 });
1737 }
1738
1739 })
1740
1741client.on("guildMemberAdd", member => {
1742 if(!antibots[member.guild.id]) antibots[member.guild.id] = {
1743onoff: 'Off'
1744}
1745 if(antibots[member.guild.id].onoff === 'Off') return;
1746if(member.user.bot) return member.kick()
1747})
1748
1749fs.writeFile("./antibots.json", JSON.stringify(antibots), (err) => {
1750if (err) console.error(err)
1751.catch(err => {
1752console.error(err);
1753});
1754})
1755
1756//////كود منع التخريب
1757
1758var config = {
1759 events: [
1760 {type: "CHANNEL_CREATE", logType: "CHANNEL_CREATE", limit: 3 , delay: 5000},
1761 {type: "CHANNEL_DELETE", logType: "CHANNEL_DELETE", limit: 3, delay: 5000},
1762 {type: "GUILD_MEMBER_REMOVE", logType: "MEMBER_KICK", limit: 3, delay: 5000},
1763 {type: "GUILD_BAN_ADD", logType: "MEMBER_BAN_ADD", limit: 3, delay: 5000},
1764 {type: "GUILD_ROLE_CREATE", logType: "ROLE_CREATE", limit: 3, delay: 5000},
1765 {type: "GUILD_ROLE_DELETE", logType: "ROLE_DELETE", limit: 3, delay: 5000},
1766 ]
1767}
1768client.on("error", (e) => console.error(e));
1769client.on("raw", (packet)=> {
1770 let data = new Discord.RichEmbed()
1771 let {t, d} = packet, type = t, {guild_id} = data = d || {};
1772 if (type === "READY") {
1773 client.startedTimestamp = new Date().getTime();
1774 client.captures = [];
1775 }
1776 let event = config.events.find(anEvent => anEvent.type === type);
1777 if (!event) return;
1778 let guild = client.guilds.get(guild_id);
1779 if (!guild) return;
1780 guild.fetchAuditLogs({limit : 1, type: event.logType})
1781 .then(eventAudit => {
1782 let eventLog = eventAudit.entries.first();
1783 if (!eventLog) return;
1784 let executor = eventLog.executor;
1785 guild.fetchAuditLogs({type: event.logType, user: executor})
1786 .then((userAudit, index) => {
1787 let uses = 0;
1788 userAudit.entries.map(entry => {
1789 if (entry.createdTimestamp > client.startedTimestamp && !client.captures.includes(index)) uses += 1;
1790 });
1791 setTimeout(() => {
1792 client.captures[index] = index
1793 }, event.delay || 2000)
1794 if (uses >= event.limit) {
1795 client.emit("reachLimit", {
1796 user: userAudit.entries.first().executor,
1797 member: guild.members.get(executor.id),
1798 guild: guild,
1799 type: event.type,
1800 })
1801 }
1802 }).catch(console.error)
1803 }).catch(console.error)
1804});
1805
1806
1807
1808
1809client.on("reachLimit", (limit)=> {
1810 let log = limit.guild.channels.find( channel => channel.name === "rex_log");
1811 log.send(`<@${limit.user.id}>`+"\ntried to hack (!)");
1812 limit.guild.owner.send(limit.user.username+"\ntried to hack (!)")
1813 limit.member.roles.map(role => {
1814 limit.member.removeRole(role.id)
1815 .catch(log.send)
1816 });
1817 });
1818
1819client.on('message', message => {
1820if (message.content.startsWith(prefix + "user")) {
1821 var args = message.content.split(" ").slice(1);
1822
1823 let user = message.mentions.users.first();
1824 var men = message.mentions.users.first();
1825
1826 var heg;
1827 if(men) {
1828 heg = men
1829 } else {
1830 heg = message.author
1831 }
1832 var mentionned = message.mentions.members.first();
1833 var h;
1834 if(mentionned) {
1835 h = mentionned
1836 } else {
1837 h = message.member
1838 }
1839 moment.locale('EN-US');
1840
1841 var guild = message.guild
1842 let inviteandstuff = undefined;
1843 var nul = 0;
1844 if (inviteandstuff == undefined) {
1845 inviteandstuff = "";
1846 }
1847 guild.fetchInvites()
1848 .then(invites => {
1849 invites.forEach(invite => {
1850 if (invite.inviter === heg) {
1851 inviteandstuff=invite.inviter
1852 nul+=invite.uses
1853 }
1854 });
1855
1856
1857
1858
1859 var id = new Discord.RichEmbed()
1860 .setDescription(`**• Some Information About __${message.author.username}__ :
1861\`\`\`js
1862ID : ${message.author.id}
1863Status : ${message.author.presence.status.toUpperCase()}
1864He Is A Bot : ${message.author.bot.toString().toUpperCase()}\`\`\`**`)
1865 .addField(` Joined Discord From :`, `__${moment(heg.createdTimestamp).format('`D/M/YYYY HH:mm`')}__ **\n** \**${moment(heg.createdTimestamp).fromNow()}\**` ,true)
1866 .addField(` Joined Server From :`, `__${moment(h.joinedAt).format('`D/M/YYYY HH:mm`')}__ \n \**${moment(h.joinedAt).fromNow()}\**`, true)
1867 .addField(` Invites :`, `**__${nul}__**`, true)
1868 .addField(` I See U In :`,`** __${client.guilds.filter(g => g.members.find(m => m.id == message.author.id)).size}__ Guild** `)
1869
1870 .setThumbnail(heg.avatarURL)
1871 message.channel.send(id)
1872 })
1873}});
1874
1875client.on('message', message => {
1876if (message.content.startsWith(prefix + "uptime")) {
1877 let uptime = client.uptime;
1878
1879 let days = 0;
1880 let hours = 0;
1881 let minutes = 0;
1882 let seconds = 0;
1883 let notCompleted = true;
1884
1885 while (notCompleted) {
1886
1887 if (uptime >= 8.64e+7) {
1888
1889 days++;
1890 uptime -= 8.64e+7;
1891
1892 } else if (uptime >= 3.6e+6) {
1893
1894 hours++;
1895 uptime -= 3.6e+6;
1896
1897 } else if (uptime >= 60000) {
1898
1899 minutes++;
1900 uptime -= 60000;
1901
1902 } else if (uptime >= 1000) {
1903 seconds++;
1904 uptime -= 1000;
1905
1906 }
1907
1908 if (uptime < 1000) notCompleted = false;
1909
1910 }
1911
1912 message.channel.send("`" + `${days} days, ${hours} hrs, ${minutes} min , ${seconds} sec` + "`");
1913
1914
1915}
1916});
1917
1918const voiceChannel = '582762892013600798';
1919
1920const membersSize = (client) => {
1921 return client.channels.filter(c => c.type === "voice").map(c => c.members.size).reduce((a,b) => {return a + b}, 0);
1922}
1923
1924
1925client.on('ready', () => {
1926client.channels.get(voiceChannel).setName(`Voice Online: [${membersSize(client)}]`)
1927});
1928
1929client.on('voiceStateUpdate', () => {
1930client.channels.get(voiceChannel).setName(`Voice Online: [${membersSize(client)}]`)
1931})
1932
1933const sql = require('sqlite');
1934const path = require('path');
1935sql.open(path.join(__dirname, 'credits.sql')) // read sql file
1936.then(() => { // then ?
1937 console.log('Opened') // if the sql opened
1938 sql.run(`CREATE TABLE IF NOT EXISTS creditSysteme (id VARCHAR(30), credits BIGINT, timeDaily BIGINT)`) // create new table if the table does'nt exosts
1939})
1940.catch(err => console.error(err)) // if the sql file does'nt exists
1941
1942const ms = require('parse-ms'); // package time ?
1943client.on("message", async msg => { // event message
1944 if(!msg.channel.guild) return; // channel guild
1945 let men = msg.mentions.users.first() || msg.author; // the mention or the author
1946 let prize = msg.content.split(" ").slice(2).join(" ") // prize
1947
1948 if(msg.content.startsWith(prefix+"credits")) { // if the message content credits do
1949 if(!men || !men === undefined) return msg.channel.send("** :interrobang: | "+men.username+", I can't find "+men.username+"!**"); // undefind user
1950 if(!prize) {
1951 sql.get(`SELECT * FROM creditSysteme WHERE id = '${men.id}'`).then(res => { // select user from table
1952 if(!res) sql.run(`INSERT INTO creditSysteme VALUES ('${men.id}', 0, 0)`) // if the user does'nt exisit in table
1953 if(res) { // if user exsist
1954 msg.channel.send("**"+men.username+" :credit_card: balance is ``"+res.credits+"$``.**") // reply
1955 }
1956 })
1957 }else{ // else ?
1958 if(isNaN(prize)) return msg.channel.send(" :interrobang: | "+msg.author.username+", type the credit you need to transfer!"); // is nan :)
1959 if(parseFloat(prize) === NaN) return msg.channel.send(" :interrobang: | "+msg.author.username+", type the credit you need to transfer!"); // if nan :))
1960 if(men === msg.author) return; // if the men = author
1961 let authorRes = await sql.get(`SELECT * FROM creditSysteme WHERE id = '${msg.author.id}'`) // select from sql
1962 let userRes = await sql.get(`SELECT * FROM creditSysteme WHERE id = '${men.id}'`) // select from sql
1963 if(!authorRes) sql.run(`INSERT INTO creditSysteme VALUES ('${msg.author.id}', 0, 0)`) // if !user create new col
1964 if(!userRes) sql.run(`INSERT INTO creditSysteme VALUES ('${men.id}', 0, 0)`) // if !user create new col
1965 let authorCredits = authorRes.credits; // credits before transfer
1966 let userCredits = userRes.credits; // credits before transfer
1967 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
1968 sql.run(`UPDATE creditSysteme SET credits = ${authorCredits - parseInt(prize)} WHERE id = '${msg.author.id}'`); // uptade credits for the author
1969 sql.run(`UPDATE creditSysteme SET credits = ${userCredits + parseInt(prize)} WHERE id = '${men.id}'`); // update credits for the mentions user
1970 msg.channel.send("**:moneybag: | "+msg.author.username+", has transferred ``$"+prize+"`` to "+men.toString()+"**") // the message :)
1971 }
1972 } else if(msg.content.startsWith(prefix+"daily")) { // if the message content daily do
1973 let daily = 86400000; // 24h
1974 let amount = Math.floor((Math.random() * 500) + 1) // Money
1975 let res = await sql.get(`SELECT * FROM creditSysteme WHERE id = '${msg.author.id}'`) // select from sql
1976 if(!res) sql.run(`INSERT INTO creditSysteme VALUES ('${men.id}', 0, 0)`) // if !user create new col
1977 let time = res.timeDaily; // select last daily
1978 let credits = res.credits; // credits before daily
1979 if(time != null && daily - (Date.now() - time) > 0) { // if already climed the daily in same day
1980
1981 let fr8 = ms(daily - (Date.now() - time)); // the remining time
1982 msg.channel.send("**:stopwatch: | "+msg.author.username+", your daily :yen: credits refreshes in "+fr8.hours+" hours and "+fr8.minutes+" minutes "+fr8.seconds+" seconds. **") //reply
1983
1984 }else{ // if does'nt clim her daily in 24h
1985 msg.channel.send("**:atm: | "+msg.author.username+", you received your :yen: "+amount+" daily credits!**"); // reply
1986 sql.run(`UPDATE creditSysteme SET credits = ${credits + amount}, timeDaily = ${Date.now()} WHERE id = '${msg.author.id}'`); // add amount to the credits before daily
1987 }
1988 }
1989})
1990
1991client.on('message', message => {
1992sql.open("./score.sqlite");
1993 sql.get(`SELECT * FROM scores WHERE userId ="${message.author.id}"`).then(row => {
1994 if (!row) {
1995 sql.run("INSERT INTO scores (userId, points, level) VALUES (?, ?, ?)", [message.author.id, 1, 0]);
1996 } else {
1997 let curLevel = Math.floor(0.3 * Math.sqrt(row.points + 1));
1998 if (curLevel > row.level) {
1999 row.level = curLevel;
2000 sql.run(`UPDATE scores SET points = ${row.points + 1}, level = ${row.level} WHERE userId = ${message.author.id}`);
2001var Canvas = require('canvas')
2002var jimp = require('jimp')
2003
2004const w = ['./levelup.png'];
2005
2006 let Image = Canvas.Image,
2007 canvas = new Canvas(401, 202),
2008 ctx = canvas.getContext('2d');
2009 ctx.patternQuality = 'bilinear';
2010 ctx.filter = 'bilinear';
2011 ctx.antialias = 'subpixel';
2012 ctx.shadowColor = 'rgba(0, 0, 0, 0.4)';
2013 ctx.shadowOffsetY = 2;
2014 ctx.shadowBlur = 2;
2015 fs.readFile(`${w[Math.floor(Math.random() * w.length)]}`, function (err, Background) {
2016 if (err) return console.log(err);
2017 let BG = Canvas.Image;
2018 let ground = new Image;
2019 ground.src = Background;
2020 ctx.drawImage(ground, 0, 0, 401, 202);
2021
2022})
2023
2024 let url = message.author.displayAvatarURL.endsWith(".webp") ? message.author.displayAvatarURL.slice(5, -20) + ".png" : message.author.displayAvatarURL;
2025 jimp.read(url, (err, ava) => {
2026 if (err) return console.log(err);
2027 ava.getBuffer(jimp.MIME_PNG, (err, buf) => {
2028 if (err) return console.lo
2029 //Avatar
2030 let Avatar = Canvas.Image;
2031 let ava = new Avatar;
2032 ava.src = buf;
2033 ctx.drawImage(ava, 152, 27, 95, 95);
2034
2035 //wl
2036 ctx.font = '20px Arial';
2037 ctx.fontSize = '25px';
2038 ctx.fillStyle = "#b2b4b7";
2039 ctx.textAlign = "center";
2040 ctx.fillText("LEVEL UP!", 210, 154);
2041 //ur name
2042 ctx.font = '20px Arial Bold';
2043 ctx.fontSize = '28px';
2044 ctx.fillStyle = "#8b8d91";
2045 ctx.textAlign = "center";
2046 ctx.fillText(`LVL ${curLevel}`, 213, 190);
2047message.channel.send(`**:up: | ${message.author.username} leveled up!**`)
2048message.channel.sendFile(canvas.toBuffer())
2049})
2050})
2051
2052 };
2053 sql.run(`UPDATE scores SET points = ${row.points + 1} WHERE userId = ${message.author.id}`);
2054 }
2055 }).catch(() => {
2056 console.error;
2057 sql.run("CREATE TABLE IF NOT EXISTS scores (userId TEXT, points INTEGER, level INTEGER)").then(() => {
2058 sql.run("INSERT INTO scores (userId, points, level) VALUES (?, ?, ?)", [message.author.id, 1, 0]);
2059 });
2060 });
2061
2062 if (message.content.startsWith(prefix + "level")) {
2063 sql.get(`SELECT * FROM scores WHERE userId ="${message.author.id}"`).then(row => {
2064 if (!row) return message.reply("Your current level is 0");
2065 message.reply(`Your current level is ${row.level}`);
2066 });
2067
2068
2069}
2070 })
2071
2072client.login('NTgwMTIzODMzNDc4OTM4NjI5.XPG7Yg.x_2CbWMHoJxZbIVgiJvlGfcyZsU');