You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java Telegram API:如何获取单条消息中的所有文档?

获取单条消息中的多个文档

方法1:遍历消息附件筛选文档

如果使用的是Java Telegram Bot API,消息内的所有附件(包含文档、图片、音频等)都存储在getAttachments()返回的列表中,你可以遍历列表并筛选出文档类型的对象:

List<Document> documents = new ArrayList<>();
for (MessageEntity attachment : update.getMessage().getAttachments()) {
    if ("document".equals(attachment.getType())) {
        documents.add(attachment.getDocument());
    }
}

方法2:处理媒体组消息

如果多个文档是以媒体组形式发送的(发送时勾选了媒体组选项),单条消息仅会包含一个文档,其余文档需要通过媒体组ID获取同组内的其他消息:

String mediaGroupId = update.getMessage().getMediaGroupId();
if (mediaGroupId != null) {
    // 调用聊天历史接口获取该媒体组的所有消息
    List<Message> mediaGroupMsgs = getChatHistory(
        update.getMessage().getChatId(),
        null,
        mediaGroupId,
        0,
        100 // 媒体组最多包含10个文件,此数值足够覆盖
    );
    List<Document> documents = new ArrayList<>();
    for (Message msg : mediaGroupMsgs) {
        Document doc = msg.getDocument();
        if (doc != null) {
            documents.add(doc);
        }
    }
}

方法3:升级Bot API库版本

若你使用的是旧版Java Telegram Bot API库,可能没有直接提供getDocuments()方法。升级到最新版本后,部分库版本已支持直接调用该方法获取所有文档:

List<Document> documents = update.getMessage().getDocuments();

内容的提问来源于stack exchange,提问作者Роман Денисов

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 15:22:42