Skip to content

事件系统概述

插件通过 @SubscribeEvent 注解即可监听机器人的各类事件。

@SubscribeEvent

java
import cn.org.bukkit.bngeuit.event.*;
import cn.org.bukkit.bngeuit.Bngeuit;

public class MyListener {

    @SubscribeEvent
    public void onGroupAt(GroupAtMessageEvent e) {
        Bngeuit.replyGroupText(
            e.getGroupOpenid(), e.getId(), 1,
            "收到: " + e.getContent()
        );
    }

    @SubscribeEvent
    public void onC2CMessage(C2CMessageEvent e) {
        Bngeuit.replyC2CText(
            e.getAuthor().id(), e.getId(), 1,
            "收到私聊"
        );
    }

    @SubscribeEvent
    public void onReady(ReadyEvent e) {
        // 机器人启动完成
    }

    @SubscribeEvent
    public void onInteraction(InteractionEvent e) {
        Bngeuit.respondInteraction(e.getInteractionId(),
            cn.org.bukkit.bngeuit.core.BotApi.InteractionResponseCode.SUCCESS);
    }
}

规则

  • 标注在 public 方法上
  • 有且仅有 一个参数,类型继承自 Event
  • 方法名、参数名无限制
  • 插件 JAR 内的类会被自动扫描注册

在 JavaPlugin 中使用

java
public class MyPlugin extends JavaPlugin {

    @Override
    public void onEnable() {
        getLogger().info("插件已启用");
    }

    @SubscribeEvent
    public void onGroupAt(GroupAtMessageEvent e) {
        Bngeuit.replyGroupText(
            e.getGroupOpenid(), e.getId(), 1,
            "你好," + e.getAuthor().username()
        );
    }
}

自动扫描

插件 JAR 内的所有 @SubscribeEvent 方法会被自动注册,无需手动操作。