Giter Club home page Giter Club logo

php-bot's Introduction

Bot

本代码是kaiheila机器人的php示例sdk, 用户可以直接使用该代码或者参照该代码来构建自己的机器人。

本代码既可以当成一个composer包,来供系统调用。也可以当成一个独立的机器人来运行。在本代码中有一个重要的概念叫session。当websocket/webhook在线时,我们认为它和服务器保持了一个session,然后我们可以通过session来处理数据了。

代码说明

该包依赖了swoole,请确定你安装了swoole扩展

docker

如果你觉得安装php相关环境比较麻烦,我们也提供了docker来方便你的使用php-bot:

docker pull kaiheila/php-bot

代码使用

//$session = new WebsocketSession();
$session = new WebhookSession();

// 注册接收frame事件回调,当session收到了正确的frame数据时,就会调用此方法
$session->on($session::EVENT_RECEIVE_FRAME, function($frame){
    
});

// 事件名默认为 channel_type + _ + type组成, 如下代表侦听群聊的文字消息
$session->on("GROUP_1", function($frame){
    
});

// 事件名支持通配符匹配,如下代表侦听群聊的所有消息
$session->on("GROUP*", function($frame){
     
});

// 事件默认是采用了swoole的协程进行异步回调,如果需要同步回调,如下所示
$session->on("GROUP*", function(){}, ['async' => false]);

// 通过webhook/websocket收到消息后,把数据传给session处理即可,session就会自动按上面注册的事件进行处理。
$session->receiveData($data);

在回调中,我们通常会跟据服务端返回的消息,来做一些动作,我们统一封装了ApiClient:

$client = new \kaiheila\api\helpers\ApiHelper($path);
// post json示例
$client->setBody(["foo" => "bar"])->send(\kaiheila\api\helpers\ApiHelper::POST);
// get示例
$client->setQuery(["foo" => "bar"])->send(\kaiheila\api\helpers\ApiHelper::GET);

kaiheila/api 作为composer集成至其它服务内

composer require  kaiheila/api dev-main

参数上文或example, 直接使用session->receiveData($data)来处理数据即可。

注意: 在php-fpm中,正常是不支持async-io的,可能会报async-io must be used in PHP CLI mode的错误,因此在php-fpm模式下时,需要同步处理事件,示例如下:

$session->on($eventName, function(){},  ['async' => false]);

独立机器人

本代码也可以作为一个独立的机器人来运行。

  1. git clone [email protected]:kaiheila/php-bot.git
  2. 进入代码目录cd php-bot,运行composer update
  3. 打开开发者中心, 创建机器人,并更改为webhook/websocket模式。
  4. 更改配置,将开发者中心的配置填入config.php文件中。
cp examples/config.php.sample examples/config.php
# 按照参数说明,修改config.php的配置, vim examples/config.php
# 运行webhook机器人
php examples/webhook.php
# 运行websocket机器人
  1. 在开发者后台,把机器人的地址填入后台。

在做好上述配置后,你也可以试试我们做的一个小机器人【强尼机器人】, 注意它是webhook模式,需要配置ip及端口。

php examples/cyberpunk.php

php-bot's People

Contributors

buptlsp avatar etby avatar fi6 avatar mundanity-fc avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.