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

搭建电报发卡机器人联系方式
Telegram(飞机/电报)
@ckw56
@ckw699 群
如果自己会搭建也可以点击链接自己下载源码搭建“源码下载点击此外”
在数字化交易场景中,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
- 打开 Telegram,搜索并进入 @BotFather 对话框;
- 发送
/newbot,按提示输入机器人名称(如 “XX 自动发卡机器人”)和用户名(需以 “bot” 结尾,如 “XXCardBot”); - 成功后,@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. 第四步:部署与测试(确保机器人稳定运行)
- 部署代码:将上述
tg_card_bot.py文件上传到 Linux 服务器(如/root/tg-bot/目录); - 后台运行:使用
nohup命令确保机器人在后台持续运行,代码可复制:
bash
# 进入代码目录
cd /root/tg-bot/
# 后台运行,日志输出到bot.log
nohup python3 tg_card_bot.py > bot.log 2>&1 &
- 测试功能:在 Telegram 中搜索自己的机器人,发送
/start→/products→购买1,模拟支付后查看是否收到卡密,同时检查 MySQL 数据库中订单状态是否更新。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。


评论(0)