05 try_to_use_api_yourself - musnows/Kook-Valorant-Bot GitHub Wiki

尝试学会自己调用api

有的时候,KOOK的api更新了最新的内容,但是khl.py还没有完成对应的更新。

这时候就需要我们学会自己去调用官方的API接口,来实现一些自己想要的功能

比如官方在220706更新的游戏/音乐动态https://developer.kaiheila.cn/doc/http/game

备注:该接口目前 khl.py 已经支持,但不影响本教程的示例性

1.get方法获取游戏的list

因为这个方法不需要我们用机器人来调用,所以无需担心响应问题。这里就直接用requests来请求了

botoken="写入你的机器人token"
#访问游戏列表
url ="https://www.kaiheila.cn/api/v3/game"
r = requests.get(url, headers={f'Authorization': f"Bot {botoken}"})
print(json.loads(r.text))

如果没有报错,程序会返回object-game,里面包含了目前官方预置的一些游戏的信息。

注:你无法在这里面找到你自己添加的游戏

object-game

参数名 类型 说明
id int 主键 id
name string 名称(游戏/状态名称)
type int 类型 0 游戏 1VUP 2 进程
options string 进程额外信息
kmhook_admin bool 是否以管理员权限启动 KOOK
process_name array 进程名称
product_name array 产品名称
icon string 游戏图标

2.post创建游戏

下面这个代码就是一个带参数的aiohttp请求的示例

传入游戏名和图标(直接传图片url即可)来创建一个游戏,供我们的机器人调用

import json
import aiohttp
import asyncio

botoken="写入你的机器人token"

async def status():
    url="https://www.kookapp.cn/api/v3/game/create"
    headers={f'Authorization': f"Bot {botoken}"}
    params = {"name":'无畏契约',"icon":"https://s1.ax1x.com/2022/07/16/j5rrwV.png"}
    async with aiohttp.ClientSession() as session:
        async with session.post(url, data=params,headers=headers) as response:
                ret =json.loads(await response.text())
                print(ret)

loop = asyncio.get_event_loop()
tasks = [status(), ]
loop.run_until_complete(asyncio.wait(tasks))

如果请求没有出错,其返回结果应该和下面的相同,我们只需要记住这里的游戏id,即可让bot调用这个游戏来更新动态

{
   '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': []
   }
}

3.post更新/删除机器人动态

看完上面两个,你应该学会了如何调用官方的库并给它传参了

更新/删除机器人动态我封装成了一个bot.command,更加方便直接通过命令调用

我相信你能看懂哒!

⚠️ **GitHub.com Fallback** ⚠️