mcpField
M
max-messenger

max-messenger

github.com/max-messenger开发1572 次安装4 周前更新
代码仓库

关于 max-messenger

面向 MAX Messenger 机器人和小程序开发的参考技能,涵盖 Go 和 TypeScript 客户端、原始 API、平台限制、Webhook 安全及实现模式。

主要功能

  1. 01Go 和 TypeScript 机器人指引
  2. 02原始 API 与更新事件参考
  3. 03Webhook 和小程序安全
  4. 04TLS 与平台限制说明
  5. 05速率限制和重试模式

适用场景

  1. 01构建 MAX Messenger 机器人
  2. 02实现基于 Webhook 的更新处理
  3. 03开发 MAX 小程序后端
  4. 04处理长消息和 API 限制

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/max-messenger/max-agents-skill --skill max-messenger

安装后在 Claude Code 中输入/max-messenger确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

LICENSE
INSTALL.md
.gitignore
README.en.md
README.md
install.sh
references/
formatting.md
bot-api.md
go-client.md
go-maxbot.md
objects-and-updates.md
mini-apps-bridge.md
max-ui.md
sources.md
patterns.md
tls-trust.md
ts-client.md
webhooks-and-security.md

详细介绍

MAX Messenger 开发

已根据官方来源于 2026-09-21 验证(参见 references/sources.md)。MAX 变化 很快:如果此处的内容与实时文档或客户端源码冲突,请以来源为准。

快速参考

内容值
基础 URLhttps://platform-api2.max.ru(自 2026-07-19 起为必需;旧版 platform-api.max.ru 已弃用)
TLSAPI 主机由 Russian Trusted Root CA (Минцифры) 签名——将其添加到信任存储中,绝不要禁用验证 → references/tls-trust.md
身份验证请求头 Authorization: <token>(不带 Bearer;不再支持查询参数 token)
获取 tokenbusiness.max.ru → Чат-боты → bot → ⋮ → Настройки
速率限制API 每秒 30 个请求;每个聊天的回调答复 ≤ 2 次/秒
消息文本≤ 4000 个字符,format:markdown 或 html
更新生产环境使用 Webhook(POST /subscriptions,仅限 443 端口上的 HTTPS);开发环境使用长轮询(GET /updates)。两者互斥
Gogithub.com/max-messenger/max-bot-api-client-go/v2 v2.4.0(首选);github.com/max-messenger/maxbot v1.1.0(可选框架,需要 Go ≥ 1.26,尽管其 go.mod 声明为 1.24)
TypeScript@maxhub/max-bot-api 0.3.1,Node ≥ 20.19,仅支持 ESM
Mini-apps<script src="https://st.max.ru/js/max-web-app.js"> → window.WebApp;UI 套件 @maxhub/max-ui 0.5.0(React 19.2.8)

硬性限制——违反这些限制会引入错误

  1. 主机 + CA。 调用 platform-api2.max.ru。标准 Docker/CI/Node 镜像不信任其 CA,会报错 x509: certificate signed by unknown authority / unable to get local issuer certificate。修复信任 存储(references/tls-trust.md);绝不要使用 InsecureSkipVerify、NODE_TLS_REJECT_UNAUTHORIZED=0 或 verify=False。
  2. 不支持内嵌媒体。 一条消息由 text 和单独的 attachments[] 数组组成,且没有位置/顺序字段, 因此无法将媒体插入段落之间。如需交错发送文本和图片,请分多条消息发送。
  3. 4000 个字符,不支持“阅读全文”。 原始 text 中的每个字符都会计入(包括标记、空格、表情符号); 按字符数而非字节数计算。较长内容请拆分成多条消息(references/patterns.md)。
  4. 不支持定时发送。 没有 send_at。请自行运行调度器。
  5. 不支持 GET /chats(已于 2026-06 移除)。 请自行根据 bot_added / bot_removed / bot_started 更新记录聊天。单个聊天:GET /chats/{chatId}。
  6. POST /chats/{chatId}/members 已停用(2026-09-09 起受限,2026-09-30 起移除)。不要基于此接口构建功能。
  7. 上传是异步的。 上传后若发送过早,会返回 attachment.not.ready——请采用退避策略重试。 上传到 POST /uploads 返回的 url;不同类型对应的主机各不相同,绝不要对其进行硬编码。
  8. Webhook 规则。 必须使用 HTTPS、443 端口,以及受信任 CA 或 Минцифры 颁发的证书(自签名证书和纯 HTTP 自 2026-05-25 起会被拒绝),并提供完整证书链,在 30 秒内回复 200。使用常量时间比较验证 X-Max-Bot-Api-Secret。交付失败 8 小时后,订阅会被删除。
  9. 格式子集。 列表、表格和水平分隔线不受支持——它们会显示为纯文本。代码块会以等宽字体显示,但换行会折叠为空格。标题、粗体/斜体/下划线/删除线、行内代码、链接、引用、提及和高亮均可用(references/formatting.md)。
  10. Mini-app 身份验证须在服务端进行。 在后端使用从 "WebAppData" 密钥开始的两步 HMAC 验证 initData;绝不要信任 initDataUnsafe。公式及经过测试的 Go/TS 代码: references/webhooks-and-security.md。

选择你的技术栈

