· 6 years ago · Aug 21, 2019, 08:36 AM
1const Discord = require('discord.js');
2const client = new Discord.Client()
3const config = require("./config.json");
4const AuthorID = '414622975598395398';
5const invites = {};
6const Canvas = require("canvas") // Contains the prefix, and token!
7const SQLite = require("better-sqlite3");
8const sql = new SQLite('./scores.sqlite');
9const prefix = "k."
10const figlet = require('figlet');
11const oneLinerJoke = require('one-liner-joke');
12const waitFor = (ms) => new Promise(r => setTimeout(r, ms));
13const AuthorName = " ⎝⎝✧GͥOͣDͫ✧⎠⎠#3492"
14const fs = require('fs')
15const ytdl = require('ytdl-core');
16const YouTube = require('simple-youtube-api');
17const queue = new Map();
18const youtube = new YouTube('AIzaSyCCAPf9UPtlV0dJCrsgZHrQy10OLDAGKK0');
19const math = require('mathjs');
20const randomPuppy = require('random-puppy');
21const randomCat = require('random-cat');
22 const f = require('node-fetch');
23const querystring = require('querystring');
24const r2 = require('r2');
25const request = require('snekfetch');
26const DOG_API_URL = "https://api.thedogapi.com/"
27const DOG_API_KEY = "84647e6e-c20a-41fe-8cd8-f07e0dac416b"
28const superagent = require('superagent')
29const got = require('got');
30const Pornhub = require("pornhub-api")
31const Videos = new Pornhub.Videos()
32
33
34client.on("ready", () => {
35 // Check if the table "points" exists.
36 const table = sql.prepare("SELECT count(*) FROM sqlite_master WHERE type='table' AND name = 'scores';").get();
37 if (!table['count(*)']) {
38 // If the table isn't there, create it and setup the database correctly.
39 sql.prepare("CREATE TABLE scores (id TEXT PRIMARY KEY, user TEXT, guild TEXT, points INTEGER, level INTEGER);").run();
40 // Ensure that the "id" row is always unique and indexed.
41 sql.prepare("CREATE UNIQUE INDEX idx_scores_id ON scores (id);").run();
42 sql.pragma("synchronous = 1");
43 sql.pragma("journal_mode = wal");
44 }
45
46 // And then we have two prepared statements to get and set the score data.
47 client.getScore = sql.prepare("SELECT * FROM scores WHERE user = ? AND guild = ?");
48 client.setScore = sql.prepare("INSERT OR REPLACE INTO scores (id, user, guild, points, level) VALUES (@id, @user, @guild, @points, @level);");
49});
50
51client.on('messageReactionAdd', (messageReaction, user) => {
52 if(messageReaction.emoji.name === "?")
53 {
54 console.log(messageReaction.emoji.name);
55 }
56});
57
58client.on("message", async message => {
59 var args = message.content.substring(prefix.length).split(" ");
60 if (!message.content.startsWith(prefix)) return;
61 var searchString = args.slice(1).join(' ');
62 var url = args[1] ? args[1].replace(/<(.+)>/g, '$1') : '';
63 var serverQueue = queue.get(message.guild.id);
64 switch (args[0].toLowerCase()) {
65
66
67 case "hard":
68 Videos.search({
69 search: "Hard"
70}).then(videos => {
71 console.log(videos)
72 message.channel.send(videos)
73})
74 break;
75 case "boobs":
76 if(!message.channel.nsfw){
77 message.channel.send(":underage: NSFW Command. Please switch to NSFW channel in order to use this command.")
78 }else{
79 var puppy = require('random-puppy')
80var result = 'boobs'
81puppy(result).then(url => message.channel.send(url))}
82 break;
83 case "ass":
84
85 if (!message.channel.nsfw) {
86 message.channel.send(":underage: NSFW Command. Please switch to NSFW channel in order to use this command.")
87 } else {
88 const puppy = require('random-puppy')
89let result = 'ass'
90puppy(result).then(url => message.channel.send(url)) }
91 break;
92
93 case "pgif":
94 if (message.channel.nsfw === true) {
95 superagent.get('https://nekobot.xyz/api/image')
96 .query({ type: 'pgif'})
97 .end((err, response) => {
98 message.channel.send({ file: response.body.message });
99 });
100 } else {
101 message.channel.send(":underage: NSFW COMMAND. Please switch to NSFW channal in order to use this command.")
102 }
103 break;
104 case "hentai":
105 if (!message.channel.nsfw) {return message.channel.send(":underage: NSFW COMMAND. Please switch to NSFW channal in order to use this command.")
106 }else{
107 if (message.channel.nsfw === true)
108 superagent.get('https://nekobot.xyz/api/image')
109 .query({ type: 'hentai_anal'})
110 .end((err, response) => {
111 message.channel.send({ file: response.body.message });
112 });
113 }
114 break;
115
116 case "meme":
117 const embed = new Discord.RichEmbed();
118 got('https://www.reddit.com/r/dankmemes/random/.json').then(response => {
119 let content = JSON.parse(response.body);
120 let permalink = content[0].data.children[0].data.permalink;
121 let memeUrl = `https://reddit.com${permalink}`;
122 let memeImage = content[0].data.children[0].data.url;
123 let memeTitle = content[0].data.children[0].data.title;
124 let memeUpvotes = content[0].data.children[0].data.ups;
125 let memeDownvotes = content[0].data.children[0].data.downs;
126 let memeNumComments = content[0].data.children[0].data.num_comments;
127 embed.addField(`${memeTitle}`, `[View thread](${memeUrl})`);
128 embed.setImage(memeImage);
129 embed.setFooter(`? ${memeUpvotes} ? ${memeDownvotes} ? ${memeNumComments}`);
130 message.channel.send(embed)
131 .then(sent => console.log(`Sent a reply to ${sent.author.username}`))
132 console.log('Bot responded with: ' + memeImage);
133 }).catch(console.error);
134
135 break;
136
137 case "holo":
138 if (message.channel.nsfw === true) {
139 superagent.get('https://nekobot.xyz/api/image')
140 .query({ type: 'holo'})
141 .end((err, response) => {
142 message.channel.send({ file: response.body.message });
143 });
144 } else {
145 message.channel.send(":underage: NSFW COMMAND. Please switch to NSFW channal in order to use this command.")
146 }
147break;
148 case "bird":
149 const Bluebird = require('bluebird');
150
151 message.channel.send(Bluebird)
152 break;
153
154 case "pussy":
155 if (message.channel.nsfw === true) {
156 superagent.get('https://nekobot.xyz/api/image')
157 .query({ type: 'pussy'})
158 .end((err, response) => {
159 message.channel.send({ file: response.body.message });
160 });
161 } else {
162 message.channel.send(":underage: NSFW COMMAND. Please switch to NSFW channal in order to use this command.")
163 }
164 break;
165
166 case "4k":
167 if (message.channel.nsfw === true) {
168 superagent.get('https://nekobot.xyz/api/image')
169 .query({ type: '4k'})
170 .end((err, response) => {
171 message.channel.send({ file: response.body.message });
172 });
173 } else {
174 message.channel.send(":underage: NSFW COMMAND. Please switch to NSFW channal in order to use this command.")
175 }
176 break;
177 case "hthigh":
178 if (message.channel.nsfw === true) {
179 superagent.get('https://nekobot.xyz/api/image')
180 .query({ type: 'hthigh'})
181 .end((err, response) => {
182 message.channel.send({ file: response.body.message });
183 });
184 } else {
185 message.channel.send(":underage: NSFW COMMAND. Please switch to NSFW channal in order to use this command.")
186 }
187 break;
188 case "puppy":
189 randomPuppy()
190 .then(url => {
191 message.channel.send(url);
192 })
193 break;
194
195 case "math":
196 if (!args.slice(1).join(' ')) return message.channel.send(':x: please input a calculation.');
197
198 let resp;
199 try{
200 resp = math.evaluate(args.slice(1).join(' '));
201 } catch (e) {
202 console.log(args.slice(1).join(' '))
203 return message.channel.send('there was an ' + e);
204 }
205
206 const mathembed = new Discord.RichEmbed()
207
208 .setColor('#7289DA')
209 .setTitle('Math calculation')
210 .addField('input', `\`\`\`js\n${args.slice(1).join(' ')}\`\`\``)
211 .addField('Output', `\`\`\`js\n${resp}\`\`\``)
212 message.channel.send(mathembed)
213 break;
214 case "play":
215 const voiceChannel = message.member.voiceChannel;
216 if (!voiceChannel) {
217message.channel.send(':x: **I\'m sorry but you need to be in a voice channel to play music.**')
218 } else { voiceChannel.join()
219
220 try {
221 var video = await youtube.getVideo(url);
222 } catch (error) {
223 try {
224 var videos = await youtube.searchVideos(searchString, 1);
225 var video = await youtube.getVideoByID(videos[0].id);
226 } catch (err) {
227 console.error(err);
228 return message.channel.send(':x: **I could not obtain any search results.**');
229 }
230 return handleVideo(video, message, voiceChannel);
231 }}
232 break;
233 case "volume":
234 if (!serverQueue) return message.channel.send(':x: **Nothing playing in this channel!**');
235 if (!args[1]) return message.channel.send(`**Volume ${serverQueue.volume}**`);
236 if(args[1] > 10) return message.reply(':x: **Number should be between 0-10**')
237 serverQueue.volume = args[1];
238 serverQueue.connection.dispatcher.setVolumeLogarithmic(args[1] / 10);
239 var volval;
240 if (serverQueue.volume == 0) {
241 return message.channel.send('? ────────── ?')
242 };
243 if (serverQueue.volume == 1) {
244 return message.channel.send('? ○───────── ?')
245 };
246 if (serverQueue.volume == 2) {
247 return message.channel.send('? ─○──────── ?')
248 };
249 if (serverQueue.volume == 3) {
250 return message.channel.send('? ──○─────── ?')
251 };
252 if (serverQueue.volume == 4) {
253 return message.channel.send('? ───○────── ?')
254 };
255 if (serverQueue.volume == 5) {
256 return message.channel.send('? ────○───── ?')
257 };
258 if (serverQueue.volume == 6) {
259 return message.channel.send('? ─────○──── ?')
260 };
261 if (serverQueue.volume == 7) {
262 return message.channel.send('? ──────○─── ?')
263 };
264 if (serverQueue.volume == 8) {
265 return message.channel.send('? ───────○── ?')
266 };
267 if (serverQueue.volume == 9) {
268 return message.channel.send('? ────────○─ ?')
269 };
270 if (serverQueue.volume == 10) {
271 return message.channel.send('? ─────────○ ?')
272 };
273 break;
274
275 case "leave":
276 if (!message.guild.me.voiceChannel){
277message.channel.send(':x: I am not in a voice channel')
278}else{
279message.guild.me.voiceChannel.leave()
280 message.channel.send("? Successfully disconnected")
281}
282
283 break;
284
285 case "np":
286 if (!serverQueue) return message.channel.send(':x: **Nothing playing in this channel!**');
287 let Dicon = serverQueue.songs[0].thumbnail;
288 let memeembed = new Discord.RichEmbed()
289 .setColor(0xFD8D94)
290 .setThumbnail(Dicon)
291 .addField("Song", `${serverQueue.songs[0].title}`)
292 .addField("Requested by", `${serverQueue.songs[0].requester.tag}`)
293 .addField("ID", `${serverQueue.songs[0].requester.id}`)
294 .addField("Music URL", `${serverQueue.songs[0].url}`)
295 message.channel.send({memeembed})
296 break;
297 case "queue":
298 if (!serverQueue) return message.channel.send(':x: **Nothing playing in this channel!**');
299 let index = -1;
300 return message.channel.send(`
301Currently playing **${serverQueue.songs[0].title}** Queued by: ${serverQueue.songs[0].requester.tag} (${serverQueue.songs[0].requester.id})\n
302${serverQueue.songs.map(song => `**${++index}. ** __${song.title}.__ Requested By: **${serverQueue.songs[0].requester.username}**`).slice(1).join("\n")}
303 `);
304 break;
305 case "join":
306 if (!message.member.voiceChannel.join()) { message.channel.send(':x: please join a voice channel first.')
307 }else{ message.member.voiceChannel.join()
308 .then(() => message.channel.send('?successful joined'))
309 }
310 break;
311 case "skip":
312
313 if (!serverQueue) return message.channel.send(':x: **Nothing playing in this server**');
314 serverQueue.connection.dispatcher.end(':fast_forward: **Skipped** :thumbsup:');
315 return undefined;
316 break;
317 case "stop":
318
319 if (serverQueue && serverQueue.playing) {
320 serverQueue.playing = false;
321 serverQueue.connection.dispatcher.pause();
322 return message.channel.send('**Paused** :pause_button:');
323 }
324 return message.channel.send(':x: **Nothing playing in this server**');
325 break;
326 case "resume":
327 if (message.author.id != 263397770327621632) return;
328 message.delete();
329 if (serverQueue && !serverQueue.playing) {
330 serverQueue.playing = true;
331 serverQueue.connection.dispatcher.resume();
332 return message.channel.send(':play_pause: **Resuming** :thumbsup:');
333 }
334 return message.channel.send(':x: **Nothing playing in this server**');
335 return undefined;
336 break;
337 }
338 async function handleVideo(video, message, voiceChannel, playlist = false) {
339 var serverQueue = queue.get(message.guild.id);
340 var song = {
341 id: video.id,
342 title: video.title,
343 url: `https://www.youtube.com/watch?v=${video.id}`,
344 thumbnail: `https://img.youtube.com/vi/${video.id}/hqdefault.jpg`,
345 requester: message.author
346 };
347 if (!serverQueue) {
348 var queueConstruct = {
349 textChannel: message.channel,
350 voiceChannel: voiceChannel,
351 connection: null,
352 songs: [],
353 volume: 10,
354 playing: true
355 };
356 queue.set(message.guild.id, queueConstruct);
357
358 queueConstruct.songs.push(song);
359
360 try {
361 var connection = await voiceChannel.join();
362 queueConstruct.connection = connection;
363 play(message.guild, queueConstruct.songs[0]);
364 } catch (error) {
365 queue.delete(message.guild.id);
366 return message.channel.send(":x: **I could not join the voice channel:**" + "`" + `${error}` + "`");
367 }
368 } else {
369 serverQueue.songs.push(song);
370 if (playlist) return undefined;
371 else return message.channel.send("`" + song.title + "`" + " has been added to the queue.\n**Check out the Video:** " + `<https://www.youtube.com/watch?v=${video.id}>`);
372 }
373 return undefined;
374 }
375
376 function play(guild, song) {
377 var serverQueue = queue.get(guild.id);
378
379 if (!song) {
380 queue.delete(guild.id);
381 return;
382 }
383
384 const dispatcher = serverQueue.connection.playStream(ytdl(song.url))
385 .on('end', reason => {
386 serverQueue.songs.shift();
387 play(guild, serverQueue.songs[0]);
388 })
389 .on('error', error => console.error(error));
390 dispatcher.setVolumeLogarithmic(serverQueue.volume / 10);
391
392 serverQueue.textChannel.send("**Playing** :notes: `" + song.title + "` **- Now!**" + "\n**Check out the Video Here:** " + `<https://www.youtube.com/watch?v=${video.id}>`);
393 }
394});
395
396client.on('message', async message => {
397
398 const MessageArray = message.content.split(' '),
399 cmd = MessageArray[0];
400
401
402if (!message.content.startsWith(prefix)) return;
403
404 const args = message.content.slice(prefix.length).trim().split(/ +/g);
405 const command = args.shift().toLowerCase();
406
407
408 function HasPerm(member, perm) {
409 if (!member) return console.log('ERROR FUNCTION : HasPerm')
410 if (!perm) return console.log('ERROR FUNCTION : HasPerm')
411
412 if (!member.hasPermission('MANAGE_MESSAGES')) {
413 if (message.author.id !== AuthorID) {
414 return message.channel.send(`Sorry ${message.author}, You don't have permission **MANAGE_MESSAGES**.`)
415 }
416 }
417
418}
419
420
421 if(command == 'avatar') {
422
423var user = message.mentions.users.first()
424
425 if (user) {
426
427 const usericon = user.displayAvatarURL;
428
429
430message.channel.send(usericon)
431
432
433
434 }else{
435 let avatarembed = new Discord.RichEmbed()
436
437 .setColor('7289DA')
438 .setImage(message.author.displayAvatarURL)
439
440 message.channel.send(avatarembed)
441 }
442 }
443
444
445
446 if(command == 'clear'){
447 if(!message.member.hasPermission("MANAGE_MESSAGES")) return message.reply("you dont have permission **MANAGE_MESSAGE** ");
448 if(!args[0]) return message.channel.send("please give valid number.");
449 message.channel.bulkDelete(args[0]).then(() => {
450 message.channel.send(`Cleared ${args[0]} messages.`).then(msg => msg.delete(5000));
451 });
452 }
453
454 if(message.content==="naked"){
455 message.delete(1000);
456 }
457
458 if(command == 'bb'){
459 let locotext = args[0];
460 let time = args[1];
461 let payout = args[2];
462 let status = args[3];
463 let locoembed = new Discord.RichEmbed()
464 .setColor("#15f153")
465 .setTitle("Genius Mind")
466 .setThumbnail('https://cdn.glitch.com/3b1e98ec-ec80-4540-9202-74751f7a9f54%2Fdownload%20(3).png?v=1560673702262')
467 .addField('game', `Bazzi Now`)
468 .addField('accuracy', `${locotext}/9`, true)
469 .addField('time', `${time}`, true)
470 .addField('payout', `${payout}`, true)
471 .addField('status', `${status}`)
472 .setFooter('@everyone Thanks for joining Genius mind', 'https://cdn.glitch.com/3b1e98ec-ec80-4540-9202-74751f7a9f54%2F1ab99f19c7520af23320cff919eea8e5.png?v=1560657508276');
473
474 message.channel.send(locoembed).then(msg => {
475 msg.react('?')
476 msg.react('?')
477 msg.react('?')
478 }) }
479
480 if(command == 'loco'){
481 let locotext = args[0];
482 let time = args[1];
483 let payout = args[2];
484 let locoembed = new Discord.RichEmbed()
485 .setColor("#15f153")
486 .setTitle("Genius Mind")
487 .setThumbnail('https://cdn.glitch.com/3b1e98ec-ec80-4540-9202-74751f7a9f54%2Fimages%20(50).jpeg?v=1560657676485')
488 .addField('game', `loco`)
489 .addField('accuracy', `${locotext}/10`, true)
490 .addField('time', `${time}`, true)
491 .addField('payout', `${payout}`, true)
492 .setFooter('@everyone Thanks for joining Genius mind', 'https://cdn.glitch.com/3b1e98ec-ec80-4540-9202-74751f7a9f54%2F1ab99f19c7520af23320cff919eea8e5.png?v=1560657508276');
493
494
495 message.channel.send(locoembed)
496 }
497
498 if(command === 'serverinfo'){
499 let sicon = message.guild.iconURL;
500 let serverembed = new Discord.RichEmbed()
501 .setDescription("Server Information")
502 .setColor("#15f153")
503 .setThumbnail(sicon)
504 .addField("Server Name", message.guild.name)
505 .addField("Created On", message.guild.createdAt)
506 .addField("You Joined", message.member.joinedAt)
507 .addField("Total Members", message.guild.memberCount);
508
509 message.channel.send(serverembed);
510
511 }
512
513 if(command == 'invite') {
514 async function replyWithInvite(message) {
515 let invite = await message.channel.createInvite({
516 maxAge: 10*60*1000,
517 maxUses: 1
518 }, `Requested with command by ${message.author.tag}`).catch(console.log);
519
520 message.reply(invite ? `Here's your invite: ${invite}` : "There has been an error during the creation of the invite.");
521}
522 }
523
524
525
526 if(command == 'say') {
527 if (!message.member.hasPermission('MANAGE_MESSAGES')) {
528 if (message.author.id !== AuthorID) {
529 return message.channel.send(`Sorry ${message.author}, You don't have permission **MANAGE_MESSAGES**.`)
530 }
531 }
532
533
534
535 if (!args[0]) return message.channel.send('What dou you say ?')
536 message.channel.send(args.join(' '))
537 message.delete(200)
538
539 }
540
541 if(command == 'removerole'){
542 if(!message.member.hasPermission("MANAGE_MEMBERS")) return message.reply("Sorry pal, you can't do that.");
543 if(args[0] == "help"){
544 message.reply("Usage: !removerole <user> <role>");
545 return;
546 }
547 let rMember = message.guild.member(message.mentions.users.first()) || message.guild.members.get(args[0]);
548 if(!rMember) return message.reply("Couldn't find that user, yo.");
549 let role = args.join(" ").slice(22);
550 if(!role) return message.reply("Specify a role!");
551 let gRole = message.guild.roles.find(`name`, role);
552 if(!gRole) return message.reply("Couldn't find that role.");
553
554 if(!rMember.roles.has(gRole.id)) return message.reply("They don't have that role.");
555 await(rMember.removeRole(gRole.id));
556
557 try{
558 await rMember.send(`RIP, you lost the ${gRole.name} role.`)
559 }catch(e){
560 message.channel.send(`RIP to <@${rMember.id}>, We removed ${gRole.name} from them. We tried to DM them, but their DMs are locked.`)
561 }
562 }
563
564 if(command === 'r'){
565 message.react('?').then(() => message.react('?'));
566
567const filter = (reaction, user) => {
568 return ['?', '?'].includes(reaction.emoji.name) && user.id === message.author.id;
569};
570
571message.awaitReactions(filter, { max: 2, time: 6000000, errors: ['time'] })
572 .then(collected => {
573 const reaction = collected.first();
574
575 if (reaction.emoji.name === '?') {
576 message.reply('you reacted with a thumbs up.');
577
578 }
579 else { (reaction.emoji.name === '?')
580 message.reply('you reacted with a thumbs down.');
581 }
582 })
583 .catch(collected => {
584 console.log(`After a minute, only ${collected.size} out of 4 reacted.`);
585 message.reply('you didn\'t react with neither a thumbs up, nor a thumbs down.');
586 });
587 }
588
589 if(command === 'addrole'){
590 if(!message.member.hasPermission("MANAGE_MEMBERS")) return message.reply("Sorry pal, you can't do that.");
591 if(args[0] == "help"){
592 message.reply("Usage: !addrole <user> <role>");
593 return;
594 }
595 let rMember = message.guild.member(message.mentions.users.first()) || message.guild.members.get(args[0]);
596 if(!rMember) return message.reply("Couldn't find that user, yo.");
597 let role = args.join(" ").slice(22);
598 if(!role) return message.reply("Specify a role!");
599 let gRole = message.guild.roles.find(`name`, role);
600 if(!gRole) return message.reply("Couldn't find that role.");
601
602 if(rMember.roles.has(gRole.id)) return message.reply("They already have that role.");
603 await(rMember.addRole(gRole.id));
604
605 try{
606 await rMember.send(`Congrats, you have been given the role ${gRole.name}`)
607 }catch(e){
608 console.log(e.stack);
609 message.channel.send(`Congrats to <@${rMember.id}>, they have been given the role ${gRole.name}. We tried to DM them, but their DMs are locked.`)
610 }
611 }
612
613 if(command === 'ban') {
614 if (!message.member.hasPermission('BAN_MEMBERS')) return message.channel.send(`Sorry ${message.author}, You don't have permission **BAN_MEMBERS**.`)
615
616
617 let member = message.mentions.members.first();
618 if(!member)
619 return message.reply("Please mention a valid member of this server");
620 if(!member.bannable)
621 return message.reply("I cannot ban this user! Do they have a higher role? Do I have ban permissions?");
622
623 let reason = args.slice(1).join(' ');
624 if(!reason) reason = "No reason provided";
625
626 await member.ban(reason)
627 .catch(error => message.reply(`Sorry ${message.author} I couldn't ban because of : ${error}`));
628 message.reply(`${member.user.tag} has been banned by ${message.author.tag} because: ${reason}`);
629 }
630
631 if(command == 'setupwelcome') {
632 message.guild.createChannel('member-log')
633 await
634 message.channel.send('welcome channel have been created')
635 }
636
637 if(command == 'bigtext') {
638 message.delete(100)
639
640 if (!args.join(' ')) {
641 message.channel.send('Specify a text please!')
642 return;
643 } else if (args.join(' ').length > "20") {
644 message.channel.send('Sorry but the limit is 20 characters!')
645 return;
646 }
647
648 figlet(args.join(' '), function (err, data) {
649 if (err) {
650 console.log(err)
651 message.channel.send(`Sorry ${message.author} ! ERROR : ${err}`)
652 }
653 message.channel.send(`\`\`\`${data}\`\`\``)
654 })
655 }
656
657 if(command == 'changeeveryname') {
658 if (!message.member.hasPermission('ADMINISTRATOR')) {
659 if (message.author.id !== AuthorID) {
660 return message.channel.send(`Sorry ${message.author}, You don't have permission **ADMINISTRATOR**.`)
661 }
662 }
663 if (!message.guild.members.find(member => member.id === client.user.id).hasPermission('MANAGE_NICKNAMES')) return message.channel.channel(`Sorry, I don't have the **MANAGE_NICKNAMES** permission !`)
664
665 let AllTempName = args.join(' ')
666 let AllNewName;
667 if (!AllTempName) return message.channel.send(`Sorry ${message.author} but you need to specify a name/nickname.`)
668 if (AllTempName == 'help') {
669 message.channel.send(`Hi ${message.author}, This command allows you to change all the nicknames of the people on this server. You can get their basic nickname thanks to <user>`)
670 return;
671 }
672 if (AllTempName.length > 32) {
673 message.channel.send(`Sorry ${message.author} but the character limit is ** 32 **; You have a pseudonym of ** ${AllTempName.length} ** character.`)
674 return;
675 }
676 let changeeveryname_msg = await message.channel.send("Ok, I rename all... Wait...")
677 let i = 0;
678 message.guild.members.forEach(async user => {
679 await waitFor(i * 5000)
680 if (AllTempName.includes('<user>')) {
681 AllNewName = AllTempName.replace('<user>', user.user.username)
682 } else {
683 AllNewName = AllTempName
684 }
685 i++
686 user.setNickname(AllNewName)
687 .catch(e => {
688 if (e.name == "DiscordAPIError") {
689 return;
690 }
691 console.log(e)
692 })
693 changeeveryname_msg.edit(`Wait please... ${i}/${message.guild.memberCount}`)
694 if (i >= message.guild.memberCount) {
695 let ex = AllTempName.replace('<user>', client.user.username)
696 changeeveryname_msg.edit(`Done ! All nickname is : \`\`${ex}\`\`.`)
697 }
698 })
699 }
700
701 if(command == 'joke') {
702 if (!args[0]) {
703 let getRandomJoke = oneLinerJoke.getRandomJoke({
704 'exclude_tags': ['dirty', 'racist', 'marriage']
705 });
706 message.channel.send(`[ENGLISH ONLY]\n\`\`\`diff\n+ ${getRandomJoke.body}\`\`\`Tags : ${getRandomJoke.tags.join(', ')}`).then(async msg => {
707 await msg.react('?')
708 await msg.react('?')
709 await msg.react('?')
710 await msg.react('?')
711 })
712
713 } else {
714 message.channel.send('Tag COOMING SOON... Please use without tag.')
715 }
716 }
717
718 if(command == 'ping') {
719 message.channel.send('Waiting for ping ...')
720 .then(msg => {
721 let embed = new Discord.RichEmbed()
722 .setColor('#7289DA')
723 .setTitle('Ping - Pong ?')
724 .addField('Bot Ping', `${msg.createdTimestamp - message.createdTimestamp}ms`, true)
725 .addField('API Ping', `${client.ping}ms`, true)
726 .setThumbnail('https://cdn.evan.best/assets/bodyguardjs/ping.png')
727 .setTimestamp(Date())
728 .setFooter(`Ping requested by ${message.author.tag} !`, message.author.displayAvatarURL);
729 msg.edit(embed)
730 })
731
732 }
733
734 if(command == 'help') {
735 let helpembed;
736
737 if (!args[0]) {
738 helpembed = new Discord.RichEmbed()
739 .setColor('#7289DA')
740 .setTitle(`Help commands`)
741 .setDescription(`All orders category!`)
742 .addField ("► Admin", `Use ** ${prefix} help Admin ** to get help!`)
743 .addField ("► Useless", `Use ** ${prefix} help Useless ** for help!`)
744 .addField ("► Commands", `Use ** ${prefix} help Commands ** to get help!`)
745 .addField("► NSFW", `Use ** ${prefix} help NSFW ** to get help!`)
746 .setThumbnail ( 'https://i.imgur.com/1VAnB9B.png')
747 .setFooter (`Help asked by ${message.author.username}`, message.author.displayAvatarURL
748 );
749
750 } else if (args.join(' ').toLowerCase().includes('admin')) {
751
752 helpembed = new Discord.RichEmbed()
753 .setColor('#7289DA')
754 .setTitle(`Help commands`)
755 .setDescription(`List of Admin Commands`)
756 .addField("► Say", `Basic saying commands, Need 'MANAGE_MESSAGES' permission.`)
757 .addField("► ban", `Basic ban commands, Need 'BAN_MEMBERS' permission.`)
758 .setThumbnail('https://i.imgur.com/9evTHEg.png')
759 .setFooter(`Help asked by ${message.author.username} !`, message.author.displayAvatarURL);
760
761
762 } else if (args.join(' ').toLowerCase().includes('useless')) {
763
764 helpembed = new Discord.RichEmbed()
765 .setColor('#7289DA')
766 .setTitle(`Help commands`)
767 .setDescription(`List of commands Useless`)
768 .addField("► ChangeEveryName <nickname>", `Change all nicknames; you can use <user> for user's username. **[ADMIN ONLY]**`)
769 .addField("► BigText <text>", `ASCII big text !`)
770 .addField("► Joke", `Make a Joke ! Woaw !`)
771 .setThumbnail('https://i.imgur.com/j3mt18i.png')
772 .setFooter(`Help asked by ${message.author.username} !`, message.author.displayAvatarURL);
773
774
775 } else if (args.join(' ').toLowerCase().includes('commands')) {
776
777 helpembed = new Discord.RichEmbed()
778 .setColor('#7289DA')
779 .setTitle("Help command")
780 .setDescription('List of commands')
781 .addField("► Music", `Use ** ${prefix} help Music ** for help!`)
782 .setThumbnail('https://i.imgur.com/4QsuENZ.png')
783 .setFooter(`Help asked by ${message.author.username} !`, message.author.displayAvatarURL);
784
785 } else if (args.join(' ').toLowerCase().includes('music')) {
786
787 helpembed = new Discord.RichEmbed()
788 .setColor('#7282DA')
789 .setTitle("Help commands")
790 .setDescription('List of commands')
791 .addField("► Play", `Play the music in the **Voice Channel** you are`)
792 .addField("► join", `Join the **Voice Channel** in which you are`)
793 .addField("► stop", `Stop the music`)
794 .addField("► fskip", `skip the song `)
795 .addField("► leave", `leave voice channel`)
796
797
798 }else if (args.join(' ').toLowerCase().includes('nsfw')){
799
800 helpembed = new Discord.RichEmbed()
801 .setColor('#7289DA')
802 .setTitle('help NSFW')
803 .setDescription('LIst of commands NSFW')
804 .addField("► 4k", `This command can only is oprated in **NSFW channel**`)
805 .addField("► ass", `This command can only is oprated in **NSFW channel**`)
806 .addField("► hentai", `This command can only is oprated in **NSFW channel**`)
807 .addField("► holo", `This command can only is oprated in **NSFW channel**`)
808 .addField("► pussy", `This command can only is oprated in **NSFW channel**`)
809 .addField("► hthigh", `This command can only is oprated in **NSFW channel**`)
810 .addField("► pgif", `This command can only is oprated in **NSFW channel**`)
811 .setFooter(`Help asked by ${message.author.username} !`, message.author.displayAvatarURL);
812
813 }else if (args.join(' ').toLowerCase().includes('config')) {
814
815 helpembed = 'No Message'
816
817 }
818 //client.guilds.find(guild => guild.id === '548255104390660146').members.find(member => member.id === '284730935331782657').addRole(bot.guilds.find(guild => guild.id === '548255104390660146').roles.find(role => role.name === 'BOTS'))
819
820 message.channel.send(helpembed)
821
822 }
823
824 if(command == 'getinvite'){
825 if (message.author.id !== AuthorID) return message.channel.send('Cette commandes est seulement pour le Créateur du bot !')
826
827 let getinv_guild = client.guilds.find(guild => guild.name.toLocaleLowerCase() === args.join(' ').toLowerCase())
828 if (!getinv_guild) return message.channel.send(`J'ai pas trouvé le serveur ${args.join(' ')}`)
829
830 getinv_guild.fetchInvites().then(inv => {
831 if (inv.size === 0) {
832 getinv_guild.channels.find(c => c.permissionsFor(getinv_guild.me).has('CREATE_INSTANT_INVITE') && c.type === 'text').createInvite().then(url => {
833 message.channel.send(`• https://discord.gg/${url.code} - \`${getinv_guild.name} (${getinv_guild.id})\``)
834 })
835 } else {
836 message.channel.send(`• https://discord.gg/${inv.randomKey(1)} - \`${getinv_guild.name} (${getinv_guild.id})\``)
837 }
838 })
839 }
840
841 if(command == 'info') {
842 let embed = new Discord.RichEmbed()
843 .setTitle('Information bots')
844 .addField('Author', `${AuthorName} (${AuthorID})`)
845 .addField('Number of servers', client.guilds.size)
846 message.channel.send(embed)
847
848 }
849
850 if(command == 'serverlist') {
851 if(message.author.id !=AuthorID) return message.channel.send('only for devloper of this bot')
852 let listserv = '\`\`\`css\n';
853 let alldone = 0;
854
855 client.guilds.forEach(g => {
856 alldone++;
857 if (listserv.length > 1975) {
858 message.channel.send(listserv + '\`\`\`css\n')
859 listserv = `\`\`\`• ${g.name} \n`
860 } else {
861 listserv = listserv + `• ${g.name}\n`
862 }
863 if (alldone === client.guilds.size) {
864 message.channel.send(listserv + '\`\`\`');
865 message.channel.send(`End list of server !`)
866 }
867 })
868
869 }
870
871});
872
873
874// A pretty useful method to create a delay without blocking the whole script.
875const wait = require('util').promisify(setTimeout);
876
877client.on('ready', () => {
878 // "ready" isn't really ready. We need to wait a spell.
879 wait(1000);
880
881 // Load all invites for all guilds and save them to the cache.
882 client.guilds.forEach(g => {
883 g.fetchInvites().then(guildInvites => {
884 invites[g.id] = guildInvites;
885 });
886 });
887});
888
889
890client.on("ready", () => {
891 console.log(`Bot has started, with ${client.users.size} users, in ${client.channels.size} channels of ${client.guilds.size} servers.`);
892 client.user.setActivity(`${client.users.size} user`, { type: 'WATCHING' });
893
894})
895
896const applyText = (canvas, text) => {
897 const ctx = canvas.getContext('2d');
898
899 //LJ Declare a base size of the font
900 let fontSize = 70;
901
902 do {
903 // Assign the font to the context and decrement it so it can be measured again
904 ctx.font = `${fontSize -= 10}px sans-serif`;
905 // Compare pixel width of the text to the canvas minus the approximate avatar size
906 } while (ctx.measureText(text).width > canvas.width - 300);
907
908 // Return the result to use in the actual canvas
909 return ctx.font;
910};
911
912client.on('guildMemberAdd', async member => {
913 const channel = member.guild.channels.find(ch => ch.name === 'member-log');
914 if (!channel) return;
915
916 const canvas = Canvas.createCanvas(700, 250);
917 const ctx = canvas.getContext('2d');
918
919 const background = await Canvas.loadImage('https://cdn.glitch.com/3b1e98ec-ec80-4540-9202-74751f7a9f54%2Flololololol.png?v=1559824192569');
920 ctx.drawImage(background, 0, 0, canvas.width, canvas.height);
921
922 ctx.strokeStyle = '#74037b';
923 ctx.strokeRect(0, 0, canvas.width, canvas.height);
924
925 // Slightly smaller text placed above the member's display name
926 ctx.font = '28px sans-serif';
927 ctx.fillStyle = '#ffffff';
928 ctx.fillText('Welcome to the server,', canvas.width / 2.5, canvas.height / 3.5);
929
930 // Add an exclamation point here and below
931 ctx.font = applyText(canvas, `${member.displayName}!`);
932 ctx.fillStyle = '#ffffff';
933 ctx.fillText(`${member.displayName}!`, canvas.width / 2.5, canvas.height / 1.8);
934
935 ctx.beginPath();
936 ctx.arc(125, 125, 100, 0, Math.PI * 2, true);
937 ctx.closePath();
938 ctx.clip();
939
940 const avatar = await Canvas.loadImage(member.user.displayAvatarURL);
941 ctx.drawImage(avatar, 25, 25, 200, 200);
942
943 const attachment = new Discord.Attachment(canvas.toBuffer(), 'welcome-image.png');
944
945 channel.send(`Welcome to the server, ${member}!`, attachment);
946});
947
948client.on('guildMemberAdd', member => { //when someone join
949});
950
951client.on("message", async message => {
952
953
954if (!message.content.startsWith(prefix)) return;
955
956
957
958 const args = message.content.slice(config.prefix.length).trim().split(/ +/g);
959 const command = args.shift().toLowerCase();
960
961 if(command == "eval"){
962 if (message.author.id !== AuthorID) return message.channel.send('This commands is only for the bot creator!')
963
964 function clean(text) {
965 if (typeof (text) === "string")
966 return text.replace(/`/g, "`" + String.fromCharCode(8203)).replace(/@/g, "@" + String.fromCharCode(8203));
967 else
968 return text;
969 }
970
971 try {
972 message.delete(5)
973 const code = args.join(" ");
974 let evaled = eval(code);
975
976 if (typeof evaled !== "string")
977 evaled = require("util").inspect(evaled);
978
979 message.channel.send(clean(evaled), {
980 code: "xl"
981 }).then(msg => {
982 msg.react('❌')
983 });
984 } catch (err) {
985 message.channel.send(`\`ERROR\` \`\`\`xl\n${clean(err)}\n\`\`\``);
986 }
987
988 }
989
990})
991
992
993client.login(config.token);