从入口文件搭建php项目

news2025/1/11 18:42:11

目录结构
入口文件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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1875849.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

多元时间序列分析——VAR(向量自回归模型)

VAR模型主要是考察多个变量之间的动态互动关系&#xff0c;从而解释各种经济冲击对经济变量形成的动态影响。这种动态关系可通过格兰杰因果关系、脉冲响应以及方差分解来进一步明确和可视化。VAR模型主要研究内生变量之间的关系&#xff0c;内生变量就是参与模型并由模型体系内…

SmartEDA革新来袭:融合Multisim与Proteus精髓,引领电子设计新纪元!

在电子设计领域&#xff0c;每一次技术的革新都如同春风化雨&#xff0c;滋润着设计师们的心田。今天&#xff0c;我们迎来了一个划时代的电子设计自动化&#xff08;EDA&#xff09;工具——SmartEDA&#xff0c;它不仅融合了业界知名的Multisim和Proteus的精华&#xff0c;更…

NPOI入门指南:轻松操作Excel文件的.NET库

目录 引言 一、NPOI概述 二、NPOI的主要用途 三、安装NPOI库 四、NPOI基本使用 六、性能优化和内存管理 七、常见问题与解决方案 八、结论 附录 引言 Excel文件作为数据处理的重要工具&#xff0c;广泛应用于各种场景。然而&#xff0c;在没有安装Microsoft Office的…

最近写javaweb出现的一个小bug---前端利用 form 表单传多项数据,后端 Servlet 取出的各项数据均为空

目录&#xff1a; 一. 问题引入二 解决问题 一. 问题引入 近在写一个 java web 项目时&#xff0c;遇到一个让我头疼了晚上的问题&#xff1a;前端通过 post 提交的 form 表单数据可以传到后端&#xff0c;但当我从 Servlet 中通过 request.getParameter(“name”) 拿取各项数…

正版软件 | R-Studio Corporate:企业级数据恢复的终极解决方案

数据是企业的生命线&#xff0c;而数据丢失可能随时威胁到企业的正常运营。R-Studio Corporate 是一款专为企业环境设计的多功能数据恢复软件&#xff0c;确保您在面临数据危机时&#xff0c;能够迅速、高效地恢复宝贵数据。 跨平台操作&#xff0c;灵活恢复 R-Studio Corporat…

小时候的子弹击中了现在的我-hive进阶:案例解析(第18天)

系列文章目录 一、Hive表操作 二、数据导入和导出 三、分区表 四、官方文档&#xff08;了解&#xff09; 五、分桶表&#xff08;熟悉&#xff09; 六、复杂类型&#xff08;熟悉&#xff09; 七、Hive乱码解决&#xff08;操作。可以不做&#xff0c;不影响&#xff09; 八、…

收银系统源码-千呼新零售2.0【线上营销】

千呼新零售2.0系统是零售行业连锁店一体化收银系统&#xff0c;包括线下收银线上商城连锁店管理ERP管理商品管理供应商管理会员营销等功能为一体&#xff0c;线上线下数据全部打通。 适用于商超、便利店、水果、生鲜、母婴、服装、零食、百货等连锁店使用。 详细介绍请查看&a…

WINDOWS+PHP+Mysql+Apache环境中部署SQLi-Labs、XSS-Labs、UPload-Labs、DVWA、pikachu等靶场环境

web渗透测试学习&#xff0c;需要自己搭建一些靶场&#xff0c;本人主要介绍在WINDOWSPHPMysqlApache环境中部署SQLi-Labs、XSS-Labs、UPload-Labs、DVWA、pikachu等靶场环境。以下是靶场代码下载的链接&#xff1a; pikachu靶场代码 链接&#xff1a;https://pan.baidu.com/s…

GEO数据挖掘-富集分析、TinyArray简化流程、多组样本分析more

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 富集分析一些理论知识具体代码 富集不到的补救措施更多资料---问题数据和常见错误分析Part4-复杂数据及其分析多分组数据分析流程 tinyarray简化版本分析流程多分组…

Interview preparation--Elasticsearch写入原理与调优

ES的写入过程 ES支持的写操作 create&#xff1a; create操作不同于put操作&#xff0c;put操作的时候如果当前put的数据存在则会被覆盖&#xff0c;如果put操作的时候加上操作类型create&#xff0c;如果数据存在则会返回失败&#xff0c;比如&#xff1a;PUT /pruduct/_cre…

实测2024年最佳的三款Socks5代理IP网站

