从入口文件搭建php项目

目录结构
入口文件index.php

<?php

require 'CallBack.php'; 

// 处理回调请求逻辑
$bot = new CallBack();

// 请求方式
if (isset($_GET['method'])) {
    $method = $_GET['method'];
    if (method_exists($bot, $method)) {
        return $bot->$method();
    } else {
        echo "没有该功能";
        die();
    }
} else {
    echo "调用哪个功能?";
    die();
}

CallBack.php

<?php

require 'Config.php'; 

class CallBack
{
    private $botApiKey;
    private $hookUrl;
    private $winiUrl;
    
    public function __construct()
    {
        $config = new Config();
        $this->hookUrl = $config->getUrl();
        $this->botApiKey = $config->getApiKey();
        $this->winiUrl = $config->getwini();
    }

    public function index()
    {
        phpinfo();
    }
    
    // 设置回调地址
    public function set_callback_url() {
        $deleteResponse = $this->sendCurlRequest("https://api.telegram.org/bot{$this->botApiKey}/deleteWebhook");
        print_r($deleteResponse);
        echo("<br/>");

        $data = ['url' => $this->hookUrl];
        $setResponse = $this->sendCurlRequest("https://api.telegram.org/bot{$this->botApiKey}/setWebhook", $data);
        
        print_r($setResponse);
    }

    // 设置菜单命令
    public function setCommands() {
        $commands = [
            ['command' => 'start', 'description' => 'Start'],
        ];
        
        $data = ['commands' => $commands];
        $response = $this->sendCurlRequest("https://api.telegram.org/bot{$this->botApiKey}/setMyCommands", $data);
        // print_r($response);die;
        if ($response['ok']) {
            echo json_encode(['code' => 1, 'msg' => 'ok']);
        } else {
            echo json_encode(['code' => 0, 'msg' => $response['description']]);
        }
    }

    // 回调主逻辑
    public function tg_msg() {
        $data = json_decode(file_get_contents('php://input'), true);

        $keyboard_data = [
            [["text" => "点击", "web_app" => ["url" => $this->winiUrl]]],
        ];
        
        // 将 $data 写入日志文件
        $logFile = 'telegram_log.txt';
        file_put_contents($logFile, date('Y-m-d H:i:s') . " - " . json_encode($data) . PHP_EOL, FILE_APPEND);
        // file_put_contents($logFile, date('Y-m-d H:i:s') . " - " . print_r($data, true) . PHP_EOL, FILE_APPEND);

        $reply_markup = json_encode(["inline_keyboard" => $keyboard_data]);
        $message = "点击app ";

        if (isset($data['message']['text']) && !isset($data['message']['entities'])) {
            $chat_id = $data['message']['chat']['id'];
            $message_id = $data['message']['message_id'];

            $this->deleteMessage($chat_id, $message_id);
            $this->respondWithJson(1, 'ok');
            return;
        }

        if (empty($data['message']) && !isset($data['callback_query']['data'])) {
            $this->respondWithJson(1, 'ok');
            return;
        }

        if (!empty($data['message'])) {
            $this->sendMessage($data['message']['chat']['id'], $message, $reply_markup);
            $this->respondWithJson(1, 'ok');
            return;
        }

        $this->respondWithJson(1, 'ok');
    }
    
    // 删除消息
    public function deleteMessage($chat_id, $message_id)
    {
        $data = [
            'chat_id'    => $chat_id,
            'message_id' => $message_id,
        ];
        return $this->sendTelegramRequest('deleteMessage', $data);
    }
    
    // 发送消息
    public function sendMessage($chat_id, $message, $reply_markup)
    {
        $data = [
            'chat_id'      => $chat_id,
            'text'         => $message,
            'parse_mode'   => 'HTML',
            'reply_markup' => $reply_markup,
        ];
        return $this->sendTelegramRequest('sendMessage', $data);
    }
    
    // 发送 Telegram 请求
    private function sendTelegramRequest($method, $data)
    {
        $url = "https://api.telegram.org/bot{$this->botApiKey}/{$method}";
        return $this->sendCurlRequest($url, $data);
    }
    
    // 发送 cURL 请求
    private function sendCurlRequest($url, $data = null) {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        if ($data !== null) {
            curl_setopt($ch, CURLOPT_POST, 1);
            curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
            curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
        }
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        
        $response = curl_exec($ch);
        curl_close($ch);
        
        return json_decode($response, true);
    }
    
    // 响应 JSON 数据
    private function respondWithJson($code, $msg) {
        echo json_encode(['code' => $code, 'msg' => $msg]);
    }
}

Config.php

<?php

class Config {
    private $hookUrl = '域名/wini-mini-app/telegram/index.php?method=tg_msg';//回调地址
    private $winiUrl = '域名/wini-mini-app/';
    private $botApiKey = '7189631927:AAHfYLqKhxjGumIHCqlNuv8jH8';
    
    public function getUrl() {
        return $this->hookUrl;
    }
    
    public function getApiKey() {
        return $this->botApiKey;
    }
    
    public function getwini() {
        return $this->winiUrl;
    }
}

浏览器访问,通过method传参数,请求对应的方法
域名/wini-mini-app/telegram/index.php?method=index

  • 10
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值