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.
import logging
from asyncio import Future
from slixmpp.stanza.message import Message
from slixmpp.stanza.presence import Presence
from slixmpp.xmlstream import register_stanza_plugin
from slixmpp.plugins.base import BasePlugin
from slixmpp.plugins.xep_0172 import stanza, UserNick
log = logging.getLogger(__name__)
[docs]
class XEP_0172(BasePlugin):
"""
XEP-0172: User Nickname
"""
name = 'xep_0172'
description = 'XEP-0172: User Nickname'
dependencies = {'xep_0163'}
stanza = stanza
def plugin_init(self):
register_stanza_plugin(Message, UserNick)
register_stanza_plugin(Presence, UserNick)
def plugin_end(self):
self.xmpp['xep_0030'].del_feature(feature=UserNick.namespace)
self.xmpp['xep_0163'].remove_interest(UserNick.namespace)
def session_bind(self, jid):
self.xmpp['xep_0163'].register_pep('user_nick', UserNick)
[docs]
def publish_nick(self, nick: str | None = None, **pubsubkwargs) -> Future:
"""
Publish the user's current nick.
:param nick: The user nickname to publish.
"""
nickname = UserNick()
nickname['nick'] = nick
return self.xmpp['xep_0163'].publish(
nickname,
node=UserNick.namespace,
**pubsubkwargs
)
[docs]
def stop(self, **pubsubkwargs) -> Future:
"""
Clear existing user nick information to stop notifications.
"""
nick = UserNick()
return self.xmpp['xep_0163'].publish(
nick,
node=UserNick.namespace,
**pubsubkwargs
)