框架功能
基于python
语言编写,主要依赖flask
,实现微信消息的接收处理,以及自定义插件的编写。
python版本<3.12
程序内置WeChatFerry
的v39.3.5版本,并非直接使用pip
安装,配套微信版本:3.9.11.25
,如需替换或更新请前往WeChatFerry下载对应版本代码及dll文件,将/clients/python/wcferry
及dll文件夹的所有文件拷贝到本程序的wcferry
文件夹下即可
注意:如需使用WeChatFerry
,必须手动更新至最新版,旧版封号概率过高,新版未测试
下载地址
最新版已知问题
请使用ctrl
+c
结束程序,点叉关闭程序会导致无法再次和WeChatFerry
连接
无法接收消息及注入失败使用任务管理器结束所有微信进程即可解决
建议/反馈/交流
添加微信bhrsbot2,发送进群
更新日志
20250515
适配WeChatPadPro文字和图片消息,相关配置见默认配置文件
20250430
适配khan
文本消息
配置文件新增可选配置:wx_bot_notifyHook
、khan_appid
、khan_token
用以设置khan
框架相关参数
20250403
删除依赖wcferry
,改为程序内置,以获取最新更新
插件注册方法新增可选参数is_admin_plugin
:值为True时仅识别管理员消息(无菜单、无开关),其他值保持正常鉴权逻辑
新增管理员插件wcf_reboot(重启wcf)
20250331
配置文件新增支持多个微信管理员,以英文逗号分隔
机器人自己发的消息权限修改为管理员权限
机器人消息类BotMsg
新增参数is_self
: 是否是机器人自己发的消息
数据库兼容mysql
和sqlite
(如遇问题请及时反馈)
数据库连接由单连接修改为连接池连接
插件注册方法新增参数sign_admin
: 值为True
时管理员参与插件鉴权,值为None
时取配置文件plugins_sign_admin
的值
查询信息查询修改为管理员不参与鉴权
查询信息指令新增支持@用户
开启/关闭插件指令新增支持@用户
20250327
修复wcf
好友请求功能
service.bot.BotMessageService
中新增FriendRequest
(好友请求消息类)和Transfer
(转账消息类),可以直接调用上述两个类中的agree()
方法用以接收好友请求/转账(wcf
貌似不支持同意好友请求和接收转账)
service.bot.BotMessageService
中BotMsg
类中新增friend_request
和transfer
参数,类型分别对应上述两个类
支持插件自定义处理wcf
好友请求和转账消息
20250308
修复 @所有人 会触发 ai 的问题
修复 @机器人 会将 @机器人昵称 发送至 ai 的问题
优化插件功能 prefix
: 触发此功能的消息前缀,可以为空字符串,非空字符串时消息前缀与内容中间无需加空格也能匹配,为None
时菜单不显示插件也不参与消息匹配,仅使 flask 蓝图生效
优化插件功能 function
: 调用的方法名称,不带(),该方法仅传入一个字段BotMsg
类, prefix
为None
时必须为None
(即使传参也不会调用传入的方法),prefix
不为 None 时必填
配置新增可选参数:
plugins_sign_admin = True # 值为 True 时管理员参与插件鉴权
20250307
修改 xml 解析失败日志等级error
为warning
消息类BotMsg
新增reply
属性,自动初始化回复类Reply
,可直接调用botmsg.reply.
去除 ai 回复的开头空白片段
20250305
优化权限判断和查询信息方法,修复查询信息与实际判断权限不一致的bug
20250303
新增使用默认配置文件的建议提示
分离插件相关方法至单独的文件service.PluginsService
,需修改自定义插件引入service.UtilsService
为service.PluginsService
数据库结构重构,拆分每个插件为单独字段
自定义方法注册新增default_status
可选参数,用于适配是否默认启用插件,类型int
,可选值 1: "开启", 2: "关闭"
自定义方法注册新增father
可选参数用于指定插件的父级(暂时仅支持一级子级,不支持嵌套多层子级,避免管理混乱),子级信息不在首屏信息中展示,且受父级开关和本身开关一起控制,类型Plugin
(注册插件方法add_plugin
的返回值)
插件指令新增 默认插件名 指令,用于将插件状态设为默认
插件注册方法分离为单独模块,需将引入from service.UtilsService import
修改为from service.PluginsService import
启用BotMsg
的user_name
(用户名)和group_name
(群名)字段并自动赋值
/信息 指令分离为插件,指令修改为 查询信息,后可接插件名获取指定插件及子级的插件状态,也可接wxid
查询指定用户状态,空格分隔
注意,由于涉及数据库格式改变,如需使用插件默认状态功能,请先完成相关参数 default_status 的修改,否则程序首次启动进行数据库格式转换时可以导致与预期值不符
配置新增可选配置:
plugins_order = ["info", "draw", "gpt"] # 插件启用顺序
20250109
Reply
回复类 新增private
方法,用于发送私聊消息
获取消息推送api 功能由内置转为自定义
配置变更
移除enable_pool
20241204
BotMsg 类型新增 prompt 属性: 用以传递去掉前缀的消息内容
BotMsg 类型新增 json属性: 用以处理
自定义功能新增支持扫描并导入plugins文件夹下的软件包下的 .py文件
add_plugin 注册自定义功能方法新增3个参数(可空)
blueprint: Blueprint 类型,注册蓝图用以处理网络请求, 如不需要此功能此项可为空
url_prefix: 网络请求前缀(例:/auth), 如不需要此功能此项可为空
msg_types: 处理的消息类型,默认为1,int或list,1文本 3图片 6文件
chatgpt-on-wechat(tools)和 内置 gpt 功能分离为自定义功能实现
功能开关和信息指令后支持指定wxid
config 新增可选变量(不需要可忽略)
bdwk_api = "" # 百度文库api地址
bdwk_key = "" # 百度文库api key
20240724
新增发送图片路径校验
新增wcf消息发送失败提示
注意:wcf不兼容中文路径,中文路径问题目前仅可通过修改系统编码方式解决。
20240723
BotMsg 类新增属性 is_admin 是否是管理员发送的消息
优化 xml 消息报错问题
百度文库下载由内置功能转为插件以适配通用开关控制
新增 Reply 类,实现多条回复、回复图片、回复卡片消息(whois插件已更新用法)
20240717
自行编写功能转移到根目录 plugins 文件夹下
注意:请在 plugins 文件夹下新建py文件编写自定义功能,程序会自动扫描该文件夹下的所有文件,避免更新导致编写代码被覆盖丢失
20240716
新增类 service.PluginService ,可以自行编写功能,具体查看该文件说明及whois示例
whois查询 位置更改为上述类
管理员命令:菜单 重写优化,自定义功能自动添加提示
非gpt回复不再进行自定义替换操作
数据库结构变更
表 menu 的 draw 和 gpt 字段启用,转为新的 json 类型字段 plugins 判断(自动更新)
20240715
新增whois查询
20240616
新增管理员指令 获取消息推送api
配置新增
max_submit_num = 5 # 单微信账号每天提交画图的最大次数
20240526
新增回调转发功能
回调地址由/wxbot更改位/bot/wx
service目录结构重构
修复鲲鹏utf-8字符乱码显示为?的问题
配置文件新增:
port = 26794 # 程序运行端口
bot_push_url = [ # 将机器人消息(/bot)转发至url,自动过滤本程序及已转发过的ip和端口
"",
"",
]
class qywx: # 企业微信配置
admin = ""