一、引言 在浩瀚的网络世界中&#xff0c;Socks5代理IP服务如同导航灯塔&#xff0c;指引我们穿越数据海洋&#xff0c;安全、稳定地访问目标网站。作为专业的测评团队&#xff0c;我们深知一款优秀的Socks5代理IP网站需要具备哪些特质&#xff1a;稳定的IP资源、高效的连接速…

QT基本对话框(基本对话框、工具盒类、进度条、调色板与电子钟、可扩展对话框、程序启动画面)

此篇文章通过实例介绍基本对话框的用法。首先介绍标准文件对话框&#xff08;QFileDialog&#xff09;、标准颜色对话框&#xff08;QColorDialog&#xff09;、标准字体对话框&#xff08;QFontDialog&#xff09;、标准输入对话框&#xff08;QInputDialog&#xff09;以及标…

AI绘画 Stable Diffusion【特效文字】:火焰特效艺术字,轻松搞定特效生成!

大家好&#xff0c;我是画画的小强 今天我们继续艺术字系列的分享&#xff0c;艺术字的玩法很多&#xff0c;今天给大家带来的是火焰特效艺术字的制作。我们先来看火焰特效艺术字的效果图。 一. 火焰特效文字的制作方法 【第一步】&#xff1a;制作底图 这里制作底图使用白底…

VMware Workstation 安装 Centos 虚拟机

1. 下载 VMware Workstation 直接上网找官网下载即可 2. 下载 Centos 镜像 阿里巴巴开源镜像站-OPSX镜像站-阿里云开发者社区 3.打开 VMware 创建虚拟机 3.1点击创建虚拟机 3.2 选择自定义安装 3.3 选择使用 Workstation 的版本 版本越高兼容性越低但性能越好&#xff0c;一…

2024年Stable Diffusion应用入门,AI绘画超详细兼职攻略,从零开始!

. AI绘画&#xff1a; 利用AI工具在AI绘画上的应用非常广泛&#xff0c;涵盖了从艺术创作到工业设计等多个领域。 目前市面上有许多AI绘画软件和工具&#xff0c;适合不同需求的用户。 例如&#xff0c;Midjourney、DALL-E 2、Stable Diffusion、DreamStudio等都是较为知名的…

深入了解Qt 控件:Display Widgets部件(1) 以及 QT自定义控件(电池)

QT自定义控件(电池&#xff09; 在线调色板Qt之CSS专栏Chapter1 QT自定义控件(电池&#xff09;Chapter2 Qt教程 — 3.5 深入了解Qt 控件&#xff1a;Display Widgets部件(1)1 Display Widgets简介2 如何使用Display Widgets部件 Chapter3 Qt自定义控件电池组件使用前言一、最基…

AIGC实战:LLaMA2打造中文写作利器——数据准备与模型训练全攻略

目录 一、下载并加载中文数据集二、中文数据集处理 1、数据格式 2、数据集处理之tokenizer训练格式 1&#xff09;先将一篇篇文本拼凑到一起&#xff08;只是简单的拼凑一起&#xff0c;用于训练tokenizer&#xff09; 2&#xff09;将数据集进行合并 3、数据集处理之模型&am…

新书速览|解密AI绘画与修图: Stable Diffusion+Photoshop

《解密AI绘画与修图&#xff1a; Stable DiffusionPhotoshop》 本书内容 《解密AI绘画与修图&#xff1a;Stable DiffusionPhotoshop》全面介绍了Photoshop和Stable Diffusion的交互方式&#xff0c;以及各自的AI功能和具体使用方法。除了讲解功能&#xff0c;还通过实际案例加…

浪潮信息存储的灵魂:平台化+场景化 全面释放数据价值

在数字化浪潮的席卷下&#xff0c;浪潮信息存储平台凭借卓越的性能和稳定性&#xff0c;正日益成为企业释放数据价值的重要力量。近日&#xff0c;浪潮信息出席了“2024数据基础设施技术峰会”&#xff0c;相关代表聚焦当前数据价值的释放话题&#xff0c;围绕先进存储基础设施…

Mongodb安装与配置

Mongodb的下载 这里下载的是MongoDB 7.0.11版本的 首先进入官网&#xff1a;https://www.mongodb.com/ 点击完上面两步后&#xff0c;加载来到该页面&#xff0c;选择自己的版本、系统&#xff0c;是压缩包(zip)还是安装包(msi)。 下载好之后能&#xff0c;来到安装包哪里&a…