summaryrefslogtreecommitdiff
path: root/sleekxmpp/roster/item.py
diff options
context:
space:
mode:
Diffstat (limited to 'sleekxmpp/roster/item.py')
-rw-r--r--sleekxmpp/roster/item.py31
1 files changed, 13 insertions, 18 deletions
diff --git a/sleekxmpp/roster/item.py b/sleekxmpp/roster/item.py
index 6ed1e42d..0acb5537 100644
--- a/sleekxmpp/roster/item.py
+++ b/sleekxmpp/roster/item.py
@@ -307,34 +307,29 @@ class RosterItem(object):
p['from'] = self.owner
p.send()
- def send_presence(self, ptype=None, pshow=None, pstatus=None,
- ppriority=None, pnick=None):
+ def send_presence(self, **kwargs):
"""
Create, initialize, and send a Presence stanza.
+ If no recipient is specified, send the presence immediately.
+ Otherwise, forward the send request to the recipient's roster
+ entry for processing.
+
Arguments:
pshow -- The presence's show value.
pstatus -- The presence's status message.
ppriority -- This connections' priority.
+ pto -- The recipient of a directed presence.
+ pfrom -- The sender of a directed presence, which should
+ be the owner JID plus resource.
ptype -- The type of presence, such as 'subscribe'.
pnick -- Optional nickname of the presence's sender.
"""
- p = self.xmpp.make_presence(pshow=pshow,
- pstatus=pstatus,
- ppriority=ppriority,
- ptype=ptype,
- pnick=pnick,
- pto=self.jid)
- if self.xmpp.is_component:
- p['from'] = self.owner
- if p['type'] in p.showtypes or \
- p['type'] in ['available', 'unavailable']:
- self.last_status = p
- p.send()
-
- if not self.xmpp.sentpresence:
- self.xmpp.event('sent_presence')
- self.xmpp.sentpresence = True
+ if self.xmpp.is_component and not kwargs.get('pfrom', ''):
+ kwargs['pfrom'] = self.owner
+ if not kwargs.get('pto', ''):
+ kwargs['pto'] = self.jid
+ self.xmpp.send_presence(**kwargs)
def send_last_presence(self):
if self.last_status is None: