1

我的任务是编写一个 IRC 机器人,它将在这里加入内部 IRC 系统上的频道,并向似乎不再使用的频道发布消息,警告任何潜在用户该频道即将停用。我们的 IRC 系统有大约 6,500 个频道,需要将这些消息发布到它们,我们使用的 IRC 服务器(混合的自定义分支)将并发频道加入限制为每个连接 100 个。为了不达到这个限制,我得到的代码是这样的:

if ($channel_list->{$channel}{joined}) {
    # If we're already joined, privmsg immediately
    $logger->info("Trying to message $channel");
    $data_entry->notified('true');
    $data_entry->update;
    $irc->yield(privmsg => $msg_channel, $message);
    $irc->yield(part => $msg_channel);
} else {
    # Otherwise join, and let the join event do the privmsg and part
    $logger->info("Trying to join $channel");
    $data_entry->notified('true');
    $data_entry->update;
    $irc->yield(join => $msg_channel);
}

即它会查看我们是否已经加入,如果是,请尝试发布通知消息,然后立即分手。如果我们没有加入,它会先尝试加入(加入事件将触发消息发送)。

问题是代码似乎永远不会运行

$irc->yield(part => $msg_channel);

行,因为最终我开始从 IRC 服务器返回 irc_405 事件,说代码加入了太多频道。有人知道我在做什么错吗?

4

0 回答 0