Loading... # 基于CQHTTP的简易QQ机器人 ### 入口 ``` <?php require 'fun.php'; error_reporting(0);//禁用错误报告,也就是不显示错误 header("content-type:application/json"); $content = file_get_contents("php://input"); $Data = json_decode($content, true); //私聊 if ($Data['message_type'] == "private") { if ($Data['message']=='帮助'){ exit('{"reply": "[CQ:image,file=file:///www/wwwroot/api.reaper0s.com/cq/help.png,type=show,id=40004]"}'); // exit('{"reply": "愚者的机器人\n----------帮助----------\n\n--发送 美女图片--返回图片\n----美女/风景/动漫 图片\n\n--发送 抖音视频--返回视频\n--发送 黄油视频--返回视频\n--发送 绑定.学号.手机号\n----开启通达自动疫情签到\n--发送 解绑.学号.手机号\n----关闭通达自动疫情签到\n------注意用分隔符.隔开 \n--发送其他字符\n----机器人AI聊天\n\n黄油暂不开放"}');https://s1.ax1x.com/2022/04/29/LvnTte.jpg } //返回图片 if (strpos($Data['message'], '图片') !== false) { if (strpos($Data['message'], '美女') !== false) { exit('{"reply": "' . image('meizi') . '"}'); } if (strpos($Data['message'], '动漫') !== false) { exit('{"reply": "' . image('dongman') . '"}'); } if (strpos($Data['message'], '风景') !== false) { exit('{"reply": "' . image('fengjing') . '"}'); } } //返回视频 if (strpos($Data['message'], '视频') !== false) { if (strpos($Data['message'], '抖音') !== false) { exit('{"reply": "' . video('douyin') . '"}'); } if ($Data['user_id']=='2656281252') { if (strpos($Data['message'], '黄油') !== false) { exit('{"reply": "' . video('yello') . '"}'); } } } // 疫情签到 if (strpos($Data['message'], '绑定') !== false) { $userid=explode(".",$Data['message'])[1]; $phoneid=explode(".",$Data['message'])[2]; $QQid=$Data['user_id']; exit('{"reply": "'.sign('true',$userid,$phoneid,$QQid).'"}'); } if (strpos($Data['message'], '解绑') !== false) { $userid=explode(".",$Data['message'])[1]; $phoneid=explode(".",$Data['message'])[2]; $QQid=$Data['user_id']; exit('{"reply": "'.sign('false',$userid,$phoneid,$QQid).'"}'); } //歌曲 if (strpos($Data['message'], '歌曲') !== false) { if (strpos($Data['message'], '随机') !== false) { exit('{"reply": "[CQ:record,file=https://api.uomg.com/api/rand.music,cache=0,c=8]"}'); } $musictype=explode("歌曲",$Data['message'])[0]; exit('{"reply": "'.music($musictype).'"}'); } //聊天 exit('{"reply": "'.chat($Data['message']).'"}'); } //群聊 if ($Data['message_type'] == "group") { if (strpos($Data['message'], 'CQ:at') !== false) { $message=str_replace('[CQ:at,qq=3628599071] ', '',$Data['message']); //返回帮助文档 if (strpos($message, '帮助') !== false) { exit('{"reply": "[CQ:image,file=file:///www/wwwroot/api.reaper0s.com/cq/help.png,type=show,id=40004]","at_sender":true}'); } //返回图片 if (strpos($message, '图片') !== false) { if (strpos($message, '美女') !== false) { exit('{"reply": "' . image('meizi') . '","at_sender":true}'); } if (strpos($message, '动漫') !== false) { exit('{"reply": "' . image('dongman') . '","at_sender":true}'); } if (strpos($message, '风景') !== false) { exit('{"reply": "' . image('fengjing') . '","at_sender":true}'); } } //返回视频 if (strpos($message, '视频') !== false) { if (strpos($message, '抖音') !== false) { exit('{"reply": "' . video('douyin') . '"}'); } if ($Data['user_id']=='2656281252') { if (strpos($message, '黄油') !== false) { exit('{"reply": "' . video('yello') . '"}'); } } } // 疫情签到 if (strpos($message, '绑定') !== false) { $userid=explode(".",$message)[1]; $phoneid=explode(".",$message)[2]; $QQid=$Data['user_id']; exit('{"reply": "'.sign('true',$userid,$phoneid,$QQid).'\n加好友,接收打卡情况通知","at_sender":true}'); } if (strpos($message, '解绑') !== false) { $userid=explode(".",$message)[1]; $phoneid=explode(".",$message)[2]; $QQid=$Data['user_id']; exit('{"reply": "'.sign('false',$userid,$phoneid,$QQid).'","at_sender":true}'); } //歌曲 if (strpos($message, '歌曲') !== false) { if (strpos($message, '随机') !== false) { exit('{"reply": "[CQ:record,file=https://api.uomg.com/api/rand.music,cache=0,c=8]"}'); } $musictype=explode("歌曲",$message)[0]; exit('{"reply": "'.music($musictype).'"}'); } //聊天 exit('{"reply": "'.chat($message).'","at_sender":true}'); } } //加好友 自动同意好友请求 if ($Data['post_type'] == "request") { if ($Data['comment'] == "愚者") { exit('{"approve": "true"}'); } } ``` ### 封装PHP GET/POST请求 ``` <?php function httpRequest($url, $method, $postfields = null, $headers = array(), $debug = false) { $method = strtoupper($method); $ci = curl_init(); /* Curl settings */ curl_setopt($ci, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0); curl_setopt($ci, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.2; WOW64; rv:34.0) Gecko/20100101 Firefox/34.0"); curl_setopt($ci, CURLOPT_CONNECTTIMEOUT, 60); /* 在发起连接前等待的时间,如果设置为0,则无限等待 */ curl_setopt($ci, CURLOPT_TIMEOUT, 7); /* 设置cURL允许执行的最长秒数 */ curl_setopt($ci, CURLOPT_RETURNTRANSFER, true); switch ($method) { case "POST": curl_setopt($ci, CURLOPT_POST, true); if (!empty($postfields)) { $tmpdatastr = is_array($postfields) ? http_build_query($postfields) : $postfields; curl_setopt($ci, CURLOPT_POSTFIELDS, $tmpdatastr); } break; default: curl_setopt($ci, CURLOPT_CUSTOMREQUEST, $method); /* //设置请求方式 */ break; } $ssl = preg_match('/^https:\/\//i',$url) ? TRUE : FALSE; curl_setopt($ci, CURLOPT_URL, $url); if($ssl){ curl_setopt($ci, CURLOPT_SSL_VERIFYPEER, FALSE); // https请求 不验证证书和hosts curl_setopt($ci, CURLOPT_SSL_VERIFYHOST, FALSE); // 不从证书中检查SSL加密算法是否存在 } //curl_setopt($ci, CURLOPT_HEADER, true); /*启用时会将头文件的信息作为数据流输出*/ curl_setopt($ci, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ci, CURLOPT_MAXREDIRS, 2);/*指定最多的HTTP重定向的数量,这个选项是和CURLOPT_FOLLOWLOCATION一起使用的*/ curl_setopt($ci, CURLOPT_HTTPHEADER, $headers); curl_setopt($ci, CURLINFO_HEADER_OUT, true); /*curl_setopt($ci, CURLOPT_COOKIE, $Cookiestr); * *COOKIE带过去** */ $response = curl_exec($ci); $requestinfo = curl_getinfo($ci); $http_code = curl_getinfo($ci, CURLINFO_HTTP_CODE); if ($debug) { echo "=====post data======\r\n"; var_dump($postfields); echo "=====info===== \r\n"; print_r($requestinfo); echo "=====response=====\r\n"; print_r($response); } curl_close($ci); return $response; //return array($http_code, $response,$requestinfo); } ``` ### 函数实现 数据库连接使用Medoo框架 ``` <?php require 'httpRequest.php'; require 'Medoo.php'; use Medoo\Medoo; //图片 function image($type) { // https://raw.sevencdn.com/reaper0s/apicloud/master/img/meinv/$imagename.jpg if($type=='meizi'){ return str_replace(' ', '', "[CQ:image,file=https://api.vvhan.com/api/tao,type=show,cache=0,c=8]"); } return str_replace(' ', '', "[CQ:image,file=https://api.btstu.cn/sjbz/api.php?lx={$type}&format=images,type=show,cache=0,c=8]"); } //视频 function video($type) { // 抖音视频 if ($type == 'douyin') { $min = 1; $max = 141; $videoname = mt_rand($min, $max); return str_replace(' ', '', "[CQ:video,file=https://tucdn.wpon.cn/api-girl/videos/$videoname.mp4,c=3]"); } // 黄色视频 if ($type == 'yello') { // 连接数据库 $database = new Medoo([ 'database_type' => 'mysql', 'database_name' => '', 'server' => 'localhost', 'username' => '', 'password' => '', 'charset' => 'utf8mb4', 'port' => 3306, ]); $min = 1; $max = 320000; $id = mt_rand($min, $max); $videodb = $database->get("yellovideo", [ "videotitle", "videourl" ], [ "id" => $id ]); $videoinfo = $videodb['videotitle'] . '\n' . $videodb['videourl']; return str_replace(' ', '', "$videoinfo"); } } //签到 绑定 解绑 function sign($type, $userid, $phoneid,$QQid) { // 连接数据库 $database = new Medoo([ 'database_type' => 'mysql', 'database_name' => '', 'server' => 'localhost', 'username' => '', 'password' => '', 'charset' => 'utf8mb4', 'port' => 3306, ]); if ($type == 'true') { $database->insert("nytdsign", [ "userid" => $userid, "phoneid" => $phoneid, "QQ"=> $QQid]); $database->update("nytdsign", [ "state" => 1, "phoneid" => $phoneid, "QQ"=> $QQid ], [ "userid" => $userid, ]); return str_replace(' ', '', "成功绑定,通达自动疫情签到"); } if ($type == 'false') { $database->update("nytdsign", [ "state" => 0, "QQ"=>'' ], [ "userid" => $userid, "phoneid" => $phoneid ]); return str_replace(' ', '', "成功解绑,通达自动疫情签到"); } } //歌曲 function music($type){ return str_replace(' ', '', "[CQ:record,file=https://api.uomg.com/api/rand.music?sort=$type,cache=0,c=8]"); } //聊天 function chat($msg) { return str_replace(' ', '', json_decode(httpRequest("http://api.qingyunke.com/api.php?key=free&appid=0&msg=$msg", 'get'), true)["content"]); } ``` 最后修改:2022 年 05 月 01 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 1 如果觉得我的文章对你有用,请随意赞赏
9 条评论
特殊服务一般怎么问a0cz.cn
2025年10月新盘 做第一批吃螃蟹的人coinsrore.com
新车新盘 嘎嘎稳 嘎嘎靠谱coinsrore.com
新车首发,新的一年,只带想赚米的人coinsrore.com
新盘 上车集合 留下 我要发发 立马进裙coinsrore.com
做了几十年的项目 我总结了最好的一个盘(纯干货)coinsrore.com
新车上路,只带前10个人coinsrore.com
新盘首开 新盘首开 征召客户!!!coinsrore.com
新项目准备上线,寻找志同道合 的合作伙伴coinsrore.com
新车即将上线 真正的项目,期待你的参与coinsrore.com
新盘新项目,不再等待,现在就是最佳上车机会!coinsrore.com
新盘新盘 这个月刚上新盘 新车第一个吃螃蟹!coinsrore.com
做了几十年的项目 我总结了最好的一个盘(纯干货)
新项目准备上线,寻找志同道合的合作伙伴coinsrore.com
建议补充性能优化方案,增强实用性。
老话题新解读,展现了深刻的反思精神。
独特的构思和新颖的观点,让这篇文章在众多作品中脱颖而出。
这是一篇佳作,无论是从内容、语言还是结构上,都堪称完美。
哈哈哈,写的太好了https://www.lawjida.com/