summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjuanrmn <juanr.gonzalez@gmail.com>2013-11-06 11:20:50 +0100
committerjuanrmn <juanr.gonzalez@gmail.com>2013-11-06 11:20:50 +0100
commit79a3a2befd866f168c2a8ab389f5a4f0ddeb9b5a (patch)
tree956d23e12aa8c6a44943726f3e791d5e344f005f
parent08a0fd5420c25108d3bff4096a2378fd2f288a50 (diff)
downloadslixmpp-79a3a2befd866f168c2a8ab389f5a4f0ddeb9b5a.tar.gz
slixmpp-79a3a2befd866f168c2a8ab389f5a4f0ddeb9b5a.tar.bz2
slixmpp-79a3a2befd866f168c2a8ab389f5a4f0ddeb9b5a.tar.xz
slixmpp-79a3a2befd866f168c2a8ab389f5a4f0ddeb9b5a.zip
Added a MUC method 'setRole'. Change role property of a nick in a room, useful for moderator bots.
-rw-r--r--sleekxmpp/plugins/xep_0045.py18
1 files changed, 18 insertions, 0 deletions
diff --git a/sleekxmpp/plugins/xep_0045.py b/sleekxmpp/plugins/xep_0045.py
index 1d5f3c83..6e3f10a9 100644
--- a/sleekxmpp/plugins/xep_0045.py
+++ b/sleekxmpp/plugins/xep_0045.py
@@ -289,6 +289,24 @@ class XEP_0045(BasePlugin):
return False
return True
+ def setRole(self, room, nick, role):
+ """ Change role property of a nick in a room.
+ Typically, roles are temporary (they last only as long as you are in the
+ room), whereas affiliations are permanent (they last across groupchat
+ sessions).
+ """
+ if role not in ('outcast', 'member', 'admin', 'owner', 'none'):
+ raise TypeError
+ query = ET.Element('{http://jabber.org/protocol/muc#admin}query')
+ item = ET.Element('item', {'role':role, 'nick':nick})
+ query.append(item)
+ iq = self.xmpp.makeIqSet(query)
+ iq['to'] = room
+ result = iq.send()
+ if result is False or result['type'] != 'result':
+ raise ValueError
+ return True
+
def invite(self, room, jid, reason='', mfrom=''):
""" Invite a jid to a room."""
msg = self.xmpp.makeMessage(room)