forked from Mottelz/bother-bot
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbots.js
71 lines (56 loc) · 1.85 KB
/
bots.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
const rita = require('rita');
const fs = require('fs');
module.exports.pester = function (character, callback) {
//load the text
let file = 'text/' + character + '.txt';
fs.readFile(file, 'utf8', async (err, data) => {
if (err) throw err;
let quote
try {
quote = await saySomething(data);
} catch (e) {
console.log(e);
}
let message = "To quote " + character[0].toUpperCase() + character.substr(1) + ', "'+ quote + '"';
callback(message);
});
};
let saySomething = async function(text) {
let markov = rita.RiMarkov(3);
markov.loadText(text);
let msg;
try {
msg = await markov.generateSentences(3).join(' ');
} catch (e) {
console.log(e);
}
return msg;
};
//Function to get the filepath for every file in a folder.
//Source: https://stackoverflow.com/a/21459809/1585599
let _getAllFilesFromFolder = function(dir) {
let filesystem = require("fs");
let results = [];
filesystem.readdirSync(dir).forEach(function(file) {
file = dir+'/'+file;
let stat = filesystem.statSync(file);
if (stat && stat.isDirectory()) {
results = results.concat(_getAllFilesFromFolder(file))
} else results.push(file);
});
return results;
};
module.exports.stats = function (callback) {
let result = _getAllFilesFromFolder('text');
result.forEach((filename) => {
fs.readFile(filename, 'utf8', (err, text) => {
if (err) throw err;
let words = text.split(" ");
let count = words.length;
let character = filename.substr(5).replace('.txt', '');
character = character[0].toUpperCase() + character.substr(1);
let msg = character + " has spoken " + count.toString() + " words.";
callback(msg);
})
})
}