首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >基于 PHP 高性能 Webman 框架构建B站直播弹幕机器人

基于 PHP 高性能 Webman 框架构建B站直播弹幕机器人

作者头像
Tinywan
发布2025-09-11 19:27:11
发布2025-09-11 19:27:11
16800
代码可运行
举报
文章被收录于专栏:开源技术小栈开源技术小栈
运行总次数:0
代码可运行

概述

PHP-Bilibili-Danmu 是一个高级集成框架,连接到Bilibili的直播平台,实时处理、记录和互动弹幕(子弹评论/聊天消息)以及其他直播事件。

该系统基于 PHP 高性能 Webman 框架构建,为监控和响应Bilibili直播活动提供了全面的解决方案。

这个框架充当PHP应用程序和Bilibili直播生态系统之间的桥梁,使开发者能够:

  • 监控直播:中的弹幕消息、用户互动和礼物
  • 实时处理和分析: 接收到的流数据
  • 存储和记录: 弹幕消息以供未来参考和分析
  • 通过可配置的自动响应来响应事件
  • 通过管理仪表盘管理互动

该项目利用 Protocol Buffers 进行高效、结构化的消息处理,使其能够可靠地处理大量流数据。

Protocol Buffers 是谷歌开发的一种语言中立、平台中立、可扩展的序列化结构化数据的机制。可以将其视为XML或JSON,但更小、更快,并且能自动生成数据访问代码。

主要功能

PHP-Bilibili-Danmu 为 Bilibili 直播集成提供了强大的功能集。

功能

描述

弹幕处理

捕获、解析和存储来自直播的聊天消息

礼物追踪

记录和处理直播中的礼物交易

直播集成

同时连接到多个直播间

用户管理

跟踪用户互动并维护用户数据

管理仪表盘

提供全面的监控和配置界面

基于角色的访问控制

通过可配置的角色管理权限

国际化

通过翻译系统支持多种语言

快速入门

Step.1 安装

克隆仓库

代码语言:javascript
代码运行次数:0
运行
复制
git clone https://github.com/zxc7563598/php-bilibili-danmu.git

使用Composer安装依赖

代码语言:javascript
代码运行次数:0
运行
复制
cd php-bilibili-danmu

composer install

这将安装所有必需的依赖项,包括Bilibili直播集成库和Webman框架

Step.2 配置

设置环境变量

在根目录下创建一个.env文件,包含以下最小配置:

代码语言:javascript
代码运行次数:0
运行
复制
APP_DEBUG=true
APP_DEFAULT_TIMEZONE=Asia/Shanghai

# 数据库配置
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=bilibili_danmu
DB_USERNAME=root
DB_PASSWORD=your_password

# Redis配置
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379

准备Bilibili cookies

您需要将Bilibili cookies保存到配置文件中。创建运行时目录和cookie文件:

代码语言:javascript
代码运行次数:0
运行
复制
mkdir -p runtime/tmp
touch runtime/tmp/cookie.cfg

然后将您的Bilibili cookies添加到这个文件中。系统将自动处理bili_ticket的刷新。

Step.3 数据库配置

运行数据库迁移以创建必要的表:

代码语言:javascript
代码运行次数:0
运行
复制
vendor/bin/phinx migrate

这将创建所有必需的表,包括用于存储弹幕消息的bl_danmu_logs和用于跟踪直播流的bl_lives

Step.4 连接到直播流

创建一个简单的脚本来连接到Bilibili直播流。以下是一个基本示例:

代码语言:javascript
代码运行次数:0
运行
复制
<?php
require_once__DIR__ . '/vendor/autoload.php';

use app\core\RobotServices;
use Hejunjie\Bililive;

// 从命令行获取房间ID或直接设置
$roomId = $argv[1] ?? 123456; // 替换为实际的房间ID

// 获取身份验证cookie
$cookie = RobotServices::getCookie();

// 连接到直播房间
$client = new Bililive\Client([
    'room_id' => $roomId,
    'cookie' => $cookie
]);

echo"正在连接到房间 $roomId...\n";

// 启动客户端
$client->start();

将其保存为connect.php,并使用php connect.php [ROOM_ID]运行以测试连接。

Step.5 处理弹幕消息

要处理弹幕消息,我们需要向客户端添加事件处理器。扩展之前的脚本:

代码语言:javascript
代码运行次数:0
运行
复制
<?php
require_once__DIR__ . '/vendor/autoload.php';

use app\core\RobotServices;
use Hejunjie\Bililive;
use app\model\DanmuLogs;
use Google\Protobuf\Internal\CodedInputStream;
use app\Protobuf\InteractWordV2\InteractWordV2;

// 从命令行获取房间ID或直接设置
$roomId = $argv[1] ?? 123456; // 替换为实际的房间ID

// 获取身份验证cookie
$cookie = RobotServices::getCookie();

// 连接到直播房间
$client = new Bililive\Client([
    'room_id' => $roomId,
    'cookie' => $cookie
]);

echo"正在连接到房间 $roomId...\n";

// 添加事件处理器
$client->on('DANMU_MSG', function($data) {
    echo"收到来自{$data['info'][2][1]}的弹幕: {$data['info'][1]}\n";
    
    // 保存到数据库
    $danmu = new DanmuLogs();
    $danmu->uid = $data['info'][2][0];
    $danmu->uname = $data['info'][2][1];
    $danmu->content = $data['info'][1];
    $danmu->roomid = $data['roomid'];
    $danmu->save();
});

// 处理INTERACT_WORD消息(进入、关注等)
$client->on('INTERACT_WORD_V2', function($data) {
    $stream = new CodedInputStream($data['data']);
    $message = new InteractWordV2();
    $message->mergeFromStream($stream);
    
    echo"用户互动: {$message->getUname()} (类型: {$message->getMsgType()})\n";
});

// 启动客户端
$client->start();

此脚本连接到直播房间,监听弹幕消息,并将它们存储在数据库中。

以下是系统处理弹幕消息的基本流程:

Step.6 运行应用程序

启动webman HTTP服务器:

代码语言:javascript
代码运行次数:0
运行
复制
php start.php start

对于生产环境,建议以守护进程模式运行:

代码语言:javascript
代码运行次数:0
运行
复制
php start.php start -d

验证安装

启动服务器后,通过以下方式验证安装:

  1. 1. 访问管理仪表盘(通常在http://localhost:8787/admin)
  2. 2. 检查日志以确认Bilibili API连接成功
  3. 3. 确认数据库迁移顺利完成
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-08-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 开源技术小栈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 概述
  • 主要功能
  • 快速入门
    • Step.1 安装
    • Step.2 配置
    • Step.3 数据库配置
    • Step.4 连接到直播流
    • Step.5 处理弹幕消息
    • Step.6 运行应用程序
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档