Giter Club home page Giter Club logo

api-docs's Introduction

KOOK 开放中心文档

KOOK 是专属游戏玩家的文字、语音和组队工具,安全免费、没有广告、低资源占用、高通话质量。

文档

开发者社区

贡献

api-docs's People

Contributors

bin8ge avatar buptlsp avatar chenggang avatar coachrun avatar deechael avatar deepsea09 avatar enaium avatar etby avatar fi6 avatar gehongyan avatar hank9999 avatar hsiangnianian avatar idodo avatar ilharp avatar lclbm avatar littlechest avatar lonelyevil avatar lunzhipenxil avatar lycoiref avatar misaka-l avatar nekomoeno avatar poh98 avatar qrrui avatar snwcreations avatar theresaqwq avatar tian-que avatar tongzzzzz avatar twt233 avatar zrydnoob avatar zty0 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

api-docs's Issues

Unicode escape in card message causes ERROR

如何复现问题?

使用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)

功能模块

文档中约定了Channel对象,然而在频道相关api中:获取频道列表,获取频道详情,创建频道,返回的数据对象均与Channel对象不一致,这对api的开发使用造成较大困扰,尤其是对于非动态语言(目前正在开发 Rust lib

你希望的功能描述?

尽可能统一相近api返回的对象字段

功能的主要使用产景?

如上

其它信息

如上

JSON 事件属性类型不一致

如何复现问题?

触发 updated_channel 事件,通过 websocket 监听事件。

你希望的输出是什么?

d.extra.body.is_category 的类型是 boolean,与文档中的样例及 Channel 类型一致

你得到什么结果?

d.extra.body.is_category 的类型是 number

bug report: 来自 android 客户端的 event 中 extra 域字段不正确

来自 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,一个是 int
  • 安卓端来的 event 没有 extra.channel_name 这个 field
  • 安卓端来的 event 中的 extra.author.roles 为空(正常应该有两个 roles)

其他还有一些出入,不过开发文档中目前都没有相关说明,就不列出来了

下午和 tttzzz 聊了一会儿这个问题,他也表示是安卓 APP 的 BUG

我转到这里记录一下供遇到相关问题的朋友参考

语音邀请链接仅可使用type为1的消息

功能模块

使用kmarkdown+链接生成的链接只能打开网页版,不能在当前客户端加入语音频道

你希望的功能描述?

希望可以使用其他type的消息邀请玩家加入语音频道(或者增加按钮功能,使按钮可以加入语音频道)

功能的主要使用产景?

组队bot,创建房间后需要邀请玩家加入语音频道,如果是采用临时更新card message作为菜单的形式,反复发送type为1的临时消息会导致菜单被刷没,只能刷新频道消息。

其它信息

无法正常update游戏信息,且客户端/网页端bot动态同步极慢

如何复现问题?

调用了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)

bot动态同步问题

调用api进行操作之后,bot的游戏动态出现很快,但是删除游戏动态的操作需要很久才能同步!如下图,10分钟都没搞定……

已尝试刷新网页端/重启客户端,不起作用

其它信息

Q A
你使用的语言 python
你的操作系统 windows

消息技术实现

语音对讲技术实现,你好,请问你们语音对讲是用什么编码的?我最近也在研究语音对讲,技术上遇到点难题,
vue作为技术框架,websocket作为通信方式,实时语音读取,pcm格式文件,打算编码未opus格式
希望能帮忙解答下,语音采集多久时间发送到服务器最好,pcm编码opus如何变码,麻烦解答下,谢谢

/user/me 字段类型错误

如何复现问题?

调用 /user/me api

你希望的输出是什么?

根据文档,invited_count 字段返回类型为 int

具有 mobile_verify: bool 字段

你得到什么结果?

实际收到类型为 String

缺失 mobile_verify 字段

其它信息

Q A
你使用的语言 Rust
你的操作系统 windows/Linux

/guild/view 接口 返回值的channels列表元素字段缺失

/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

功能建议:开发者模式右键复制角色ID

功能模块

WIN端,开发者模式

你希望的功能描述?

希望新增复制角色ID的能力

功能的主要使用产景?

点击按钮或添加回应自动赋予角色,在角色被(其他管理)重建或者新增更多需要自动授予的角色时,需要方便的获取角色ID。(否则需要使用调试工具调用接口获取服务器角色列表再一个个寻找)

其它信息

顺便,新版本更新没有推送给0.0.37.4,我是手动去官网下载的。

UserChat的 List 与 View 中返回值数据字段 target_info 的内容差异问题

文档的具体地址?

https://developer.kaiheila.cn/doc/http/user-chat#%E8%8E%B7%E5%8F%96%E7%A7%81%E4%BF%A1%E8%81%8A%E5%A4%A9%E4%BC%9A%E8%AF%9D%E5%88%97%E8%A1%A8

https://developer.kaiheila.cn/doc/http/user-chat#%E8%8E%B7%E5%8F%96%E7%A7%81%E4%BF%A1%E8%81%8A%E5%A4%A9%E4%BC%9A%E8%AF%9D%E8%AF%A6%E6%83%85

你认为有问题的文档内容

List中,存在 target_info - online 字段,但是在View中则没有:

那么这两个中的targetInfo是不同的吗(就是是存在online字段的差异的吗)

/api/v3/message/reaction-list returns stale data

To Reproduce

  1. 使用 Webhook 监听 added_reaction 事件
  2. 当事件发生时使用事件的 msg_id 请求 /api/v3/message/reaction-list

Expected behavior
API 返回所有该消息的回应。

