开黑啦kook 机器人开发 PHP swoole Liunx 服务器(宝塔)

安装环境 PHP 拓展 直接使用 宝塔一键安装 (Windows系统不支持)

设置命令行的PHP版本避免执行脚本时 获取不到 swoole

检查swoole是否安装成功

获取官方SDK 

GitHub - kaiheila/php-bot: 开黑啦机器人的php版本https://github.com/kaiheila/php-bot

 配置参数 机器人链接模式选择 webhook

密钥 自己设置

回调链接直接填写 (配置回调地址之前 先将机器人邀请进频道,在域名后面一定要自己定义域名端口如果是正常的80端口会被占用导致无法运行

端口一定要开放否则无法监听到,如果是腾讯云就去安全组释放端口,最好在宝塔面板页开放端口

获取到邀请链接后直接请求即可

配置好参数示例: 

使用tp5框架创建一个 api 文件 用于 配置 WebHook 回调地址 处理 Challenge 请求

(数据默认会先被进行 zlib (deflate) 压缩再发送。请先使用你使用的语言的 zlib 相关方法解压,或在提供给 KOOK 开放平台的 callback url 中加上 Query 参数 compress=0 以停用压缩)

<?phpnamespace app\api\controller;use think\Env;
use think\Log;
class Api
{private $config = [];public function __construct(){$this->config = ['token' => Env::get('kook.token'),'verify_token' => Env::get('kook.verify_token'),'encrypt_key' => Env::get('kook.encrypt_key'),];}public function start(){$params = file_get_contents("php://input");Log::info("接收参数");$param = json_decode($params,true);Log::info($param);if (isset($param['encrypt']) && !empty($param['encrypt'])){Log::info('解密信息');$challenge = $this->decryptData($param['encrypt'],$this->config['encrypt_key']);Log::info($challenge);$response_data = json_decode($challenge,true);Log::info($response_data);if (!empty($response_data)){
//            判断是否是验证请求  s 等于 0 代表 消息(包含聊天和通知消息)if (isset($response_data['s']) && $response_data['s'] == 0 && isset($response_data['d']['channel_type']) && $response_data['d']['channel_type'] == 'WEBHOOK_CHALLENGE'){// 判断验证token是否正确if ($response_data['d']['verify_token'] == $this->config['verify_token']) {// code...return json(['challenge' => $response_data['d']['challenge']]);}else {return json(['msg'=>'验证错误!']);}}}}}/*** 数据加密* @param $data* @param $key 密钥* @return string*/private function encryptData($data, $key){$iv = substr(md5(uniqid()), 0, 16);return base64_encode($iv.openssl_encrypt($data, 'aes-256-cbc', $key, 0, $iv));}/**** 数据解密* @param $eData* @param $key  密钥* @return false|string*/private function decryptData($eData, $key){$eData = base64_decode($eData);$iv = substr($eData, 0, 16);return openssl_decrypt(substr($eData, 16), 'aes-256-cbc', $key, 0, $iv);}
}

 在项目根目录(在tp5 command文件夹中创建也可 自定义命令行 ) 创建一个 PHP文件 使用脚本运行 复制官方示例webhook.php即可 配置好参数

 官方示例使用的是 swoole中的 http 服务器

实例化http服务器

$http = new Swoole\Http\Server(监听IP地址,监听端口);

监听IP地址: 可以填写 0.0.0.0 代表所有,可以指定 使用当前服务器IP

监听端口:则是你在机器人后台填写的 http请求地址的端口

参数配置好,打开终端 ,进入项目根目录

使用命令 检查端口是否被占用

netstat  -anp  |  grep 9501

如果被占用这 使用命令 kill 进程 注意如果进程后面跟着 nginx 则代表端口被 nginx占用,那是在绑定域名时设置了端口号,这时候去宝塔域名把绑定了端口的域名删除即可,如果直接kill进程会导致nginx 停止运行(绑定域名时不用设置端口,设置回调地址时设置端口即可

在执行 文件 

php webhook.php 启动 

启动成功 打印 啊啊啊

这是我自己在代码中添加的日志
$session->log('receiveFrame', '啊啊啊啊');

 在频道内随便发送一条信息

 监听到数据

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/50668.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2023年大数据与区块链国际会议 | EI、Scoups检索

会议简介 Brief Introduction 2023年大数据与区块链国际会议&#xff08;ICBDB 2023&#xff09; 会议时间&#xff1a;2023年11月17 -19日 召开地点&#xff1a;中国西安 大会官网&#xff1a;www.icobdb.org 2023年大数据与区块链国际会议&#xff08;ICBDB 2023&#xff09;…

《Go 语言第一课》课程学习笔记(十一)

控制结构 if 的“快乐路径”原则 针对程序的分支结构&#xff0c;Go 提供了 if 和 switch-case 两种语句形式&#xff1b;而针对循环结构&#xff0c;Go 只保留了 for 这一种循环语句形式。 if 语句 if 语句是 Go 语言中提供的一种分支控制结构&#xff0c;它也是 Go 中最常…

Aurora 8B/10B

目录 1. Overview2. Feature List2. Block Diagram3. PDU Transmission Procedure3.1. User InterfaceFraming InterfaceStreaming Interface 3.2. Clock Compensation3.3. Aurora 8B/10B Frame Gen3.4. 8B/10B Transmission Code 4. PDU Reception Procedure5. Flow Control5.…

Android OpenCV(七十五): 看看刚”转正“的条形码识别

前言 2021年,我们写过一篇《OpenCV 条码识别 Android 平台实践》,当时的条形码识别模块位于 opencv_contrib 仓库,但是 OpenCV 4.8.0 版本开始, 条形码识别模块已移动到 OpenCV 主仓库,至此我们无需自行编译即可轻松地调用条形码识别能力。 Bar code detector and decoder…

List 去重两种方式:stream(需要JDK1.8及以上)、HashSet

1、使用Stream 方法 使用JDK1.8及以上 /*** Java合并两个List并去掉重复项的几种做法* param args*/public static void main(String[] args) {String[] str1 {"1", "2", "3", "4", "5", "6"};List<String&…

面试华为,花了2个月才上岸,真的难呀····

花2个月时间面试一家公司&#xff0c;你们觉得值吗&#xff1f; 背景介绍 美本计算机专业&#xff0c;代码能力一般&#xff0c;之前有过两段实习以及一个学校项目经历。第一份实习是大二暑期在深圳的一家互联网公司做前端开发&#xff0c;第二份实习由于大三暑假回国的时间比…

大数据课程K3——Spark的常用案例

文章作者邮箱:yugongshiye@sina.cn 地址:广东惠州 ▲ 本章节目的 ⚪ 掌握Spark的常用案例——WordCount; ⚪ 掌握Spark的常用案例——求平均值; ⚪ 掌握Spark的常用案例——求最大值和最小值; ⚪ 掌握Spark的常用案例——TopK; ⚪ 掌握Spark的常用案例…

流程自动化广泛渗透,盘点RPA高频应用的5大行业

随着工业机器人的广泛应用&#xff0c;机械化的工厂劳动似乎已经逐渐淡出人们的视线。但是这种重复性工作并未消失&#xff0c;反而转移到了办公室中&#xff0c;大量员工忙于处理琐碎且重复的任务&#xff0c;例如数据录入、发票处理和库存管理。然而&#xff0c;随着RPA在各个…

拼多多app商品详情接口 获取pdd商品主图价格销量库存信息

拼多多是中国一家知名的电商平台&#xff0c;以"社交团购新零售"的商业模式闻名&#xff0c;通过手机app和微信小程序等渠道提供商品销售和购物体验。平台上的商品种类丰富多样&#xff0c;涵盖了服装、家居、美妆、食品、数码电子等各个领域。 拼多多的商业模式主要…

【docker】中文无法显示输入等问题解决方法

every blog every motto: You can do more than you think. csdn: https://blog.csdn.net/weixin_39190382?typeblog ID: 胡侃有料 0. 前言 docker 路径中文不显示&#xff0c;无法输入中文问题解决方法 1. 解决方法 1.1 临时解决 打开etc/profile文件&#xff0c;末尾添…

时序分解 | MATLAB实现基于SWD群体分解的信号分解分量可视化

时序分解 | MATLAB实现基于SWD群体分解的信号分解分量可视化 目录 时序分解 | MATLAB实现基于SWD群体分解的信号分解分量可视化效果一览基本介绍程序设计参考资料 效果一览 基本介绍 基于SWD群体分解的分量可视化&#xff0c;基于群体分解的信号分解技术&#xff0c;MATLAB程序…

修改电脑上路由表使笔记本默认走无线

如果笔记本上即连接了有线&#xff0c;也连接了无线&#xff0c;默认电脑会走有线的&#xff0c;通过route print命令查看路由表就可以看出来&#xff0c;因为无线的“metric”跳数要比有线的高 解决方法&#xff1a; 如果想实现让默认走无线&#xff0c;就需要修改自己电脑的…

npm报错:xxx packages are looking for funding run `npm fund` for details(解决办法)

报错信息&#xff1a;30 packages are looking for funding run npm fund for details 报错原因&#xff1a;这里是开发者捐赠支持的提示&#xff0c;打开一个github的链接之后&#xff0c;会显示是否需要打赏捐赠的信息。 解决方案&#xff1a;这个打赏是资源的&#xff0c;因…

Spring框架提供的工具类

目录 排序工具类 Import导入注解 执行时间工具类 简介 示例 占位符工具类 示例

Redis哨兵模式搭建

Redis哨兵模式搭建 在Redis主从复制这篇文章中我们分析了主从复制的特点&#xff0c;其中一个问题就是主机宕机后需要手动调整&#xff0c;修改从机 为主机&#xff0c;不仅不利于迅速恢复生产场景&#xff0c;还会增加人力成本。哨兵模式的出现是就是为了解决我们主从复制模…

Ubuntu18.04 交叉编译openssl-1.1.1

源码下载地址&#xff1a; openssl 此处使用的是openssl-1.1.1-pre5.tar.gz 解压: $tar -zxvf openssl-1.1.1-pre5.tar.gz $cd openssl-1.1.1-pre5/ 执行配置生成Makefile&#xff1a; $./config no-asm shared --prefix$PWD/__install 或者 $./config no-asm shared no-…

远控木马病毒分析

一、病毒简介 SHA256:880a402919ba4e896f6b4b2595ecb7c06c987b025af73494342584aaa84544a1 MD5:0902b9ff0eae8584921f70d12ae7b391 SHA1:f71b9183e035e7f0039961b0ac750010808ebb01 二、行为分析 同样在我们win7虚拟机中&#xff0c;使用火绒剑进行监控&#xff0c;分析行为…

C++ Day3

目录 一、类 【1】类 【2】应用实例 练习&#xff1a; 【3】封装 二、this指针 【1】this指针的格式 【2】必须使用this指针的场合 三、类中的特殊成员函数 【1】构造函数 i&#xff09;功能 ii&#xff09;格式 iii&#xff09;构造函数的调用时机 iv&#xff09;…

Golang使用消息队列(RabbitMQ)

最近在使用Golang做了一个网盘项目&#xff08;类似百度网盘&#xff09;&#xff0c;这个网盘项目有一个功能描述如下&#xff1a;用户会删除一个文件到垃圾回收站&#xff0c;回收站的文件有一个时间期限&#xff0c;比如24h&#xff0c;24h后数据库中记录和oss中文件会被删除…

C语言之扫雷游戏实现篇

目录 主函数test.c 菜单函数 选择循环 扫雷游戏实现分析 整体思路 问题1 问题2 问题3 问题4 游戏函数&#xff08;函数调用&#xff09; 创建游戏盘数组mine 创建游戏盘数组show 初始化游戏盘数组InitBoard 展示游戏盘DisplayBoard 游戏盘置雷SetMine 游戏…