Runnel Zhang
Back to Projects

doge-repo

QQ机器人豆子 Doge的源码库。包括v2(使用CQP),v3(使用mirai),v4(使用AstrBot,当前版本)。

View on GitHub
Python

豆子 Doge 仓库说明

QQ 机器人「豆子 Doge」源码仓库导读与上手指南

本文件旨在帮助你大致了解豆子快速读懂仓库结构了解各版本差异、并尽可能成功部署机器人


对此项目有疑问?

可以直接在wiki提问!DeepWiki

0. 简介

豆子 Doge 诞生于 2019 年,到如今历经四个版本。

v1活跃时间为 2019 年,采用 CQA 。仅有关键词回复和图灵api聊天两个功能,完全基于酷Q自带面板进行配置,不存在源码一说。

v2活跃时间为 2020 年,采用 CQP 。仓库中文件与v2实际功能不完全对应,只包含可以找到的少部分源文件。

  • v2文档可参见: v2_docs.pdf注意:此文档为早期版本,基本不包含此仓库中源文件所涉及的功能)

v3活跃时间为 2022 年,采用 Mirai。仓库基本实现全收录.

v4为现行版本,采用 AstrBot。仓库实时更新。

  • v4文档可参见:v4_docs.md,已整合入bot的知识库,可直接向bot提问来咨询详情

四个版本的豆子始终活跃于数学吧官群,在此对数吧群的各位表示感谢。豆子诞生的契机是认识了丽琪,复刻丽琪的功能也一度成为开发豆子的动力和目标。在开发过程中,丽琪的作者多次进行了倾力指导。没有丽琪,也就不会有如今的豆子。感谢伟大的丽琪之父fyr。特别鸣谢sym学长,在服务器方面不遗余力地进行了大量指导,让豆子得以成功摆脱本地部署的种种不便。

欢迎各位参与豆子的开发工作!

1. 我应该从哪个版本开始?

  • v4(doge-v4)— 当前版本:基于 AstrBot 框架(Python)。如果你是首次部署或想获得最新功能,请从 v4 开始。
  • v3(doge-v3)— 旧版本:基于 Mirai 框架(JVM)。仅用于回溯或研究旧实现,不建议部署。此版本分为四个子模块,其中主体为mirai-nativemirai-jvm
  • v2(doge-v2)— 历史版本:基于 CQP 的早期实现,生态已停运;如需复刻,通常需用 go-cqhttp / mirai-native / MiraiCQ 等替代底层。不建议部署。

2. 功能块/指令概览

.
├── doge-v2/
├── doge-v3/
│   ├── lua-mirai/
│   │   ├── jeffjoke
│   │   └── qs
│   ├── mirai-api-http/
│   │   └── chatlearning
│   ├── mirai-jvm/
│   │   ├── chat
│   │   ├── genshin
│   │   ├── mirage
│   │   ├── nasa
│   │   ├── nc
│   │   ├── netool
│   │   ├── px
│   │   ├── wa
│   │   └── yan
│   └── mirai-native/
│       └── epk/
│           ├── amuse
│           ├── anime
│           ├── ask
│           ├── bing
│           ├── chem
│           ├── chart
│           ├── cotool
│           ├── docs
│           ├── dream
│           ├── echo
│           ├── frun
│           ├── fru
│           ├── gan
│           ├── game
│           ├── gen
│           ├── gpt
│           ├── insult
│           ├── jianh
│           ├── law
│           ├── math
│           ├── meme
│           ├── phil
│           ├── pic-url
│           ├── poem
│           ├── repo
│           ├── run
│           ├── se
│           ├── siku
│           ├── style
│           ├── test
│           ├── tex
│           ├── toonify
│           ├── url-pic
│           ├── ver
│           └── yg
└── doge-v4/
    ├── apis
    ├── complex
    ├── cube
    ├── doubao
    ├── emojimix
    ├── fourier
    ├── genshin
    ├── gol
    ├── gomoku
    ├── honkai
    ├── latex
    ├── liblibapi
    ├── lyrics
    ├── mc
    ├── meme
    ├── mermaid
    ├── mirage
    ├── music
    ├── pack
    ├── pjsk
    ├── pokemon
    ├── poker
    ├── rrpl
    ├── run
    ├── soup
    ├── st
    ├── tangut
    ├── trace
    ├── typst
    ├── utex
    ├── vv
    ├── wa
    ├── wordle
    ├── wiki
    └── wp

3. 快速上手(v4 / AstrBot)

3.1 先决条件

  • Python:建议 3.10+
  • 平台:QQ / QQ 频道 (仅在 aiocqhttp 端进行过部署,其他平台不保证成功)
  • 依赖与配置:运行pip install -r requirements.txt安装依赖的库(可能有冗余)。为了bot的流畅运行,建议预留1G左右内存。
  • 协议端:建议安装 NapCat 并进行登录,配置反向 Websocket 待用。其余实现请自行参考有关文档。

