Source code for slixmpp.plugins.xep_0085.chat_states
# Slixmpp: The Slick XMPP Library# Copyright (C) 2011 Nathanael C. Fritz, Lance J.T. Stout# This file is part of Slixmpp.# See the file LICENSE for copying permissioimportloggingimportslixmppfromslixmpp.stanzaimportMessagefromslixmpp.xmlstream.handlerimportCallbackfromslixmpp.xmlstream.matcherimportStanzaPathfromslixmpp.xmlstreamimportregister_stanza_plugin,ElementBase,ETfromslixmpp.pluginsimportBasePluginfromslixmpp.plugins.xep_0085importstanza,ChatStatelog=logging.getLogger(__name__)
[docs]classXEP_0085(BasePlugin):""" XEP-0085 Chat State Notifications """name='xep_0085'description='XEP-0085: Chat State Notifications'dependencies={'xep_0030'}stanza=stanzadefplugin_init(self):self.xmpp.register_handler(Callback('Chat State',StanzaPath('message/chat_state'),self._handle_chat_state))register_stanza_plugin(Message,stanza.Active)register_stanza_plugin(Message,stanza.Composing)register_stanza_plugin(Message,stanza.Gone)register_stanza_plugin(Message,stanza.Inactive)register_stanza_plugin(Message,stanza.Paused)defplugin_end(self):self.xmpp.remove_handler('Chat State')defsession_bind(self,jid):self.xmpp.plugin['xep_0030'].add_feature(ChatState.namespace)def_handle_chat_state(self,msg):state=msg['chat_state']log.debug("Chat State: %s, %s",state,msg['from'].jid)self.xmpp.event('chatstate',msg)self.xmpp.event('chatstate_%s'%state,msg)