-
Notifications
You must be signed in to change notification settings - Fork 0
/
8ball.pm
92 lines (80 loc) · 1.82 KB
/
8ball.pm
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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
#!/usr/bin/perl
package BobboBot::8ball;
use warnings;
use strict;
use BobboBot::users;
use POSIX;
my @good = (
"It is certain",
"It is decidedly so",
"Without a doubt",
"Yes definitely",
"You may rely on it",
"As I see it, yes",
"Most likely",
"Outlook good",
"Yes",
"Signs point to yes"
);
my @neutral = (
"Reply hazy try again",
"Ask again later",
"Better not tell you now",
"Cannot predict now",
"Concentrate and ask again"
);
my @bad = (
"Don't count on it",
"My reply is no",
"My sources say no",
"Outlook not so good",
"Very doubtful"
);
my @responses = (\@good, \@neutral, \@bad);
my @fails = (
"Query looks questionable",
"Questioning if your question is a question.",
"Put your hand up to ask a question.",
"Have you no respect for proper etiquette?",
"Ask properly and ye shall know.",
"Clearly not a fan of Question Time.",
"8ball hears you, 8ball don't care."
);
my @badQs = qw(how why where when);
my @goodQs = qw(can is will should do would);
sub run
{
my $question = lc(join(' ', @{$_[0]->{arg}}));
if (!defined $question)
{
return $fails[floor(rand(@fails))];
}
foreach my $q (@badQs)
{
if (index($question, $q) != -1)
{
return $neutral[floor(rand(@neutral))];
}
}
foreach my $q (@goodQs)
{
if (index($question, $q) != -1)
{
my @pool = @{$responses[floor(rand(@responses))]};
return $pool[floor(rand(@pool))];
}
}
return $fails[floor(rand(@fails))];
}
sub help
{
return '!8ball (question) - Query the magic 8ball for cosmic help and advice.';
}
sub auth
{
return accessLevel('normal');
}
BobboBot::module::addCommand('8ball', 'run', \&BobboBot::8ball::run);
BobboBot::module::addCommand('8ball', 'help', \&BobboBot::8ball::help);
BobboBot::module::addCommand('8ball', 'auth', \&BobboBot::8ball::auth);
1;