MiraiForum

    • 注册
    • 登录
    • 搜索
    • 热门
    • 最新
    • 未解决
    • 标签
    • 群组
    • 友情链接

    监听好友添加成功事件,给这个新好友发消息报错

    开发交流
    2
    3
    226
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • 青九CL
      青九CL 摸鱼 最后由 编辑

      大佬们,求解
      监听的FriendAddEvent事件,但是发消息报错
      代码:

        @EventHandler
          private void onNewFriendRequest(NewFriendRequestEvent event) {
              event.accept();
          }
      
          @EventHandler
          private void onFriendAdd(FriendAddEvent event) {
              Friend f = event.getFriend();
              long qq = f.getId();
      
              f.sendMessage("添加好友成功"+qq);
          }
      

      报错信息:

      2023-06-19 21:41:32 V/Bot.934346886: Event: FriendDeleteEvent(friend=Friend(2640907048))
      2023-06-19 21:41:48 V/Bot.934346886: Event: NewFriendRequestEvent(bot=Bot(934346886), eventId=1687182109000000, message=我是sc, fromId=2640907048, fromGroupId=0, fromNick=sc111)
      2023-06-19 21:41:48 V/Bot.934346886: Event: FriendAddEvent(friend=Friend(2640907048))
      2023-06-19 21:41:48 E/Bot.934346886: java.lang.IllegalStateException: Exception while broadcasting event 'FriendAddEvent'
      java.lang.IllegalStateException: Exception while broadcasting event 'FriendAddEvent'
      	at net.mamoe.mirai.internal.network.components.EventDispatcherImpl.broadcast$suspendImpl(EventDispatcher.kt:104)
      	at net.mamoe.mirai.internal.network.components.EventDispatcherImpl$broadcast$1.invokeSuspend(EventDispatcher.kt)
      	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
      	at kotlinx.coroutines.UndispatchedCoroutine.afterResume(CoroutineContext.kt:233)
      	at kotlinx.coroutines.AbstractCoroutine.resumeWith(AbstractCoroutine.kt:102)
      	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
      	at kotlinx.coroutines.internal.DispatchedContinuationKt.resumeCancellableWith(DispatchedContinuation.kt:283)
      	at kotlinx.coroutines.internal.DispatchedContinuationKt.resumeCancellableWith$default(DispatchedContinuation.kt:278)
      	at kotlinx.coroutines.DispatchedCoroutine.afterResume(Builders.common.kt:260)
      	at kotlinx.coroutines.AbstractCoroutine.resumeWith(AbstractCoroutine.kt:102)
      	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
      	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
      	at kotlinx.coroutines.internal.LimitedDispatcher.run(LimitedDispatcher.kt:42)
      	at kotlinx.coroutines.scheduling.TaskImpl.run(Tasks.kt:95)
      	at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:570)
      	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750)
      	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:677)
      	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:664)
      Caused by: java.lang.IllegalStateException: 未找到异常处理器. 请继承 SimpleListenerHost 中的 handleException 方法, 或在构造 SimpleListenerHost 时提供 CoroutineExceptionHandler
      ------------
      Cannot find exception handler from coroutineContext. 
      Please extend SimpleListenerHost.handleException or provide a CoroutineExceptionHandler to the constructor of SimpleListenerHost
      	at net.mamoe.mirai.event.SimpleListenerHost.handleException(JvmMethodListeners.kt:192)
      	at net.mamoe.mirai.event.SimpleListenerHost$special$$inlined$CoroutineExceptionHandler$1.handleException(CoroutineExceptionHandler.kt:111)
      	at net.mamoe.mirai.internal.event.SafeListener.onEvent(SafeListener.kt:75)
      	at net.mamoe.mirai.internal.event.SafeListener$onEvent$1.invokeSuspend(SafeListener.kt)
      	... 16 more
      Caused by: net.mamoe.mirai.event.ExceptionInEventHandlerException: Exception in EventHandler
      	at net.mamoe.mirai.internal.event.JvmMethodListenersInternalKt.registerEventHandler$callMethod$invokeWithErrorReport(JvmMethodListenersInternal.kt:147)
      	at net.mamoe.mirai.internal.event.JvmMethodListenersInternalKt.access$registerEventHandler$callMethod$invokeWithErrorReport(JvmMethodListenersInternal.kt:1)
      	at net.mamoe.mirai.internal.event.JvmMethodListenersInternalKt$registerEventHandler$callMethod$2.invokeSuspend(JvmMethodListenersInternal.kt:154)
      	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
      	... 7 more
      Caused by: java.lang.reflect.InvocationTargetException
      	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
      	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
      	at net.mamoe.mirai.internal.event.JvmMethodListenersInternalKt.registerEventHandler$callMethod$invokeWithErrorReport(JvmMethodListenersInternal.kt:140)
      	... 10 more
      Caused by: java.lang.IllegalStateException: Send message failed: MessageSvcPbSendMsg.Response.Failed(resultType=16, errorCode=0, errorMessage=发送失败,请先添加对方为好友)
      	at net.mamoe.mirai.internal.message.protocol.impl.GeneralMessageSenderProtocol$GeneralMessageSender.sendSinglePacket(GeneralMessageSenderProtocol.kt:173)
      	at net.mamoe.mirai.internal.message.protocol.impl.GeneralMessageSenderProtocol$GeneralMessageSender.access$sendSinglePacket(GeneralMessageSenderProtocol.kt:52)
      	at net.mamoe.mirai.internal.message.protocol.impl.GeneralMessageSenderProtocol$GeneralMessageSender$sendSinglePacket$1.invokeSuspend(GeneralMessageSenderProtocol.kt)
      	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
      	at kotlinx.coroutines.internal.ScopeCoroutine.afterResume(Scopes.kt:33)
      	at kotlinx.coroutines.AbstractCoroutine.resumeWith(AbstractCoroutine.kt:102)
      	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
      	at kotlinx.coroutines.DispatchedTaskKt.resume(DispatchedTask.kt:178)
      	at kotlinx.coroutines.DispatchedTaskKt.dispatch(DispatchedTask.kt:166)
      	at kotlinx.coroutines.CancellableContinuationImpl.dispatchResume(CancellableContinuationImpl.kt:397)
      	at kotlinx.coroutines.CancellableContinuationImpl.resumeImpl(CancellableContinuationImpl.kt:431)
      	at kotlinx.coroutines.CancellableContinuationImpl.resumeImpl$default(CancellableContinuationImpl.kt:420)
      	at kotlinx.coroutines.CancellableContinuationImpl.resumeWith(CancellableContinuationImpl.kt:328)
      	at kotlinx.coroutines.ResumeAwaitOnCompletion.invoke(JobSupport.kt:1413)
      	at kotlinx.coroutines.JobSupport.completeStateFinalization(JobSupport.kt:318)
      	at kotlinx.coroutines.JobSupport.tryFinalizeSimpleState(JobSupport.kt:295)
      	at kotlinx.coroutines.JobSupport.tryMakeCompleting(JobSupport.kt:856)
      	at kotlinx.coroutines.JobSupport.makeCompleting$kotlinx_coroutines_core(JobSupport.kt:806)
      	at kotlinx.coroutines.CompletableDeferredImpl.complete(CompletableDeferred.kt:92)
      	at net.mamoe.mirai.internal.network.handler.NetworkHandlerSupport.collectReceived$mirai_core(NetworkHandlerSupport.kt:102)
      	at net.mamoe.mirai.internal.network.handler.CommonNetworkHandler$PacketDecodePipeline.processBody(CommonNetworkHandler.kt:161)
      	at net.mamoe.mirai.internal.network.handler.CommonNetworkHandler$PacketDecodePipeline.access$processBody(CommonNetworkHandler.kt:103)
      	at net.mamoe.mirai.internal.network.handler.CommonNetworkHandler$PacketDecodePipeline$1$3$1.invokeSuspend(CommonNetworkHandler.kt:127)
      	at net.mamoe.mirai.internal.network.handler.CommonNetworkHandler$PacketDecodePipeline$1$3$1.invoke(CommonNetworkHandler.kt)
      	at net.mamoe.mirai.internal.network.handler.CommonNetworkHandler$PacketDecodePipeline$1$3$1.invoke(CommonNetworkHandler.kt)
      	at kotlinx.coroutines.intrinsics.UndispatchedKt.startCoroutineUndispatched(Undispatched.kt:55)
      	at kotlinx.coroutines.CoroutineStart.invoke(CoroutineStart.kt:112)
      	at kotlinx.coroutines.AbstractCoroutine.start(AbstractCoroutine.kt:126)
      	at kotlinx.coroutines.BuildersKt__Builders_commonKt.launch(Builders.common.kt:56)
      	at kotlinx.coroutines.BuildersKt.launch(Unknown Source)
      	at kotlinx.coroutines.BuildersKt__Builders_commonKt.launch$default(Builders.common.kt:47)
      	at kotlinx.coroutines.BuildersKt.launch$default(Unknown Source)
      	at net.mamoe.mirai.internal.network.handler.CommonNetworkHandler$PacketDecodePipeline$1.invokeSuspend(CommonNetworkHandler.kt:127)
      	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
      	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
      	at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:164)
      	at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:472)
      	at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:500)
      	at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)
      	at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
      	at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
      	at java.base/java.lang.Thread.run(Thread.java:834)
      
      
      1 条回复 最后回复 回复 引用 0
      • MrXiaoM
        MrXiaoM 童心未泯 最后由 编辑

        数据同步没有跟上,等待几秒后再发送消息

        青九CL 1 条回复 最后回复 回复 引用 0
        • 青九CL
          青九CL 摸鱼 @MrXiaoM 最后由 编辑

          @MrXiaoM 在 监听好友添加成功事件,给这个新好友发消息报错 中说:

          数据同步没有跟上,等待几秒后再发送消息

          好的,有延迟啊

          1 条回复 最后回复 回复 引用 0
          • 1 / 1
          • First post
            Last post
          Powered by Mamoe Technologies & NodeBB | 友情链接 | 服务监控 | Contact