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