snowy-yang
|
d71809d144
|
热重载监督者优雅响应 Ctrl+C:先等子进程收尾再回收
- run_supervisor 捕获 KeyboardInterrupt:不打 traceback、退出码归零,
给子进程 _GRACE_SECONDS=5s 自行收尾窗口(打退出日志、关连接),
超时才 taskkill /F /T;文件变更重启仍立即强杀(子进程不知情不会自己退)
- main() 兜底监督循环间隙的 Ctrl+C
- start.bat 改为发射器:start 新开独立控制台跑 cmd /c 命令行(非批
处理),Ctrl+C 直接停进程,规避「终止批处理操作吗(Y/N)」,发射器
即退;bat 保持纯 ASCII 防 GBK 乱码
|
2026-09-24 21:55:17 +08:00 |
|
snowy-yang
|
6b6492dc8d
|
升级到新版 SDK 并补充点歌业务日志
- 锁定 qqbotsdk b37a53f(含:健康断开零等待重连、静默常规连接日志、
失败才记断开与退避)
- 新增业务日志:启动打印生效配置、点歌/查歌词/帮助、菜单已发、
选歌、按钮点击、语音/文件/直链已发,失败项统一带群号前缀
(此前 18 处日志 17 处是 warning,成功路径完全静默,故日志里
看不到任何点歌消息)
|
2026-09-21 18:26:23 +08:00 |
|
snowy-yang
|
a11c0b375f
|
新增热重载:文件变更自动重启(开发用,默认关)
- musicbot/reload.py:轮询监控 musicbot/ 下的 .py 与 intents.toml/.env,
变更后重启 bot 子进程;跳过 logs/、__pycache__/、.venv/
- 进程级重启而非模块重载:长连接 + 模块级状态 + handler 闭包,
就地重载易留幽灵 handler,重启子进程状态干净
- 子进程用 _MUSICBOT_RELOAD_CHILD 标记,不会套娃自我复制
- Windows 用 taskkill /T 收整棵进程树,实测连续重载无进程泄漏
- 开启方式:`uv run musicbot --reload`(start.bat 已带)或 RELOAD=on
- 监督者不配日志,避免与子进程抢写同一日志文件
|
2026-09-20 22:44:20 +08:00 |
|
snowy-yang
|
9bcdad7aa1
|
新增日志支持、卡片显示专辑封面、菜单去掉音源标注
- 日志:控制台 + logs/musicbot.log(按天轮转、保留 7 天),
LOG_LEVEL/LOG_DIR 可配;目录不可写时退化为仅控制台;
diagnose=False 避免把凭证写进日志
- 卡片用 Markdown 图片语法显示专辑封面(),
封面取自 MusicServer 的 img 字段(tx/wy 有、kw/kg 无)
- 按钮 data 加第 5 段(封面 URL),解码兼容旧 4 段,已发出的按钮不失效
- 菜单去掉每首歌后的(音源)标注;卡片保留"来源:"
- 测试补:封面渲染、无封面源、旧 data 兼容、LOG_LEVEL、日志落盘
|
2026-09-20 22:36:40 +08:00 |
|
snowy-yang
|
7a8adb4571
|
QQ 群点歌 bot:选歌菜单 + 歌曲卡片 + 回调按钮
基于 qqbotsdk 的群点歌机器人:
- 点歌 <歌名>:Markdown 选歌菜单,每行 5 个编号回调按钮 + 上下页
(每页 MENU_PAGE_SIZE 首,默认 10,受内嵌键盘 5 行限制上限 20)
- 点编号弹歌曲卡片:[▶播放] 发语音 / [⬇下载] 发文件或直链(SEND_MODE)
- 支持不 @ 机器人也能触发(GROUP_MESSAGE_CREATE 全量模式),
按 msg_id 排重并拦截机器人自发消息回推(self-echo)
- 直链候选源回退:tx 等源受 CDN 风控时按 kw/wy/mg 逐个换源
- 自动撤回(WITHDRAW)翻页撤旧菜单、选歌撤菜单、点击后撤卡片
|
2026-09-20 22:27:09 +08:00 |
|