g1331 / xiaomai-bot

以Graia Ariadne框架为基础的战地1QQ机器人
GNU General Public License v3.0
44 stars 6 forks source link
ariadne battlefield-1 bot graia-ariadne mirai mirai-console python qqbot

xiaomai-bot

一个以Graia Ariadne框架为基础的 QQ 机器人

若您在使用过程中发现了bug或有一些建议,欢迎提出ISSUE、PR或加入 QQ交流群:749094683


状态

Alt

功能简览:

注意!当前BOT还有许多不完善的地方,处于持续开发更新的状态~

简易搭建:

  1. python3.10+环境, Mirai:MCL2.1.0 + 配置MAH

  2. 安装环境依赖(请用推荐方式安装poetry )

    使用poetry的虚拟环境请直接在bot根目录终端执行:

    poetry install

    或者其他虚拟环境(关闭poetry的创建虚拟环境:poetry config virtualenvs.create false)

  3. 打开config_demo.yaml文件填写配置信息,填写好后请改名为config.yaml再启动

  4. 启动bot在bot根目录下使用poetry run python main.py

  5. 根据报错缺啥弄啥吧(

    使用环境变量初始化

    变量名称 解释 示例
    bot_accounts bot所使用的账户使用,做分割 1111111111,222222222
    default_account 默认bot账户 1111111111
    Master bot管理者账户 3333333333
    mirai_host mah服务器 http://localhost:8080
    verify_key mah服务器验证token 123456789
    test_group 发送调试信息的群组 5555555555
    db_link sqlite3数据位置 sqlite+aiosqlite:///data.db

    docker 及 docker-compose 请使用环境变量进行配置

    使用Docker部署

    请先安装docker 如使用环境变量控制sqlite3位置请同时修改部署文件或指令的映射路径

    git clone https://github.com/g1331/xiaomai-bot                                                          # 下载项目
    cd xiaomai-bot                                                                                          # 进入项目目录
    docker build -t xiaomai-bot .                                                                           # 构建docker镜像
    mv config_demo.yaml config.yaml                                                                         # 请修改配置文件
    sqlite3 /xiaomai-bot/config/data.db                                                                     # 创建sqlite数据库
    sqlite> .database                                                                                       # 查看数据库
    sqlite> .quit                                                                                           # 退出sqlite
    docker run -d --name xiaomai-bot\                                                                       # 容器名
      --net=host \                                                                                      # 使用主机网络
      -v /xiaomai-bot/config/config.yaml:/xiaomai-bot/config.yaml \                                     # 挂载配置文件
      -v /xiaomai-bot/config/data.db:/xiaomai-bot/data.db \                                             # 挂载数据库
      -v /xiaomai-bot/data/battlefield:/xiaomai-bot/data/battlefield/ \                                 # 挂载战地一机器人资源
      -v /xiaomai-bot/imgs/random_picture:/xiaomai-bot/modules/self_contained/random_picture/imgs/ \    # 挂载随机图片
      -v /xiaomai-bot/imgs/random_wife:xiaomai-bot/modules/self_contained/random_wife/imgs/ \           # 挂载随机老婆图片
      -v /xiaomai-bot/imgs/random_dragon:xiaomai-bot/modules/self_contained/random_dragon/imgs/ \       # 挂载随机龙图图片
    #      -e bot_accounts=bot所使用的账户使用,做分割
    #      -e default_account=默认bot账户
    #      -e Master=bot管理者账户
    #      -e mirai_host=mah服务器
    #      -e verify_key=mah服务器验证token
    #      -e test_group=发送调试信息的群组
    #      -e db_link=sqlite3数据位置
      xiaomai-bot                                                                                       # 运行容器

    使用docker-compose部署

    请先安装docker与docker-compose 如使用环境变量控制sqlite3位置请同时修改部署文件或指令的映射路径

git clone https://github.com/g1331/xiaomai-bot                                                          # 下载项目
cd xiaomai-bot                                                                                          # 进入项目目录
sqlite3 /xiaomai-bot/config/data.db                                                                     # 创建sqlite数据库
sqlite> .database                                                                                       # 查看数据库
sqlite> .quit                                                                                           # 退出
mv config_demo.yaml config.yaml                                                                         # 请修改配置文件,以及docker-compose.yml中的挂载路径
docker-compose up -d                                                                                    # 构建并运行容器

V3项目结构与核心内容

项目结构:


XiaoMaiBot

├─── core               核心-机器人配置/信息

│  ├─── orm             对象关系映射-进行数据库处理

│  │  ├─── __init__.py

│  │  └─── tables.py    内置表

│  ├─── models          辅助控制组件

│  │  └─── ...

│  ├─── bot.py          机器人核心代码-负责统一调度资源

│  ├─── config.py       机器人配置访问接口

│  ├─── control.py      控制组件-鉴权、开关前置、冷却

│  └─── ...

├─── data               存放数据文件

│  └─── ...

├─── resources          存放项目资源

│  └─── ...

├─── utils              存放运行工具

│  └─── ...

├─── log                机器人日志目录

│  ├─── xxxx-xx-xx

│  │  ├─── common.log   常规日志

│  │  └─── error.log    错误日志

│  └─── ...

├─── modules            机器人插件目录

│  ├─── required        必须插件

│  │  └─── ...

│  ├─── self_contained  内置插件

│  │  └─── ...

│  └─── ...

├─── config.yaml        机器人主配置文件

├─── main.py            应用执行入口

├─── pyproject.toml     项目依赖关系和打包信息

├─── poetry.lock        项目依赖

├─── README.md          项目说明文件

└─── ...  

可视化图表

核心(core):

orm:

配置:

bot基础配置:

控制组件(control):

Permission 权限判断:

Frequency频率限制:

Config配置判断:

Distribute多账户消息分发:

Function功能开关:

插件结构:

metadata.json:

{
    "level": "插件等级1/2/3",
    "name": "文件名",
    "display_name": "显示名字",
    "version": "0.0.1",
    "authors": ["作者"],
    "description": "描述",
    "usage": ["用法"],
    "example": ["例子"],
    "default_switch": true,
    "default_notice": false
}

modules:

modules = {
    "module_name": {
        "groups": {
            "group_id": {
                "switch": bool,
                "notice": bool
            }
        },
        "available": bool
    }
}

内置插件(modules.required):

auto_upgrade(自动检测更新):

saya_manager(插件管理):

perm_manager(权限管理):

管理/查询权限

response_manager(响应管理):

管理/查询多账户响应模式

helper(帮助菜单/功能管理):

生成帮助菜单,打开/关闭群功能

status(运行状态):


鸣谢 & 相关项目

感谢 GraiaProject 带来的这些项目:

本BOT在开发中参考了如下项目:

Stargazers over time

Stargazers over time