Source code for slixmpp.plugins.xep_0441.mam_prefs
# Slixmpp: The Slick XMPP Library# Copyright (C) 2021 Mathieu Pasquet# This file is part of Slixmpp.# See the file LICENSE for copying permissionimportloggingfromasyncioimportFuturefromtypingimport(List,Optional,Tuple,)fromslixmppimportJIDfromslixmpp.typesimportMAMDefaultfromslixmpp.stanzaimportIqfromslixmpp.xmlstreamimportregister_stanza_pluginfromslixmpp.pluginsimportBasePluginfromslixmpp.plugins.xep_0441importstanzalog=logging.getLogger(__name__)
[docs]asyncdefget_preferences(self,**iqkwargs)->Tuple[MAMDefault,List[JID],List[JID]]:"""Get the current MAM preferences. :returns: A tuple of MAM preferences with (default, always, never) """ifrom=iqkwargs.pop('ifrom',None)ito=iqkwargs.pop('ito',None)iq=self.xmpp.make_iq_get(ito=ito,ifrom=ifrom)iq['type']='get'query_id=iq['id']iq['mam_prefs']['query_id']=query_idresult=awaitiq.send(**iqkwargs)return(result['mam_prefs']['default'],result['mam_prefs']['always'],result['mam_prefs']['never'])
[docs]defset_preferences(self,default:Optional[MAMDefault]='roster',always:Optional[List[JID]]=None,never:Optional[List[JID]]=None,*,ito:Optional[JID]=None,ifrom:Optional[JID]=None,**iqkwargs)->Future:"""Set MAM Preferences. The server answer MAY contain different items. :param default: Default behavior (one of 'always', 'never', 'roster'). :param always: List of JIDs whose messages will always be stored. :param never: List of JIDs whose messages will never be stored. """iq=self.xmpp.make_iq_set(ito=ito,ifrom=ifrom)iq['mam_prefs']['default']=defaultiq['mam_prefs']['always']=alwaysiq['mam_prefs']['never']=neverreturniq.send(**iqkwargs)