3.2 部署路径

本项目未在AstrBot进行发布,请手动部署。以下全部为linux端部署教程。

方式 A:Docker(推荐)

  1. 安装 Docker / Docker Compose。
  2. 使用以下指令直接部署:
sudo docker run -itd -p 6180-6200:6180-6200 -p 11451:11451 -v $PWD/data:/AstrBot/data -v /etc/localtime:/etc/localtime:ro -v /etc/timezone:/etc/timezone:ro --name astrbot m.daocloud.io/docker.io/soulter/astrbot:latest

该操作会将容器中的/AstrBot/data目录映射到~/astrbot/data。如需映射其他目录请自行修改以上指令。

  1. doge-v4/下的文件复制到~/astrbot/data/plugins/

  2. 通过面板重启bot以加载插件。

(如果不会使用docker不建议使用此方案部署,容易滋生问题。)

方式 B:本地运行

  1. 克隆AstrBot仓库,切换路径至仓库目录。

  2. 运行以下指令:

uv sync
uv run main.py
  1. doge-v4/ 下文件复制到/AstrBot/data/plugins/

  2. 通过面板重启bot以加载插件。

如果仍不会部署请参考AstrBot 官方文档

提示:AstrBot 提供可视化管理面板插件系统;很多配置可以在 WebUI 中完成。

3.3 开发插件(v4)

作为一个成长中的bot,豆子欢迎各位开发者进行pr。

  • plugins/ 下新建独立目录,内含最小化入口与 pyproject.toml/requirements.txt(如需要)。至少应包含main.pymetadata.yaml
  • 插件代码应避免阻塞,尽量使用异步 I/O;
  • 密钥放入环境变量或独立配置文件,不要写死在仓库中。

4. 旧版本导读

4.1 v3(Mirai)

  • 适合复现旧功能或迁移思路;
  • 鉴于 Mirai 官方已跑路,不建议再对此版本进行部署;
  • MCL 登录目前需要自行签名,或者通过 overflow 对接 NapCat,具体操作不多赘述,请自行搜索;
  • mirai-jvm 目录下插件依赖于 mirai-console ,本仓库仅提供src/main下主要源码,请自行分辨将各文件放在Mirai插件模板的合适位置,自行打包后投放至 plugins 目录;
  • lua-mirai 直接基于 mirai-core,具体可见 lua-mirai 官方文档;
  • mirai-api-http 基于 OneBot 标准,其插件理论上可通过 http/ws 连接其他支持 OneBot 的框架(如 NapCat);
  • 鉴于 mirai-native 的特殊性,和 mirai-console 部分插件可能发生冲突,上述方案不一定适用。目前经个人测试确定可行的一个方案是通过 MiraiCQ 连 NapCat 的正向 Websocket,合理放置插件的dlljson位置。v3_epk_config.json无法直接导入,请打开插件面板后对照json逐条配置。

4.2 v2(CQP)

  • 酷Q已停运;如需复刻或回溯,请以其他底层作为事件/协议桥接;
  • 可参考上方针对mirai-native的部署方案进行部署,合理放置插件的dlljson位置,在插件面板导入doge-v2.epk
  • 该目录只包含可以找到的部分源文件,并不能复刻v2豆子全部功能,也缺少相关的本地数据。v2_epk_config.jsondoge-v2.epk解码整理所得,便于查看,无法直接导入。
  • 由于生态陈旧,不建议用户使用 v2

5. 运行与调试建议

  • 最小可运行:先仅接入一个平台(例如 QQ),验证收发消息,再逐步开启其他平台与功能。

  • 日志与排障

    • 启动失败:优先检查 Python 版本、依赖安装、端口占用、环境变量;
    • 登录异常:检查平台凭据、风控/设备锁、频率限制;
    • 收发异常:核对适配器开关、路由/权限、消息上报/推送配置。
    • 回复错误:检查文件目录是否对应、部分功能的 API KEY 是否配置

6. 常见问答(FAQ)

Q: 一次性支持多平台吗?

A: 可以。建议先接一个平台,稳定后再逐步扩展。

Q: 插件该放哪里?怎么热更新?

A: 放在 plugins/。支持热加载;生产环境建议重启以保证一致性。

Q: 需要前置驱动或手机协议文件吗?

A: 取决于所选平台与适配器。请按对应文档准备设备信息、协议选择与风控处理策略。

7. 参考与延伸阅读

若你在使用本导读时发现与仓库实际不符,请提交 Issue 说明具体目录与文件,我们会同步更新本文件。

8. 许可证

本仓库使用 GPL-3.0 许可证。提交贡献即默认接受相同开源协议。