加入聊天记录入库动作
This commit is contained in:
13
message_storage/message.sql
Normal file
13
message_storage/message.sql
Normal file
@@ -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
|
||||||
|
);
|
||||||
46
message_storage/message_to_db.py
Normal file
46
message_storage/message_to_db.py
Normal file
@@ -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)
|
||||||
8
robot.py
8
robot.py
@@ -6,6 +6,7 @@ import time
|
|||||||
import xml.etree.ElementTree as ET
|
import xml.etree.ElementTree as ET
|
||||||
from queue import Empty
|
from queue import Empty
|
||||||
from threading import Thread
|
from threading import Thread
|
||||||
|
from datetime import datetime, timedelta
|
||||||
|
|
||||||
from base.func_epic import is_friday, get_free
|
from base.func_epic import is_friday, get_free
|
||||||
from base.func_zhipu import ZhiPu
|
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.process_message import process_message
|
||||||
from message_report.write_db import write_to_db, generate_and_send_ranking
|
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):
|
class Robot(Job):
|
||||||
@@ -158,6 +160,12 @@ class Robot(Job):
|
|||||||
except Exception as e:
|
except Exception as e:
|
||||||
self.LOG.error(f"process_message error: {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: # 不在配置的响应的群列表里,忽略
|
if msg.roomid not in self.config.GROUPS: # 不在配置的响应的群列表里,忽略
|
||||||
return
|
return
|
||||||
|
|||||||
Reference in New Issue
Block a user