Skip to content

一个基于python适配onebot11协议的轻量级QQ机器人框架/QQBot框架/Onebot框架

License

Notifications You must be signed in to change notification settings

MuRainBot/MuRainBot2

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🤔 概述

MuRainBot2 (MRB2) 是一个基于 Python、适配 OneBot v11 协议的轻量级 QQ 机器人框架。

它专注于提供稳定高效的核心事件处理与 API 调用能力,所有具体功能(如关键词回复、群管理等)均通过插件实现,赋予开发者高度的灵活性。

对于具体的操作(如监听消息、发送消息、批准加群请求等)请先明确:

  • 什么是OneBot11协议
  • 什么是Onebot实现端,什么是Onebot开发框架;
  • Onebot实现端具有哪些功能

✨ 核心特性

  • 🪶 轻量高效: 没有太多冗杂的功能,使用简单,内存占用较低。
  • 🧩 轻松扩展: 灵活的插件系统,让您能够轻松、快速地添加、移除或定制所需功能。
  • 🔁 基于线程池: 基于内置线程池实现并发处理,没有异步的较为复杂的语法,直接编写同步代码。

🚨 重要提醒:关于重构与兼容性

Caution

请注意: 本项目在 2024 年底至 2025 年初进行了一次 彻底的框架重构(主要涉及 dev 分支并在 2025年1月29日 合并至 master)。

当前的 MRB2 版本与重构前的旧版本插件完全不兼容。 如果您是旧版本用户或拥有旧插件,请参考 最新文档 进行适配迁移。

📖 背景与术语

  • MRB2: MuRainBot2 的缩写。
  • OneBot v11 协议: 一个广泛应用于即时通讯软件中的聊天机器人的应用层协议标准,本项目基于此标准开发。详情请见 OneBot v11
  • 框架 (SDK): MRB2 作为一个 OneBot SDK(或称开发框架),负责处理与 OneBot 实现端的通信、事件分发、API 调用封装等底层工作,以及提供插件系统,让开发者可以专注于插件功能的实现。更多通用术语可参考 OneBot v12 术语表 (v11 与 v12 大体相通)。
  • 插件: MRB2 的所有功能都由插件提供。插件通常是放置在 plugins 目录下的 Python 文件或包含 __init__.py 的 Python 包。

什么?你问我为什么要叫MRB2,因为这个框架最初是给我的一个叫做沐雨的qqbot写的,然后之前还有一个写的很垃圾的版本,所以就叫做MRB2

🐛 问题反馈

如果使用时遇到问题,请按以下步骤操作:

  1. 将框架版本更新到 dev 分支
  2. config.yml 中的 debug.enable 设置为 true
  3. 复现您遇到的 Bug。
  4. 检查 Onebot 实现端的日志,确认问题是否源于实现端本身。如果是,请向您使用的实现端反馈。
  5. 如果问题确认在 MRB2 框架:
    • 请准备完整的 MRB2 日志文件 (logs 目录下)。您可以自行遮挡日志中的 QQ 号、群号等敏感信息。
    • 提供清晰的错误描述、复现步骤。
    • 如果开启了 save_dump 且生成了 dump 文件,可以一并提供。(不强制,但是推荐提供,不过需要注意可以检查一下是否包含apikey等敏感信息)
    • 将以上信息提交到项目的 Issues 页面。

📁 目录结构

查看基本目录结构
├─ data                MRB2及插件的临时/缓存文件
│   ├─ ...
├─ Lib                 MRB2的Lib库,插件和MRB2均需要依赖此Lib
│   ├─ __init__.py     MRB2Lib的初始化文件
│   ├─ core            核心模块,负责配置文件读取、与实现端通信、插件加载等
│   |   ├─ ...
│   ├─ utils           工具模块,实现一些偏工具类的功能,例如QQ信息缓存、日志记录、事件分类等
│   |   ├─ ...
│   ...
├─ logs
│   ├─ latest.log      当日的日志
│   ├─ xxxx-xx-xx.log  以往的日志
│   ...
├─ plugins
│   ├─ xxx.py           xxx插件代码
│   ├─ yyy.py           yyy插件代码
│   ...
├─ plugin_configs
│   ├─ xxx.yml          xxx插件的配置文件
│   ├─ yyy.yml          yyy插件的配置文件
│   ...
├─ config.yml           MRB2配置文件
├─ main.py              MRB2的入口文件
└─ README.md            这个文件就不用解释了吧(?)

💻 如何部署?

本项目使用 Python 3.12+ 开发,并利用了其部分新特性 (如 PEP 701)。推荐使用 Python 3.12 或更高版本运行,如果使用 Python 3.12 以下版本,由于未经测试,可能会导致部分代码出现问题。

详细的部署步骤、配置说明和插件开发指南,请查阅:

📕 关于版本

  • 当前版本:1.0.0-dev
  • 版本号格式:<主版本>.<次版本>.<修订版本>[-<特殊标识>] (例如 1.0.0, 1.0.1-beta, 1.1.0-dev)。

❤️ 鸣谢 ❤️

贡献指南: 我们欢迎各种形式的贡献!请将您的 Pull Request 提交到 dev 分支。我们会定期将 dev 分支的稳定更新合并到 master 分支。

感谢所有为 MRB2 付出努力的贡献者!

Contributors

特别感谢 HarcicYangkaokao221BigCookie233 在项目开发过程中提供的宝贵帮助!

⭐ Star History ⭐

🚀 关于性能

本项目在正常使用,默认配置,多群聊,6-8个中等复杂度(如签到、图片绘制(如视频信息展示等)、AI聊天(基于API接口调用的))的插件情况下内存占用稳定在 100-160MB 左右 (具体取决于插件和群聊数量以及配置文件,也可能超过这个范围)

仅安装默认插件,默认配置,情况下内存占用稳定在 40MB-60MB 左右

如果实在内存不够用可调小缓存(配置文件中的 qq_data_cache.max_cache_size)(尽管这个也占不了多少内存)

About

一个基于python适配onebot11协议的轻量级QQ机器人框架/QQBot框架/Onebot框架

Topics

Resources

License

Stars

Watchers

Forks

Contributors 4

  •  
  •  
  •  
  •  

Languages