From 889cfaa95b589bf4789c8db928b07966619a60a9 Mon Sep 17 00:00:00 2001
From: Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
Date: Fri, 21 May 2021 18:43:30 +0200
Subject: XEP-0045: Add a helper method to request voice

This can be used in a moderated room when we are only a visitor.
---
 slixmpp/plugins/xep_0045/muc.py | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/slixmpp/plugins/xep_0045/muc.py b/slixmpp/plugins/xep_0045/muc.py
index 4507be59..21f5c896 100644
--- a/slixmpp/plugins/xep_0045/muc.py
+++ b/slixmpp/plugins/xep_0045/muc.py
@@ -591,6 +591,19 @@ class XEP_0045(BasePlugin):
             msg['muc']['decline']['reason'] = reason
         self.xmpp.send(msg)
 
+    def request_voice(self, room: JID, role: str, *, mfrom: Optional[JID] = None):
+        """Request voice in a moderated room.
+
+        :param room: Room to request voice from.
+        """
+        #form = self.xmpp['xep_0004'].make_form(ftype='submit')
+        msg = self.xmpp.make_message(room, mfrom=mfrom)
+        form = msg['form']
+        form['type'] = 'submit'
+        form.add_field(var='FORM_TYPE', ftype='hidden', value='http://jabber.org/protocol/muc#request')
+        form.add_field(var='muc#role', ftype='list-single', label='Requested role', value=role)
+        self.xmpp.send(msg)
+
     def jid_in_room(self, room: JID, jid: JID) -> bool:
         """Check if a JID is present in a room.
 
-- 
cgit v1.2.3