alicebot.adapter.onebot
OneBot 协议适配器。
本适配器适配了 OneBot v12 协议。 协议详情请参考:OneBot。
class OneBotAdapter
Bases: alicebot.adapter.utils.WebSocketAdapter
OneBot 协议适配器。
Attributes
- event_models (ClassVar[dict[tuple[Optional[str], Optional[str], Optional[str]], type[alicebot.adapter.onebot.event.OneBotEvent]]])
class Config
Bases: alicebot.config.ConfigModel
OneBot 配置类,将在适配器被加载时被混入到机器人主配置中。
Attributes
adapter_type (Literal['ws', 'reverse-ws', 'ws-reverse']) - 适配器类型,需要和协议端配置相同。
host (str) - 本机域名。
port (int) - 监听的端口。
url (str) - WebSocket 路径,需和协议端配置相同。
reconnect_interval (int) - 重连等待时间。
api_timeout (int) - 进行 API 调用时等待返回响应的超时时间。
access_token (str) - 鉴权。
method add_event_model(event_model)
添加自定义事件模型,事件模型类必须继承于 OneBotEvent
。
Returns
Type: None
async method call_api(self, api, bot_self, **params)
调用 OneBot API,协程会等待直到获得 API 响应。
Arguments
api (str) - API 名称。
bot_self (alicebot.adapter.onebot.event.BotSelf) -
Self
字段。**params (Any) - API 参数。
Returns
Type: Any
API 响应中的 data 字段。
Raises
NetworkError - 网络错误。
ApiNotAvailable - API 请求响应 404, API 不可用。
ActionFailed - API 请求响应 failed, API 操作失败。
ApiTimeout - API 请求响应超时。
method get_event_model(post_type, detail_type, sub_type)
根据接收到的消息类型返回对应的事件类。
Arguments
detail_type (Optional[str]) - 事件类型。
sub_type (Optional[str]) - 子类型。
Returns
Type: type[alicebot.adapter.onebot.event.OneBotEvent]
对应的事件类。
async method handle_onebot_event(self, msg)
处理 OneBot 事件。
Arguments
- msg (dict[str, typing.Any]) - 接收到的信息。
Returns
Type: None
async method handle_websocket_msg(self, msg)
处理 WebSocket 消息。
Arguments
- msg (aiohttp.http_websocket.WSMessage)
Returns
Type: None
async method reverse_ws_connection_hook(self)
反向 WebSocket 连接建立时的钩子函数。
Returns
Type: None
async method send(self, message_, message_type, id_)
发送消息,调用 send_message
API 发送消息。
Arguments
message_ (Union[list[alicebot.adapter.onebot.message.OneBotMessageSegment], alicebot.adapter.onebot.message.OneBotMessageSegment, str, collections.abc.Mapping[str, Any]]) - 消息内容,可以是
str
,Mapping
,Iterable[Mapping]
,OneBotMessageSegment
,OneBotMessage
。 将使用OneBotMessage
进行封装。message_type (Union[Literal['private', 'group'], str]) - 消息类型。 可以为 "private", "group" 或扩展的类型,和消息事件的
detail_type
字段对应。id_ (str) - 发送对象的 ID, QQ 号码或者群号码。
Returns
Type: Any
API 响应。
Raises
TypeError - message_type 不是 "private" 或 "group"。
... - 同
call_api()
方法。
async method startup(self)
初始化适配器。
Returns
Type: None
async method websocket_connect(self)
创建正向 WebSocket 连接。
Returns
Type: None