MiraiForum

    • 注册
    • 登录
    • 搜索
    • 热门
    • 最新
    • 未解决
    • 标签
    • 群组
    • 友情链接
    1. 主页
    2. HollisMeynell
    3. 主题
    • 资料
    • 关注 0
    • 粉丝 0
    • 主题 10
    • 帖子 42
    • 最佳 0
    • 有争议的 0
    • 群组 0

    HollisMeynell 创建的主题

    • HollisMeynell

      求助 疑似OkHttp依赖问题 升级版本2.12.3 -> 2.13.0之后的任意版本报错
      BUG反馈 • • HollisMeynell

      8
      0
      赞同
      8
      帖子
      494
      浏览

      HollisMeynell

      注册bot bean的代码

      @Bean public Bot bot(){ //创建bot配置类 BotConfiguration botConfiguration = new BotConfiguration(); //设置配置 botConfiguration.setCacheDir(new File(BOT_PATH)); //BOT_PATH 为定义好的常量 botConfiguration.setHeartbeatStrategy(BotConfiguration.HeartbeatStrategy.REGISTER); botConfiguration.setProtocol(BotConfiguration.MiraiProtocol.IPAD); botConfiguration.setWorkingDir(new File(BOT_PATH)); File logdir = new File(BOT_PATH+"log"); if (!logdir.isDirectory()) logdir.mkdirs(); botConfiguration.redirectBotLogToDirectory(logdir); botConfiguration.redirectNetworkLogToDirectory(logdir); botConfiguration.fileBasedDeviceInfo(); botConfiguration.enableContactCache(); botConfiguration.getContactListCache().setSaveIntervalMillis(60000*30); //配置完成,注册bot Bot bot = BotFactory.INSTANCE.newBot(QQ,PASSWORD,botConfiguration); //QQ,PASSWORD也是定义好的常量 //注册监听 messageListener需要继承SimpleListenerHost类 bot.getEventChannel().parentScope(messageListener).registerListenerHost(messageListener); return bot; }

      在2.12.3包括之前的任意版本都可以正常工作,但是更新至2.13.x之后的任何版本,都会出现

      Caused by: java.util.ServiceConfigurationError: net.mamoe.mirai.IMirai: Provider net.mamoe.mirai.internal.MiraiImpl could not be instantiated at java.base/java.util.ServiceLoader.fail(ServiceLoader.java:586) ~[na:na] at java.base/java.util.ServiceLoader$ProviderImpl.newInstance(ServiceLoader.java:813) ~[na:na] at java.base/java.util.ServiceLoader$ProviderImpl.get(ServiceLoader.java:729) ~[na:na] at java.base/java.util.ServiceLoader$3.next(ServiceLoader.java:1403) ~[na:na] at kotlin.collections.CollectionsKt___CollectionsKt.firstOrNull(_Collections.kt:270) ~[kotlin-stdlib-1.5.10.jar:1.5.10-release-890 (1.5.10)] at net.mamoe.mirai.utils.ServicesKt.loadService(Services.kt:18) ~[mirai-core-utils-jvm-2.13.0.jar:2.13.0] at net.mamoe.mirai.Mirai.findMiraiInstance(IMirai.kt:357) ~[mirai-core-api-jvm-2.13.0.jar:2.13.0] at net.mamoe.mirai._MiraiInstance.get(IMirai.kt:348) ~[mirai-core-api-jvm-2.13.0.jar:2.13.0] at net.mamoe.mirai.Mirai.getInstance(IMirai.kt:39) ~[mirai-core-api-jvm-2.13.0.jar:2.13.0] at net.mamoe.mirai.internal.message.MessageSerializersImpl.getSerializersModule(MessageSerializersImpl.kt:65) ~[mirai-core-api-jvm-2.13.0.jar:2.13.0] at net.mamoe.mirai.internal.message.MessageSerializersImpl.registerSerializers(MessageSerializersImpl.kt:76) ~[mirai-core-api-jvm-2.13.0.jar:2.13.0] at net.mamoe.mirai.message.MessageSerializers$INSTANCE.registerSerializers(MessageSerializers.kt) ~[mirai-core-api-jvm-2.13.0.jar:2.13.0] at net.mamoe.mirai.internal.message.protocol.MessageProtocolFacade.<clinit>(MessageProtocolFacade.kt:165) ~[mirai-core-jvm-2.13.0.jar:2.13.0] at net.mamoe.mirai.internal.MiraiImplKt._MiraiImpl_static_init(MiraiImpl.kt:25) ~[mirai-core-jvm-2.13.0.jar:2.13.0] at net.mamoe.mirai.internal.MiraiImpl.<clinit>(MiraiImpl.kt:87) ~[mirai-core-jvm-2.13.0.jar:2.13.0] at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:na] at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77) ~[na:na] at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:na] at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499) ~[na:na] at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480) ~[na:na] at java.base/java.util.ServiceLoader$ProviderImpl.newInstance(ServiceLoader.java:789) ~[na:na] ... 53 common frames omitted Caused by: java.lang.NoClassDefFoundError: net/mamoe/mirai/internal/deps/io/ktor/client/engine/okhttp/OkHttp at net.mamoe.mirai.internal.MiraiImplKt.createDefaultHttpClient(MiraiImpl.kt:29) ~[mirai-core-jvm-2.13.0.jar:2.13.0] at net.mamoe.mirai.internal.MiraiImpl.<init>(MiraiImpl.kt:97) ~[mirai-core-jvm-2.13.0.jar:2.13.0] at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:na] at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77) ~[na:na] at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:na] at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499) ~[na:na] at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480) ~[na:na] at java.base/java.util.ServiceLoader$ProviderImpl.newInstance(ServiceLoader.java:789) ~[na:na] ... 72 common frames omitted Caused by: java.lang.ClassNotFoundException: net.mamoe.mirai.internal.deps.io.ktor.client.engine.okhttp.OkHttp at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641) ~[na:na] at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) ~[na:na] at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520) ~[na:na] ... 80 common frames omitted 进程已结束,退出代码1

      我添加了 okhttp 的依赖项也无法解决 pom文件:

      <properties> <mirai.version>2.13.0</mirai.version> </properties> <dependency> <groupId>net.mamoe</groupId> <artifactId>mirai-core-jvm</artifactId> <version>${mirai.version}</version> </dependency> <dependency> <groupId>com.squareup.okhttp3</groupId> <artifactId>okhttp</artifactId> <version>4.8.1</version> <scope>compile</scope> </dependency>

      我不知道如何解决 Okhttp 的依赖冲突(如果问题是这个的话,因为看包名net/mamoe/mirai/internal/deps/io/ktor/client/engine/okhttp/OkHttp似乎是在mirai自己内部实现了,不应该外部管理?)

    • HollisMeynell

      有没有只针对于mirai的设置代理方法(http/socket5代理),非全局代理
      开发交流 • • HollisMeynell

      4
      0
      赞同
      4
      帖子
      422
      浏览

      HollisMeynell

      太长可以直接看最底下
      最近一段时间发送图片巨慢无比(恒定135s的延迟,无论图片大小),定位到是位于

      ExternalResource.uploadAsImage(ExternalResource.create(byte[]), contact)

      方法造成的
      目前bot发送文字消息都是秒回复,但是图片发送延迟过大
      切换登录协议及心跳协议均无效
      而且多次测试,发送一张图之后再次发送相同的图片是很快的,但是每次发送新图片就会有非常稳定的延迟,约130-137秒,无论是3M大小的图片文件还是20k的图片,都是130秒+,暂时不怀疑服务器带宽 (带宽10mbps,发几百Kb的图片不至于两分钟起步)
      我推测是因为服务器在国外所以可能经过某种审查,或者腾讯服务器转发国内图片进行处理,因为本地测试图片秒发,服务器上的bot切换账号,登录协议心跳协议均无法解决
      准备尝试一下回国代理是否能解决,但是目前查到的都是对系统或者jvm代理
      bot在运行的时候会访问国外的数据源获取数据,所以不想使用全局代理,有没有单独让bot走代理的方法呢

    • HollisMeynell

      问个蠢问题,看2.7.0更新日志提到了允许日志接管,有没有java示例呢
      开发交流 • • HollisMeynell

      3
      0
      赞同
      3
      帖子
      396
      浏览

      HollisMeynell

      允许使用第三方日志库如 SLF4J, Log4J 接管 mirai 日志系统 #1464
      请问Java如何使用呢

    • HollisMeynell

      上传语音Audio对象,可不可以在ExternalResource添加上传方法
      开发交流 • • HollisMeynell

      5
      0
      赞同
      5
      帖子
      348
      浏览

      HollisMeynell

      如题,原来是大批量使用Voice,使用的ExternalResource.uploadToVoice(),如果在ExternalResource添加了就能直接全局替换了,不用再改别的(想偷懒

    • HollisMeynell

      已解决 java可否使用aop注入到Contact.sendMessage()之前加入判断并拦截发送内容
      开发交流 • • HollisMeynell

      3
      0
      赞同
      3
      帖子
      1210
      浏览

      HollisMeynell

      如题,因为写了很多代码了,想要实现它目前我想到的是封装一层发送,重写大半代码,请问有没有更优雅的实现方式呢

    • HollisMeynell

      已解决 请问如何获得带QuoteReply消息中被回复的原始消息
      开发交流 • • HollisMeynell

      2
      0
      赞同
      2
      帖子
      225
      浏览

      HollisMeynell

      如题请问如何获得带QuoteReply消息中被回复的原始消息,如图片等会被解析“[图片]”的字符串,怎样做能获取图片呢

    • HollisMeynell

      已解决 java中 SimpleListenerHost.handleException函数并没有被执行
      开发交流 • • HollisMeynell

      7
      0
      赞同
      7
      帖子
      455
      浏览

      HollisMeynell

      萌新提问,大概是示例中

      public class MyEventHandlers extends SimpleListenerHost { @Override public void handleException(@NotNull CoroutineContext context, @NotNull Throwable exception){ // 处理事件处理时抛出的异常 } ... }

      但是在项目中并不会被实现

      @Override public void handleException(@NotNull CoroutineContext context, @NotNull Throwable exception){ //不会被执行 System.exit(0); //程序继续运行,log文件也正常输出test错误 } @Async @EventHandler public void msg(MessageEvent event) throws Throwable{ throw new RuntimeException( "test" ); }

      请问我应该怎么修改

    • HollisMeynell

      message.data.At对象的key,不能使MessageChain.get()拿到正确的at对象
      开发交流 • • HollisMeynell

      8
      0
      赞同
      8
      帖子
      439
      浏览

      HollisMeynell

      请问是我个例吗
      图片

    • HollisMeynell

      请问MessageReceipt如何判断是否可撤回(超时/已撤回/权限不足)
      开发交流 • • HollisMeynell

      10
      0
      赞同
      10
      帖子
      626
      浏览

      HollisMeynell

      如题,使用场景是程序需要oauth授权链接,想当认证成功后及时撤回防止多次认证,现在是使用了map存储返回的消息,另开一个线程当得到授权后撤回消息并从map中删除messagereceipt,不过因为有一些小伙伴拿到了授权链接但是不去认证或者超出了可撤回时间,导致messagereceipt无法删除发生内存泄漏,请问有什么办法解决

      另外有没有办法可以拿到MessageReceipt的特征值(尽可能使基本类型,类似于消息id这种)可以通过bot获取可撤回的消息,尽量减少重复代码(偷懒

    • HollisMeynell

      关于device.json路径问题
      开发交流 • • HollisMeynell

      3
      0
      赞同
      3
      帖子
      247
      浏览

      HollisMeynell

      怎样自定义device文件的路径,总是默认在执行命令的当前目录下新建,java开发,fileBasedDeviceInfo(path+"device.json")无效,请问使用setDeviceInfo如何修改路径

    • 1 / 1