1#
2#   fortune
3#
4#   Edited by: Ivo Marino <eim@cpan.org>
5#   $Id: fortune.pl,v 1.3 2004/12/17 19:39:19 eim Exp $
6#
7#   Required (Debian) packages:
8#
9#       . fortune-mod       The fortune core binaries
10#       . fortunes-min      Basic english fortune cookies
11#       . fortunes-de       German fortune cookies
12#       . fortunes-it       Italian fortune cookies
13#
14#   Usage:
15#
16#       Inside a channel write: /fortune <nick> [lang]
17#       The optional [lang] parameter can be:
18#
19#           . en            English
20#           . de            German
21#           . it            Italian
22#
23#       If not defined the fortune script defaults to en.
24#
25#   TODO:
26#
27#       . Check if specified user exists.
28#       . Handle direct user messaging.
29#
30
31use strict;
32use vars qw($VERSION %IRSSI);
33
34use Irssi;
35($VERSION) = '$Id: fortune.pl,v 1.3 2004/12/17 19:39:19 eim Exp $' =~ / (\d+\.\d+) /;
36%IRSSI = (
37    authors     => 'Ivo Marino',
38    contact     => 'eim@cpan.rg',
39    name        => 'fortune',
40    description => 'Send a random fortune cookie to an user in channel.',
41    license     => 'Public Domain',
42);
43
44sub fortune {
45
46    my ($param, $server, $witem) = @_;
47    my $return = 0;
48    my $cookie = '';
49
50    if ($param) {
51
52        if ($server || $server->{connected}) {
53
54            (my $nick, my $lang) = split (' ', $param);
55
56            $lang = 'en' unless ($lang eq 'de'|| $lang eq 'it' || $lang eq 'en');
57
58            Irssi::print ("Nick: " . $nick . ", Lang: \"" . $lang . "\"");
59
60            if ($lang eq 'de') {
61
62                $cookie = `fortune -x`;
63
64            } elsif ($lang eq 'it') {
65
66                $cookie = `fortune -a italia`;
67
68            } else {
69
70                $cookie = `fortune.en -a fortunes literature riddles`;
71            }
72
73            $cookie =~ s/\s*\n\s*/ /g;
74
75            if ($cookie) {
76
77                if ($witem && ($witem->{type} eq "CHANNEL")) {
78
79                        $witem->command('MSG ' . $witem->{name} . ' ' . $nick . ': ' . $cookie);
80                }
81
82            } else {
83
84                Irssi::print ("No cookie.");
85                $return = 1;
86            }
87
88        } else {
89
90            Irssi::print ("Not connected to server");
91            $return = 1;
92        }
93
94    } else {
95
96        Irssi::print ("Usage: /fortune <nick> [language]");
97        $return = 1;
98    }
99
100    return $return;
101}
102
103Irssi::command_bind ('fortune', \&fortune);
104