reywechat 1.0.45__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 CHANGED
@@ -79,9 +79,7 @@ class WeChatMessage(BaseWeChat):
79
79
  type_: int,
80
80
  display: str,
81
81
  data: str,
82
- user: str | None = None,
83
- room: str | None = None,
84
- file: MessageParameterFile | None = None
82
+ window: str
85
83
  ) -> None:
86
84
  """
87
85
  Build instance attributes.
@@ -95,19 +93,7 @@ class WeChatMessage(BaseWeChat):
95
93
  type : Message type.
96
94
  display : Message description text.
97
95
  data : Message source data.
98
- user : Message sender user ID.
99
- - `None`: System message.
100
- - `str`: User messages.
101
- room : Message chat room ID.
102
- - `None`: Private chat.
103
- - `str`: Chat room chat.
104
- file : Message file information.
105
- - `None`: Non file message.
106
- - `dict`: File message.
107
- `Key 'path'`: File path.
108
- `Key 'name'`: File name.
109
- `Key 'md5'`: File MD5.
110
- `Key 'size'`: File byte size.
96
+ window : Message sende window ID.
111
97
  """
112
98
 
113
99
  # Import.
@@ -121,9 +107,26 @@ class WeChatMessage(BaseWeChat):
121
107
  self.type = type_
122
108
  self.display = display
123
109
  self.data = data
124
- self.user = user
125
- self.room = room
126
- self.file = file
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.
127
130
  self._window: str | None = None
128
131
  self._user_name: str | None = None
129
132
  self._room_name: str | None = None
@@ -136,6 +139,8 @@ class WeChatMessage(BaseWeChat):
136
139
  self._is_at_self: bool | None = None
137
140
  self._is_call: bool | None = None
138
141
  self._call_text: str | None = None
142
+ self._is_call_next: bool | None = None
143
+ self._is_last_call: bool | None = None
139
144
  self._is_new_user: bool | None = None
140
145
  self._is_new_room: bool | None = None
141
146
  self._is_new_room_user: bool | None = None
@@ -150,11 +155,9 @@ class WeChatMessage(BaseWeChat):
150
155
  self._is_app: bool | None = None
151
156
  self._app_params: dict | None = None
152
157
  self._valid: bool | None = None
153
- self.trigger_rule: TriggerRule | None = None
154
- self.trigger_continue = self.receiver.trigger.continue_
155
- self.trigger_break = self.receiver.trigger.break_
156
- self.replied: bool = False
157
- self.exc_reports: list[str] = []
158
+
159
+ ## Update call.
160
+ self.is_call
158
161
 
159
162
 
160
163
  @property
@@ -198,29 +201,6 @@ class WeChatMessage(BaseWeChat):
198
201
  return params_str
199
202
 
200
203
 
201
- @property
202
- def window(self) -> str:
203
- """
204
- Message sender window ID.
205
-
206
- Returns
207
- -------
208
- Window ID.
209
- """
210
-
211
- # Cache.
212
- if self._window is not None:
213
- return self._window
214
-
215
- # Set.
216
- if self.room is None:
217
- self._window = self.user
218
- else:
219
- self._window = self.room
220
-
221
- return self._window
222
-
223
-
224
204
  @property
225
205
  def user_name(self) -> str:
226
206
  """
@@ -507,8 +487,11 @@ class WeChatMessage(BaseWeChat):
507
487
  # Judge.
508
488
  if (
509
489
 
490
+ ## Last call.
491
+ self.is_last_call
492
+
510
493
  ## Private chat.
511
- self.room is None
494
+ or self.room is None
512
495
 
513
496
  ## At self.
514
497
  or is_at_self
@@ -522,31 +505,25 @@ class WeChatMessage(BaseWeChat):
522
505
  ):
523
506
  is_call = True
524
507
  call_text = text
525
-
526
- ## Call next.
527
- elif (
528
- self.room is not None
529
- and (value := f'{self.room}_{self.user}') in self.receiver.call_next_mark
530
- ):
531
- self.receiver.call_next_mark.remove(value)
532
- is_call = True
533
- call_text = text
534
-
535
508
  else:
536
509
  is_call = False
537
510
  call_text = None
538
511
 
539
- # Call next.
540
- if (
541
- is_call
512
+ ## Call next.
513
+ is_call_next = (
514
+ self.room is not None
515
+ and is_call
542
516
  and call_text is None
543
- and self.room is not None
544
- ):
545
- value = f'{self.room}_{self.user}'
546
- self.receiver.call_next_mark(value)
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)
547
523
 
548
524
  self._is_call = is_call
549
525
  self._call_text = call_text
526
+ self._is_call_next = is_call_next
550
527
 
551
528
  return self._is_call
552
529
 
@@ -572,6 +549,52 @@ class WeChatMessage(BaseWeChat):
572
549
  return self._call_text
573
550
 
574
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
+
575
598
  @property
576
599
  def is_new_user(self) -> bool:
577
600
  """
@@ -1171,7 +1194,6 @@ class WechatReceiver(BaseWeChat):
1171
1194
 
1172
1195
  # Set parameter.
1173
1196
  handlers = [
1174
- self.__receiver_handler_room,
1175
1197
  self.__receiver_handler_file,
1176
1198
  *self.handlers
1177
1199
  ]
@@ -1241,31 +1263,6 @@ class WechatReceiver(BaseWeChat):
1241
1263
  self.handlers.append(handler)
1242
1264
 
1243
1265
 
1244
- def __receiver_handler_room(
1245
- self,
1246
- message: WeChatMessage
1247
- ) -> None:
1248
- """
1249
- Handle room message.
1250
- """
1251
-
1252
- # Break.
1253
- if (
1254
- type(message.user) != str
1255
- or not message.user.endswith('chatroom')
1256
- ):
1257
- return
1258
-
1259
- # Set attribute.
1260
- message.room = message.user
1261
- if ':\n' in message.data:
1262
- user, data = message.data.split(':\n', 1)
1263
- message.user = user
1264
- message.data = data
1265
- else:
1266
- message.user = None
1267
-
1268
-
1269
1266
  def __receiver_handler_file(
1270
1267
  self,
1271
1268
  message: WeChatMessage
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: reywechat
3
- Version: 1.0.45
3
+ Version: 1.0.46
4
4
  Summary: WeChat method set.
5
5
  Project-URL: homepage, https://github.com/reyxbo/reywechat/
6
6
  Author-email: Rey <reyxbo@163.com>
@@ -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=KviaL3yODlCxc7muCoosk5N0V5_aJYEGQQJNZeOvbYI,35627
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.45.dist-info/METADATA,sha256=yLokP8GcJTizmArK9zQ7n30AZ_2f2L6gffRnxa0x2aY,1551
15
- reywechat-1.0.45.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
16
- reywechat-1.0.45.dist-info/licenses/LICENSE,sha256=UYLPqp7BvPiH8yEZduJqmmyEl6hlM3lKrFIefiD4rvk,1059
17
- reywechat-1.0.45.dist-info/RECORD,,
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,,