2525import asyncio
2626from uuid import uuid4
2727import random
28+ from collections import defaultdict
2829
2930from wechaty_puppet .file_box import FileBox
3031
@@ -69,7 +70,7 @@ class FakeMessageManagerMixin:
6970 def __init__ (self ) -> None :
7071 """_summary_
7172 """
72- super ().__init__ (self )
73+ super ().__init__ ()
7374
7475 self ._message_payloads : Dict [str , MessagePayload ] = {}
7576
@@ -118,11 +119,12 @@ class FakeRoomManagerMixin:
118119 def __init__ (self ) -> None :
119120 """_summary_
120121 """
121- super ().__init__ (self )
122+ super ().__init__ ()
122123
123- self ._room_payloads : Dict [str , RoomPayload ] = {}
124+ self ._room_payloads : Dict [str , RoomPayload ] = defaultdict (RoomPayload )
125+ self ._room_member_payloads : Dict [str , List [RoomMemberPayload ]] = defaultdict (list )
124126
125- def get_all_fake_messages (self ) -> List [RoomPayload ]:
127+ def get_all_fake_rooms (self ) -> List [RoomPayload ]:
126128 """_summary_
127129
128130 Returns:
@@ -148,7 +150,24 @@ def get_fake_room(self, room_id: str) -> Optional[RoomPayload]:
148150 Optional[RoomPayload]: _description_
149151 """
150152 return self ._room_payloads .get (room_id , None )
151-
153+
154+ def add_fake_room_members (self , room_id : str , members : List [RoomMemberPayload ]):
155+ """add fake room members
156+
157+ Args:
158+ room_id (str): the id of room
159+ members (List[RoomMemberPayload]): the members info of the room
160+ """
161+ if room_id not in self ._room_payloads :
162+ raise ValueError (f"room<{ room_id } > not found" )
163+ room_payload = self ._room_payloads [room_id ]
164+ room_payload .member_ids = list (
165+ set (room_payload .member_ids + [member .id for member in members ])
166+ )
167+
168+ for member in members :
169+ self ._room_member_payloads [member .id ] = member
170+
152171 def remove_fake_room (self , room_id : str ):
153172 """_summary_
154173
@@ -167,7 +186,7 @@ class FakeContactManagerMixin:
167186 def __init__ (self ) -> None :
168187 """_summary_
169188 """
170- super ().__init__ (self )
189+ super ().__init__ ()
171190
172191 self ._contact_payloads : Dict [str , ContactPayload ] = {}
173192
@@ -221,10 +240,12 @@ def __init__(self, options: PuppetOptions, name: str = 'puppet') -> None:
221240 options (PuppetOptions): _description_
222241 name (str, optional): _description_. Defaults to 'puppet'.
223242 """
224- super ().__init__ (options , name )
243+ super ().__init__ (options = options , name = name )
225244 self .name : str = name
226245 self .options = options
227246 self .emitter = AsyncIOEventEmitter ()
247+
248+ self .login_user_id = self .add_random_fake_contact ()
228249
229250 def add_random_fake_contact_message (
230251 self ,
@@ -576,6 +597,7 @@ def self_id(self) -> str:
576597 """
577598 get self_id
578599 """
600+ return self .login_user_id
579601
580602 async def friendship_search (self , weixin : Optional [str ] = None ,
581603 phone : Optional [str ] = None
@@ -725,7 +747,7 @@ async def room_member_payload(
725747 """
726748 get room member payload
727749 """
728- return self .get_fake_contact (contact_id )
750+ return self ._room_member_payloads . pop (contact_id , None )
729751
730752 async def room_avatar (self , room_id : str ) -> FileBox :
731753 """
0 commit comments