项目已完善至可以公开贡献的阶段,但编码还请尽可能“照猫画虎”。用户请阅读使用说明书,本地部署请阅读快速开始,贡献请阅读贡献指南。
简单的贡献无需本地运行,整体测试交给小樊就好,你只需要确保核心代码的正确。
- 开发语言:Python
- 核心框架:wxauto
- 其他依赖:Flask,flask_sqlalchemy,火山引擎SDK,numpy等
- 数据库:MySQL
仅可使用 Windows,win7及以上或winserver2012及以上
Python 3.10及以上
wxauto 39.1.18版本
微信电脑版 3.9.12
Flask 3.1.1以上
火山引擎SDK 3.0.9以上
numpy 2.0以上
MySQL 8.0以上 推荐用navicat管理,防止sql文件执行异常。
-
命令前缀:所有指令以
/开头;默认回复会延迟约 2–5 秒,夜间 2 点-8 点不响应。 -
帮助:
/help或/帮助返回功能清单。 -
来图:
/来一份图或类似“发/来…图”触发;冷却时间为2分钟 -
抽卡:
/抽卡发送随机图片(含稀有度提示);和来图共享冷却时间 -
总结:
/总结 [条目数/分钟数][条/分],使用条和分区分数量窗口和时间窗口。 -
分析:
/分析 [条目数/分钟数][条/分] [你的提示词],把近期记录交给 LLM 按提示词分析。 -
语录检索/随机:
/语录@[群成员]列出该用户语录;/语录检索 [关键词]@[群成员]关键词检索;/语录随机@[群成员]或/语录随机(全局随机)。
-
语录收录:需引用一条消息并 使用
/收录@[群成员];24 小时内单人/全局有次数限制,禁止套娃收录。
备注:群成员修改群昵称可能导致关联失效,每次收录会重新关联群昵称与用户
-
班味排行:
/班味排行榜统计最近 24 小时上班话题数量排名;/班味比重榜统计上班话题占比排名。 -
反馈:
/issue [你的内容]通知维护者。 -
管理指令:
/sudo sql\n<SQL>(仅授权用户)执行 SQL 并回显结果。
安装wxauto框架,由于原作者停止维护了,所以从我那里clone下来后安装
git clone https://github.com/johnfans/wxauto.git
cd "path-to-wxauto"
pip install -e .搭建数据库。直接用导航猫连接你的MySQL数据库,运行sql_struct里面的所有sql文件。
安装必要的库
#安装火山引擎SDK
pip install volcengine-python-sdk[ark]
#安装数据库驱动
pip install pyodbc,PyMySQL
#安装flask框架及数据库连接池
pip install flask,flask_sqlalchemy编辑用户环境变量 ARK_API_KEY 为你的火山引擎密钥
clone该仓库,项目目录下创建文件夹0,1,2放入你的抽卡素材。创建文件夹temp用于收集下载的图片。修改跟踪的群聊名称。完成后启动运行listen.py启动服务。
listen.py: 主函数,安放所有控制流程代码
gacha.py: 抽卡算法模块
db_execute.py: 和主流程无关的数据库操作放这里
setu.py: 对接海星来来涩图接口
llm.py: 对接火山引擎大模型
从order_analysis指令解析函数开始,开发新功能必须要在这里新建elif,将对应的命令指向你的功能。
在这里你可以:
-
直接使用
parts[index]直接获得命令各部分. -
使用
msg.content和msg.sender获得原始消息和发送人。 -
使用
chat.SendMsg(message)发送文本消息,使用chat.SendFiles(path)发送图片和文件。 -
使用
service_judge()函数进行服务频率控制
绝对不可以在这里写耗时超过3秒的操作!网络io提交到线程池pool2_executor,大模型和较为耗时的数据库操作相关提交到线程池pool3_executor。
在线程池中你可以执行所有耗时操作,但需要注意:
-
发送消息请在
with lock下进行 -
不要放死循环占用线程池,定时任务请单独建立线程。
-
放到该放的文件下,涉及新的第三方接口请单独创建文件编写接口逻辑
-
使用下划线命名法
-
剩下能跑就行,其他没了
-
直接提交PR,要求完整能跑。
-
提交issue,写出你的设计并附核心代码。
-
线下联系小樊。
备注:由于环境搭建较为困难,简单功能实现和bug修复无需搭建环境测试,直接提交即可,小樊会去运行测试,测试结果和通过各种方式通知你