Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 42 additions & 3 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -15,20 +15,30 @@

<telegrambots.version>6.9.7.1</telegrambots.version>
<discord4j.version>3.2.9</discord4j.version>
<junit-jupiter.version>6.0.0</junit-jupiter.version>

<commons-lang3.version>3.19.0</commons-lang3.version>
<reactor-netty-http.version>1.2.11</reactor-netty-http.version>
<commons-codec.version>1.19.0</commons-codec.version>
<protobuf-java.version>4.33.0</protobuf-java.version>
</properties>

<dependencies>
<!-- FIXME Тут есть уязвимость в транзитивной библиотеке, надо поправить (доп. задание) -->
<dependency>
<groupId>org.telegram</groupId>
<artifactId>telegrambots</artifactId>
</dependency>

<!-- FIXME В некоторых транзитивных библиотеках есть уязвимость, надо поправить (доп. задание) -->
<dependency>
<groupId>com.discord4j</groupId>
<artifactId>discord4j-core</artifactId>
</dependency>

<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
</dependency>

</dependencies>

<dependencyManagement>
Expand All @@ -45,7 +55,36 @@
<version>${discord4j.version}</version>
</dependency>

<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>${junit-jupiter.version}</version>
<scope>test</scope>
</dependency>

<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>${commons-lang3.version}</version>
</dependency>

<dependency>
<groupId>io.projectreactor.netty</groupId>
<artifactId>reactor-netty-http</artifactId>
<version>${reactor-netty-http.version}</version>
</dependency>

<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>${commons-codec.version}</version>
</dependency>

<dependency>
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-java</artifactId>
<version>${protobuf-java.version}</version>
</dependency>
</dependencies>
</dependencyManagement>

</project>
7 changes: 4 additions & 3 deletions src/main/java/ru/urfu/Application.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,19 +6,20 @@
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();

/*
тут может быть сколько угодно чат платформ
и все должны работать одинаково
*/
}

}
11 changes: 9 additions & 2 deletions src/main/java/ru/urfu/DiscordBot.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}

/**
Expand All @@ -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 бот запущен");
Expand Down
13 changes: 13 additions & 0 deletions src/main/java/ru/urfu/Handler.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package ru.urfu;

/**
* Обработчик сообщений от пользователя
*/
public class Handler {
/**
* Обработать сообщение от пользователя
*/
public String handle(String messageFromUser) {
return "Ваше сообщение: '" + messageFromUser + "'";
}
}
11 changes: 9 additions & 2 deletions src/main/java/ru/urfu/TelegramBot.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}

/**
Expand All @@ -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);
}
}
}

Expand Down
34 changes: 34 additions & 0 deletions src/test/java/HandlerTest.java
Original file line number Diff line number Diff line change
@@ -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(""));
}
}