Skip to content

修改群修改topic后,本地缓存未更新的bug #438

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 2 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions .github/workflows/pypi.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ jobs:
- uses: actions/checkout@v2
- uses: actions/setup-python@v1
with:
python-version: 3.8
python-version: 3.9
- name: Install dependencies
run: |
python -m pip install --upgrade pip
Expand All @@ -36,7 +36,7 @@ jobs:
- uses: actions/checkout@v2
- uses: actions/setup-python@v1
with:
python-version: 3.8
python-version: 3.9
- name: Install dependencies
run: |
python -m pip install --upgrade pip
Expand All @@ -57,7 +57,7 @@ jobs:
- name: Set up Python
uses: actions/setup-python@v1
with:
python-version: 3.8
python-version: 3.9
- name: Install dependencies
run: |
python -m pip install --upgrade pip
Expand All @@ -75,7 +75,7 @@ jobs:
- uses: actions/setup-node@v3
with:
node-version: 16
- name: Building Wechaty-ui
- name: Building Wechaty-ui
id: build-ui
run: |
make ui
Expand Down
24 changes: 20 additions & 4 deletions src/wechaty/user/room.py
Original file line number Diff line number Diff line change
Expand Up @@ -167,9 +167,10 @@ def filter_func(room: Room) -> bool:
payload = room.payload
if not payload:
return False
if query == payload.id or (query.lower() in payload.topic.lower()): # type: ignore
if query == payload.id or (query.lower() in payload.topic.lower()): # type: ignore
return True
return False

func = filter_func
elif isinstance(query, RoomQueryFilter):
def filter_func(room: Room) -> bool:
Expand All @@ -179,9 +180,10 @@ def filter_func(room: Room) -> bool:
if not payload:
return False

if query.id == payload.id or (query.topic.lower() in payload.topic.lower()): # noqa
if query.id == payload.id or (query.topic.lower() in payload.topic.lower()): # noqa
return True
return False

func = filter_func
elif isinstance(query, types.FunctionType):
func = query
Expand Down Expand Up @@ -230,7 +232,7 @@ async def find_all(cls,
rooms: List[Room] = [cls.load(room_id) for room_id in room_ids]
tasks: List[Task] = [asyncio.create_task(room.ready()) for room in rooms]
await gather_with_concurrency(PARALLEL_TASK_NUM, tasks)

# 2. filter the rooms
if not query:
return rooms
Expand Down Expand Up @@ -290,6 +292,20 @@ def load(cls, room_id: str) -> Room:
cls._pool[room_id] = room
return room

@classmethod
def upload_cache(cls, room_id: str) -> Room:
"""
dynamic upload
clear the room_id from _pool and re-upload it using load
Args:
room_id: The Roo ID to refresh
Return:
Room:The refreshed room instance
"""
if room_id in cls._pool:
del cls._pool[room_id]
return cls.load(room_id)

def __str__(self) -> str:
"""
string format for room instance
Expand Down Expand Up @@ -349,7 +365,7 @@ async def ready(self, force_sync: bool = False, load_members: bool = False) -> N

async def say(self,
some_thing: Union[str, Contact,
FileBox, MiniProgram, UrlLink],
FileBox, MiniProgram, UrlLink],
mention_ids: Optional[List[str]] = None
) -> Union[None, Message]:
"""
Expand Down
4 changes: 2 additions & 2 deletions src/wechaty/wechaty.py
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,6 @@

from wechaty.utils import timestamp_to_date, qr_terminal


log: logging.Logger = get_logger('Wechaty')

DEFAULT_TIMEOUT = 300
Expand Down Expand Up @@ -472,7 +471,7 @@ async def start(self) -> None:
loop = asyncio.get_event_loop()
loop.stop()

except Exception as e: # pylint: disable=broad-except
except Exception as e: # pylint: disable=broad-except
print(e)

async def restart(self) -> None:
Expand Down Expand Up @@ -713,6 +712,7 @@ async def room_leave_listener(payload: EventRoomLeavePayload) -> None:
async def room_topic_listener(payload: EventRoomTopicPayload) -> None:
log.info('receive <room-topic> event <%s>', payload)

self.Room.upload_cache(payload.room_id)
room: Room = self.Room.load(payload.room_id)
await room.ready()

Expand Down