You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Telegram WebApp接收数据?获取send方法传递的字符串

机器人端接收Telegram WebApp sendData数据的方法

当你在WebApp里调用window.Telegram.WebApp.sendData()发送数据时,Telegram会将这段数据封装成**回调查询(CallbackQuery)**推送给你的机器人。你需要在机器人后端监听回调查询事件,从中提取发送的字符串。

以下是几种主流开发方式的实现示例:

1. Python(python-telegram-bot v20+)

from telegram import Update
from telegram.ext import ApplicationBuilder, CallbackQueryHandler, ContextTypes

async def handle_webapp_data(update: Update, context: ContextTypes.DEFAULT_TYPE):
    # 提取WebApp发送的数据
    webapp_data = update.callback_query.data
    # 若内容含特殊字符,可解码URL编码(可选)
    # import urllib.parse
    # webapp_data = urllib.parse.unquote(webapp_data)
    print(f"收到WebApp消息:{webapp_data}")  # 会输出"WebApp message sent!"
    # 可选:给用户回复确认
    await update.callback_query.answer("已收到WebApp消息")

if __name__ == "__main__":
    app = ApplicationBuilder().token("你的机器人TOKEN").build()
    # 添加回调查询处理器
    app.add_handler(CallbackQueryHandler(handle_webapp_data))
    app.run_polling()

2. Node.js(node-telegram-bot-api)

const TelegramBot = require('node-telegram-bot-api');
const token = '你的机器人TOKEN';
const bot = new TelegramBot(token, { polling: true });

// 监听回调查询事件
bot.on('callback_query', (callbackQuery) => {
    const chatId = callbackQuery.message.chat.id;
    // 提取WebApp发送的数据
    const webappData = callbackQuery.data;
    // 解码URL编码内容(可选)
    // const decodedData = decodeURIComponent(webappData);
    console.log(`收到WebApp消息:${webappData}`);
    // 回复用户
    bot.sendMessage(chatId, `已收到你的消息:${webappData}`);
    // 必须调用该方法确认收到回调
    bot.answerCallbackQuery(callbackQuery.id);
});

3. 直接使用Telegram Bot API(Webhook方式)

若你不用框架,直接通过Webhook接收请求:

  • 你的Webhook端点会收到POST请求,请求体为JSON格式
  • 判断请求体中存在callback_query字段
  • 从callback_query.data中获取WebApp发送的字符串

示例(Express.js):

const express = require('express');
const app = express();
app.use(express.json());

const TELEGRAM_BOT_TOKEN = '你的机器人TOKEN';

app.post('/webhook', (req, res) => {
    const update = req.body;
    if (update.callback_query) {
        const webappData = update.callback_query.data;
        console.log(`收到WebApp消息:${webappData}`);
        // 回复Telegram确认收到回调
        res.sendStatus(200);
    } else {
        res.sendStatus(200);
    }
});

app.listen(3000, () => {
    console.log('Webhook服务运行在3000端口');
});

注意事项

  • sendData发送的内容会被Telegram自动做URL编码,若消息包含特殊字符(如&、=、空格等),需在后端解码后使用
  • 确保机器人TOKEN正确,且已配置好Polling或Webhook
  • 调用sendData后WebApp默认会自动关闭,若需保持打开需额外处理,但回调查询仍会正常发送

内容的提问来源于stack exchange,提问作者Fogge

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 02:45:22