MiraiForum

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

    如何将群里的文件发送到另外一个群

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

      我通过群消息事件然后获取到了fileMessage,但是试了直接发送到目标群无法实现

      B 1 条回复 最后回复 回复 引用 0
      • B
        bigcyy @bigcyy 最后由 编辑

        @bigcyy
        研究出来了,贴这里供大家参考,我这里是mirai最新的稳定版

        //判断其是否是文件信息
                   boolean isFileMsg = message.stream().anyMatch((singleMessage) -> singleMessage instanceof FileMessage);
                   if (isFileMsg) { //如果是文件
                       Optional<SingleMessage> first = message.stream().filter((singleMessage) -> singleMessage instanceof FileMessage).findFirst();
                       SingleMessage singleMessage;
                       if(first.isPresent()) {
                           singleMessage = first.get();
        
                           AbsoluteFile absoluteFile = ((FileMessage) singleMessage).toAbsoluteFile(group);    //从刚刚发送文件的的群里获取该文件
                           String fileName = absoluteFile.getName();
                           String url = absoluteFile.getUrl(); //得到url
                           OkHttpClient okHttpClient = new OkHttpClient(); //用okhttp发送请求,转成流
                           Request request = new Request.Builder().url(url).build();
                           okHttpClient.newCall(request).enqueue(new Callback() {
                               @Override
                               public void onFailure(@NotNull Call call, @NotNull IOException e) {
                                   e.printStackTrace();
                               }
        
                               @Override
                               public void onResponse(@NotNull Call call, @NotNull Response response) throws IOException {
                                   try {
                                       InputStream inputStream = response.body().byteStream(); //转成流
                                       ExternalResource res = ExternalResource.create(inputStream).toAutoCloseable();  //用mirai的ExternalResource包装
                                       pushGroup.getFiles().uploadNewFile("/" + fileName, res);
                                       inputStream.close();
                                   } catch (Exception e) {
                                       e.printStackTrace();
                                   }
                               }
                           });
                       }
                   }
        
        1 条回复 最后回复 回复 引用 0
        • W
          wuxianggujun 最后由 编辑

          你有没有试过,游历群文件夹下的子文件夹

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