Source code for slixmpp.plugins.xep_0172.user_nick
# 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 permission.importloggingfromasyncioimportFuturefromtypingimportOptional,CallablefromslixmppimportJIDfromslixmpp.stanza.messageimportMessagefromslixmpp.stanza.presenceimportPresencefromslixmpp.xmlstreamimportregister_stanza_pluginfromslixmpp.xmlstream.handlerimportCallbackfromslixmpp.xmlstream.matcherimportMatchXPathfromslixmpp.plugins.baseimportBasePluginfromslixmpp.plugins.xep_0172importstanza,UserNickfromslixmpp.plugins.xep_0004.stanzaimportFormlog=logging.getLogger(__name__)
[docs]classXEP_0172(BasePlugin):""" XEP-0172: User Nickname """name='xep_0172'description='XEP-0172: User Nickname'dependencies={'xep_0163'}stanza=stanzadefplugin_init(self):register_stanza_plugin(Message,UserNick)register_stanza_plugin(Presence,UserNick)defplugin_end(self):self.xmpp['xep_0030'].del_feature(feature=UserNick.namespace)self.xmpp['xep_0163'].remove_interest(UserNick.namespace)defsession_bind(self,jid):self.xmpp['xep_0163'].register_pep('user_nick',UserNick)
[docs]defpublish_nick(self,nick:Optional[str]=None,**pubsubkwargs)->Future:""" Publish the user's current nick. :param nick: The user nickname to publish. """nickname=UserNick()nickname['nick']=nickreturnself.xmpp['xep_0163'].publish(nickname,node=UserNick.namespace,**pubsubkwargs)
[docs]defstop(self,**pubsubkwargs)->Future:""" Clear existing user nick information to stop notifications. """nick=UserNick()returnself.xmpp['xep_0163'].publish(nick,node=UserNick.namespace,**pubsubkwargs)