25
25
import asyncio
26
26
from uuid import uuid4
27
27
import random
28
+ from collections import defaultdict
28
29
29
30
from wechaty_puppet .file_box import FileBox
30
31
@@ -69,7 +70,7 @@ class FakeMessageManagerMixin:
69
70
def __init__ (self ) -> None :
70
71
"""_summary_
71
72
"""
72
- super ().__init__ (self )
73
+ super ().__init__ ()
73
74
74
75
self ._message_payloads : Dict [str , MessagePayload ] = {}
75
76
@@ -118,11 +119,12 @@ class FakeRoomManagerMixin:
118
119
def __init__ (self ) -> None :
119
120
"""_summary_
120
121
"""
121
- super ().__init__ (self )
122
+ super ().__init__ ()
122
123
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 )
124
126
125
- def get_all_fake_messages (self ) -> List [RoomPayload ]:
127
+ def get_all_fake_rooms (self ) -> List [RoomPayload ]:
126
128
"""_summary_
127
129
128
130
Returns:
@@ -148,7 +150,24 @@ def get_fake_room(self, room_id: str) -> Optional[RoomPayload]:
148
150
Optional[RoomPayload]: _description_
149
151
"""
150
152
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
+
152
171
def remove_fake_room (self , room_id : str ):
153
172
"""_summary_
154
173
@@ -167,7 +186,7 @@ class FakeContactManagerMixin:
167
186
def __init__ (self ) -> None :
168
187
"""_summary_
169
188
"""
170
- super ().__init__ (self )
189
+ super ().__init__ ()
171
190
172
191
self ._contact_payloads : Dict [str , ContactPayload ] = {}
173
192
@@ -221,10 +240,12 @@ def __init__(self, options: PuppetOptions, name: str = 'puppet') -> None:
221
240
options (PuppetOptions): _description_
222
241
name (str, optional): _description_. Defaults to 'puppet'.
223
242
"""
224
- super ().__init__ (options , name )
243
+ super ().__init__ (options = options , name = name )
225
244
self .name : str = name
226
245
self .options = options
227
246
self .emitter = AsyncIOEventEmitter ()
247
+
248
+ self .login_user_id = self .add_random_fake_contact ()
228
249
229
250
def add_random_fake_contact_message (
230
251
self ,
@@ -576,6 +597,7 @@ def self_id(self) -> str:
576
597
"""
577
598
get self_id
578
599
"""
600
+ return self .login_user_id
579
601
580
602
async def friendship_search (self , weixin : Optional [str ] = None ,
581
603
phone : Optional [str ] = None
@@ -725,7 +747,7 @@ async def room_member_payload(
725
747
"""
726
748
get room member payload
727
749
"""
728
- return self .get_fake_contact (contact_id )
750
+ return self ._room_member_payloads . pop (contact_id , None )
729
751
730
752
async def room_avatar (self , room_id : str ) -> FileBox :
731
753
"""
0 commit comments