melobot.io

连接器

class melobot.io.ForwardWsConn[源代码]

基类:AbstractConnector

正向 websocket 连接器

注意

在 melobot 中,正向 websocket 连接器会开启一个 ws 客户端。这个客户端只能和一个服务端通信。

__init__(connect_host: str, connect_port: int, max_retry: int = -1, retry_delay: float = 4.0, cd_time: float = 0.2, access_token: str | None = None, reconnect: bool = False) None[源代码]

初始化一个正向 websocket 连接器

注意:会向路径 “/” 发起行为操作

参数:
  • connect_host – 连接的 host

  • connect_port – 连接的 port

  • max_retry – 连接最大重试次数,默认 -1 代表无限次重试

  • retry_delay – 连接重试间隔时间

  • cd_time – 行为操作冷却时间(用于防止风控)

  • access_token – 本连接器操作鉴权的 access_token(建议从环境变量或配置中读取)

  • reconnect – 建立连接失败是否重连。默认为 False,即服务端断线直接停止 bot;若为 True,则会按照 max_retry, retry_delay 不断尝试重连,重连成功前时所有行为操作将阻塞。

max_retry: int

连接失败最大重试次数

retry_delay: float

连接失败重试间隔

url

ws 连接的 url(形如:ws://xxx:xxx)

conn: 'websockets.client.WebSocketClientProtocol' | None

连接对象(未建立连接时为空,连接建立后可认为一定不为空)

access_token

连接器操作鉴权的 token

class melobot.io.ReverseWsConn[源代码]

基类:AbstractConnector

反向 websocket 连接器

注意

注意:在 melobot 中,反向 websocket 连接器会开启一个 ws 服务端。但是这个服务端只接受一个客户端连接,后续其他连接将被拒绝。

__init__(listen_host: str, listen_port: int, cd_time: float = 0.2, access_token: str | None = None, reconnect: bool = False) None[源代码]

初始化一个反向 websocket连接器

注意:服务提供路径为:”/”

参数:
  • listen_host – 监听的 host

  • listen_port – 监听的 port

  • cd_time – 行为操作冷却时间(用于防止风控)

  • access_token – 本连接器用于鉴权的 access_token(建议从环境变量或配置中读取)

  • reconnect – 是否允许客户端重新连接。默认为 False,即客户端连接后如果断连,将直接停止 bot;若为 True,则会等待客户端重连,等待时所有行为操作将阻塞

host: str

监听的 host

port: int

监听的 port

server: websockets.server.WebSocketServer

服务端对象

access_token

连接器操作鉴权的 token

class melobot.io.HttpConn[源代码]

基类:AbstractConnector

HTTP 全双工连接器

HTTP 全双工连接器将会同时开启 HTTP 服务端和客户端。

客户端将会向 OneBot 实现程序发起 HTTP POST 请求用于传递行为操作, OneBot 实现程序将会向服务端发起 HTTP POST 请求用于事件上报。

注意

HTTP 连接是无状态的,因此本连接器无法及时察觉 OneBot 实现程序掉线。只有在后续执行行为操作失败,或等待上报超时,才会发现 OneBot 实现程序掉线。

__init__(onebot_host: str, onebot_port: int, listen_host: str, listen_port: int, secret: str | None = None, access_token: str | None = None, cd_time: float = 0.2, reconnect: bool = False, max_interval: float | None = None) None[源代码]

初始化一个 HTTP 全双工连接器

注意:本连接器服务提供路径为:”/”

HTTP 全双工连接器与 ws 有所不同。它无法即时发现 OneBot 实现程序掉线。

可以通过 max_interval 参数,启用“超时无上报则认为掉线”的功能。这一般要和 OneBot 实现程序的心跳功能一同使用。推荐设置值为心跳时间 + 1。

当然即使不启用此功能,当本连接器尝试发送行为操作失败时,也会认为 OneBot 实现程序已掉线。

参数:
  • onebot_host – onebot 实现程序 HTTP 服务的 host

  • onebot_port – onebot 实现程序 HTTP 服务的 port

  • listen_host – 此连接器服务端监听的 host

  • listen_port – 此连接器服务端监听的 port

  • secret – onebot 实现程序上报鉴权的 secret(建议从环境变量或配置中读取)

  • access_token – 本连接器操作鉴权的 access_token(建议从环境变量或配置中读取)

  • cd_time – 行为操作冷却时间(用于防止风控)

  • reconnect – 是否等待 OneBot 实现程序重新上线。默认为 False,即检测到 OneBot 实现程序掉线,将直接停止 bot;若为 True,则会等待 OneBot 实现程序重新上线,等待时所有行为操作将阻塞

  • max_interval – 等待 OneBot 实现程序上报的超时时间。超过此时间无任何上报,则认为已经掉线(默认值为 None,此时不启用此功能)

onebot_url

onebot 实现程序提供服务的 base_url(形如:http://xxx:xxx

host: str

本连接器服务端的 host

port: int

本连接器服务端的 port

serve_site: aiohttp.web.TCPSite

本连接器服务端的站点对象

client_session: aiohttp.ClientSession

本连接器客户端的会话

max_interval

本连接器用于掉线判定的超时时间

secret

上报鉴权的 secret

access_token

操作鉴权的 access_token