Twisted python IRC日志记录

Twisted python IRC logging

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

我对python和twisted都比较陌生,这是我的代码的一部分,应该记录刚刚加入的用户的主机名(或者现在只记录who is):

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

但是,当我检查日志时,它不写任何内容。有人知道代码出了什么问题,以及如何修复它吗?谢谢。


IRCClient.whois方法总是返回None。所以您看到的正是我希望从代码中看到的。:)

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

为了在响应中获取数据,需要重写IRCClient子类上的一些方法。

IRCClient公开IRC服务器的大量信息的方式是通过irc_前缀回调方法。例如,IRC RFC记录的对whois irc命令的几种响应之一具有助记键RPL_WHOISCHANNELS。要得到这个响应,您需要重写irc_RPL_WHOISCHANNELS方法。当客户机从服务器接收到这个响应时,使用响应的参数调用该方法。

有关irc_回调的更多详细信息,请参阅此相关问题。

有关您应该期望的所有响应的列表,请咨询IRC RFC(尽管不同的IRC服务器可能会或多或少地为您提供响应)。然后重写必要的方法。

不幸的是,这远不如返回用户数据的whois方法方便,但它是以当前形式获取IRCClient信息所必需的。