This commit is contained in:
hellcat 2025-05-05 17:52:30 +08:00
parent 410c2b344e
commit 5f9f707c8e
372 changed files with 282 additions and 111548 deletions

View File

@ -0,0 +1,112 @@
<?php
declare(strict_types=1);
namespace App\Http\Controllers\Api\TG;
use App\Models\Article;
use App\Services\TomTool\Http;
use App\Services\TG\Http as TGHttp;
final class HookController
{
public function __construct()
{
// $this->middleware('csrf')->except(['cmd']);
// 或者 $this->middleware('csrf')->only(['specificMethod']);
}
public function cmd()
{
try {
$oTGHttp = new TGHttp();
$oTGHttp->sApiToken = env('telegram_token');
$oTGHttp->sApiChatId = env('telegram_chatid');
$sUpdate = file_get_contents("php://input");
$aUpdate = json_decode($sUpdate, true);
@file_put_contents('/www/_tg/bot_log.txt', json_encode($aUpdate, JSON_PRETTY_PRINT));
$aData['chatId'] = $aUpdate["message"]["chat"]["id"];
$aData['fromId'] = $aUpdate["message"]["from"]["id"];
if (!isset($aUpdate["message"]["text"])) {
throw new \Exception("");
}
$sText = $aUpdate["message"]["text"];
// test
// $sText = "\\//Article#List ni__aaa__bbb 111 222";
// $sText = "///\\\SaleCode#SetRate__zzxx 2";
// $sText = "///\\\SaleCode#List";
// $sText = "///\\\SaleCode#Find zzxx";
// $sText = "/Article#Like__sale_code zzx";
// $sText = "////Article#Add jxxjjjj";
// $sText = "//\\\//Article#Del 9";
// $sText = "/Article#Set__1__user_name xxx";
@$aArg = explode(" ", $sText);
@$aOption = explode("__", $aArg[0]);
$sCmd = $this->cleanCmd($aOption[0]);
list($sClass, $sFunc) = explode("#", $sCmd);
$sClass = ucfirst($sClass);
$sFunc = ucfirst($sFunc);
unset($aOption[0]);
unset($aArg[0]);
$aParams['aOption'] = $aOption;
$aParams['aArg'] = $aArg;
$sClassPath = "App\\Services\\TG\\Hook\\Mod\\".$sClass;
if (method_exists($sClassPath, $sFunc)) {
$oInstans = new $sClassPath();
$r = $oInstans->$sFunc($aParams);
// 可以不返回里面直接send
if (isset($r)) {
if (empty($r)) { $r = 'hook的mod返回空'; }
// 返回可以是数组
if (is_array($r)) {
foreach ($r as $row) {
$oTGHttp->sendToTG($row);
}
} else {
$oTGHttp->sendToTG($r);
}
Http::response(200, 'ok');
}
} else {
throw new \Exception("没有这个方法:".$sClass.'#'.$sFunc);
}
} catch (\Throwable $e) {
$sMessage = "错误line:".$e->getLine().": " . $e->getMessage();
$oTGHttp->sendToTG($sMessage);
Http::response(200, 'error');
}
}
private function cleanCmd($input) {
$input = str_replace('\\', '', $input);
$input = str_replace('/', '', $input);
return $input;
}
}

View File

@ -0,0 +1,112 @@
<?php
declare(strict_types=1);
namespace App\Http\Controllers\Api\TG;
use App\Models\Article;
use App\Services\TomTool\Http;
use App\Services\TG\Http as TGHttp;
final class HookController
{
public function __construct()
{
// $this->middleware('csrf')->except(['cmd']);
// 或者 $this->middleware('csrf')->only(['specificMethod']);
}
public function cmd()
{
try {
$oTGHttp = new TGHttp();
$oTGHttp->sApiToken = env('telegram_token');
$oTGHttp->sApiChatId = env('telegram_chatid');
$sUpdate = file_get_contents("php://input");
$aUpdate = json_decode($sUpdate, true);
@file_put_contents('/www/_tg/bot_log.txt', json_encode($aUpdate, JSON_PRETTY_PRINT));
$aData['chatId'] = $aUpdate["message"]["chat"]["id"];
$aData['fromId'] = $aUpdate["message"]["from"]["id"];
if (!isset($aUpdate["message"]["text"])) {
throw new \Exception("");
}
$sText = $aUpdate["message"]["text"];
// test
// $sText = "\\//Article#List ni__aaa__bbb 111 222";
// $sText = "///\\\SaleCode#SetRate__zzxx 2";
// $sText = "///\\\SaleCode#List";
// $sText = "///\\\SaleCode#Find zzxx";
// $sText = "/Article#Like__sale_code zzx";
// $sText = "////Article#Add jxxjjjj";
// $sText = "//\\\//Article#Del 9";
// $sText = "/Article#Set__1__user_name xxx";
@$aArg = explode(" ", $sText);
@$aOption = explode("__", $aArg[0]);
$sCmd = $this->cleanCmd($aOption[0]);
list($sClass, $sFunc) = explode("#", $sCmd);
$sClass = ucfirst($sClass);
$sFunc = ucfirst($sFunc);
unset($aOption[0]);
unset($aArg[0]);
$aParams['aOption'] = $aOption;
$aParams['aArg'] = $aArg;
$sClassPath = "App\\Services\\TG\\Hook\\Mod\\".$sClass;
if (method_exists($sClassPath, $sFunc)) {
$oInstans = new $sClassPath();
$r = $oInstans->$sFunc($aParams);
// 可以不返回里面直接send
if (isset($r)) {
if (empty($r)) { $r = 'hook的mod返回空'; }
// 返回可以是数组
if (is_array($r)) {
foreach ($r as $row) {
$oTGHttp->sendToTG($row);
}
} else {
$oTGHttp->sendToTG($r);
}
Http::response(200, 'ok');
}
} else {
throw new \Exception("没有这个方法:".$sClass.'#'.$sFunc);
}
} catch (\Throwable $e) {
$sMessage = "错误line:".$e->getLine().": " . $e->getMessage();
$oTGHttp->sendToTG($sMessage);
Http::response(200, 'error');
}
}
private function cleanCmd($input) {
$input = str_replace('\\', '', $input);
$input = str_replace('/', '', $input);
return $input;
}
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Some files were not shown because too many files have changed in this diff Show More