Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //===CONFIG===//
- var config = {
- logDebug: false,
- author: "Iterator",
- version: "1.4.1",
- //Bot features (prefix, etc, i think you'll figure it out)
- prefix: "!",
- botName: "Kaizen-85",
- richEmbedColor: 0x9b59b6,
- greenRichEmbedColor: 0x4BB543,
- redRichEmbedColor: 0xcc0000,
- emojiOk: "☑",
- emojiError: "⚠",
- emojiAccessDenied: "🔒",
- accessDeniedMsgs: [
- "прав не завезли.",
- "вам сегодня не повезло.",
- "ошибка 403.",
- "что-то пошло не так, обратитесь к сисадмину!",
- "вы точно уверены? (д/н)",
- "мне прописали `sudo rm / -rf`, не могу это выполнить.",
- "нажми [сюда](https://youtu.be/dQw4w9WgXcQ) и я выполню это.",
- "отсоси - потом проси!",
- "[ACCESS DENIEEED!](https://youtu.be/2dZy3cd9KFY)",
- "команда не выполнена. Не знаю почему."
- ]
- }
- //============//
- //Variables&Libs&Functions&OtherShit
- var fs = require("fs");
- var ds = require("discord.js");
- var bot = new ds.Client;
- var viols //for future file loading
- //Just a basic function to send some information to the console with the date mark.
- function log(text) { //Don't want to download some shit loggers. I'll just write my custom function to do that.
- date = new Date; //Get date
- console.log(date.getHours()+":"+date.getMinutes()+":"+date.getSeconds()+" "+text); //Print the text with the date to the console.
- }
- //A function to convert standart process.uptime() format to understandable one.
- String.prototype.toHHMMSS = function () { //Don't know how does it works. Just copied from startoverflow xD
- var sec_num = parseInt(this, 10);
- var hours = Math.floor(sec_num / 3600);
- var minutes = Math.floor((sec_num - (hours * 3600)) / 60);
- var seconds = sec_num - (hours * 3600) - (minutes * 60);
- if (hours < 10) {hours = "0"+hours;}
- if (minutes < 10) {minutes = "0"+minutes;}
- if (seconds < 10) {seconds = "0"+seconds;}
- var time = hours+':'+minutes+':'+seconds;
- return time;
- }
- function nickOrName(member) { //function that returns member's discord username if he/she doesn't have nickname.
- return member.nickname || member.user.username;
- }
- function checkRole(member,role) {
- if(member.roles.has(member.guild.roles.find("name",role).id)) {
- return true
- } else {
- return false
- }
- }
- function smallEmbed(client,color,title,text) { //function that returns small info embed with your text, need a client property to show avatar.
- return {embed: {
- color: color,
- author: {
- name: title,
- icon_url: client.user.avatarURL
- },
- description: text
- }}
- }
- //Command list embeds
- function helpEveryone(client) {
- return {embed: {
- color: config.richEmbedColor,
- author: {
- name: "Для всех пользователей.",
- icon_url: client.user.avatarURL
- },
- fields: [
- {
- name: config.prefix+"help <a/mod/everyone>",
- value: "Вывести список команд."
- },
- {
- name: config.prefix+"info",
- value: "Вывести информацию о боте: версию, автора и аптайм."
- },
- {
- name: config.prefix+"echo <текст>",
- value: "Отправить сообщение от имени бота."
- },
- {
- name: config.prefix+"choice <1, 2, 3...>",
- value: "Выбрать рандомное предложение из перечисленних с помощью пробела с запятой."
- },
- {
- name: config.prefix+"votemute <@пользователь>",
- value: "Проголосовать за временный мут @пользователя на **10 минут**. При достижении 5 голосов ему будет выдан мут."
- },
- {
- name: config.prefix+"pizda",
- value: "¯\\_(ツ)_/¯"
- },
- {
- name: config.prefix+"chance <msg>",
- value: "Рандомная вероятность чего-то в процентах"
- }
- ],
- }}
- }
- function helpMods(client) {
- return {embed: {
- color: config.richEmbedColor,
- author: {
- name: "Для ранга [MOD] и выше.",
- icon_url: client.user.avatarURL
- },
- fields: [
- {
- name: config.prefix+"mute/ban <@пользователь>",
- value: "Выдать пожизненный мут/бан @пользователю."
- },
- {
- name: config.prefix+"tempmute/tempban <@пользователь> <время> <s/m/h/d>",
- value: "Выдать временный мут/бан @пользователю на указанное время."
- },
- {
- name: config.prefix+"unmute/unban <@пользователь>",
- value: "Снять мут/бан @пользователю."
- },
- {
- name: config.prefix+"purge <1-100>",
- value: "Удалить заданное кол-во сообщений из канала."
- }
- ],
- }}
- }
- function helpAdmins(client) {
- return {embed: {
- color: config.richEmbedColor,
- author: {
- name: "Для ранга [A] и выше.",
- icon_url: client.user.avatarURL
- },
- fields: [
- {
- name: config.prefix+"kgbmode <on/off>",
- value: "Включить боту режим КГБ-следователя."
- },
- {
- name: config.prefix+"setrang <ранг> <@пользователь>",
- value: "Выдать любой ранг @пользователю."
- },
- {
- name: config.prefix+"die",
- value: "Выключить бота."
- }
- ],
- }}
- }
- function embedCommandInfo(client,rang,description,usage) {
- return {embed: {
- color: config.richEmbedColor,
- author: {
- name: "Информация о команде",
- icon_url: client.user.avatarURL
- },
- fields: [{
- name: "Ранг команды:",
- value: rang
- },
- {
- name: "Описание команды:",
- value: description
- },
- {
- name: "Использование команды:",
- value: usage
- }],
- }}
- }
- //Initialization
- log("[INFO] Initialization started...");
- if(!fs.existsSync("viols.json")) {
- log("[WARN] File viols.json not found!");
- fs.writeFileSync('viols.json', '{}', function (err) {
- if (err) {
- log("[ERROR] "+err);
- process.exit();
- }
- log("[INFO] Created file viols.json");
- });
- }
- viols = require("./viols.json");
- log("[INFO] Loaded file viols.json");
- //Main Part
- bot.on("ready", () => {
- //Printing that the bot is succesfully logged in and started working.
- log("[INFO] Bot login completed as \""+bot.user.username+"\" in "+bot.guilds.size+" guilds.");
- //Timer to update uptime in the bot's game
- bot.user.setPresence({//first going without uptime
- game: {
- name: '>> Помощь: !help',
- type: "STREAMING",
- url: "https://www.twitch.tv/dreamfinity"
- }
- });
- bot.setInterval(() => {
- var time = process.uptime();
- var uptime = (time + "").toHHMMSS();
- bot.user.setPresence({//update bot's uptime
- game: {
- name: '>> Помощь: !help | >> Аптайм: '+uptime,
- type: "STREAMING",
- url: "https://www.twitch.tv/dreamfinity"
- }
- });
- },10000)
- //Violations handler
- });
- bot.on("debug", info => {
- //Printing any debug messages.
- if(!config.logDebug) return;
- log("[DEBUG] "+info);
- });
- bot.on("guildMemberAdd", member => {
- if(viols[member.user.id]) {
- if(viols[member.user.id]["mute"] || viols[member.user.id]["tempmute"]) {
- member.addRole(member.guild.roles.find("name","Muted").id)
- } else if(viols[member.user.id]["ban"] || viols[member.user.id]["tempban"]) {
- member.addRole(member.guild.roles.find("name","Banned").id)
- }
- }
- })
- bot.on("message", message => {
- //The main command handler.
- if(message.content.indexOf(config.prefix,0)) return;
- var args = message.content.trim().slice('1').split(' ');
- var cmd = args.shift().toLowerCase()
- switch(cmd) {
- case 'help': //Some basic function too, says the user about commands containing in this bot.
- if(args.length < 1 || args[0] == "help") {
- message.channel.send(embedCommandInfo(bot,helpEveryone(bot).embed.author.name,helpEveryone(bot).embed.fields[0].value,helpEveryone(bot).embed.fields[0].name));
- message.react(config.emojiError);
- return
- }
- if(args[0] == "a") {
- message.channel.send(helpAdmins(bot));
- } else if(args[0] == "mod") {
- message.channel.send(helpMods(bot));
- } else if(args[0] == "everyone") {
- message.channel.send(helpEveryone(bot));
- }
- message.react(config.emojiOk);
- break;
- case 'info': // The standart 'info' command, says the user about bot uptime, version and creator.
- if(args.length > 0) {
- message.channel.send(embedCommandInfo(bot,helpEveryone(bot).embed.author.name,helpEveryone(bot).embed.fields[0].value,helpEveryone(bot).embed.fields[0].name));
- message.react(config.emojiError);
- return
- }
- var time = process.uptime();
- var uptime = (time + "").toHHMMSS();
- message.channel.send({embed: {
- color: config.richEmbedColor,
- author: {
- name: "Информация о боте "+config.botName,
- icon_url: bot.user.avatarURL
- },
- fields: [{
- name: "Автор",
- value: config.author
- },
- {
- name: "Версия",
- value: config.version
- },
- {
- name: "Аптайм",
- value: uptime
- }],
- }});
- message.react(config.emojiOk);
- break;
- case 'echo':
- if(!args[0] || args[0] == "help") {
- message.channel.send(embedCommandInfo(bot,helpEveryone(bot).embed.author.name,helpEveryone(bot).embed.fields[2].value,helpEveryone(bot).embed.fields[2].name));
- message.react(config.emojiError);
- return
- }
- var text = message.content.split(' ').splice('1');
- message.delete();
- message.channel.send(smallEmbed(bot,config.richEmbedColor,"Анонимное сообщение",text.join(" ")));
- log("[INFO] "+nickOrName(message.member)+" issued command \""+config.prefix+"echo "+text.join(" ")+"\"");
- break
- case 'choice':
- if(!args[0] || args[0] == "help") {
- message.channel.send(embedCommandInfo(bot,helpEveryone(bot).embed.author.name,helpEveryone(bot).embed.fields[3].value,helpEveryone(bot).embed.fields[3].name));
- message.react(config.emojiError);
- return
- }
- var choices = message.content.split(', ').splice('1');
- if(choices.length < 1) {
- message.channel.send(embedCommandInfo(bot,helpEveryone(bot).embed.author.name,helpEveryone(bot).embed.fields[3].value,helpEveryone(bot).embed.fields[3].name));
- message.react(config.emojiError);
- return
- }
- var rand = choices[Math.floor(Math.random() * choices.length)];
- message.channel.send(smallEmbed(bot,config.richEmbedColor,"Рандом",nickOrName(message.member)+", я выбираю `"+rand+"`."));
- message.react(config.emojiOk);
- break
- case 'pizda':
- if(args.length > 0) {
- message.channel.send(embedCommandInfo(bot,helpEveryone(bot).embed.author.name,helpEveryone(bot).embed.fields[5].value,helpEveryone(bot).embed.fields[5].name));
- message.react(config.emojiError);
- return
- }
- const embed = new ds.RichEmbed()
- .setAuthor("\"Буква Пизда\"", bot.user.avatarURL)
- .setColor(config.richEmbedColor)
- .setImage("http://city17.xyz/pizda.webp")
- message.channel.send({embed});
- message.react(config.emojiOk);
- break;
- case 'chance':
- if(!args[0] || args[0] == "help") {
- message.channel.send(embedCommandInfo(bot,helpEveryone(bot).embed.author.name,helpEveryone(bot).embed.fields[6].value,helpEveryone(bot).embed.fields[6].name));
- message.react(config.emojiError);
- return
- }
- var percent = Math.floor(Math.random() * 101);
- var text = "Шанс есть";
- if(percent < 20) {
- text = "Вероятность довольно-таки низкая";
- } else if(percent < 50) {
- text = "Вероятность средняя";
- } else if(percent < 80) {
- text = "Вероятность неплохая";
- } else if(percent > 80) {
- text = "Вероятность очень большая";
- }
- message.channel.send(smallEmbed(bot,config.richEmbedColor,"Рандом",nickOrName(message.member)+", "+text+", шанс "+percent.toString()+"%"));
- message.react(config.emojiOk);
- break
- case 'mute':
- if(!args[0] || args[0] == "help") {
- message.channel.send(embedCommandInfo(bot,helpMods(bot).embed.author.name,helpMods(bot).embed.fields[0].value,helpMods(bot).embed.fields[0].name));
- message.react(config.emojiError);
- return
- }
- if(!checkRole(message.member,"A #")) {
- message.channel.send(smallEmbed(bot,config.redRichEmbedColor,"Ошибка!",nickOrName(message.member)+", "+config.accessDeniedMsgs[Math.floor(Math.random() * config.accessDeniedMsgs.length)]));
- message.react(config.emojiAccessDenied);
- return
- }
- var member = message.mentions.members.first()
- if(!member) {
- message.channel.send(smallEmbed(bot,config.redRichEmbedColor,"Ошибка!",nickOrName(message.member)+", пользователь не найден!"));
- message.react(config.emojiError);
- return
- }
- if(!args[1]) {
- message.channel.send(smallEmbed(bot,config.redRichEmbedColor,"Ошибка!",nickOrName(message.member)+", необходима причина наказания!"));
- message.react(config.emojiError);
- return
- }
- if(viols[member.user.id]) {
- if(viols[member.user.id].mute || viols[member.user.id].tempmute) {
- message.channel.send(smallEmbed(bot,config.redRichEmbedColor,"Ошибка!",nickOrName(message.member)+", пользователь уже в муте!"));
- message.react(config.emojiError);
- return
- }
- }
- var reason = message.content.split(" ").splice("2").join(" ");
- viols[member.user.id] = {
- mute: {
- guildId: message.guild.id,
- by: message.member.user.id,
- reason: reason
- },
- }
- fs.writeFile("./viols.json",JSON.stringify(viols),(error) => {})
- member.addRole(message.guild.roles.find("name","Muted").id);
- message.guild.channels.find("name","mod-log").send(smallEmbed(bot,config.greenRichEmbedColor,"Наказания","**"+nickOrName(member)+"** заткнут пользователем **"+nickOrName(message.member)+"** по причине **"+reason+"**."));
- message.react(config.emojiOk);
- break
- }
- })
Advertisement
Add Comment
Please, Sign In to add comment