An open API service indexing awesome lists of open source software.

https://github.com/botuniverse/php-libonebot

PHP 的 LibOneBot 库,助力 Onebot 多平台适配
https://github.com/botuniverse/php-libonebot

libonebot onebot php

Last synced: about 2 months ago
JSON representation

PHP 的 LibOneBot 库,助力 Onebot 多平台适配

Awesome Lists containing this project

README

        



Version

GitHub Workflow Status
License
Packagist PHP Version Support

# php-libonebot

PHP 的 LibOneBot 库。LibOneBot 可以帮助 OneBot 实现者快速在新的聊天机器人平台实现 OneBot v12 接口标准。

基于 LibOneBot 实现 OneBot 时,OneBot 实现者只需专注于编写与聊天机器人平台对接的逻辑,包括通过长轮询或 webhook 方式从机器人平台获得事件,并将其转换为 OneBot 事件,以及处理 OneBot
动作请求,并将其转换为对机器人平台 API 的调用。

此外,内部的通信方式有相应的抽象方法,你可以在 libob 的基础上开发或整合其他 Web 框架。

**当前版本还在开发中,在发布正式版之前此库内的接口可能会发生较大变动。**

开发进度见 [更新日志](/docs/update.md)。

## 使用

```shell
composer require onebot/libonebot
```

## 尝试 Demo

在 require 下载 libob 库后,新建文件 `demo.php` 和 `demo.json`,并在 `demo.php` 中写如下代码:

```php
setLogger(new \OneBot\Logger\Console\ConsoleLogger());
$ob->setDriver(
// 此处也可以在 Linux 系统下安装 swoole 扩展后使用 SwooleDriver() 拥有协程能力
new \OneBot\Driver\Workerman\WorkermanDriver(),
new \OneBot\Config\Repository('demo.json')
);
$ob->setActionHandlerClass(\OneBot\V12\Action\ReplAction::class);
$ob->run();
```

在 `demo.json` 中写如下代码:

```json
{
"lib": {
"db": false
},
"communications": {
"http": {
"enable": true,
"host": "0.0.0.0",
"port": 9600,
"event_enabled": true,
"event_buffer_size": 0
}
}
}
```

此 Demo 以一个命令行交互的方式使用 LibOneBot 快速完成了一个 OneBot 实现,命令行中输入内容即可发送到 OneBot,使用 HTTP 或 WebSocket 发送给 LibOneBot 后可以将信息显示在终端内。

```bash
# 运行 OneBot 实现
php demo.php
```

启动后可以利用 Postman 或 Curl 等工具发起请求,以 OneVot V12 协议的[发送消息动作](https://12.onebot.dev/interface/action/message/)为例:

```shell
curl --location --request POST 'http://localhost:9600/' \
--header 'Content-Type: application/json' \
--data-raw '{
"action": "send_message",
"params": {
"detail_type": "group",
"group_id": "12467",
"message": [
{
"type": "text",
"data": {
"text": "我是文字巴拉巴拉巴拉"
}
}
]
}
}'
```

你应该可以看到 OneBot 命令行中出现以下消息:

```shell
[2021-11-18 18:44:39] [INFO] 我是文字巴拉巴拉巴拉
```

并收到以下响应:

```text
{"status":"ok","retcode":0,"data":{"message_id":5007842},"message":""}%
```