feature/task-38-roles
L_DelOff 2024-11-24 17:39:48 +03:00
parent d23910af9e
commit 68d0fb2ced
6 changed files with 50 additions and 35 deletions

View File

@ -0,0 +1,33 @@
package ru.ldeloff.servermonitorbot.init;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;
import org.telegram.telegrambots.meta.api.methods.send.SendMessage;
import ru.ldeloff.servermonitorbot.service.MessagingService;
import ru.ldeloff.servermonitorbot.service.UserService;
import ru.ldeloff.servermonitorbot.view.TelegramBotKeyboard;
@Slf4j
@Component
@RequiredArgsConstructor
@Order(3)
public class ReloadNotification implements ApplicationRunner {
private final TelegramBotKeyboard telegramBotKeyboard;
private final MessagingService messagingService;
private final UserService userService;
@Override
public void run(ApplicationArguments args) {
userService.getAllUsers().forEach(user -> {
SendMessage sendMessage = new SendMessage();
sendMessage.setChatId(user.getTelegramId());
sendMessage.setText("Бот перезапущен");
messagingService.send(telegramBotKeyboard.uiForm(sendMessage));
});
}
}

View File

@ -9,7 +9,7 @@ import ru.ldeloff.servermonitorbot.service.SshService;
@Component @Component
@RequiredArgsConstructor @RequiredArgsConstructor
@Order(3) @Order(4)
public class SshConnect implements ApplicationRunner { public class SshConnect implements ApplicationRunner {
final SshService sshService; final SshService sshService;

View File

@ -1,54 +1,33 @@
package ru.ldeloff.servermonitorbot.init; package ru.ldeloff.servermonitorbot.init;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner; import org.springframework.boot.ApplicationRunner;
import org.springframework.core.annotation.Order; import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.telegram.telegrambots.meta.TelegramBotsApi; import org.telegram.telegrambots.meta.TelegramBotsApi;
import org.telegram.telegrambots.meta.api.methods.send.SendMessage;
import org.telegram.telegrambots.meta.exceptions.TelegramApiException; import org.telegram.telegrambots.meta.exceptions.TelegramApiException;
import org.telegram.telegrambots.updatesreceivers.DefaultBotSession; import org.telegram.telegrambots.updatesreceivers.DefaultBotSession;
import ru.ldeloff.servermonitorbot.controller.TelegramBotController; import ru.ldeloff.servermonitorbot.controller.TelegramBotController;
import ru.ldeloff.servermonitorbot.model.user.User;
import ru.ldeloff.servermonitorbot.service.MessagingService;
import ru.ldeloff.servermonitorbot.service.UserService;
import ru.ldeloff.servermonitorbot.view.TelegramBotKeyboard;
@Slf4j @Slf4j
@Component @Component
@NoArgsConstructor @RequiredArgsConstructor
@Order(1) @Order(1)
public class StartBot implements ApplicationRunner { public class StartBot implements ApplicationRunner {
private TelegramBotController telegramBot; private final TelegramBotController telegramBot;
private TelegramBotKeyboard telegramBotKeyboard;
private UserService userService;
private MessagingService messagingService;
@Autowired
public StartBot(TelegramBotController telegramBot, TelegramBotKeyboard telegramBotKeyboard, UserService userService, MessagingService messagingService) {
this.telegramBot = telegramBot;
this.telegramBotKeyboard = telegramBotKeyboard;
this.userService = userService;
}
@Override @Override
public void run(ApplicationArguments args) { public void run(ApplicationArguments args) {
try { try {
TelegramBotsApi botsApi = new TelegramBotsApi(DefaultBotSession.class); TelegramBotsApi botsApi = new TelegramBotsApi(DefaultBotSession.class);
botsApi.registerBot(telegramBot); botsApi.registerBot(telegramBot);
userService.getAllUsers().forEach(this::sendInitMessage);
log.info("Бот запущен"); log.info("Бот запущен");
} catch (TelegramApiException e) { } catch (TelegramApiException e) {
log.error(e.getMessage()); log.error(e.getMessage());
} }
} }
private void sendInitMessage(User user) {
SendMessage answer = new SendMessage();
answer.setChatId(user.getTelegramId());
answer.setText("Бот перезапущен");
messagingService.send(telegramBotKeyboard.uiForm(answer));
}
} }

View File

@ -3,6 +3,8 @@ package ru.ldeloff.servermonitorbot.service;
import org.telegram.telegrambots.meta.api.methods.send.SendMessage; import org.telegram.telegrambots.meta.api.methods.send.SendMessage;
public interface MessagingService { public interface MessagingService {
void sendMessageToAll(String message);
void sendMessageToAdmins(String message); void sendMessageToAdmins(String message);
void send(SendMessage message); void send(SendMessage message);

View File

@ -17,6 +17,16 @@ public class MessagingServiceImpl implements MessagingService {
private final UserService userService; private final UserService userService;
private final ApplicationContext applicationContext; private final ApplicationContext applicationContext;
@Override
public void sendMessageToAll(String message) {
userService.getAllUsers().forEach(user -> {
SendMessage sendMessage = new SendMessage();
sendMessage.setChatId(user.getTelegramId());
sendMessage.setText(message);
send(sendMessage);
});
}
@Override @Override
public void sendMessageToAdmins(String message) { public void sendMessageToAdmins(String message) {
userService.getAllAdmins().forEach(user -> { userService.getAllAdmins().forEach(user -> {

View File

@ -1,15 +1,6 @@
spring: spring:
application: application:
name: ServerMonitorBot name: ServerMonitorBot
datasource:
url: jdbc:postgresql://db:5432/servermonitorbot
username: servermonitorbot
password: servermonitorbot
jpa:
hibernate:
ddl-auto: none
flyway:
locations: classpath:db/migration
bot: bot:
name: "ServerMonitorBot" name: "ServerMonitorBot"
token: "token" token: "token"
@ -17,7 +8,7 @@ bot:
- telegramId: 123456789 - telegramId: 123456789
role: admin role: admin
ssh: ssh:
checkConnectionDelay: 60000 checkConnectionDelay: 300000
timeout: 5000 timeout: 5000
servers: servers:
- -