Skip to content

Commit 675c667

Browse files
committed
修改群修改topic后,本地缓存未更新的bug
1 parent 6c9d54f commit 675c667

File tree

2 files changed

+16
-5
lines changed

2 files changed

+16
-5
lines changed

src/wechaty/user/room.py

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -167,9 +167,10 @@ def filter_func(room: Room) -> bool:
167167
payload = room.payload
168168
if not payload:
169169
return False
170-
if query == payload.id or (query.lower() in payload.topic.lower()): # type: ignore
170+
if query == payload.id or (query.lower() in payload.topic.lower()): # type: ignore
171171
return True
172172
return False
173+
173174
func = filter_func
174175
elif isinstance(query, RoomQueryFilter):
175176
def filter_func(room: Room) -> bool:
@@ -179,9 +180,10 @@ def filter_func(room: Room) -> bool:
179180
if not payload:
180181
return False
181182

182-
if query.id == payload.id or (query.topic.lower() in payload.topic.lower()): # noqa
183+
if query.id == payload.id or (query.topic.lower() in payload.topic.lower()): # noqa
183184
return True
184185
return False
186+
185187
func = filter_func
186188
elif isinstance(query, types.FunctionType):
187189
func = query
@@ -230,7 +232,7 @@ async def find_all(cls,
230232
rooms: List[Room] = [cls.load(room_id) for room_id in room_ids]
231233
tasks: List[Task] = [asyncio.create_task(room.ready()) for room in rooms]
232234
await gather_with_concurrency(PARALLEL_TASK_NUM, tasks)
233-
235+
234236
# 2. filter the rooms
235237
if not query:
236238
return rooms
@@ -290,6 +292,15 @@ def load(cls, room_id: str) -> Room:
290292
cls._pool[room_id] = room
291293
return room
292294

295+
@classmethod
296+
def upload_cache(cls, room_id: str)->None:
297+
"""
298+
dynamic upload
299+
clear the room_id of _pool and upload it use load
300+
"""
301+
cls._pool[room_id] = None
302+
cls.load(room_id)
303+
293304
def __str__(self) -> str:
294305
"""
295306
string format for room instance
@@ -349,7 +360,7 @@ async def ready(self, force_sync: bool = False, load_members: bool = False) -> N
349360

350361
async def say(self,
351362
some_thing: Union[str, Contact,
352-
FileBox, MiniProgram, UrlLink],
363+
FileBox, MiniProgram, UrlLink],
353364
mention_ids: Optional[List[str]] = None
354365
) -> Union[None, Message]:
355366
"""

src/wechaty/wechaty.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -713,7 +713,7 @@ async def room_leave_listener(payload: EventRoomLeavePayload) -> None:
713713
async def room_topic_listener(payload: EventRoomTopicPayload) -> None:
714714
log.info('receive <room-topic> event <%s>', payload)
715715

716-
room: Room = self.Room.load(payload.room_id)
716+
room: Room = self.Room.upload_cache(payload.room_id)
717717
await room.ready()
718718

719719
changer = self.Contact.load(payload.changer_id)

0 commit comments

Comments
 (0)