跳到主要内容

聊天与 AI

POST /cm/ai/live​

播放页「问AI」:SSE(start/delta/done/error)流式回答 {question≤500字, song:{type:'song',id,name,sub?,pic?}, reset?:bool};delta.text 为累计文本;scope=player 与公共 Chat 隔离,reset=true 先清空播放页上下文

权限:Bearer。

参数校验与业务错误​

HTTP服务端校验说明
400'缺少歌曲信息'

说明中的变量表达式表示运行时值;另有统一的认证、频控和上游错误。

请求模板​

将 {id} 等占位符和字段值替换为实际数据,令牌只使用你自己的 CurrentMusic 会话。

curl --request POST 'https://music.20110208.xyz/cm/ai/live' \
--header 'Authorization: Bearer YOUR_CURRENTMUSIC_TOKEN'

返回类型​

此分支使用专用处理器、文件或事件流响应,或在共享分支中组装 JSON。具体结构见对应专题;文件流不能按 JSON 解析。

实现定位:backend/cm_server.py:4145。接口参数和返回条件均来自该路由分支。

POST /cm/chat/image​

上传聊天图片 {file: base64, filename, contentType}(魔法字节校验,≤1.5MB,5s 频控)

权限:Bearer。

参数校验与业务错误​

HTTP服务端校验说明
400'图片数据非法(base64 解码失败)'
400str(e)
429'图片传得太频繁,稍后再试'

说明中的变量表达式表示运行时值;另有统一的认证、频控和上游错误。

请求模板​

将 {id} 等占位符和字段值替换为实际数据,令牌只使用你自己的 CurrentMusic 会话。

curl --request POST 'https://music.20110208.xyz/cm/chat/image' \
--header 'Authorization: Bearer YOUR_CURRENTMUSIC_TOKEN'

返回结构​

以下是实现中直接返回的字段与取值表达式,不是一次真实请求的响应示例。条件分支可能返回不同结构。

HTTP 200

字段取值/生成逻辑
imagename
urlf'/cm/chat/image/{name}'

实现定位:backend/cm_server.py:4229。接口参数和返回条件均来自该路由分支。

GET /cm/chat/image/{filename}​

聊天与 AI · /chat/image/{filename}

权限:路由未直接调用登录检查;委托处理器可能另行校验,见说明。

请求参数​

位置字段默认/读取方式
pathfilename路径占位符;按业务替换

表格列出实际代码读取的字段;get 的默认值不等于业务可省略。必填、长度和取值约束见下方校验及关联专题。

参数校验与业务错误​

HTTP服务端校验说明
404'图片不存在'

说明中的变量表达式表示运行时值;另有统一的认证、频控和上游错误。

请求模板​

将 {id} 等占位符和字段值替换为实际数据,令牌只使用你自己的 CurrentMusic 会话。

curl --request GET 'https://music.20110208.xyz/cm/chat/image/{filename}' \
--header 'Authorization: Bearer YOUR_CURRENTMUSIC_TOKEN'

返回类型​

此分支使用专用处理器、文件或事件流响应,或在共享分支中组装 JSON。具体结构见对应专题;文件流不能按 JSON 解析。

实现定位:backend/cm_server.py:4246。接口参数和返回条件均来自该路由分支。

GET /cm/chat/live​

聊天实时流:?sse=1 走 SSE(message/delete/edit 事件,id=seq 断线续传;edit.payload={id,content,atts,streaming},AI 流式回答用同一 id 反复更新);不带则返回 JSON 增量

权限:公开。

请求参数​

位置字段默认/读取方式
querysince0(空值时回退)
querysse未在 get 中指定

表格列出实际代码读取的字段;get 的默认值不等于业务可省略。必填、长度和取值约束见下方校验及关联专题。

请求模板​

将 {id} 等占位符和字段值替换为实际数据,令牌只使用你自己的 CurrentMusic 会话。

curl --request GET 'https://music.20110208.xyz/cm/chat/live?sse=<sse>&since=<since>'

返回结构​

以下是实现中直接返回的字段与取值表达式,不是一次真实请求的响应示例。条件分支可能返回不同结构。

HTTP 200

字段取值/生成逻辑
eventscm_chat.events_since(since)
latestSeqcm_chat.latest_seq()

实现定位:backend/cm_server.py:4264。接口参数和返回条件均来自该路由分支。

GET /cm/chat/members​

聊天成员:?q= 实时搜索昵称/用户名(@ 提及选择器,最多 20,前缀命中优先;无 q 返回近期活跃;尊重广场公开开关,AI 账号始终可搜到)

权限:公开。

请求参数​

位置字段默认/读取方式
querylimit8(空值时回退)
queryq''(空值时回退)

