TG 自动发卡机器人搭建教程:从 0 到 1 搭建 Telegram 发卡平台,

搭建电报发卡机器人联系方式
Telegram(飞机/电报)
@ckw56
@ckw699 群


如果自己会搭建也可以点击链接自己下载源码搭建“源码下载点击此外”

TG电报自动售卡机器人源码下载,Telegram发卡机器人源码下载,内有制作教程,发卡平台源码下载


在数字化交易场景中,Telegram(简称 TG、飞机)自动发卡机器人凭借高效、便捷的优势,成为虚拟商品(如充值码、激活码、课程兑换券)交易的核心工具。本文将围绕TG 自动发卡机器人搭建电报发卡机器人搭建Telegram 发卡平台机器人搭建飞机发卡机器人搭建四大核心关键词,提供可直接落地的搭建步骤、代码示例及 SEO 优化技巧,帮助开发者快速上线功能,并提升在百度、谷歌的搜索排名。

一、搭建前必备:TG 自动发卡机器人的核心准备工作

在开始Telegram 发卡平台机器人搭建前,需完成 3 项基础准备,确保后续流程顺畅:

1. 账号与工具准备

  • Telegram 账号:需绑定手机号(建议使用常用号码,避免账号封禁影响机器人运行),并加入 Telegram 官方机器人创建工具 ——@BotFather(用于生成机器人 Token)。
  • 服务器环境:推荐使用 Linux 系统(如 Ubuntu 20.04),需安装 Python 3.8+(核心开发语言)、MySQL 5.7+(存储订单 / 商品数据)、Nginx(可选,用于搭建后台管理页面)。
  • 依赖库安装:通过 Python 包管理工具 pip 安装核心依赖,代码可直接复制执行:
bash
# 升级pip
pip install --upgrade pip
# 安装Telegram机器人核心库、数据库连接库、Web框架(用于回调接口)
pip install python-telegram-bot==13.7 pymysql flask requests

2. 核心概念明确

  • 机器人 Token:由 @BotFather 生成,是机器人与 Telegram 服务器通信的 “钥匙”,获取方式:在 Telegram 中向 @BotFather 发送/newbot,按提示命名后即可获得。
  • Webhook / 长轮询(getUpdates):两种机器人消息接收方式,推荐用 Webhook(更高效,适配谷歌 / 百度搜索场景下的稳定运行),需服务器开放 80/443 端口。
  • 支付接口:需对接第三方支付(如 PayPal、Stripe,适配国际场景;国内可对接支付宝 / 微信支付接口),用于用户支付后自动发卡。

二、分步实现:TG 自动发卡机器人搭建完整流程(含可复制代码)

本节按 “机器人创建→数据库设计→核心功能开发→支付对接” 顺序,提供飞机发卡机器人搭建的详细步骤,代码均为文本模式,可直接复制到服务器执行。

1. 第一步:创建 Telegram 机器人并获取 Token

  1. 打开 Telegram,搜索并进入 @BotFather 对话框;
  2. 发送/newbot,按提示输入机器人名称(如 “XX 自动发卡机器人”)和用户名(需以 “bot” 结尾,如 “XXCardBot”);
  3. 成功后,@BotFather 会返回包含Token的消息(格式:123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11),保存 Token 备用。

2. 第二步:设计 MySQL 数据库(存储商品 / 订单数据)

创建数据库和核心表,用于记录商品信息、用户订单及发卡状态,SQL 代码可直接复制执行:
sql
-- 1. 创建数据库(命名:tg_card_bot)
CREATE DATABASE IF NOT EXISTS tg_card_bot CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- 2. 使用数据库
USE tg_card_bot;

-- 3. 创建商品表(存储虚拟商品信息)
CREATE TABLE IF NOT EXISTS products (
    id INT AUTO_INCREMENT PRIMARY KEY,
    product_name VARCHAR(100) NOT NULL COMMENT '商品名称(如“某软件激活码”)',
    product_price DECIMAL(10,2) NOT NULL COMMENT '商品价格(如19.99)',
    product_stock INT NOT NULL DEFAULT 0 COMMENT '商品库存',
    product_codes TEXT NOT NULL COMMENT '商品卡密(多个用英文逗号分隔)',
    create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间'
) COMMENT 'TG发卡机器人商品表';

