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,提问作者Роман Денисов
相关产品推荐
相关产品推荐

