From f7970f3a9cc94600309ff48d1a920040672899a5 Mon Sep 17 00:00:00 2001 From: Alee Date: Sun, 22 Apr 2018 15:09:16 -0400 Subject: 2.9 release --- bot_discord.js | 65 +++++++++++++++++++++++++++++++++++++ commands/addquote.js | 2 +- commands/changelog.js | 2 +- package-lock.json | 5 +++ package.json | 3 +- storage/settings.json | 4 +-- test.js | 88 ++++++++++++++++++++++++++++++++++++++++++++++++--- 7 files changed, 160 insertions(+), 9 deletions(-) diff --git a/bot_discord.js b/bot_discord.js index f1346e8..c0b5ebc 100644 --- a/bot_discord.js +++ b/bot_discord.js @@ -20,6 +20,7 @@ const Discord = require('discord.js'); const economy = require('discord-eco'); const moment = require('moment'); +const readline = require('readline'); const DBL = require("dblapi.js"); const client = new Discord.Client({ disableEveryone: true @@ -35,6 +36,12 @@ const log = message => { }; +const rl = readline.createInterface({ + input: process.stdin, + output: process.stdout, + prompt: '> ' +}); + console.log(`AleeBot ${settings.abVersion}: Copyright (C) 2018 AleeCorp`); console.log('This program comes with ABSOLUTELY NO WARRANTY; for details type `show w\'.'); console.log ('This is free software, and you are welcome to redistribute it'); @@ -77,6 +84,63 @@ fs.readdir('./commands', (err, files) => { console.log('\n'); }); +rl.on('line', function(cmd){ + var args = cmd.split(" "); + switch(args[0]) { + case "guilds": + if (client.guilds.size === 0) { + console.log(('[!] No guilds found.')); + } else { + console.log('[i] Here\'s the servers that AleeBot is connected to:') + for ([id, guild] of client.guilds) { + console.log(` Guild Name: ${guild.name} - ID: ${guild.id} - Owner: ${guild.owner.user.tag}`); + } + } + break; + case "leave": + if (!args[1]) { + console.log('[!] Please insert the guild\'s ID.'); + } else { + var guild = client.guilds.get(args[1]); + guild.leave(); + } + break; + case "broadcast": + if (!args[1]) { + console.log('[!] Please insert the guild\'s ID.'); + } else { + let broadcast = args.join(" ").slice(48); + var guild = null; + guild = client.guilds.get(args[1]); + var channel = null; + channel = guild.channels.get(args[2]) + if (channel != null) { + channel.send(broadcast); + } + if (channel = null) { + console.log ('Usage: broadcast [guildID] [channelID]') + } + } + break; + case "exit": + console.log('[i] AleeBot will now exit!') + process.exit(0); + break; + case "help": + var msg = (`AleeBot `+ settings.abVersion +` Console Help\n\n`); + msg += (`guilds - Shows all guilds that AleeBot's on.\n`) + msg += (`leave - Leaves a guild.\n`) + msg += (`broadcast - Broadcasts a message to a server.\n`) + msg += (`help - Shows this command.\n`) + msg += (`exit - Exits AleeBot.\n`) + console.log(msg); + break; + default: + console.log('Unknown Command type \'help\' to list the commands...') + } + rl.prompt(); +}); + client.on('ready', () => { log('[>] AleeBot is now ready!'); @@ -108,6 +172,7 @@ client.on('ready', () => { }); }, 200000); client.user.setStatus('online'); + rl.prompt(); }); client.on('guildCreate', guild => { diff --git a/commands/addquote.js b/commands/addquote.js index a957c59..fe42333 100644 --- a/commands/addquote.js +++ b/commands/addquote.js @@ -28,7 +28,7 @@ module.exports.run = async (client, message, args) => { if(!args[0]) return message.reply(`Usage: ab:addquote [author] [authorImage] [quote] [year]`) let quotes = JSON.parse(fs.readFileSync("./storage/quotes.json", "utf8")); - + quotes = { author: args[0], authorImage: args[1], diff --git a/commands/changelog.js b/commands/changelog.js index d5d9584..2849d8d 100644 --- a/commands/changelog.js +++ b/commands/changelog.js @@ -22,7 +22,7 @@ module.exports.run = async (client, message) => { const embed = new Discord.RichEmbed() .setAuthor('AleeBot ' + require('../storage/settings.json').abVersion + ' Changelog', 'https://cdn.discordapp.com/avatars/282547024547545109/6c147a444ae328c38145ef1f74169e38.png?size=2048') .setDescription('What\'s new in AleeBot '+ require('../storage/settings.json').abVersion +'?') - .addField('1. Setting a custom prefix for AleeBot!', 'We\'ve finally did it! You can now set a prefix!') + .addField('1. Console commands!', 'Unfortunately they are not discord features but it\'s only for console.') .setColor('#1fd619'); message.channel.send({embed}); diff --git a/package-lock.json b/package-lock.json index b0bd3c9..76e72e1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -77,6 +77,11 @@ "resolved": "https://registry.npmjs.org/prism-media/-/prism-media-0.0.2.tgz", "integrity": "sha512-L6yc8P5NVG35ivzvfI7bcTYzqFV+K8gTfX9YaJbmIFfMXTs71RMnAupvTQPTCteGsiOy9QcNLkQyWjAafY/hCQ==" }, + "readline": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/readline/-/readline-1.3.0.tgz", + "integrity": "sha1-xYDXfvLPyHUrEySYBg3JeTp6wBw=" + }, "safe-buffer": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", diff --git a/package.json b/package.json index a0d8baa..922707a 100644 --- a/package.json +++ b/package.json @@ -24,7 +24,8 @@ "fs": "0.0.1-security", "git-last-commit": "^0.3.0", "moment": "^2.21.0", - "os": "^0.1.1" + "os": "^0.1.1", + "readline": "^1.3.0" }, "devDependencies": {} } diff --git a/storage/settings.json b/storage/settings.json index 7471866..3dc56a8 100644 --- a/storage/settings.json +++ b/storage/settings.json @@ -1,4 +1,4 @@ { - "abVersion": "2.9.0 Beta", - "prefix": "abb:" + "abVersion": "2.9.0", + "prefix": "ab:" } diff --git a/test.js b/test.js index 4cd42bb..f6b21f5 100644 --- a/test.js +++ b/test.js @@ -20,6 +20,7 @@ const Discord = require('discord.js'); const economy = require('discord-eco'); const moment = require('moment'); +const readline = require('readline'); const DBL = require("dblapi.js"); const client = new Discord.Client({ disableEveryone: true @@ -33,7 +34,13 @@ const log = message => { }; -console.log('AleeBot: Copyright (C) 2018 AleeCorp'); +const rl = readline.createInterface({ + input: process.stdin, + output: process.stdout, + prompt: '> ' +}); + +console.log(`AleeBot ${settings.abVersion}: Copyright (C) 2018 AleeCorp`); console.log('This program comes with ABSOLUTELY NO WARRANTY; for details type `show w\'.'); console.log ('This is free software, and you are welcome to redistribute it'); console.log ('under certain conditions; type `show c\' for details.\n') @@ -75,11 +82,68 @@ fs.readdir('./commands', (err, files) => { console.log('\n'); }); +rl.on('line', function(cmd){ + var args = cmd.split(" "); + switch(args[0]) { + case "guilds": + if (client.guilds.size === 0) { + console.log(('[!] No guilds found.')); + } else { + console.log('[i] Here\'s the servers that AleeBot is connected to:') + for ([id, guild] of client.guilds) { + console.log(` Guild Name: ${guild.name} - ID: ${guild.id} - Owner: ${guild.owner.user.tag}`); + } + } + break; + case "leave": + if (!args[1]) { + console.log('[!] Please insert the guild\'s ID.'); + } else { + var guild = client.guilds.get(args[1]); + guild.leave(); + } + break; + case "broadcast": + if (!args[1]) { + console.log('[!] Please insert the guild\'s ID.'); + } else { + let broadcast = args.join(" ").slice(48); + var guild = null; + guild = client.guilds.get(args[1]); + var channel = null; + channel = guild.channels.get(args[2]) + if (channel != null) { + channel.send(broadcast); + } + if (channel = null) { + console.log ('Usage: broadcast [guildID] [channelID]') + } + } + break; + case "exit": + console.log('[i] AleeBot will now exit!') + process.exit(0); + break; + case "help": + var msg = (`AleeBot `+ settings.abVersion +` Console Help\n\n`); + msg += (`guilds - Shows all guilds that AleeBot's on.\n`) + msg += (`leave - Leaves a guild.\n`) + msg += (`broadcast - Broadcasts a message to a server.\n`) + msg += (`help - Shows this command.\n`) + msg += (`exit - Exits AleeBot.\n`) + console.log(msg); + break; + default: + console.log('Unknown Command type \'help\' to list the commands...') + } + rl.prompt(); +}); + client.on('ready', () => { log('[>] AleeBot is now ready!'); log(`[i] Logged in as ${client.user.tag}`); - log(`[i] Prefix: ${settings.prefix}`) + log(`[i] Default Prefix: ${settings.prefix}`) log(`[i] Bot ID: ${client.user.id}`); log(`[i] Token: ${api.abtoken}`); log('[i] Running version ' + settings.abVersion + ` and in ${client.guilds.size} guilds`); @@ -92,6 +156,9 @@ client.on('ready', () => { 'Drawing shapes', 'Fighting AstralMod', ]; + setInterval(() => { + dbl.postStats(client.guilds.size, client.shards.Id, client.shards.total); + }, 1800000); client.user.setPresence({ status: 'online', @@ -103,6 +170,7 @@ client.on('ready', () => { }); }, 200000); client.user.setStatus('online'); + rl.prompt(); }); client.on('guildCreate', guild => { @@ -121,8 +189,20 @@ client.on('guildDelete', guild => { client.on('message', (msg) => { if (msg.author.bot) return; - if (!msg.content.startsWith(settings.prefix)) return; - const args = msg.content.slice(settings.prefix.length).trim().split(/ +/g); + + let prefixes = JSON.parse(fs.readFileSync("./storage/prefixes.json", "utf8")); + + if(!prefixes[msg.guild.id]){ + prefixes[msg.guild.id] = { + prefixes: settings.prefix + }; + } + + let prefix = prefixes[msg.guild.id].prefixes + + + if (!msg.content.startsWith(prefix)) return; + const args = msg.content.slice(prefix.length).trim().split(/ +/g); const command = args.shift(); let cmd; -- cgit v1.2.3