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

如何捕获Telegram机器人start命令后的附加参数?

处理Telegram机器人的start参数链接问题

问题原因

你写的代码没生效,核心有两个问题:

  1. Telegram会自动把链接https://t.me/MyBot?start=aff_1234转换成用户发送/start aff_1234给机器人,不是带=的格式,所以你用split('=aff_')根本匹配不到内容。
  2. 你的MessageHandler没有指定过滤规则,无法精准捕获start命令的消息。

正确实现代码

直接用Pyrogram的命令过滤器捕获start命令,通过message.command获取参数:

from pyrogram import Client, filters

# 替换成你的机器人信息
c = Client(
    "bot",
    api_id=123456,
    api_hash="你的API_HASH",
    bot_token="你的BOT_TOKEN"
)

@c.on_message(filters.command("start"))
async def handle_start(client, message):
    # 检查是否携带参数
    if len(message.command) > 1:
        param = message.command[1]
        # 判断参数是否为aff_开头的推广ID
        if param.startswith("aff_"):
            aff_id = param.split("_")[1]
            print(f"捕获到推广ID:{aff_id}")
            await message.reply(f"欢迎!你的推广ID是 {aff_id}")
        else:
            await message.reply("欢迎使用机器人!")
    else:
        await message.reply("欢迎使用机器人!")

c.run()

关键说明

  • filters.command("start"):精准过滤所有包含/start命令的消息,包括带参数的情况。
  • message.command:Pyrogram自动将命令拆分为列表,比如/start aff_1234会被解析为['start', 'aff_1234'],直接取索引1就能拿到参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 04:35:45