reywechat 1.0.44__py3-none-any.whl → 1.0.46__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- reywechat/rreceive.py +93 -75
- {reywechat-1.0.44.dist-info → reywechat-1.0.46.dist-info}/METADATA +1 -1
- {reywechat-1.0.44.dist-info → reywechat-1.0.46.dist-info}/RECORD +5 -5
- {reywechat-1.0.44.dist-info → reywechat-1.0.46.dist-info}/WHEEL +0 -0
- {reywechat-1.0.44.dist-info → reywechat-1.0.46.dist-info}/licenses/LICENSE +0 -0
reywechat/rreceive.py
CHANGED
@@ -18,6 +18,7 @@ from bs4 import BeautifulSoup as BSBeautifulSoup
|
|
18
18
|
from bs4.element import Tag as BSTag
|
19
19
|
from reykit.rbase import throw
|
20
20
|
from reykit.rimage import decode_qrcode
|
21
|
+
from reykit.rlog import Mark
|
21
22
|
from reykit.rnet import listen_socket
|
22
23
|
from reykit.ros import File, os_exists
|
23
24
|
from reykit.rre import search, search_batch, findall
|
@@ -78,9 +79,7 @@ class WeChatMessage(BaseWeChat):
|
|
78
79
|
type_: int,
|
79
80
|
display: str,
|
80
81
|
data: str,
|
81
|
-
|
82
|
-
room: str | None = None,
|
83
|
-
file: MessageParameterFile | None = None
|
82
|
+
window: str
|
84
83
|
) -> None:
|
85
84
|
"""
|
86
85
|
Build instance attributes.
|
@@ -94,19 +93,7 @@ class WeChatMessage(BaseWeChat):
|
|
94
93
|
type : Message type.
|
95
94
|
display : Message description text.
|
96
95
|
data : Message source data.
|
97
|
-
|
98
|
-
- `None`: System message.
|
99
|
-
- `str`: User messages.
|
100
|
-
room : Message chat room ID.
|
101
|
-
- `None`: Private chat.
|
102
|
-
- `str`: Chat room chat.
|
103
|
-
file : Message file information.
|
104
|
-
- `None`: Non file message.
|
105
|
-
- `dict`: File message.
|
106
|
-
`Key 'path'`: File path.
|
107
|
-
`Key 'name'`: File name.
|
108
|
-
`Key 'md5'`: File MD5.
|
109
|
-
`Key 'size'`: File byte size.
|
96
|
+
window : Message sende window ID.
|
110
97
|
"""
|
111
98
|
|
112
99
|
# Import.
|
@@ -120,9 +107,26 @@ class WeChatMessage(BaseWeChat):
|
|
120
107
|
self.type = type_
|
121
108
|
self.display = display
|
122
109
|
self.data = data
|
123
|
-
self.
|
124
|
-
self.
|
125
|
-
self.
|
110
|
+
self.window = window
|
111
|
+
self.file: MessageParameterFile | None = None
|
112
|
+
self.trigger_rule: TriggerRule | None = None
|
113
|
+
self.trigger_continue = self.receiver.trigger.continue_
|
114
|
+
self.trigger_break = self.receiver.trigger.break_
|
115
|
+
self.replied: bool = False
|
116
|
+
self.exc_reports: list[str] = []
|
117
|
+
|
118
|
+
## Room and user.
|
119
|
+
if self.window.endswith('chatroom'):
|
120
|
+
self.room = self.window
|
121
|
+
if ':\n' in self.data:
|
122
|
+
self.user, self.data = self.data.split(':\n', 1)
|
123
|
+
else:
|
124
|
+
self.user = None
|
125
|
+
else:
|
126
|
+
self.room = None
|
127
|
+
self.user = self.window
|
128
|
+
|
129
|
+
## Cache.
|
126
130
|
self._window: str | None = None
|
127
131
|
self._user_name: str | None = None
|
128
132
|
self._room_name: str | None = None
|
@@ -135,6 +139,8 @@ class WeChatMessage(BaseWeChat):
|
|
135
139
|
self._is_at_self: bool | None = None
|
136
140
|
self._is_call: bool | None = None
|
137
141
|
self._call_text: str | None = None
|
142
|
+
self._is_call_next: bool | None = None
|
143
|
+
self._is_last_call: bool | None = None
|
138
144
|
self._is_new_user: bool | None = None
|
139
145
|
self._is_new_room: bool | None = None
|
140
146
|
self._is_new_room_user: bool | None = None
|
@@ -149,11 +155,9 @@ class WeChatMessage(BaseWeChat):
|
|
149
155
|
self._is_app: bool | None = None
|
150
156
|
self._app_params: dict | None = None
|
151
157
|
self._valid: bool | None = None
|
152
|
-
|
153
|
-
|
154
|
-
self.
|
155
|
-
self.replied: bool = False
|
156
|
-
self.exc_reports: list[str] = []
|
158
|
+
|
159
|
+
## Update call.
|
160
|
+
self.is_call
|
157
161
|
|
158
162
|
|
159
163
|
@property
|
@@ -197,29 +201,6 @@ class WeChatMessage(BaseWeChat):
|
|
197
201
|
return params_str
|
198
202
|
|
199
203
|
|
200
|
-
@property
|
201
|
-
def window(self) -> str:
|
202
|
-
"""
|
203
|
-
Message sender window ID.
|
204
|
-
|
205
|
-
Returns
|
206
|
-
-------
|
207
|
-
Window ID.
|
208
|
-
"""
|
209
|
-
|
210
|
-
# Cache.
|
211
|
-
if self._window is not None:
|
212
|
-
return self._window
|
213
|
-
|
214
|
-
# Set.
|
215
|
-
if self.room is None:
|
216
|
-
self._window = self.user
|
217
|
-
else:
|
218
|
-
self._window = self.room
|
219
|
-
|
220
|
-
return self._window
|
221
|
-
|
222
|
-
|
223
204
|
@property
|
224
205
|
def user_name(self) -> str:
|
225
206
|
"""
|
@@ -499,15 +480,18 @@ class WeChatMessage(BaseWeChat):
|
|
499
480
|
result: str | None = search(pattern, text)
|
500
481
|
if result is not None:
|
501
482
|
is_call_name = True
|
502
|
-
text = result
|
483
|
+
text = result or None
|
503
484
|
else:
|
504
485
|
is_call_name = False
|
505
486
|
|
506
487
|
# Judge.
|
507
488
|
if (
|
508
489
|
|
490
|
+
## Last call.
|
491
|
+
self.is_last_call
|
492
|
+
|
509
493
|
## Private chat.
|
510
|
-
self.room is None
|
494
|
+
or self.room is None
|
511
495
|
|
512
496
|
## At self.
|
513
497
|
or is_at_self
|
@@ -525,8 +509,21 @@ class WeChatMessage(BaseWeChat):
|
|
525
509
|
is_call = False
|
526
510
|
call_text = None
|
527
511
|
|
512
|
+
## Call next.
|
513
|
+
is_call_next = (
|
514
|
+
self.room is not None
|
515
|
+
and is_call
|
516
|
+
and call_text is None
|
517
|
+
)
|
518
|
+
|
519
|
+
### Mark.
|
520
|
+
if is_call_next:
|
521
|
+
call_next_mark_value = f'{self.user}_{self.room}'
|
522
|
+
self.receiver.call_next_mark(call_next_mark_value)
|
523
|
+
|
528
524
|
self._is_call = is_call
|
529
525
|
self._call_text = call_text
|
526
|
+
self._is_call_next = is_call_next
|
530
527
|
|
531
528
|
return self._is_call
|
532
529
|
|
@@ -552,6 +549,52 @@ class WeChatMessage(BaseWeChat):
|
|
552
549
|
return self._call_text
|
553
550
|
|
554
551
|
|
552
|
+
@property
|
553
|
+
def is_call_next(self) -> str:
|
554
|
+
"""
|
555
|
+
Whether if is message of call next message.
|
556
|
+
|
557
|
+
Returns
|
558
|
+
-------
|
559
|
+
Judge result.
|
560
|
+
"""
|
561
|
+
|
562
|
+
# Cache.
|
563
|
+
if self._is_call_next is not None:
|
564
|
+
return self._is_call_next
|
565
|
+
|
566
|
+
# Judge.
|
567
|
+
self.is_call
|
568
|
+
|
569
|
+
return self._is_call_next
|
570
|
+
|
571
|
+
|
572
|
+
@property
|
573
|
+
def is_last_call(self) -> str:
|
574
|
+
"""
|
575
|
+
Whether if is message of last message call this time.
|
576
|
+
|
577
|
+
Returns
|
578
|
+
-------
|
579
|
+
Judge result.
|
580
|
+
"""
|
581
|
+
|
582
|
+
# Cache.
|
583
|
+
if self._is_last_call is not None:
|
584
|
+
return self._is_last_call
|
585
|
+
|
586
|
+
# Judge.
|
587
|
+
call_next_mark_value = f'{self.user}_{self.room}'
|
588
|
+
self._is_last_call = call_next_mark_value in self.receiver.call_next_mark
|
589
|
+
|
590
|
+
# Mark.
|
591
|
+
if self._is_last_call:
|
592
|
+
call_next_mark_value = f'{self.user}_{self.room}'
|
593
|
+
self.receiver.call_next_mark.remove(call_next_mark_value)
|
594
|
+
|
595
|
+
return self.is_last_call
|
596
|
+
|
597
|
+
|
555
598
|
@property
|
556
599
|
def is_new_user(self) -> bool:
|
557
600
|
"""
|
@@ -1064,6 +1107,7 @@ class WechatReceiver(BaseWeChat):
|
|
1064
1107
|
self.queue: Queue[WeChatMessage] = Queue()
|
1065
1108
|
self.handlers: list[Callable[[WeChatMessage], Any]] = []
|
1066
1109
|
self.started: bool | None = False
|
1110
|
+
self.call_next_mark = Mark()
|
1067
1111
|
self.trigger = WeChatTrigger(self)
|
1068
1112
|
|
1069
1113
|
# Start.
|
@@ -1150,7 +1194,6 @@ class WechatReceiver(BaseWeChat):
|
|
1150
1194
|
|
1151
1195
|
# Set parameter.
|
1152
1196
|
handlers = [
|
1153
|
-
self.__receiver_handler_room,
|
1154
1197
|
self.__receiver_handler_file,
|
1155
1198
|
*self.handlers
|
1156
1199
|
]
|
@@ -1220,31 +1263,6 @@ class WechatReceiver(BaseWeChat):
|
|
1220
1263
|
self.handlers.append(handler)
|
1221
1264
|
|
1222
1265
|
|
1223
|
-
def __receiver_handler_room(
|
1224
|
-
self,
|
1225
|
-
message: WeChatMessage
|
1226
|
-
) -> None:
|
1227
|
-
"""
|
1228
|
-
Handle room message.
|
1229
|
-
"""
|
1230
|
-
|
1231
|
-
# Break.
|
1232
|
-
if (
|
1233
|
-
type(message.user) != str
|
1234
|
-
or not message.user.endswith('chatroom')
|
1235
|
-
):
|
1236
|
-
return
|
1237
|
-
|
1238
|
-
# Set attribute.
|
1239
|
-
message.room = message.user
|
1240
|
-
if ':\n' in message.data:
|
1241
|
-
user, data = message.data.split(':\n', 1)
|
1242
|
-
message.user = user
|
1243
|
-
message.data = data
|
1244
|
-
else:
|
1245
|
-
message.user = None
|
1246
|
-
|
1247
|
-
|
1248
1266
|
def __receiver_handler_file(
|
1249
1267
|
self,
|
1250
1268
|
message: WeChatMessage
|
@@ -5,13 +5,13 @@ reywechat/rcache.py,sha256=Hh_HE-t_KUMlrz4gEFPh1AjmhnrSgH520IFJPumWb7A,908
|
|
5
5
|
reywechat/rclient.py,sha256=MEvQB3pHb5ORukKbKntalRtFcKIOP9BGtDsMt5ihQfM,22524
|
6
6
|
reywechat/rdb.py,sha256=akIQsx4CZIt-H6kXWn2vpUYjo5MgD8MluzBMnSdmLaM,40051
|
7
7
|
reywechat/rlog.py,sha256=IJL2WquiOYfB9iEai9xjojkuxPxiRHkdzZ5vCeaSA98,5261
|
8
|
-
reywechat/rreceive.py,sha256=
|
8
|
+
reywechat/rreceive.py,sha256=zANspJOxn2sQLW0CdA-vFsIeqG1OuVwDyytGM5LxQvQ,35483
|
9
9
|
reywechat/rschedule.py,sha256=X9kreXdClTeItJHmNPJNqb_lct-BiLCyusMQxsj5hWU,1865
|
10
10
|
reywechat/rsend.py,sha256=GfCv5O1-81r-o-RLzMMW_MQE99KwO9gZ3-93HaJ97W8,17595
|
11
11
|
reywechat/rtrigger.py,sha256=n8kUNovh62r7crlXrp33uaKvbILT-wcfvUqeyGt7YhM,4956
|
12
12
|
reywechat/rwechat.py,sha256=OcElINAi9jM-eDb_OTtseBW3kyG_3jD4V4QmltR6MeE,4874
|
13
13
|
reywechat/data/client_api.dll,sha256=H9uj-x9Ztg0jFZK0yY6NsnyH5_119dQRFfoVVMidxRs,592384
|
14
|
-
reywechat-1.0.
|
15
|
-
reywechat-1.0.
|
16
|
-
reywechat-1.0.
|
17
|
-
reywechat-1.0.
|
14
|
+
reywechat-1.0.46.dist-info/METADATA,sha256=R7vaJAjsObdA7VXgbOaB-Sj4k8kasY9i5EJhSg564JQ,1551
|
15
|
+
reywechat-1.0.46.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
16
|
+
reywechat-1.0.46.dist-info/licenses/LICENSE,sha256=UYLPqp7BvPiH8yEZduJqmmyEl6hlM3lKrFIefiD4rvk,1059
|
17
|
+
reywechat-1.0.46.dist-info/RECORD,,
|
File without changes
|
File without changes
|