当前位置: 首页 > news >正文

开黑啦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', '啊啊啊啊');

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

 监听到数据

相关文章:

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

安装环境 PHP 拓展 直接使用 宝塔一键安装 &#xff08;Windows系统不支持&#xff09; 设置命令行的PHP版本避免执行脚本时 获取不到 swoole 检查swoole是否安装成功 获取官方SDK GitHub - kaiheila/php-bot: 开黑啦机器人的php版本https://github.com/kaiheila/php-bot 配…...

Vue 中hash 模式与 history 模式的区别

hash 模式&#xff1a; - 地址中永远带着 # 号&#xff0c;不美观。 - 兼容性比较好。 - 通过手机 app 分享地址时&#xff0c;如果 app 效验严格&#xff0c;该地址会被标记为不合法。 history 模式&#xff1a; - 地址干净&#xff0c;美观。 - 兼容性和 hash 模式相比…...

Dockerfile推送私有仓库的两个案例

一&#xff0c;编写Dockerfile制作Web应用系统nginx镜像&#xff0c;生成镜像nginx:v1.1&#xff0c;并推送其到私有仓库。 具体要求如下&#xff1a; &#xff08;1&#xff09;基于centos基础镜像&#xff1b; &#xff08;2&#xff09;指定作者信息&#xff1b; &#xff…...

【指标】指标公式大全,款款经典(建议珍藏)!-神奇指标网

三、指标源码&#xff1a; 1、连续三天高开高走的选股公式 count(o〉ref(c,1&#xff09;andc>o&#xff0c;3)3&#xff1b; 2、连续3天每天的最低价都比前一天高 count&#xff08;l〉ref(c,1&#xff09;,3)3&#xff1b; 3、周量缩小50%或40&#xff05;或n&#x…...

面试题目收集

Zset排行榜功能如何设计key&#xff1f; key就设计成排行榜的名字&#xff0c;比如下面插入或者更新数据 Long zadd(final String key, final double score, final String member) key : 排行榜的名字 memeber : 用户 score : 用户的分数 项目…...

创建R包-2.1:在RStudio中使用Rcpp制作R-Package(更新于2023.8.23)

目录 0-前言 1-在RStudio中创建R包项目 2-创建R包 2.1通过R函数创建新包 2.2在RStudio通过菜单来创建一个新包 2.3关于R包创建的说明 3-添加R自定义函数 4-添加C函数 0-前言 目标&#xff1a;在RStudio中创建一个R包&#xff0c;这个R包中包含C函数&#xff0c;接口是Rc…...

chatGPT如何解释泽众PerformanceRunner性能测试工具?

PerformanceRunner 是一个性能测试工具&#xff0c;可以帮助测试人员进行性能测试。它的主要功能包括&#xff1a; 1. 脚本录制和回放&#xff1a; PerformanceRunner可以录制 HTTP/HTTPS 通信协议的脚本&#xff0c;并能够回放模拟真实用户的行为。通过录制和回放&#xff0c…...

LA@向量组线性相关性

文章目录 向量组线性相关性线性相关线性无关多向量向量组线性相关单向量向量组的线性相关性单位向量向量组线性相关性双向量向量组的线性相关性双向量线性相关的几何意义三向量线性相关的几何意义包含零向量的向量组线性相关概念迁移:线性方程组和线性相关齐次线性方程组和向量…...

[k8s] 基于ubuntu22部署k8s1.28记录

k8s1.28部署已经不依赖docker了&#xff0c;所以不需要安装docker。同理&#xff1a;如果想查看镜像和运行容器&#xff0c;也不能用docker命令去查询了&#xff1a;需要使用crictl。不过crictl命令参数兼容docker&#xff0c;所以使用上手没有啥难度。 1. 配置安装源 根据k8…...

React 事件代理 和原生事件绑定混用:你的选择会导致什么问题?

在React开发中&#xff0c;事件处理是一个常见的任务。React提供了一个方便的事件系统&#xff0c;但有时我们可能会在React组件中与原生DOM事件一起使用。本文将讨论React的事件代理机制与原生事件绑定混用可能导致的一些问题。 React的事件代理 React采用了一种称为"事…...

使用阿里云国外和国内云服务器有什么注意事项?

