Skip to content

[FEAT] main.py实在是太肥了 #10

Description

@VirTuaL-EnTitY

想解决的问题 / 使用场景

main.py 目前有 5300+ 行,混杂了 Pixiv / 天气 / 音乐(网易云 + 酷狗)/ 一言等多个 API client 的实现,以及插件生命周期、command 路由等逻辑全部堆在一个文件里。

对比项目里已经拆分出来的模块(如 cross_group_memory.pygroup_switch_store.pymedia_parser.py),这几个 API client 明显也具备独立拆分的条件,但目前仍然留在 main.py 里,导致:

  • 新增/修改某个功能(比如加一个音源、调整天气接口)时,要在一个巨大的文件里定位,心智负担较高
  • 新贡献者看代码时不容易快速理解模块边界(AI 如果想要理解功能,必须得看完一整个 main.py,实在是太费 token 了)
  • 单元测试目前主要覆盖了 test_relay_pages.pytest_reply_seg.py 等独立模块,但 Pixiv / 天气 / 音乐 client 的重试与错误处理逻辑因为耦合在 main.py 里,没有被单独覆盖

期望的效果

参考现有拆分方式,把 main.py 中的几个 API client 拆到独立文件中,例如:

  • pixiv_client.py(PixivAPIClient、PixivAPIError)
  • weather_client.py(WeatherAPIClient、WeatherAPIError)
  • music_client.py(NeteaseAPIClient、KugouAPIClient 及对应 Error)
  • hitokoto_client.py(HitokotoAPIClient、HitokotoAPIError)
  • femboy_client.py(FemboyAPIClient、FemboyAPIError)

main.py 只保留 CurrentCortexPlugin 的 command 路由、事件监听和插件生命周期逻辑,通过 import 使用这些 client。

这样也方便后续给每个 client 补充独立的重试/错误处理单元测试。

备选方案(可选)

如果一次性全部拆分改动面太大、不好 review,也可以分阶段来:

  1. 先拆相对独立、依赖最少的天气和一言模块,验证不影响现有测试和功能
  2. 确认没问题后,再逐步拆音乐(网易云+酷狗)和 Pixiv 模块
  3. 最后视情况决定 CommandParser 等公共工具类是否也需要独立出来

附加信息(可选)

现有的 cross_group_memory.pygroup_switch_store.pymedia_parser.py 的拆分方式可以作为参考模板,保持风格统一。

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions