-
- 战地一 战绩查询
- 战地一 服务器管理
- 其余功能请查看modules文件夹
-
- 分群组的alias自定义指令前缀处理
抄其他bot的功能
-
安装环境依赖(请用推荐方式安装poetry )
使用poetry的虚拟环境请直接在bot根目录终端执行:
poetry install
或者其他虚拟环境(关闭poetry的创建虚拟环境:
poetry config virtualenvs.create false
) -
打开config_demo.yaml文件填写配置信息,填写好后请改名为config.yaml再启动
-
启动bot在bot根目录下使用poetry run python main.py
-
根据报错缺啥弄啥吧(
变量名称 | 解释 | 示例 |
---|---|---|
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 如使用环境变量控制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与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 # 构建并运行容器
项目结构:
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 项目说明文件
└─── ...
- AsyncORM
bot基础配置:
- bot_accounts:[]
- default_account
- master_qq
- admins:[]
- host_url
- verify_key
- 成员权限判断
- 群权限判断
- current_weight/total_weight
- require(需要的配置信息)
-
分发require
多账户响应模式:
- 随机响应(默认)
- 指定bot响应(指定模式)
- 开关判断->Function.require("模组名")
插件结构:
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
}
}
- 自动检测Github仓库的更新
- 手动指令执行git pull
- 插件列表
- 已加载插件
- 未加载插件
- 加载插件
- 卸载插件
- 重载插件
- 开启插件
- 关闭插件
管理/查询权限
- 更改用户权限
- 查询用户权限
- 更改群权限
- 查询群权限
- 增删BOT管理
管理/查询多账户响应模式
- 查询BOT列表
- 查询指定群的BOT
- 设定多账户响应模式 随机/指定bot
- 设定指定响应bot
生成帮助菜单,打开/关闭群功能
- 帮助
- 开启功能
- 关闭功能
- 查询bot运行状态
mirai
&mirai-console
: 一个在全平台下运行,提供 QQ Android 和 TIM PC 协议支持的高效率机器人框架
感谢 GraiaProject
带来的这些项目:
Broadcast Control
: 高性能, 高可扩展性,设计简洁,基于 asyncio 的事件系统Ariadne
: 一个设计精巧, 协议实现完备的, 基于 mirai-api-http v2 的即时聊天软件自动化框架Saya
简洁的模块管理系统Scheduler
: 简洁的基于asyncio
的定时任务实现Application
: Ariadne 的前身,一个设计精巧, 协议实现完备的, 基于 mirai-api-http 的即时聊天软件自动化框架
本BOT在开发中参考了如下项目:
SAGIRI BOT
: 一个基于 Mirai 和 Graia-Ariadne 的QQ机器人ABot
: 一个使用 Graia-Ariadne 搭建的 QQ 功能性究极缝合怪机器人redbot
: 一个以 Graia Ariadne 框架为基础的 QQ 机器人