你在Telegram聊天窗口中看到过那些可以直接打开、无需跳转浏览器的互动小程序吗?这些内嵌式应用就是基于Telegram Web App API开发的。许多开发者希望利用这个API为自己的Bot添加丰富的交互界面,但初次接触时往往不知道从何处入手,不清楚如何配置环境、如何与Telegram交换数据,以及如何调试和发布。本文将手把手带你完成从环境准备到功能验证的完整流程。

检查开发环境与前置条件

在开始编写任何代码之前,需要确认你的机器上已经安装了必要的工具,并且拥有一个可用的Telegram Bot Token。

具体操作说明:

首先,打开你的电脑终端(Windows用户请打开命令提示符PowerShell,Mac/Linux用户打开终端)。输入 node -v并回车,如果看到类似 v18.12.0的版本号,说明Node.js已安装。接着输入 npm -v确认npm包管理器可用。如果未安装,请前往Node.js官网下载并安装LTS版本。然后,在Telegram中搜索 @BotFather,发送 /newbot按照提示创建一个新的机器人,记下返回的 Bot Token(形如 123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11)。

注意事项/小提示:

  • 确保Node.js版本不低于16,部分Web App API特性依赖较新版本的JavaScript引擎。
  • Bot Token是敏感信息,不要上传到公开的代码仓库中。
  • 创建Bot后,建议立即在BotFather中发送 /setdomain命令,为你的Web App设置允许的域名(开发阶段可先设为你的本地IP或 localhost)。

备用方案:

  • 如果无法安装Node.js,可以使用Python的Flask或Django替代,但本教程以Node.js为例。
  • 若没有公网服务器,可使用 ngroklocaltunnel将本地服务暴露到公网,用于Telegram回调验证。

初始化项目并安装依赖

创建一个新的项目文件夹,初始化npm并安装必要的库,这是搭建Web App后端与前端通信的基础。

具体操作说明:

在你的工作目录中,打开终端执行 mkdir telegram-webapp-demo && cd telegram-webapp-demo。接着运行 npm init -y快速生成 package.json文件。然后执行 npm install express node-telegram-bot-api,其中 express用于搭建HTTP服务器,node-telegram-bot-api是官方推荐的Node.js Telegram Bot库。安装完成后,在项目根目录创建两个文件夹:public(存放前端静态文件)和 server(存放后端代码)。

注意事项/小提示:

  • 如果安装速度慢,可以设置npm镜像源:npm config set registry https://registry.npmmirror.com
  • 建议同时安装 dotenv库,用于管理环境变量:npm install dotenv,并在项目根目录创建 .env文件存放Bot Token。
  • 不要忘记在 .gitignore文件中添加 node_modules.env文件。

备用方案:

  • 如果你更熟悉Python,可以安装 python-telegram-bot库配合 Flask实现相同功能。
  • 对于纯前端演示,也可以使用GitHub Pages或Vercel部署静态页面,但后端通信需要额外处理。

编写后端服务器代码

后端负责接收Telegram的Webhook请求,并返回Web App的启动链接,同时处理来自前端的用户数据。

具体操作说明:

server文件夹下新建 index.js文件,写入以下核心代码:首先引入 expressnode-telegram-bot-apidotenv。使用 dotenv.config()加载环境变量。创建一个 express实例,并设置静态文件目录为 public。接着初始化Telegram Bot:const bot = new TelegramBot(process.env.BOT_TOKEN, {polling: true})。监听 /start命令,当用户发送 /start时,使用 bot.sendMessage方法发送一条包含 Inline Keyboard的消息,键盘按钮的 web_app属性指向你的Web App URL(例如 https://yourdomain.com/app)。最后,启动express服务器监听3000端口。

注意事项/小提示:

  • 如果使用ngrok,你的Web App URL应为 https://xxxx.ngrok.io/app,并且需要在BotFather中将该域名设置为允许的域名。
  • 务必在 bot.on('message')回调中处理用户点击按钮后返回的数据,通过 ctx.webAppData获取。
  • 生产环境中建议使用Webhook模式代替polling,以避免频繁轮询消耗资源。

备用方案:

  • 如果不想自己搭建服务器,可以使用Cloudflare Workers或AWS Lambda实现无服务器架构。
  • 对于简单的测试,可以直接使用 bot.onText(/\/start/)配合 bot.sendWebApp方法(该方法在部分库中已支持)。

编写前端Web App页面

前端页面是用户实际交互的界面,需要引入Telegram Web App SDK并完成初始化。

具体操作说明:

public文件夹下创建 app.html文件。在 标签内引入Telegram Web App SDK:。在 中创建一个简单的表单或按钮。在

Telegram中文官方网站|Telegram中文官方网站|Telegram中文官方网站|Telegram中文官方网站|Telegram中文官方网站|Telegram中文官方网站|Telegram中文官方网站|Telegram中文官方网站|Telegram中文官方网站|Telegram中文官方网站|Telegram中文官方网站|Telegram中文官方网站|Telegram中文官方网站|Telegram中文官方网站|Telegram中文官方网站|Telegram中文官方网站|Telegram中文官方网站|Telegram中文官方网站|Telegram中文官方网站|Telegram中文官方网站|