/usr/share/irssi/scripts/watch.pl is in irssi-scripts 20120326.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 | # Watch script para irssi
# watch script consiste en un pequeño script que interpreta
# este novedoso sistema de notify que nos evita la tarea de
# tener que comprobar cada X tiempo si alguien de nuestro notify
# esta en el irc, este script solamente podra ser usado en redes
# que lo permitan, como por ejemplo irc-hispano.
$VERSION = '1.0';
%IRSSI = (
authors => 'ThEbUtChE',
contact => 'thebutche@interec.org',
name => 'Watch script',
description => 'Uso del comando watch para irssi.',
license => 'BSD',
url => 'http://www.nebulosa.org',
changed => 'viernes, 17 de enero de 2003, 03:19:15 CET',
bugs => 'ninguno'
);
use Irssi;
use Irssi::Irc;
use POSIX qw(floor);
sub watch_list
{
my($file) = Irssi::get_irssi_dir."/watch";
my($nick);
local(*FILE);
open FILE, "< $file";
while (<FILE>) {
@nick = split;
Irssi::print "Notify \002@nick[0]\002";
}
close FILE;
}
sub esta_notify
{
my ($ni) = @_;
my($file) = Irssi::get_irssi_dir."/watch";
my($nick);
local(*FILE);
open FILE, "< $file";
while (<FILE>) {
@nick = split;
if (@nick[0] eq $ni) { return 1; }
}
close FILE;
return 0;
}
sub watch_add
{
my ($nick) = @_;
my($file) = Irssi::get_irssi_dir."/watch";
local(*FILE);
if ($nick eq "") { Irssi::print "Debes decir un nick a incluir en la lista."; return;
} elsif (esta_notify($nick)) { Irssi::print "El nick ya esta en el notify."; return; }
open FILE, ">> $file";
print FILE join("\t","$nick\n");
close FILE;
Irssi::print "El nick $nick ha sido metido en el notify";
Irssi::active_win()->command("quote watch +$nick");
}
sub watch_del
{
my ($ni) = @_;
my($file) = Irssi::get_irssi_dir."/watch";
my($file2) = Irssi::get_irssi_dir."/watch2";
local(*FILE);
local(*FILE2);
if ($ni eq "") { Irssi::print "Debes decir un nick a borrar de la lista."; return;
} elsif (!esta_notify($ni)) { Irssi::print "El nick no esta en el notify."; return; }
open FILE2, "> $file2";
print FILE2 "";
close FILE2;
open FILE, "< $file";
open FILE2, ">> $file2";
while (<FILE>) {
@nick = split;
if (@nick[0] eq $ni) {
} else {
print FILE2 join("\t","@nick[0]\n");
}
}
close FILE;
close FILE2;
open FILE, "> $file";
print FILE "";
close FILE;
open FILE, ">> $file";
open FILE2, "< $file2";
while (<FILE2>) {
@nick = split;
print FILE join("\t","@nick[0]\n");
}
close FILE;
close FILE2;
Irssi::active_win()->command("quote watch -$ni");
Irssi::print "Usuario \002$ni\002 Borrado de la lista de notify";
}
sub watch_list_online
{
Irssi::active_win()->command("quote watch l");
}
sub watch
{
my ($arg) = @_;
my ($cmd, $nick) = split(/ /, $arg);
if ($cmd eq "list") {
watch_list();
} elsif ($cmd eq "add") {
watch_add($nick);
} elsif ($cmd eq "del") {
watch_del($nick);
} else {
watch_list_online();
}
}
sub mete_lista
{
my($file) = Irssi::get_irssi_dir."/watch";
my($nick);
local(*FILE);
my $ret;
open FILE, "< $file";
while (<FILE>) {
@nick = split;
$ret .= "+@nick[0],";
}
chop $ret;
Irssi::active_win()->command("quote watch $ret");
close FILE;
}
sub event_is_online
{
my ($server, $data) = @_;
my ($me, $nick, $ident, $host) = split(/ /, $data);
Irssi::print "\002$nick\002 \0034[\003$ident\@$host\0034]\003 has joined to IRC";
}
sub event_is_offline
{
my ($server, $data) = @_;
my ($me, $nick) = split(/ /, $data);
Irssi::print "\002$nick\002 has left IRC";
}
sub null
{
}
Irssi::command_bind('watch', 'watch');
Irssi::signal_add_last('event connected', 'mete_lista');
Irssi::signal_add('event 604', 'event_is_online');
Irssi::signal_add('event 605', 'null');
Irssi::signal_add('event 601', 'event_is_offline');
Irssi::signal_add('event 600', 'event_is_online');
|