Скрипты Perl Irssi: Как отправить сообщение на определенный канал?
Мне нужно установить эту единственную задачу с помощью скрипта Irssi Perl. У меня есть свой канал, и я хочу отправить сообщение непосредственно на этот канал в определенных сценариях.
Мой опыт работы с Perl довольно ограничен, поэтому у меня его нет. Я запутался, как управлять различными чат-сетями и каналами в сценариях Irssi Perl. Так как я могу отправить сообщение, например, канал #testchan@Quakenet
например?
Тест первый:
server->command("^MSG $info{'#testchan'} $info{'Test message.'}");
Тест два ( туто о скриптинге):
sub away_describe_pub_channels {
my($net, $channel) = @_;
my ($text) = @_;
my $c = Irssi::server_find_chatnet("QuakeNet")->channel_find("testchan");
$c->command("DESCRIBE $channel $text")
}
1 ответ
Вот пример используется для бота:)
#==========================BEGINNING OF PARMS======================================
#name of the channels where this feature will be used
my @channels = ("foo","bar");
#the public commands
#help
my $cmd_help = '!help';
#new ticket
my $cmd_newticket = "!stack";
my %url_newticket = ( 'foo'=>{url=>"http://stackru.com/questions/ask"},
'bar'=>{url=>"http://https://github.com/repo/project/issues/new"}
sub bootstrap {
my ($server, $msg, $nick, $address, $target) = @_;
#lowercase of the channel name in case this one will be registered in camelCase ;)
$target = lc $target;
foreach my $channel (@channels) {
if ( $target eq "#".$channel) {
#split the line first peace the command second the rest
my ($cmd,$line) = split / /,$msg,2;
if ($cmd =~ $cmd_help) {
$server->command("MSG ". $nick ." Here are the available commands : !stack");
} elsif ($cmd eq $cmd_newticket) {
my $h = $url_newticket{$channel};
$server->command("MSG $target submit an issue/a ticket $h->{'url'}");
}
}
}
}
#let's add the sub as a signal and let's play
Irssi::signal_add_last('message public', 'bootstrap');
Надеюсь, что это может помочь