-- 4. 创建订单表(记录用户支付订单)
CREATE TABLE IF NOT EXISTS orders (
    id INT AUTO_INCREMENT PRIMARY KEY,
    order_no VARCHAR(50) NOT NULL UNIQUE COMMENT '订单编号(如“TG20240520001”)',
    user_tg_id BIGINT NOT NULL COMMENT '用户Telegram ID',
    product_id INT NOT NULL COMMENT '关联商品ID',
    order_amount DECIMAL(10,2) NOT NULL COMMENT '订单金额',
    pay_status TINYINT NOT NULL DEFAULT 0 COMMENT '支付状态:0=未支付,1=已支付',
    card_code VARCHAR(100) NULL COMMENT '已发放的卡密(支付成功后填充)',
    pay_time DATETIME NULL COMMENT '支付时间',
    create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '订单创建时间',
    FOREIGN KEY (product_id) REFERENCES products(id)
) COMMENT 'TG发卡机器人订单表';

3. 第三步:核心功能开发(Python 代码,可直接复制)

创建tg_card_bot.py文件,实现 “商品列表展示、订单创建、支付回调、自动发卡” 核心功能,代码含详细注释:
python
运行
# -*- coding: utf-8 -*-
import telegram
from telegram.ext import Updater, CommandHandler, MessageHandler, Filters
import pymysql
import flask
from flask import Flask, request
import random
import time
from datetime import datetime

# -------------------------- 1. 配置参数(需替换为自己的信息) --------------------------
TG_BOT_TOKEN = "你的机器人Token"  # 如:123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11
MYSQL_HOST = "localhost"          # 数据库地址(本地填localhost)
MYSQL_USER = "root"               # 数据库用户名
MYSQL_PASS = "你的数据库密码"       # 数据库密码
MYSQL_DB = "tg_card_bot"          # 数据库名
PAY_CALLBACK_URL = "你的服务器域名/callback"  # 支付回调地址(需提前配置域名解析)

# -------------------------- 2. 数据库连接函数 --------------------------
def get_db_connection():
    conn = pymysql.connect(
        host=MYSQL_HOST,
        user=MYSQL_USER,
        password=MYSQL_PASS,
        db=MYSQL_DB,
        charset='utf8mb4',
        cursorclass=pymysql.cursors.DictCursor
    )
    return conn

# -------------------------- 3. Telegram机器人核心功能 --------------------------
# 3.1 启动命令(用户发送/start时触发)
def start(update, context):
    user = update.effective_user
    update.message.reply_html(
        rf"您好,{user.mention_html()}!我是TG自动发卡机器人~"
        "\n发送 /products 查看商品列表"
        "\n发送 /help 查看使用帮助",
    )

# 3.2 展示商品列表(用户发送/products时触发)
def show_products(update, context):
    conn = get_db_connection()
    try:
        with conn.cursor() as cursor:
            # 查询所有有库存的商品
            sql = "SELECT id, product_name, product_price, product_stock FROM products WHERE product_stock > 0"
            cursor.execute(sql)
            products = cursor.fetchall()
            
            if not products:
                update.message.reply_text("当前暂无可用商品,敬请期待!")
                return
            
            # 拼接商品列表消息
            msg = "📦 可用商品列表:\n"
            for p in products:
                msg += f"\n{p['id']}. 【{p['product_name']}】\n价格:{p['product_price']}元 | 库存:{p['product_stock']}个\n发送“购买{p['id']}”即可下单\n"
            update.message.reply_text(msg)
    finally:
        conn.close()

# 3.3 处理购买请求(用户发送“购买X”时触发)
def handle_buy(update, context):
    user_msg = update.message.text.strip()
    user_tg_id = update.effective_user.id
    
    # 提取商品ID(如“购买1”→提取1)
    if not user_msg.startswith("购买"):
        update.message.reply_text("请按格式下单:发送“购买+商品ID”(如“购买1”)")
        return
    try:
        product_id = int(user_msg.replace("购买", ""))
    except ValueError:
        update.message.reply_text("商品ID格式错误,请发送“购买+数字”(如“购买1”)")
        return
    
    conn = get_db_connection()
    try:
        with conn.cursor() as cursor:
            # 1. 检查商品是否存在且有库存
            sql = "SELECT product_name, product_price, product_stock, product_codes FROM products WHERE id = %s"
            cursor.execute(sql, (product_id,))
            product = cursor.fetchone()
            if not product or product['product_stock'] <= 0:
                update.message.reply_text("该商品不存在或已售罄,请选择其他商品!")
                return
            
            # 2. 生成订单编号
            order_no = f"TG{datetime.now().strftime('%Y%m%d%H%M%S')}{random.randint(100,999)}"
            
            # 3. 创建订单(未支付状态)
            sql = """
                INSERT INTO orders (order_no, user_tg_id, product_id, order_amount, pay_status)
                VALUES (%s, %s, %s, %s, 0)
            """
            cursor.execute(sql, (order_no, user_tg_id, product_id, product['product_price']))
            conn.commit()
            
            # 4. 生成支付链接(此处以模拟支付为例,实际需替换为真实支付接口)
            # 真实场景:调用PayPal/支付宝接口生成支付链接,回调地址设为PAY_CALLBACK_URL
            pay_url = f"https://你的支付平台.com/pay?order_no={order_no}&amount={product['product_price']}"
            
            # 5. 回复用户订单信息和支付链接
            update.message.reply_text(
                f"✅ 订单创建成功!\n"
                f"订单编号:{order_no}\n"
                f"商品名称:{product['product_name']}\n"
                f"应付金额:{product['product_price']}元\n"
                f"点击支付:{pay_url}\n"
                f"支付成功后将自动发送卡密~"
            )
    finally:
        conn.close()

