Skip to content

Commit

Permalink
update custom apscheduler
Browse files Browse the repository at this point in the history
  • Loading branch information
wj-Mcat committed Nov 20, 2022
1 parent da19552 commit 842834a
Show file tree
Hide file tree
Showing 3 changed files with 41 additions and 9 deletions.
38 changes: 30 additions & 8 deletions src/wechaty/fake_puppet.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
import asyncio
from uuid import uuid4
import random
from collections import defaultdict

from wechaty_puppet.file_box import FileBox

Expand Down Expand Up @@ -69,7 +70,7 @@ class FakeMessageManagerMixin:
def __init__(self) -> None:
"""_summary_
"""
super().__init__(self)
super().__init__()

self._message_payloads: Dict[str, MessagePayload] = {}

Expand Down Expand Up @@ -118,11 +119,12 @@ class FakeRoomManagerMixin:
def __init__(self) -> None:
"""_summary_
"""
super().__init__(self)
super().__init__()

self._room_payloads: Dict[str, RoomPayload] = {}
self._room_payloads: Dict[str, RoomPayload] = defaultdict(RoomPayload)
self._room_member_payloads: Dict[str, List[RoomMemberPayload]] = defaultdict(list)

def get_all_fake_messages(self) -> List[RoomPayload]:
def get_all_fake_rooms(self) -> List[RoomPayload]:
"""_summary_
Returns:
Expand All @@ -148,7 +150,24 @@ def get_fake_room(self, room_id: str) -> Optional[RoomPayload]:
Optional[RoomPayload]: _description_
"""
return self._room_payloads.get(room_id, None)


def add_fake_room_members(self, room_id: str, members: List[RoomMemberPayload]):
"""add fake room members
Args:
room_id (str): the id of room
members (List[RoomMemberPayload]): the members info of the room
"""
if room_id not in self._room_payloads:
raise ValueError(f"room<{room_id}> not found")
room_payload = self._room_payloads[room_id]
room_payload.member_ids = list(
set(room_payload.member_ids + [member.id for member in members])
)

for member in members:
self._room_member_payloads[member.id] = member

def remove_fake_room(self, room_id: str):
"""_summary_
Expand All @@ -167,7 +186,7 @@ class FakeContactManagerMixin:
def __init__(self) -> None:
"""_summary_
"""
super().__init__(self)
super().__init__()

self._contact_payloads: Dict[str, ContactPayload] = {}

Expand Down Expand Up @@ -221,10 +240,12 @@ def __init__(self, options: PuppetOptions, name: str = 'puppet') -> None:
options (PuppetOptions): _description_
name (str, optional): _description_. Defaults to 'puppet'.
"""
super().__init__(options, name)
super().__init__(options=options, name=name)
self.name: str = name
self.options = options
self.emitter = AsyncIOEventEmitter()

self.login_user_id = self.add_random_fake_contact()

def add_random_fake_contact_message(
self,
Expand Down Expand Up @@ -576,6 +597,7 @@ def self_id(self) -> str:
"""
get self_id
"""
return self.login_user_id

async def friendship_search(self, weixin: Optional[str] = None,
phone: Optional[str] = None
Expand Down Expand Up @@ -725,7 +747,7 @@ async def room_member_payload(
"""
get room member payload
"""
return self.get_fake_contact(contact_id)
return self._room_member_payloads.pop(contact_id, None)

async def room_avatar(self, room_id: str) -> FileBox:
"""
Expand Down
9 changes: 9 additions & 0 deletions src/wechaty/plugin.py
Original file line number Diff line number Diff line change
Expand Up @@ -594,6 +594,7 @@ def __init__(

if scheduler_options is None:
scheduler_options = WechatySchedulerOptions()
self.scheduler_options = scheduler_options

if isinstance(scheduler_options, WechatySchedulerOptions):
scheduler = AsyncIOScheduler()
Expand All @@ -604,6 +605,14 @@ def __init__(

scheduler.add_jobstore(
scheduler_options.job_store, scheduler_options.job_store_alias)
elif isinstance(scheduler_options, AsyncIOScheduler):
scheduler = scheduler_options
else:
raise ValueError(
"the value type of scheduler_options should be one of "
"WechatySchedulerOptions or AsyncIOScheduler"
)

self.scheduler: AsyncIOScheduler = scheduler

self.static_file_cacher = StaticFileCacher([
Expand Down
3 changes: 2 additions & 1 deletion src/wechaty/wechaty.py
Original file line number Diff line number Diff line change
Expand Up @@ -200,7 +200,8 @@ def __init__(self, options: Optional[WechatyOptions] = None):
self._puppet: Puppet = options.puppet
self._plugin_manager: WechatyPluginManager = WechatyPluginManager(
self,
(options.host, options.port)
(options.host, options.port),
scheduler_options=options.scheduler
)

@property
Expand Down

0 comments on commit 842834a

Please sign in to comment.