本文中的 DocOnly、L0–L3 用于说明本指南的测试执行约束与操作风险,不代表接口是否受支持。接口支持状态应另查官方文档;修改消息、会话或投递配置前,请核对目标和恢复方式。
快速解答开发者最先遇到的问题。参数级细节见 core.mp.net/bots。
总览
按话题分组的常见问题。若这里没有你的问题,请查阅本栏目对应指南。
快速开始
从哪开始?使用已有 Bot:查看用户指南。首次调试 API:选择 Windows/macOS 分步教程;熟悉终端的开发者可选择 curl 或 Node.js 接入示例,两条调试路径任选其一。 如何开始使用 Bot:发送指令与使用聊天按钮 跑通第一个 MPChat Bot:手机测试与 Windows/macOS 调试 Bot API 接入示例:用 curl 或 Node.js 收发测试消息
mpbot 是什么?测试/开发用 Bot,有独立 token 与 API 权限,与生产隔离。
token 放哪?环境变量或密钥管理。绝不进 git、日志或前端。
收发消息
Bot 为何不能主动私聊?用户须先建立上下文;
sendMessage需要有效chat_id。chat_id 如何获取? 请用户先给 Bot 发消息,再根据当前接收方式,从 Webhook 更新或
getUpdates结果中读取message.chat.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。如何关掉链接预览卡? 在
sendMessage中设置link_preview_options.is_disabled=true,可同时关闭普通链接和 MiniApp 链接的预览卡片。
安全
哪些方法不能随便测?DocOnly:
logOut、leaveChat、deleteMessage(s)、banChatMember、setWebhook、deleteWebhook。官方参考在哪?core.mp.net/bots——参数级权威来源。
为什么已有的私聊返回 HTTP 403?
用户屏蔽 Bot 后,向该私聊发送、转发或复制消息都会返回 HTTP 403。收到此错误后跳过重试。用户解除屏蔽后,Bot 可以发送新消息,屏蔽期间未送达的消息不会自动补发。
为什么会重复投递?待投递数为 0 代表什么?
Webhook 重投沿用原
update_id。校验请求后,先按 Bot 和update_id组成的唯一键持久化更新,再返回 HTTP 2xx(如 200 或 204)。业务处理也要做到幂等,避免任务重跑时重复回复或重复修改状态。普通更新最多投递 24 小时。按钮回调更新最多投递 150 秒,
answerCallbackQuery另有 300 秒应答窗口。pending_update_count=0表示当前没有待投递更新。要确认哪些更新到达了服务,请查看getWebhookInfo的最近投递错误,并核对服务端的接收和处理记录。
为什么点回调按钮后一直转圈?
先确认按钮使用
callback_data。如果用allowed_updates筛选更新类型,应包含callback_query。检查服务是否在 150 秒投递窗口内收到了该更新。收到后尽快用
callback_query.id调用answerCallbackQuery,从点击产生回调起 300 秒内完成。同一 ID 仅首个有效应答成功,重复或过期应答返回 HTTP 400。客户端不会显示应答里的
text或show_alert。如果需要让用户看到处理结果,可以编辑消息或发送回复。
为什么 MiniApp 按钮在私聊可用,在群里却打不开?
普通
web_app按钮只在 Bot 私聊可用。在 Bot 已加入的群或超级群分享 MiniApp 时,该条sendMessage的内联键盘必须恰好一行一个按钮,且按钮只含text和web_app。同时确认 URL 指向当前 Bot 拥有且已启用的 MiniApp。
为什么编辑消息后按钮或媒体说明消失了?
复合编辑消息时,省略内联键盘或媒体说明对应的字段,会清空该字段。要保留原值,在编辑请求里一并传入。只改键盘或媒体说明时,可以用对应的专用编辑方法。
相关文章
本 FAQ 概括的行为可能变化。请始终在官方方法页确认当前状态。
