Swiggy Telegram机器人

一款通过Telegram使用自然语言下单Swiggy服务的机器人,支持食品、杂货订购和餐厅预订功能。

  • by darcy2002
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 darcy2002/swiggy-tg-bot

使用说明

Swiggy Telegram机器人

使用Telegram中的自然语言下Swiggy订单 克劳德 和那个 旋转MCP (模型上下文协议)。

  • Swiggy Food --搜索餐厅、浏览菜单、管理购物车、下食品订单(COD)
  • Instamart --搜索产品、购物车、下杂货订单(COD)
  • 外出就餐 --发现餐厅、检查位置、预订餐桌(免费预订)

先决条件

设置

  1. 克隆并安装

    cd swiggy-tg-bot
    npm install
    
  2. 配置环境

    cp .env.example .env
    

    编辑 .env:

    • TELEGRAM_BOT_TOKEN --来自@BotFather
    • ANTHROPIC_API_KEY --从Anthropic控制台
    • SWIGGY_AUTH_TOKEN --可选;下单所需。通过以下方式获取 MCP 检查员:
      • 跑 npx @modelcontextprotocol/inspector
      • 传输:SSE或流式HTTP,URL,例如。 https://mcp.swiggy.com/food
      • 打开身份验证设置→ 快速OAuth流程→ copy access_token 进入 SWIGGY_AUTH_TOKEN
  3. 运行机器人

    npm start
    

    或者自动重启: npm run dev

如果您看到“Swiggy工具无法加载”

  1. 在中设置令牌 .env
    添加一行: SWIGGY_AUTH_TOKEN=<paste your access_token here>
    仅使用 access_token OAuth响应中的值(否 Bearer ,没有引用)。保存后重新启动机器人 .env.

  2. 使用新的错误消息
    机器人现在返回真正的失败原因(例如“SWIGGY_AUTH_TOKEN缺失”、“MCP初始化失败:401”、“无会话id”)。检查Telegram中的消息,查看令牌是否错误、过期或MCP服务器无法访问。

  3. 令牌到期
    Swiggy代币到期。如果它曾经工作过,然后停止了,那就换一个新的 access_token 通过OAuth(例如MCP Inspector中的引导OAuth)并更新 SWIGGY_AUTH_TOKEN.

用法

  • /开始 --简介和提示
  • /帮助 --示例提示
  • 或者只需输入自然语言,例如:
    • “查找我附近的biryani餐厅并将其添加到购物车中”
    • “将牛奶和面包添加到我的Instamart购物车中,以便送货到家”
    • “明天晚上8点在Koramangala的一家意大利餐厅预订一张2人桌”

提示: 请注明您的收货地址(例如“使用我的家庭住址”)。订单仅为货到付款,一旦下单就不能取消。请勿同时使用Swiggy应用程序以避免会话问题。

运作原理

  1. 您在中发送消息 电报.
  2. 消息转到 克劳德 (人类信息API)与Swiggy MCP工具定义(食品,Instamart,Dineout)。
  3. Claude解释用户的意图,调用正确的MCP工具(搜索、购物车、订单等),并在Telegram中回复。

所以: 电报→ 克劳德(选择工具)→ 我们称之为Swiggy MCP→ 结果→ 克劳德(格式回复)→ 电报。 你的 Swiggy OAuth令牌 仅在调用MCP服务器时使用(步骤4)。

故障排除:OAuth令牌(“未能发现OAuth元数据”)

如果MCP检查器(或其他OAuth客户端)显示 “未能发现OAuth元数据” 当您使用Swiggy MCP URL时(https://mcp.swiggy.com/food),这是因为:

  • OAuth发现在 域根,不低于 /food.
  • 有效的发现URL: https://mcp.swiggy.com/.well-known/oauth-authorization-server
  • 许多客户端从MCP URL获取发现(例如。 .../food/.well-known/...),Swiggy不提供服务,因此发现失败。

获取代币的方法:

  1. OAuth流程引导(推荐)
    在MCP Inspector(或您的客户)中,使用 “引导OAuth流” 而不是“快速OAuth流”,并设置:

    • 发现/授权服务器: https://mcp.swiggy.com/.well-known/oauth-authorization-server
      或 手动:
    • 授权URL: https://mcp.swiggy.com/auth/authorize
    • 令牌URL: https://mcp.swiggy.com/auth/token
    • 重定向URI:其中之一 白名单URI (例如。 http://localhost/callback).
      如果该工具要求提供自定义发现URL,请使用上面的发现URL。
  2. 首先使用受支持的客户端
    Swiggy支架 克劳德桌面,光标,VS代码,Raycast,Kiro在其中一个中添加Swiggy MCP(例如Cursor或Claude Desktop),在那里完成OAuth,然后使用bot;令牌由该客户端管理。对于独立的机器人,你仍然需要一个令牌(例如通过上面的Guided OAuth)。

  3. 无令牌运行
    你可以走了 SWIGGY_AUTH_TOKEN 未设置。搜索、菜单浏览和类似的只读流可以在没有身份验证的情况下工作;为您的帐户下订单或更新购物车通常需要一个令牌。你可以尝试不带令牌的机器人,稍后再添加一个。

  4. 问Swiggy
    有关更多选项(例如,额外的重定向URI或无头令牌流),请联系 Swiggy开发团队.

使用Cursor(mcp.json)中的令牌

Cursor不会将Swiggy OAuth令牌存储在可读的地方。 你的 ~/.cursor/mcp.json 有 swiggy-food 和 "headers": {} --Cursor要么没有完成Swiggy的OAuth,要么将令牌保存在系统密钥链中,不将其写入配置。所以你 不能 自动从Cursor“获取”令牌。

如果您获得令牌(例如通过 OAuth引导 在MCP检查器中使用发现URL https://mcp.swiggy.com/.well-known/oauth-authorization-server),您可以:

  1. 放进去 .env
    SWIGGY_AUTH_TOKEN=your_token_here

  2. 或者把它放在Cursor的mcp.json中 (光标+这个机器人的一个位置):
    编辑 ~/.cursor/mcp.json 并在下面添加令牌 swiggy-food (或 swiggy-instamart / swiggy-dineout):

    "swiggy-food": {
      "type": "http",
      "url": "https://mcp.swiggy.com/food",
      "headers": { "Authorization": "Bearer YOUR_ACCESS_TOKEN" }
    }
    

    机器人将使用 SWIGGY_AUTH_TOKEN 从env开始;如果没有设置,它将从中读取令牌 ~/.cursor/mcp.json 对于任何Swiggy MCP条目。

参考文献