Advertisement
Guest User

Untitled

a guest
Dec 7th, 2018
136
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. const Discord = require("discord.js");
  2. const client = new Discord.Client();
  3. const forEachTimeout = require('foreach-timeout');
  4. const hastebinGen = require('hastebin-gen');
  5. const mysql = require('mysql');
  6.  
  7. const creator = '242975403512168449';
  8. const hexreg = /^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/;
  9.  
  10. let prefix = '=';
  11.  
  12. let rainbowOn = new Set();
  13. let rainbowRole = new Set();
  14. let blocked = new Set();
  15.  
  16. let colors = '#ff0000 #ffa500 #ffff00 #00ff00 #00BFFF #0000ff #ff00ff';
  17.  
  18. /** @namespace process.env.BOT_TOKEN */
  19. /** @namespace process.env.HOST */
  20. /** @namespace process.env.USER */
  21. /** @namespace process.env.PASSWORD */
  22. /** @namespace process.env.DATABASE */
  23.  
  24. const db = mysql.createConnection({
  25.     host: process.env.HOST,
  26.     user: process.env.USER,
  27.     password: process.env.PASSWORD,
  28.     database: process.env.DATABASE
  29. });
  30.  
  31. db.connect(err => { if (err) console.log(err) });
  32.  
  33. function send(id, msg) {
  34.     client.channels.get(id).send(msg);
  35. }
  36.  
  37. client.on('ready', () => {
  38.     client.user.setActivity(`${prefix}help | ${client.guilds.size} servers`,{ type: 'PLAYING' });
  39.     console.log(`Запущен. Сервера: ${client.guilds.size}`);
  40. })
  41.  
  42.     client.on('guildCreate', (guild) => {
  43.         send('520181376352256002', `
  44. Я **пришел** :inbox_tray: на сервер **${guild.name}**. Информация о нем:
  45. Акроним и ID: **${guild.nameAcronym} | ${guild.id}**
  46. Основатель: **${guild.owner} (\`${guild.owner.user.tag}\`)**
  47. Количество участников: **${guild.memberCount}**
  48. Роли: **${guild.roles.size}**
  49. Каналы: **${guild.channels.size}**
  50. Создана: **${guild.createdAt.toString().slice(4, -32)}**
  51. Иконка: ${guild.iconURL}
  52. **Это наш ${client.guilds.size}-ый сервер!**
  53.         `);
  54.         client.user.setActivity(`${prefix}help | ${client.guilds.size} servers`,{ type: 'PLAYING' });
  55.         let channels = guild.channels.filter(channel => channel.type === 'text' && channel.permissionsFor(guild.members.get(client.user.id)).has('SEND_MESSAGES'));
  56.         if (channels.size > 0) channels.first().send(`Type ${prefix}role-changing \`@role\`, to launch changing role. Напишите ${prefix}role-changing \`@роль\`, чтобы запустить меняющуюся роль. Also, join our server --> https://discord.gg/DxptT7N`);
  57.     });
  58.     client.on('guildDelete', (guild) => {
  59.         if (rainbowOn.has(guild.id)) rainbowOn.delete(guild.id);
  60.         if (rainbowRole.has(guild.id)) rainbowRole.delete(guild.id);
  61.         send('520181376352256002', `
  62. Я **покинул** :outbox_tray: сервер **${guild.name}**. Информация о нем:
  63. Акроним и ID: **${guild.nameAcronym} | ${guild.id}**
  64. Основатель: **${guild.owner} (\`${guild.owner.user.tag}\`)**
  65. Количество участников: **${guild.memberCount}**
  66. Роли: **${guild.roles.size}**
  67. Каналы: **${guild.channels.size}**
  68. Создана: **${guild.createdAt.toString().slice(4, -32)}**
  69. Иконка: ${guild.iconURL}
  70.         `);
  71.         client.user.setActivity(`${prefix}help | ${client.guilds.size} servers`,{ type: 'PLAYING' });
  72.     });
  73.  
  74. client.on('message', message => {
  75.     if (message.channel.type !== 'text' || message.author.bot || !message.content.startsWith(prefix) || !message.channel.permissionsFor(message.guild.me).has("SEND_MESSAGES")) return;
  76.     if (blocked.has(message.author.id)) return message.reply('Автор бота отключил вам все команды. Причинами могут быть:\n1. Отправление несуществующего бага\n2. Нарушение правил на официальном севрере');
  77.  
  78.     const args = message.content.slice(prefix.length).trim().split(/ +/g);
  79.     const command = args.shift().toLowerCase();
  80.  
  81.     db.query(`SELECT * FROM guildData WHERE id = ${message.guild.id}`, (err, rows) => {
  82.         if (err) console.log(err);
  83.         if (!rows[0]) db.query(`INSERT INTO guildData (id, colors) VALUES ('${message.guild.id}', '${colors}')`, console.log)
  84.  
  85.     async function rainbow (role, colors) {
  86.  
  87.         if (!role.editable || !role || !rainbowOn.has(message.guild.id)) return rainbowRole.delete(role.id);
  88.    
  89.         forEachTimeout(colors, (color) => {
  90.    
  91.             if (!role.editable || !role || !rainbowOn.has(message.guild.id)) return rainbowRole.delete(role.id);
  92.    
  93.             role.setColor(color)}, 1500
  94.    
  95.         ).then(() => rainbow(role, colors));
  96.    
  97.     }
  98.  
  99.     if (command === 'stop') {
  100.         if (!message.member.hasPermission("MANAGE_ROLES")) return message.reply('У вас недостаточно прав');
  101.  
  102.         if (!rainbowOn.has(message.guild.id)) return message.reply('Изменение цвета роли и так не включено')
  103.  
  104.         rainbowOn.delete(message.guild.id)
  105.         message.reply('Изменение отключено');
  106.  
  107.         send('520181421382565903', `Пользователь ${message.author} (${message.author.tag}) **отключил** :negative_squared_cross_mark: изменение роли на ${message.guild.name} (${message.guild.id})`)
  108.     }
  109.  
  110.     if (['role-changing', 'changing-role', 'rc', 'r-c', 'cr', 'c-r'].includes(command)) {
  111.         let role = message.mentions.roles.first();
  112.  
  113.         if (!message.member.hasPermission("MANAGE_ROLES")) return message.reply('У вас недостаточно прав');
  114.  
  115.         if (!role) return message.reply(`Вы не упомянули роль. Правильное использование:\n${prefix}role-changing @роль`);
  116.  
  117.         if (!role.editable) return message.reply('У меня недостаточно прав. Роль бота должна находиться над ролью и мне нужно право "Управление ролями"');
  118.  
  119.         if (rainbowOn.has(message.guild.id)) return message.reply('Нелья создавать более одной меняющейся роли на сервере');
  120.  
  121.         rainbowOn.add(message.guild.id);
  122.         rainbowRole.add(role.id)
  123.  
  124.         rainbow(role, rows[0].colors.split(' '));
  125.  
  126.         send('520181421382565903', `Пользователь ${message.author} (${message.author.tag}) **включил** :white_check_mark: изменение роли на ${message.guild.name} (${message.guild.id})`)
  127.  
  128.         message.reply('Авто-изменнение успешно включено');
  129.     }
  130.  
  131.     if (command === 'set-colors') {
  132.         if (!message.member.hasPermission("MANAGE_ROLES")) return message.reply('У вас недостаточно прав');
  133.         let allColors = [];
  134.         if (!args[1] || args[7]) return message.reply('Укажите от 2-ух до 7-ми цветов');
  135.            
  136.         for (let i = 0; i < args.length; i++) {
  137.             if (!args[i].match(hexreg)) return message.reply(`Аргумент **${i + 1}** не является ни hex цветом (\`#ff0000\`), ни \`default\``)
  138.             allColors.push(`${i + 1}) **${args[i]}**`)
  139.         }
  140.  
  141.         db.query(`UPDATE guildData SET colors = '${args.join(' ')}' WHERE id = '${message.guild.id}'`);
  142.         message.reply(`Цвета меняющейся роли изменены на:\n${allColors.join('\n')}`);
  143.  
  144.     }
  145.  
  146.     if (command === 'reset-colors') {
  147.         if (!message.member.hasPermission("MANAGE_ROLES")) return message.reply('У вас недостаточно прав');
  148.         db.query(`UPDATE guildData SET colors = '${colors}' WHERE id = '${message.guild.id}'`);
  149.         message.reply('Цвета меняющейся роли изменены на стандартные');
  150.     }
  151.  
  152. });
  153.  
  154.     if (command === 'invite') message.channel.send('Пригласить бота:\nhttps://discordapp.com/oauth2/authorize?client_id=472048383075549186&scope=bot&permissions=268520448');
  155.    
  156.     if (command === 'creator') message.channel.send(`\`${client.users.get(creator).tag}\``);
  157.  
  158.     if (command === 'bug') {
  159.         if (!args[0]) return message.reply('Не указан баг');
  160.         let bug = args.join(" ");
  161.         send('520325705905471508', `Баг от \`${message.author.tag}\` (${message.author.id}):\n**${bug}**`);
  162.         message.channel.send('Баг успешно отправлен :white_check_mark:\n\nВнимание! Если вы написали несуществующий баг, то вам безвозвратно отключат все команды бота!');
  163.     }
  164.    
  165.     if (command === 'help') message.channel.send(`
  166. **${prefix}role-changing** \`@роль\` - Запустить изменение цвета на роли \`@роль\`.
  167. **${prefix}set-colors** \`HEX цвета\` - Изменить палитру цветов для меняющейся роли
  168. **${prefix}reset-colors** - Изменить цветовую палитру меняющейся роли на стандартную (радужную)
  169. **${prefix}colors** - Узнать текущие цвета меняющейся роли
  170. **${prefix}stop** - Остановить изменение цвета.
  171. **${prefix}invite** - Ссылка по которой можно пригласить бота на ваш сервер.
  172. **${prefix}creator** - Узнать создателя бота.
  173. **${prefix}bug** \`описание бага\` - Если бот работает не так как должен, то вы можете рассказать об этом разработчику с помощью этой команды.
  174. \n**Получить больше помощи можно тут:** \`https://discord.gg/NvcAKdt\`
  175. `);
  176.  
  177.     if (message.author.id !== creator) return;
  178.  
  179.     if (command === 'block') {
  180.         blocked.add(args[0]);
  181.         message.channel.send(`**${client.users.get(args[0]).tag}** Успешно заблокирован`)
  182.     }
  183.  
  184.     if (command === 'unlock') {
  185.         blocked.delete(args[0]);
  186.         message.channel.send(`**${client.users.get(args[0]).tag}** Успешно разблокирован`)
  187.     }
  188.  
  189.     if (command === 'mass-say') {
  190.         client.guilds.forEach(guild => {
  191.             let channels = guild.channels.filter(channel => channel.type === 'text' && channel.permissionsFor(guild.members.get(client.user.id)).has('SEND_MESSAGES'));
  192.             if (channels.size > 0) channels.first().send(args.join(' '));
  193.         })
  194.     }
  195.  
  196.     if (command === 'guilds') {
  197.         let guilds = [];
  198.         client.guilds.forEach(guild => {
  199.             guilds.push(`
  200.             "Это ${guild.name}. Информация о серере:" {
  201.                 "Основатель" : "${guild.owner.user.tag} (${guild.ownerID})"
  202.                 "Акроним и ID" : "${guild.nameAcronym} | ${guild.id}"
  203.                 "Пользователи" : "${guild.memberCount}"
  204.                 "Каналы" : "${guild.channels.size}"
  205.                 "Роли" : "${guild.roles.size}"
  206.                 "Создана" : "${guild.createdAt.toString().slice(4, -33)}"
  207.                 "Иконка" : "${guild.iconURL}"
  208.             }
  209.             `)
  210.         })
  211.         hastebinGen(guilds.join('\n========================================================\n\n'), 'json').then(link => message.channel.send(`Мои севрера --> ${link}`))
  212.     }
  213.  
  214.     if (command === 'guild-info') {
  215.         let guild = client.guilds.get(args[0]);
  216.  
  217.         let desc = [`
  218. Это "${guild.name}". Информация о серере:
  219. Основатель: "${guild.owner.user.tag} (${guild.ownerID})"
  220. Акроним и ID: "${guild.nameAcronym} | ${guild.id}"
  221. Пользователи: "${guild.memberCount}"
  222. Каналы: "${guild.channels.size}"
  223. Роли: "${guild.roles.size}"
  224. Создана "${guild.createdAt.toString().slice(4, -33)}"
  225. Иконка ${guild.iconURL}
  226. =====================================================================================================
  227. Каналы:\n`];
  228.  
  229.         guild.channels.forEach(channel => {
  230.             desc.push(`Имя: "${channel.name}". ID: "${channel.id}"\nТип "${channel.type}"\n\n`);
  231.         })
  232.  
  233.         desc.push('==================================================================================================\nРоли:\n');
  234.  
  235.         guild.roles.forEach(role => {
  236.             desc.push(`Имя: "@${role.name}". ID: "${role.id}"\n`);
  237.         })
  238.  
  239.         desc.push(`==================================================================================================\nЭмодзи:\n`);
  240.        
  241.         guild.emojis.forEach(emoji => {
  242.             desc.push(`Ссыка: "${emoji.url}". ID: "\\${emoji}"\n`);
  243.         })
  244.  
  245.         desc.push(`==================================================================================================\nПользователи:\n`);
  246.  
  247.         guild.members.forEach(member => {
  248.             desc.push(`Тэг: "${member.user.tag}". ID: "${member.id}". Высшая роль: "@${member.highestRole.name}". Присоединился: "${member.joinedAt.toString().slice(4, -33)}"\n`);
  249.         })
  250.         client.users.get().
  251.         hastebinGen(desc.join(''), 'js').then(link => message.channel.send(`Информация о сервере ${client.guilds.get(args[0]).name} --> ${link}`))
  252.     }
  253.  
  254.    
  255.  
  256. });
  257.  
  258. client.login(process.env.BOT_TOKEN);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement