摸鱼派社区 Golang SDK,提供完整的 API 接口封装。
- ✅ 完整的API支持 - 实现OpenAPI定义的76个接口中的76个(100%完成度)
- ✅ 类型安全 - 使用go-enum自动生成枚举类型
- ✅ 灵活配置 - 支持多种ConfigProvider(内存/文件)
- ✅ WebSocket支持 - 泛型架构,支持聊天室、私聊、用户通知
- ✅ 自动重连 - 可配置重连策略(固定延迟/指数退避)
- ✅ 心跳机制 - 可选的自定义心跳配置
- ✅ 消息解析 - 完整的WebSocket消息解析器
- ✅ 并发安全 - 细粒度锁优化,线程安全的实现
- ✅ 结构化日志 - 使用slog.Logger,支持自定义日志级别
- ✅ 错误处理 - 完整的错误处理和包装
- 鉴权
- 获取apiKey
- 查询用户信息
- 注册用户
- 预注册账号 POST /register
- 验证手机验证码 GET /verify
- 注册账号 POST /register2
- OpenID 接入
- 获取授权链接
- 签名校验
- 获取用户信息
- 新增
- 获取用户VIP信息 通用 GET /api/membership/{userId}
- 获取操作日志 通用 GET /logs/more
- 杂项
- 勋章链接生成
- 客户端版本解析
- 通用
- 通过API累计用户的在线时间 WS
- 查询成员信息
- 用户名联想
- 用户常用表情
- 获取活跃度
- 获取签到状态
- 领取昨日活跃奖励
- 查询在昨日奖励领取状态
- 举报
- 查询最近注册的20个用户
- 转账
- 关注用户
- 取关用户
- 通知
- 通知计数
- 通知详情
- 批量已读类型的通知
- 已读所有消息
- 聊天室
- 获取发送弹幕的价格
- 连接聊天室 WS
- 聊天室地址API
- 聊天历史消息
- 通过聊天消息的oId获取前后消息
- 发送消息
- 弹幕
- 红包
- 撤回消息
- 获取消息markdown
- 打开红包
- 获取表情包
- 默认表情包
- 同步表情包
- 获取禁言中的成员列表(思过崖)
- 图床
- 上传图片
- 限制
- 帖子
- 发帖
- 更新帖子
- 帖子列表
- 特别注意
- 最近
- 按标签
- 按领域
- 获取指定帖子
- 获取指定用户的帖子列表
- 给文章点赞
- 感谢文章
- 获取帖子的评论列表
- 评论/回复
- 更新评论
- 给评论点赞
- 感谢评论
- 删除评论
- 获取帖子当前正在阅读的人数
- /article-channel WSS
- 收藏帖子
- 取消收藏帖子
- 关注帖子
- 取消关注帖子
- 打赏帖子
- 清风明月
- 获取清风明月列表
- 发布清风明月
- 获取指定用户的清风明月列表
- 私信
- 消息通知 /user-channel WSS
- 获取用户私聊历史消息
- 标记用户消息已读
- 获取私聊用户列表以及第一条消息
- 获取未读消息
- 撤回私聊消息
- 敏感操作
- 永久注销删除用户
- 金手指
- 注意
- 上传摸鱼大闯关关卡数据
- 查询用户最近登录的IP地址
- 添加勋章
- 移除勋章
- 移除勋章(通过userId)
- 查询用户背包
- 调整用户背包
- 调整用户积分
- 获取用户活跃度
- 领取指定用户的昨日活跃奖励
go get github.com/FishPiOffical/golang-sdk// 使用 API Key 创建 SDK 实例
fishpi := sdk.NewSDKWithAPIKey("your-api-key")
// 获取用户信息
userInfo, err := fishpi.GetUserInfo()
if err != nil {
log.Fatal(err)
}
fmt.Printf("用户: %s\n", userInfo.Data.UserName)// 方式1: API Key(推荐)
fishpi := sdk.NewSDKWithAPIKey("your-api-key")
// 方式2: 文件配置
provider := sdk.NewFileConfigProvider("config.json")
fishpi := sdk.NewSDK(provider)
// 方式3: 内存配置
provider := sdk.NewMemoryConfigProvider(&sdk.Config{
BaseUrl: "https://fishpi.cn",
ApiKey: "your-api-key",
})
fishpi := sdk.NewSDK(provider)// 启用请求日志
fishpi := sdk.NewSDK(provider,
sdk.WithLogDir("./logs"),
)
// 自定义 JSON 解析器(用于调试)
logger := slog.New(slog.NewJSONHandler(os.Stdout, nil))
fishpi := sdk.NewSDK(provider,
sdk.WithCustomUnmarshaler(logger),
)查看 examples/usage/main.go 获取完整的使用示例,包括:
- 配置管理: 使用 YAML 配置文件
- 日志配置: 使用 devslog 美化日志输出
- API 调用: 用户信息、文章、清风明月等功能
- WebSocket: 聊天室、私聊、通知的实时通信
- 错误处理: 完整的错误处理示例
运行示例:
- 增加本地配置
_tmp/config.yaml
baseUrl: https://fishpi.cn
userAgent: your-user-agent-here
apiKey: your-api-key-here
username: your-username-here
password: your-password-here
passwordMd5: your-md5-password-here
mfaCode: your-mfa-code-here
totp: your-totp-secret-here
pointGoldFingerKey: "your-point-gold-finger-key-here"
livenessGoldFingerKey: "your-liveness-gold-finger-key-here"
gameGoldFingerKey: "your-game-gold-finger-key-here"
queryGoldFingerKey: "your-query-gold-finger-key-here"
metalGoldFingerKey: "your-metal-gold-finger-key-here"
itemGoldFingerKey: "your-item-gold-finger-key-here"
- 运行代码
cd examples/usage
go run main.go
⚠️ 特别说明
- 示例代码需要配置
config.yaml文件,包含apiKey和baseUrl- WebSocket 连接需要有效的 API Key
- 部分功能(如金手指)需要特殊权限
- 建议先在摸鱼派社区获取 API Key:https://fishpi.cn/settings/account
基于泛型的 WebSocket 客户端,支持自动重连、心跳、自定义日志等企业级特性。
核心特性:
- 🔧 泛型架构 - 类型安全的消息处理
- 🔄 自动重连 - 默认启用,支持指数退避/固定延迟策略
- 💓 心跳机制 - 可配置心跳间隔和自定义消息
- 🔒 并发安全 - 细粒度锁优化
- ⚙️ 函数式选项 - 灵活配置
- 📝 结构化日志 - 使用 slog.Logger
快速开始:
// 1. 聊天室(自动重连)
ws := fishpi.NewChatroomWebSocket("wss://fishpi.cn/chat-room-channel?apiKey=xxx")
ws.OnMessage(func(msg *types.ChatroomMessage) {
fmt.Printf("收到消息: %s\n", msg.Type)
})
ws.Connect()
ws.SendMessage("Hello!")
// 2. 私聊
ws := fishpi.NewPrivateChatWebSocket()
ws.OnMessage(func(msg *types.ChatMessage) {
fmt.Printf("[私聊] %s\n", msg.Data.Content)
})
ws.Connect()
// 3. 用户通知(带心跳)
ws := fishpi.NewUserNotificationWebSocket(
sdk.WithHeartbeat[types.UserMessage](30*time.Second, func() []byte {
return []byte(`{"type":"ping"}`)
}),
)
ws.Connect()高级配置:
ws := fishpi.NewChatroomWebSocket("wss://...",
// 重连策略
sdk.WithReconnectStrategy[types.ChatroomMessage](&sdk.ExponentialBackoffStrategy{
BaseDelay: 1 * time.Second,
MaxDelay: 60 * time.Second,
Multiplier: 2.0,
}),
// 最大重连次数(0=无限)
sdk.WithMaxReconnectAttempts[types.ChatroomMessage](10),
// 重连失败回调
sdk.WithReconnectFailedCallback[types.ChatroomMessage](func(attempts int, err error) {
log.Printf("重连失败: %v", err)
}),
// 自定义日志
sdk.WithLogger[types.ChatroomMessage](customLogger),
)📖 详细 API 文档: 查看 examples/usage/main.go 获取所有 API 的实际使用示例
SDK 使用 go-enum 自动生成所有枚举类型:
// 枚举使用
articleType := types.ArticleListTypeRecent
fmt.Println(articleType.String()) // "recent"
// 解析枚举
parsed, err := types.ParseArticleListType("hot")# 克隆项目
git clone https://github.com/FishPiOffical/golang-sdk
# 安装依赖
go mod download
# 生成枚举代码
go generate ./types/...Apache 2.0
欢迎提交Issue和Pull Request!