Skip to content

技术细节文档

lin edited this page Sep 17, 2024 · 8 revisions

简介

本文档会简单介绍系统架构和各功能实现方式

文件夹结构

getmsgserv:与消息处理有关的所有文件(从原始消息json到jpg)

  • LMwork:对原始消息进行简化,然后发给LM进行分段,判断要不要匿名,能不能过审核
    • face:qq表情文件夹
    • progress-lite-json.sh:精简原始消息记录,删除非必要信息与不支持的信息,下载所有图片并把原url替换成file://,合并message,将cq face转为文本混排图片。
    • sendtoLM.py原始大模型处理脚本,发送消息记录给大模型,进行消息分组与匿名/过审判断(不维护)
    • sendtoLM-MTP.py 高效的,支持通过多轮对话的大模型处理脚本
    • sendtoLM-MTP-old.py 老版本多轮对话的大模型处理脚本(不维护)
    • sendtoLM-MTP-stream.py 支持流式传输的大模型处理脚本(暂不可用)
  • HTMLwork:把LM输出的json转成HTML再打印成PDF,再渲染成jpg
    • gotohtml.py 把LM输出的json转成html
    • gotopdf.sh 用chrome把html打印成pdf
    • gotojpg.sh 用ImageMagick把pdf转成jpg
  • post-stepx:过程中产生的中间文件
  • all:全部消息记录
  • rawpost:每个用户的原始消息
  • serv.py:消息接受服务器
  • command.sh:审核指令执行器

qqBot:qq机器人功能

  • command 审核指令存放处
  • QChatGPT :QChatGPT子项目文件夹
  • ChatBot.py:老版本ChatBot响应器(已弃用)
  • ChatBotd.sh:老版本CHatBot守护程序(已弃用)
  • likeveryday.py: 从好友列表挑500个人,每人发送20个好友赞
  • startd.sh: 启动时拉起子进程及定时任务守护程序

SendQzone: QQ空间工具包

  • processsend.sh:发送进程
  • chromed.py:selenium的守护程序
  • qzone-serv-test.py:qzone提供API的qzone发送服务(暂时没有使用)
  • send.py:一次性执行的qzone发送脚本
  • qzonerenewcookies.py:通过qq快捷登陆来获取qzone的cookies
  • qzonrenewcookies-selenium.py:通过sleenium利用qq快捷登陆来获取qzone的cookies
  • qzonegettag-headless.py:通过selenium登陆qq空间,获取上一条发出去的说说的外部编号和cookies

venv:python虚拟环境 .gitxxx git相关文件
AcountGroupcfg.json:账户组配置文件
oqqwall.config:系统配置文件
cookies-xxxx.json:账号的qzone cookies
xxx_numfinal.txt:账户组的外部编号
numb.txt:内部编号
main.sh:投稿处理主进程

投稿处理流程

Onebot-http-post->serv.py-rawpost文件夹->main.sh-->processsend

$$\text{serv.py工作流} \left\{ \begin{array}{l} \text{接收onebot的httppost}\\\ \text{存入all\_post.json}\\\ \text{分类,是私信还是群消息,或者是notice}\\\ \text{私信-->存入rawpost文件夹下的文件}\\\ \text{群消息-->如果是管理群-->乳沟是管理员发的-->调起command.sh}\\\ \text{notoce-->如果是消息撤回-->查询消息id,,从rawpost中删掉这条消息} \end{array} \right. \text{main.sh工作流:} \left\{ \begin{array}{l} \text{检查配置文件是否正确配置}\\\ \text{初始化目录和文件}\\\ \text{循环检测rawpost文件夹下是否有新文件,有就调起processsend.sh}\\\ \end{array} \right. \text{processsend工作流} \left\{ \begin{array}{l} \text{progress-lite-json.sh-->post-step1}\\\ \text{sendtoLM-MTP.py-->post-step2}\\\ \text{gotohtml.py-->post-step3}\\\ \text{gotopdf.sh-->post-step4}\\\ \text{gotojpg.py-->post-step5}\\\ \text{发送渲染好的图片到审核群中} \text{内部函数 askforgroupintro(请求审核指令)}\\\ \text{send.py} \end{array} \right.$$

更多内容请查看代码