Added basic functionality

This commit is contained in:
plane000
2018-05-20 01:18:47 +01:00
parent 9523cd874a
commit 5a764b0a71
8 changed files with 193 additions and 21 deletions

View File

@@ -1,6 +1,6 @@
MIT License MIT License
Copyright (c) 2018 plane000 Copyright (c) 2018 Benjamin Kyd
Permission is hereby granted, free of charge, to any person obtaining a copy Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal of this software and associated documentation files (the "Software"), to deal

1
commandmanager.js Normal file
View File

@@ -0,0 +1 @@
// TODO: commandmanager

27
commands/commands.js Normal file
View File

@@ -0,0 +1,27 @@
const Discord = require('discord.js');
const ping = require('ping');
const fs = require('fs');
const Config = require('../config');
/*message object, messaage full, message args, discord client*/
module.exports.say = function(message, msg, args, discordclient) {
}
module.exports.version = function(message, msg, args, discordclient) {
var em = new Discord.RichEmbed();
em.setColor('BLUE');
em.setTitle('Version:');
em.setDescription(Config.getconfig().Version);
message.channel.send(em);
return;
}
module.exports.ping = function(message, msg, args, discordclient) {
ping.promise.probe("discordapp.com", {
timeout: 10
}).then((output) => {
message.channel.send(`:white_check_mark: \`${output.avg}ms\``);
});
}

31
config.js Normal file
View File

@@ -0,0 +1,31 @@
const fs = require("fs");
var config = null;
module.exports.getconfig = function() {
return config;
};
module.exports.setconfig = function(con) {
config = con;
};
module.exports.loadDefaults = function() {
config = {
Token: "DISCORD_TOKEN",
NowPlaying: "RealLife.exe",
Prefix: "+",
Version: "2.0.1",
Rules: ["Rule 0", "Rule 1"]
};
};
module.exports.loadFromFile = function() {
config = JSON.parse(fs.readFileSync("resources/config.json"));
}
module.exports.writeToFile = function() {
fs.writeFileSync("resources/config.json", JSON.stringify(config, null, 4));
}

View File

@@ -1,23 +1,50 @@
module.exports.logMSG = function (msg) { module.exports.logMSG = function(msg) {
var t = new Date(); var time = getTime();
var time = (pad(t.getHours(), 2) + ":" + pad(t.getMinutes(), 2) + ":" + pad(t.getSeconds(), 2))
console.log( console.log(
time '[' + time + '] '
+ ' in ' + 'In '
+ msg.guild.name + msg.guild.name
+ ', ' + ', '
+ msg.author.username + msg.author.username
+ '#' + '#'
+ msg.author.discriminator + msg.author.discriminator
+ ' issued the command: ' + ' issued the command: '
+ msg.content); + msg.content
);
} }
module.exports.log = function(msg) {
var time = getTime();
console.log(
'[' + time + '] '
+ msg
);
}
module.exports.success = function() {
var time = getTime();
console.log(
'[' + time + '] '
+ msg
);
}
module.exports.failed = function(msg) {
var time = getTime();
console.log(
'[' + time + '] '
+ msg
);
}
function pad(n, width, z) { function pad(n, width, z) {
z = z || '0'; z = z || '0';
n = n + ''; n = n + '';
return n.length >= width ? n : new Array(width - n.length + 1).join(z) + n; return n.length >= width ? n : new Array(width - n.length + 1).join(z) + n;
} }
function getTime() {
var t = new Date();
var time = (pad(t.getHours(), 2) + ":" + pad(t.getMinutes(), 2) + ":" + pad(t.getSeconds(), 2))
return time;
}

80
main.js
View File

