wechaty / python-wechaty

Python Wechaty is a Conversational RPA SDK for Chatbot Makers written in Python
https://wechaty.readthedocs.io/zh_CN/latest/
Apache License 2.0
1.55k stars 229 forks source link

🐛🐛 Bug Report: RoomInvitation accept error. #354

Open helloocc opened 1 year ago

helloocc commented 1 year ago

requirements

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>
dwro0121 commented 10 months ago

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.

  1. 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)
  2. 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