gpt4 book ai didi

perl - 如何在 Perl 中实现一个简单的 IRC 客户端?

转载 作者:行者123 更新时间:2023-12-04 16:36:53 25 4
gpt4 key购买 nike

我正在开发一个需要将 IRC 消息发送到内部 IRC channel 的工具。这不是一个持续运行的程序,而是一个偶尔会被调用的工具,并且需要能够在调用时用几条消息通知 channel 。

我看了Net::IRC ,但它自 2004 年以来就已经死了。所以我查看了它列出的替代方案( Bot::BasicBotPOE::Component::IRC ),但这两个都需要在 POE 下运行及其事件循环。类似 Net::Async::IRC 的内容也会出现同样的问题。因为它需要在 IO::Async 事件循环中运行。

我不是在编写一个需要与任何东西交互的成熟机器人,我只想登录到一个 irc 服务器,加入一个 channel ,发布一些快速消息然后离开。我不想为了做到这一点而重新编写整个程序以适应某些框架的事件循环。

那么,对于不会让我重写整个应用程序的简单 IRC 客户端库有什么建议吗?

最佳答案

使用AnyEvent::IRC::Client ,当它使用 AnyEvent '事件循环'时,你不必重写你的应用程序来使用它,你可以这样做:

use AnyEvent;
use AnyEvent::IRC::Client;

与模块的其余部分一起使用;和这样的东西
sub do_irc {
my $log_chan = '#foobar';
my $timer;
my $c = AnyEvent->condvar;
my $con = new AnyEvent::IRC::Client;

$con->reg_cb( join => sub {
my ($con, $nick, $channel, $is_myself) = @_;
if ($is_myself && $channel eq $log_chan) {
$con->send_chan( $channel, PRIVMSG => ($channel, 'my information') );
$timer = AnyEvent->timer (
after => 1,
cb => sub {
undef $timer;
$con->disconnect('done');
});
}
});

$con->connect($irc_serv, 6667, { nick => $your_nick } );
$con->send_srv( JOIN => ($log_chan) );
$c->wait;
$con->disconnect;

}

要进行连接,它只会在完成后返回(为简洁起见,省略了错误处理)。您的应用程序中没有其他东西需要使用 AnyEvent。

关于perl - 如何在 Perl 中实现一个简单的 IRC 客户端?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3835013/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com