KOOK 是专属游戏玩家的文字、语音和组队工具,安全免费、没有广告、低资源占用、高通话质量。
kaiheila / api-docs Goto Github PK
View Code? Open in Web Editor NEWKOOK开发者中心文档
License: MIT License
KOOK开发者中心文档
License: MIT License
KOOK 是专属游戏玩家的文字、语音和组队工具,安全免费、没有广告、低资源占用、高通话质量。
使用web端 message-builder 即可复现。
[
{
"type": "card",
"theme": "secondary",
"size": "lg",
"modules": [
{
"type": "section",
"text": {
"type": "kmarkdown",
"content": "\u003c\u0026ÿĀĀĀ\u003etest\u003c$ÿĀ\u001c\u0003\u003e"
}
}
]
}
]
正确输出解码后的unicode字符或原文。
报错:
卡片消息格式没有通过验证或者不存在
markdown_string不存在或者你没有权限操作
文档中约定了Channel对象,然而在频道相关api中:获取频道列表,获取频道详情,创建频道,返回的数据对象均与Channel对象不一致,这对api的开发使用造成较大困扰,尤其是对于非动态语言(目前正在开发 Rust lib)
尽可能统一相近api返回的对象字段
如上
如上
触发 updated_channel
事件,通过 websocket 监听事件。
d.extra.body.is_category 的类型是 boolean,与文档中的样例及 Channel 类型一致
d.extra.body.is_category 的类型是 number
客户端识别用户正在播放的音乐
支持识别Spotify播放的音乐
可以识别用户使用Spotify播放的歌曲
并且给https://developer.kookapp.cn/doc/http/game#%E6%B7%BB%E5%8A%A0%E6%B8%B8%E6%88%8F/%E9%9F%B3%E4%B9%90%E8%AE%B0%E5%BD%95-%E5%BC%80%E5%A7%8B%E7%8E%A9/%E5%90%AC
音乐软件枚举中添加spotify
无
Describe the bug
比如这个请求[1]。它只返回二十条消息,却要半分多钟,不适合生产使用。用其它 flag 参数的话则没有问题。
[1]: http://kaiheila.cn/api/v3/message/list?flag=around&target_id=1071036821430777&msg_id=48940efa-9295-4c7f-a159-7f97343a04ee(需要 Authorization)
来自 android 客户端的 event.d.extra
:
{
"author": {
"avatar": "url str",
"bot": "False",
"id": "2184300000",
"identify_num": "2118",
"mobile_verified": "True",
"nickname": "str",
"online": "False",
"os": "Android",
"roles": [],
"username": "str"
},
"duration": 0,
"guild_id": "1039332615500000",
"height": 0,
"mention": [],
"mention_all": "False",
"mention_here": "False",
"mention_roles": [],
"size": 0,
"type": 1,
"width": 0
}
来自其他客户端的 event.d.extra
:
"extra": {
"local_id": "lCJWd3XHfozeGPSEQ14MLFH8",
"type": "1",
"guild_id": "1039332615500000",
"channel_name": "str",
"mention": [],
"mention_all": "False",
"mention_roles": [],
"mention_here": "False",
"code": "",
"author": {
"identify_num": "4771",
"avatar": "url str",
"username": "str",
"id": "3570900000",
"nickname": "str",
"roles": [
59754,
59750
]
}
}
稍微消掉了一些个人信息,两个 extra
比较关键的出入有:
extra.type
一个是 literal string,一个是 intextra.channel_name
这个 fieldextra.author.roles
为空(正常应该有两个 roles)其他还有一些出入,不过开发文档中目前都没有相关说明,就不列出来了
下午和 tttzzz 聊了一会儿这个问题,他也表示是安卓 APP 的 BUG
我转到这里记录一下供遇到相关问题的朋友参考
使用kmarkdown+链接生成的链接只能打开网页版,不能在当前客户端加入语音频道
希望可以使用其他type的消息邀请玩家加入语音频道(或者增加按钮功能,使按钮可以加入语音频道)
组队bot,创建房间后需要邀请玩家加入语音频道,如果是采用临时更新card message作为菜单的形式,反复发送type为1的临时消息会导致菜单被刷没,只能刷新频道消息。
无
调用了api更新游戏接口/api/v3/game/update
,代码如下
async def status_active():
url="https://www.kookapp.cn/api/v3/game/update"
headers={f'Authorization': f"Bot 这里填入了bot的token"}
params = {"id":453027,"icon":"https://s1.ax1x.com/2022/07/16/j5rrwV.png"}
async with aiohttp.ClientSession() as session:
async with session.post(url, json=params,headers=headers) as response:
ret =json.loads(await response.text())
print(ret)
此代码可正常更新bot动态/删除bot动态(修改url和参数后)
返回正确调用的结果
{
"code": 0,
"message": "操作成功",
"data": {}
}
使用上图所示代码,会报如下错误
{'code': 40000, 'message': 'id参数错误', 'data': {}}
如果使用khl.py
的SDK,则会报如下错误(已和sdk作者联系)
khl.requester.HTTPRequester.APIRequestFailed: Requesting 'POST game/update' failed with 40000: 无法获取文件信息
id参数是int,且我可以正常使用该id进行bot游戏动态的更新操作。所以不可能是这个id游戏不存在。以下是当初创建游戏接收到的返回值👇
{'code': 0, 'message': '操作成功', 'data': {'id': 453027, 'name': '无畏契约', 'type': 0, 'options': '', 'kmhook_admin': False, 'icon': 'https://img.kookapp.cn/assets/2022-07/1NVv2eLQuf074074.png/icon', 'process_name': [], 'product_name': []}}
问题就是无法更新该id游戏的信息(我现在想更新一下icon)
调用api进行操作之后,bot的游戏动态出现很快,但是删除游戏动态的操作需要很久才能同步!如下图,10分钟都没搞定……
已尝试刷新网页端/重启客户端,不起作用
Q | A |
---|---|
你使用的语言 | python |
你的操作系统 | windows |
https://developer.kaiheila.cn/doc/reference
速度限制
Section
有关速度限制的问题,请参阅速率限制一节 (https://developer.kaiheila.cn/docs/rate-limit)
https://developer.kaiheila.cn/docs/rate-limit (404)
->
https://developer.kaiheila.cn/doc/rate-limit
消息相关文档
在 频道消息相关接口文档 中,是有针对于 消息详情参数 的说明的,但是在 用户私聊消息接口文档 则没有对消息内容进行说明。那么私聊消息的数据字段是与频道消息数据字段一致吗?如果是,建议增加一个备注说明,或者为 消息
字段提供一个单独的概述页之类的
语音对讲技术实现,你好,请问你们语音对讲是用什么编码的?我最近也在研究语音对讲,技术上遇到点难题,
vue作为技术框架,websocket作为通信方式,实时语音读取,pcm格式文件,打算编码未opus格式
希望能帮忙解答下,语音采集多久时间发送到服务器最好,pcm编码opus如何变码,麻烦解答下,谢谢
调用 /user/me api
根据文档,invited_count 字段返回类型为 int
具有 mobile_verify: bool 字段
实际收到类型为 String
缺失 mobile_verify 字段
Q | A |
---|---|
你使用的语言 | Rust |
你的操作系统 | windows/Linux |
开黑啦官方的吐槽中心链接 好像过期了 有没有新的链接啊
想弄一下bot玩玩 但是好像需要先申请
谢谢了
/guild/view这个接口,返回值的channels列表的channel数据里,似乎跟“标准对象格式”里提供的channel数据字段相比,缺少了几个字段:user_id
guild_id
topic
slow_mode
相关数据返回值 (channels内):
[
{
"id": "7566099004366572",
"master_id": "886154643",
"parent_id": "3457936871358649",
"name": "文字频道",
"type": 1,
"level": 100,
"limit_amount": 0,
"is_category": false,
"permission_sync": 0,
"permission_overwrites": [{
"role_id": 0,
"allow": 0,
"deny": 0
}],
"permission_users": []
}
]
相关异常提示:
kotlinx.serialization.MissingFieldException: Fields [user_id, guild_id, topic, slow_mode] are required for type with serial name 'CHANNEL_I', but they were missing
WIN端,开发者模式
希望新增复制角色ID的能力
点击按钮或添加回应自动赋予角色,在角色被(其他管理)重建或者新增更多需要自动授予的角色时,需要方便的获取角色ID。(否则需要使用调试工具调用接口获取服务器角色列表再一个个寻找)
顺便,新版本更新没有推送给0.0.37.4
,我是手动去官网下载的。
(emj)服务器表情名(emj)[服务器id]
服务器表情无法显示
To Reproduce
Expected behavior
API 返回所有该消息的回应。
Actual behavior
API 返回的回应中不包含 added_reaction 事件所指的回应。十次中大概发生一次。
value | body | string | false | 根据 type 的值,为用户 id 或频道 id |
---|
应该是用户ID 或 角色ID吧,怎么会是频道ID
应该是用户ID 或 角色ID吧,怎么会是频道ID
api/message/update接口,提供temp_target_id时,如果消息类型为10,消息本身时长超过一个月,且更新的消息中含有按钮,会导致按钮不可用(消息不存在或你没有权限操作)
正常更新
消息不存在或你没有权限操作
无
无
无
添加对于 "动作消息" 的消息事件的格式描述
请给出api接口,并给出相应的调用步骤
https://www.kookapp.cn/api/v3/channel/create
传入参数is_category=1来创建分组
正常创建分组
如果机器人创建分组的时候用户在服务器里,用户的客户端会崩溃
如果进入机器人创建过分组的服务器,会加载不出来左边的频道列表
不论是客户端还是浏览器都会出现该问题
Q | A |
---|---|
你使用的语言 | python |
你的操作系统 | windows |
https://developer.kookapp.cn/doc/http/user
获取目标用户信息的返回参数说明中出现了两个mobile_verified
引用较长的Markdown消息的时候会出现UI位置错误的情况
事件结构/格式说明:https://developer.kaiheila.cn/doc/event/event-introduction
消息相关事件列表:https://developer.kaiheila.cn/doc/event/message
在 事件结构/格式说明 中的 extra
说明中提到,extra
字段分为两种可能:一个是 type == 255
的 系统消息,其格式是千变万化的,一个是其他可能,就是 “消息事件”,从文档中来看,消息事件的 extra
似乎并没有可变的点,也没有提到是否所有事件都一致
然后到 消息相关事件列表 文档中,可以看到,实际上 type != 255
的事件的 extra
字段数据之间依然有很大差距,例如 文件消息 中,出现了 attachments
字段,且该字段下的数据格式不明确(只能从示例json中看到一些字段,但是无法确定这些字段是必然存在的、还是可能出现变化的);并且 文件消息 的字段示例中还少了很多 事件结构/格式说明 中提到的字段(例如 channel_name
)
然后,再看到下面的 KMarkdown消息 和 Card消息 中,extra
数据中又出现了新的字段 kmarkdown
以及一些未标注含义的字段(例如 nav_channels
)
然后我发现 事件结构/格式说明 中说明的 extra
字段元素似乎并非是所有事件之间的 最小范围 的通用元素,且不同事件存在 增加 / 减少 字段内容的可能。
希望能够明确事件的通用内容(例如那些字段必然是每个事件都有的),以及对于事件中出现的额外内容(例如 文件消息 中的附件字段 attachments
)进行较为细致的说明(包括每个字段的类型、是否必然存在等等)
因为没有 template 所以简单写一下:
开启 compress 时,challenge 使用 deflate 方式压缩, 但 events 使用 zlib 方式压缩
下午和 tttzzz 沟通过了,如果已经 fix 的话直接 close 该 issue 即可,谢谢!
To Reproduce
用 Webhook 接受任意带有文字消息的事件 (https://developer.kaiheila.cn/doc/event/message)
Expected behavior
nickname 属性是用户的服务器昵称。
Actual behavior
nickname 属性是用户名,和 username 一样。
C# Decrypt示例
public static class Encrypt
{
public static async Task<string> Decrypt(string content, string encryptKey)
{
string eData = Encoding.UTF8.GetString(Convert.FromBase64String(content));
byte[] iv = Encoding.UTF8.GetBytes(eData.Substring(0, 16));
eData = eData.Substring(16);
byte[] key = Encoding.UTF8.GetBytes(encryptKey +
new string('\0', 32 - encryptKey.Length));
try
{
using var rijndaelManaged =
new RijndaelManaged { Key = key, IV = iv, Mode = CipherMode.CBC };
await using var memoryStream =
new MemoryStream(Convert.FromBase64String(eData));
await using var cryptoStream =
new CryptoStream(memoryStream,
rijndaelManaged.CreateDecryptor(key, iv),
CryptoStreamMode.Read);
return await new StreamReader(cryptoStream).ReadToEndAsync();
}
catch (CryptographicException e)
{
throw;
}
catch (Exception e)
{
throw;
}
}
}
已经通过了测试并且已经用在了 SDK 上
正在修正一些问题
以 websocket
下的 文字消息
为例,在文档中显示,字段中有 mention_all
等字段,但是在私聊消息事件中,这些字段实际上并不存在。
希望能对这些 可能 不存在的字段进行标注说明。如果可能,最好为每个字段都标记其存在性(比如必然存在 / 可能不存在)
麻烦做下Github Issues模板,在仓库设置里有模板设置
设置传送门
Describe the bug
A clear and concise description of what the bug is.
To Reproduce
Steps to reproduce the behavior:
Expected behavior
A clear and concise description of what you expected to happen.
Screenshots
If applicable, add screenshots to help explain your problem.
Desktop (please complete the following information):
Smartphone (please complete the following information):
Additional context
Add any other context about the problem here.
/
全部
希望区分 Int32(Integer) 和 Int64(Long)
文档中与 时间(戳) 相关内容
针对于文档中一些与时间相关的描述(例如 获取私信聊天会话列表 中的 last_read_time
、latest_msg_time
等 )进行一个描述,表述他的时间格式是秒还是毫秒,或者在一个统一的地方对时间格式进行概述,比如在 资源 - 参考 中追加一个对全局时间格式的描述。
https://razedev.is-inside.me/OwDmVTDH.png
Image is above ^
使用错误的,或不使用 Authorization Header 请求 Gateway。
返回的 code
为 Integer 类型
Q | A |
---|---|
你使用的语言 | Java |
你的操作系统 | Windows |
卡片消息 - 卡片 - card | https://developer.kaiheila.cn/doc/cardmessage#%E5%8D%A1%E7%89%87
card
作用说明: 标题模块只能支持展示标准文本(text),突出标题样式。
将其修改为正确的描述
我的机器人需要对用户的消息回应做出反应,并且获得该用户的名称。有没有 API 能够通过用户 id 获取用户名?
现在的做法是收取 Webhook 的 added_reaction 事件,然后通过事件的 msg_id 查询该消息下所有回应,包括事件所指的回应及用户名,但会遇到问题 #53。
我个人认为应当将issue作为主要的bug反馈区而不是那个 问题反馈 的频道。
站在我个人的角度,希望能为issue提供更清晰的模板,而不是github给的默认模板,并将反馈上报的重心转移到这边儿,因为在这里,能够更好的追踪问题进度、查询问题历史记录、讨论、问题之间的关联与分类等
以上是我个人建议🐱
请给出api接口,并给出相应的调用步骤
https://www.kaiheila.cn/api/v3/guild/user-list
Python3 使用requests.get()调用
指定服务器的全部成员
少个人
Q | A |
---|---|
你使用的语言 | python |
你的操作系统 | windows |
Describe the bug
我做的机器人需要读取和编辑自己发过的消息。现有的 /api/v3/message/list 无法直接查询某条消息,用 flag=around 的话又会遇上其它问题:#46
请给出api接口,并给出相应的调用步骤
/api/v3/channel-role/update
传入以下数据
type = role_id
value = "0"
应该是正常修改@everyone的权限
40000, '服务器角色不存在或者你没有权限操作
Q | A |
---|---|
你使用的语言 | python |
你的操作系统 | windows 和 MacOS |
请给出api接口,并给出相应的调用步骤
调用/api/oauth2/token
获得了code
利用code根据文档参数调用/api/oauth2/token
发送请求之后给出的结果是
{
"code": 400,
"message": "Authorization code doesn't exist or is invalid for the client",
"data": {
"name": "Bad Request",
"status": 400
}
}
我希望输出正确的access_token
我希望输出正确的access_token
Q | A |
---|---|
你使用的语言 | php |
你的操作系统 | ubuntu |
https://developer.kaiheila.cn/doc/http/message
在消息详情数据中, attachments
、quote
这两个字段的格式并没有进行描述,且在示例数据中也都是以 []
和 null
略过了。
请给出api接口,并给出相应的调用步骤
针对一个只含文件的消息使用
/api/v3/message/view
{ ...,
data: {
"type": 4,
"attachments": {...},
...
}
}
{ ...,
data: {
"type": 10,
"attachments": null,
...
}
}
Q | A |
---|---|
你使用的语言 | python -- khl.py |
你的操作系统 | Linux |
/api/v3/channel-user/get-joined-channel
但是似乎实际上并没有这个字段。
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.