MiraiForum

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

    hisou

    @hisou

    0
    声望
    5
    资料浏览
    10
    帖子
    0
    粉丝
    1
    关注
    注册时间 最后登录

    hisou 取消关注 关注

    hisou 发布的最新帖子

    • RE: 获取回复消息(QuoteReply)指向原文的实现思路

      @MrXiaoM 在 获取回复消息(QuoteReplay)指向原文的实现思路 中说:

      return record.map(MessageRecord::toMessageChain).orElseGet(() -> quote.getSource().getOriginalMessage());

      测了多次,疑似发现 当原消息所含图片的isEmoji=true时,有这几种情况:

      1. 用户A在PC端发送图片1,用户A在PC端引用回复图片1且触发bot指令,后台还是[图片]而不是富文本

      2. 用户A在PC端发送图片1,用户A在手机端引用回复图片1且触发bot指令,后台能获得富文本

      3. 另一用户B发送图片1(设备任意),用户A在PC端引用回复图片1且触发bot指令,后台能获得富文本

      主要就是1.那个用户自己引用回复自己的图没法解析出来就挺不理解的……应该有八九成的复现率,剩下的例外概率自己也搞不清楚了……
      Mirai Hibernate Plugin 那边还没有研究明白没去看实际聊天记录数据库里存的是什么样子

      发布在 技术交流板块
      hisou
      hisou
    • RE: java如何使用mockbot来做捕获事件测试?

      @Dituon 看着是petpet的代码,我会去研究的,谢谢

      只是本地测试的方法还是得不到答案

      发布在 开发交流
      hisou
      hisou
    • RE: java如何使用mockbot来做捕获事件测试?

      如果只需要获取文本的话,可以 监听消息并取出引用消息实例直接获取文本 (例如: 引用消息的图片或at会转换为 [图片] 和 @xxx 的形式)

      昨晚最后试了一下,发现就是这样转换的,不能拿到原消息的miraicode还原图片感觉意义不大了。


      关于想实现的功能,是群成员直接回复任意某条历史消息(可能是图片),带上关键指令(如“保存”),bot识别指令后将原消息的内容进行后台处理。由于群成员回复哪条消息是不可预测的,所以不想把所有历史消息的id都缓存起来。所以考虑使用QuoteReply直接定位

      其实主要问题还是如何用mockbot进行本地消息监听测试,我是在开发这个功能的过程中才知道有模拟bot库的,省去了很多实机测试的麻烦,只是java下的使用没有文档全凭摸索太耗时了,所以来问问

      发布在 开发交流
      hisou
      hisou
    • java如何使用mockbot来做捕获事件测试?

      一开始是想做一个引用回复的原消息内容的获取,想先本地测试一下避免实操频繁上下线被封号。昨天自己摸索了很久,但是对于单测中如何监听消息并捕获到event中的消息链还是云里雾里的,最下面的订阅事件代码是无效的:

      @Test
          public void test() {
              MockBot mockBot = MockBotFactory.Companion.newMockBotBuilder().create();
              mockBot.addGroup(798100000L, "qqgroup");
      
              Bot bot = mockBot;
              bot.login();
              
              MessageReceipt message = bot.getGroup(798100000L).sendMessage("hello world");
      
              MessageChain messageChain = new MessageChainBuilder().append(message.quote() + " haha").build();
      
              bot.getGroup(798100000L).sendMessage(messageChain);
      
              QuoteReply quoteReply = messageChain.get(QuoteReply.Key);
      
              System.out.println(quoteReply);
      
      // 事件订阅?
      
              bot.getEventChannel().subscribeAlways(GroupMessageEvent.class, (GroupMessageEvent event) -> {
                  System.out.println(event.getMessage().serializeToMiraiCode());
              });
      
              bot.getGroup(798100000L).sendMessage("Hi Hi");
          }
      
      发布在 开发交流
      hisou
      hisou
    • RE: Overflow —— 将 mirai 实现换成 Onebot,机器人的又一个解决方案

      按照手册在linux执行了安装脚本,再启动mcl后,提示
      [Fatal Error] The element type "meta" must be terminated by the matching end-tag "</meta>".
      ……
      [ERROR] Failed to verify package "top.mrxiaom:overflow-core-all"
      ……
      [ERROR] java.nio.file.NoSuchFileException: libs/overflow-core-all-2.16.0.zip

      请问是怎么回事呢

      发布在 项目发布
      hisou
      hisou
    • RE: Overflow —— 将 mirai 实现换成 Onebot,机器人的又一个解决方案

      @MrXiaoM 谢了,正好bot又死了,晚上就试一下overflow

      发布在 项目发布
      hisou
      hisou
    • RE: Overflow —— 将 mirai 实现换成 Onebot,机器人的又一个解决方案

      请问,对于正在使用qsign等第三方签名服务项目协议的mirai bot,以本项目的方式启动是否要求删除fix-protocol-version协议插件?

      发布在 项目发布
      hisou
      hisou
    • RE: 用 fix-protocol-version, unidbg-fetch-qsign 后出现Uin is not registered.

      今天刚弄好这俩的部署,不到20分钟就出现了该问题……

      发布在 开发交流
      hisou
      hisou
    • RE: 无法登录的临时处理方案

      code=45没有其他的解决办法吗?换
      ANDROID_WATCH协议能上是能上,但是某些群bot间歇性收不到消息,不走事件监听器的onMessage方法

      发布在 官方公告
      hisou
      hisou