Eric-Terminal eb07cdb715 feat: 自动登录失败后回退密码登录并补充独立配置 (#1638)
* feat: 自动登录失败后回退密码登录并补充独立配置

改动文件:
- packages/napcat-webui-backend/src/helper/config.ts
- packages/napcat-webui-backend/src/utils/auto_login.ts
- packages/napcat-webui-backend/src/utils/auto_login_config.ts
- packages/napcat-webui-backend/index.ts
- packages/napcat-webui-backend/src/api/QQLogin.ts
- packages/napcat-webui-backend/src/router/QQLogin.ts
- packages/napcat-webui-frontend/src/controllers/qq_manager.ts
- packages/napcat-webui-frontend/src/pages/dashboard/config/login.tsx
- packages/napcat-test/autoPasswordFallback.test.ts

目的:
- 在启动阶段将自动登录流程从“仅快速登录”扩展为“快速登录失败后自动回退密码登录”,并保持二维码兜底。
- 在 WebUI 登录配置页新增独立的自动回退账号/密码配置,密码仅提交与存储 MD5,不回显明文。

效果:
- 后端配置新增 autoPasswordLoginAccount 与 autoPasswordLoginPasswordMd5 字段,并提供读取、更新(空密码不覆盖)和清空能力。
- 新增 QQLogin API:GetAutoPasswordLoginConfig / SetAutoPasswordLoginConfig / ClearAutoPasswordLoginConfig。
- WebUI 登录配置页新增自动回退密码登录区块,支持保存、刷新、清空及“留空不修改密码”交互。
- 新增自动登录回退逻辑单测与配置补丁构造单测,覆盖快速成功、回退成功、回退失败、无密码兜底等场景。

* feat: 精简为环境变量驱动的快速登录失败密码回退

改动目的:
- 按维护者建议将方案收敛为后端环境变量驱动,不新增 WebUI 配置与路由
- 保留“快速登录失败 -> 密码回退 -> 二维码兜底”核心能力
- 兼容快速启动参数场景,降低评审复杂度

主要改动文件:
- packages/napcat-webui-backend/index.ts
- packages/napcat-shell/base.ts
- packages/napcat-webui-backend/src/api/QQLogin.ts
- packages/napcat-webui-backend/src/helper/config.ts
- packages/napcat-webui-backend/src/router/QQLogin.ts
- packages/napcat-webui-frontend/src/controllers/qq_manager.ts
- packages/napcat-webui-frontend/src/pages/dashboard/config/login.tsx
- 删除:packages/napcat-webui-backend/src/utils/auto_login.ts
- 删除:packages/napcat-webui-backend/src/utils/auto_login_config.ts
- 删除:packages/napcat-test/autoPasswordFallback.test.ts

实现细节:
1. WebUI 启动自动登录链路
- 保留 NAPCAT_QUICK_ACCOUNT 优先逻辑
- 快速登录失败后触发密码回退
- 回退密码来源优先级:
  a) NAPCAT_QUICK_PASSWORD_MD5(32 位 MD5)
  b) NAPCAT_QUICK_PASSWORD(运行时自动计算 MD5)
- 未配置回退密码时保持二维码兜底,并输出带 QQ 号的引导日志

2. Shell 快速登录链路
- quickLoginWithUin 失败判定统一基于 result 码 + errMsg
- 覆盖历史账号不存在、凭证失效、快速登录异常等场景
- 失败后统一进入同一密码回退逻辑,再兜底二维码

3. 文案与可运维性
- 日志明确推荐优先使用 ACCOUNT + NAPCAT_QUICK_PASSWORD
- NAPCAT_QUICK_PASSWORD_MD5 作为备用方式

效果:
- 满足自动回退登录需求,且改动面显著缩小
- 不修改 napcat-docker 仓库代码,直接兼容现有容器启动参数
- 便于上游快速审阅与合并

* fix: 修复 napcat-framework 未使用变量导致的 CI typecheck 失败

改动文件:
- packages/napcat-framework/napcat.ts

