From 79a3a2befd866f168c2a8ab389f5a4f0ddeb9b5a Mon Sep 17 00:00:00 2001 From: juanrmn Date: Wed, 6 Nov 2013 11:20:50 +0100 Subject: [PATCH] Added a MUC method 'setRole'. Change role property of a nick in a room, useful for moderator bots. --- sleekxmpp/plugins/xep_0045.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) 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)