reywechat 1.0.40__py3-none-any.whl → 1.0.42__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/rdb.py +18 -88
- reywechat/rlog.py +7 -7
- reywechat/rreceive.py +18 -21
- reywechat/rschedule.py +2 -2
- reywechat/rsend.py +214 -100
- reywechat/rwechat.py +1 -2
- {reywechat-1.0.40.dist-info → reywechat-1.0.42.dist-info}/METADATA +1 -1
- reywechat-1.0.42.dist-info/RECORD +17 -0
- reywechat-1.0.40.dist-info/RECORD +0 -17
- {reywechat-1.0.40.dist-info → reywechat-1.0.42.dist-info}/WHEEL +0 -0
- {reywechat-1.0.40.dist-info → reywechat-1.0.42.dist-info}/licenses/LICENSE +0 -0
reywechat/rdb.py
CHANGED
@@ -19,7 +19,7 @@ from reykit.rwrap import wrap_thread
|
|
19
19
|
|
20
20
|
from .rbase import BaseWeChat
|
21
21
|
from .rreceive import WeChatMessage
|
22
|
-
from .rsend import
|
22
|
+
from .rsend import WeChatSendTypeEnum, WeChatSendParameter
|
23
23
|
from .rwechat import WeChat
|
24
24
|
|
25
25
|
|
@@ -931,22 +931,26 @@ class WeChatDatabase(BaseWeChat):
|
|
931
931
|
|
932
932
|
|
933
933
|
# Define.
|
934
|
-
def sender_handler_update_send_status(
|
934
|
+
def sender_handler_update_send_status(send_param: WeChatSendParameter) -> None:
|
935
935
|
"""
|
936
936
|
Update field `status` of table `message_send`.
|
937
937
|
|
938
938
|
Parameters
|
939
939
|
----------
|
940
|
-
|
940
|
+
send_param : `WeChatSendParameter` instance.
|
941
941
|
"""
|
942
942
|
|
943
|
+
# Check.
|
944
|
+
if send_param.status == send_param.StatusEnum.SENT:
|
945
|
+
throw(TypeError, send_param.send_id)
|
946
|
+
|
943
947
|
# Handle parameter.
|
944
|
-
if
|
948
|
+
if send_param.exc_reports == []:
|
945
949
|
status = 2
|
946
950
|
else:
|
947
951
|
status = 3
|
948
952
|
data = {
|
949
|
-
'send_id':
|
953
|
+
'send_id': send_param.send_id,
|
950
954
|
'status': status,
|
951
955
|
'limit': 1
|
952
956
|
}
|
@@ -1050,7 +1054,7 @@ class WeChatDatabase(BaseWeChat):
|
|
1050
1054
|
# Send.
|
1051
1055
|
for row in table:
|
1052
1056
|
send_id, type_, receive_id, parameter, file_id = row.values()
|
1053
|
-
send_type =
|
1057
|
+
send_type = WeChatSendTypeEnum[type_]
|
1054
1058
|
parameter: dict = json_loads(parameter)
|
1055
1059
|
|
1056
1060
|
## File.
|
@@ -1059,14 +1063,15 @@ class WeChatDatabase(BaseWeChat):
|
|
1059
1063
|
parameter['file_path'] = file_path
|
1060
1064
|
parameter['file_name'] = file_name
|
1061
1065
|
|
1062
|
-
|
1066
|
+
send_param = WeChatSendParameter(
|
1063
1067
|
self.wechat.sender,
|
1064
1068
|
send_type,
|
1065
1069
|
receive_id,
|
1066
1070
|
send_id,
|
1067
1071
|
**parameter
|
1068
1072
|
)
|
1069
|
-
|
1073
|
+
send_param.status = send_param.StatusEnum.WAIT
|
1074
|
+
self.wechat.sender.queue.put(send_param)
|
1070
1075
|
|
1071
1076
|
# Commit.
|
1072
1077
|
conn.commit()
|
@@ -1141,96 +1146,21 @@ class WeChatDatabase(BaseWeChat):
|
|
1141
1146
|
return judge
|
1142
1147
|
|
1143
1148
|
|
1144
|
-
|
1145
|
-
def send(
|
1146
|
-
self,
|
1147
|
-
send_type: Literal[WeChatSendEnum.SEND_TEXT],
|
1148
|
-
receive_id: str,
|
1149
|
-
*,
|
1150
|
-
text: str
|
1151
|
-
) -> None: ...
|
1152
|
-
|
1153
|
-
@overload
|
1154
|
-
def send(
|
1155
|
-
self,
|
1156
|
-
send_type: Literal[WeChatSendEnum.SEND_TEXT_AT],
|
1157
|
-
receive_id: str,
|
1158
|
-
*,
|
1159
|
-
user_id: str | list[str] | Literal['notify@all'],
|
1160
|
-
text: str
|
1161
|
-
) -> None: ...
|
1162
|
-
|
1163
|
-
@overload
|
1164
|
-
def send(
|
1165
|
-
self,
|
1166
|
-
send_type: Literal[WeChatSendEnum.SEND_FILE, WeChatSendEnum.SEND_IMAGE, WeChatSendEnum.SEND_EMOTION],
|
1167
|
-
receive_id: str,
|
1168
|
-
*,
|
1169
|
-
file_path: str,
|
1170
|
-
file_name: str | None = None
|
1171
|
-
) -> None: ...
|
1172
|
-
|
1173
|
-
@overload
|
1174
|
-
def send(
|
1175
|
-
self,
|
1176
|
-
send_type: Literal[WeChatSendEnum.SEND_PAT],
|
1177
|
-
receive_id: str,
|
1178
|
-
*,
|
1179
|
-
user_id: str
|
1180
|
-
) -> None: ...
|
1181
|
-
|
1182
|
-
@overload
|
1183
|
-
def send(
|
1184
|
-
self,
|
1185
|
-
send_type: Literal[WeChatSendEnum.SEND_PUBLIC],
|
1186
|
-
receive_id: str,
|
1187
|
-
*,
|
1188
|
-
page_url: str,
|
1189
|
-
title: str,
|
1190
|
-
text: str | None = None,
|
1191
|
-
image_url: str | None = None,
|
1192
|
-
public_name: str | None = None,
|
1193
|
-
public_id: str | None = None
|
1194
|
-
) -> None: ...
|
1195
|
-
|
1196
|
-
@overload
|
1197
|
-
def send(
|
1198
|
-
self,
|
1199
|
-
send_type: Literal[WeChatSendEnum.SEND_FORWARD],
|
1200
|
-
receive_id: str,
|
1201
|
-
*,
|
1202
|
-
message_id: str
|
1203
|
-
) -> None: ...
|
1204
|
-
|
1205
|
-
def send(
|
1206
|
-
self,
|
1207
|
-
send_type: WeChatSendEnum,
|
1208
|
-
receive_id: str | None = None,
|
1209
|
-
**params: Any
|
1210
|
-
) -> None:
|
1149
|
+
def _insert_send(self, send_param: WeChatSendParameter) -> None:
|
1211
1150
|
"""
|
1212
1151
|
Insert into `wechat.message_send` table of database, wait send.
|
1213
1152
|
|
1214
1153
|
Parameters
|
1215
1154
|
----------
|
1216
|
-
|
1217
|
-
- `Literal[WeChatSendEnum.SEND_TEXT]`: Send text message, use `WeChatClient.send_text`: method.
|
1218
|
-
- `Literal[WeChatSendEnum.SEND_TEXT_AT]`: Send text message with `@`, use `WeChatClient.send_text_at`: method.
|
1219
|
-
- `Literal[WeChatSendEnum.SEND_FILE]`: Send file message, use `WeChatClient.send_file`: method.
|
1220
|
-
- `Literal[WeChatSendEnum.SEND_IMAGE]`: Send image message, use `WeChatClient.send_image`: method.
|
1221
|
-
- `Literal[WeChatSendEnum.SEND_EMOTION]`: Send emotion message, use `WeChatClient.send_emotion`: method.
|
1222
|
-
- `Literal[WeChatSendEnum.SEND_PAT]`: Send pat message, use `WeChatClient.send_pat`: method.
|
1223
|
-
- `Literal[WeChatSendEnum.SEND_PUBLIC]`: Send public account message, use `WeChatClient.send_public`: method.
|
1224
|
-
- `Literal[WeChatSendEnum.SEND_FORWARD]`: Forward message, use `WeChatClient.send_forward`: method.
|
1225
|
-
receive_id : User ID or chat room ID of receive message.
|
1226
|
-
params : Send parameters.
|
1155
|
+
send_param : `WeChatSendParameter` instance.
|
1227
1156
|
"""
|
1228
1157
|
|
1229
1158
|
# Handle parameter.
|
1159
|
+
params = send_param.params.copy()
|
1230
1160
|
data = {
|
1231
1161
|
'status': 0,
|
1232
|
-
'type': send_type,
|
1233
|
-
'receive_id': receive_id,
|
1162
|
+
'type': send_param.send_type,
|
1163
|
+
'receive_id': send_param.receive_id,
|
1234
1164
|
'parameter': params
|
1235
1165
|
}
|
1236
1166
|
|
reywechat/rlog.py
CHANGED
@@ -185,27 +185,27 @@ class WeChatLog(BaseWeChat):
|
|
185
185
|
|
186
186
|
def log_send(
|
187
187
|
self,
|
188
|
-
|
188
|
+
send_param: WeChatSendParameter
|
189
189
|
) -> None:
|
190
190
|
"""
|
191
191
|
Log send message.
|
192
192
|
|
193
193
|
Parameters
|
194
194
|
----------
|
195
|
-
|
195
|
+
send_param : `WeChatSendParameter` instance.
|
196
196
|
"""
|
197
197
|
|
198
198
|
# Generate record.
|
199
|
-
content_print = 'SEND | %-20s' %
|
199
|
+
content_print = 'SEND | %-20s' % send_param.receive_id
|
200
200
|
content_file = 'SEND | %s' % {
|
201
|
-
'receive_id':
|
202
|
-
**
|
201
|
+
'receive_id': send_param.receive_id,
|
202
|
+
**send_param.params
|
203
203
|
}
|
204
|
-
if
|
204
|
+
if send_param.exc_reports == []:
|
205
205
|
level = self.rrlog.INFO
|
206
206
|
else:
|
207
207
|
level = self.rrlog.ERROR
|
208
|
-
exc_report = '\n'.join(
|
208
|
+
exc_report = '\n'.join(send_param.exc_reports)
|
209
209
|
content_print = '%s\n%s' % (content_print, exc_report)
|
210
210
|
content_file = '%s\n%s' % (content_file, exc_report)
|
211
211
|
|
reywechat/rreceive.py
CHANGED
@@ -26,7 +26,7 @@ from reykit.rtime import sleep, wait
|
|
26
26
|
from reykit.rwrap import wrap_thread, wrap_exc
|
27
27
|
|
28
28
|
from .rbase import BaseWeChat, WeChatTriggerError
|
29
|
-
from .rsend import
|
29
|
+
from .rsend import WeChatSendTypeEnum
|
30
30
|
from .rwechat import WeChat
|
31
31
|
|
32
32
|
|
@@ -66,7 +66,7 @@ class WeChatMessage(BaseWeChat):
|
|
66
66
|
WeChat message type.
|
67
67
|
"""
|
68
68
|
|
69
|
-
|
69
|
+
TypeEnum = WeChatSendTypeEnum
|
70
70
|
|
71
71
|
|
72
72
|
def __init__(
|
@@ -935,7 +935,7 @@ class WeChatMessage(BaseWeChat):
|
|
935
935
|
@overload
|
936
936
|
def reply(
|
937
937
|
self,
|
938
|
-
send_type: Literal[
|
938
|
+
send_type: Literal[WeChatSendTypeEnum.TEXT],
|
939
939
|
*,
|
940
940
|
text: str
|
941
941
|
) -> None: ...
|
@@ -943,7 +943,7 @@ class WeChatMessage(BaseWeChat):
|
|
943
943
|
@overload
|
944
944
|
def reply(
|
945
945
|
self,
|
946
|
-
send_type: Literal[
|
946
|
+
send_type: Literal[WeChatSendTypeEnum.TEXT_AT],
|
947
947
|
*,
|
948
948
|
user_id: str | list[str] | Literal['notify@all'],
|
949
949
|
text: str
|
@@ -952,7 +952,7 @@ class WeChatMessage(BaseWeChat):
|
|
952
952
|
@overload
|
953
953
|
def reply(
|
954
954
|
self,
|
955
|
-
send_type: Literal[
|
955
|
+
send_type: Literal[WeChatSendTypeEnum.FILE, WeChatSendTypeEnum.IMAGE, WeChatSendTypeEnum.EMOTION],
|
956
956
|
*,
|
957
957
|
path: str,
|
958
958
|
file_name: str | None = None
|
@@ -961,7 +961,7 @@ class WeChatMessage(BaseWeChat):
|
|
961
961
|
@overload
|
962
962
|
def reply(
|
963
963
|
self,
|
964
|
-
send_type: Literal[
|
964
|
+
send_type: Literal[WeChatSendTypeEnum.PAT],
|
965
965
|
*,
|
966
966
|
user_id: str
|
967
967
|
) -> None: ...
|
@@ -969,7 +969,7 @@ class WeChatMessage(BaseWeChat):
|
|
969
969
|
@overload
|
970
970
|
def reply(
|
971
971
|
self,
|
972
|
-
send_type: Literal[
|
972
|
+
send_type: Literal[WeChatSendTypeEnum.PUBLIC],
|
973
973
|
*,
|
974
974
|
page_url: str,
|
975
975
|
title: str,
|
@@ -982,14 +982,14 @@ class WeChatMessage(BaseWeChat):
|
|
982
982
|
@overload
|
983
983
|
def reply(
|
984
984
|
self,
|
985
|
-
send_type: Literal[
|
985
|
+
send_type: Literal[WeChatSendTypeEnum.FORWARD],
|
986
986
|
*,
|
987
987
|
message_id: str
|
988
988
|
) -> None: ...
|
989
989
|
|
990
990
|
def reply(
|
991
991
|
self,
|
992
|
-
send_type:
|
992
|
+
send_type: WeChatSendTypeEnum,
|
993
993
|
**params: Any
|
994
994
|
) -> None:
|
995
995
|
"""
|
@@ -998,18 +998,15 @@ class WeChatMessage(BaseWeChat):
|
|
998
998
|
Parameters
|
999
999
|
----------
|
1000
1000
|
send_type : Send type.
|
1001
|
-
- `Literal[
|
1002
|
-
- `Literal[
|
1003
|
-
- `Literal[
|
1004
|
-
- `Literal[
|
1005
|
-
- `Literal[
|
1006
|
-
- `Literal[
|
1007
|
-
- `Literal[
|
1008
|
-
- `Literal[
|
1001
|
+
- `Literal[WeChatSendTypeEnum.TEXT]`: Send text message, use `WeChatClient.send_text`: method.
|
1002
|
+
- `Literal[WeChatSendTypeEnum.TEXT_AT]`: Send text message with `@`, use `WeChatClient.send_text_at`: method.
|
1003
|
+
- `Literal[WeChatSendTypeEnum.FILE]`: Send file message, use `WeChatClient.send_file`: method.
|
1004
|
+
- `Literal[WeChatSendTypeEnum.IMAGE]`: Send image message, use `WeChatClient.send_image`: method.
|
1005
|
+
- `Literal[WeChatSendTypeEnum.EMOTION]`: Send emotion message, use `WeChatClient.send_emotion`: method.
|
1006
|
+
- `Literal[WeChatSendTypeEnum.PAT]`: Send pat message, use `WeChatClient.send_pat`: method.
|
1007
|
+
- `Literal[WeChatSendTypeEnum.PUBLIC]`: Send public account message, use `WeChatClient.send_public`: method.
|
1008
|
+
- `Literal[WeChatSendTypeEnum.FORWARD]`: Forward message, use `WeChatClient.send_forward`: method.
|
1009
1009
|
params : Send parameters.
|
1010
|
-
- `Callable`: Use execute return value.
|
1011
|
-
- `Any`: Use this value.
|
1012
|
-
`Key 'file_name'`: Given file name.
|
1013
1010
|
"""
|
1014
1011
|
|
1015
1012
|
# Check.
|
@@ -1036,7 +1033,7 @@ class WechatReceiver(BaseWeChat):
|
|
1036
1033
|
WeChat receiver type.
|
1037
1034
|
"""
|
1038
1035
|
|
1039
|
-
|
1036
|
+
TypeEnum = WeChatSendTypeEnum
|
1040
1037
|
|
1041
1038
|
|
1042
1039
|
def __init__(
|
reywechat/rschedule.py
CHANGED
@@ -15,7 +15,7 @@ from collections.abc import Callable
|
|
15
15
|
from reykit.rschedule import Schedule
|
16
16
|
|
17
17
|
from .rbase import BaseWeChat
|
18
|
-
from .rsend import
|
18
|
+
from .rsend import WeChatSendTypeEnum
|
19
19
|
from .rwechat import WeChat
|
20
20
|
|
21
21
|
|
@@ -24,7 +24,7 @@ class WeChatSchedule(BaseWeChat):
|
|
24
24
|
WeChat schedule type.
|
25
25
|
"""
|
26
26
|
|
27
|
-
|
27
|
+
TypeEnum = WeChatSendTypeEnum
|
28
28
|
|
29
29
|
|
30
30
|
def __init__(
|
reywechat/rsend.py
CHANGED
@@ -17,6 +17,7 @@ from functools import wraps as functools_wraps
|
|
17
17
|
from queue import Queue
|
18
18
|
from re import escape as re_escape
|
19
19
|
from reykit.rbase import throw, catch_exc
|
20
|
+
from reykit.ros import File
|
20
21
|
from reykit.rre import sub
|
21
22
|
from reykit.rtime import sleep
|
22
23
|
from reykit.rwrap import wrap_thread, wrap_exc
|
@@ -26,36 +27,52 @@ from .rwechat import WeChat
|
|
26
27
|
|
27
28
|
|
28
29
|
__all__ = (
|
29
|
-
'
|
30
|
+
'WeChatSendTypeEnum',
|
30
31
|
'WeChatSendParameter',
|
31
32
|
'WeChatSender'
|
32
33
|
)
|
33
34
|
|
34
35
|
|
35
|
-
class
|
36
|
+
class WeChatSendTypeEnum(BaseWeChat, IntEnum):
|
36
37
|
"""
|
37
|
-
WeChat send enumeration type.
|
38
|
+
WeChat send type enumeration type.
|
38
39
|
|
39
40
|
Attributes
|
40
41
|
----------
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
42
|
+
TEXT : Send text message.
|
43
|
+
TEXT_AT : Send text message with @.
|
44
|
+
FILE : Send file message.
|
45
|
+
IMAGE : Send image message.
|
46
|
+
EMOTION : Send emotion message.
|
47
|
+
PAT : Send pat message.
|
48
|
+
PUBLIC : Send public account message.
|
49
|
+
FORWARD : Forward message.
|
49
50
|
"""
|
50
51
|
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
52
|
+
TEXT = 0
|
53
|
+
TEXT_AT = 1
|
54
|
+
FILE = 2
|
55
|
+
IMAGE = 3
|
56
|
+
EMOTION = 4
|
57
|
+
PAT = 5
|
58
|
+
PUBLIC = 6
|
59
|
+
FORWARD = 7
|
60
|
+
|
61
|
+
|
62
|
+
class WeChatSendStatusEnum(BaseWeChat, IntEnum):
|
63
|
+
"""
|
64
|
+
WeChat send status enumeration type.
|
65
|
+
|
66
|
+
Attributes
|
67
|
+
----------
|
68
|
+
INIT : After initialization, before inserting into database queue.
|
69
|
+
WAIT : After get from database queue, before sending.
|
70
|
+
SENT : After sending.
|
71
|
+
"""
|
72
|
+
|
73
|
+
INIT = 0
|
74
|
+
WAIT = 1
|
75
|
+
SENT = 2
|
59
76
|
|
60
77
|
|
61
78
|
class WeChatSendParameter(BaseWeChat):
|
@@ -63,16 +80,17 @@ class WeChatSendParameter(BaseWeChat):
|
|
63
80
|
WeChat send parameters type.
|
64
81
|
"""
|
65
82
|
|
66
|
-
|
83
|
+
TypeEnum = WeChatSendTypeEnum
|
84
|
+
StatusEnum = WeChatSendStatusEnum
|
67
85
|
|
68
86
|
|
69
87
|
@overload
|
70
88
|
def __init__(
|
71
89
|
self,
|
72
90
|
sender: WeChatSender,
|
73
|
-
send_type: Literal[
|
91
|
+
send_type: Literal[WeChatSendTypeEnum.TEXT],
|
74
92
|
receive_id: str,
|
75
|
-
send_id: int,
|
93
|
+
send_id: int | None = None,
|
76
94
|
*,
|
77
95
|
text: str
|
78
96
|
) -> None: ...
|
@@ -81,9 +99,9 @@ class WeChatSendParameter(BaseWeChat):
|
|
81
99
|
def __init__(
|
82
100
|
self,
|
83
101
|
sender: WeChatSender,
|
84
|
-
send_type: Literal[
|
102
|
+
send_type: Literal[WeChatSendTypeEnum.TEXT_AT],
|
85
103
|
receive_id: str,
|
86
|
-
send_id: int,
|
104
|
+
send_id: int | None = None,
|
87
105
|
*,
|
88
106
|
user_id: str | list[str] | Literal['notify@all'],
|
89
107
|
text: str
|
@@ -93,9 +111,9 @@ class WeChatSendParameter(BaseWeChat):
|
|
93
111
|
def __init__(
|
94
112
|
self,
|
95
113
|
sender: WeChatSender,
|
96
|
-
send_type: Literal[
|
114
|
+
send_type: Literal[WeChatSendTypeEnum.FILE, WeChatSendTypeEnum.IMAGE, WeChatSendTypeEnum.EMOTION],
|
97
115
|
receive_id: str,
|
98
|
-
send_id: int,
|
116
|
+
send_id: int | None = None,
|
99
117
|
*,
|
100
118
|
file_path: str,
|
101
119
|
file_name: str
|
@@ -105,9 +123,9 @@ class WeChatSendParameter(BaseWeChat):
|
|
105
123
|
def __init__(
|
106
124
|
self,
|
107
125
|
sender: WeChatSender,
|
108
|
-
send_type: Literal[
|
126
|
+
send_type: Literal[WeChatSendTypeEnum.PAT],
|
109
127
|
receive_id: str,
|
110
|
-
send_id: int,
|
128
|
+
send_id: int | None = None,
|
111
129
|
*,
|
112
130
|
user_id: str
|
113
131
|
) -> None: ...
|
@@ -116,9 +134,9 @@ class WeChatSendParameter(BaseWeChat):
|
|
116
134
|
def __init__(
|
117
135
|
self,
|
118
136
|
sender: WeChatSender,
|
119
|
-
send_type: Literal[
|
137
|
+
send_type: Literal[WeChatSendTypeEnum.PUBLIC],
|
120
138
|
receive_id: str,
|
121
|
-
send_id: int,
|
139
|
+
send_id: int | None = None,
|
122
140
|
*,
|
123
141
|
page_url: str,
|
124
142
|
title: str,
|
@@ -132,9 +150,9 @@ class WeChatSendParameter(BaseWeChat):
|
|
132
150
|
def __init__(
|
133
151
|
self,
|
134
152
|
sender: WeChatSender,
|
135
|
-
send_type: Literal[
|
153
|
+
send_type: Literal[WeChatSendTypeEnum.FORWARD],
|
136
154
|
receive_id: str,
|
137
|
-
send_id: int,
|
155
|
+
send_id: int | None = None,
|
138
156
|
*,
|
139
157
|
message_id: str
|
140
158
|
) -> None: ...
|
@@ -142,9 +160,9 @@ class WeChatSendParameter(BaseWeChat):
|
|
142
160
|
def __init__(
|
143
161
|
self,
|
144
162
|
sender: WeChatSender,
|
145
|
-
send_type:
|
163
|
+
send_type: WeChatSendTypeEnum,
|
146
164
|
receive_id: str,
|
147
|
-
send_id: int,
|
165
|
+
send_id: int | None = None,
|
148
166
|
**params: Any
|
149
167
|
) -> None:
|
150
168
|
"""
|
@@ -154,16 +172,17 @@ class WeChatSendParameter(BaseWeChat):
|
|
154
172
|
----------
|
155
173
|
sender : `WeChatSender` instance.
|
156
174
|
send_type : Send type.
|
157
|
-
- `Literal[
|
158
|
-
- `Literal[
|
159
|
-
- `Literal[
|
160
|
-
- `Literal[
|
161
|
-
- `Literal[
|
162
|
-
- `Literal[
|
163
|
-
- `Literal[
|
164
|
-
- `Literal[
|
175
|
+
- `Literal[WeChatSendTypeEnum.TEXT]`: Send text message, use `WeChatClient.send_text`: method.
|
176
|
+
- `Literal[WeChatSendTypeEnum.TEXT_AT]`: Send text message with `@`, use `WeChatClient.send_text_at`: method.
|
177
|
+
- `Literal[WeChatSendTypeEnum.FILE]`: Send file message, use `WeChatClient.send_file`: method.
|
178
|
+
- `Literal[WeChatSendTypeEnum.IMAGE]`: Send image message, use `WeChatClient.send_image`: method.
|
179
|
+
- `Literal[WeChatSendTypeEnum.EMOTION]`: Send emotion message, use `WeChatClient.send_emotion`: method.
|
180
|
+
- `Literal[WeChatSendTypeEnum.PAT]`: Send pat message, use `WeChatClient.send_pat`: method.
|
181
|
+
- `Literal[WeChatSendTypeEnum.PUBLIC]`: Send public account message, use `WeChatClient.send_public`: method.
|
182
|
+
- `Literal[WeChatSendTypeEnum.FORWARD]`: Forward message, use `WeChatClient.send_forward`: method.
|
165
183
|
receive_id : User ID or chat room ID of receive message.
|
166
184
|
send_id : Send ID of database.
|
185
|
+
- `None`: Not inserted into database.
|
167
186
|
params : Send parameters.
|
168
187
|
"""
|
169
188
|
|
@@ -174,7 +193,7 @@ class WeChatSendParameter(BaseWeChat):
|
|
174
193
|
self.send_id = send_id
|
175
194
|
self.params = params
|
176
195
|
self.exc_reports: list[str] = []
|
177
|
-
self.
|
196
|
+
self.status: WeChatSendStatusEnum
|
178
197
|
|
179
198
|
|
180
199
|
class WeChatSender(BaseWeChat):
|
@@ -183,10 +202,10 @@ class WeChatSender(BaseWeChat):
|
|
183
202
|
|
184
203
|
Attribute
|
185
204
|
---------
|
186
|
-
|
205
|
+
WeChatSendTypeEnum : Send type enumeration.
|
187
206
|
"""
|
188
207
|
|
189
|
-
|
208
|
+
TypeEnum = WeChatSendTypeEnum
|
190
209
|
|
191
210
|
|
192
211
|
def __init__(self, wechat: WeChat) -> None:
|
@@ -215,20 +234,6 @@ class WeChatSender(BaseWeChat):
|
|
215
234
|
"""
|
216
235
|
|
217
236
|
|
218
|
-
# Define.
|
219
|
-
def handle_handler_exception(exc_report, *_) -> None:
|
220
|
-
"""
|
221
|
-
Handle Handler exception.
|
222
|
-
|
223
|
-
Parameters
|
224
|
-
----------
|
225
|
-
exc_report : Exception report text.
|
226
|
-
"""
|
227
|
-
|
228
|
-
# Save.
|
229
|
-
sendparam.exc_reports.append(exc_report)
|
230
|
-
|
231
|
-
|
232
237
|
# Loop.
|
233
238
|
while True:
|
234
239
|
match self.started:
|
@@ -242,16 +247,17 @@ class WeChatSender(BaseWeChat):
|
|
242
247
|
case None:
|
243
248
|
break
|
244
249
|
|
245
|
-
|
250
|
+
send_param = self.queue.get()
|
251
|
+
handle_handler_exception = lambda exc_report, *_: send_param.exc_reports.append(exc_report)
|
246
252
|
|
247
253
|
## Handler.
|
248
254
|
for handler in self.handlers:
|
249
255
|
handler = wrap_exc(handler, handler=handle_handler_exception)
|
250
|
-
handler(
|
256
|
+
handler(send_param)
|
251
257
|
|
252
258
|
## Send.
|
253
259
|
try:
|
254
|
-
self.__send(
|
260
|
+
self.__send(send_param)
|
255
261
|
|
256
262
|
## Exception.
|
257
263
|
except:
|
@@ -260,94 +266,94 @@ class WeChatSender(BaseWeChat):
|
|
260
266
|
exc_report, *_ = catch_exc()
|
261
267
|
|
262
268
|
# Save.
|
263
|
-
|
269
|
+
send_param.exc_reports.append(exc_report)
|
264
270
|
|
265
|
-
|
271
|
+
send_param.status = send_param.StatusEnum.SENT
|
266
272
|
|
267
273
|
## Handler.
|
268
274
|
for handler in self.handlers:
|
269
275
|
handler = wrap_exc(handler, handler=handle_handler_exception)
|
270
|
-
handler(
|
276
|
+
handler(send_param)
|
271
277
|
|
272
278
|
## Log.
|
273
|
-
self.wechat.log.log_send(
|
279
|
+
self.wechat.log.log_send(send_param)
|
274
280
|
|
275
281
|
|
276
282
|
def __send(
|
277
283
|
self,
|
278
|
-
|
284
|
+
send_param: WeChatSendParameter
|
279
285
|
) -> None:
|
280
286
|
"""
|
281
287
|
Send message.
|
282
288
|
|
283
289
|
Parameters
|
284
290
|
----------
|
285
|
-
|
291
|
+
send_param : `WeChatSendParameter` instance.
|
286
292
|
"""
|
287
293
|
|
288
294
|
# Send.
|
289
|
-
match
|
295
|
+
match send_param.send_type:
|
290
296
|
|
291
297
|
## Text.
|
292
|
-
case
|
298
|
+
case WeChatSendTypeEnum.TEXT:
|
293
299
|
self.wechat.client.send_text(
|
294
|
-
|
295
|
-
|
300
|
+
send_param.receive_id,
|
301
|
+
send_param.params['text']
|
296
302
|
)
|
297
303
|
|
298
304
|
## Text with '@'.
|
299
|
-
case
|
305
|
+
case WeChatSendTypeEnum.TEXT_AT:
|
300
306
|
self.wechat.client.send_text_at(
|
301
|
-
|
302
|
-
|
303
|
-
|
307
|
+
send_param.receive_id,
|
308
|
+
send_param.params['user_id'],
|
309
|
+
send_param.params['text']
|
304
310
|
)
|
305
311
|
|
306
312
|
## File.
|
307
|
-
case
|
313
|
+
case WeChatSendTypeEnum.FILE:
|
308
314
|
self.wechat.client.send_file(
|
309
|
-
|
310
|
-
|
315
|
+
send_param.receive_id,
|
316
|
+
send_param.params['file_path']
|
311
317
|
)
|
312
318
|
|
313
319
|
## Image.
|
314
|
-
case
|
320
|
+
case WeChatSendTypeEnum.IMAGE:
|
315
321
|
self.wechat.client.send_image(
|
316
|
-
|
317
|
-
|
322
|
+
send_param.receive_id,
|
323
|
+
send_param.params['file_path']
|
318
324
|
)
|
319
325
|
|
320
326
|
## Emotion.
|
321
|
-
case
|
327
|
+
case WeChatSendTypeEnum.EMOTION:
|
322
328
|
self.wechat.client.send_emotion(
|
323
|
-
|
324
|
-
|
329
|
+
send_param.receive_id,
|
330
|
+
send_param.params['file_path']
|
325
331
|
)
|
326
332
|
|
327
333
|
## Pat.
|
328
|
-
case
|
334
|
+
case WeChatSendTypeEnum.PAT:
|
329
335
|
self.wechat.client.send_pat(
|
330
|
-
|
331
|
-
|
336
|
+
send_param.receive_id,
|
337
|
+
send_param.params['user_id']
|
332
338
|
)
|
333
339
|
|
334
340
|
## Public account.
|
335
|
-
case
|
341
|
+
case WeChatSendTypeEnum.PUBLIC:
|
336
342
|
self.wechat.client.send_public(
|
337
|
-
|
338
|
-
|
339
|
-
|
340
|
-
|
341
|
-
|
342
|
-
|
343
|
-
|
343
|
+
send_param.receive_id,
|
344
|
+
send_param.params['page_url'],
|
345
|
+
send_param.params['title'],
|
346
|
+
send_param.params['text'],
|
347
|
+
send_param.params['image_url'],
|
348
|
+
send_param.params['public_name'],
|
349
|
+
send_param.params['public_id']
|
344
350
|
)
|
345
351
|
|
346
352
|
## Forward.
|
347
|
-
case
|
353
|
+
case WeChatSendTypeEnum.FORWARD:
|
348
354
|
self.wechat.client.send_forward(
|
349
|
-
|
350
|
-
|
355
|
+
send_param.receive_id,
|
356
|
+
send_param.params['message_id']
|
351
357
|
)
|
352
358
|
|
353
359
|
## Throw exception.
|
@@ -355,12 +361,120 @@ class WeChatSender(BaseWeChat):
|
|
355
361
|
throw(ValueError, send_type)
|
356
362
|
|
357
363
|
|
364
|
+
@overload
|
365
|
+
def send(
|
366
|
+
self,
|
367
|
+
send_type: Literal[WeChatSendTypeEnum.TEXT],
|
368
|
+
receive_id: str,
|
369
|
+
*,
|
370
|
+
text: str
|
371
|
+
) -> None: ...
|
372
|
+
|
373
|
+
@overload
|
374
|
+
def send(
|
375
|
+
self,
|
376
|
+
send_type: Literal[WeChatSendTypeEnum.TEXT_AT],
|
377
|
+
receive_id: str,
|
378
|
+
*,
|
379
|
+
user_id: str | list[str] | Literal['notify@all'],
|
380
|
+
text: str
|
381
|
+
) -> None: ...
|
382
|
+
|
383
|
+
@overload
|
384
|
+
def send(
|
385
|
+
self,
|
386
|
+
send_type: Literal[WeChatSendTypeEnum.FILE, WeChatSendTypeEnum.IMAGE, WeChatSendTypeEnum.EMOTION],
|
387
|
+
receive_id: str,
|
388
|
+
*,
|
389
|
+
file_path: str,
|
390
|
+
file_name: str | None = None
|
391
|
+
) -> None: ...
|
392
|
+
|
393
|
+
@overload
|
394
|
+
def send(
|
395
|
+
self,
|
396
|
+
send_type: Literal[WeChatSendTypeEnum.PAT],
|
397
|
+
receive_id: str,
|
398
|
+
*,
|
399
|
+
user_id: str
|
400
|
+
) -> None: ...
|
401
|
+
|
402
|
+
@overload
|
403
|
+
def send(
|
404
|
+
self,
|
405
|
+
send_type: Literal[WeChatSendTypeEnum.PUBLIC],
|
406
|
+
receive_id: str,
|
407
|
+
*,
|
408
|
+
page_url: str,
|
409
|
+
title: str,
|
410
|
+
text: str | None = None,
|
411
|
+
image_url: str | None = None,
|
412
|
+
public_name: str | None = None,
|
413
|
+
public_id: str | None = None
|
414
|
+
) -> None: ...
|
415
|
+
|
416
|
+
@overload
|
417
|
+
def send(
|
418
|
+
self,
|
419
|
+
send_type: Literal[WeChatSendTypeEnum.FORWARD],
|
420
|
+
receive_id: str,
|
421
|
+
*,
|
422
|
+
message_id: str
|
423
|
+
) -> None: ...
|
424
|
+
|
425
|
+
def send(
|
426
|
+
self,
|
427
|
+
send_type: WeChatSendTypeEnum,
|
428
|
+
receive_id: str | None = None,
|
429
|
+
**params: Any
|
430
|
+
) -> None:
|
431
|
+
"""
|
432
|
+
Insert into `wechat.message_send` table of database, wait send.
|
433
|
+
|
434
|
+
Parameters
|
435
|
+
----------
|
436
|
+
send_type : Send type.
|
437
|
+
- `Literal[WeChatSendTypeEnum.TEXT]`: Send text message, use `WeChatClient.send_text`: method.
|
438
|
+
- `Literal[WeChatSendTypeEnum.TEXT_AT]`: Send text message with `@`, use `WeChatClient.send_text_at`: method.
|
439
|
+
- `Literal[WeChatSendTypeEnum.FILE]`: Send file message, use `WeChatClient.send_file`: method.
|
440
|
+
- `Literal[WeChatSendTypeEnum.IMAGE]`: Send image message, use `WeChatClient.send_image`: method.
|
441
|
+
- `Literal[WeChatSendTypeEnum.EMOTION]`: Send emotion message, use `WeChatClient.send_emotion`: method.
|
442
|
+
- `Literal[WeChatSendTypeEnum.PAT]`: Send pat message, use `WeChatClient.send_pat`: method.
|
443
|
+
- `Literal[WeChatSendTypeEnum.PUBLIC]`: Send public account message, use `WeChatClient.send_public`: method.
|
444
|
+
- `Literal[WeChatSendTypeEnum.FORWARD]`: Forward message, use `WeChatClient.send_forward`: method.
|
445
|
+
receive_id : User ID or chat room ID of receive message.
|
446
|
+
params : Send parameters.
|
447
|
+
"""
|
448
|
+
|
449
|
+
# Handle parameter.
|
450
|
+
send_param = WeChatSendParameter(
|
451
|
+
self,
|
452
|
+
WeChatSendTypeEnum[send_type],
|
453
|
+
receive_id,
|
454
|
+
**params
|
455
|
+
)
|
456
|
+
send_param.status = send_param.StatusEnum.INIT
|
457
|
+
handle_handler_exception = lambda exc_report, *_: send_param.exc_reports.append(exc_report)
|
458
|
+
|
459
|
+
# Handler.
|
460
|
+
for handler in self.handlers:
|
461
|
+
handler = wrap_exc(handler, handler=handle_handler_exception)
|
462
|
+
handler(send_param)
|
463
|
+
|
464
|
+
# Insert.
|
465
|
+
self.wechat.database._insert_send(send_param)
|
466
|
+
|
467
|
+
|
358
468
|
def add_handler(
|
359
469
|
self,
|
360
470
|
handler: Callable[[WeChatSendParameter], Any]
|
361
471
|
) -> None:
|
362
472
|
"""
|
363
473
|
Add send handler function.
|
474
|
+
Call at the after initialization, before inserting into database queue.
|
475
|
+
Call at the after get from database queue, before sending.
|
476
|
+
Call at the after sending.
|
477
|
+
Can be use `WeChatSendParameter.status` judge status.
|
364
478
|
|
365
479
|
Parameters
|
366
480
|
----------
|
@@ -475,7 +589,7 @@ class WeChatSender(BaseWeChat):
|
|
475
589
|
)
|
476
590
|
for receive_id in receive_ids:
|
477
591
|
self.send(
|
478
|
-
|
592
|
+
WeChatSendTypeEnum.TEXT,
|
479
593
|
receive_id,
|
480
594
|
text=text
|
481
595
|
)
|
reywechat/rwechat.py
CHANGED
@@ -103,13 +103,12 @@ class WeChat(BaseWeChat):
|
|
103
103
|
|
104
104
|
## Send.
|
105
105
|
self.send_add_handler = self.sender.add_handler
|
106
|
-
self.send = self.
|
106
|
+
self.send = self.sender.send
|
107
107
|
self.send_start = self.sender.start
|
108
108
|
self.send_stop = self.sender.stop
|
109
109
|
self.wrap_try_send = self.sender.wrap_try_send
|
110
110
|
|
111
111
|
## Database.
|
112
|
-
self.send = self.sender.send = self.database.send
|
113
112
|
self.database_build = self.database.build
|
114
113
|
|
115
114
|
## Schedule.
|
@@ -0,0 +1,17 @@
|
|
1
|
+
reywechat/__init__.py,sha256=BL4PUpTguszJ612qsZf4-sOXxRIsiYRQ_m__FGMd1RQ,513
|
2
|
+
reywechat/rall.py,sha256=zEW-mLL2uP8aT2_foCMFGmMi_3RCrGl8qutnSVkmY1E,397
|
3
|
+
reywechat/rbase.py,sha256=0NunIUIXra2ML2N6odwMk5oENTE0r6VSBHWXUvgI-lc,1124
|
4
|
+
reywechat/rcache.py,sha256=Hh_HE-t_KUMlrz4gEFPh1AjmhnrSgH520IFJPumWb7A,908
|
5
|
+
reywechat/rclient.py,sha256=MEvQB3pHb5ORukKbKntalRtFcKIOP9BGtDsMt5ihQfM,22524
|
6
|
+
reywechat/rdb.py,sha256=x7wTvE7G4-FJQkZbPHiV4jSchki7RlJFnQPtGzqi4CI,39703
|
7
|
+
reywechat/rlog.py,sha256=IJL2WquiOYfB9iEai9xjojkuxPxiRHkdzZ5vCeaSA98,5261
|
8
|
+
reywechat/rreceive.py,sha256=40l3n_d1BcT2EhxIYOlOnzrSQkJ8WDI_qPvJcU7CSQU,35018
|
9
|
+
reywechat/rschedule.py,sha256=X9kreXdClTeItJHmNPJNqb_lct-BiLCyusMQxsj5hWU,1865
|
10
|
+
reywechat/rsend.py,sha256=0rAxVj895QrSxkziT3rqiQBKnOiDv8VFcIaCwoTPxb4,17644
|
11
|
+
reywechat/rtrigger.py,sha256=n8kUNovh62r7crlXrp33uaKvbILT-wcfvUqeyGt7YhM,4956
|
12
|
+
reywechat/rwechat.py,sha256=OcElINAi9jM-eDb_OTtseBW3kyG_3jD4V4QmltR6MeE,4874
|
13
|
+
reywechat/data/client_api.dll,sha256=H9uj-x9Ztg0jFZK0yY6NsnyH5_119dQRFfoVVMidxRs,592384
|
14
|
+
reywechat-1.0.42.dist-info/METADATA,sha256=w-XwNxmNdI9E-iJb0WAG7UHeDkZWaK_GNmGPDZRxtGo,1551
|
15
|
+
reywechat-1.0.42.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
16
|
+
reywechat-1.0.42.dist-info/licenses/LICENSE,sha256=UYLPqp7BvPiH8yEZduJqmmyEl6hlM3lKrFIefiD4rvk,1059
|
17
|
+
reywechat-1.0.42.dist-info/RECORD,,
|
@@ -1,17 +0,0 @@
|
|
1
|
-
reywechat/__init__.py,sha256=BL4PUpTguszJ612qsZf4-sOXxRIsiYRQ_m__FGMd1RQ,513
|
2
|
-
reywechat/rall.py,sha256=zEW-mLL2uP8aT2_foCMFGmMi_3RCrGl8qutnSVkmY1E,397
|
3
|
-
reywechat/rbase.py,sha256=0NunIUIXra2ML2N6odwMk5oENTE0r6VSBHWXUvgI-lc,1124
|
4
|
-
reywechat/rcache.py,sha256=Hh_HE-t_KUMlrz4gEFPh1AjmhnrSgH520IFJPumWb7A,908
|
5
|
-
reywechat/rclient.py,sha256=MEvQB3pHb5ORukKbKntalRtFcKIOP9BGtDsMt5ihQfM,22524
|
6
|
-
reywechat/rdb.py,sha256=ETy7EZFDBK6nUmtJFNV6kSfSKMnMiLBO771RA89jVqY,41912
|
7
|
-
reywechat/rlog.py,sha256=x4WFLNoeKqGjPVoI81ZZNEd9ctdYToSg5hEFuESmCQY,5254
|
8
|
-
reywechat/rreceive.py,sha256=RkUwPsWz6k_Ua3ovrbXRMVajeNOJQqvpPXz_CvJyUPQ,35162
|
9
|
-
reywechat/rschedule.py,sha256=bZEEZV3K4zrJvupe1Eq6kGR7kunbVq5dfGnqFKYF3JI,1857
|
10
|
-
reywechat/rsend.py,sha256=UmdKCOb1cPKEmBPHt9htjxB8fPyi5jW5pGwpRQIZdKA,13720
|
11
|
-
reywechat/rtrigger.py,sha256=n8kUNovh62r7crlXrp33uaKvbILT-wcfvUqeyGt7YhM,4956
|
12
|
-
reywechat/rwechat.py,sha256=xkHQUUXDEqq4Q_DHF6vc3Dd33A8oOCkKyJN7v7p2leM,4935
|
13
|
-
reywechat/data/client_api.dll,sha256=H9uj-x9Ztg0jFZK0yY6NsnyH5_119dQRFfoVVMidxRs,592384
|
14
|
-
reywechat-1.0.40.dist-info/METADATA,sha256=5MJCWQ_8cNLimLjDz3zhGJvWaredMvtBtAFiJWF50ok,1551
|
15
|
-
reywechat-1.0.40.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
16
|
-
reywechat-1.0.40.dist-info/licenses/LICENSE,sha256=UYLPqp7BvPiH8yEZduJqmmyEl6hlM3lKrFIefiD4rvk,1059
|
17
|
-
reywechat-1.0.40.dist-info/RECORD,,
|
File without changes
|
File without changes
|