269995848 / qqrobot
QQ的PHP库
dev-master
2020-11-11 01:31 UTC
Requires
- php: >=5.4.0
This package is auto-updated.
Last update: 2024-09-11 09:37:07 UTC
README
QQRobot是一个轻量级、高扩展的QQ机器人PHP开源库,
原来的github被封了,
批量发送功能请慎用,小心被封号
===============
PHP运行环境要求PHP7+。
它依赖于coolq,如果您不熟悉coolq,我提供了快捷安装指南
个人实践代码
QQRobot的权限依赖于QQ的权限,请尽量让您的QQ机器人在群内或其他地方拥有最高权限(管理员),以避免某些群管理功能失效
安装
composer require 269995848/qqrobot dev-master
它
1.消息委托
2.消息代理
3.发送图片、文字
4.消息群发
5.发送音频
6.组件化开发
7.Q群管理,列表获取等
8.自动解析
9.默认异步发送
10.智能对话,图片检黄(内置组件)//图片检黄组件已移除,因为并发性太低
11.事件监听
如何操作
全局配置
$config=[
'proxyQQ' =>'', //消息事件委托转发QQ
'host' =>'127.0.0.1:5700', //监听地址+端口,要配置内网地址,一般是ens0,某些服务器是ens33
'cookies' =>false,
'httpOrS' =>true,
'isLog' =>true, //是否开启日志,默认生成在类库 'qqrobot.log'
'listenQQRobot' =>true, //是否监听
'token' =>'',
'allowFriend' =>true, //是否允许加我为好友
'allowGroup' =>true, //是否允许加我入群
'atParse' =>true, //是否解析at我
'logFile' =>'', //日志文件命名,需要有权限
'self_qq' =>'2442459484' //机器人QQ号
];
$server=new Server($config);
动态配置
这是局部配置,优先级高于全局配置,但只存在于当前server实例中,应用场景不同
use QQRobot\Server;
$server=new Server();
$server->isLog=false; //关闭日志记录
接收事件消息
use QQRobot\Server;
$server=new Server();
$response=$server->response();
对事件产生者回应
对当前事件者回应,必须依赖于当前的server实例
use QQRobot\Server;
use QQRobot\QQRobotConst;
use QQRobot\Client;
$server=new Server();
$response=$server->response();
if(isset($response->notice_type)){
if(
$response->user_id!=$server->config->self_qq
&&
($response->sub_type== QQRobotConst::APPROVE)
&&
($response->notice_type==QQRobotConst::GROUP_INCREASE)
){
$msg=<<<EOT
嘿嘿,你好,欢迎来到本群,我是本群小助手,请@我,并输入"帮助"
EOT;
$client=new Client($response); //开启clien实例
$client->on('back',function()use($msg){
return [
[
'msg'=>$msg, //回应消息,(必填)
'emoji'=>'128552', //可以附带emoji,(不必)
'at'=>'1234567',//是否@qq1234567,如果要@当前事件产生者,则'at'=>'at'.(不必)
'img'=>'绝对路径.png', //(不必)如果你安装是cqa,则不支持这个功能
'rec'=>'音频绝对路径' //不必 如果你安装是cqa,则不支持这个功能
],
[
'msg'=>$msg, //回应消息,(必填)
'emoji'=>'128552', //可以附带emoji,(不必)
'at'=>'1234567',//是否@qq1234567,如果要@当前事件产生者,则'at'=>'at'.(不必)
'img'=>'绝对路径.png', //(不必)如果你安装是cqa,则不支持这个功能
'rec'=>'音频绝对路径' //不必 如果你安装是cqa,则不支持这个功能
],
]
});
}
}
组件化开发
组件化不支持动态配置
use QQRobot\Load;
$load=new Load($config); //($config 不必) 默认会按照当前server实例的配置进行读取
$load->addObserver(new Leave());
$load->addObserver(new Join());
$load->addObserver(new AtMe());
$load->loader();
主动发送消息
主动发送消息事件,不依赖于当前server实例
use QQRobot\Client;
$client=new Client();
$client->on('msg',function(){
return
['msg'=>'你从哪里来?', //(必填)
'emoji'=>'128552', //(不必)
'group'=>true, //(必填) true:发送群里,false:私聊某人
'qq'=>'623582882', //(必填) 群号/qq号
'at'=>'623582882' //(不必)是否@,私聊则无效
'img'=>'绝对路径.png', //不必,如果你安装是cqa,则不支持这个功能
'rec'=>'音频绝对路径' //不必,如果你安装是cqa,则不支持这个功能
];
});
群发
public function time(){
$client=new Client($this->config);
$msg="消息群发啦";
$qun=['xxxx','xxxx','xxxx'];
$emoji=rand(128512,128588);;
$arr=[
'msg'=>$msg,
'emoji'=>$emoji,
'group'=>'true',
'qq'=>'',
'img'=>'qqrobot_detail.png'
];
$msg=[];
foreach($qun as $v){
$arr['qq']=$v;
$msg[]=$arr;
}
$client->on('msg',function()use($msg){
return $msg;
});
}
server实例应在您的项目入口处调用,例如tp5默认是index/index/index
意思是您的意思,我将会继续维护下去,目前正在进行微信机器人开发
微信
支付宝
感谢捐赠者: 消逝,随心所欲,`andYes,忧愁的程序员,大致*如此,人生搬砖工