Add ability to upload modules to the bot via discord
* Remove unused dependencies * Add basic downloading of modules * Add valid-url as dependency * Add loading/reloading of netmodules * Add support for help on netmodules * Add whitelist for netmodules
This commit is contained in:
parent
88100600b9
commit
d636b39d7a
6 changed files with 126 additions and 127 deletions
|
@ -5,9 +5,19 @@ const Discord = require('discord.js');
|
|||
module.exports = {
|
||||
name: 'help',
|
||||
description: 'List all available commands.',
|
||||
execute({message, args, prefix}) {
|
||||
execute({ message, args, prefix }) {
|
||||
var commands = " "
|
||||
const commandFiles = fs.readdirSync('./commands').filter(file => file.endsWith('.js'));
|
||||
let commandFiles = fs.readdirSync('./commands').filter(file => file.endsWith('.js'));
|
||||
let x = 0
|
||||
if (args[0] == "netload") {
|
||||
commandFiles = fs.readdirSync('./netload').filter(file => file.endsWith('.js'));
|
||||
if (commandFiles.length == 0) {
|
||||
message.channel.send("There are no netmodules currently loaded.")
|
||||
x = 1;
|
||||
}
|
||||
|
||||
}
|
||||
if (x == 1) return;
|
||||
|
||||
const embed = new Discord.MessageEmbed()
|
||||
.setColor(15780145)
|
||||
|
@ -20,12 +30,12 @@ module.exports = {
|
|||
const command = require(`./${file}`);
|
||||
|
||||
|
||||
if(args[0] == "admin"){
|
||||
if (args[0] == "admin") {
|
||||
if (command.admin && !command.disabled)
|
||||
commands = commands + `${prefix}${command.name} | ${command.description}\n`
|
||||
}else
|
||||
if(!command.admin && !command.disabled)
|
||||
commands = commands + `${prefix}${command.name} | ${command.description}\n`
|
||||
} else
|
||||
if (!command.admin && !command.disabled)
|
||||
commands = commands + `${prefix}${command.name} | ${command.description}\n`
|
||||
}
|
||||
embed.addFields(
|
||||
{ name: "General", value: commands },
|
||||
|
|
64
commands/netload.js
Normal file
64
commands/netload.js
Normal file
|
@ -0,0 +1,64 @@
|
|||
const https = require('https');
|
||||
const fs = require('fs')
|
||||
const netloadDir = "./netload"
|
||||
const validUrl = require('valid-url');
|
||||
|
||||
module.exports = {
|
||||
name: 'netload',
|
||||
description: 'Load a module from the internet',
|
||||
execute({ message, args, prefix, client, owners }) {
|
||||
const json = fs.readFileSync('netmoduleWhitelist.json', 'utf8');
|
||||
let whitelist = JSON.parse(json)
|
||||
if (json.indexOf(message.author.id.toString()) == -1) {
|
||||
message.channel.send("You do not have permissions to use this command.");
|
||||
return;
|
||||
}
|
||||
if (args[0] == "whitelist" && owners.indexOf(message.author.id.toString()) >= 0) {
|
||||
whitelist.push(args[1])
|
||||
fs.writeFileSync("netmoduleWhitelist.json", JSON.stringify(whitelist))
|
||||
return;
|
||||
}
|
||||
if (!args[0] && message.attachments.size == 0) {
|
||||
message.channel.send(`You have to either specify a url or upload a file via the command.\nTo get an example file, execute \`${prefix}netload example\``)
|
||||
return;
|
||||
|
||||
} if (args[0] == "example") {
|
||||
message.channel.send({ files: [{ attachment: "./commands/.example" }] })
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
let url, fileName;
|
||||
if (message.attachments.size > 0) {
|
||||
url = message.attachments.first().url
|
||||
fileName = message.attachments.first().name
|
||||
} else {
|
||||
url = args[0]
|
||||
if (!validUrl.isUri(url)) {
|
||||
message.channel.send("This does not look like a valid url")
|
||||
return;
|
||||
}
|
||||
fileName = args[0].split("/")[args[0].split("/").length - 1]
|
||||
}
|
||||
if (fs.existsSync(`${netloadDir}/${fileName}`)) {
|
||||
message.channel.send(`A module with this filename(${fileName}) already exists.`)
|
||||
return;
|
||||
}
|
||||
https.get(url, (res) => {
|
||||
res.on('data', (d) => {
|
||||
fs.writeFileSync(`${netloadDir}/${fileName}`, d);
|
||||
loadNetModules(client);
|
||||
});
|
||||
|
||||
}).on('error', (e) => {
|
||||
message.channel.send("Error download file.");
|
||||
console.log(e)
|
||||
});
|
||||
|
||||
let loadNetModules = require('../util/loadNetModules');
|
||||
loadNetModules(client)
|
||||
|
||||
|
||||
}
|
||||
};
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue