get/set room topic Args: new_topic: the new topic Examples: >>> old_topic = await room.topic() >>> new_topic = await room.topic('Wechaty!') Returns: Optional[str]: the room topic
(self, new_topic: str = None)
| 496 | await self.puppet.room_quit(self.room_id) |
| 497 | |
| 498 | async def topic(self, new_topic: str = None) -> Optional[str]: |
| 499 | """ |
| 500 | get/set room topic |
| 501 | Args: |
| 502 | new_topic: the new topic |
| 503 | Examples: |
| 504 | >>> old_topic = await room.topic() |
| 505 | >>> new_topic = await room.topic('Wechaty!') |
| 506 | Returns: |
| 507 | Optional[str]: the room topic |
| 508 | """ |
| 509 | log.info('Room topic (%s)', new_topic) |
| 510 | |
| 511 | await self.ready() |
| 512 | login_user: ContactSelf = self.wechaty.user_self() |
| 513 | |
| 514 | if new_topic is None: |
| 515 | if self.payload is not None and self.payload.topic is not None: |
| 516 | return self.payload.topic |
| 517 | |
| 518 | # 获取名称之间的结合 |
| 519 | room_member_ids = await \ |
| 520 | self.puppet.room_members(self.room_id) |
| 521 | # filter member_ids |
| 522 | member_ids = [member_id for member_id in |
| 523 | room_member_ids |
| 524 | if member_id != login_user.contact_id] |
| 525 | |
| 526 | members: List[Contact] = [ |
| 527 | self.wechaty.Contact.load(member_id) |
| 528 | for member_id in member_ids] |
| 529 | |
| 530 | for member in members: |
| 531 | await member.ready() |
| 532 | |
| 533 | names = [member.name for member in members] |
| 534 | return ','.join(names) |
| 535 | |
| 536 | try: |
| 537 | await self.puppet.room_topic(self.room_id, new_topic) |
| 538 | # reload the payload |
| 539 | await self.ready(force_sync=True) |
| 540 | return new_topic |
| 541 | # pylint:disable=W0703 |
| 542 | except Exception as exception: |
| 543 | log.warning( |
| 544 | 'Room topic(newTopic=%s) exception: %s', |
| 545 | new_topic, |
| 546 | exception |
| 547 | ) |
| 548 | return None |
| 549 | |
| 550 | async def announce(self, announce_text: str = None) -> Optional[str]: |
| 551 | """ |