OneBotBot
表示一个 OneBot 的 bot 客户端实例,实现 Bot
,由 OneBotBotManager
注册产生。
Bot
OneBot
实现simbot标准接口 Bot
,提供可支持的属性或能力。
- id
配置中提供的
botUniqueId
, 用与OneBotBotManager
中作为唯一标识。- isMe(ID)
判断提供的
ID
是否为自己。 首先依据id
属性,如果内部的userId
已经初始化, 则也会依据userId
进行判断。- name
Bot自己的用户名。需要
start
后才会初始化, 否则获取会抛出异常。- contactRelation
联系人相关操作,即好友相关的关系操作。
- groupRelation
与群聊相关的操作。
- guildRelation
OneBot11协议不支持
Guild
(即频道) 相关的操作,始终得到null
。- start()
启动Bot。在 Spring Boot 环境默认配置下会自动启动扫描注册的所有Bot。
除了上述的属性和API, OneBotBot
还提供了一些额外的内容:
- decoderJson
Bot内部在进行一些API调用时使用的JSON序列化器。
- configuration
注册Bot时使用的配置类信息。
- apiClient
Bot进行API请求时使用的HttpClient。
- apiHost
Bot进行API请求时使用的服务地址的host,来自配置信息。
- apiAccessToken
Bot进行API请求时使用的 accessToken,来自配置信息。
- eventAccessToken
Bot进行事件订阅的ws连接请求时使用的 accessToken,来自配置信息。
- userId
Bot自己的信息,在使用
start
之后会通过API查询获取。 如果尚未start
或调用queryLoginInfo()
就获取会得到异常。- queryLoginInfo()
通过API查询当前Bot的信息,并同时更新
userId
和name
。- getCookies(...)
使用API查询 Cookies。
- getCredentials(...)
使用API查询 Credentials。
- getCsrfToken()
使用API查询 CsrfToken。
关系对象
即对好友和群的相关操作,通过 contactRelation
和 groupRelation
进行。
OneBotBotFriendRelation
通过 contactRelation
获取, 代表对联系人(也就是好友 OneBotFriend
)和陌生人(OneBotStranger
)的查询操作。
OneBotBotGroupRelation
通过 contactRelation
获取, 代表对群(OneBotGroup
)的查询操作。
OneBotBotManager
OneBotBotManager
实现simbot标准API的 BotManager
,作为一个Bot管理器, 它用于注册生产与管理 OneBotBot
。
获取 OneBotBotManager
当 Application
注册完成后,即可通过其中的 botManagers
寻找所需的 BotManager
。 在 OneBot 组件中,我们通常要寻找 OneBotBotManager
。
注册 OneBotBot
如果你打算以编程的方式动态注册 OneBotBot
,那么在获取到 OneBotBotManager
之后使用 register
即可。
Spring Boot
在 Spring Boot starter 默认配置环境下, OneBotBotManager
会被自动注册, 并会扫描所有 Bot配置文件 并解析、注册为 OneBotBot
后自动在 异步中 启动。
在 Spring 中,你可以通过注入 Application
来获取到 BotManager
。
外部事件
OneBotBot
提供了 push(String)
来允许直接从外部推送一个原始的事件字符串。
由于 bot.push
返回的结果是 Flow
, 因此 Java 中想要直接使用它会比较困难。 你可以先通过 Collectables.valueOf(flow)
将其转化为 Collectable
(与关系对象相关API的结果类型一样), 然后再做进一步操作。
这可以让你能够使用反向事件推送来接收事件,比如通过接收来自 HTTP 的事件推送请求。
简单示例:
如果选择直接异步处理,那么其实跟 Spring Boot Web 的情况下没什么太大区别。