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

如何通过Node.js实现Telegram Bot主动发起对话发送交易确认消息

Telegram Bot主动发送交易确认消息的Node.js解决方案

核心限制说明

Telegram的安全机制禁止Bot主动给从未发起过互动的用户发送消息,这是无法绕过的平台规则。所以首先必须让用户先和Bot产生互动(比如发送/start命令),之后Bot才能主动给用户发消息。


解决方案1:用户提前互动后主动发消息

步骤1:引导用户完成首次互动

在你的交易流程中添加提示,比如:

  • 交易前告知用户「请先给[你的Bot名称]发送任意消息或/start命令,以便后续接收交易通知」
  • 在交易成功页面提供Bot的跳转链接,引导用户完成互动

步骤2:Node.js代码实现发送消息

  1. 安装依赖库
npm install node-telegram-bot-api
  1. 编写发送消息的代码
const TelegramBot = require('node-telegram-bot-api');

// 替换为你的Bot Token(从@BotFather获取)
const BOT_TOKEN = 'YOUR_BOT_TOKEN_HERE';
const bot = new TelegramBot(BOT_TOKEN, { polling: false }); // 仅发送消息,无需轮询

// 封装交易确认消息发送函数
async function sendTransactionNotification(chatId, transactionInfo) {
  try {
    const notificationText = `
🎉 交易成功确认
交易ID:*${transactionInfo.id}*
金额:${transactionInfo.amount}
完成时间:${transactionInfo.timestamp}
    `.trim();

    await bot.sendMessage(chatId, notificationText, { parse_mode: 'Markdown' });
    console.log(`已向用户${chatId}发送交易通知`);
  } catch (err) {
    // 捕获用户未互动的403错误
    if (err.response?.statusCode === 403) {
      console.error(`用户${chatId}未与Bot互动,请引导用户先发送消息`);
    } else {
      console.error('发送消息失败:', err.message);
    }
  }
}

// 调用示例:传入用户聊天ID和交易信息
sendTransactionNotification(123456789, {
  id: 'TXN-20240520-001',
  amount: '¥199.00',
  timestamp: '2024-05-20 16:45:30'
});

解决方案2:通过链接自动触发互动(适合未提前互动的用户)

如果用户没提前和Bot互动,可以生成Telegram深度链接,引导用户点击后自动发送/start命令并携带交易参数,Bot接收后自动回复交易确认消息。

步骤1:生成跳转链接

链接格式:

https://t.me/你的Bot用户名?start=交易ID

示例:https://t.me/MyTradeBot?start=TXN-20240520-001

用户点击链接后,会直接打开Telegram并向Bot发送/start TXN-20240520-001

步骤2:Bot接收消息并自动回复

const TelegramBot = require('node-telegram-bot-api');

const BOT_TOKEN = 'YOUR_BOT_TOKEN_HERE';
const bot = new TelegramBot(BOT_TOKEN, { polling: true });

// 监听带参数的/start命令
bot.onText(/\/start (.+)/, async (msg, match) => {
  const chatId = msg.chat.id;
  const transactionId = match[1];

  // 这里替换为你的交易查询逻辑,根据ID获取交易详情
  const transactionDetails = await fetchTransactionById(transactionId);

  if (transactionDetails) {
    const replyText = `
🎉 交易成功确认
交易ID:*${transactionId}*
金额:${transactionDetails.amount}
完成时间:${transactionDetails.timestamp}
    `.trim();
    await bot.sendMessage(chatId, replyText, { parse_mode: 'Markdown' });
  } else {
    await bot.sendMessage(chatId, '未找到对应交易信息,请检查交易ID');
  }
});

// 模拟交易查询函数
async function fetchTransactionById(txnId) {
  // 实际场景中从数据库或API获取
  return {
    amount: '¥199.00',
    timestamp: '2024-05-20 16:45:30'
  };
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 19:45:33