Advertisement
Guest User

Untitled

a guest
Nov 15th, 2018
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 19.84 KB | None | 0 0
  1. const Discord = require('discord.js'),
  2. YTDL = require("ytdl-core"),
  3. FFMPEG = require("ffmpeg"),
  4. YouTube = require('simple-youtube-api'),
  5. YTapi = new YouTube(process.env.ytapikey ? process.env.ytapikey : require("./config.json").ytapikey);
  6. prefix = process.env.prefix ? process.env.prefix : require("./config.json").prefix,
  7. bot = new Discord.Client({
  8. messageCacheMaxSize: 10,
  9. messageCacheLifetime: 0,
  10. messageSweepInterval: 2600,
  11. disableEveryone: true,
  12. fetchAllMembers: false,
  13. disabledEvents: [
  14. 'channelCreate', 'channelDelete', 'channelPinsUpdate', 'channelUpdate', 'clientUserGuildSettingsUpdate',
  15. 'clientUserSettingsUpdates', 'emojiCreate', 'emojiDelete', 'guildBanAdd', 'guildBanRemove', 'guildCreate',
  16. 'guildDelete', 'guildMemberAdd', 'guildMemberAvailable', 'guildMemberRemove', 'guildMembersChunck',
  17. 'guildMemberSpeaking','guildMemberUpdate','guildUnavailable','guildUpdate','messageDelete', 'meesageDeleteBulk',
  18. 'messageReactionAdd', 'messageReactionRemove', 'messageReactionRemoveAll', 'messageUpdate', 'presenceUpdate',
  19. 'roleCreate', 'roleDelete', 'roleUpdate', 'typingStart', 'typingStop', 'userNoteUpdate', 'userUpdate', 'voiceStateUpdate'
  20. ],
  21. ws: { large_threshold: 250, compress: false }
  22. });
  23.  
  24.  
  25. const util = require('util')
  26.  
  27. //variables:
  28. rand = 0;
  29. chactivity = 999;
  30.  
  31. //functions:
  32. function randomInteger(min, max) {
  33. var rand = min + Math.random() * (max - min)
  34. rand = Math.round(rand);
  35. return rand;
  36. }
  37.  
  38. //auto changing activity
  39.  
  40.  
  41. function clean(text) {
  42. if (typeof(text) === "string")
  43. return text.replace(/`/g, "`" + String.fromCharCode(8203)).replace(/@/g, "@" + String.fromCharCode(8203));
  44. else
  45. return text;
  46. }
  47.  
  48. console.log(process.pid);
  49. bot.on(`ready`, () => {
  50. console.log(`${bot.user.username} ready!`)
  51. bot.user.setActivity('para ' + bot.users.size + ' usuários | ' + bot.guilds.size + ' servidores.', { type: "streaming", url: "https://www.twitch.tv/soloqtkiller" });
  52. chactivity = 0;
  53. });
  54. process.on('unhandledRejection', console.error);
  55. bot.login(process.env.token ? process.env.token : require("./config.json").token);
  56.  
  57. if(chactivity == 0) {
  58. setTimeout(function(){
  59. message.channel.send("changed to 1")
  60. bot.user.setActivity(`! SoloQTKiller#9085 é meu desenvolvedor`, { type: "playing"});
  61. chactivity = 1;
  62. }, 10000);
  63. }
  64. if(chactivity == 1) {
  65. setTimeout(function(){
  66. message.channel.send("changed to 2")
  67. bot.user.setActivity(`cpm bugs/${prefix}help`, { type: "playing"});
  68. chactivity = 2;
  69. }, 10000);
  70. }
  71. if(chactivity == 2) {
  72. setTimeout(function(){
  73. message.channel.send("changed to 0")
  74. bot.user.setActivity(`Música perfeita/${prefix}help`, { type: "playing"});
  75. chactivity = 0;
  76. }, 10000);
  77. }
  78.  
  79. var servers = {};
  80.  
  81. function queueShift(server) {
  82. server.queueList.shift();
  83. server.queueNames.shift();
  84. server.queueAuthor.shift();
  85. server.queueImage.shift();
  86. server.queueLength.shift();
  87. server.queueMessages.shift();
  88. server.skipNum = 0;
  89. server.skipUsers = [];
  90. }
  91.  
  92. function end_Connection(bot, server, connect, msg) {
  93. if (server.queueList.length > 1) {
  94. queueShift(server);
  95. play(connect, msg, bot);
  96. } else {
  97. queueShift(server);
  98. connect.disconnect();
  99. let endem = new Discord.RichEmbed()
  100. .setColor("0x00ff0a")
  101. .setDescription(`Parou de tocar em ${connect.channel.name}`)
  102. .setAuthor(`${bot.user.username}`, bot.user.avatarURL);
  103.  
  104. msg.channel.send({ embed: endem }).then(m => m.delete(25000));
  105. }
  106. }
  107.  
  108. function play(connect, msg, bot) {
  109. let server = servers[msg.guild.id];
  110.  
  111. //if (server.queueLength[0] !== 1800) {
  112. if (server.queueLength[0] !== "0:0:0") {
  113. let em = new Discord.RichEmbed()
  114. .setColor("0x00ff0a")
  115. .setAuthor(`${bot.user.username}`, bot.user.avatarURL)
  116. .setThumbnail(server.queueImage[0])
  117. .setDescription(`Tocando agora : **${server.queueNames[0]}** em ${connect.channel.name}\n\n**Solicitado por:** ${server.queueAuthor[0]}\n**Link:** ${server.queueList[0]}\n**Tempo:** ${server.queueLength[0]}`)
  118. .setFooter(`Solicitado por: ${server.queueMessages[0].author.tag}`, server.queueMessages[0].author.avatarURL);
  119.  
  120. msg.channel.send({ embed: em });
  121. server.dispatcher = msg.guild.voiceConnection.playStream(YTDL(server.queueList[0], { audioonly: true }), { passes: process.env.passes ? process.env.passes : require("./config.json").passes});
  122. // passes -- can be increased to reduce packetloss at the expense of upload bandwidth, 4-5 should be lossless at the expense of 4-5x upload
  123.  
  124. server.dispatcher.on("end", (reason) => {
  125. end_Connection(bot, server, connect, msg);
  126. });
  127. } else {
  128. end_Connection(bot, server, connect, msg);
  129. let em = new Discord.RichEmbed()
  130. .setColor("0x00ff0a")
  131. .setAuthor(`${bot.user.username}`, bot.user.avatarURL)
  132. .setThumbnail(server.queueImage[0])
  133. .setDescription(`Pulou **${server.queueNames[0]}** in ${connect.channel.name}\n\n** Razão: ** Erro ao vivo`);
  134.  
  135. msg.channel.send({ embed: em });
  136. }
  137. }
  138.  
  139. function removedat(msg) {
  140. if (msg.channel.type === "dm") return;
  141. if (!msg.deletable) {
  142. return;
  143. }
  144. msg.delete();
  145. }
  146.  
  147. function parseTime(hour, min, seconds) {
  148.  
  149. var hourt = hour !== 0 ? `${hour}` : "";
  150. var mint = min !== 0 ? `${min}` : "";
  151. var secondst = seconds !== 0 ? `${seconds}` : "";
  152.  
  153. hourt = hourt < 10 && hourt !== 0 ? `0${hourt}` : `${hourt}`;
  154. mint = mint < 10 && mint !== 0 ? `0${mint}` : `${mint}`;
  155. secondst = secondst < 10 && secondst !== 0 ? `0${secondst}` : `${secondst}`;
  156.  
  157. return `${hourt==""?"":hourt + ":"}${mint==""?"":mint + ":"}${secondst==""?"":secondst}`;
  158. }
  159.  
  160. function parseUpload(bot, server, link, message, playlist) {
  161. // YTDL.getInfo(link).then(info => {
  162. YTapi.getVideo(link).then(info => {
  163.  
  164. let length = parseTime(info.duration.hours, info.duration.minutes, info.duration.seconds);
  165. if (length == "0:0:0") {
  166. if (!playlist) {
  167. let em = new Discord.RichEmbed()
  168. .setColor("0x00ff0a")
  169. .setAuthor(`${bot.user.username}`, bot.user.avatarURL)
  170. .setThumbnail(info.thumbnails.default.url)
  171. .setDescription(`Não foi possível adicionar **${info.title}** para tocar em ${message.member.voiceChannel.name}\n\n**Motivo:** Transmissão ao vivo`)
  172. .setFooter(`Adicionado por: ${message.author.tag}`, message.author.avatarURL);
  173.  
  174. message.channel.send({ embed: em }).then(m => m.delete(5000));
  175. return;
  176. }
  177. }
  178. //console.log(info);
  179. server.queueList.push(link);
  180. server.queueNames.push(info.title);
  181. server.queueAuthor.push(info.channel.title);
  182. server.queueImage.push(info.thumbnails.default.url);
  183. server.queueLength.push(length);
  184. server.queueMessages.push(message);
  185.  
  186. if (!message.guild.voiceConnection) {
  187. message.member.voiceChannel.join().then(function(connection) { play(connection, message, bot); });
  188. } else {
  189. if (!playlist) {
  190. let em = new Discord.RichEmbed()
  191. .setColor("0x00ff0a")
  192. .setAuthor(`${bot.user.username}`, bot.user.avatarURL)
  193. .setThumbnail(info.thumbnails.default.url)
  194. .setDescription(`:white_check_mark: Adicionado **${info.title}** para tocar ${message.member.voiceChannel.name}\n\n**Por:** ${info.channel.title}\n**Link:** ${link}\n**Tempo:** ${length} `)
  195. .setFooter(`Solicitado por: ${message.author.tag}`, message.author.avatarURL);
  196.  
  197. message.channel.send({ embed: em });
  198. }
  199. }
  200. })
  201. .catch(console.log);
  202. }
  203.  
  204.  
  205.  
  206. //CLEVERBOT
  207.  
  208.  
  209. var cleverbot = require("cleverbot.io"),
  210. cbot = new cleverbot("MLjiZF48MyvQ6wMG", "3ZvkOvKwqVH1DQaedAVsFQvXcBSBDLbt");
  211. cbot.setNick("reflex");
  212. cbot.create(function (err, session) {
  213. bot.on(`message`, (message) => {
  214. if(message.content.indexOf(".talk") + 1) {
  215. args = message.content.split(".talk");
  216. args = args[1];
  217. cbot.ask(args, function (err, response) {
  218. console.log(response); // Will likely be: "Living in a lonely world"
  219. message.reply(response);
  220.  
  221. });
  222. }
  223. })
  224. });
  225.  
  226.  
  227.  
  228.  
  229.  
  230.  
  231.  
  232.  
  233.  
  234. bot.on(`message`, (message) => {
  235. if (message.author.bot) return;
  236. if (!message.content.startsWith(`${prefix}`)) return;
  237. if (message.channel.type == "dm") return;
  238. var args = message.content.substring(prefix.length).split(" ");
  239.  
  240. switch (args[0].toLowerCase()) {
  241. case "help":
  242. let em = new Discord.RichEmbed()
  243. .setColor("0x00ff0a")
  244. .setAuthor(`${bot.user.username}`)
  245. .setFooter(`Help`, bot.user.avatarURL)
  246. .setDescription("Feito por: SoloQTKiller qualquer erro ou duvida entre em contato comigo!")
  247. .addField(`Meu prefixo é:`, `e!`)
  248. .addField(`prefixo + help`, `Envia esta mensagem.`)
  249. .addField(`COMANDOS DE MÚSICA`, `Experimente música de qualidade e perfeita!`)
  250. .addField(`prefixo + play (link/nome/lista de reprodução)`, `Reproduz uma música no canal atual.`)
  251. .addField(`prefixo + skip`, `Pula a música atual.`)
  252. .addField(`prefixo + stop`, `Para a musica e reseta a lista.`)
  253. .addField(`prefixo + queue`, `Mostra as primeiras 5 músicas na fila.`)
  254. .addField(`prefixo + np`, `Mostra o que está tocando agora.`)
  255. .addField(`prefixo + volume "volume"`, `Altera o volume da música.`)
  256. .addField(`prefixo + bb`, `Ativa "bassboost" xd.`)
  257.  
  258. message.channel.send({ embed: em });
  259. break;
  260. case "play":
  261. if (!message.member.voiceChannel) {
  262. message.channel.send(":x: Você precisa estar em um canal de voz!");
  263. break;
  264. }
  265. if (!message.member.voiceChannel.joinable || message.member.voiceChannel.full) {
  266. message.channel.send(":x: Eu não posso conectar nesse canal de voz.");
  267. break;
  268. }
  269. if (!args[1]) {
  270. message.channel.send(":x: Faltou você colocar o link da música!");
  271. break;
  272. }
  273. message.channel.send(`<@${message.author.id}>, Agora irei processar o nome da música/link!`).then(m => m.delete(5000));
  274. if (!servers[message.guild.id]) {
  275. servers[message.guild.id] = { queueList: [], queueNames: [], queueAuthor: [], queueImage: [], queueLength: [], queueMessages: [], skipNum: 0, skipUsers: [] };
  276. }
  277.  
  278. if (!args[1].match(/^https?:\/\/(www.youtube.com|youtube.com)/)) {
  279. // message.channel.send(":x: Are you sure thats a Youtube link?")
  280. var server = servers[message.guild.id];
  281.  
  282. YTapi.searchVideos(args.slice(1).join(" "), 11).then(videos => {
  283. // console.log(videos)
  284. let choice = new Discord.RichEmbed()
  285. .setColor("0x00ff0a")
  286. .setAuthor(`${bot.user.username}`)
  287. .setDescription(`Forneça um valor para selecionar um dos resultados de pesquisa que vão de 1 a 10`)
  288. .setFooter(`Cancelando em 10 segundos`, bot.user.avatarURL)
  289. .setTimestamp()
  290. .addField(`**1.** ${videos[0].title}`, `[${videos[0].channel.title}](https://www.youtube.com/channel/${videos[0].channel.id}) `)
  291. .addField(`**2.** ${videos[1].title}`, `[${videos[1].channel.title}](https://www.youtube.com/channel/${videos[1].channel.id}) `)
  292. .addField(`**3.** ${videos[2].title}`, `[${videos[2].channel.title}](https://www.youtube.com/channel/${videos[2].channel.id}) `)
  293. .addField(`**4.** ${videos[3].title}`, `[${videos[3].channel.title}](https://www.youtube.com/channel/${videos[3].channel.id}) `)
  294. .addField(`**5.** ${videos[4].title}`, `[${videos[4].channel.title}](https://www.youtube.com/channel/${videos[4].channel.id}) `)
  295. .addField(`**6.** ${videos[5].title}`, `[${videos[5].channel.title}](https://www.youtube.com/channel/${videos[5].channel.id}) `)
  296. .addField(`**7.** ${videos[6].title}`, `[${videos[6].channel.title}](https://www.youtube.com/channel/${videos[6].channel.id}) `)
  297. .addField(`**8.** ${videos[7].title}`, `[${videos[7].channel.title}](https://www.youtube.com/channel/${videos[7].channel.id}) `)
  298. .addField(`**9.** ${videos[8].title}`, `[${videos[8].channel.title}](https://www.youtube.com/channel/${videos[8].channel.id}) `)
  299. .addField(`**10.** ${videos[9].title}`, `[${videos[9].channel.title}](https://www.youtube.com/channel/${videos[9].channel.id}) `)
  300.  
  301.  
  302. message.channel.send({ embed: choice });
  303.  
  304.  
  305. message.channel.awaitMessages(m => m.content > 0 && m.content < 10, {
  306. max: 1,
  307. max: 1,
  308. time: 10000,
  309. errors: ['time']
  310. })
  311. .then(collected => {
  312. collected.first().delete();
  313.  
  314. // message.channel.send(`Okay I'll now add **${videos[collected.first().content-1].title}**`).then(m => m.delete(5000))
  315. parseUpload(bot, server, `https://www.youtube.com/watch?v=${videos[collected.first() - 1].id}`, message);
  316. })
  317. .catch(err => {
  318. console.log(err);
  319. //console.log(collected.first().author.id);
  320. message.channel.send(`** Cancelado **`);
  321. });
  322.  
  323. });
  324. } else {
  325. if (args[1].match(/^https?:\/\/(www.youtube.com|youtube.com)\/playlist(.*)$/)) {
  326. YTapi.getPlaylist(args[1]).then(list => {
  327. message.channel.send(`⏱ Analisando a lista de reprodução: **${list.title}**\nPor favor, dê um tempo. Isso também inclui o poder de análise do servidor e a quantidade de vídeos fornecidos.`);
  328. list.getVideos().then(videos => {
  329. for (const video of Object.values(videos)) {
  330. YTapi.getVideoByID(video.id).then(vid => {
  331. parseUpload(bot, servers[message.guild.id], `https://www.youtube.com/watch?v=${vid.id}`, message, true);
  332. });
  333.  
  334. }
  335. message.channel.send(`:white_check_mark: Playlist: **${list.title}** [${videos.length > 50 ? '50+' : videos.length} vídeos] foi adicionado à fila!`);
  336. });
  337. });
  338. } else {
  339. parseUpload(bot, servers[message.guild.id], args[1], message);
  340. }
  341. }
  342.  
  343. break;
  344. case "skip":
  345. if (!message.member.voiceChannel) {
  346. message.channel.send(":x: Você precisa estar em um canal de voz!");
  347. break;
  348. }
  349. var server = servers[message.guild.id];
  350. if (!server) return;
  351. if (!message.guild.voiceConnection) return;
  352. if (!message.member.voiceChannel) {
  353. message.channel.send(":x: Você precisa estar em um canal de voz!");
  354. break;
  355. }
  356. if (server.dispatcher) server.dispatcher.end();
  357. break;
  358. case "stop":
  359. if (!message.member.voiceChannel) {
  360. message.channel.send(":x: Você precisa estar em um canal de voz!");
  361. break;
  362. }
  363. var server = servers[message.guild.id];
  364. if (!server) return;
  365. server.queueList = [];
  366. server.queueNames = [];
  367. server.queueAuthor = [];
  368. server.queueImage = [];
  369. server.queueLength = [];
  370. server.queueMessages = [];
  371. server.skipNum = 0;
  372. server.skipUsers = [];
  373. if (message.guild.voiceConnection) message.guild.voiceConnection.disconnect();
  374. break;
  375. case "queue":
  376. var server = servers[message.guild.id];
  377. if (!server) {
  378. return;
  379. } else if (server.queueNames.length == 0) {
  380. return;
  381. }
  382.  
  383. var queue = ` **Fila para ${message.guild.name}** [ ${server.queueNames.length} musica${server.queueNames.length>1?"s":""} total ]\n\n `;
  384. var queueLength = server.queueNames.length > 5 ? 5 : server.queueNames.length;
  385. for (var i = 0; i < queueLength; i++) {
  386. var temp = ` ${i + 1}: ${i === 0 ? "*(Música atual)*":""} ${server.queueNames[i].includes("*")?server.queueNames[i].replace('*', ''):server.queueNames[i]}\n **Adicionada por:** ${server.queueMessages[i].author.tag }\n\n`;
  387. queue = queue + temp;
  388. }
  389. if (queueLength == 5 && server.queueNames.length > 5) {
  390. var addition = `***+ ${server.queueNames.length-5} mais músicas***`;
  391. queue = queue + addition;
  392. }
  393. let queue_embed = new Discord.RichEmbed()
  394. .setColor("0x00ff0a")
  395. .setAuthor(`${bot.user.username }`)
  396. .setDescription(queue)
  397. .setThumbnail(message.guild.iconURL !== null ? message.guild.iconURL : "https://maxcdn.icons8.com/Share/icon/Logos//discord_logo1600.png")
  398. .setFooter(`Server Queue`, bot.user.avatarURL);
  399.  
  400. message.channel.send({ embed: queue_embed });
  401. break;
  402. case "playing":
  403. var server = servers[message.guild.id];
  404. if (!server) { return message.channel.send(`:x: Nada está tocando agora ...`); }
  405. if (!server.queueList[0]) { return message.channel.send(`:x: Nada está tocando agora ...`); }
  406.  
  407. let npem = new Discord.RichEmbed()
  408. .setColor("0x00ff0a")
  409. .setAuthor(`${bot.user.username }`)
  410. .setThumbnail(server.queueImage[0])
  411. .setDescription(`**Tocando agora** \n\n **Nome: ** ${server.queueNames[0]}\n **Por: ** ${server.queueAuthor[0]}\n **Link: ** ${server.queueList[0]}\n **Tempo:** ${server.queueLength[0]}\n **Adicionado por: ** ${server.queueMessages[0].author.tag}`)
  412. .setFooter(`Tocando agora`, bot.user.avatarURL);
  413.  
  414. message.channel.send({ embed: npem });
  415. break;
  416. case "ping":
  417. let um = new Discord.RichEmbed()
  418. .setColor("0x00ff0a")
  419. .setAuthor(`${bot.user.username}`, bot.user.avatarURL)
  420. .setThumbnail()
  421. .setDescription(`Pong!`)
  422. .setFooter(``);
  423. message.channel.send({ embed: um });
  424. break;
  425. case "eval":
  426.  
  427. if(message.member.id !== "477567345439801345") {
  428. try {
  429. if(message.content.indexOf(".eval") + 1) {
  430. const args = message.content.split(".eval");
  431. eval(args[1]);
  432.  
  433. }
  434. }
  435.  
  436.  
  437. catch(err) {
  438. message.channel.sendMessage("*Saída de depuração:* ```xl\n" + clean(err) + "\n```");
  439. }
  440. return;
  441. }
  442. if(message.member.id !== "477567345439801345") {
  443. message.channel.send("Não vá tão longe! Você não é o dono deste bot para usar esse comando!");
  444. }
  445. break;
  446. case "volume":
  447. if(message.content.indexOf(".volume") + 1) {
  448. if (!message.member.voiceChannel) {
  449. message.channel.send(":x: Você precisa estar em um canal de voz!");
  450. break;
  451. }
  452. if (message.member.voiceChannel) {
  453. args = message.content.split(".volume");
  454. args = message.content.split(" ");
  455. args = args[1];
  456. let volumeint = parseInt(args);
  457. if(volumeint < 101) {
  458. if(volumeint > -1) {
  459. if(volumeint !== NaN) {
  460. try {
  461. message.guild.voiceConnection.player.dispatcher.setVolume(volumeint/100);
  462. message.channel.send(":white_check_mark: volume agora é " + volumeint);
  463. break;
  464. }
  465.  
  466. catch (err) {
  467. message.channel.send(":x: um erro inesperado aconteceu ao mudar o volume! Certifique-se de que qualquer música está tocando!");
  468. }
  469. } else {
  470. message.channel.send(":x: valor de volume inválido! (" + volumeint + ")");
  471. break;
  472. }
  473. } else {
  474. message.channel.send(":x: valor de volume inválido! (" + volumeint + ")");
  475. break;
  476. }
  477. }
  478. if(message.content.indexOf(".volume chk") + 1) {
  479. message.channel.send("Agora o volume é " + message.guild.voiceConnection.player.dispatcher.volume * 100 + ", o volume normal é 100, o volume máximo é 200.");
  480. break;
  481. }
  482. }
  483. }
  484. }
  485. //message.delete();
  486. });
  487.  
  488. bot.on(`message`, (message) => {
  489. console.log(message.author + " - '" + message.content + "'");
  490. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement