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

如何通过URL向机器人发送带参数的命令?需配置额外处理器吗?

解决Telegram机器人带参数启动命令的问题

正确的URL格式

你提到的https://t.me/<机器人用户名>?start=my_data格式本身是有效的,但要注意几个核心细节:

  • 必须把<机器人用户名>替换为机器人的实际ID(比如机器人叫MyTestBot,链接就是https://t.me/MyTestBot?start=my_data)
  • 这个链接的作用是:当用户未和机器人对话过时,点击后会打开Telegram客户端并自动发送/start my_data命令;但如果用户已经和机器人聊过,点击链接只会打开聊天窗口,不会自动触发命令——这是Telegram的原生机制,并非链接格式错误。

如果需要让已对话过的用户也能触发带参数的命令,可以沿用相同格式,只是需要引导用户手动发送/start <参数>,或者在聊天窗口内添加自定义按钮来触发带参数的命令。

代码中需要的处理器配置

机器人必须专门处理带参数的命令,以下是不同框架的实现示例:

示例1:python-telegram-bot(v13+)

from telegram import Update
from telegram.ext import Updater, CommandHandler, CallbackContext

def handle_start(update: Update, context: CallbackContext) -> None:
    # 解析命令后的参数
    params = context.args
    if params:
        received_param = params[0]
        update.message.reply_text(f"收到启动参数:{received_param}")
    else:
        update.message.reply_text("欢迎使用机器人!")

def main():
    # 替换为你的机器人Token
    updater = Updater("YOUR_BOT_TOKEN")
    dispatcher = updater.dispatcher

    # 注册/start命令处理器
    dispatcher.add_handler(CommandHandler("start", handle_start))

    updater.start_polling()
    updater.idle()

if __name__ == '__main__':
    main()

示例2:pyTelegramBotAPI

import telebot

bot = telebot.TeleBot("YOUR_BOT_TOKEN")

@bot.message_handler(commands=['start'])
def send_welcome(message):
    # 提取参数
    param = message.text.split()[1] if len(message.text.split()) > 1 else None
    if param:
        bot.reply_to(message, f"收到参数:{param}")
    else:
        bot.reply_to(message, "欢迎使用机器人!")

bot.polling()

核心逻辑说明

不管用哪种框架,核心都是在/start命令的处理函数中,解析用户发送的命令后缀参数——比如用户发送/start my_data,代码需要提取出my_data并做对应处理。

常见问题排查

  • 确认机器人用户名完全正确,注意大小写和特殊字符
  • 如果用户已和机器人对话过,点击链接不会自动发命令,需引导用户手动发送带参数的/start命令
  • 确保机器人的polling或webhook配置正常,能正常接收用户消息

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 21:00:06