From 6de379e2fe7a0bbed782d356c676a13bf0f6f11f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrick=20Ha=C3=9Fel?= Date: Tue, 18 Jun 2024 08:58:57 +0200 Subject: [PATCH] bot config via application.properties --- application.properties | 4 +++- .../kleinanzeigen/telegram/TelegramBot.java | 12 ++++++------ .../ChatConfig.java => TelegramConfig.java} | 10 +++++++--- .../telegram/TelegramService.java | 18 ++++++------------ .../ph87/kleinanzeigen/telegram/chat/Chat.java | 3 ++- .../telegram/chat/{ChatDto => }/ChatDto.java | 6 ++++-- .../telegram/chat/ChatService.java | 4 ++-- .../telegram/chat/message/MessageDto.java | 2 +- .../telegram/chat/message/MessageService.java | 2 +- 9 files changed, 32 insertions(+), 29 deletions(-) rename src/main/java/de/ph87/kleinanzeigen/telegram/{chat/ChatConfig.java => TelegramConfig.java} (78%) rename src/main/java/de/ph87/kleinanzeigen/telegram/chat/{ChatDto => }/ChatDto.java (67%) diff --git a/application.properties b/application.properties index 470ccd5..d5adf81 100644 --- a/application.properties +++ b/application.properties @@ -8,4 +8,6 @@ spring.jpa.database-platform=org.hibernate.dialect.H2Dialect #- #spring.jpa.hibernate.ddl-auto=create #- -de.ph87.kleinanzeigen.telegram.chat.whitelist=101138682,269710244 +de.ph87.kleinanzeigen.telegram.token=7279963040:AAEtff76gZxzl5m5U9eHpADMKRU6r8Omxcg +de.ph87.kleinanzeigen.telegram.username=BotKleinanzeigenBot +de.ph87.kleinanzeigen.telegram.whitelist=101138682,269710244 diff --git a/src/main/java/de/ph87/kleinanzeigen/telegram/TelegramBot.java b/src/main/java/de/ph87/kleinanzeigen/telegram/TelegramBot.java index 61acbca..86d8f09 100644 --- a/src/main/java/de/ph87/kleinanzeigen/telegram/TelegramBot.java +++ b/src/main/java/de/ph87/kleinanzeigen/telegram/TelegramBot.java @@ -1,5 +1,6 @@ package de.ph87.kleinanzeigen.telegram; +import lombok.Getter; import lombok.extern.slf4j.Slf4j; import org.telegram.telegrambots.bots.TelegramLongPollingBot; import org.telegram.telegrambots.meta.TelegramBotsApi; @@ -17,8 +18,12 @@ public class TelegramBot extends TelegramLongPollingBot { private final Consumer onUpdate; - public TelegramBot(final String token, final Consumer onUpdate) throws IOException, TelegramApiException { + @Getter + private final String botUsername; + + public TelegramBot(final String token, final String username, final Consumer onUpdate) throws IOException, TelegramApiException { super(token); + this.botUsername = username; this.onUpdate = onUpdate; getOptions().setGetUpdatesTimeout(10); log.info("Starting telegram bot..."); @@ -27,11 +32,6 @@ public class TelegramBot extends TelegramLongPollingBot { log.info("Telegram bot registered."); } - @Override - public String getBotUsername() { - return "BotKleinanzeigenBot"; - } - @Override public void onUpdateReceived(final Update update) { onUpdate.accept(update); diff --git a/src/main/java/de/ph87/kleinanzeigen/telegram/chat/ChatConfig.java b/src/main/java/de/ph87/kleinanzeigen/telegram/TelegramConfig.java similarity index 78% rename from src/main/java/de/ph87/kleinanzeigen/telegram/chat/ChatConfig.java rename to src/main/java/de/ph87/kleinanzeigen/telegram/TelegramConfig.java index f5f37ed..32f85ef 100644 --- a/src/main/java/de/ph87/kleinanzeigen/telegram/chat/ChatConfig.java +++ b/src/main/java/de/ph87/kleinanzeigen/telegram/TelegramConfig.java @@ -1,4 +1,4 @@ -package de.ph87.kleinanzeigen.telegram.chat; +package de.ph87.kleinanzeigen.telegram; import lombok.Data; import lombok.extern.slf4j.Slf4j; @@ -11,8 +11,12 @@ import java.util.List; @Slf4j @Data @Component -@ConfigurationProperties(prefix = "de.ph87.kleinanzeigen.telegram.chat") -public class ChatConfig { +@ConfigurationProperties(prefix = "de.ph87.kleinanzeigen.telegram") +public class TelegramConfig { + + private String token; + + private String username; private List whitelist = new ArrayList<>(); diff --git a/src/main/java/de/ph87/kleinanzeigen/telegram/TelegramService.java b/src/main/java/de/ph87/kleinanzeigen/telegram/TelegramService.java index a3d20f5..71fdfd1 100644 --- a/src/main/java/de/ph87/kleinanzeigen/telegram/TelegramService.java +++ b/src/main/java/de/ph87/kleinanzeigen/telegram/TelegramService.java @@ -3,7 +3,7 @@ package de.ph87.kleinanzeigen.telegram; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import de.ph87.kleinanzeigen.kleinanzeigen.offer.OfferDto; -import de.ph87.kleinanzeigen.telegram.chat.ChatDto.ChatDto; +import de.ph87.kleinanzeigen.telegram.chat.ChatDto; import de.ph87.kleinanzeigen.telegram.chat.ChatService; import de.ph87.kleinanzeigen.telegram.chat.message.MessageDeleted; import de.ph87.kleinanzeigen.telegram.chat.message.MessageDto; @@ -26,9 +26,7 @@ import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; -import java.io.FileInputStream; import java.io.IOException; -import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.List; @@ -41,13 +39,15 @@ public class TelegramService { private static final String ICON_REMOVE = "❌"; + private final TelegramConfig config; + private final ChatService chatService; - private byte[] NO_IMAGE = null; + private final MessageService messageService; private final ObjectMapper objectMapper; - private final MessageService messageService; + private byte[] NO_IMAGE = null; private TelegramBot bot = null; @@ -59,7 +59,7 @@ public class TelegramService { NO_IMAGE = stream.toByteArray(); try { - bot = new TelegramBot(readToken(), this::onUpdateReceived); + bot = new TelegramBot(config.getToken(), config.getUsername(), this::onUpdateReceived); } catch (TelegramApiException | IOException e) { log.error("Failed to start TelegramBot: {}", e.toString()); } @@ -90,12 +90,6 @@ public class TelegramService { log.info("Telegram bot stopped"); } - private static String readToken() throws IOException { - try (final FileInputStream stream = new FileInputStream("./telegram.token")) { - return new String(stream.readAllBytes(), StandardCharsets.UTF_8).trim(); - } - } - private void onUpdateReceived(final Update update) { try { if (update.hasMessage() && update.getMessage().hasText()) { diff --git a/src/main/java/de/ph87/kleinanzeigen/telegram/chat/Chat.java b/src/main/java/de/ph87/kleinanzeigen/telegram/chat/Chat.java index 2628820..8aa8e90 100644 --- a/src/main/java/de/ph87/kleinanzeigen/telegram/chat/Chat.java +++ b/src/main/java/de/ph87/kleinanzeigen/telegram/chat/Chat.java @@ -1,5 +1,6 @@ package de.ph87.kleinanzeigen.telegram.chat; +import jakarta.annotation.Nullable; import jakarta.persistence.Entity; import jakarta.persistence.Id; import lombok.*; @@ -17,7 +18,7 @@ public class Chat { private boolean enabled; @Setter - @NonNull + @Nullable private String name; public Chat(final long id, final boolean enabled, @NonNull final String name) { diff --git a/src/main/java/de/ph87/kleinanzeigen/telegram/chat/ChatDto/ChatDto.java b/src/main/java/de/ph87/kleinanzeigen/telegram/chat/ChatDto.java similarity index 67% rename from src/main/java/de/ph87/kleinanzeigen/telegram/chat/ChatDto/ChatDto.java rename to src/main/java/de/ph87/kleinanzeigen/telegram/chat/ChatDto.java index 01884e9..3968837 100644 --- a/src/main/java/de/ph87/kleinanzeigen/telegram/chat/ChatDto/ChatDto.java +++ b/src/main/java/de/ph87/kleinanzeigen/telegram/chat/ChatDto.java @@ -1,6 +1,5 @@ -package de.ph87.kleinanzeigen.telegram.chat.ChatDto; +package de.ph87.kleinanzeigen.telegram.chat; -import de.ph87.kleinanzeigen.telegram.chat.Chat; import lombok.Data; @Data @@ -10,9 +9,12 @@ public class ChatDto { private final boolean enabled; + private final String name; + public ChatDto(final Chat chat) { this.id = chat.getId(); this.enabled = chat.isEnabled(); + this.name = chat.getName(); } } diff --git a/src/main/java/de/ph87/kleinanzeigen/telegram/chat/ChatService.java b/src/main/java/de/ph87/kleinanzeigen/telegram/chat/ChatService.java index eb337e2..8f343d4 100644 --- a/src/main/java/de/ph87/kleinanzeigen/telegram/chat/ChatService.java +++ b/src/main/java/de/ph87/kleinanzeigen/telegram/chat/ChatService.java @@ -1,7 +1,7 @@ package de.ph87.kleinanzeigen.telegram.chat; import de.ph87.kleinanzeigen.telegram.AccessDenied; -import de.ph87.kleinanzeigen.telegram.chat.ChatDto.ChatDto; +import de.ph87.kleinanzeigen.telegram.TelegramConfig; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -17,7 +17,7 @@ public class ChatService { private final ChatRepository chatRepository; - private final ChatConfig config; + private final TelegramConfig config; public List findAllEnabled() { return chatRepository.findAllByEnabledTrue().stream().filter(chat -> config.isOnWhitelist(chat.getId())).map(this::toDto).toList(); diff --git a/src/main/java/de/ph87/kleinanzeigen/telegram/chat/message/MessageDto.java b/src/main/java/de/ph87/kleinanzeigen/telegram/chat/message/MessageDto.java index 066a29a..3c5f649 100644 --- a/src/main/java/de/ph87/kleinanzeigen/telegram/chat/message/MessageDto.java +++ b/src/main/java/de/ph87/kleinanzeigen/telegram/chat/message/MessageDto.java @@ -1,7 +1,7 @@ package de.ph87.kleinanzeigen.telegram.chat.message; import de.ph87.kleinanzeigen.kleinanzeigen.offer.OfferDto; -import de.ph87.kleinanzeigen.telegram.chat.ChatDto.ChatDto; +import de.ph87.kleinanzeigen.telegram.chat.ChatDto; import jakarta.annotation.Nullable; import lombok.Data; import lombok.NonNull; diff --git a/src/main/java/de/ph87/kleinanzeigen/telegram/chat/message/MessageService.java b/src/main/java/de/ph87/kleinanzeigen/telegram/chat/message/MessageService.java index ec54e34..1ded0d4 100644 --- a/src/main/java/de/ph87/kleinanzeigen/telegram/chat/message/MessageService.java +++ b/src/main/java/de/ph87/kleinanzeigen/telegram/chat/message/MessageService.java @@ -5,7 +5,7 @@ import de.ph87.kleinanzeigen.kleinanzeigen.offer.OfferDto; import de.ph87.kleinanzeigen.kleinanzeigen.offer.OfferRepository; import de.ph87.kleinanzeigen.kleinanzeigen.offer.OfferService; import de.ph87.kleinanzeigen.telegram.chat.Chat; -import de.ph87.kleinanzeigen.telegram.chat.ChatDto.ChatDto; +import de.ph87.kleinanzeigen.telegram.chat.ChatDto; import de.ph87.kleinanzeigen.telegram.chat.ChatService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j;