6
6
7
7
from WechatAPI import WechatAPIClient
8
8
from WechatAPI .Client .protect import protector
9
+ from database .messsagDB import MessageDB
9
10
from utils .event_manager import EventManager
10
11
11
12
@@ -26,6 +27,8 @@ def __init__(self, bot_client: WechatAPIClient):
26
27
self .whitelist = main_config .get ("XYBot" , {}).get ("whitelist" , [])
27
28
self .blacklist = main_config .get ("XYBot" , {}).get ("blacklist" , [])
28
29
30
+ self .msg_db = MessageDB ()
31
+
29
32
30
33
def update_profile (self , wxid : str , nickname : str , alias : str , phone : str ):
31
34
"""更新机器人信息"""
@@ -117,6 +120,16 @@ async def process_text_message(self, message: Dict[str, Any]):
117
120
ats = []
118
121
message ["Ats" ] = ats if ats and ats [0 ] != "" else []
119
122
123
+ # 保存消息到数据库
124
+ await self .msg_db .save_message (
125
+ msg_id = int (message ["MsgId" ]),
126
+ sender_wxid = message ["SenderWxid" ],
127
+ from_wxid = message ["FromWxid" ],
128
+ msg_type = int (message ["MsgType" ]),
129
+ content = message ["Content" ],
130
+ is_group = message ["IsGroup" ]
131
+ )
132
+
120
133
if self .wxid in ats :
121
134
logger .info ("收到被@消息: 消息ID:{} 来自:{} 发送人:{} @:{} 内容:{}" ,
122
135
message ["MsgId" ],
@@ -171,6 +184,15 @@ async def process_image_message(self, message: Dict[str, Any]):
171
184
message ["SenderWxid" ],
172
185
message ["Content" ])
173
186
187
+ await self .msg_db .save_message (
188
+ msg_id = int (message ["MsgId" ]),
189
+ sender_wxid = message ["SenderWxid" ],
190
+ from_wxid = message ["FromWxid" ],
191
+ msg_type = int (message ["MsgType" ]),
192
+ content = message ["MsgSource" ],
193
+ is_group = message ["IsGroup" ]
194
+ )
195
+
174
196
# 解析图片消息
175
197
aeskey , cdnmidimgurl = None , None
176
198
try :
@@ -219,6 +241,15 @@ async def process_voice_message(self, message: Dict[str, Any]):
219
241
message ["SenderWxid" ],
220
242
message ["Content" ])
221
243
244
+ await self .msg_db .save_message (
245
+ msg_id = int (message ["MsgId" ]),
246
+ sender_wxid = message ["SenderWxid" ],
247
+ from_wxid = message ["FromWxid" ],
248
+ msg_type = int (message ["MsgType" ]),
249
+ content = message ["Content" ],
250
+ is_group = message ["IsGroup" ]
251
+ )
252
+
222
253
if message ["IsGroup" ] or not message .get ("ImgBuf" , {}).get ("buffer" , "" ):
223
254
# 解析语音消息
224
255
voiceurl , length = None , None
@@ -265,6 +296,15 @@ async def process_xml_message(self, message: Dict[str, Any]):
265
296
message ["FromWxid" ] = message ["ToWxid" ]
266
297
message ["IsGroup" ] = False
267
298
299
+ await self .msg_db .save_message (
300
+ msg_id = int (message ["MsgId" ]),
301
+ sender_wxid = message ["SenderWxid" ],
302
+ from_wxid = message ["FromWxid" ],
303
+ msg_type = int (message ["MsgType" ]),
304
+ content = message ["Content" ],
305
+ is_group = message ["IsGroup" ]
306
+ )
307
+
268
308
try :
269
309
root = ET .fromstring (message ["Content" ])
270
310
type = int (root .find ("appmsg" ).find ("type" ).text )
@@ -413,6 +453,15 @@ async def process_video_message(self, message):
413
453
message ["SenderWxid" ],
414
454
str (message ["Content" ]).replace ("\n " , "" ))
415
455
456
+ await self .msg_db .save_message (
457
+ msg_id = int (message ["MsgId" ]),
458
+ sender_wxid = message ["SenderWxid" ],
459
+ from_wxid = message ["FromWxid" ],
460
+ msg_type = int (message ["MsgType" ]),
461
+ content = message ["Content" ],
462
+ is_group = message ["IsGroup" ]
463
+ )
464
+
416
465
message ["Video" ] = await self .bot .download_video (message ["MsgId" ])
417
466
418
467
if self .ignore_check (message ["FromWxid" ], message ["SenderWxid" ]):
@@ -441,6 +490,15 @@ async def process_file_message(self, message: Dict[str, Any]):
441
490
message ["SenderWxid" ],
442
491
message ["Content" ])
443
492
493
+ await self .msg_db .save_message (
494
+ msg_id = int (message ["MsgId" ]),
495
+ sender_wxid = message ["SenderWxid" ],
496
+ from_wxid = message ["FromWxid" ],
497
+ msg_type = int (message ["MsgType" ]),
498
+ content = message ["Content" ],
499
+ is_group = message ["IsGroup" ]
500
+ )
501
+
444
502
message ["File" ] = await self .bot .download_attach (attach_id )
445
503
446
504
if self .ignore_check (message ["FromWxid" ], message ["SenderWxid" ]):
@@ -507,6 +565,15 @@ async def process_pat_message(self, message: Dict[str, Any]):
507
565
message ["Patted" ],
508
566
message ["PatSuffix" ])
509
567
568
+ await self .msg_db .save_message (
569
+ msg_id = int (message ["MsgId" ]),
570
+ sender_wxid = message ["SenderWxid" ],
571
+ from_wxid = message ["FromWxid" ],
572
+ msg_type = int (message ["MsgType" ]),
573
+ content = f"{ message ['Patter' ]} 拍了拍 { message ['Patted' ]} { message ['PatSuffix' ]} " ,
574
+ is_group = message ["IsGroup" ]
575
+ )
576
+
510
577
if self .ignore_check (message ["FromWxid" ], message ["SenderWxid" ]):
511
578
if self .ignore_protection or not protector .check (14400 ):
512
579
await EventManager .emit ("pat_message" , self .bot , message )
0 commit comments