1use strict;
2use Irssi 20021028;
3use vars qw($VERSION %IRSSI);
4
5# Usage:
6# To add the host by a kick, for example, use:
7#     /format kick {channick $0} {chanhost $host{$0}} was kicked from {channel $1} by {nick $2} {reason $3}
8#
9# Result:
10#     19:23:42 -!- Nick [user@leet.hostname.org] was kicked from #channel by MyNick [leet reason]
11
12
13
14$VERSION = "0.2";
15%IRSSI = (
16	authors         => "Michiel v Vaardegem",
17	contact         => "michielv\@zeelandnet.nl",
18	name            => "showhost",
19	description     => "show host kicks",
20	license         => "GPL",
21	changed         => "Mon Dec  8 19:23:51 CET 2003"
22);
23
24my $lasthost;
25
26sub setlast
27{
28	my ($server, $channelname, $nickname) = @_;
29	my @channels;
30	$lasthost = {};
31	if (defined($channelname))
32	{
33		$channels[0] = $server->channel_find($channelname);
34		if (!defined($channels[0]))
35		{
36			return;
37		}
38	}
39	else
40	{
41		@channels = $server->channels();
42	}
43
44	foreach my $channel (@channels)
45	{
46		my $nick = $channel->nick_find($nickname);
47		if (defined($nick))
48		{
49			$lasthost->{$channel->{'name'}} = $nick->{host};
50		}
51	}
52}
53
54sub expando_mode
55{
56	my ($server,$item,$mode2) = @_;
57	if (!defined($item) || $item->{'type'} ne 'CHANNEL' )
58	{
59		return '';
60	}
61	return $lasthost->{$item->{'name'}};
62}
63
64
65Irssi::signal_add_first('message kick', sub {setlast($_[0],$_[1],$_[2]); });
66
67Irssi::expando_create('host', sub {expando_mode($_[0],$_[1],0)},{ 'message part' => 'None'});
68
69