 sansenhoshiandClaude Code
|
4b5e8b8b2e
|
feat(web): 顶栏账号菜单接入 bot 启停 / 插件页分区 / 首页协议端配对信息
- 重启/关闭 bot 从设置页提到顶栏账号下拉(破坏性操作弹确认框),等待回连逻辑抽成
lib/botAction.ts 供两处共用:先等旧进程让出端口,再以 dashboard SSE 真收到一帧为准,
只看 HTTP 200 会在"端口起来但插件未挂接"时误判就绪
- 插件管理页按 带 Web 页面 / 带配置项 / 都没有 分区,卡片加类型与 Web/配置 徽章
- 首页「BOT 协议端信息」分两半:左半登录账号,右半 NoneBot 接入信息
(IP / 运行端口 / WS 路径 / 访问令牌,均可一键复制,另给整条反向 WS 地址),
监听地址非 0.0.0.0 时提示仅本机可连;「BOT 后端信息」移到自己一行
- dashboard.py 新增 endpoint 段:读 driver.config 的 host/port、驱动实际注册的
反向 WS 路由(自动跳过根路径与尾斜杠别名)、适配器令牌与本机网卡 IP
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-09-22 14:23:52 +08:00 |
|
 sansenhoshiandClaude Code
|
814c1994b6
|
feat(mc-server-status): 服务器列表 Web 管理页 / 数据层抽离 / mcstatus 13 适配
- services/servers.py:校验 + 读写 + 增删改收敛成一份数据层(顶层不 import nonebot,
可脱离运行时单测),群命令与 Web API 都只经它改数据,校验不再各写一套
- web_hub.py + /hub/mc_server_status 页面:按群列出服务器,抽屉新增/编辑(改名)/
测试连接,行内删除(删空一台连带删群);每条路由自带 require_admin
- handlers/server.py 改为薄封装,只在需要命令特有提示时自己判断
- services/mc.py 的图标属性名兼容 mcstatus ≥13 的 icon(旧版叫 favicon,
读错会把整条查询打成"查询失败")
- tests/test_mc_servers.py:数据层归一/改名/删群/坏文件兜底 + 图标解码两版属性名
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-09-22 14:23:46 +08:00 |
|
 sansenhoshiandClaude Code
|
4badcfcf32
|
feat(video-analysis): 群策略 v3 / 群文件投递通道 / Web 管理页
- policy.py:per-group 正交策略(自动解析 / 自动策略 / 禁用策略 / 存储 A·B·C /
公网 / 链接 / 群文件 + 平台限定),list.json v1/v2 → v3 自动迁移,
写入统一走 PolicyStore(加锁 + .tmp 原子替换 + 字段归一)
- 群文件并行通道 group_file.py:打包 zip(可选 pyzipper AES-256)后优先走 S3 预签名、
本地直传兜底;设了密码但 pyzipper 不可用就放弃上传,不退化成明文
- list_proc.py 收敛到「视频策略」统一入口,权限判定改走 policy
- Web 管理页 /hub/video_analysis(群策略 + 链接解析面板)与 services/web_jobs.py
(只复用纯函数层,Web 上下文不发消息;内存任务表 + 并发闸门 + 超时)
- 媒体命名统一到 utils.py({作者}_{作者id}/{作品名}[_短码]),cleanup 回收空目录
- 测试:policy / 命名 / 群文件 / web_jobs 四组
顺带 pyproject 的 pytest 加 testpaths=tests(避免收进 debug/ 下的调试脚本)。
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-09-22 14:23:32 +08:00 |
|
 sansenhoshiandClaude Code
|
51b08ccb68
|
feat: 群分析本地消息库 / 处理中占位图 / Web 日志窗口重构
- 群分析: 新增 history_store 只读本地消息源(读 learning_chat 落库,含 uninfo
昵称补齐/去重/截断判定),适配器优先读本地库、失败回退 OneBot 分页;分页
锚点字段回退链修复 NapCat 传 message_seq 翻页断裂;新增「本地记录」开关
- core/message_utils: 新增 common_proc_reply 占位图通用回复(引用消息 + 处理中
动图,支持后台任务显式指定 target),群分析/战况/倒放改用
- web_hub + web: 日志页改固定窗口滚动 + 翻页锚定 + 自动换行,SSE 日志轮转发
reset 帧,入口 HTML no-cache,行数统计增量缓存,CPU 改非阻塞采样,登录信息缓存
- 插件内 CLAUDE.md / DESIGN.md 不入库(.gitignore),galgame_card 两份文档取消
跟踪(文件保留在磁盘)
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-09-14 18:59:01 +08:00 |
|
 sansenhoshiandClaude Code
