本帖最后由 XiaMoHuaHuo_CN 于 2023-1-18 12:22 编辑 
目前正在开发QQ频道API,使用的是xiaoye-bot/qqbot-sdk: QQ官方机器人 SDK For Java (github.com)但是使用事件时存在以下问题:
复制代码事件代码为:
复制代码个人判断为主线程事件不能在异步线程调用,是否有解决方案?使用主线程任务回调事件解决
- [11:34:30 ERROR]: [org.java_websocket.drafts.Draft_6455] Runtime exception during onWebsocketMessage
 
- java.lang.IllegalStateException: GuildAtEvent may only be triggered synchronously.
 
-         at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:660) ~[paper-api-1.19.3-R0.1-SNAPSHOT.jar:?]
 
-         at moe.xmcn.guildbot.qqguildbot.api.EventTool.onAtMessage(EventTool.kt:17) ~[QQGuildBotMC-0.1.0.jar:?]
 
-         at me.zhenxin.qqbot.websocket.Event.onDispatch(Event.java:154) ~[QQGuildBotMC-0.1.0.jar:?]
 
-         at me.zhenxin.qqbot.websocket.Client.onMessage(Client.java:70) ~[QQGuildBotMC-0.1.0.jar:?]
 
-         at org.java_websocket.client.WebSocketClient.onWebsocketMessage(WebSocketClient.java:636) ~[QQGuildBotMC-0.1.0.jar:?]
 
-         at org.java_websocket.drafts.Draft_6455.processFrameText(Draft_6455.java:986) ~[QQGuildBotMC-0.1.0.jar:?]
 
-         at org.java_websocket.drafts.Draft_6455.processFrame(Draft_6455.java:910) ~[QQGuildBotMC-0.1.0.jar:?]
 
-         at org.java_websocket.WebSocketImpl.decodeFrames(WebSocketImpl.java:401) ~[QQGuildBotMC-0.1.0.jar:?]
 
-         at org.java_websocket.WebSocketImpl.decode(WebSocketImpl.java:233) ~[QQGuildBotMC-0.1.0.jar:?]
 
-         at org.java_websocket.client.WebSocketClient.run(WebSocketClient.java:516) ~[QQGuildBotMC-0.1.0.jar:?]
 
-         at java.lang.Thread.run(Thread.java:833) ~[?:?]
 
- [11:34:30 INFO]: [me.zhenxin.qqbot.websocket.Client] 发生错误: GuildAtEvent may only be triggered synchronously.
 
- [11:34:30 WARN]: java.lang.IllegalStateException: GuildAtEvent may only be triggered synchronously.
 
- [11:34:30 WARN]:        at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:660)
 
- [11:34:30 WARN]:        at QQGuildBotMC-0.1.0.jar//moe.xmcn.guildbot.qqguildbot.api.EventTool.onAtMessage(EventTool.kt:17)
 
- [11:34:30 WARN]:        at QQGuildBotMC-0.1.0.jar//me.zhenxin.qqbot.websocket.Event.onDispatch(Event.java:154)
 
- [11:34:30 WARN]:        at QQGuildBotMC-0.1.0.jar//me.zhenxin.qqbot.websocket.Client.onMessage(Client.java:70)
 
- [11:34:30 WARN]:        at QQGuildBotMC-0.1.0.jar//org.java_websocket.client.WebSocketClient.onWebsocketMessage(WebSocketClient.java:636)
 
- [11:34:30 WARN]:        at QQGuildBotMC-0.1.0.jar//org.java_websocket.drafts.Draft_6455.processFrameText(Draft_6455.java:986)
 
- [11:34:30 WARN]:        at QQGuildBotMC-0.1.0.jar//org.java_websocket.drafts.Draft_6455.processFrame(Draft_6455.java:910)
 
- [11:34:30 WARN]:        at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:660)
 
- [11:34:30 WARN]:        at QQGuildBotMC-0.1.0.jar//moe.xmcn.guildbot.qqguildbot.api.EventTool.onAtMessage(EventTool.kt:17)
 
- [11:34:30 WARN]:        at QQGuildBotMC-0.1.0.jar//me.zhenxin.qqbot.websocket.Event.onDispatch(Event.java:154)
 
