Discord JDA 保存邮件中包含的文件附件

Posted

技术标签:

【中文标题】Discord JDA 保存邮件中包含的文件附件【英文标题】:Discord JDA Save a file attachment that was included in a message 【发布时间】:2021-04-09 19:03:40 【问题描述】:

代码如下:

package volmbot.commands;

import lombok.SneakyThrows;
import net.dv8tion.jda.api.events.message.guild.GuildMessageReceivedEvent;
import net.dv8tion.jda.api.hooks.ListenerAdapter;

import java.io.FileOutputStream;
import java.io.ObjectOutputStream;


public class SandBox extends ListenerAdapter 
    @SneakyThrows
    public void onGuildMessageReceived(GuildMessageReceivedEvent e) 
        String[] args = e.getMessage().getContentRaw().split(" ");
        e.getMessage().getAttachments();
        String authId = e.getMessage().getAuthor().getId();

        //Grab file and save it as the user's ID
        FileOutputStream saveFile = new FileOutputStream(authId + ".txt");
        ObjectOutputStream save = new ObjectOutputStream(saveFile);
        save.writeObject(e.getMessage().getAttachments());
        save.close();


    


我的目标是做到以下几点:

保存用户在邮件中发送的文件(如果邮件有附件) 如果消息不包含消息则忽略它 保存到用户 ID 为id.txt 的文件

我尝试过使用 Filestream,但我可能做错了什么。 假设它有附件,我将如何管理如此抓取邮件附件,然后保存文件?

【问题讨论】:

【参考方案1】:

你可以使用downloadToFile(name):

List<Message.Attachment> attachments = event.getMessage().getAttachments();
if (attachments.isEmpty()) return; // no attachments on the message!

CompletableFuture<File> future = attachments.get(0).downloadToFile(authId + ".txt");
future.exceptionally(error ->  // handle possible errors
  error.printStackTrace();
  return null;
);

【讨论】:

以上是关于Discord JDA 保存邮件中包含的文件附件的主要内容,如果未能解决你的问题,请参考以下文章

Discord JDA - 定时静音

试图理解 Java 中的时间戳(Discord JDA 和 Mongodb)

快速从电子邮件中获取 plist 附件(NS Cocoa 错误域代码 260)

如何修复不和谐的 jda bot 垃圾邮件

Java:从 Discord JDA 获取并返回邀请 url

如何在 Discord JDA 嵌入式消息中使用本地文件作为缩略图?