MiraiForum

    • Register
    • Login
    • Search
    • Popular
    • Recent
    • Unsolved
    • Tags
    • Groups
    • 友情链接

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

    开发交流
    2
    3
    162
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • B
      bigcyy last edited by

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

      B 1 Reply Last reply Reply Quote 0
      • B
        bigcyy @bigcyy last edited by

        @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 Reply Last reply Reply Quote 0
        • W
          wuxianggujun last edited by

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

          1 Reply Last reply Reply Quote 0
          • 1 / 1
          • First post
            Last post
          Powered by Mamoe Technologies & NodeBB | 友情链接 | 服务监控 | Contact