扭曲的python IRC日志记录

时间:2011-02-01 17:59:42

标签: python twisted irc

我正在创建一个IRC bot,它将记录刚加入该频道的用户的主机名,然后将其记录到文件中。我正在尝试执行此操作的方法是执行whois命令,最终它会分离主机名,然后将其解析为IP,并记录该命令。

我对Python和Twisted都很陌生,这是我的代码的一部分,它应该记录刚加入的用户的主机名(或者只记录whois):

def userJoined(self, user, channel):
    self.logger.log("%s" % (self.whois(user)))

但是,当我检查日志时,它会写入None。有人知道代码有什么问题,以及如何修复它?感谢。

1 个答案:

答案 0 :(得分:2)

IRCClient.whois方法始终返回None。所以你所看到的正是我对这段代码的期望。 :)

IRCClient.whois 向服务器发送 WHOIS 命令。当它返回时,结果是未知的,因为服务器尚未发送它(它很可能还没有收到请求)。

为了获取响应中的数据,您需要覆盖IRCClient子类上的一些方法。

IRCClient公开来自IRC服务器的大量信息的方式是通过irc_ - 前缀回调方法。例如,IRC RFC记录的对 WHOIS IRC命令的几个响应之一具有助记符RPL_WHOISCHANNELS。要获得此响应,您将覆盖irc_RPL_WHOISCHANNELS方法。当客户端从服务器收到此响应时,将使用响应参数调用该方法。

有关irc_回调的详细信息,另请参阅this related question

咨询IRC RFC以获取您应该期望的所有响应的列表(尽管各种IRC服务器可能会给您更多或更少)。然后覆盖必要的方法。

不幸的是,这并不像简单地返回用户数据的whois方法那样方便,但是以当前形式获取IRCClient的信息是必要的。