@@ -1,19 +1,79 @@
const logger = require('./logger'); const Logger = require('./logger');
const Config = require('./config');
const CommandManager = require('./commandmanager');
const http = require('http');
const ping = require('ping');
const fs = require('fs');
const Discord = require('discord.js'); const Discord = require('discord.js');
const client = new Discord.Client(); const client = new Discord.Client();
/*checks if config exists*/
if (!fs.existsSync('resources/config.json')) {
Logger.log('Creating the config...');
try {
if (!fs.existsSync('resources/')) {
fs.mkdirSync('resources/');
}
Config.loadDefaults();
Config.writeToFile();
}
catch (e) {
Logger.failed(`Could not create the config: ${e.message}`);
}
}
/*loads config*/
Logger.log('Loading config...');
try {
Config.loadFromFile();
client.login(''); }
catch (e) {
Logger.failed(`Could not load the config: ${e.message}`);
}
/*connects to discord*/
try {
Logger.log("Starting discord client...");
client.login(Config.getconfig().Token);
} catch (e) {
Logger.failed(`Could not connect to discord: ${e.message}`)
}
/*once connected*/
client.on('ready', () => { client.on('ready', () => {
console.log(`Logged in as ${client.user.tag}!`); client.user.setPresence('online');
client.user.setActivity(Config.getconfig().NowPlaying);
Logger.log(`Logged in as ${client.user.tag}`);
Logger.log('Ready!')
console.log();
}); });
client.on('message', msg => { /*on message event*/
if (msg.content === 'ping') { client.on('message', async (message) => {
logger.logMSG(msg); /*if it starts with prefix*/
msg.reply('pong'); if (message.content.startsWith(Config.getconfig().Prefix)) {
Logger.logMSG(message);
var msg = message.content.substring(Config.getconfig().Prefix.length);
var args = msg.split(" ");
/*temp switch statement to manage commands*/
switch (args[0].toUpperCase()) {
case 'PING':
ping.promise.probe("discordapp.com", {
timeout: 10
}).then((output) => {
message.channel.send(`:white_check_mark: \`${output.avg}ms\``);
});
return;
case 'VERSION':
var em = new Discord.RichEmbed();
em.setColor('BLUE');
em.setTitle('Version:');
em.setDescription(Config.getconfig().Version);
message.channel.send(em);
return;
default:
message.channel.send(`:no_entry: \`The command '${args[0]}' does not exist...\``);
break;
}
} }
}); });

24
package-lock.json generated
View File

@@ -26,16 +26,35 @@
"resolved": "https://registry.npmjs.org/fs/-/fs-0.0.1-security.tgz", "resolved": "https://registry.npmjs.org/fs/-/fs-0.0.1-security.tgz",
"integrity": "sha1-invTcYa23d84E/I4WLV+yq9eQdQ=" "integrity": "sha1-invTcYa23d84E/I4WLV+yq9eQdQ="
}, },
"http": {
"version": "0.0.0",
"resolved": "https://registry.npmjs.org/http/-/http-0.0.0.tgz",
"integrity": "sha1-huYybSnF0Dnen6xYSkVon5KfT3I="
},
"long": { "long": {
"version": "4.0.0", "version": "4.0.0",
"resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz",
"integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA=="
}, },
"ping": {
"version": "0.2.2",
"resolved": "https://registry.npmjs.org/ping/-/ping-0.2.2.tgz",
"integrity": "sha1-GA+3UIwdx0eThJvONcgHP5llvOI=",
"requires": {
"q": "1.5.1",
"underscore": "1.9.0"
}
},
"prism-media": { "prism-media": {
"version": "0.0.2", "version": "0.0.2",
"resolved": "https://registry.npmjs.org/prism-media/-/prism-media-0.0.2.tgz", "resolved": "https://registry.npmjs.org/prism-media/-/prism-media-0.0.2.tgz",
"integrity": "sha512-L6yc8P5NVG35ivzvfI7bcTYzqFV+K8gTfX9YaJbmIFfMXTs71RMnAupvTQPTCteGsiOy9QcNLkQyWjAafY/hCQ==" "integrity": "sha512-L6yc8P5NVG35ivzvfI7bcTYzqFV+K8gTfX9YaJbmIFfMXTs71RMnAupvTQPTCteGsiOy9QcNLkQyWjAafY/hCQ=="
}, },
"q": {
"version": "1.5.1",
"resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz",
"integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc="
},
"safe-buffer": { "safe-buffer": {
"version": "5.1.2", "version": "5.1.2",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
@@ -51,6 +70,11 @@
"resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.0.tgz", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.0.tgz",
"integrity": "sha1-cT2LgY2kIGh0C/aDhtBHnmb8ins=" "integrity": "sha1-cT2LgY2kIGh0C/aDhtBHnmb8ins="
}, },
"underscore": {
"version": "1.9.0",
"resolved": "https://registry.npmjs.org/underscore/-/underscore-1.9.0.tgz",
"integrity": "sha512-4IV1DSSxC1QK48j9ONFK1MoIAKKkbE8i7u55w2R6IqBqbT7A/iG7aZBCR2Bi8piF0Uz+i/MG1aeqLwl/5vqF+A=="
},
"ws": { "ws": {
"version": "4.1.0", "version": "4.1.0",
"resolved": "https://registry.npmjs.org/ws/-/ws-4.1.0.tgz", "resolved": "https://registry.npmjs.org/ws/-/ws-4.1.0.tgz",

View File

@@ -22,6 +22,8 @@
"homepage": "https://github.com/plane000/JefferyBot#readme", "homepage": "https://github.com/plane000/JefferyBot#readme",
"dependencies": { "dependencies": {
"discord.js": "^11.3.2", "discord.js": "^11.3.2",
"fs": "0.0.1-security" "fs": "0.0.1-security",
"http": "0.0.0",
"ping": "^0.2.2"
} }
} }