python-wechaty
python-wechaty copied to clipboard
🐛🐛 Bug Report: RoomInvitation accept error.
requirements
- token type: padlocal
- version of python-wechaty
21:30:03 › pip freeze|grep wechat
wechaty==0.8.63
wechaty-grpc==0.20.19
wechaty-puppet==0.4.21
wechaty-puppet-service==0.8.10
- version of wechaty docker image: 0.65
Describe your problem
Puppet is ok, handle other events normally, but invitation accept failed.
Reproduce your problem
async def on_room_invite(self, room_invitation: RoomInvitation) -> None:
logger.info("room_invitation: %s", room_invitation)
await room_invitation.accept()
Error info
2022-08-02 21:17:33,083 - Wechaty - INFO - receive <room-invite> event <EventRoomInvitePayload(room_invitation_id='2660393251955049397')>
2022-08-02 21:17:33,083 - RoomInvitation - INFO - load () <2660393251955049397>
2022-08-02 21:17:33,083 - RoomInvitation - INFO - __init__ () <RoomInvitation <2660393251955049397>>
2022-08-02 21:17:33,083 - bot - INFO - room_invitation: RoomInvitation <2660393251955049397>
2022-08-02 21:17:33,083 - RoomInvitation - INFO - accept() <RoomInvitation <2660393251955049397>>
2022-08-02 21:17:33,083 - Wechaty - ERROR - internal error <puppet not set>
I modified two codes and was able to solve errors related to room_invitation. hope you can solve it by referring to the method below.
-
in
python-wechaty/src/wechaty/user/room_invitation.py,https://github.com/wechaty/python-wechaty/blob/e9a04a98a3b01f287760e2d2a4514e4a80ecd15f/src/wechaty/user/room_invitation.py#L82-L95
modify as:
def load(cls, room_invitation_id: str) -> RoomInvitation: """ load RoomInvitation object Args: room_invitation_id: room invitation id Examples: >>> invitation = RoomInvitation.load(room_invitation_id) Returns: RoomInvitation: RoomInvitation object """ log.info('load () <%s>', room_invitation_id) return cls(room_invitation_id) -
in
python-wechaty-puppet-service/src/wechaty_puppet_service/puppet.py,https://github.com/wechaty/python-wechaty-puppet-service/blob/5174faf061ea705dc887d615f1268a8c5d4b886a/src/wechaty_puppet_service/puppet.py#L667-L678
modify as:
async def room_invitation_payload(self, room_invitation_id: str, payload: Optional[RoomInvitationPayload] = None) -> RoomInvitationPayload: """ get room_invitation_payload """ response = await self.puppet_stub.room_invitation_payload( id=room_invitation_id, payload=payload ) return response