适配器开发¶
HuHoBotPenguin 为不同 Minecraft 服务端提供独立的附属插件 API。请根据运行平台阅读对应页面:
公共 API¶
所有适配器都提供以下能力:
- 注册和注销运行时自定义命令
- 向所有配置群或指定群发送文本、Markdown
- 查询认证 QQ 号
各平台主类提供:
registerBotCommand(key, command, permission, pushMenu)
unregisterBotCommand(key)
命令模板支持:
{params}:完整参数{group}:群 ID{user}:用户 ID{name}:绑定的 MC 玩家名(未绑定则返回 QQ 用户名){nickname}:用户的 QQ 昵称{0}、{1}:按空格拆分后的参数&1、&2:按空格拆分后的参数
permission > 0 表示仅管理员可以执行,pushMenu = true 表示同步到 QQ 指令面板。
查询认证 QQ 号¶
所有适配器主类都提供同名方法:
getAuthenticatedQq(groupOpenId, openId): String?
返回指定群中指定 OpenID 绑定的 QQ 号;没有认证时直接返回 null。
Java:
String qq = bot.getAuthenticatedQq(groupOpenId, openId);
Kotlin:
val qq: String? = bot.getAuthenticatedQq(groupOpenId, openId)
发送消息¶
sendBotText(text) // 发送到所有配置群
sendBotText(groupOpenId, text) // 发送到指定群
sendBotMarkdown(markdown) // 发送 Markdown 到所有配置群
sendBotMarkdown(groupOpenId, md) // 发送 Markdown 到指定群
线程约束¶
QQ 消息回调来自 QQ 客户端线程。Spigot、Nukkit、Allay 会切换到平台服务器线程后触发事件;Bungee 使用 Bungee 事件总线;Velocity 等待 EventManager.fire 完成后再读取取消状态。
监听器中不要执行长时间阻塞操作。网络请求、数据库操作和复杂计算应提交到平台异步调度器。
版本¶
附属插件应使用与服务器中 HuHoBotPenguin 相同版本的适配器 JAR 编译,并使用 compileOnly,避免将另一份 HuHoBot 类打包进附属插件。