Skip to content

Commit 842834a

Browse files
committed
update custom apscheduler
1 parent da19552 commit 842834a

File tree

3 files changed

+41
-9
lines changed

3 files changed

+41
-9
lines changed

src/wechaty/fake_puppet.py

Lines changed: 30 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import asyncio
2626
from uuid import uuid4
2727
import random
28+
from collections import defaultdict
2829

2930
from 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
"""

src/wechaty/plugin.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -594,6 +594,7 @@ def __init__(
594594

595595
if scheduler_options is None:
596596
scheduler_options = WechatySchedulerOptions()
597+
self.scheduler_options = scheduler_options
597598

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

605606
scheduler.add_jobstore(
606607
scheduler_options.job_store, scheduler_options.job_store_alias)
608+
elif isinstance(scheduler_options, AsyncIOScheduler):
609+
scheduler = scheduler_options
610+
else:
611+
raise ValueError(
612+
"the value type of scheduler_options should be one of "
613+
"WechatySchedulerOptions or AsyncIOScheduler"
614+
)
615+
607616
self.scheduler: AsyncIOScheduler = scheduler
608617

609618
self.static_file_cacher = StaticFileCacher([

src/wechaty/wechaty.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -200,7 +200,8 @@ def __init__(self, options: Optional[WechatyOptions] = None):
200200
self._puppet: Puppet = options.puppet
201201
self._plugin_manager: WechatyPluginManager = WechatyPluginManager(
202202
self,
203-
(options.host, options.port)
203+
(options.host, options.port),
204+
scheduler_options=options.scheduler
204205
)
205206

206207
@property

0 commit comments

Comments
 (0)