diff --git a/pom.xml b/pom.xml index 570a9b0..61de144 100644 --- a/pom.xml +++ b/pom.xml @@ -15,20 +15,30 @@ 6.9.7.1 3.2.9 + 6.0.0 + + 3.19.0 + 1.2.11 + 1.19.0 + 4.33.0 - org.telegram telegrambots - com.discord4j discord4j-core + + + org.junit.jupiter + junit-jupiter + + @@ -45,7 +55,36 @@ ${discord4j.version} + + org.junit.jupiter + junit-jupiter + ${junit-jupiter.version} + test + + + + org.apache.commons + commons-lang3 + ${commons-lang3.version} + + + + io.projectreactor.netty + reactor-netty-http + ${reactor-netty-http.version} + + + + commons-codec + commons-codec + ${commons-codec.version} + + + + com.google.protobuf + protobuf-java + ${protobuf-java.version} + - \ No newline at end of file diff --git a/src/main/java/ru/urfu/Application.java b/src/main/java/ru/urfu/Application.java index 0e9049b..17398e4 100644 --- a/src/main/java/ru/urfu/Application.java +++ b/src/main/java/ru/urfu/Application.java @@ -6,13 +6,15 @@ public class Application { public static void main(String[] args) { + Handler handler = new Handler(); + String telegramBotName = System.getenv("telegram_botName"); String telegramToken = System.getenv("telegram_token"); - new TelegramBot(telegramBotName, telegramToken) + new TelegramBot(telegramBotName, telegramToken, handler) .start(); String discordToken = System.getenv("discord_token"); - new DiscordBot(discordToken) + new DiscordBot(discordToken, handler) .start(); /* @@ -20,5 +22,4 @@ public static void main(String[] args) { и все должны работать одинаково */ } - } diff --git a/src/main/java/ru/urfu/DiscordBot.java b/src/main/java/ru/urfu/DiscordBot.java index b7eccf5..6a1dd9a 100644 --- a/src/main/java/ru/urfu/DiscordBot.java +++ b/src/main/java/ru/urfu/DiscordBot.java @@ -16,8 +16,11 @@ public class DiscordBot { private GatewayDiscordClient client; - public DiscordBot(String token) { + private final Handler handler; + + public DiscordBot(String token, Handler handler) { this.token = token; + this.handler = handler; } /** @@ -40,7 +43,11 @@ public void start() { if (isUser) { String chatId = eventMessage.getChannelId().asString(); String messageFromUser = eventMessage.getContent(); - // TODO обработайте сообщение от пользователя (messageFromUser) + String reply = handler.handle(messageFromUser); + + if (reply != null && !reply.isEmpty()) { + sendMessage(chatId, reply); + } } }); System.out.println("Discord бот запущен"); diff --git a/src/main/java/ru/urfu/Handler.java b/src/main/java/ru/urfu/Handler.java new file mode 100644 index 0000000..b0b191a --- /dev/null +++ b/src/main/java/ru/urfu/Handler.java @@ -0,0 +1,13 @@ +package ru.urfu; + +/** + * Обработчик сообщений от пользователя + */ +public class Handler { + /** + * Обработать сообщение от пользователя + */ + public String handle(String messageFromUser) { + return "Ваше сообщение: '" + messageFromUser + "'"; + } +} diff --git a/src/main/java/ru/urfu/TelegramBot.java b/src/main/java/ru/urfu/TelegramBot.java index 95f0403..76df107 100644 --- a/src/main/java/ru/urfu/TelegramBot.java +++ b/src/main/java/ru/urfu/TelegramBot.java @@ -15,9 +15,12 @@ public class TelegramBot extends TelegramLongPollingBot { private final String telegramBotName; - public TelegramBot(String telegramBotName, String token) { + private final Handler handler; + + public TelegramBot(String telegramBotName, String token, Handler handler) { super(token); this.telegramBotName = telegramBotName; + this.handler = handler; } /** @@ -39,7 +42,11 @@ public void onUpdateReceived(Update update) { Message updateMessage = update.getMessage(); Long chatId = updateMessage.getChatId(); String messageFromUser = updateMessage.getText(); - // TODO обработайте сообщение от пользователя (messageFromUser) + String reply = handler.handle(messageFromUser); + + if (reply != null && !reply.isEmpty()) { + sendMessage(chatId.toString(), reply); + } } } diff --git a/src/test/java/HandlerTest.java b/src/test/java/HandlerTest.java new file mode 100644 index 0000000..7d127a1 --- /dev/null +++ b/src/test/java/HandlerTest.java @@ -0,0 +1,34 @@ +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import ru.urfu.Handler; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +/** + * Тесты для класса MarkHandler + */ +class HandlerTest { + private Handler handler; + + @BeforeEach + void setUp() { + handler = new Handler(); + } + /** + * Тестирует метод handle класса MarkHandler на корректность возвращаемого ответа + * в случае, когда входящее сообщение не пустое. + */ + @Test + void handleReturnsExpectedResponseWithInputMessage() { + assertEquals("Ваше сообщение: 'привет'", handler.handle("привет")); + } + + /** + * Тестирует метод handle класса MarkHandler на корректность возвращаемого ответа + * в случае, когда входящее сообщение пустое. + */ + @Test + void handleReturnsExpectedResponseWithoutInputMessage() { + assertEquals("Ваше сообщение: ''", handler.handle("")); + } +} \ No newline at end of file