Please not to use `ready()` at the user land. Args: force_sync: force sync the room data from puppet load_members: load members of the room Examples: >>> await room.ready() Returns: None
(self, force_sync: bool = False, load_members: bool = False)
| 321 | return 'Room <%s - %s>' % (self.room_id, self.payload.topic) |
| 322 | |
| 323 | async def ready(self, force_sync: bool = False, load_members: bool = False) -> None: |
| 324 | """ |
| 325 | Please not to use `ready()` at the user land. |
| 326 | Args: |
| 327 | force_sync: force sync the room data from puppet |
| 328 | load_members: load members of the room |
| 329 | Examples: |
| 330 | >>> await room.ready() |
| 331 | Returns: |
| 332 | None |
| 333 | """ |
| 334 | if self.is_ready(): |
| 335 | return |
| 336 | |
| 337 | if force_sync: |
| 338 | self.payload = None |
| 339 | |
| 340 | # TODO -> *_dirty method is not implemented in puppet |
| 341 | # await self.puppet.room_payload_dirty(self.room_id) |
| 342 | # await self.puppet.room_member_payload_dirty(self.room_id) |
| 343 | |
| 344 | self.payload = await self.puppet.room_payload(self.room_id) |
| 345 | |
| 346 | if self.payload is None: |
| 347 | raise WechatyPayloadError('Room Payload can"t be ready') |
| 348 | |
| 349 | if not load_members: |
| 350 | return |
| 351 | |
| 352 | member_ids = await self.puppet.room_members(self.room_id) |
| 353 | |
| 354 | contacts = [ |
| 355 | self.wechaty.Contact.load(member_id) for member_id in member_ids] |
| 356 | |
| 357 | for contact in contacts: |
| 358 | try: |
| 359 | await contact.ready() |
| 360 | # pylint:disable=W0703 |
| 361 | except Exception as exception: |
| 362 | log.error( |
| 363 | 'Room ready() member.ready() rejection: %s', exception |
| 364 | ) |
| 365 | |
| 366 | async def say(self, |
| 367 | some_thing: Union[str, Contact, |