From c8b59eb788e525ec57f38af07113336b1a85fb0a Mon Sep 17 00:00:00 2001 From: liuwei Date: Thu, 6 Feb 2025 11:47:04 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8A=A0=E5=85=A5=E8=81=8A=E5=A4=A9=E8=AE=B0?= =?UTF-8?q?=E5=BD=95=E5=85=A5=E5=BA=93=E5=8A=A8=E4=BD=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- message_storage/message.sql | 13 +++++++++ message_storage/message_to_db.py | 46 ++++++++++++++++++++++++++++++++ robot.py | 8 ++++++ 3 files changed, 67 insertions(+) create mode 100644 message_storage/message.sql create mode 100644 message_storage/message_to_db.py diff --git a/message_storage/message.sql b/message_storage/message.sql new file mode 100644 index 0000000..1923465 --- /dev/null +++ b/message_storage/message.sql @@ -0,0 +1,13 @@ + +CREATE DATABASE message_archive charset utf8mb4; + +USE message_archive; + +CREATE TABLE messages ( + id INT AUTO_INCREMENT PRIMARY KEY, + timestamp VARCHAR(20) NOT NULL, + sender VARCHAR(255) NOT NULL, + content TEXT NULL, + message_type VARCHAR(50) NULL, + attachment_url VARCHAR(512) DEFAULT NULL +); \ No newline at end of file diff --git a/message_storage/message_to_db.py b/message_storage/message_to_db.py new file mode 100644 index 0000000..da67fad --- /dev/null +++ b/message_storage/message_to_db.py @@ -0,0 +1,46 @@ +import pymysql + +# 配置数据库连接 +db_config = { + 'host': '192.168.2.32', # 替换为你的MariaDB服务器地址 + 'user': 'root', # 替换为你的MariaDB用户名 + 'password': 'lw123456', # 替换为你的MariaDB密码 + 'database': 'message_archive' +} + + +def archive_message(timestamp_str, sender, content, message_type, attachment_url=None): + # 连接到数据库 + connection = pymysql.connect(**db_config) + + try: + with connection.cursor() as cursor: + # 插入消息信息 + sql = """ + INSERT INTO messages (timestamp, sender, content, message_type, attachment_url) + VALUES (%s, %s, %s, %s, %s) + """ + cursor.execute(sql, (timestamp_str, sender, content, message_type, attachment_url)) + + # 提交事务 + connection.commit() + print("Message archived successfully.") + + except Exception as e: + print(f"Error archiving message: {e}") + connection.rollback() + + finally: + # 关闭连接 + connection.close() + + +# 示例用法 +if __name__ == "__main__": + timestamp_str = "2025-02-06 11:15:28" + sender = "XXX" + content = "This is a test message with a string timestamp." + message_type = "text" + attachment_url = "http://example.com/attachment.pdf" # 可以为None如果没有附件 + + archive_message(timestamp_str, sender, content, message_type, attachment_url) \ No newline at end of file diff --git a/robot.py b/robot.py index 5d49f18..4a28bd1 100644 --- a/robot.py +++ b/robot.py @@ -6,6 +6,7 @@ import time import xml.etree.ElementTree as ET from queue import Empty from threading import Thread +from datetime import datetime, timedelta from base.func_epic import is_friday, get_free from base.func_zhipu import ZhiPu @@ -27,6 +28,7 @@ __version__ = "39.2.4.0" from message_report.process_message import process_message from message_report.write_db import write_to_db, generate_and_send_ranking +from message_storage.message_to_db import archive_message class Robot(Job): @@ -158,6 +160,12 @@ class Robot(Job): except Exception as e: self.LOG.error(f"process_message error: {e}") + # 聊天记录入库动作: + try: + archive_message(datetime.now(),msg.sender,msg.content,msg.type,msg.extra) + except Exception as e: + self.LOG.error(f"archive_message error: {e}") + # 如果在群里被 @ if msg.roomid not in self.config.GROUPS: # 不在配置的响应的群列表里,忽略 return