diff --git a/pom.xml b/pom.xml
index aa439a9..a919c35 100644
--- a/pom.xml
+++ b/pom.xml
@@ -10,6 +10,7 @@
3.0.9
+ alerting-tg-bot
alerting-tg-bot
1.0.0
@@ -23,6 +24,7 @@
8023
${server.port} ${management.port}
2.0.4
+ 9.0.0
@@ -80,8 +82,18 @@
org.telegram
- telegrambots-spring-boot-starter
- 6.9.7.1
+ telegrambots-springboot-longpolling-starter
+ ${org.telegram.telegrambots.version}
+
+
+ org.telegram
+ telegrambots-client
+ ${org.telegram.telegrambots.version}
+
+
+ org.telegram
+ telegrambots-meta
+ ${org.telegram.telegrambots.version}
javax.ws.rs
diff --git a/src/main/java/dev/vality/alerting/tg/bot/config/AlertBotConfig.java b/src/main/java/dev/vality/alerting/tg/bot/config/AlertBotConfig.java
index 7508ab8..4927a4b 100644
--- a/src/main/java/dev/vality/alerting/tg/bot/config/AlertBotConfig.java
+++ b/src/main/java/dev/vality/alerting/tg/bot/config/AlertBotConfig.java
@@ -1,22 +1,18 @@
package dev.vality.alerting.tg.bot.config;
-import dev.vality.alerting.tg.bot.service.AlertBot;
+import dev.vality.alerting.tg.bot.config.properties.AlertBotProperties;
import lombok.RequiredArgsConstructor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
-import org.telegram.telegrambots.meta.TelegramBotsApi;
-import org.telegram.telegrambots.updatesreceivers.DefaultBotSession;
+import org.telegram.telegrambots.client.okhttp.OkHttpTelegramClient;
+import org.telegram.telegrambots.meta.generics.TelegramClient;
@Configuration
@RequiredArgsConstructor
public class AlertBotConfig {
- private final AlertBot alertBot;
-
@Bean
- public TelegramBotsApi telegramBotsApi() throws Exception {
- TelegramBotsApi api = new TelegramBotsApi(DefaultBotSession.class);
- api.registerBot(alertBot);
- return api;
+ public TelegramClient telegramClient(AlertBotProperties properties) {
+ return new OkHttpTelegramClient(properties.getToken());
}
}
diff --git a/src/main/java/dev/vality/alerting/tg/bot/service/AlertBot.java b/src/main/java/dev/vality/alerting/tg/bot/service/AlertBot.java
index 912ab21..3c2ed94 100644
--- a/src/main/java/dev/vality/alerting/tg/bot/service/AlertBot.java
+++ b/src/main/java/dev/vality/alerting/tg/bot/service/AlertBot.java
@@ -6,12 +6,14 @@
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.stereotype.Service;
-import org.telegram.telegrambots.bots.TelegramLongPollingBot;
+import org.telegram.telegrambots.longpolling.starter.SpringLongPollingBot;
+import org.telegram.telegrambots.longpolling.util.LongPollingSingleThreadUpdateConsumer;
import org.telegram.telegrambots.meta.api.methods.forum.CreateForumTopic;
import org.telegram.telegrambots.meta.api.methods.send.SendMessage;
-import org.telegram.telegrambots.meta.api.objects.Message;
import org.telegram.telegrambots.meta.api.objects.Update;
+import org.telegram.telegrambots.meta.api.objects.message.Message;
import org.telegram.telegrambots.meta.exceptions.TelegramApiException;
+import org.telegram.telegrambots.meta.generics.TelegramClient;
import java.util.*;
@@ -19,24 +21,25 @@
@Service
@RequiredArgsConstructor
@EnableScheduling
-public class AlertBot extends TelegramLongPollingBot {
+public class AlertBot implements SpringLongPollingBot, LongPollingSingleThreadUpdateConsumer {
private final AlertBotProperties properties;
+ private final TelegramClient telegramClient;
private static final Map> activeTopics = new HashMap<>();
private static final Set waitingForTopicName = new HashSet<>();
@Override
- public String getBotUsername() {
- return properties.getName();
+ public String getBotToken() {
+ return properties.getToken();
}
@Override
- public String getBotToken() {
- return properties.getToken();
+ public LongPollingSingleThreadUpdateConsumer getUpdatesConsumer() {
+ return this;
}
@Override
- public void onUpdateReceived(Update update) {
+ public void consume(Update update) {
if (update.hasMessage() && update.getMessage().hasText()) {
log.debug("Получено сообщение: message={}, chatId={}, threadId={}, user=@{}, text='{}'",
@@ -98,7 +101,7 @@ private void createTopic(Long chatId, String topicName) {
.name(topicName)
.build();
- Integer messageThreadId = execute(createForumTopic).getMessageThreadId();
+ Integer messageThreadId = telegramClient.execute(createForumTopic).getMessageThreadId();
// activeTopics.put(chatId, String.valueOf(messageThreadId));
// Добавляем топик в список, если у чата уже есть созданные топики
@@ -231,7 +234,7 @@ private void sendResponse(Long chatId, Integer threadId, String messageText, Str
.build();
try {
- execute(message);
+ telegramClient.execute(message);
} catch (TelegramApiException e) {
log.error("Ошибка при отправке сообщения", e);
}
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 47332f4..95e6557 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -31,6 +31,14 @@ spring:
enabled: always
main:
allow-bean-definition-overriding: true
+ cloud:
+ vault:
+ kv:
+ enabled: true
+ uri: https://vault.vality.dev:443
+ authentication: TOKEN
+ scheme: http
+ token: "123456"
info:
version: '@project.version@'
@@ -46,3 +54,7 @@ bot:
altpay-conversion: ${topicAltpayConversion}
failed-machines: ${topicFailedMachines}
pending-payments: ${topicPendingPayments}
+
+alertmanager:
+ webhook:
+ url: http://localhost:8082/alertmanager/webhook
diff --git a/src/test/java/dev/vality/alerting/tg/bot/WebhookControllerTest.java b/src/test/java/dev/vality/alerting/tg/bot/WebhookControllerTest.java
index 009f628..7dddbad 100644
--- a/src/test/java/dev/vality/alerting/tg/bot/WebhookControllerTest.java
+++ b/src/test/java/dev/vality/alerting/tg/bot/WebhookControllerTest.java
@@ -1,7 +1,6 @@
package dev.vality.alerting.tg.bot;
import com.fasterxml.jackson.databind.ObjectMapper;
-import dev.vality.alerting.tg.bot.config.AlertBotConfig;
import dev.vality.alerting.tg.bot.config.properties.AlertmanagerWebhookProperties;
import dev.vality.alerting.tg.bot.controller.WebhookController;
import dev.vality.alerting.tg.bot.model.Webhook;
@@ -14,6 +13,8 @@
import org.springframework.mock.web.MockHttpServletRequest;
import org.springframework.test.context.TestPropertySource;
import org.springframework.test.context.bean.override.mockito.MockitoBean;
+import org.telegram.telegrambots.longpolling.starter.TelegramBotInitializer;
+import org.telegram.telegrambots.meta.generics.TelegramClient;
import java.nio.charset.StandardCharsets;
@@ -42,7 +43,10 @@ public class WebhookControllerTest {
AlertBot alertBot;
@MockitoBean
- AlertBotConfig alertBotConfig;
+ TelegramClient telegramClient;
+
+ @MockitoBean
+ TelegramBotInitializer telegramBotInitializer;
String webhookJson = """
{