middleware('csrf')->except(['cmd']); // 或者 $this->middleware('csrf')->only(['specificMethod']); } public function cmd() { $this->sApiToken = env('telegram_token'); $this->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"])) { http_response_code(200); echo "not have text"; exit; } $sText = $aUpdate["message"]["text"]; // 打断 if ($sText === "/break") { $oTgStep->clearByFromId($aData["fromId"]); $this->sendMessage("ok"); Http::response(200, 'ok'); } // 命令列表 // /cmdList if (strpos($sText, '/cmdList') === 0 || strpos($sText, '\/cmdList') === 0) { $aCmdList = [ '优惠码list' => '/saleCodeList', '优惠码find' => '/saleCodeFind xxhh', // '优惠码add' => '/saleCodeAdd xxhh', // '优惠码del' => '/saleCodeDel__xxhh', // '优惠码set' => '/saleCodeSet__xxhh__field set', '文章list' => '/articleList', '文章like' => '/articleLike__field like', '文章add' => '/articleAdd__name', '文章del' => '/articleDel__id', '文章set' => '/articleSet__id__fild set', ]; $this->sendMessage(json_encode($aCmdList, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT)); Http::response(200, 'ok'); } // 优惠list if (strpos($sText, '/saleCodeList') === 0 || strpos($sText, '\/saleCodeList') === 0) { $aSaleCodeList = Article::select('sale_code', 'sale_rate') ->distinct() ->orderBy("sale_code") ->get() ->toArray(); $this->sendMessage(json_encode($aSaleCodeList, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT)); Http::response(200, 'ok'); } // 优惠find if (strpos($sText, '/saleCodeFind') === 0 || strpos($sText, '\/saleCodeFind') === 0) { list(, $sSaleCode) = explode(" ", $sText); $aSaleCodeList = Article::select('sale_code', 'sale_rate') ->where("sale_code", $sSaleCode) ->distinct() ->orderBy("sale_code") ->get() ->toArray(); $this->sendMessage(json_encode($aSaleCodeList, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT)); Http::response(200, 'ok'); } // 文章list if (strpos($sText, '/ArticleList') === 0 || strpos($sText, '\/ArticleList') === 0) { $aArticleList = Article::orderBy("user_name")->get()->toArray(); foreach ($aArticleList as $row) { $this->sendMessage(json_encode($row, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT)); } Http::response(200, 'ok'); } // 文章 like // /ArticleLike__user_name xxx if (strpos($sText, '/ArticleLike') === 0 || strpos($sText, '\/ArticleLike') === 0) { list($sCmd, $sLike) = explode(" ", $sText); list(, $sField) = explode("__", $sCmd); $aArticleList = Article::where($sField, 'like', '%' . $sLike . '%') ->orderBy("user_name") ->get() ->toArray(); foreach ($aArticleList as $row) { $this->sendMessage(json_encode($row, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT)); } Http::response(200, 'ok'); } // 文章 add if (strpos($sText, '/articleAdd') === 0 || strpos($sText, '\/articleAdd') === 0) { list(, $sUserName) = explode(" ", $sText); $newArticle = new Article(); $newArticle->user_name = $sUserName; $r = $newArticle->save(); $this->sendMessage(json_encode($r, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT)); Http::response(200, 'ok'); } // 文章 del if (strpos($sText, '/articleDel') === 0 || strpos($sText, '\/articleDel') === 0) { list(, $iId) = explode(" ", $sText); $article = Article::find($iId); if ($article) { $r = $article->delete(); } else { $r = false; } $this->sendMessage(json_encode($r, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT)); Http::response(200, 'ok'); } // 文章 set // /ArticleSet__id__user_name xxx if (strpos($sText, '/ArticleSet') === 0 || strpos($sText, '\/ArticleSet') === 0) { list($sCmd, $sSet) = explode(" ", $sText); list(, $iId, $sField) = explode("__", $sCmd, 3); $article = Article::find($iId); if ($article) { $article->$sField = $sSet; $r = $article->save(); } else { // 处理未找到的情况 } $this->sendMessage(json_encode($r, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT)); Http::response(200, 'ok'); } } private function sendMessage($sText = '?') { if (env('is_loc') === true) { echo "
";
            var_dump($sText);
        } else {
            $url = "https://api.telegram.org/bot$this->sApiToken/sendMessage?chat_id=$this->sApiChatId&text=" . urlencode($sText);
            file_get_contents($url);
        }
        
    }
    
}