Re-add Client.wait_until_ready
This commit is contained in:
		| @@ -120,6 +120,7 @@ class Client: | ||||
|  | ||||
|         self.connection.shard_count = self.shard_count | ||||
|         self._closed = asyncio.Event(loop=self.loop) | ||||
|         self._ready = asyncio.Event(loop=self.loop) | ||||
|  | ||||
|         # if VoiceClient.warn_nacl: | ||||
|         #     VoiceClient.warn_nacl = False | ||||
| @@ -149,6 +150,9 @@ class Client: | ||||
|  | ||||
|         yield from self.ws.send_as_json(payload) | ||||
|  | ||||
|     def handle_ready(self): | ||||
|         self._ready.set() | ||||
|  | ||||
|     def _resolve_invite(self, invite): | ||||
|         if isinstance(invite, Invite) or isinstance(invite, Object): | ||||
|             return invite.id | ||||
| @@ -189,6 +193,11 @@ class Client: | ||||
|         """List[:class:`VoiceClient`]: Represents a list of voice connections.""" | ||||
|         return self.connection.voice_clients | ||||
|  | ||||
|     @property | ||||
|     def is_ready(self): | ||||
|         """bool: Specifies if the client's internal cache is ready for use.""" | ||||
|         return self._ready.is_set() | ||||
|  | ||||
|     @asyncio.coroutine | ||||
|     def _run_event(self, coro, event_name, *args, **kwargs): | ||||
|         try: | ||||
| @@ -356,6 +365,10 @@ class Client: | ||||
|             except (ReconnectWebSocket, ResumeWebSocket) as e: | ||||
|                 resume = type(e) is ResumeWebSocket | ||||
|                 log.info('Got ' + type(e).__name__) | ||||
|  | ||||
|                 if not resume: | ||||
|                     self._ready.clear() | ||||
|  | ||||
|                 self.ws = yield from DiscordWebSocket.from_client(self, shard_id=self.shard_id, | ||||
|                                                                         session=self.ws.session_id, | ||||
|                                                                         sequence=self.ws.sequence, | ||||
| @@ -389,6 +402,7 @@ class Client: | ||||
|  | ||||
|         yield from self.http.close() | ||||
|         self._closed.set() | ||||
|         self._ready.clear() | ||||
|  | ||||
|     @asyncio.coroutine | ||||
|     def start(self, *args, **kwargs): | ||||
| @@ -513,6 +527,14 @@ class Client: | ||||
|  | ||||
|     # listeners/waiters | ||||
|  | ||||
|     @asyncio.coroutine | ||||
|     def wait_until_ready(self): | ||||
|         """|coro| | ||||
|  | ||||
|         Waits until the client's internal cache is all ready. | ||||
|         """ | ||||
|         yield from self._ready.wait() | ||||
|  | ||||
|     def wait_for(self, event, *, check=None, timeout=None): | ||||
|         """|coro| | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user