事件介绍
事件接口是 EasyBot 的核心功能,你可以在这里注册事件,并监听事件触发。
基本语法
EasyBot 使用 bus 命名空间来管理所有事件的注册和监听。基本语法如下:
bus.on(事件名, 处理函数);
基本写法示例
插件生命周期事件
// 插件启用时触发
bus.on("enable", function() {
logger.info("插件已启用");
});
// 插件禁用时触发
bus.on("disable", function() {
logger.info("插件即将禁用");
});
服务器事件示例
// 玩家登录事件
bus.on("player_login", function(server, playerName, playerUuid) {
logger.info("玩家 {0} ({1}) 尝试登录服务器", playerName, playerUuid);
});
// 玩家消息事件
bus.on("player_message", function(server, packet) {
logger.info("收到玩家消息: {0}", packet.message);
});
桥接事件示例
// 服务器上线事件
bus.on("bridge_server_online", function(server, ip) {
logger.info("服务器 {0} 已上线,IP: {1}", server.Session, ip);
});
// 服务器离线事件
bus.on("bridge_server_offline", function(server, closeCode, reason, ip) {
logger.warning("服务器 {0} 已离线,原因: {1}", server.Session, reason);
});
WebKit 事件示例
// 菜单就绪事件 - 在此注册自定义页面和菜单
bus.on("menu_ready", function(pluginMenu) {
pluginMenu.registerGroup("tools", "工具箱", "ToolOutlined");
pluginMenu.register("my_page", "/pages/mypage", "我的页面", "HomeOutlined",
(action) => { /* 处理前端调用 */ },
(sessionId) => { return "<html>...</html>"; }
);
});
配置事件示例
// 配置变更事件
bus.on("config_changed", function(data) {
logger.info("配置 {0} 发生变化: {1}", data.groupId, data.changeType);
});
// 配置启用事件
bus.on("config_enabled", function(groupId, configId, configName, configData) {
logger.info("配置 {0}/{1} 已启用", groupId, configName);
});
事件处理函数的返回值
不同的事件对返回值有不同的处理方式: