跳转到主要内容

MPChat Bot 与 MiniApp 常见问题(chat_id、409、file_id、429、initData 等)

MPChat Bot 与 MiniApp 最常见问题的快速解答:如何拿 chat_id、处理 409、file_id 复用、429 应对、initData 能否登录、哪些方法不能随便测。

快速解答开发者最先遇到的问题。参数级细节见 core.mp.net/bots。


总览

按话题分组的常见问题。若这里没有你的问题,请查阅本栏目对应指南。

快速开始

  • 从哪开始?非开发者:10 分钟试跑(Windows / iOS)。开发者:curl + Node.js 快速接入。

  • mpbot 是什么?测试/开发用 Bot,有独立 token 与 API 权限,与生产隔离。

  • token 放哪?环境变量或密钥管理。绝不进 git、日志或前端。

收发消息

  • Bot 为何不能主动私聊?用户须先建立上下文;sendMessage 需要有效 chat_id。

  • chat_id 如何获取?用户发消息 → getUpdates → 读 message.chat.id。私聊通常等于 user id。

  • getUpdates 返回 []?还没消息,或该批已被消费。检查 offset 与 Webhook 状态。

  • getUpdates 返回 409?已启用 Webhook(与轮询互斥)。用 getWebhookInfo 确认;勿自行执行 deleteWebhook。

媒体与限制

  • file_id 能复用吗?不能。用公网 URL 或 multipart。

  • banChatMember 会踢人吗?不会——仅禁言(restricted)。用 unbanChatMember 解除。L3 DocOnly。

  • sendPoll / sendLocation 为何不可用?当前返回 501。

  • 触发 429 怎么办?不超过每秒 30 次,并加指数退避。

MiniApp

  • 前端数据能直接登录吗?不能。后端必须验证 initData 签名;initDataUnsafe 仅用于 UI。

  • shortName 是 miniapp id 吗?不是。shortName 是直链 https://mp.net/{bot}/{shortName} 里的短名;miniapp_id(ma_…)是签名 initData 里的平台 ID。

  • 如何打开 MiniApp 指定页?加 ?startapp=…,会进入签名后的 initData.start_param。

  • 点了按钮一直转圈?必须在 300 秒内调用 answerCallbackQuery(不支持 url / cache_time)。

  • 如何关掉链接预览卡?sendMessage 设 link_preview_options: { "is_disabled": true }。

安全

  • 哪些方法不能随便测?DocOnly:logOut、leaveChat、deleteMessage(s)、banChatMember、setWebhook、deleteWebhook。

  • 官方参考在哪?core.mp.net/bots——参数级权威来源。

相关文章

本 FAQ 概括的行为可能变化。请始终在官方方法页确认当前状态。

这是否解答了您的问题?