- 名称:
OlivOS_OB115
- 作者:
super1207
- 版本:
0.0.2
- 兼容版本:
0.11.26
- 平台:
全平台
- 操作系统:
全平台
下载
v0.0.2(2023年12月23日):
changelog:
- 加入 platform,事件中会带有platform字段,api中需要传入platform字段。
- 修复 [CQ:at,qq=xxxx]。
- 新增 OB115.get_event_loop() 获取异步循环。
- 新增 OB115.get_event_loop() 获取线程池。
- 一些其它性能修复。
v0.0.1(2022年12月25日):
说明
这个一个将OlivOS中的api和event转为类似onebot数据格式的插件。
但是,有轻微改变:
1:所有的id,均为字符串。
2:保证message始终为数组格式,raw_message始终为CQ字符串格式
3:调用api时,需要在action同级位置,加入self_id和platform字段,以表明调用哪个平台哪个账号的api
4:增加一个api:get_bot_list,用于获取账号列表,此api不需要传入self_id和platform字段
使用:
第一步:放置opk,并在您的插件中引入此插件:
import importlib
OB115 = importlib.import_module("OlivOS_OB115")
第二步:使用装饰器接收事件
@OB115.obevt()
def my_ob_event(evt:dict):
print(ret)
第三步:调用api,并接收返回值
ret = OB115.call_api({
"self_id":evt["self_id"],
"platform":evt["platform"],
"action":"send_group_msg",
"params": {
"group_id":evt["group_id"],
"message":evt["message"]
}
})
# 注意,因OlivOS的限制,实际没法获得有效的message_id
print(ret) # {'message_id': '0'}
第四步:获取账号列表
ret = OB115.call_api({
"action":"get_bot_list"
})
print(ret) # [{'bot_id': '1875159423','platform':'qq'},{'bot_id': '1736293901','platform':'qq'}]
有以上说明,您应该能够顺利使用此插件了,但是此插件还提供更进一步的功能:
1:带参数的装饰器
@OB115.obevt(type = "message:group")
def my_ob_event(evt:dict):
print(evt)
# 这样,这个被装饰的函数就只会接收群聊消息
@OB115.obevt(type = "message")
def my_ob_event(evt:dict):
print(evt)
# 这样,这个被装饰的函数就只会接收消息
@OB115.obevt(type = "notice:notify:poke")
def my_ob_event(evt:dict):
print(evt)
# 这样,这个被装饰的函数就只会接收群聊戳一戳事件
2:异步事件接收函数
@OB115.obevt(type = "message:group")
async def my_ob_event(evt:dict):
print(evt)
# 如上所示,事件装饰器可以装饰异步函数
3:异步api
ret = await OB115.call_api_async({
"self_id":evt["self_id"],
"platform":evt["platform"],
"action":"send_group_msg",
"params": {
"group_id":evt["group_id"],
"message":evt["message"]
}
})
# 在异步函数里面,必须使用异步api
4:获取异步循环对象
ret = OB115.get_event_loop()
# 返回的ret类型为 asyncio.AbstractEventLoop
5:获取线程池
ret = OB115.get_thread_pool()
# 返回的ret类型为 concurrent.futures.ThreadPoolExecutor
super1207
2023/12/23