from sleekxmpp.plugins.xep_0054 import XEP_0054 from sleekxmpp import Iq from sleekxmpp.exceptions import XMPPError from telethon.update_state import UpdateState def patched_handle_get_vcard(self, iq): if iq['type'] == 'result': self.api['set_vcard'](jid=iq['from'], args=iq['vcard_temp']) return elif iq['type'] == 'get': vcard = self.api['get_vcard'](iq['to'].bare) if isinstance(vcard, Iq): vcard.send() else: iq = iq.reply() iq.append(vcard) iq.send() elif iq['type'] == 'set': raise XMPPError('service-unavailable') def patched_stop_workers(self): """ Waits for all the worker threads to stop. """ # Put dummy ``None`` objects so that they don't need to timeout. n = self._workers self._workers = None if n: with self._updates_lock: for _ in range(n): self._updates.put(None) for t in self._worker_threads: t.join() self._worker_threads.clear() self._workers = n # hey i'm baboon XEP_0054._handle_get_vcard = patched_handle_get_vcard UpdateState.stop_workers = patched_stop_workers