MiraiForum

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

    MrXiaoM 发布的帖子

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

      总所周知,腾讯服务器给你返回的 QuoteReply 的源消息并不是富文本消息,也就是说,图片会“退化”为[图片]等等。如果我们想做回复消息搜图之类的功能,这给我们带来了比较多的麻烦。

      但是,我们可以取到源消息的 MessageSource,只要你本地存了聊天记录,就能够通过 MessageSource 获取相应消息。按照这个思路,我们只要跟QQ客户端一样,把消息存到本地,需要时获取即可。

      具体实现

      本帖中将使用 Mirai Hibernate Plugin 插件储存聊天记录,演示获取回复消息原文的方法。

      引用依赖

      // build.gradle(.kts)
      
      repositories {
          mavenCentral()
      }
      
      dependencies {
          compileOnly("xyz.cssxsh.mirai:mirai-hibernate-plugin:依赖版本")
      }
      
      // hibernate 6 和 HikariCP 5 需要 jdk11
      mirai {
          jvmTarget = JavaVersion.VERSION_11
      }
      
      //author("MrXiaoM")
      // 在主类插件信息处声明插件依赖关系
      dependsOn("xyz.cssxsh.mirai.plugin.mirai-hibernate-plugin", false)
      

      Kotlin

      val QuoteReply.originalMessageFromLocal: MessageChain
          get() = MiraiHibernateRecorder[source].firstOrNull()?.toMessageChain() ?: source.originalMessage
      
      // 使用示例
      @EventHandler
      fun GroupMessageEvent.listen() {
          // 检测回复消息
          message[QuoteReply.Key]?.run { 
              val original = originalMessageFromLocal
              // do sth.
          }
      }
      

      Java

          public static MessageChain getOriginalMessageFromLocal(QuoteReply quote) {
              Optional<MessageRecord> record = MiraiHibernateRecorder.INSTANCE.get(quote.getSource()).stream().findFirst();
              return record.map(MessageRecord::toMessageChain).orElseGet(() -> quote.getSource().getOriginalMessage());
          }
          // 使用示例
          @EventHandler
          public void onGroupMessage(GroupMessageEvent event) {
              // 检测回复消息
              QuoteReply quote = event.getMessage().get(QuoteReply.Key);
              if (quote != null) {
                  MessageChain original = getOriginalMessageFromLocal(quote);
                  // do sth.
              }
          }
      
      发布在 技术交流板块
      MrXiaoM
      MrXiaoM
    • RE: 【每日沙雕图】沙雕小别墅

      5fcb22650091a253.jpg

      发布在 摸鱼区
      MrXiaoM
      MrXiaoM
    • RE: 【每日沙雕图】沙雕小别墅

      58ed327e840ab0c8.jpg

      发布在 摸鱼区
      MrXiaoM
      MrXiaoM
    • RE: 给Mirai娘的新衣服!

      @saltfish13 快进到雨酱做mirai中之人(喜

      发布在 摸鱼区
      MrXiaoM
      MrXiaoM
    • RE: 【每日沙雕图】沙雕小别墅

      3a4887c990836161.png

      发布在 摸鱼区
      MrXiaoM
      MrXiaoM
    • RE: 【每日沙雕图】沙雕小别墅

      -36ee5fecae20f182.jpg

      发布在 摸鱼区
      MrXiaoM
      MrXiaoM
    • RE: 无法登录的问题

      https://mirai.mamoe.net/topic/223

      发布在 使用交流
      MrXiaoM
      MrXiaoM
    • RE: 给Mirai娘的新衣服!

      嘿嘿 Mirai Chan 🤤🤤🤤嘿嘿 Mirai Chan 🤤🤤🤤嘿嘿 Mirai Chan 🤤🤤🤤嘿嘿 Mirai Chan 🤤🤤🤤嘿嘿 Mirai Chan 🤤🤤🤤嘿嘿 Mirai Chan 🤤🤤🤤

      发布在 摸鱼区
      MrXiaoM
      MrXiaoM
    • RE: CommandYouWant —— 重定向其他插件的命令

      @SyuueenN 目前不能,虽然可以改成一个命令多种触发方式,但目前我没有时间进行开发,所有项目停更。

      要加这个功能也要等我解决完这个插件里还存在的一些逻辑错误才能加了

      发布在 插件发布
      MrXiaoM
      MrXiaoM
    • RE: 【每日沙雕图】沙雕小别墅

      -6b1fe224863e78be.jpg

      发布在 摸鱼区
      MrXiaoM
      MrXiaoM
    • RE: 【每日沙雕图】沙雕小别墅

      466abe33dc4f3e38.jpg

      发布在 摸鱼区
      MrXiaoM
      MrXiaoM
    • RE: 【每日沙雕图】沙雕小别墅

      1668588147062.jpeg

      发布在 摸鱼区
      MrXiaoM
      MrXiaoM
    • RE: 【每日沙雕图】沙雕小别墅

      @Mr-喜 重点是这个低级翻译
      Party House 宴会厅/派对屋

      发布在 摸鱼区
      MrXiaoM
      MrXiaoM
    • RE: 【每日沙雕图】沙雕小别墅

      Party House

      发布在 摸鱼区
      MrXiaoM
      MrXiaoM
    • RE: 【每日沙雕图】沙雕小别墅

      -15361adc5d106238.jpg

      发布在 摸鱼区
      MrXiaoM
      MrXiaoM
    • RE: W/MCL Addon: iTXTech Soyuz 未安装,Soyuz MCL Handler 特性已禁用

      Soyuz 是 iTXTech 开发的 Websocket API 服务。
      鉴于它可以配合 MCL Addon 进行包管理,它很可能是将来的插件中心所需插件。
      在官方宣布插件中心建成之前 (2021年4月3日起至今未完成),它似乎没有什么用途,不用管。

      发布在 BUG反馈
      MrXiaoM
      MrXiaoM
    • RE: LoliYouWant —— 随机萝莉图,刑啊

      @琉云叽米 试试不要用 * 权限,单独给权限(尽管我觉得应该是不影响的)。还不行就换 0.2.0,再不行就无解了。

      控制台命令 /loli keywords 可以看已加载到关键词列表

      发布在 插件发布
      MrXiaoM
      MrXiaoM
    • RE: LoliYouWant —— 随机萝莉图,刑啊

      @琉云叽米 确定在有权限的群里发送关键词,控制台一点反应也没有?这是不可能的

      发布在 插件发布
      MrXiaoM
      MrXiaoM
    • RE: LoliYouWant —— 随机萝莉图,刑啊

      @琉云叽米 那你怎么说按照配置方法配置不成功……还以为你改过
      控制台执行 /status 看看有没有 LoliYouWant
      群发送关键词看看控制台有没有反应

      发布在 插件发布
      MrXiaoM
      MrXiaoM
    • RE: LoliYouWant —— 随机萝莉图,刑啊

      @琉云叽米 没改过配置?

      发布在 插件发布
      MrXiaoM
      MrXiaoM
    • 1
    • 2
    • 31
    • 32
    • 33
    • 34
    • 35
    • 44
    • 45
    • 33 / 45