Added EightBall module.
This commit is contained in:
1 parent
2a246c3e32
commit
bd77a0b5fc
2 files changed
+161
No files matched your search
@@ -3,6 +3,7 @@ Auto IRC Bot 3.0: Change Log
|
||||
|
||||
3.0 Indev
|
||||
==================================================================
|
||||
* Added EightBall module.
|
||||
* Rewrote the socket engine. This should fix random timeouts.
|
||||
* Added IsItUp module.
|
||||
* Added user:net for network-specific user blocks.
|
||||
|
||||
@@ -0,0 +1,160 @@
|
||||
# Auto IRC Bot. An advanced, lightweight and powerful IRC bot.
|
||||
# Copyright (C) 2010-2011 Xelhua Development Team (doc/CREDITS)
|
||||
# This program is free software; rights to this code are stated in doc/LICENSE.
|
||||
package m_EightBall;
|
||||
use strict;
|
||||
use warnings;
|
||||
use feature qw(switch);
|
||||
use API::Std qw(cmd_add cmd_del has_priv match_user trans);
|
||||
use API::IRC qw(privmsg notice);
|
||||
our $ANSWER = 0;
|
||||
|
||||
# Initialization subroutine.
|
||||
sub _init
|
||||
{
|
||||
# Create the 8BALL and RIGBALL commands.
|
||||
cmd_add("8BALL", 0, \%m_EightBall::SHELP_8BALL, \%m_EightBall::FHELP_8BALL, \&m_EightBall::c_8ball) or return 0;
|
||||
cmd_add("RIGBALL", 1, \%m_EightBall::SHELP_RIGBALL, \%m_EightBall::FHELP_RIGBALL, \&m_EightBall::rigball) or return 0;
|
||||
|
||||
# Success.
|
||||
return 1;
|
||||
}
|
||||
|
||||
# Void subroutine.
|
||||
sub _void
|
||||
{
|
||||
# Delete the 8BALL and RIGBALL commands.
|
||||
cmd_del("8BALL") or return 0;
|
||||
cmd_del("RIGBALL") or return 0;
|
||||
|
||||
# Success.
|
||||
return 1;
|
||||
}
|
||||
|
||||
# Help hashes.
|
||||
our %SHELP_8BALL = (
|
||||
'en' => "Ask the magic 8-Ball a question.",
|
||||
);
|
||||
our %SHELP_RIGBALL = (
|
||||
'en' => "Set the next answer of the 8-Ball.",
|
||||
);
|
||||
|
||||
our %FHELP_8BALL = (
|
||||
'en' => "This command will ask the magic 8-Ball your question. Syntax: 8BALL <question>",
|
||||
);
|
||||
our %FHELP_RIGBALL = (
|
||||
'en' => "This command will \"rig\" (set) the answer of the next 8-Ball question. Syntax: RIGBALL <answer>",
|
||||
);
|
||||
|
||||
# Callback for 8BALL command.
|
||||
sub c_8ball
|
||||
{
|
||||
my (%data) = @_;
|
||||
my @argv = @{ $data{args} }; delete $data{args};
|
||||
|
||||
if (!defined $argv[0]) {
|
||||
notice($data{svr}, $data{nick}, trans("Not enough parameters").".");
|
||||
return;
|
||||
}
|
||||
|
||||
privmsg($data{svr}, $data{chan}, "\002Question:\002 ".join(" ", @argv));
|
||||
|
||||
my $a = '';
|
||||
if (!$ANSWER) {
|
||||
my $rn = int(rand(12));
|
||||
given ($rn) {
|
||||
when (1) { $a = "Yes!"; }
|
||||
when (2) { $a = "No!"; }
|
||||
when (3) { $a = "Yes... No... Yes... No... No."; }
|
||||
when (4) { $a = "Hmm... it seems likely."; }
|
||||
when (5) { $a = "Very unlikely."; }
|
||||
when (6) { $a = "Heck no!"; }
|
||||
when (7) { $a = "Definite yes!"; }
|
||||
when (8) { $a = "Magic unavailable. Try again later."; }
|
||||
when (9) { $a = "Possibly, I wouldn't count on it though."; }
|
||||
when (10) { $a = "Outcome looks bad."; }
|
||||
when (11) { $a = "Outcome looks good."; }
|
||||
when (12) { $a = "Can't tell now. Maybe another time."; }
|
||||
default { $a = "Sorry, but no."; }
|
||||
}
|
||||
}
|
||||
else {
|
||||
$a = $ANSWER;
|
||||
$ANSWER = 0;
|
||||
}
|
||||
|
||||
privmsg($data{svr}, $data{chan}, "\002Answer:\002 ".$a);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
# Callback for RIGBALL command.
|
||||
sub rigball
|
||||
{
|
||||
my (%data) = @_;
|
||||
my @argv = @{ $data{args} }; delete $data{args};
|
||||
|
||||
# Check for appropriate permissions.
|
||||
if (!has_priv(match_user(%data), "cmd.rigball")) {
|
||||
privmsg($data{svr}, $data{nick}, trans("Permission denied").".");
|
||||
return;
|
||||
}
|
||||
# Check for necessary parameters.
|
||||
if (!defined $argv[0]) {
|
||||
privmsg($data{svr}, $data{nick}, trans("Not enough parameters").".");
|
||||
return;
|
||||
}
|
||||
|
||||
$ANSWER = join(" ", @argv);
|
||||
privmsg($data{svr}, $data{nick}, "Answer set to: ".$ANSWER);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
# Start initialization.
|
||||
API::Std::mod_init("EightBall", "Xelhua", "1.00", "3.0.0d", __PACKAGE__);
|
||||
|
||||
__END__
|
||||
|
||||
=head1 EightBall
|
||||
|
||||
=head2 Description
|
||||
|
||||
=over
|
||||
|
||||
This module adds the 8BALL and RIGBALL commands, 8BALL is a channel
|
||||
command for asking the magic 8-Ball a question, RIGBALL is a private
|
||||
command for setting ("rigging") the 8-Ball's next answer.
|
||||
|
||||
=back
|
||||
|
||||
=head2 Examples
|
||||
|
||||
=over
|
||||
|
||||
<JohnSmith> !8ball Will I be rich?
|
||||
<Auto> Question: Will I be rich?
|
||||
<Auto> Answer: Heck no!
|
||||
>Auto< rigball Of course!
|
||||
<JohnSmith> !8ball Will I be famous?
|
||||
<Auto> Question: Will I be famous?
|
||||
<Auto> Answer: Of course!
|
||||
|
||||
=back
|
||||
|
||||
=head2 To Do
|
||||
|
||||
=over
|
||||
|
||||
* Add Spanish, French and German translations for the help hashes.
|
||||
|
||||
=back
|
||||
|
||||
=head2 Technical
|
||||
|
||||
=over
|
||||
|
||||
This module is compatible with Auto version 3.0a2+.
|
||||
|
||||
=back
|
||||
Reference in new issue
Block a user