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:
SileNce5k 2021-03-15 23:29:49 +01:00 committed by GitHub
parent 88100600b9
commit d636b39d7a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 126 additions and 127 deletions

View file

@ -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
View 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)
}
};