你正在构建阅读
Go 机器人(默认路径)references/go-client.md → 原始客户端 NewApi、轮询/ webhook、构造器
带路由/中间件的 Go 机器人references/go-maxbot.md(客户端上的可选层)
TypeScript / Node 机器人references/ts-client.md
其他语言 / 原始 HTTPreferences/bot-api.md + references/objects-and-updates.md
Mini-app 前端references/mini-apps-bridge.md,UI 参见 references/max-ui.md
Mini-app 后端认证references/webhooks-and-security.md
Webhook 服务references/webhooks-and-security.md + references/tls-trust.md
速率限制、重试、聊天跟踪、调度、长文本references/patterns.md

两个 Go 包都名为 maxbot。始终使用完整路径导入;如果两个都用,请为其中一个设置别名。

最简机器人

Go — 使用官方客户端进行长轮询:

package main

import (
	"context"
	"log"
	"os"
	"os/signal"
	"time"

	maxbot "github.com/max-messenger/max-bot-api-client-go/v2"
	"github.com/max-messenger/max-bot-api-client-go/v2/model"
)

func main() {
	ctx, stop := signal.NotifyContext(context.Background(), os.Interrupt)
	defer stop()

	api, err := maxbot.NewApi(os.Getenv("MAX_BOT_TOKEN"))
	if err != nil {
		log.Fatalf("init: %v", err)
	}

	var marker int64
	for ctx.Err() == nil {
		updates, next, err := api.Subscriptions.GetUpdates(ctx, marker)
		if err != nil {
			log.Printf("get updates: %v", err)
			select { // back off without ignoring shutdown
			case <-ctx.Done():
			case <-time.After(time.Second):
			}
			continue
		}
		marker = next
		for _, u := range updates {
			if u.UpdateType != model.UpdateMessageCreated {
				continue
			}
			msg := maxbot.NewMessage().
				SetChat(u.ChatID).
				SetFormat(model.FormatMarkdown).
				SetText("**Hi!** Docs: [dev.max.ru](https://dev.max.ru/docs-api)")
			if _, err := api.Messages.Send(ctx, msg); err != nil {
				log.Printf("send: %v", err)
			}
		}
	}
}

如果出现 x509 错误,请传入一个信任 Минцифры 根证书的 HTTP 客户端,使用 maxbot.WithHTTPClient(...) — 参见 references/tls-trust.md。

TypeScript:

import { Bot } from '@maxhub/max-bot-api';

const bot = new Bot(process.env.MAX_BOT_TOKEN!);

bot.command('start', (ctx) =>
  ctx.reply('**Hi!** Docs: [dev.max.ru](https://dev.max.ru/docs-api)', { format: 'markdown' }),
);

bot.start();

Node 默认不信任 Минцифры 根证书:运行时设置 NODE_EXTRA_CA_CERTS=/path/russian_trusted_root_ca.pem(详情参见 references/tls-trust.md)。

常见错误

错误做法正确做法
https://api.max.ru、https://platform-api.max.ruhttps://platform-api2.max.ru
禁用 TLS 验证来“修复” x509 错误信任俄罗斯可信根 CA
POST /webhookPOST /subscriptions
使用请求体的 HMAC 验证 webhookX-Max-Bot-Api-Secret 请求头等于你的密钥(使用恒定时间比较)
直接以机器人令牌作为密钥计算 initData HMAC先推导 secret = HMAC_SHA256("WebAppData", token)
type=phototype=image
JSON 请求体中的 disable_link_preview它是 POST /messages、POST /messages/{messageId}/comments 和 POST /answers 的查询参数 — PUT 不支持
GET /chats 或 GET /chats/{link}根据更新跟踪聊天;对单个聊天使用 GET /chats/{chatId}
硬编码上传主机使用 POST /uploads 返回的 url
消息中使用 Markdown 列表/表格使用纯文本行、标题、引用
在更新处理程序中使用 log.Fatal / 未处理错误记录日志并继续;一条异常更新不应导致机器人停止
忽略回调点击使用 POST /answers 响应(每个聊天 ≤ 2 次/秒)

参考资料

文件内容
references/sources.md所有官方来源、来源冲突时的优先级、版本、如何检查最新信息
references/bot-api.md端点、参数、上传、限制、错误、注明日期的平台变更
references/objects-and-updates.md消息、附件、按钮、Update 类型、聊天、用户、回调、评论
references/formatting.mdMarkdown 和 HTML 子集、提及、不支持的内容
references/tls-trust.mdGo、Node、Docker、curl、Python 的 Минцифры 根 CA;故障排查
references/webhooks-and-security.md订阅、投递规则、密钥请求头、initData、电话和联系人哈希
references/go-client.md官方 Go 客户端 v2:API 接口、构造器、轮询、webhook、上传
references/go-maxbot.mdmaxbot 框架:处理程序、上下文、中间件;何时使用
references/ts-client.md@maxhub/max-bot-api:Bot、处理程序、上下文、键盘、会话、webhook
references/mini-apps-bridge.mdwindow.WebApp API、initData、深度链接、设置
references/max-ui.md@maxhub/max-ui 组件和设置
references/patterns.md速率限制、重试、聊天跟踪、调度、拆分、幂等性

评论

支持 Markdown