# -------------------------- 4. 支付回调接口(Flask实现,用于接收支付成功通知) --------------------------
app = Flask(__name__)
@app.route("/callback", methods=["POST"])
def pay_callback():
    # 1. 接收支付平台的回调数据(此处模拟,实际需按支付平台格式解析)
    callback_data = request.form
    order_no = callback_data.get("order_no")
    pay_status = callback_data.get("pay_status")  # 1=支付成功
    
    if not order_no or pay_status != "1":
        return "fail"  # 告诉支付平台回调失败,需重试
    
    conn = get_db_connection()
    try:
        with conn.cursor() as cursor:
            # 2. 检查订单是否存在且未支付
            sql = "SELECT id, user_tg_id, product_id FROM orders WHERE order_no = %s AND pay_status = 0"
            cursor.execute(sql, (order_no,))
            order = cursor.fetchone()
            if not order:
                return "fail"
            
            # 3. 获取商品卡密(取第一个卡密并更新库存)
            sql = "SELECT product_codes, product_stock FROM products WHERE id = %s"
            cursor.execute(sql, (order['product_id'],))
            product = cursor.fetchone()
            card_codes = product['product_codes'].split(",")
            if not card_codes:
                return "fail"
            used_card = card_codes[0]  # 已使用的卡密
            remaining_codes = ",".join(card_codes[1:])  # 剩余卡密
            
            # 4. 更新订单状态和卡密
            sql = """
                UPDATE orders 
                SET pay_status = 1, card_code = %s, pay_time = %s 
                WHERE id = %s
            """
            cursor.execute(sql, (used_card, datetime.now(), order['id']))
            
            # 5. 更新商品库存和卡密
            sql = """
                UPDATE products 
                SET product_stock = product_stock - 1, product_codes = %s 
                WHERE id = %s
            """
            cursor.execute(sql, (remaining_codes, order['product_id']))
            conn.commit()
            
            # 6. 向用户发送卡密
            bot = telegram.Bot(token=TG_BOT_TOKEN)
            bot.send_message(
                chat_id=order['user_tg_id'],
                text=f"🎉 您的订单{order_no}已支付成功!\n您的卡密是:\n{used_card}\n请妥善保存,尽快使用~"
            )
            return "success"  # 告诉支付平台回调成功
    finally:
        conn.close()

# -------------------------- 5. 启动机器人和Flask服务 --------------------------
def main():
    # 启动Telegram机器人(使用长轮询,适合测试;正式环境建议用Webhook)
    updater = Updater(TG_BOT_TOKEN, use_context=True)
    dp = updater.dispatcher
    
    # 添加命令处理器
    dp.add_handler(CommandHandler("start", start))
    dp.add_handler(CommandHandler("products", show_products))
    # 添加消息处理器(处理购买请求)
    dp.add_handler(MessageHandler(Filters.text & ~Filters.command, handle_buy))
    
    # 启动机器人
    updater.start_polling()
    
    # 启动Flask回调接口(端口80,需服务器开放80端口)
    app.run(host="0.0.0.0", port=80, debug=False)
    
    # 保持运行
    updater.idle()

if __name__ == "__main__":
    main()

4. 第四步:部署与测试(确保机器人稳定运行)

  1. 部署代码:将上述tg_card_bot.py文件上传到 Linux 服务器(如/root/tg-bot/目录);
  2. 后台运行:使用nohup命令确保机器人在后台持续运行,代码可复制:
bash
# 进入代码目录
cd /root/tg-bot/
# 后台运行,日志输出到bot.log
nohup python3 tg_card_bot.py > bot.log 2>&1 &
  1. 测试功能:在 Telegram 中搜索自己的机器人,发送/start/products购买1,模拟支付后查看是否收到卡密,同时检查 MySQL 数据库中订单状态是否更新。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。