simple-robot / simpler-robot

Simple Robot,一个bot风格的Kotlin多平台事件调度框架,异步高效、Java友好!/ A Bot-style Kotlin Multiplatform event scheduling framework, asynchronous and high-performance, java-friendly! 🐱😼😻😸
https://simbot.forte.love
GNU Lesser General Public License v3.0
512 stars 44 forks source link

v2.4.0 禁言出现 NoSuchMethodError异常 无法禁言 #445

Closed fan-yoo closed 2 years ago

fan-yoo commented 2 years ago

版本号

v2.4.0

附加版本

No response

问题描述

有位群友找我说禁言群成员时出现异常 但我测试禁言全体成员是没有问题 就禁言某个成员时候就会出现这个问题(确定存在此群以及群成员 无权限) 无论传不传TimeUnit 都会报这个错误 代码是这样写的 @OnGroup @OnGroupMute
@Filter(value = "1")
public void mute(GroupMsg groupMsg,MsgSender msgSender){
Setter setter = msgSender.SETTER;
setter.setGroupBan("xxx","xxx", 5, TimeUnit.DAYS);
}

复现方式

触发这个此方法就会报错 @OnGroup @OnGroupMute
@Filter(value = "1")
public void mute(GroupMsg groupMsg,MsgSender msgSender){
Setter setter = msgSender.SETTER;
setter.setGroupBan("xxx","xxx", 5, TimeUnit.DAYS);
}

相关日志

Listener execution exception: java.lang.NoSuchMethodError: love.forte.common.utils.TimeInline.timeAs-J0BtGpc(JLlove/forte/common/utils/TimeType;)J
java.lang.NoSuchMethodError: love.forte.common.utils.TimeInline.timeAs-J0BtGpc(JLlove/forte/common/utils/TimeType;)J
    at love.forte.simbot.component.mirai.sender.MiraiSetter.groupBan0(MiraiSetter.kt:185)
    at love.forte.simbot.component.mirai.sender.MiraiSetter.groupBan(MiraiSetter.kt:198)
    at love.forte.simbot.api.sender.Setter$setGroupBan$1.invokeSuspend(Setter.kt:541)
    at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)

其他补充

No response

ForteScarlet commented 2 years ago

本地测试并未复现此问题,请提供依赖版本信息,例如 pom.xml 中内容。

fan-yoo commented 2 years ago

<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

<modelVersion>4.0.0</modelVersion>

<!-- 使用simbot的parent -->
<parent>
    <groupId>love.forte.simple-robot</groupId>
    <artifactId>parent</artifactId>
    <version>2.0.8</version><!--v-->
</parent>

<groupId>simbot.example</groupId>
<artifactId>simbot-mirai-demo</artifactId>

<properties>
    <maven.compiler.source>8</maven.compiler.source>
    <maven.compiler.target>8</maven.compiler.target>
    <simbot.version>2.4.0</simbot.version>
</properties>

<dependencies>
    <!-- 使用 mirai 组件。 -->
    <dependency>
        <groupId>love.forte.simple-robot</groupId>
        <artifactId>component-mirai</artifactId>
    </dependency>
    <!-- 举例: 使用mirai组件开发QQ机器人。 -->
    <dependency>
        <groupId>love.forte.simple-robot</groupId>
        <artifactId>component-mirai</artifactId>
        <version>${simbot.version}</version>
    </dependency>
    <dependency>
        <groupId>love.forte.simple-robot.time-task</groupId>
        <artifactId>time-task-quartz</artifactId>
        <version>2.4.0</version>
    </dependency>
    <dependency>
        <groupId>love.forte.simple-robot</groupId>
        <artifactId>api</artifactId>
        <version>2.4.0</version>
    </dependency>

</dependencies>

<build>
    <plugins>
        <!-- 编译插件 plugin. -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>8</source>
                <target>8</target>
                <compilerArgs>
                    <arg>-parameters</arg>
                </compilerArgs>
            </configuration>
        </plugin>

        <!-- 打包插件 -->
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <version>2.3.4.RELEASE</version>
            <configuration>
                <mainClass>test.Test</mainClass>
            </configuration>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

<repositories>
    <repository>
        <id>jcenter</id>
        <name>JCenter</name>
        <url>https://jcenter.bintray.com/</url>
    </repository>
    <repository>
        <id>misc</id>
        <name>misc</name>
        <url>https://dl.bintray.com/karlatemp/misc</url>
    </repository>
</repositories>

ForteScarlet commented 2 years ago
...

<!-- 使用simbot的parent -->
<parent>
    <groupId>love.forte.simple-robot</groupId>
    <artifactId>parent</artifactId>
    <version>2.0.8</version><!--v-->
</parent>

...

