mirror of https://github.com/dnomd343/tgbot
Dnomd343
3 years ago
commit
1ed8a3a50b
4 changed files with 154 additions and 0 deletions
@ -0,0 +1,2 @@ |
|||||
|
BOT_NAME={Bot Username} |
||||
|
BOT_TOKEN={Bot Api_token} |
@ -0,0 +1,23 @@ |
|||||
|
<?php |
||||
|
|
||||
|
$cmds = array( // 命令列表 |
||||
|
'test' |
||||
|
); |
||||
|
|
||||
|
function route($cmd, $rawParam) { // 命令请求路由 |
||||
|
switch ($cmd) { |
||||
|
case 'test': |
||||
|
test($rawParam); |
||||
|
break; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
function routeCallback($cmd, $rawParam) { // 回调请求路由 |
||||
|
switch ($cmd) { |
||||
|
case 'test': |
||||
|
testCallback($rawParam); |
||||
|
break; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
?> |
@ -0,0 +1,69 @@ |
|||||
|
<?php |
||||
|
|
||||
|
require_once 'cmdRoute.php'; |
||||
|
require_once 'tgInterface.php'; |
||||
|
|
||||
|
$env = loadEnv(); |
||||
|
$apiToken = $env['BOT_TOKEN']; |
||||
|
$botAccount = $env['BOT_NAME']; |
||||
|
|
||||
|
$apiPath = 'https://api.telegram.org/bot' . $apiToken; // Telegram API接口 |
||||
|
$webhook = json_decode(file_get_contents("php://input"), TRUE); // Webhook接受信息 |
||||
|
|
||||
|
$isCallback = isset($webhook['callback_query']) ? true : false; |
||||
|
if ($isCallback) { |
||||
|
$message = $webhook['callback_query']['message']; |
||||
|
$messageText = $webhook['callback_query']['data']; |
||||
|
$messageFrom = $webhook['callback_query']['from']; |
||||
|
} else { |
||||
|
$message = $webhook['message']; |
||||
|
$messageText = $webhook['message']['text']; |
||||
|
$messageFrom = $webhook['message']['from']; |
||||
|
} |
||||
|
|
||||
|
$chat = $message['chat']; |
||||
|
$chatId = $chat['id']; |
||||
|
$messageId = $message['message_id']; |
||||
|
$isGroup = ($chat['type'] === 'group') ? true : false; |
||||
|
$userId = $messageFrom['id']; |
||||
|
$userName = $messageFrom['first_name']; |
||||
|
$userAccount = $messageFrom['username']; |
||||
|
$userLanguage = $messageFrom['language_code']; |
||||
|
|
||||
|
foreach ($cmds as $cmd) { |
||||
|
if (strpos($messageText, '/' . $cmd) === 0) { // 判断请求开头 |
||||
|
$rawParam = substr($messageText, strlen($cmd) + 1); // 获取请求参数 |
||||
|
if ($isGroup && strpos($rawParam, '@' . $botAccount) === 0) { |
||||
|
$rawParam = substr($rawParam, strlen($botAccount) + 1); // 去除群组中@机器人 |
||||
|
} |
||||
|
$rawParam = trim($rawParam); // 消除命令参数前后空格 |
||||
|
if ($isCallback) { |
||||
|
routeCallback($cmd, $rawParam); |
||||
|
} else { |
||||
|
route($cmd, $rawParam); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
function test($rawParam) { |
||||
|
debugDump(); |
||||
|
} |
||||
|
|
||||
|
function testCallback($rawParam) { |
||||
|
debugDump(); |
||||
|
} |
||||
|
|
||||
|
function loadEnv() { // 载入环境变量 |
||||
|
$file = fopen('.env', 'r'); |
||||
|
$data = array(); |
||||
|
while (!feof($file)) { // 逐行读入文件 |
||||
|
$record = explode('=', trim(fgets($file))); |
||||
|
if (count($record) === 2) { // 合法记录 |
||||
|
$data[$record[0]] = $record[1]; |
||||
|
} |
||||
|
} |
||||
|
fclose($file); |
||||
|
return $data; |
||||
|
} |
||||
|
|
||||
|
?> |
@ -0,0 +1,60 @@ |
|||||
|
<?php |
||||
|
|
||||
|
function sendPayload($payload) { // 发送API请求 |
||||
|
global $apiPath; |
||||
|
$url = $apiPath . '/' . $payload['method'] . '?'; |
||||
|
foreach ($payload as $param => $content) { |
||||
|
$url .= '&' . $param . '=' . urlencode($content); |
||||
|
} |
||||
|
return file_get_contents($url); |
||||
|
} |
||||
|
|
||||
|
function sendMessage($chatId, $params) { // 发送消息 |
||||
|
$params += array ( |
||||
|
'method' => 'sendMessage', |
||||
|
'chat_id' => $chatId |
||||
|
); |
||||
|
return sendPayload($params); |
||||
|
} |
||||
|
|
||||
|
function sendDocument($chatId, $params) { // 发送文件 |
||||
|
$params += array ( |
||||
|
'method' => 'sendDocument', |
||||
|
'chat_id' => $chatId |
||||
|
); |
||||
|
return sendPayload($params); |
||||
|
} |
||||
|
|
||||
|
function sendText($chatId, $msg) { // 发送纯文本 |
||||
|
return sendMessage($chatId, array( |
||||
|
'text' => $msg |
||||
|
)); |
||||
|
} |
||||
|
|
||||
|
function sendAuto($chatId, $content) { // 自动判别发送类型 |
||||
|
if (isset($content['document'])) { // 以文件类型发送 |
||||
|
sendDocument($chatId, $content); |
||||
|
} else { |
||||
|
sendMessage($chatId, $content); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
function debugDump() { // 调试接口 |
||||
|
global $webhook; |
||||
|
global $isCallback, $isGroup; |
||||
|
global $messageId, $chatId, $userId; |
||||
|
global $messageText, $userName, $userAccount, $userLanguage; |
||||
|
$msg .= 'isCallback: ' . ($isCallback ? 'true' : 'false') . PHP_EOL; |
||||
|
$msg .= 'isGroup: ' . ($isGroup ? 'true' : 'false') . PHP_EOL; |
||||
|
$msg .= 'messageText: ' . $messageText . PHP_EOL; |
||||
|
$msg .= 'messageId: ' . $messageId . PHP_EOL; |
||||
|
$msg .= 'chatId: ' . $chatId . PHP_EOL; |
||||
|
$msg .= 'userId: ' . $userId . PHP_EOL; |
||||
|
$msg .= 'userName: ' . $userName . PHP_EOL; |
||||
|
$msg .= 'userAccount: ' . $userAccount . PHP_EOL; |
||||
|
$msg .= 'userLanguage: ' . $userLanguage . PHP_EOL; |
||||
|
sendText($chatId, $msg); |
||||
|
sendText($chatId, json_encode($webhook)); |
||||
|
} |
||||
|
|
||||
|
?> |
Loading…
Reference in new issue