Actual behavior
API 返回的回应中不包含 added_reaction 事件所指的回应。十次中大概发生一次。

临时更新消息时如果消息超过一个月会导致按钮不可用

如何复现问题?

api/message/update接口,提供temp_target_id时,如果消息类型为10,消息本身时长超过一个月,且更新的消息中含有按钮,会导致按钮不可用(消息不存在或你没有权限操作)

你希望的输出是什么?

正常更新

你得到什么结果?

消息不存在或你没有权限操作

其它信息

API BUG反馈

如何复现问题?

请给出api接口,并给出相应的调用步骤
https://www.kookapp.cn/api/v3/channel/create
传入参数is_category=1来创建分组

你希望的输出是什么?

正常创建分组

你得到什么结果?

如果机器人创建分组的时候用户在服务器里,用户的客户端会崩溃
如果进入机器人创建过分组的服务器,会加载不出来左边的频道列表
image

其它信息

不论是客户端还是浏览器都会出现该问题

Q A
你使用的语言 python
你的操作系统 windows

/api/v3/channel/update 导致频道崩溃

如何复现问题?

/api/v3/channel/update
channel_id = 4121189805803798
name = test

你希望的输出是什么?

正确修改频道名字

你得到什么结果?

客户端打开频道无限崩溃
image

其它信息

Q A
你使用的语言 python
你的操作系统 windows

消息事件格式与字段略混乱

文档的具体地址?

事件结构/格式说明: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 )进行较为细致的说明(包括每个字段的类型、是否必然存在等等)

C# Decrypt示例

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 等字段,但是在私聊消息事件中,这些字段实际上并不存在。

你期望的结果?

希望能对这些 可能 不存在的字段进行标注说明。如果可能,最好为每个字段都标记其存在性(比如必然存在 / 可能不存在)

给 Webhook 回调请求加上 Header Content-Encoding: deflate

Describe the bug
A clear and concise description of what the bug is.

To Reproduce
Steps to reproduce the behavior:

  1. Go to '...'
  2. Click on '....'
  3. Scroll down to '....'
  4. See error

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):

  • OS: [e.g. iOS]
  • Browser [e.g. chrome, safari]
  • Version [e.g. 22]

Smartphone (please complete the following information):

  • Device: [e.g. iPhone6]
  • OS: [e.g. iOS8.1]
  • Browser [e.g. stock browser, safari]
  • Version [e.g. 22]

Additional context
Add any other context about the problem here.

添加获取用户信息的 API

我的机器人需要对用户的消息回应做出反应,并且获得该用户的名称。有没有 API 能够通过用户 id 获取用户名?

现在的做法是收取 Webhook 的 added_reaction 事件,然后通过事件的 msg_id 查询该消息下所有回应,包括事件所指的回应及用户名,但会遇到问题 #53

[建议] 为issue提供更友善的issue模板

我个人认为应当将issue作为主要的bug反馈区而不是那个 问题反馈 的频道。
站在我个人的角度,希望能为issue提供更清晰的模板,而不是github给的默认模板,并将反馈上报的重心转移到这边儿,因为在这里,能够更好的追踪问题进度、查询问题历史记录、讨论、问题之间的关联与分类等

以上是我个人建议🐱

API BUG反馈

如何复现问题?

请给出api接口,并给出相应的调用步骤
https://www.kaiheila.cn/api/v3/guild/user-list

Python3 使用requests.get()调用

你希望的输出是什么?

指定服务器的全部成员

你得到什么结果?

少个人

其它信息

Q A
你使用的语言 python
你的操作系统 windows

无法修改@everyone的频道权限

如何复现问题?

请给出api接口,并给出相应的调用步骤
/api/v3/channel-role/update
传入以下数据
type = role_id
value = "0"

你希望的输出是什么?

应该是正常修改@everyone的权限

你得到什么结果?

40000, '服务器角色不存在或者你没有权限操作

其它信息

Q A
你使用的语言 python
你的操作系统 windows 和 MacOS

Oauth2的获取的code无法获取accesstoken,一直说过期

如何复现问题?

请给出api接口,并给出相应的调用步骤
调用/api/oauth2/token
获得了code
利用code根据文档参数调用/api/oauth2/token
发送请求之后给出的结果是
image
image

{
"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

API BUG反馈 获取文件消息时收到的类型为卡片

如何复现问题?

请给出api接口,并给出相应的调用步骤
针对一个只含文件的消息使用
/api/v3/message/view

你希望的输出是什么?

{ ...,
    data: {
        "type": 4,
        "attachments": {...},
        ...
    }
}

你得到什么结果?

{ ...,
    data: {
        "type": 10,
        "attachments": null,
        ...
    }
}

其它信息

Q A
你使用的语言 python -- khl.py
你的操作系统 Linux

根据用户id和服务器id获取用户所在语音频道 输出错误

如何复现问题?

  • 接口地址 /api/v3/channel-user/get-joined-channel
  • 文档地址 接口文档
  • 问题描述:
    如果从服务器A的语音频道a离开后,第一次进入服务器B的任意语音频道b后,该接口不能正确返回频道b的id,返回为空
  • 复现方法:
    先进入另外一个服务器A的语音频道,再进入测试用服务器B的任意语音频道b1,此时调用接口即可复现,如果离开b1重新进入b1,则接口可以正常返回;如果离开b1,进入任意一个服务器B的其他语音频道b2,该接口亦可以正常返回;问题仅发生在第一次切换服务器的语音频道时

其他信息

  • 语言 Python
  • 操作系统 macos12.4 arm64(apple/m1)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.