forked from keld0r/hubot-reggaeton
-
Notifications
You must be signed in to change notification settings - Fork 0
/
reggaeton.js
77 lines (70 loc) · 1.63 KB
/
reggaeton.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
71
72
73
74
75
76
77
// Description:
// Hubot canta un perreo intenso
//
// Dependencies:
// None
//
// Configuration:
// None
//
// Commands:
// hubot un reggaeton
//
// Author:
// @keld0r
const largoEstrofa = 4;
const maxEstrofas = 1;
const bloques = [
['Mami', 'Gata', 'Perra', 'Zorra', 'Chica'],
['yo quiero', 'vamos a', 'yo voy a', 'yo quiero', 'yo vengo a'],
['castigarte', 'cogerte', 'encenderte', 'darte', 'azotarte'],
['duro', 'rapido', 'lento', 'suave', 'fuerte'],
[
'hasta que salga el sol',
'toda la noche',
'hasta el amanecer',
'hasta mañana',
'todo el dia'
],
[
'sin miedo',
'sin anestesia',
'en el piso',
'contra la pared',
'sin compromiso'
]
];
const firma = [
'mas de 10 mil stickers vendidos, obligao',
'el que habla con las patas',
'el imperio del :jquery:',
'perreando hasta el -5'
];
function random(array)
{
return array[Math.floor(Math.random() * array.length)];
}
function generarLetra()
{
const letra = [...Array(maxEstrofas).keys()].reduce((acc, curr) => {
const estrofa = [...Array(largoEstrofa).keys()].map(() => generarRenglon())
acc.push(`${estrofa.join('\n')}\n`);
acc.push('[CORO]');
acc.push(`${generarCoro()} … x3 :yeah:\n`);
return acc;
}, []).join('\n');
return `${letra}\nEl papi del flow, ${random(firma)}`;
}
function generarRenglon()
{
return bloques.map(bloque => random(bloque)).join(' ');
}
function generarCoro()
{
const verbo = `${random(bloques[2])} `;
return `${verbo.repeat(3)}${random(bloques[4])} ${random(bloques[3])}`;
}
module.exports = function (robot)
{
robot.respond(/un reg(ga|u|a|e)?et(o|ó)n/gi, generarLetra());
};