使用阿里云的国外和国内云服务器时&#xff0c;有一些注意事项需要考虑&#xff1a; 地理位置&#xff1a;选择离你的用户或数据中心最近的地理位置&#xff0c;可以减少延迟和提高访问速度。对于国内用户&#xff0c;使用国内云服务器可能更好&#xff1b;对于国外用户&#…...

【计算机网络】【常考问题总结】

1. ping 127.0.0.1 后会发生什么&#xff1f; ping 127.0.0.1 &#xff1b;ping 0.0.0.0 &#xff1b; ping localhost 面试官问&#xff1a;断网了&#xff0c;还能ping通 127.0.0.1 吗&#xff1f;为什么&#xff1f;_kevin_tech的博客-CSDN博客 2. MTU&#xff0c;MMU是…...

前端基础(props emit slot 父子组件间通信)

前言&#xff1a;如何实现组件的灵活使用&#xff0c;今天学习组件封装用到的props、slot和emit。 目录 props 子组件 父组件 示例代码 slot 示例代码 作用域插槽 emit 示例代码 props 需要实现在其他组件中使用同一个子组件。 子组件 子组件&#xff08;所谓子组件…...

即时通讯:短轮询、长轮询、SSE 和 WebSocket 间的区别

在现代 Web 开发中&#xff0c;即时通讯已经成为许多应用程序的重要组成部分。为了实现即时通讯&#xff0c;开发人员通常使用不同的技术和协议。本文将介绍四种常见的即时通讯实现方法&#xff1a;短轮询、长轮询、SSE&#xff08;服务器发送事件&#xff09;和 WebSocket&…...

高忆管理:药店零售概念回落,开开实业走低,此前7日大涨超80%

药店零售概念18日盘中大幅下挫&#xff0c;到发稿&#xff0c;华人健康跌逾11%&#xff0c;漱玉布衣、塞力医疗跌超9%&#xff0c;重药控股、浙江震元、榜首医药等跌超7%&#xff0c;药易购跌超6%&#xff0c;开开实业跌超3%。 值得注意的是&#xff0c;开开实业此前7个交易日斩…...

Go1.19 排序算法设计实践 经典排序算法对比

详解经典排序算法 01 为什么要学习数据结构与算法 抖音直播排行榜功能 案例 规则&#xff1a;某个时间段内&#xff0c;直播间礼物数TOP10房间获得奖励&#xff0c;需要在每个房间展示排行榜解决方案 •礼物数量存储在Redis-zset中&#xff0c;使用skiplist使得元素整体有序 •…...

3:Ubuntu上配置QT交叉编译环境并编译QT程序到Jetson Orin Nano(ARM)

1.Ubuntu Qt 配置交叉编译环境 1.1 ubuntu 20.04安装Qt sudo apt-get install qtcreator 1.2 配置QT GCC配置同上 最后配置Kits 上面设置完成之后 &#xff0c;设置Kits 中的Device(这是为了能够直接把项目部署到arm设备上) 点击NEXT之后会出现连接被拒绝&#xff0c;不用担…...

CentOS下MySQL的彻底卸载的几种方法

这里我为大家详细讲解下“CentOS下MySQL的彻底卸载的几种方法”的完整攻略。 前言 先通过下列命令找到需要删除的相关文件 rpm -qa mysql* whereis mysql find / -name mysql 需要上传的命令介绍 删除 MySQL 数据目录 rm -rf /var/lib/mysql 删除配置文件 rm -rf /etc/my.cnf…...

Spring 的异常处理机制

Spring 的异常处理机制 ​ 在Spring中&#xff0c;异常处理是一个非常重要的方面&#xff0c;用于捕获和处理应用程序中可能出现的异常情况。Spring提供了多种方式来处理异常。 ​ 使用Spring的异常处理机制主要有以下优点&#xff1a; ​ **统一的异常处理&#xff1a;**通…...

java八股文面试[JVM]——JVM参数

参考&#xff1a;JVM学习笔记&#xff08;一&#xff09;_卷心菜不卷Iris的博客-CSDN博客 堆参数调优入门 jdk1.7&#xff1a; jdk1.8&#xff1a; 面试题&#xff1a;给定-Xms Xmx -Xmn 问 最大的eden区域是多少M。 常用JVM参数 怎么对jvm进行调优&#xff1f;通过参数配…...

DS3231M高精度RTC驱动开发与工业级实时时钟工程实践

1. DS3231M高精度实时时钟库深度解析与嵌入式工程实践DS3231M是Maxim Integrated&#xff08;现为Analog Devices&#xff09;推出的工业级IC接口实时时钟芯片&#xff0c;其核心价值在于2 ppm的温度补偿精度&#xff08;-40C至85C全温域&#xff09;、内置TCXO&#xff08;温度…...

终极指南:SeetaFaceEngine未来展望与人脸识别技术发展趋势分析

终极指南&#xff1a;SeetaFaceEngine未来展望与人脸识别技术发展趋势分析 【免费下载链接】SeetaFaceEngine 项目地址: https://gitcode.com/gh_mirrors/se/SeetaFaceEngine SeetaFaceEngine作为开源人脸识别引擎的标杆&#xff0c;为开发者提供了从人脸检测、关键点定…...

程序员必看!高质量免费源码网推荐

在数字化浪潮席卷全球的今天&#xff0c;代码已成为驱动创新的核心动力。无论是初创企业快速搭建商业平台&#xff0c;还是开发者优化项目架构&#xff0c;高质量的源码资源都能显著缩短研发周期、降低开发成本。然而&#xff0c;面对网络上鱼龙混杂的源码平台&#xff0c;如何…...

嵌入式Linux牛棚养殖监护系统开发实战

1. 项目概述作为一名在嵌入式系统开发领域摸爬滚打多年的工程师&#xff0c;我最近完成了一个很有意思的实战项目——基于嵌入式Linux的牛棚养殖监护系统。这个项目完美结合了嵌入式开发、传感器技术和Qt界面设计&#xff0c;实现了对养殖环境的智能化管理。不同于市面上那些简…...

《jEasyUI 格式化列》

《jEasyUI 格式化列》 引言 jEasyUI 是一款流行的开源jQuery UI库&#xff0c;旨在简化Web用户界面&#xff08;UI&#xff09;的开发。在jEasyUI中&#xff0c;格式化列是一种常见且强大的功能&#xff0c;它允许开发者根据需要自定义表格列的显示格式。本文将详细介绍jEasyUI…...

Spring原理(Bean的生命周期)

一、Bean的作用域Bean 的作⽤域是指 Bean 在 Spring 框架中的某种⾏为模式。⽐如单例作⽤域: 表⽰ Bean 在整个 Spring 中只有⼀份, 它是全局共享的. 那么当其他⼈修改了这个值之后, 那么另⼀个⼈读取到的就是被修改的值作用域说明singleton每个SpringIoc容器内同名称的Bean只有…...

别再只盯着report_timing了!DC综合后,用report_constraint -all_violation全面排查时序与DRC违规(附实战解读)

别再只盯着report_timing了&#xff01;DC综合后全面排查时序与DRC违规的实战指南 在数字IC设计流程中&#xff0c;Design Compiler&#xff08;DC&#xff09;综合后的时序分析环节往往让工程师们又爱又恨。面对密密麻麻的违规报告&#xff0c;新手工程师常陷入两个极端&#…...

5分钟搞定:用BLAST快速检测fastq测序数据污染(附完整物种比例分析脚本)

5分钟快速检测fastq测序数据污染的实战指南 在生物信息学分析中&#xff0c;测序数据质量直接影响后续分析结果的可靠性。fastq格式作为二代测序的通用数据载体&#xff0c;可能因实验操作、样本处理或测序仪交叉污染等因素引入非目标物种序列。传统污染检测方法往往需要复杂的…...

【毕业设计】SpringBoot+Vue+MySQL 养老智慧服务平台平台源码+数据库+论文+部署文档

摘要 随着社会老龄化进程的加快&#xff0c;养老服务需求日益增长&#xff0c;传统养老模式已无法满足现代社会的多元化需求。智慧养老服务平台通过整合信息技术与养老服务资源&#xff0c;能够有效提升养老服务的效率和质量&#xff0c;为老年人提供更便捷、个性化的服务。该…...

Arduino_QTouch库深度解析:AVR电容触摸驱动原理与工业实践

1. Arduino_QTouch 库深度解析&#xff1a;面向嵌入式工程师的 Qtouch 电容式触摸传感器驱动实践指南Atmel&#xff08;现为 Microchip&#xff09;Qtouch 技术是工业级电容式触摸感应方案的标杆之一&#xff0c;其核心优势在于高抗噪性、低功耗、强环境适应性及无需覆盖层的裸…...