https://github.com/quqionfree/qqbot
这是一个QQ机器人,拥有强大的自定义功能(插件系统)(A bot for QQ)
https://github.com/quqionfree/qqbot
cpp cpp-httplib cpp23 go-cqhttp qqbot
Last synced: about 1 month ago
JSON representation
这是一个QQ机器人,拥有强大的自定义功能(插件系统)(A bot for QQ)
- Host: GitHub
- URL: https://github.com/quqionfree/qqbot
- Owner: quqiOnfree
- License: mit
- Created: 2023-02-18T03:35:42.000Z (over 2 years ago)
- Default Branch: master
- Last Pushed: 2024-04-21T06:34:29.000Z (about 1 year ago)
- Last Synced: 2025-04-15T07:08:21.111Z (about 1 month ago)
- Topics: cpp, cpp-httplib, cpp23, go-cqhttp, qqbot
- Language: C++
- Homepage:
- Size: 1.09 MB
- Stars: 7
- Watchers: 1
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# QQ机器人
## 介绍
- 这个QQ机器人拥有插件系统,可以轻松扩展
- 语言:C++23## 依赖
### 前置依赖
- [cpp-httplib](https://github.com/yhirose/cpp-httplib)
- [go-cqhttp](https://github.com/Mrs4s/go-cqhttp)
- [asio](https://github.com/chriskohlhoff/asio)
- [openssl](https://github.com/openssl/openssl)
### 构建
1. 安装 cmake vcpkg c++编译器
2. 执行以下命令
```cmd
vcpkg install openssl
vcpkg install cpp-httplib
vcpkg install asio
```
3. 构建此程序
```cmd
cd 此程序的目录
cmake -B build -S . -DCMAKE_TOOLCHAIN_FILE=你的vcpkg的目录/scripts/buildsystems/vcpkg.cmake
cd build
cmake --build . --config Release -j8
```
4. 1. 配置[go-cqhttp](https://github.com/Mrs4s/go-cqhttp)
2. 运行go-cqhttp再运行此程序即可使用## 功能
### QQ机器人插件系统
#### 创建插件
- 此机器人只有一个框架,用于插件扩展,所有指令(除了基本的help等基础指令)都是通过插件加入
- 插件类
```cpp
#pragma once#include
#include "command.h"
#include "permission.h"namespace qqbot
{
struct PluginInfo
{
//插件名称
std::string name;//插件作者名
std::string author;//插件版本
std::string version;
};class CppPlugin
{
public:
//禁止复制,只能移动
CppPlugin() = default;
CppPlugin(const CppPlugin&) = delete;
~CppPlugin() = default;CppPlugin& operator =(const CppPlugin&) = delete;
//插件加载
virtual void onLoad()
{
}//插件启动
virtual void onEnable()
{
}//插件关闭
virtual void onDisable()
{
}public:
//插件信息
PluginInfo pluginInfo;private:
};
}```
- 插件例子[groupOperator.h](./plugin/groupOperator.h)
```cpp
#include
#include
#include
#include//最基本的三个库
#include "cppPlugin.h"
#include "pluginLibrary.h"
#include "network.h"namespace GroupOperator
{
class GroupOperatorPlugin : public qqbot::CppPlugin //继承插件类
{
public:
GroupOperatorPlugin()
{
qqbot::CppPlugin::pluginInfo.author = "quqiOnfree"; //作者名
qqbot::CppPlugin::pluginInfo.name = "GroupOperator群组管理插件";//插件名称
qqbot::CppPlugin::pluginInfo.version = "0.0.1"; //插件版本
}~GroupOperatorPlugin() = default;
virtual void onLoad()
{
//这里是插件加载之前执行
}virtual void onEnable()
{
//这里是插件加载完成时启动执行//添加指令
qqbot::ServerInfo::getCommander().addCommand("kick",//命令名称
[this](long long groupID,
long long senderID,
const std::string& commandName,
std::vector Args) //lambda表达式或符合格式的函数
{
//...
},
"kick userid true/false", //命令格式
"踢出群成员" //命令作用解释
);//设置权限
qqbot::ServerInfo::getPermission().setGroupDefaultPermission("kick", false);
//true是普通用户可以访问,false是管理员可以访问
//这个可以在配置文件里面进行编辑
}
};
}```
#### 加载插件
需要在[register.cpp](./register/register.cpp)加入一些代码
```cpp
//导入插件
#include "pluginName.h" //插件名namespace qqbot
{
//修改此函数
void Register::init()
{
//添加插件(以GroupOperator为例)
//this->addPlugin(std::make_shared<插件命名空间::插件类>());
this->addPlugin(std::make_shared());
}
//省略下面代码
//...
}```
## 开发此qqbot
### qqbot的各种系统及API
- 权限系统 [Permission System](./doc/permission.md)
- 命令系统 [Command System](./doc/command.md)
- 插件系统 [Plugin System](./doc/plugin.md)