Browse Source

refactor: new framework and interface of telegram api

master
Dnomd343 3 years ago
parent
commit
9418ece6a9
  1. 32
      main.php
  2. 118
      tgInterface.php

32
main.php

@ -7,7 +7,6 @@ require_once 'tgInterface.php';
$env = loadEnv(); $env = loadEnv();
$apiToken = $env['BOT_TOKEN']; $apiToken = $env['BOT_TOKEN'];
$botAccount = $env['BOT_NAME']; $botAccount = $env['BOT_NAME'];
$apiPath = 'https://api.telegram.org/bot' . $apiToken; // Telegram API接口 $apiPath = 'https://api.telegram.org/bot' . $apiToken; // Telegram API接口
$webhook = json_decode(file_get_contents("php://input"), TRUE); // Webhook接受信息 $webhook = json_decode(file_get_contents("php://input"), TRUE); // Webhook接受信息
@ -21,34 +20,27 @@ if ($isCallback) {
$messageText = $webhook['message']['text']; $messageText = $webhook['message']['text'];
$messageFrom = $webhook['message']['from']; $messageFrom = $webhook['message']['from'];
} }
$chat = $message['chat']; $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'];
$tgEnv = array( $tgEnv = array(
'apiPath' => $apiPath,
'botAccount' => $botAccount,
'isCallback' => $isCallback, 'isCallback' => $isCallback,
'isGroup' => $isGroup, 'isGroup' => ($chat['type'] === 'group') ? true : false,
'messageText' => $messageText, 'messageText' => $messageText,
'messageId' => $messageId, 'messageId' => $message['message_id'],
'chatId' => $chatId, 'chatId' => $chat['id'],
'userId' => $userId, 'userId' => $messageFrom['id'],
'userName' => $userName, 'userName' => $messageFrom['first_name'],
'userAccount' => $userAccount, 'userAccount' => $messageFrom['username'],
'userLanguage' => $userLanguage 'userLanguage' => $messageFrom['language_code']
); );
// tgApi::sendPayload(array(
// 'text' =>
// ))
foreach ($cmds as $cmd) { foreach ($cmds as $cmd) {
if (strpos($messageText, '/' . $cmd) === 0) { // 判断请求开头 if (strpos($messageText, '/' . $cmd) === 0) { // 判断请求开头
$rawParam = substr($messageText, strlen($cmd) + 1); // 获取请求参数 $rawParam = substr($messageText, strlen($cmd) + 1); // 获取请求参数
if ($isGroup && strpos($rawParam, '@' . $botAccount) === 0) { if ($tgEnv['isGroup'] && strpos($rawParam, '@' . $botAccount) === 0) {
$rawParam = substr($rawParam, strlen($botAccount) + 1); // 去除群组中的@ $rawParam = substr($rawParam, strlen($botAccount) + 1); // 去除群组中的@
} }
if (strlen($rawParam) != 0 && substr($rawParam, 0, 1) !== ' ') { break; } // 命令后必须带空格 if (strlen($rawParam) != 0 && substr($rawParam, 0, 1) !== ' ') { break; } // 命令后必须带空格

118
tgInterface.php

@ -2,124 +2,60 @@
class tgApi { class tgApi {
public function sendText($msg, $chatId = 0) { // 发送纯文本 public function sendText($msg, $chatId = 0) { // 发送纯文本
return tgApi::sendMessage(array( return tgApi::sendMessage(['text' => $msg], $chatId);
'text' => $msg
), $chatId);
}
function sendDocument($params, $chatId = 0) { // 发送文件
if ($chatId === 0) { // 未指定chatId
global $tgEnv;
$chatId = $tgEnv['chatId'];
}
$params += array (
'method' => 'sendDocument',
'chat_id' => $chatId
);
return tgApi::sendPayload($params);
} }
public function sendMessage($params, $chatId = 0) { // 发送消息 public function sendMessage($params, $chatId = 0) { // 发送消息
if ($chatId === 0) { // 未指定chatId return tgApi::sendByMethod('sendMessage', $params, $chatId);
global $tgEnv;
$chatId = $tgEnv['chatId'];
}
$params += array (
'method' => 'sendMessage',
'chat_id' => $chatId
);
return tgApi::sendPayload($params);
} }
public function editMessage($params, $chatId = 0) { // 修改消息 public function editMessage($params, $chatId = 0) { // 修改消息
if ($chatId === 0) { // 未指定chatId return tgApi::sendByMethod('editMessageText', $params, $chatId);
global $tgEnv;
$chatId = $tgEnv['chatId'];
}
$params += array (
'method' => 'editMessageText',
'chat_id' => $chatId
);
return tgApi::sendPayload($params);
} }
public function deleteMessage($params, $chatId = 0) { // 删除消息 public function deleteMessage($params, $chatId = 0) { // 删除消息
return tgApi::sendByMethod('deleteMessage', $params, $chatId);
}
public function sendDocument($params, $chatId = 0) { // 发送文件
return tgApi::sendByMethod('sendDocument', $params, $chatId);
}
public function sendByMethod($method, $params, $chatId = 0) { // 按指定方式发送数据
if ($chatId === 0) { // 未指定chatId if ($chatId === 0) { // 未指定chatId
global $tgEnv; global $tgEnv;
$chatId = $tgEnv['chatId']; $chatId = $tgEnv['chatId'];
} }
$params += array ( $params += array (
'method' => 'deleteMessage', 'method' => $method,
'chat_id' => $chatId 'chat_id' => $chatId
); );
return tgApi::sendPayload($params); return tgApi::sendPayload($params);
} }
public function sendPayload($payload) { // 发送原始数据 public function sendPayload($payload) { // 发送原始数据
global $tgEnv; global $apiPath;
$url = $tgEnv['apiPath'] . '/' . $payload['method'] . '?'; $url = $apiPath . '/' . $payload['method'] . '?';
foreach ($payload as $param => $content) { foreach ($payload as $param => $content) {
$url .= '&' . $param . '=' . urlencode($content); $url .= '&' . $param . '=' . urlencode($content);
} }
return file_get_contents($url); return file_get_contents($url);
} }
}
function sendPayload($payload) { // 发送API请求 function debugDump() { // 调试接口
global $apiPath; global $webhook, $tgEnv;
$url = $apiPath . '/' . $payload['method'] . '?'; $msg .= 'isCallback: ' . ($tgEnv['isCallback'] ? 'true' : 'false') . PHP_EOL;
foreach ($payload as $param => $content) { $msg .= 'isGroup: ' . ($tgEnv['isGroup'] ? 'true' : 'false') . PHP_EOL;
$url .= '&' . $param . '=' . urlencode($content); $msg .= 'messageText: ' . $tgEnv['messageText'] . PHP_EOL;
$msg .= 'messageId: ' . $tgEnv['messageId'] . PHP_EOL;
$msg .= 'chatId: ' . $tgEnv['chatId'] . PHP_EOL;
$msg .= 'userId: ' . $tgEnv['userId'] . PHP_EOL;
$msg .= 'userName: ' . $tgEnv['userName'] . PHP_EOL;
$msg .= 'userAccount: ' . $tgEnv['userAccount'] . PHP_EOL;
$msg .= 'userLanguage: ' . $tgEnv['userLanguage'] . PHP_EOL;
tgApi::sendText($msg);
tgApi::sendText(json_encode($webhook));
} }
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…
Cancel
Save