此处版本号并非前文描述的 2.4.0,修改版本使其一致后再做尝试。

fan-yoo commented 2 years ago
<parent>
    <groupId>love.forte.simple-robot</groupId>
    <artifactId>parent</artifactId>
    <version>2.4.0</version>
</parent>
已换成2.4.0经测试 依旧报错 ,报错内容与上述bug一样

完整报错日志如下: [2022-09-08T23:47:34.897]-[ERROR] | fun love.s.e.l.T.a.f.s.a.m.e.G.f.s.a.s.M.U.a : Listener execution exception: java.lang.NoSuchMethodError: love.forte.common.utils.TimeInline.timeAs-J0BtGpc(JLlove/forte/common/utils/TimeType;)J java.lang.NoSuchMethodError: love.forte.common.utils.TimeInline.timeAs-J0BtGpc(JLlove/forte/common/utils/TimeType;)J at love.forte.simbot.component.mirai.sender.MiraiSetter.groupBan0(MiraiSetter.kt:185) at love.forte.simbot.component.mirai.sender.MiraiSetter.groupBan(MiraiSetter.kt:198) at love.forte.simbot.api.sender.Setter$setGroupBan$1.invokeSuspend(Setter.kt:541) at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106) at kotlinx.coroutines.EventLoopImplBase.processNextEvent(EventLoop.common.kt:284) at kotlinx.coroutines.BlockingCoroutine.joinBlocking(Builders.kt:85) at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking(Builders.kt:59) at kotlinx.coroutines.BuildersKt.runBlocking(Unknown Source) at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking$default(Builders.kt:38) at kotlinx.coroutines.BuildersKt.runBlocking$default(Unknown Source) at love.forte.simbot.api.sender.Setter.setGroupBan(Setter.kt:541) at love.simbot.example.listener.ToolListen.a(ToolListen.java:94) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at kotlin.reflect.jvm.internal.calls.CallerImpl$Method.callMethod(CallerImpl.kt:97) at kotlin.reflect.jvm.internal.calls.CallerImpl$Method$Instance.call(CallerImpl.kt:113) at kotlin.reflect.jvm.internal.KCallableImpl.call(KCallableImpl.kt:108) at love.forte.simbot.core.listener.FunctionFromClassListenerFunction$functionCaller$2.invokeSuspend(FunctionFromClassListenerFunction.kt:72) at love.forte.simbot.core.listener.FunctionFromClassListenerFunction$functionCaller$2.invoke(FunctionFromClassListenerFunction.kt) at love.forte.simbot.core.listener.FunctionFromClassListenerFunction$functionCaller$2.invoke(FunctionFromClassListenerFunction.kt) at love.forte.simbot.core.listener.FunctionFromClassListenerFunction$invoker$1.invokeSuspend(FunctionFromClassListenerFunction.kt:616) at love.forte.simbot.core.listener.FunctionFromClassListenerFunction$invoker$1.invoke(FunctionFromClassListenerFunction.kt) at love.forte.simbot.core.listener.FunctionFromClassListenerFunction$invoker$1.invoke(FunctionFromClassListenerFunction.kt) at love.forte.simbot.core.listener.FunctionFromClassListenerFunction.invoke(FunctionFromClassListenerFunction.kt:638) at love.forte.simbot.core.listener.ListenerInvokerImpl.invoke(ListenerInvokerImpl.kt:36) at love.forte.simbot.core.listener.CoreListenerManager$doListenerFunctionInvoker$2.invokeSuspend(CoreListenerManager.kt:476) at love.forte.simbot.core.listener.CoreListenerManager$doListenerFunctionInvoker$2.invoke(CoreListenerManager.kt) at love.forte.simbot.core.listener.CoreListenerManager$doListenerFunctionInvoker$2.invoke(CoreListenerManager.kt) at love.forte.simbot.core.listener.CoreListenerManager.onMsg0$doListen(CoreListenerManager.kt:522) at love.forte.simbot.core.listener.CoreListenerManager.onMsg0(CoreListenerManager.kt:586) at love.forte.simbot.core.listener.CoreListenerManager.onMsg1(CoreListenerManager.kt:444) at love.forte.simbot.core.listener.CoreListenerManager.access$onMsg1(CoreListenerManager.kt:117) at love.forte.simbot.core.listener.CoreListenerManager$onMsg$2.invokeSuspend(CoreListenerManager.kt:413) at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748)

ForteScarlet commented 2 years ago

依然无法复现。请检查项目环境中的实际依赖版本,以及是否重新编译测试等。

依赖引用中:

如果上述操作结束后仍无效,请使用 mvn dependency:tree 命令获取并提供当前依赖树信息。

fan-yoo commented 2 years ago

已经劝群友使用3.x版本