- [11:34:30 WARN]:        at QQGuildBotMC-0.1.0.jar//me.zhenxin.qqbot.websocket.Client.onMessage(Client.java:70)
 
- [11:34:30 WARN]:        at QQGuildBotMC-0.1.0.jar//org.java_websocket.client.WebSocketClient.onWebsocketMessage(WebSocketClient.java:636)
 
- [11:34:30 WARN]:        at QQGuildBotMC-0.1.0.jar//org.java_websocket.drafts.Draft_6455.processFrameText(Draft_6455.java:986)
 
- [11:34:30 WARN]:        at QQGuildBotMC-0.1.0.jar//org.java_websocket.drafts.Draft_6455.processFrame(Draft_6455.java:910)
 
- [11:34:30 WARN]:        at QQGuildBotMC-0.1.0.jar//org.java_websocket.WebSocketImpl.decodeFrames(WebSocketImpl.java:401)
 
- [11:34:30 WARN]:        at QQGuildBotMC-0.1.0.jar//org.java_websocket.WebSocketImpl.decode(WebSocketImpl.java:233)
 
- [11:34:30 WARN]:        at QQGuildBotMC-0.1.0.jar//org.java_websocket.client.WebSocketClient.run(WebSocketClient.java:516)
 
- [11:34:30 WARN]:        at java.base/java.lang.Thread.run(Thread.java:833)
 
 
- package moe.xmcn.guildbot.qqguildbot.api.bukkit;
 
 
- import me.zhenxin.qqbot.api.ApiManager;
 
- import me.zhenxin.qqbot.entity.Guild;
 
- import me.zhenxin.qqbot.entity.MessageAttachment;
 
- import me.zhenxin.qqbot.entity.MessageEmbed;
 
- import me.zhenxin.qqbot.entity.User;
 
- import me.zhenxin.qqbot.entity.ark.MessageArk;
 
- import me.zhenxin.qqbot.event.AtMessageEvent;
 
- import org.bukkit.event.Event;
 
- import org.bukkit.event.HandlerList;
 
- import org.jetbrains.annotations.NotNull;
 
 
- import java.time.LocalDateTime;
 
 
- public class GuildAtEvent extends Event {
 
-     @NotNull
 
-     private final ApiManager api;
 
-     @NotNull
 
-     private final AtMessageEvent event;
 
-     private static final HandlerList handlers = new HandlerList();
 
 
-     public GuildAtEvent(@NotNull ApiManager api, @NotNull AtMessageEvent event) {
 
-         this.api = api;
 
-         this.event = event;
 
-     }
 
 
-     @NotNull
 
-     public final String getMessage() {
 
-         return event.getMessage().getContent();
 
-     }
 
 
-     @NotNull
 
-     public final String getMessageId() {
 
-         return event.getMessage().getId();
 
-     }
 
 
-     @NotNull
 
-     public final String getChannelId() {
 
-         return event.getMessage().getChannelId();
 
-     }
 
 
-     @NotNull
 
-     public final MessageArk getArk() {
 
-         return event.getMessage().getArk();
 
-     }
 
 
-     @NotNull
 
-     public final User getAuthor() {
 
-         return event.getMessage().getAuthor();
 
-     }
 
 
-     @NotNull
 
-     public final MessageAttachment[] getAttachments() {
 
-         return event.getMessage().getAttachments();
 
-     }
 
 
-     @NotNull
 
-     public final LocalDateTime getEditedTimestamp() {
 
-         return event.getMessage().getEditedTimestamp();
 
-     }
 
 
-     @NotNull
 
-     public final MessageEmbed[] getEmbeds() {
 
-         return event.getMessage().getEmbeds();
 
-     }
 
 
-     @NotNull
 
-     public final LocalDateTime getTimestamp() {
 
-         return event.getMessage().getTimestamp();
 
-     }
 
 
-     @NotNull
 
-     public final String getSrcGuildId() {
 
-         return event.getMessage().getSrcGuildId();
 
-     }
 
 
-     @NotNull
 
-     public final String getGuildId() {
 
-         return event.getMessage().getGuildId();
 
-     }
 
 
-     public @NotNull HandlerList getHandlers() { return handlers; }
 
-     public static HandlerList getHandlerList() { return handlers; }
 
 
- }