|
662c28cb2f
|
chore(deps): 补齐运行时依赖声明
代码里直接 import、但 requirements.txt / pyproject.toml 都没声明的包补齐:
beautifulsoup4、opencv-contrib-python、curl_cffi、yt-dlp、boto3、cloudscraper、
cjk-textwrap、lxml、jieba、ruamel.yaml、pytz、psutil、py-cpuinfo、numpy、
nonebot-plugin-htmlrender、taskgroup(仅 py<3.11)。
其中多数此前只是靠别的包传递依赖带上来的(如 curl_cffi 来自 yt-dlp 的 extra),
换环境或升级就会缺。
同时清理无任何引用的 chardet、gradio_client、aiohttp-retry、qrcode,
并把 playwright 下限与 pyproject 对齐(1.44 → 1.50)。
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-09-14 18:58:52 +08:00 |
|
sansenhoshi
|
131b92b319
|
结构调整
视频解析多图/多媒体结构 消息体适配
|
2026-09-08 14:25:32 +08:00 |
|
 sansenhoshiandClaude Code
|
30899688a7
|
feat(video-analysis): 多文件媒体改走合并转发
抖音 note/小红书等多图、图+视频混合、多视频(动图)作品,下载产物
超过一个文件时直接拼成一条消息发送会失败(视频段不能与其他段混合),
统一改为合并转发: 一个图/视频一个节点,本地文件优先、S3 预签名链接
兜底; 单文件作品保持原有直发链路,多级发送链(本地→S3→回退)不变。
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-09-08 14:21:57 +08:00 |
|
sansenhoshi
|
8c1a106230
|
新战备
|
2026-09-03 15:45:14 +08:00 |
|
sansenhoshi
|
2849a6250c
|
项目改造
|
2026-09-03 15:44:57 +08:00 |
|
 sansenhoshiandClaude Code
|
24d7c64e17
|
docs: fix relative paths in plugin standard docs after dev/ restructure
- dev/docs 插件标准文档中的相对路径适配到 dev/ 层级
- gitignore dev/docs/HD2/ 图标转换脚本与生成产物(cairosvg 输出等)
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-09-03 15:40:43 +08:00 |
|
 sansenhoshiandClaude Code
|
c53b210413
|
feat: revamp web hub — global connection status, array config editor, log streaming
- Global connection badge in app header (persistent dashboard SSE via ConnectionProvider)
- LogProvider keeps log data and SSE stream alive across page switches (no reload spinner)
- Config drawer: password reveal toggle, array-type row editor for list fields
- Plugin management: optimistic updates, race-free loading, reset all group overrides
- Logs: load-earlier pagination; backend tail-read optimization (before/end offsets)
- web_auth: Web password changes persist (sync_admin seeding only when .env has explicit key)
- Dashboard: collect in thread pool + 1s result cache
- ErrorBoundary + local Suspense: plugin chunk loading stays inside content area
- UI polish: table row hover, mobile header/breadcrumb fixes, wider config drawer
- config_standard: array type inference for list fields; array env skip
- random_jm_code / steam_info: array schema migration; README web frontend note
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-09-03 15:39:10 +08:00 |
|
 sansenhoshiandClaude
|
9371a28e35
|
refactor: restructure plugins per MTSS standard, consolidate assets to res/
Per docs/plugin-audit-report.md (plugins normalized to
Trigger(handlers) → Service(services) → Model(repository/models) + utils):
- Split monolithic __init__.py into handlers/services/utils across
dailywife, deer_pipe, dice, galgame_card, helldivers_tools,
huoziyinshua, learning_chat, makeaquote, mc_server_status,
ncm_saying, picfinder_take, picstatus, random_jm_code, regif,
steam_info, video_analysis, group_tools
- Move static assets under res/: deer_pipe font/img, makeaquote font,
helldivers img/templates, huoziyinshua HuoZiYinShua
- Add config.py + register_config_items to ncm_saying, random_jm_code,
group_tools; learning_chat unified config bridge
- Remove deprecated: voice_trans plugin, bf_bot/test.py, dead code in
dailywife/deer_pipe, empty dirs, debug scripts under helldivers temp
- Disable brash_general_supercredits_tools (stub comment only)
- bot.py: optional stdout/stderr redirect to log file for Web log viewer,
force ANSI colorize on non-TTY sinks
- Move runtime data (jm_code.json) out of plugin dir into hexi/data
- Docs: plugin-audit-report.md; README reflects removed plugins
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-09-03 00:44:38 +08:00 |
|
 sansenhoshiandClaude
|
25bc30611f
|
docs: remove emoji from README headings
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-09-01 13:26:59 +08:00 |
|
 sansenhoshiandClaude
|
0157399443
|
docs: expand README with features, quick start, config, structure
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-09-01 13:25:16 +08:00 |
|
 sansenhoshiandClaude
|
b61d09f09f
|
Add HeXi bot codebase: custom plugins, web frontends, tests
- hexi core: message handling, rate limiting, cooldown, plugin manager
- Custom plugins: BF stats, daily check-in, quotes, persona cards, etc.
- Community plugins vendored under hexi/plugins with local fixes
- Web admin frontends (learning-chat, persona-admin), unified hexi/web
- Tests for rate_limit/cooldown/memes/persona; poetry.lock
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-09-01 13:13:40 +08:00 |
|
sansenhoshi
|
1783c60afa
|
Initial commit
|
2026-09-01 11:57:58 +08:00 |
|