⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 textconsole.pm

📁 MSN fast change name is new utility 4 you
💻 PM
📖 第 1 页 / 共 2 页
字号:
            }        } else {            $self->prompt;        }    } else {        $self->{MsgBuffer} .= $kbinp;    }    if (length($self->{MsgBuffer}) > $MaxMsgSize) {        $self->warn("Msg buffer size > $MaxMsgSize bytes\n");    }}sub idle_time {    my ($self) = @_;    time - $self->{LastKbInput};}# Keyboard command help message    sub help {    pop->info('-'x32, ' Help Message ', '-'x32, "\n", $HELP);}sub set_attribute {    my ($self, $attr, $val) = @_;    my $oicq = $self->{OICQ};    if (defined($attr)) {        if (exists $AttrFilter{$attr}) {            if (defined $val) {                my $newval = $AttrFilter{$attr}->($val);                if (defined $newval) {                    $oicq->{$attr} = $newval;                } else {                    $self->error("Invalid value for $attr: $val\n");                }            } else {                $self->warn("$attr = $oicq->{$attr}\n");            }        } else {           $self->error("Cannot change $attr\n");        }    } else {        $self->warn("These attributes can be changed:\n",                   join(', ', keys(%AttrFilter)), "\n");    }    $self->prompt;    return;}sub prompt {    my ($self) = @_;    my $oicq = $self->{OICQ};    my $bufsize = length($self->{MsgBuffer});    my $myid = $oicq->{Id};    my $mynick = $oicq->get_nickname($myid);    my $dstid = $self->{DstId};    my $dstnick = $dstid ? $oicq->get_nickname($dstid) : "";    my $time = time - $oicq->{LastSvrAck};    my $c = $time > 60 ? '?' : '%';    $self->info(sprintf("%s %-8s %8s => %-8s %8s  %12d bytes in buffer %2d\"\n",                       $c, $mynick, $myid, $dstnick, $dstid, $bufsize, $time));}sub find_friend_id {    my ($self, $index) = @_;    my $info = $self->{OICQ}->{Info};    my $count = 0;    foreach my $id (sort {$a <=> $b} keys %$info) {        next unless defined $info->{$id}->{Friend};        $count++;        if ($count == $index) {            return $id;        }    }    $self->error("Invalid friend index $index ignored.\n");    return undef;}sub set_dstid {    my ($self, $dstid) = @_;    if ($dstid =~ /^\d+$/) {        if ($dstid <= 1000) {   # Assume user gives index, ranther than qq id            my $real_dstid = $self->find_friend_id($dstid);            defined $real_dstid and $self->{DstId} = $real_dstid;        } else {            $self->{DstId} = $dstid;        }    } else {        $self->error("Invalid destination id '$dstid' ignored.\n");    }}sub toggle_autoreply {    my ($self) = @_;    my $oicq = $self->{OICQ};    $self->warn("Auto-reply ", $oicq->toggle_autoreply, "\n");    $self->prompt;}sub remove_saved_ids {    my $self = shift;    my $oicq = $self->{OICQ};    foreach my $id (@_) {        unless ($id =~ /^\d+$/) {            $self->error("Invalid ID $id ignored\n");            next;        }        $oicq->remove_saved_id($id) or $self->error("Failed to remove $id\n");    }    $self->prompt;}sub list_saved_ids {    my $self = shift;    my $oicq = $self->{OICQ};    my $dir = "$oicq->{Dir}/$oicq->{Id}";    if (@_) {        foreach my $id (@_) {            system('cat', "$dir/$id.dat");        }    } else {	$self->info('-'x30, ' Stored User Info ', '-'x30,"\n");	foreach my $id ($oicq->get_saved_ids) {            my $nick = $oicq->get_nickname($id);            my $mtime = substr(localtime((stat("$dir/$id.dat"))[9]), 4, 16);            $self->info(sprintf("$mtime %9s ", $id), $nick, "\n");        }        $self->info('='x78, "\n");    }    $self->prompt;}sub show_msg_buffer {    my $self = shift;    print "\n$self->{MsgBuffer}\n";}sub clear_msg_buffer {    my $self = shift;    $self->{MsgBuffer} = "";    $self->info("Message buffer deleted\n");    $self->prompt;}sub show_queue {    my ($self, $limit) = @_;    $limit = 20 if not defined $limit;    my $oicq = $self->{OICQ};    my $hist = $oicq->{EventQueue};    $limit = @$hist if $limit > @$hist;    print '-'x32, ' Packet Queue ', '-'x32, "\n";    for (my $i = 0; $i < $limit; $i++) {        my $e = $hist->[$i];        print substr(localtime($e->{Time}), 11, 9),              ' Seq 0x', unpack('H*', $e->seq),              ' from 0x', unpack('H*', $e->src),              " Cmd 0x", unpack('H*', $e->cmdcode), " ack\@",              $e->{Ack} ? substr(localtime($e->{Ack}), 11, 9) : "", "\n";    }    $self->prompt;}sub show_oicq {    my ($self, $oicq) = @_;    $self->info("{\n");    my $pre = "    ";    foreach my $attr (sort keys(%$oicq)) {       next if $attr =~ /Passw/;       my $val = $oicq->{$attr};       $val = unpack("H*", $val) if $val =~ /[\0-\x1f]/;       $self->info($pre, "$attr = $val\n");     }    $self->info("}\n");}sub show_object {    my ($self) = @_;    $self->info('-'x35, ' Object ', '-'x35,"\n");    foreach my $key (keys %$self) {        $self->info("$key = ");        my $val = $self->{$key};        if (ref($val) eq 'Net::OICQ') {            $self->show_oicq($val);        } elsif (ref($val) =~ /ARRAY/) {            $self->info("[ ", join(', ', @$val), " ]\n");        } else {            $self->info($val, "\n");        }    }    $self->prompt;}sub load_plugin {    my ($self, $file, $id) = @_;    my $oicq = $self->{OICQ};    if (defined $id) {        if ($id =~ /^\d+$/) {            defined $oicq->{Info}->{$id} or $oicq->{Info}->{$id} = {};            $oicq->{Info}->{$id}->{ChatBot} = $file;            $self->info("Plugin $file will be used on $id\n");        } else {            $self->error("Bad id $id\n");        }    } else {        $oicq->{ChatBot} = $file;        $self->info("Plugin $file will be used on all ids\n");    }}sub get_online_friends {    my ($self) = @_;    $self->{OICQ}->get_online_friends;}sub get_friends_list {    my ($self) = @_;    $self->{OICQ}->get_friends_list;}sub show_strangers {    my ($self) = @_;    $self->info('-'x22, " Strangers ", '-'x22, "\n");    my $info = $self->{OICQ}->{Info};    my $idx = 1;    foreach my $id (sort {$a <=> $b} keys %$info) {        my $hashref = $info->{$id};        next if defined $hashref->{Friend};        $self->info(sprintf "%2d.  %9d  %3s  %3s  %4s : %-16s \n",            $idx++, $id,            defined($hashref->{Sex}) ? $hashref->{Sex} : '',            defined($hashref->{Age}) ? $hashref->{Age} : '',            defined($hashref->{Face}) ? $hashref->{Face} : '',            defined($hashref->{Nickname}) ? $hashref->{Nickname} : '');  }  $self->info('='x55, "\n");}sub set_mode {    my ($self, $mode) = @_;    unless (defined $mode) {        $self->info("Please use i for invisible, a for away, n for normal.\n");        return;    }    my $code;    if    ($mode =~ /^i/i) { $self->{ConnectMode} = 'Invisible'; $code = '40' }    elsif ($mode =~ /^a/i) { $self->{ConnectMode} = 'Away';      $code = '30' }    elsif ($mode =~ /^n/i) { $self->{ConnectMode} = 'Normal';    $code = '10' }    elsif ($mode =~ /^\d+/) { $code = $mode}  # You can enter code directly    else {        $self->info("Unknown mode \"$mode\" ignored.\n");        return;    }    $self->info("Mode set to $code\n");    $self->{OICQ}->set_mode($code);}sub get_user_info {    my ($self, $id) = @_;    my $oicq = $self->{OICQ};    defined $id or $id = $oicq->{Id};    $self->valid_id($id) or return;    if ($id < 1000) {        my $fid = $self->find_friend_id($id);        defined $fid or return;        $oicq->get_user_info($fid);    } else {        $oicq->get_user_info($id);    }    $self->{show_user_info} = 1;}sub update_info {    my $self = shift;    unless (@_) {        $self->info("You can change the following attributes of yourself:\n");        for(my $i = 1; $i < (@$InfoHeader -2); $i++) {            $self->info(sprintf " %-19s", $InfoHeader->[$i]);            $self->info("\n") if $i%4 == 0;        }        $self->info("\n");        $self->prompt;        return;    }    push @_, "" if @_ % 2;    my %hash = @_;    foreach my $attr (keys %hash) {        # Allow updating unknown attributes        #if ($attr =~ /^unkn/i) {        #    print "Invalid attribute $attr ignored\n";        #    delete $hash{$attr};        #    next;        #}        my $val = $hash{$attr};        $val =~ s/\\s/ /g;        $val =~ s/\\n/\n/g;        $hash{uc($attr)} = $val;        printf "%-19s : %s\n", $attr, $val;    }    $self->{OICQ}->update_info(\%hash);    return 1;}sub set_passwd {    my ($self) = @_;    my $newpw = $self->ask_passwd;    if ($newpw) {        $self->{OICQ}->set_passwd($newpw);        return 1;    }    return 0; }sub valid_id {    my ($self, $id) = @_;    if ($id =~ /^\d+$/) {        return 1;    } else {        $self->error("Invalid id: $id\n");        return 0;    }}sub search_users {    my ($self, $arg) = @_;    my $oicq = $self->{OICQ};    unless (defined $arg) {        $oicq->list_online_users(1);        return;    }    if ($arg =~ /\D/) {        $oicq->search_user($arg);    } elsif ($arg == 0) {        $oicq->{SearchCount} = 0;    } elsif ($arg > 100) {        $oicq->search_user($arg);    } else {        $oicq->list_online_users($arg);    }}sub accept_contact {    my ($self, $id) = @_;    $self->valid_id($id) or return;    $self->{OICQ}->accept_contact($id);}       sub reject_contact {    my ($self, $id) = @_;    $self->valid_id($id) or return;    $self->{OICQ}->reject_contact($id);}sub add_contact {    my ($self, $id) = @_;    $self->valid_id($id) or return;    $self->{OICQ}->add_contact($id);}sub del_contact {    my ($self, $id) = @_;    $self->valid_id($id) or return;    $self->{OICQ}->del_contact($id);}sub forbid_contact {    my ($self, $id) = @_;    $self->valid_id($id) or return;    $self->{OICQ}->forbid_contact($id);}1;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -