123 lines
3.8 KiB
PHP
Executable File
123 lines
3.8 KiB
PHP
Executable File
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace App\Controllers\TomApi\Tg;
|
|
|
|
//use App\Controllers\BaseController;
|
|
//use Psr\Http\Message\ResponseInterface;
|
|
//use Slim\Http\Response;
|
|
//use Slim\Http\ServerRequest;
|
|
|
|
use App\Models\Config;
|
|
use GuzzleHttp\Psr7\ServerRequest;
|
|
use GuzzleHttp\Psr7\Utils;
|
|
use Psr\Http\Message\ResponseInterface;
|
|
use Slim\Http\Response;
|
|
use App\Controllers\Admin\TicketController;
|
|
|
|
final class HookController
|
|
{
|
|
|
|
public $sApiToken;
|
|
public $sApiChatId;
|
|
|
|
public function cmd()
|
|
{
|
|
$this->sApiToken = Config::obtain('telegram_token');
|
|
$this->sApiChatId = Config::obtain('telegram_chatid');
|
|
|
|
// 获取更新
|
|
@$update = json_decode(file_get_contents("php://input"), true);
|
|
|
|
$update = [
|
|
'message' => [
|
|
'chat' => [
|
|
'id' => '-4668400285'
|
|
],
|
|
'text' => '/reply 62 sss'
|
|
]
|
|
];
|
|
|
|
// 获取聊天 ID
|
|
// $chatId = $update["message"]["chat"]["id"];
|
|
|
|
// 获取消息文本
|
|
$message = $update["message"]["text"];
|
|
|
|
// 检查消息是否为 /test
|
|
if ($message === "/test") {
|
|
// 获取服务器时间
|
|
$serverTime = date("Y-m-d H:i:s");
|
|
|
|
// 发送消息到 Telegram
|
|
$this->sendMessage("服务器时间: " . $serverTime);
|
|
|
|
http_response_code(200);exit;
|
|
}
|
|
|
|
if (strpos($message, '/reply') === 0) {
|
|
// 去掉 /reply 字符串
|
|
$responseText = str_replace('/reply', '', $message); // 直接去掉 /reply
|
|
$responseText = trim($responseText); // 去掉前后的空格
|
|
|
|
// 使用空格分割内容
|
|
$responseParts = explode(' ', $responseText, 2); // 分割成两部分
|
|
if (count($responseParts) == 2) {
|
|
$number = $responseParts[0]; // 提取数字部分
|
|
$variableText = $responseParts[1]; // 提取用户输入的文本
|
|
// 构造回复内容
|
|
// $replyMessage = $number . $variableText; // 组合成 "11你好"
|
|
// 发送消息到 Telegram
|
|
// $this->sendMessage($replyMessage);
|
|
|
|
// use GuzzleHttp\Psr7\ServerRequest;
|
|
// use GuzzleHttp\Psr7\Utils;
|
|
|
|
// 创建一个包含请求体的 ServerRequest 实例
|
|
$body = ['comment' => $variableText];
|
|
$request = new ServerRequest('POST', '/ticket/$number', ['Content-Type' => 'application/json'], json_encode($body));
|
|
|
|
// 创建一个 Response 实例
|
|
$response = new Response();
|
|
|
|
// 调用 update 方法
|
|
$controller = new TicketController();
|
|
$controller->update($request, $response, []);
|
|
|
|
}
|
|
|
|
|
|
|
|
http_response_code(200);exit;
|
|
}
|
|
|
|
// if ($message === "/reply") {
|
|
//
|
|
// // 创建一个包含请求体的 ServerRequest 实例
|
|
// $body = ['comment' => 'This is a comment.'];
|
|
// $request = new ServerRequest('PUT', '/ticket/', ['Content-Type' => 'application/json'], json_encode($body));
|
|
//
|
|
// // 创建一个 Response 实例
|
|
// $response = new Response();
|
|
//
|
|
// // 调用 update 方法
|
|
// $controller = new YourController();
|
|
// $controller->update($request, $response, []);
|
|
//
|
|
// }
|
|
|
|
http_response_code(200);exit;
|
|
|
|
}
|
|
|
|
// 发送消息的函数
|
|
public function sendMessage($message) {
|
|
|
|
$url = "https://api.telegram.org/bot$this->sApiToken/sendMessage?chat_id=$this->sApiChatId&text=" . urlencode($message);
|
|
file_get_contents($url);
|
|
|
|
}
|
|
|
|
}
|