入库处理
This commit is contained in:
@@ -3,9 +3,7 @@ import logging
|
|||||||
import os.path
|
import os.path
|
||||||
import random
|
import random
|
||||||
import time
|
import time
|
||||||
from typing import Optional
|
|
||||||
|
|
||||||
from gewechat_client import GewechatClient
|
|
||||||
|
|
||||||
from gewechat.client import gewe_client
|
from gewechat.client import gewe_client
|
||||||
from utils.wechat.contact_manager import ContactManager
|
from utils.wechat.contact_manager import ContactManager
|
||||||
|
|||||||
146
robot.py
146
robot.py
@@ -11,6 +11,7 @@ from base.func_news import News
|
|||||||
from configuration import Config
|
from configuration import Config
|
||||||
from gewechat.call_back_message.message import WxMessage, MessageType
|
from gewechat.call_back_message.message import WxMessage, MessageType
|
||||||
from gewechat.client import gewe_client
|
from gewechat.client import gewe_client
|
||||||
|
from gewechat.response.model.group.chatroom_info import ChatroomInfo
|
||||||
from gewechat.response.model.personal.profile import Profile
|
from gewechat.response.model.personal.profile import Profile
|
||||||
from utils.json_converter import json_to_object
|
from utils.json_converter import json_to_object
|
||||||
from utils.wechat.message_to_db import MessageStorage
|
from utils.wechat.message_to_db import MessageStorage
|
||||||
@@ -162,6 +163,15 @@ class Robot(Job):
|
|||||||
GroupBotManager.set_group_permission(msg.roomid, Feature.ROBOT, PermissionStatus.ENABLED)
|
GroupBotManager.set_group_permission(msg.roomid, Feature.ROBOT, PermissionStatus.ENABLED)
|
||||||
# 更新联系人信息
|
# 更新联系人信息
|
||||||
# 群第一次加入机器人管理,自动添加并开启机器人功能,需要进行群成员信息初始化。请完成写入数据库,并更新联系人信息
|
# 群第一次加入机器人管理,自动添加并开启机器人功能,需要进行群成员信息初始化。请完成写入数据库,并更新联系人信息
|
||||||
|
try:
|
||||||
|
chatroom_info = self.client.get_chatroom_info(self.app_id, msg.roomid)
|
||||||
|
resp_obj = json_to_object(chatroom_info)
|
||||||
|
infos = resp_obj.data
|
||||||
|
self.contacts_db.save_chatroom_info(infos)
|
||||||
|
self.LOG.info(f"添加新的群信息到数据库成功:{infos}")
|
||||||
|
except Exception as e:
|
||||||
|
self.LOG.error(f"chatroom_info save error: {e}")
|
||||||
|
return
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
self.LOG.error(f"加入新群,自动添加并开启机器人功能 error: {e}")
|
self.LOG.error(f"加入新群,自动添加并开启机器人功能 error: {e}")
|
||||||
@@ -180,83 +190,83 @@ class Robot(Job):
|
|||||||
for info in infos:
|
for info in infos:
|
||||||
self.LOG.info(f"已添加新用户信息到数据库: {wxid}")
|
self.LOG.info(f"已添加新用户信息到数据库: {wxid}")
|
||||||
# 更新缓存
|
# 更新缓存
|
||||||
self.allContacts[wxid] = info.get("nickName", "wxid")
|
self.allContacts[wxid] = info.get("nickName", "nickName")
|
||||||
self.contact_manager.set_contacts(self.allContacts)
|
self.contact_manager.set_contacts(self.allContacts)
|
||||||
self.LOG.info(f"已维护新用户信息到缓存: {wxid}")
|
self.LOG.info(f"已维护新用户信息到缓存: {wxid}")
|
||||||
self.contacts_db.save_chatroom_member_detail(msg.roomid, infos)
|
self.contacts_db.save_chatroom_member_detail(msg.roomid, infos)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
self.LOG.error(f"添加新用户信息到数据库失败: {e}")
|
self.LOG.error(f"添加新用户信息到数据库失败: {e}")
|
||||||
|
#
|
||||||
# 发布消息接收事件
|
# # 发布消息接收事件
|
||||||
self.event_system.publish(EventType.MESSAGE_RECEIVED, {"message": msg})
|
# self.event_system.publish(EventType.MESSAGE_RECEIVED, {"message": msg})
|
||||||
|
#
|
||||||
# 标记插件是否处理了消息
|
# # 标记插件是否处理了消息
|
||||||
plugin_processed = False
|
# plugin_processed = False
|
||||||
|
#
|
||||||
# 尝试使用插件处理消息
|
# # 尝试使用插件处理消息
|
||||||
if self.process_plugin_message(msg):
|
# if self.process_plugin_message(msg):
|
||||||
plugin_processed = True
|
# plugin_processed = True
|
||||||
|
#
|
||||||
# 群聊消息处理 - 无论插件是否处理过,都执行数据存储
|
# # 群聊消息处理 - 无论插件是否处理过,都执行数据存储
|
||||||
if msg.from_group():
|
# if msg.from_group():
|
||||||
# 调用统计逻辑进行聊天数据统计:
|
# # 调用统计逻辑进行聊天数据统计:
|
||||||
try:
|
# try:
|
||||||
self.message_storage.process_message(msg)
|
# self.message_storage.process_message(msg)
|
||||||
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:
|
# try:
|
||||||
self.message_storage.archive_message(msg)
|
# self.message_storage.archive_message(msg)
|
||||||
# 单独处理图片消息
|
# # 单独处理图片消息
|
||||||
if msg.msg_type == 3: # 图片消息类型
|
# if msg.msg_type == 3: # 图片消息类型
|
||||||
self.message_storage.process_image(msg)
|
# self.message_storage.process_image(msg)
|
||||||
except Exception as e:
|
# except Exception as e:
|
||||||
self.LOG.error(f"archive_message error: {e}")
|
# self.LOG.error(f"archive_message error: {e}")
|
||||||
|
#
|
||||||
# 如果插件已处理消息,则不再执行后续的业务逻辑
|
# # 如果插件已处理消息,则不再执行后续的业务逻辑
|
||||||
if plugin_processed:
|
# if plugin_processed:
|
||||||
return
|
# return
|
||||||
|
#
|
||||||
# 记录在群里发的最新消息,可以通过撤回指令撤回
|
# # 记录在群里发的最新消息,可以通过撤回指令撤回
|
||||||
try:
|
# try:
|
||||||
if msg.from_self():
|
# if msg.from_self():
|
||||||
rsp = self.gbm.handle_command(msg.roomid, msg.content)
|
# rsp = self.gbm.handle_command(msg.roomid, msg.content)
|
||||||
# 不在群里发送,防止被骚扰
|
# # 不在群里发送,防止被骚扰
|
||||||
if rsp is not None:
|
# if rsp is not None:
|
||||||
self.message_util.send_text(rsp, msg.roomid, msg.sender)
|
# self.message_util.send_text(rsp, msg.roomid, msg.sender)
|
||||||
return
|
# return
|
||||||
except Exception as e:
|
# except Exception as e:
|
||||||
self.LOG.error(f"revoke_receive_message error: {e}")
|
# self.LOG.error(f"revoke_receive_message error: {e}")
|
||||||
|
#
|
||||||
return # 处理完群聊信息,后面就不需要处理了
|
# return # 处理完群聊信息,后面就不需要处理了
|
||||||
|
#
|
||||||
# 如果插件已处理消息,则不再执行后续的业务逻辑
|
# # 如果插件已处理消息,则不再执行后续的业务逻辑
|
||||||
if plugin_processed:
|
# if plugin_processed:
|
||||||
return
|
# return
|
||||||
|
#
|
||||||
elif msg.msg_type == MessageType.TEXT: # 文本消息
|
# elif msg.msg_type == MessageType.TEXT: # 文本消息
|
||||||
# 让配置加载更灵活,自己可以更新配置。也可以利用定时任务更新。
|
# # 让配置加载更灵活,自己可以更新配置。也可以利用定时任务更新。
|
||||||
if msg.from_self():
|
# if msg.from_self():
|
||||||
if msg.content.clean_content == "^更新$":
|
# if msg.content.clean_content == "^更新$":
|
||||||
self.config.reload()
|
# self.config.reload()
|
||||||
self.gbm.load_local_cache()
|
# self.gbm.load_local_cache()
|
||||||
self.LOG.info("已更新")
|
# self.LOG.info("已更新")
|
||||||
if msg.content.clean_content == "今日百度新闻":
|
# if msg.content.clean_content == "今日百度新闻":
|
||||||
self.news_baidu_report()
|
# self.news_baidu_report()
|
||||||
if msg.content.clean_content == "TO_DB":
|
# if msg.content.clean_content == "TO_DB":
|
||||||
self.message_count_to_db()
|
# self.message_count_to_db()
|
||||||
if msg.content.clean_content == "PDF":
|
# if msg.content.clean_content == "PDF":
|
||||||
self.generate_sehuatang_pdf()
|
# self.generate_sehuatang_pdf()
|
||||||
if msg.content.raw_content.startswith("清除群-"):
|
# if msg.content.raw_content.startswith("清除群-"):
|
||||||
self.gbm.handle_command(msg.roomid, msg.content.clean_content)
|
# self.gbm.handle_command(msg.roomid, msg.content.clean_content)
|
||||||
else:
|
# else:
|
||||||
self.toChitchat(msg) # 闲聊
|
# self.toChitchat(msg) # 闲聊
|
||||||
|
|
||||||
def onMsg(self, msg: WxMessage) -> int:
|
def onMsg(self, msg: WxMessage) -> int:
|
||||||
try:
|
try:
|
||||||
self.LOG.info(msg) # 打印信息
|
self.LOG.info(msg) # 打印信息
|
||||||
# self.processMsg(msg)
|
self.processMsg(msg)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
self.LOG.error(e)
|
self.LOG.error(e)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user