Commit | Line | Data |
---|---|---|
d4df4450 | 1 | package POE::Component::IRC::Plugin::Hello; |
29280d6c MG |
2 | |
3 | use 5.014000; | |
4 | use strict; | |
5 | use warnings; | |
128b9459 MG |
6 | use utf8; |
7 | use Encode qw/encode decode/; | |
8 | ||
7dc26b47 | 9 | our $VERSION = '0.001002'; |
29280d6c MG |
10 | |
11 | use List::Util qw/first/; | |
12 | ||
13 | use IRC::Utils qw/parse_user/; | |
14 | use POE::Component::IRC::Plugin qw/PCI_EAT_NONE/; | |
15 | ||
16 | sub 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 | |
24 | salve ave merhaba witaj hei hola selam sawubona/, | |
25 | "what's up", 'que tal', 'こんにちは', '你好', 'ni hao'], | |
9e1acbcb MG |
26 | @_ |
27 | }; | |
29280d6c | 28 | |
9e1acbcb | 29 | bless $self, $class |
29280d6c MG |
30 | } |
31 | ||
32 | sub PCI_register { | |
9e1acbcb MG |
33 | my ($self, $irc) = @_; |
34 | $irc->plugin_register($self, SERVER => qw/public/); | |
35 | 1 | |
29280d6c MG |
36 | } |
37 | ||
38 | sub PCI_unregister { 1 } | |
39 | ||
40 | sub S_public{ | |
9e1acbcb MG |
41 | my ($self, $irc, $rfullname, $rchannels, $rmessage) = @_; |
42 | my $nick = parse_user $$rfullname; | |
43 | my $mynick = $irc->nick_name; | |
128b9459 | 44 | my $message = decode 'UTF-8', $$rmessage; |
9e1acbcb MG |
45 | my @hello = @{$self->{greetings}}; |
46 | ||
128b9459 MG |
47 | my $match = first { $message =~ /^\s*(?:$mynick(?:)[:,])?\s*$_\s*[.!]?\s*$/i } @hello; |
48 | my $randhello = encode 'UTF-8', $hello[int rand $#hello]; | |
49 | $irc->yield(privmsg => $$rchannels->[0] => "$randhello, $nick") if $match; | |
9e1acbcb | 50 | PCI_EAT_NONE |
29280d6c MG |
51 | } |
52 | ||
53 | 1; | |
54 | __END__ | |
55 | ||
56 | =head1 NAME | |
57 | ||
58 | POE::Component::IRC::Plugin::Hello - PoCo-IRC plugin that says hello | |
59 | ||
60 | =head1 SYNOPSIS | |
61 | ||
62 | use POE::Component::IRC::Plugin::Hello; | |
63 | ||
64 | my $irc = POE::Component::IRC::State->spawn(...); | |
65 | $irc->plugin_add(Hello => POE::Component::IRC::Plugin::Hello->new); | |
66 | ||
67 | =head1 DESCRIPTION | |
68 | ||
69 | POE::Component::IRC::Plugin::Hello is a PoCo-IRC plugin that greets back | |
70 | who greet him or a channel in public. It knows how to say hello in several | |
71 | languages, and greets people in a randomly chosen language. | |
72 | ||
73 | The list of greetings is configurable by the plugin user. | |
74 | ||
75 | =head1 SEE ALSO | |
76 | ||
77 | L<POE::Component::IRC::Plugin> | |
78 | ||
79 | =head1 AUTHOR | |
80 | ||
81 | Marius Gavrilescu, E<lt>marius@ieval.roE<gt> | |
82 | ||
83 | =head1 COPYRIGHT AND LICENSE | |
84 | ||
85 | Copyright (C) 2013 by Marius Gavrilescu | |
86 | ||
87 | This library is free software; you can redistribute it and/or modify | |
88 | it under the same terms as Perl itself, either Perl version 5.14.2 or, | |
89 | at your option, any later version of Perl 5 you may have available. | |
90 | ||
91 | ||
92 | =cut |