Twisted IM 概述

Twisted IM(即时通讯)是一个多协议聊天框架,基于我们都熟悉和喜爱的 Twisted 框架。它相当简单且可扩展,有两个方向 - 添加新协议非常容易,添加新前端也很容易。

代码流程

AccountManager

控制流程从 baseaccount.AccountManager 的相关子类开始。AccountManager 负责管理帐户 - 记住哪些帐户可用、它们的设置、添加和删除帐户,以及在启动时让帐户登录。

这是一个开始你的界面的好地方,从磁盘加载帐户列表并告诉它们登录。大多数方法名称在 AccountManager 中都很直白,你的子类可以覆盖它想要的任何内容,但你需要覆盖 __init__。类似这样

...
    def __init__(self):
        self.chatui = ... # Your subclass of basechat.ChatUI
        self.accounts = ... # Load account list
        for a in self.accounts:
            a.logOn(self.chatui)

ChatUI

帐户对象通过 basechat.ChatUI 的子类与用户交谈。此类跟踪所有当前活动的对话,以便当帐户收到传入消息时,它可以将该消息置于其正确的上下文中。

你需要覆盖多少此类取决于你需要做什么。你需要覆盖 getConversation(一对一对话,如 IRC DCC 聊天)和 getGroupConversation(多人对话,如 IRC 频道)。你可能想覆盖 getGroupgetPerson

上述例程的默认版本的主要问题是它们接受一个参数 Class,它默认为该类的抽象实现 - 例如,getConversation 有一个 Class 参数,它默认为 basechat.Conversation,它会引发很多 NotImplementedError。在你的子类中,用一个新的方法覆盖该方法,该方法的 Class 参数默认为你自己的 Conversation 实现,它只是调用父类的实现。

Conversation 和 GroupConversation

这些类是你的界面与聊天协议相遇的地方。聊天协议获取消息,找到合适的 ConversationGroupConversation 对象,并在发生各种有趣的事情时调用其方法。

覆盖你想要获取的信息的方法。但是,你必须覆盖 hideshow 方法 - 它们被频繁调用,默认实现会引发 NotImplementedError

帐户

帐户是 basesupport.AbstractAccount 的子类的实例。有关更多详细信息和示例代码,请参阅 twisted.words.im 中的各种 *support 文件。