sub
close
{
my
(
$self
,
$target
,
$dom
) =
@_
;
my
$login
=
$self
->session(
'login'
);
my
$id
;
$target
||=
$dom
->{target};
if
(
$target
=~ /^[
return
"PART $target"
;
}
else
{
$id
= as_id
$dom
->{network},
$target
;
$self
->redis->zrem(
"user:$login:conversations"
,
$id
,
sub
{
$self
->send_partial(
'event/remove_conversation'
,
%$dom
,
target
=>
$target
);
}
);
return
;
}
}
sub
help {
my
(
$self
) =
@_
;
$self
->send_partial(
'event/help'
);
return
;
}
sub
query {
my
(
$self
,
$target
,
$dom
) =
@_
;
my
$login
=
$self
->session(
'login'
);
my
$id
= as_id
$dom
->{network},
$target
;
if
(
$target
=~ /^[
$self
->redis->zadd(
"user:$login:conversations"
,
time
,
$id
,
sub
{
$self
->send_partial(
'event/add_conversation'
,
%$dom
,
target
=>
$target
);
}
);
}
else
{
$target
||=
'Missing'
;
$self
->send_partial(
'event/server_message'
,
%$dom
,
status
=> 400,
message
=>
"Invalid target: $target"
,
timestamp
=>
time
);
}
return
;
}
sub
reconnect {
my
(
$self
,
$arg
,
$dom
) =
@_
;
$self
->app->core->control(
restart
=>
$self
->session(
'login'
),
$dom
->{network},
sub
{ });
return
;
}
sub
join
{
"JOIN $_[1]"
}
sub
list {
"LIST"
}
sub
me {
"PRIVMSG $_[2]->{target} :\x{1}ACTION $_[1]\x{1}"
}
sub
mode {
"MODE $_[1]"
}
sub
msg {
$_
[1] =~ s!^(\w+)\s*!!;
"PRIVMSG $1 :$_[1]"
}
sub
names {
"NAMES "
. (
$_
[1] ||
$_
[2]->{target}) }
sub
nick {
"NICK $_[1]"
}
sub
oper {
"OPER $_[1]"
}
sub
part {
"PART "
. (
$_
[1] ||
$_
[2]->{target}) }
sub
say
{
"PRIVMSG $_[2]->{target} :$_[1]"
}
sub
topic {
"TOPIC $_[2]->{target}"
. (
$_
[1] ?
" :$_[1]"
:
""
) }
sub
whois {
"WHOIS $_[1]"
}
{
no
warnings
'once'
;
*j
= \
&join
;
*t
= \
&topic
;
*w
= \
&whois
;
}
1;