Add several greetings suggested by Joost van Baal-Ilić
[poe-component-irc-plugin-hello.git] / lib / POE / Component / IRC / Plugin / Hello.pm
CommitLineData
d4df4450 1package POE::Component::IRC::Plugin::Hello;
29280d6c
MG
2
3use 5.014000;
4use strict;
5use warnings;
128b9459
MG
6use utf8;
7use Encode qw/encode decode/;
8
7dc26b47 9our $VERSION = '0.001002';
29280d6c
MG
10
11use List::Util qw/first/;
12
13use IRC::Utils qw/parse_user/;
14use POE::Component::IRC::Plugin qw/PCI_EAT_NONE/;
15
16sub new {
9e1acbcb
MG
17 my $class = shift;
18 my $self = {
7ca2bb7c
MG
19 greetings => [
20 qw/privet hello salut salutari neata neaţa neața neatza
21 hola hey hi bonjour wassup sup hallo chikmaa
22 tungjatjeta parev salam namaskaar mingalarba ahoy
23 saluton allo moin aloha namaste shalom ciào ciao servus
a5a095f2
MG
24 salve ave merhaba witaj hei hola selam sawubona
25 geodemorgen hoi καλημέρα/,
26 "what's up", 'que tal', 'こんにちは', '你好', 'ni hao',
27 'добро јутро', 'γεια σας', 'bom dia', 'hyvää huomenta'],
9e1acbcb
MG
28 @_
29 };
29280d6c 30
9e1acbcb 31 bless $self, $class
29280d6c
MG
32}
33
34sub PCI_register {
9e1acbcb
MG
35 my ($self, $irc) = @_;
36 $irc->plugin_register($self, SERVER => qw/public/);
37 1
29280d6c
MG
38}
39
40sub PCI_unregister { 1 }
41
42sub S_public{
9e1acbcb
MG
43 my ($self, $irc, $rfullname, $rchannels, $rmessage) = @_;
44 my $nick = parse_user $$rfullname;
45 my $mynick = $irc->nick_name;
128b9459 46 my $message = decode 'UTF-8', $$rmessage;
9e1acbcb
MG
47 my @hello = @{$self->{greetings}};
48
128b9459
MG
49 my $match = first { $message =~ /^\s*(?:$mynick(?:)[:,])?\s*$_\s*[.!]?\s*$/i } @hello;
50 my $randhello = encode 'UTF-8', $hello[int rand $#hello];
51 $irc->yield(privmsg => $$rchannels->[0] => "$randhello, $nick") if $match;
9e1acbcb 52 PCI_EAT_NONE
29280d6c
MG
53}
54
551;
56__END__
57
58=head1 NAME
59
60POE::Component::IRC::Plugin::Hello - PoCo-IRC plugin that says hello
61
62=head1 SYNOPSIS
63
64 use POE::Component::IRC::Plugin::Hello;
65
66 my $irc = POE::Component::IRC::State->spawn(...);
67 $irc->plugin_add(Hello => POE::Component::IRC::Plugin::Hello->new);
68
69=head1 DESCRIPTION
70
71POE::Component::IRC::Plugin::Hello is a PoCo-IRC plugin that greets back
72who greet him or a channel in public. It knows how to say hello in several
73languages, and greets people in a randomly chosen language.
74
75The list of greetings is configurable by the plugin user.
76
77=head1 SEE ALSO
78
79L<POE::Component::IRC::Plugin>
80
81=head1 AUTHOR
82
83Marius Gavrilescu, E<lt>marius@ieval.roE<gt>
84
85=head1 COPYRIGHT AND LICENSE
86
87Copyright (C) 2013 by Marius Gavrilescu
88
89This library is free software; you can redistribute it and/or modify
90it under the same terms as Perl itself, either Perl version 5.14.2 or,
91at your option, any later version of Perl 5 you may have available.
92
93
94=cut
This page took 0.015057 seconds and 4 git commands to generate.