Initial help feature
This commit is contained in:
parent
436fb393ac
commit
d386c9d242
|
@ -31,7 +31,9 @@ function query () {
|
||||||
if (!isPm) {
|
if (!isPm) {
|
||||||
pluginManager.testPlugins(message).then(function (results) {
|
pluginManager.testPlugins(message).then(function (results) {
|
||||||
for (var i = 0; i < results.length; i++) {
|
for (var i = 0; i < results.length; i++) {
|
||||||
console.log(results[i])
|
let result = results[i]
|
||||||
|
|
||||||
|
console.log('[' + result.to + ']', result.message)
|
||||||
}
|
}
|
||||||
query()
|
query()
|
||||||
}, function (error) {
|
}, function (error) {
|
||||||
|
|
52
logger.js
Normal file
52
logger.js
Normal file
|
@ -0,0 +1,52 @@
|
||||||
|
const fs = require('fs')
|
||||||
|
const path = require('path')
|
||||||
|
const winston = require('winston')
|
||||||
|
|
||||||
|
const logDirectory = path.join(__dirname, '/log/')
|
||||||
|
|
||||||
|
// ensure log directory exists
|
||||||
|
if (!fs.existsSync(logDirectory)) {
|
||||||
|
fs.mkdirSync(logDirectory)
|
||||||
|
}
|
||||||
|
|
||||||
|
let logger = winston.createLogger({
|
||||||
|
level: process.env.NODE_ENV !== 'production' ? 'error' : 'debug',
|
||||||
|
transports: [
|
||||||
|
new winston.transports.File({
|
||||||
|
level: 'info',
|
||||||
|
filename: path.join(logDirectory, '/ircbot.log'),
|
||||||
|
handleExceptions: true,
|
||||||
|
json: true,
|
||||||
|
maxsize: 5242880,
|
||||||
|
maxFiles: 5,
|
||||||
|
colorize: false,
|
||||||
|
timestamp: true
|
||||||
|
}),
|
||||||
|
new winston.transports.Console({
|
||||||
|
level: 'debug',
|
||||||
|
handleExceptions: true,
|
||||||
|
json: false,
|
||||||
|
colorize: true,
|
||||||
|
timestamp: true
|
||||||
|
})
|
||||||
|
],
|
||||||
|
exceptionHandlers: [
|
||||||
|
new winston.transports.Console({
|
||||||
|
json: false,
|
||||||
|
timestamp: true
|
||||||
|
}),
|
||||||
|
new winston.transports.File({
|
||||||
|
filename: logDirectory + '/exceptions.log',
|
||||||
|
json: false
|
||||||
|
})
|
||||||
|
],
|
||||||
|
exitOnError: false
|
||||||
|
})
|
||||||
|
|
||||||
|
logger.stream = {
|
||||||
|
write: function (message, encoding) {
|
||||||
|
logger.info(message)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = logger
|
|
@ -12,6 +12,10 @@ class BasePlugin {
|
||||||
result (input) {
|
result (input) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
help () {
|
||||||
|
return 'No documentation'
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// export default BasePlugin;
|
// export default BasePlugin;
|
||||||
|
|
|
@ -6,6 +6,11 @@ class Character1 extends BasePlugin {
|
||||||
this.name = 'Character1'
|
this.name = 'Character1'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
help () {
|
||||||
|
// | Command | Description
|
||||||
|
return '.luohahmo Luo D&D-hahmon statsit'
|
||||||
|
}
|
||||||
|
|
||||||
test (input) {
|
test (input) {
|
||||||
if (input.match(/^\.luohahmo$/i)) {
|
if (input.match(/^\.luohahmo$/i)) {
|
||||||
return true
|
return true
|
||||||
|
|
|
@ -109,6 +109,11 @@ class Character2 extends BasePlugin {
|
||||||
this.name = 'Character2'
|
this.name = 'Character2'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
help () {
|
||||||
|
// | Command | Description
|
||||||
|
return '.luohahmo2 Luo D&D-hahmon statsit nimellä ja luokalla'
|
||||||
|
}
|
||||||
|
|
||||||
test (input) {
|
test (input) {
|
||||||
if (input.match(/^\.luohahmo2$/i)) {
|
if (input.match(/^\.luohahmo2$/i)) {
|
||||||
return true
|
return true
|
||||||
|
|
|
@ -6,6 +6,11 @@ class Dice extends BasePlugin {
|
||||||
this.name = 'Dice'
|
this.name = 'Dice'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
help () {
|
||||||
|
// | Command | Description
|
||||||
|
return '.heita | .heitä 1d4 Heitä noppaa. Esim. 1d4'
|
||||||
|
}
|
||||||
|
|
||||||
test (input) {
|
test (input) {
|
||||||
if (input.match(/^\.heit(a|ä) ([0-9]+)d([0-9]+)( ([ \w])*)*$/i)) {
|
if (input.match(/^\.heit(a|ä) ([0-9]+)d([0-9]+)( ([ \w])*)*$/i)) {
|
||||||
return true
|
return true
|
||||||
|
|
33
plugins/help.js
Normal file
33
plugins/help.js
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
var BasePlugin = require('./base.js')
|
||||||
|
const fs = require('fs')
|
||||||
|
class Help extends BasePlugin {
|
||||||
|
constructor (config) {
|
||||||
|
super(config)
|
||||||
|
this.name = 'Help'
|
||||||
|
}
|
||||||
|
test (input) {
|
||||||
|
if (input.match(/^\.apua/i)) {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
result (input) {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
let help = []
|
||||||
|
this.config.plugins.forEach((pluginName) => {
|
||||||
|
if (fs.existsSync('./plugins/' + pluginName.toLowerCase() + '.js')) {
|
||||||
|
let Plugin = require('./' + pluginName.toLowerCase() + '.js')
|
||||||
|
let plugin = new Plugin(this.config)
|
||||||
|
if (typeof plugin.help === 'function') {
|
||||||
|
help.push({message: plugin.help(), to: 'nick'})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
resolve(help)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = Help
|
|
@ -7,6 +7,12 @@ class InstantAswer extends BasePlugin {
|
||||||
super(config)
|
super(config)
|
||||||
this.name = 'InstantAswer'
|
this.name = 'InstantAswer'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
help () {
|
||||||
|
// | Command | Description
|
||||||
|
return '.wtf <termi> Etsii vastauksen annetulle termille'
|
||||||
|
}
|
||||||
|
|
||||||
test (input) {
|
test (input) {
|
||||||
if (input.match(/^\.wtf (.+)$/i)) {
|
if (input.match(/^\.wtf (.+)$/i)) {
|
||||||
return true
|
return true
|
||||||
|
|
|
@ -8,6 +8,11 @@ class Joke extends BasePlugin {
|
||||||
this.name = 'Joke'
|
this.name = 'Joke'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
help () {
|
||||||
|
// | Command | Description
|
||||||
|
return '.vitsi Antaa huikean vitsin!'
|
||||||
|
}
|
||||||
|
|
||||||
test (input) {
|
test (input) {
|
||||||
if (input.match(/^\.vitsi$/i)) {
|
if (input.match(/^\.vitsi$/i)) {
|
||||||
return true
|
return true
|
||||||
|
|
|
@ -17,6 +17,11 @@ class Kernel extends BasePlugin {
|
||||||
return promise
|
return promise
|
||||||
}
|
}
|
||||||
|
|
||||||
|
help () {
|
||||||
|
// | Command | Description
|
||||||
|
return '.kernel <release> Hakee viimeisimmän kernelin version'
|
||||||
|
}
|
||||||
|
|
||||||
test (input) {
|
test (input) {
|
||||||
// Kernel version
|
// Kernel version
|
||||||
if (input.match(/^\.kernel( (.+))?/i)) {
|
if (input.match(/^\.kernel( (.+))?/i)) {
|
||||||
|
|
|
@ -42,6 +42,31 @@ class PluginManager {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
validateResult (resultPromise) {
|
||||||
|
return new Promise((resolve) => {
|
||||||
|
let wrapperPromise = new Promise((resolve) => resolve(resultPromise))
|
||||||
|
wrapperPromise.then((results) => {
|
||||||
|
if (!Array.isArray(results)) {
|
||||||
|
results = [results]
|
||||||
|
}
|
||||||
|
|
||||||
|
let promises = []
|
||||||
|
results.forEach((result) => {
|
||||||
|
let to = 'channel'
|
||||||
|
let message = result
|
||||||
|
if (typeof result === 'object' && typeof result.to !== 'undefined') {
|
||||||
|
to = result.to
|
||||||
|
message = result.message
|
||||||
|
}
|
||||||
|
|
||||||
|
promises.push(new Promise({ to, message }))
|
||||||
|
})
|
||||||
|
|
||||||
|
resolve(promises)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
testPlugins (input, publicChat) {
|
testPlugins (input, publicChat) {
|
||||||
if (typeof publicChat === 'undefined') {
|
if (typeof publicChat === 'undefined') {
|
||||||
publicChat = true
|
publicChat = true
|
||||||
|
@ -54,7 +79,7 @@ class PluginManager {
|
||||||
let plugin = this.plugins[i]
|
let plugin = this.plugins[i]
|
||||||
if (plugin.test(input)) {
|
if (plugin.test(input)) {
|
||||||
logger.info('* Plugin ' + plugin.name + ' reported hit')
|
logger.info('* Plugin ' + plugin.name + ' reported hit')
|
||||||
promises.push(plugin.result(input))
|
promises.push(this.validateResult(plugin.result(input)))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
@ -63,7 +88,7 @@ class PluginManager {
|
||||||
|
|
||||||
if (plugin.test(input)) {
|
if (plugin.test(input)) {
|
||||||
logger.info('* Plugin ' + plugin.name + ' reported hit')
|
logger.info('* Plugin ' + plugin.name + ' reported hit')
|
||||||
promises.push(plugin.result(input))
|
promises.push(this.validateResult(plugin.result(input)))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,6 +10,11 @@ class Pwm extends BasePlugin {
|
||||||
this.apikey = config.keys.owm.apiKey // owm for sunrise
|
this.apikey = config.keys.owm.apiKey // owm for sunrise
|
||||||
}
|
}
|
||||||
|
|
||||||
|
help () {
|
||||||
|
// | Command | Description
|
||||||
|
return '.pvm Kertoo päivän, nimipäivän ja muita tietoja'
|
||||||
|
}
|
||||||
|
|
||||||
test (input) {
|
test (input) {
|
||||||
var res = input.match(/^\.pvm$/i)
|
var res = input.match(/^\.pvm$/i)
|
||||||
if (res) {
|
if (res) {
|
||||||
|
|
|
@ -31,6 +31,11 @@ class Weather extends BasePlugin {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
help () {
|
||||||
|
// | Command | Description
|
||||||
|
return '.saa <kaupunki> Antaa sään maapallon tärkeimmistä sijainneista'
|
||||||
|
}
|
||||||
|
|
||||||
test (input) {
|
test (input) {
|
||||||
if (input.match(/^\.saa(.*)/i)) {
|
if (input.match(/^\.saa(.*)/i)) {
|
||||||
return true
|
return true
|
||||||
|
|
Loading…
Reference in New Issue
Block a user