Актуализировал с godfatherbot
This commit is contained in:
parent
af627cd7b7
commit
1a6c801e9c
4
pom.xml
4
pom.xml
@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
<groupId>dev.struchkov.godfather</groupId>
|
<groupId>dev.struchkov.godfather</groupId>
|
||||||
<artifactId>telegram-bot</artifactId>
|
<artifactId>telegram-bot</artifactId>
|
||||||
<version>0.0.10</version>
|
<version>0.0.11</version>
|
||||||
<packaging>pom</packaging>
|
<packaging>pom</packaging>
|
||||||
|
|
||||||
<modules>
|
<modules>
|
||||||
@ -33,7 +33,7 @@
|
|||||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
|
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
|
||||||
|
|
||||||
<godfather.core.ver>0.0.8</godfather.core.ver>
|
<godfather.core.ver>0.0.9</godfather.core.ver>
|
||||||
<telegrambots.ver>6.1.0</telegrambots.ver>
|
<telegrambots.ver>6.1.0</telegrambots.ver>
|
||||||
|
|
||||||
<plugin.maven.compiler.ver>3.10.1</plugin.maven.compiler.ver>
|
<plugin.maven.compiler.ver>3.10.1</plugin.maven.compiler.ver>
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>dev.struchkov.godfather</groupId>
|
<groupId>dev.struchkov.godfather</groupId>
|
||||||
<artifactId>telegram-bot</artifactId>
|
<artifactId>telegram-bot</artifactId>
|
||||||
<version>0.0.10</version>
|
<version>0.0.11</version>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<artifactId>telegram-core</artifactId>
|
<artifactId>telegram-core</artifactId>
|
||||||
|
@ -1,9 +1,8 @@
|
|||||||
package dev.struchkov.godfather.telegram.listen;
|
package dev.struchkov.godfather.telegram;
|
||||||
|
|
||||||
import dev.struchkov.godfather.telegram.ProxyConfig;
|
import dev.struchkov.godfather.telegram.config.ProxyConfig;
|
||||||
import dev.struchkov.godfather.telegram.TelegramBot;
|
|
||||||
import dev.struchkov.godfather.telegram.TelegramPollingBot;
|
|
||||||
import dev.struchkov.godfather.telegram.config.TelegramPollingConfig;
|
import dev.struchkov.godfather.telegram.config.TelegramPollingConfig;
|
||||||
|
import dev.struchkov.godfather.telegram.listen.EventDistributorService;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.telegram.telegrambots.bots.DefaultBotOptions;
|
import org.telegram.telegrambots.bots.DefaultBotOptions;
|
||||||
@ -25,8 +24,10 @@ public class TelegramConnect {
|
|||||||
private static final Logger log = LoggerFactory.getLogger(TelegramConnect.class);
|
private static final Logger log = LoggerFactory.getLogger(TelegramConnect.class);
|
||||||
|
|
||||||
private TelegramBot telegramBot;
|
private TelegramBot telegramBot;
|
||||||
|
private final TelegramPollingConfig telegramPollingConfig;
|
||||||
|
|
||||||
public TelegramConnect(TelegramPollingConfig telegramPollingConfig) {
|
public TelegramConnect(TelegramPollingConfig telegramPollingConfig) {
|
||||||
|
this.telegramPollingConfig = telegramPollingConfig;
|
||||||
initLongPolling(telegramPollingConfig);
|
initLongPolling(telegramPollingConfig);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -46,6 +47,7 @@ public class TelegramConnect {
|
|||||||
// }
|
// }
|
||||||
|
|
||||||
private void initLongPolling(TelegramPollingConfig telegramPollingConfig) {
|
private void initLongPolling(TelegramPollingConfig telegramPollingConfig) {
|
||||||
|
|
||||||
final ProxyConfig proxyConfig = telegramPollingConfig.getProxyConfig();
|
final ProxyConfig proxyConfig = telegramPollingConfig.getProxyConfig();
|
||||||
if (proxyConfig != null && proxyConfig.getPassword() != null) {
|
if (proxyConfig != null && proxyConfig.getPassword() != null) {
|
||||||
try {
|
try {
|
||||||
@ -105,12 +107,16 @@ public class TelegramConnect {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
AbsSender getAdsSender() {
|
public AbsSender getAdsSender() {
|
||||||
return telegramBot.getAdsSender();
|
return telegramBot.getAdsSender();
|
||||||
}
|
}
|
||||||
|
|
||||||
void initEventDistributor(EventDistributorService eventDistributor) {
|
public void initEventDistributor(EventDistributorService eventDistributor) {
|
||||||
telegramBot.initEventDistributor(eventDistributor);
|
telegramBot.initEventDistributor(eventDistributor);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getToken() {
|
||||||
|
return telegramPollingConfig.getBotToken();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -2,26 +2,23 @@ package dev.struchkov.godfather.telegram.autoresponder;
|
|||||||
|
|
||||||
import dev.struchkov.godfather.context.domain.content.Mail;
|
import dev.struchkov.godfather.context.domain.content.Mail;
|
||||||
import dev.struchkov.godfather.context.service.PersonSettingService;
|
import dev.struchkov.godfather.context.service.PersonSettingService;
|
||||||
import dev.struchkov.godfather.context.service.UnitPointerService;
|
import dev.struchkov.godfather.context.service.StorylineService;
|
||||||
import dev.struchkov.godfather.context.service.sender.Sending;
|
import dev.struchkov.godfather.context.service.sender.Sending;
|
||||||
import dev.struchkov.godfather.core.GeneralAutoResponder;
|
import dev.struchkov.godfather.core.GeneralAutoResponder;
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* TODO: Добавить описание класса.
|
* TODO: Добавить описание класса.
|
||||||
*
|
*
|
||||||
* @author upagge [18.08.2019]
|
* @author upagge [18.08.2019]
|
||||||
*/
|
*/
|
||||||
public class MessageAutoresponderTelegram extends GeneralAutoResponder<Mail> {
|
public class MailAutoresponderTelegram extends GeneralAutoResponder<Mail> {
|
||||||
|
|
||||||
public MessageAutoresponderTelegram(
|
public MailAutoresponderTelegram(
|
||||||
Sending sending,
|
Sending sending,
|
||||||
PersonSettingService personSettingService,
|
PersonSettingService personSettingService,
|
||||||
UnitPointerService unitPointerService,
|
StorylineService<Mail> storyLineService
|
||||||
List<Object> unitConfigurations
|
|
||||||
) {
|
) {
|
||||||
super(sending, personSettingService, unitPointerService, unitConfigurations);
|
super(sending, personSettingService, storyLineService);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -1,4 +1,4 @@
|
|||||||
package dev.struchkov.godfather.telegram;
|
package dev.struchkov.godfather.telegram.config;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* TODO: Добавить описание класса.
|
* TODO: Добавить описание класса.
|
@ -1,7 +1,5 @@
|
|||||||
package dev.struchkov.godfather.telegram.config;
|
package dev.struchkov.godfather.telegram.config;
|
||||||
|
|
||||||
import dev.struchkov.godfather.telegram.ProxyConfig;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* TODO: Добавить описание класса.
|
* TODO: Добавить описание класса.
|
||||||
*
|
*
|
||||||
|
@ -2,7 +2,8 @@ package dev.struchkov.godfather.telegram.convert;
|
|||||||
|
|
||||||
import dev.struchkov.godfather.context.domain.content.Mail;
|
import dev.struchkov.godfather.context.domain.content.Mail;
|
||||||
import dev.struchkov.godfather.context.domain.content.attachment.Attachment;
|
import dev.struchkov.godfather.context.domain.content.attachment.Attachment;
|
||||||
import dev.struchkov.godfather.context.domain.content.attachment.Link;
|
import dev.struchkov.godfather.telegram.domain.attachment.DocumentAttachment;
|
||||||
|
import org.telegram.telegrambots.meta.api.objects.Document;
|
||||||
import org.telegram.telegrambots.meta.api.objects.Message;
|
import org.telegram.telegrambots.meta.api.objects.Message;
|
||||||
import org.telegram.telegrambots.meta.api.objects.MessageEntity;
|
import org.telegram.telegrambots.meta.api.objects.MessageEntity;
|
||||||
|
|
||||||
@ -12,6 +13,7 @@ import java.time.ZoneId;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
import static dev.struchkov.haiti.utils.Exceptions.utilityClass;
|
import static dev.struchkov.haiti.utils.Exceptions.utilityClass;
|
||||||
|
|
||||||
@ -35,9 +37,11 @@ public final class MessageMailConvert {
|
|||||||
mail.setFirstName(message.getChat().getFirstName());
|
mail.setFirstName(message.getChat().getFirstName());
|
||||||
mail.setLastName(message.getChat().getLastName());
|
mail.setLastName(message.getChat().getLastName());
|
||||||
|
|
||||||
|
convertDocument(message.getDocument()).ifPresent(mail::addAttachment);
|
||||||
|
|
||||||
final List<MessageEntity> entities = message.getEntities();
|
final List<MessageEntity> entities = message.getEntities();
|
||||||
if (entities != null) {
|
if (entities != null) {
|
||||||
mail.setAttachments(convertAttachments(entities));
|
mail.addAttachments(convertAttachments(entities));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (message.getReplyToMessage() != null) {
|
if (message.getReplyToMessage() != null) {
|
||||||
@ -47,16 +51,28 @@ public final class MessageMailConvert {
|
|||||||
return mail;
|
return mail;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static Optional<DocumentAttachment> convertDocument(Document document) {
|
||||||
|
if (document != null) {
|
||||||
|
final DocumentAttachment attachment = new DocumentAttachment();
|
||||||
|
attachment.setFileId(document.getFileId());
|
||||||
|
attachment.setFileSize(document.getFileSize());
|
||||||
|
attachment.setFileName(document.getFileName());
|
||||||
|
attachment.setFileType(document.getMimeType());
|
||||||
|
return Optional.of(attachment);
|
||||||
|
}
|
||||||
|
return Optional.empty();
|
||||||
|
}
|
||||||
|
|
||||||
private static List<Attachment> convertAttachments(List<MessageEntity> entities) {
|
private static List<Attachment> convertAttachments(List<MessageEntity> entities) {
|
||||||
final List<Attachment> attachments = new ArrayList<>();
|
final List<Attachment> attachments = new ArrayList<>();
|
||||||
for (MessageEntity entity : entities) {
|
// for (MessageEntity entity : entities) {
|
||||||
String type = entity.getType();
|
// String type = entity.getType();
|
||||||
if ("text_link".equals(type)) {
|
// if ("text_link".equals(type)) {
|
||||||
Link link = new Link();
|
// Link link = new Link();
|
||||||
link.setUrl(entity.getUrl());
|
// link.setUrl(entity.getUrl());
|
||||||
attachments.add(link);
|
// attachments.add(link);
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
return attachments;
|
return attachments;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -0,0 +1,48 @@
|
|||||||
|
package dev.struchkov.godfather.telegram.domain;
|
||||||
|
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.nio.file.Files;
|
||||||
|
|
||||||
|
public class FileContainer {
|
||||||
|
|
||||||
|
public static final FileContainer EMPTY = new FileContainer(null, null);
|
||||||
|
|
||||||
|
private static final Logger log = LoggerFactory.getLogger(FileContainer.class);
|
||||||
|
|
||||||
|
private final String fileName;
|
||||||
|
private final File file;
|
||||||
|
|
||||||
|
public FileContainer(String fileName, File file) {
|
||||||
|
this.fileName = fileName;
|
||||||
|
this.file = file;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getFileName() {
|
||||||
|
return fileName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public File getFile() {
|
||||||
|
return file;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static FileContainer empty() {
|
||||||
|
return EMPTY;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isNotEmpty() {
|
||||||
|
return file != null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void delete() {
|
||||||
|
try {
|
||||||
|
Files.deleteIfExists(file.toPath());
|
||||||
|
} catch (IOException e) {
|
||||||
|
log.error(e.getMessage(), e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,49 @@
|
|||||||
|
package dev.struchkov.godfather.telegram.domain.attachment;
|
||||||
|
|
||||||
|
import dev.struchkov.godfather.context.domain.content.attachment.Attachment;
|
||||||
|
|
||||||
|
public class DocumentAttachment extends Attachment {
|
||||||
|
|
||||||
|
private String fileId;
|
||||||
|
private Long fileSize;
|
||||||
|
private String fileName;
|
||||||
|
private String fileType;
|
||||||
|
|
||||||
|
public String getFileId() {
|
||||||
|
return fileId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFileId(String fileId) {
|
||||||
|
this.fileId = fileId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Long getFileSize() {
|
||||||
|
return fileSize;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFileSize(Long fileSize) {
|
||||||
|
this.fileSize = fileSize;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getFileName() {
|
||||||
|
return fileName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFileName(String fileName) {
|
||||||
|
this.fileName = fileName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getFileType() {
|
||||||
|
return fileType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFileType(String fileType) {
|
||||||
|
this.fileType = fileType;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getType() {
|
||||||
|
return TelegramAttachmentType.DOCUMENT.name();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,7 @@
|
|||||||
|
package dev.struchkov.godfather.telegram.domain.attachment;
|
||||||
|
|
||||||
|
public enum TelegramAttachmentType {
|
||||||
|
|
||||||
|
DOCUMENT
|
||||||
|
|
||||||
|
}
|
@ -2,6 +2,7 @@ package dev.struchkov.godfather.telegram.listen;
|
|||||||
|
|
||||||
import dev.struchkov.godfather.context.domain.content.Mail;
|
import dev.struchkov.godfather.context.domain.content.Mail;
|
||||||
import dev.struchkov.godfather.context.service.EventProvider;
|
import dev.struchkov.godfather.context.service.EventProvider;
|
||||||
|
import dev.struchkov.godfather.telegram.TelegramConnect;
|
||||||
import dev.struchkov.godfather.telegram.convert.CallbackQueryConvert;
|
import dev.struchkov.godfather.telegram.convert.CallbackQueryConvert;
|
||||||
import dev.struchkov.godfather.telegram.convert.MessageMailConvert;
|
import dev.struchkov.godfather.telegram.convert.MessageMailConvert;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
@ -8,6 +8,7 @@ import dev.struchkov.godfather.context.domain.keyboard.button.SimpleButton;
|
|||||||
import dev.struchkov.godfather.context.domain.keyboard.simple.SimpleKeyBoard;
|
import dev.struchkov.godfather.context.domain.keyboard.simple.SimpleKeyBoard;
|
||||||
import dev.struchkov.godfather.context.service.sender.SendType;
|
import dev.struchkov.godfather.context.service.sender.SendType;
|
||||||
import dev.struchkov.godfather.context.service.sender.Sending;
|
import dev.struchkov.godfather.context.service.sender.Sending;
|
||||||
|
import dev.struchkov.godfather.telegram.TelegramConnect;
|
||||||
import dev.struchkov.godfather.telegram.domain.keyboard.InlineKeyBoard;
|
import dev.struchkov.godfather.telegram.domain.keyboard.InlineKeyBoard;
|
||||||
import dev.struchkov.godfather.telegram.domain.keyboard.MarkupKeyBoard;
|
import dev.struchkov.godfather.telegram.domain.keyboard.MarkupKeyBoard;
|
||||||
import dev.struchkov.godfather.telegram.domain.keyboard.button.ButtonUrl;
|
import dev.struchkov.godfather.telegram.domain.keyboard.button.ButtonUrl;
|
||||||
|
@ -0,0 +1,92 @@
|
|||||||
|
package dev.struchkov.godfather.telegram.service;
|
||||||
|
|
||||||
|
import dev.struchkov.godfather.telegram.TelegramConnect;
|
||||||
|
import dev.struchkov.godfather.telegram.domain.FileContainer;
|
||||||
|
import dev.struchkov.godfather.telegram.domain.attachment.DocumentAttachment;
|
||||||
|
import org.apache.commons.io.FileUtils;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.telegram.telegrambots.meta.api.methods.GetFile;
|
||||||
|
import org.telegram.telegrambots.meta.bots.AbsSender;
|
||||||
|
import org.telegram.telegrambots.meta.exceptions.TelegramApiException;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.net.URL;
|
||||||
|
import java.nio.file.Files;
|
||||||
|
import java.nio.file.Path;
|
||||||
|
import java.util.Optional;
|
||||||
|
import java.util.UUID;
|
||||||
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
|
import static dev.struchkov.haiti.utils.Inspector.isNotNull;
|
||||||
|
|
||||||
|
public class AttachmentServiceImpl {
|
||||||
|
|
||||||
|
private static final Logger log = LoggerFactory.getLogger(AttachmentServiceImpl.class);
|
||||||
|
|
||||||
|
private final AbsSender absSender;
|
||||||
|
private final String botToken;
|
||||||
|
|
||||||
|
private String folderPathForFiles;
|
||||||
|
|
||||||
|
public AttachmentServiceImpl(TelegramConnect telegramConnect) {
|
||||||
|
this.absSender = telegramConnect.getAdsSender();
|
||||||
|
this.botToken = telegramConnect.getToken();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFolderPathForFiles(String folderPathForFiles) {
|
||||||
|
if (folderPathForFiles != null) {
|
||||||
|
this.folderPathForFiles = folderPathForFiles + "/";
|
||||||
|
try (final Stream<Path> pathStream = Files.list(Path.of(folderPathForFiles))) {
|
||||||
|
pathStream.forEach(path -> {
|
||||||
|
try {
|
||||||
|
Files.delete(path);
|
||||||
|
} catch (IOException e) {
|
||||||
|
log.error(e.getMessage());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} catch (IOException e) {
|
||||||
|
log.error(e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public FileContainer uploadFile(@NotNull DocumentAttachment documentAttachment) {
|
||||||
|
isNotNull(documentAttachment);
|
||||||
|
try {
|
||||||
|
final File file = downloadFile(documentAttachment);
|
||||||
|
return new FileContainer(documentAttachment.getFileName(), file);
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error(e.getMessage(), e);
|
||||||
|
}
|
||||||
|
return FileContainer.empty();
|
||||||
|
}
|
||||||
|
|
||||||
|
private File downloadFile(DocumentAttachment documentAttachment) throws IOException, TelegramApiException {
|
||||||
|
final org.telegram.telegrambots.meta.api.objects.File file = getFilePath(documentAttachment);
|
||||||
|
|
||||||
|
final StringBuilder filePath = new StringBuilder();
|
||||||
|
if (folderPathForFiles != null) {
|
||||||
|
filePath.append(folderPathForFiles);
|
||||||
|
}
|
||||||
|
filePath.append(UUID.randomUUID());
|
||||||
|
filePath.append("_");
|
||||||
|
filePath.append(documentAttachment.getFileName());
|
||||||
|
|
||||||
|
final java.io.File localFile = new java.io.File(filePath.toString());
|
||||||
|
final InputStream is = new URL(file.getFileUrl(botToken)).openStream();
|
||||||
|
FileUtils.copyInputStreamToFile(is, localFile);
|
||||||
|
return localFile;
|
||||||
|
}
|
||||||
|
|
||||||
|
private org.telegram.telegrambots.meta.api.objects.File getFilePath(DocumentAttachment documentAttachment) throws TelegramApiException {
|
||||||
|
final GetFile getFile = new GetFile();
|
||||||
|
getFile.setFileId(documentAttachment.getFileId());
|
||||||
|
return absSender.execute(getFile);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,45 @@
|
|||||||
|
package dev.struchkov.godfather.telegram.utils;
|
||||||
|
|
||||||
|
import dev.struchkov.godfather.context.domain.content.attachment.Attachment;
|
||||||
|
import dev.struchkov.godfather.telegram.domain.attachment.DocumentAttachment;
|
||||||
|
import dev.struchkov.godfather.telegram.domain.attachment.TelegramAttachmentType;
|
||||||
|
import dev.struchkov.haiti.utils.Inspector;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
|
import static dev.struchkov.haiti.utils.Exceptions.utilityClass;
|
||||||
|
|
||||||
|
public final class Attachments {
|
||||||
|
|
||||||
|
private Attachments() {
|
||||||
|
utilityClass();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Optional<DocumentAttachment> findFirstDocument(Collection<Attachment> attachments) {
|
||||||
|
if (attachments != null) {
|
||||||
|
for (Attachment attachment : attachments) {
|
||||||
|
if (isDocument(attachment)) {
|
||||||
|
return Optional.ofNullable((DocumentAttachment) attachment);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return Optional.empty();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean hasDocument(Collection<Attachment> attachments) {
|
||||||
|
Inspector.isNotNull(attachments);
|
||||||
|
for (Attachment attachment : attachments) {
|
||||||
|
if (isDocument(attachment)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean isDocument(Attachment attachment) {
|
||||||
|
Inspector.isNotNull(attachment);
|
||||||
|
return TelegramAttachmentType.DOCUMENT.name().equals(attachment.getType());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user