问题背景:
- 上游代码中声明了变量 bypassEnabled,但后续未使用
- 在 CI 的全量 TypeScript 检查中触发 TS6133(声明但未读取)
- 导致 PR Build 机器人评论显示构建失败(Type check failed)

具体修复:
- 将以下语句从“赋值后未使用”改为“直接调用”
- 原:const bypassEnabled = napi2nativeLoader.nativeExports.enableAllBypasses?.(bypassOptions);
- 现:napi2nativeLoader.nativeExports.enableAllBypasses?.(bypassOptions);

影响与效果:
- 不改变运行时行为(仍会执行 enableAllBypasses)
- 消除 TS6133 报错,恢复 typecheck 可通过

本地验证:
- pnpm run typecheck:通过
- pnpm run build:framework:通过
- pnpm run build:shell:通过

---------

Co-authored-by: 手瓜一十雪 <nanaeonn@outlook.com>
2026-02-21 14:18:34 +08:00
2025-03-16 09:33:06 +08:00
2024-11-23 18:52:53 +08:00
2025-11-13 15:39:42 +08:00
2026-02-05 12:56:53 +08:00
2026-01-27 12:59:18 +08:00
2025-03-16 09:36:27 +08:00

NapCat

NapCat

Modern protocol-side framework implemented based on NTQQ.

云起兮风生,心向远方兮路未曾至.


New Feature

在 v4.8.115+ 版本开始

  1. NapCatQQ 支持 Stream Api
  2. NapCatQQ 推荐 message_id/user_id/group_id 均使用字符串类型
  • [1] 解决 Docker/跨设备/大文件 的多媒体上下传问题
  • [2] 采用字符串可以解决扩展到int64的问题同时也可以解决部分语言如JavaScript对大整数支持不佳的问题增加极少成本。

Welcome

  • NapCatQQ is a modern implementation of the Bot protocol based on NTQQ.
    • NapCatQQ 是现代化的基于 NTQQ 的 Bot 协议端实现

Feature

  • Easy to Use
    • 作为初学者能够轻松使用.
  • Quick and Efficient
    • 在低内存操作系统长时运行.
  • Rich API Interface
    • 完整实现了大部分标准接口.
  • Stable and Reliable
    • 持续稳定的开发与维护.

Quick Start

可前往 Release 页面下载最新版本

首次使用请务必查看如下文档看使用教程

项目非盈利,涉及 对接问题/基础问题/下层框架问题 请自行搜索解决,本项目社区不提供此类解答。

Docs Github.IO Cloudflare.Worker Cloudflare.HKServer
Docs Cloudflare.Pages Server.Other NapCat.Top
QQ Group QQ Group#4 QQ Group#3 QQ Group#2 QQ Group#1
Telegram Telegram
DeepWiki Ask DeepWiki

请不要在其余社区提及本项目(包括其余协议端/相关应用端项目)引发争论如有建议到达官方交流群讨论或PR。

Thanks

  • Lagrange 对本项目的大力支持 参考部分代码 已获授权

  • AstrBot 是完美适配本项目的LLM Bot框架 在此推荐一下

  • MaiBot 一只赛博群友 麦麦 Bot框架 在此推荐一下

  • qq-chat-exporter 基于NapCat的消息导出工具 在此推荐一下

  • 不过最最重要的 还是需要感谢屏幕前的你哦~


License

本项目采用 混合协议 开源,因此使用本项目时,你需要注意以下几点:

  1. 第三方库代码或修改部分遵循其原始开源许可.
  2. 本项目获取部分项目授权而不受部分约束
  3. 项目其余逻辑代码采用本仓库开源许可.

本仓库仅用于提高易用性,实现消息推送类功能,此外,禁止任何项目未经仓库主作者授权基于 NapCat 代码开发。使用请遵守当地法律法规,由此造成的问题由使用者和提供违规使用教程者负责。

Description
Modern protocol-side framework based on NTQQ
Readme 432 MiB
Languages
TypeScript 97.5%
JavaScript 1.4%
HTML 0.5%
Python 0.3%
Batchfile 0.2%
Other 0.1%