表格列出实际代码读取的字段;get 的默认值不等于业务可省略。必填、长度和取值约束见下方校验及关联专题。

请求模板​

将 {id} 等占位符和字段值替换为实际数据,令牌只使用你自己的 CurrentMusic 会话。

curl --request GET 'https://music.20110208.xyz/cm/chat/members?q=<q>&limit=<limit>'

返回结构​

以下是实现中直接返回的字段与取值表达式,不是一次真实请求的响应示例。条件分支可能返回不同结构。

HTTP 200

字段取值/生成逻辑
memberscm_chat.recent_members(limit=int(q.get('limit') or 20))

HTTP 200

字段取值/生成逻辑
memberscm_chat.search_members(term, limit=int(q.get('limit') or 8))

实现定位:backend/cm_server.py:4254。接口参数和返回条件均来自该路由分支。

GET /cm/chat/messages​

公共聊天室:最近消息(含 atts 引用卡片;?before= 向更早翻页,?limit=1~50)

权限:公开。

请求参数​

位置字段默认/读取方式
querybefore0(空值时回退)
querylimit30(空值时回退)

表格列出实际代码读取的字段;get 的默认值不等于业务可省略。必填、长度和取值约束见下方校验及关联专题。

请求模板​

将 {id} 等占位符和字段值替换为实际数据,令牌只使用你自己的 CurrentMusic 会话。

curl --request GET 'https://music.20110208.xyz/cm/chat/messages?before=<before>&limit=<limit>'

返回结构​

以下是实现中直接返回的字段与取值表达式,不是一次真实请求的响应示例。条件分支可能返回不同结构。

HTTP 200

字段取值/生成逻辑
messagescm_chat.list_messages(before=int(q.get('before') or 0), limit=int(q.get('limit') or 30))

实现定位:backend/cm_server.py:4196。接口参数和返回条件均来自该路由分支。

POST /cm/chat/messages​

发送消息 {content≤500字, image?: 图片文件名, mentions?: [@用户id], atts?: [{type: song|album|artist|playlist, id, name, sub?, pic?}]≤5}(1.5s 频控)。@CurrentMusicAI 可提问(卡片可选);按用户保存近 6 轮上下文,服务端异步联网检索后以 AI 账号回复:先发空消息占位,再经 /chat/live 的 edit 事件流式更新(streaming=true),最终内容为 Markdown,可带 ≤3 张 atts 卡片;消息带 image 时图片会作为视觉输入发送给 AI

权限:Bearer。

请求参数​

位置字段默认/读取方式
JSON bodyatts未在 get 中指定

表格列出实际代码读取的字段;get 的默认值不等于业务可省略。必填、长度和取值约束见下方校验及关联专题。

参数校验与业务错误​

HTTP服务端校验说明
400'图片引用非法'
400'说点什么、带张图,或引用一首歌吧'
429'发言太快啦,歇一下'

说明中的变量表达式表示运行时值;另有统一的认证、频控和上游错误。

请求模板​

将 {id} 等占位符和字段值替换为实际数据,令牌只使用你自己的 CurrentMusic 会话。

curl --request POST 'https://music.20110208.xyz/cm/chat/messages' \
--header 'Authorization: Bearer YOUR_CURRENTMUSIC_TOKEN' \
--header 'Content-Type: application/json' \
--data '{"atts": "<atts>"}'

返回结构​

以下是实现中直接返回的字段与取值表达式,不是一次真实请求的响应示例。条件分支可能返回不同结构。

HTTP 200

字段取值/生成逻辑
响应体sent

实现定位:backend/cm_server.py:4200。接口参数和返回条件均来自该路由分支。

DELETE /cm/chat/messages/{id}​

删除消息(本人或管理员/超管/站长,软删)

权限:Bearer。

请求参数​

位置字段默认/读取方式
pathid路径占位符;按业务替换

表格列出实际代码读取的字段;get 的默认值不等于业务可省略。必填、长度和取值约束见下方校验及关联专题。

参数校验与业务错误​

HTTP服务端校验说明
403'只能删除自己的消息(管理员可删任何人的)'

说明中的变量表达式表示运行时值;另有统一的认证、频控和上游错误。

请求模板​

将 {id} 等占位符和字段值替换为实际数据,令牌只使用你自己的 CurrentMusic 会话。

curl --request DELETE 'https://music.20110208.xyz/cm/chat/messages/{id}' \
--header 'Authorization: Bearer YOUR_CURRENTMUSIC_TOKEN'

返回结构​

以下是实现中直接返回的字段与取值表达式,不是一次真实请求的响应示例。条件分支可能返回不同结构。

HTTP 200

字段取值/生成逻辑
okTrue

实现定位:backend/cm_server.py:4223。接口参数和返回条件均来自该路由分支。