Skip to content

Commit a14656f

Browse files
Пошло логирование
1 parent ae45597 commit a14656f

File tree

7 files changed

+126
-27
lines changed

7 files changed

+126
-27
lines changed

pom.xml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,16 @@
7070
<artifactId>tika-core</artifactId>
7171
<version>2.9.2</version>
7272
</dependency>
73+
<dependency>
74+
<groupId>org.apache.logging.log4j</groupId>
75+
<artifactId>log4j-core</artifactId>
76+
<version>2.20.0</version>
77+
</dependency>
78+
<dependency>
79+
<groupId>org.apache.logging.log4j</groupId>
80+
<artifactId>log4j-slf4j2-impl</artifactId>
81+
<version>2.20.0</version>
82+
</dependency>
7383
</dependencies>
7484

7585

src/main/java/ru/untitled_devs/core/client/Bot.java

Lines changed: 60 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,19 @@
11
package ru.untitled_devs.core.client;
22

33

4+
import org.apache.logging.log4j.Logger;
45
import org.telegram.telegrambots.bots.TelegramLongPollingBot;
6+
import org.telegram.telegrambots.meta.api.methods.AnswerCallbackQuery;
57
import org.telegram.telegrambots.meta.api.methods.groupadministration.BanChatMember;
68
import org.telegram.telegrambots.meta.api.methods.send.SendMessage;
79
import org.telegram.telegrambots.meta.api.methods.send.SendPhoto;
810
import org.telegram.telegrambots.meta.api.methods.updatingmessages.DeleteMessage;
11+
import org.telegram.telegrambots.meta.api.methods.updatingmessages.EditMessageReplyMarkup;
912
import org.telegram.telegrambots.meta.api.methods.updatingmessages.EditMessageText;
1013
import org.telegram.telegrambots.meta.api.objects.InputFile;
1114
import org.telegram.telegrambots.meta.api.objects.Update;
15+
import org.telegram.telegrambots.meta.api.objects.replykeyboard.InlineKeyboardMarkup;
16+
import org.telegram.telegrambots.meta.api.objects.replykeyboard.ReplyKeyboard;
1217
import org.telegram.telegrambots.meta.exceptions.TelegramApiException;
1318
import ru.untitled_devs.core.context.UpdateContext;
1419
import ru.untitled_devs.core.fsm.storage.StorageKey;
@@ -21,18 +26,21 @@
2126
import java.util.ArrayList;
2227
import java.util.List;
2328

29+
2430
import static ru.untitled_devs.core.utils.FileUtils.getImageFileNameWithExtension;
2531

2632
public class Bot extends TelegramLongPollingBot implements BotClient {
2733
private final String botUsername;
2834
private final List<Router> routers = new ArrayList<>();
2935
private final Storage storage;
3036
private final List<Middleware> middlewares = new ArrayList<>();
37+
private final Logger logger;
3138

32-
public Bot(String botToken, String botUsername, Storage storage) {
39+
public Bot(String botToken, String botUsername, Storage storage, Logger logger) {
3340
super(botToken);
3441
this.botUsername = botUsername;
3542
this.storage = storage;
43+
this.logger = logger;
3644
}
3745

3846
@Override
@@ -56,26 +64,21 @@ public void sendMessage(long chatId, String text) {
5664
try {
5765
execute(message);
5866
} catch (TelegramApiException e) {
59-
System.err.println(e.getMessage());
67+
this.logger.error(e.getMessage());
6068
}
6169
}
6270

63-
public void banChatMember(long chatId, long userId, int duration) {
64-
BanChatMember banChatMember = new BanChatMember();
65-
banChatMember.setChatId(chatId);
66-
banChatMember.setUserId(userId);
67-
68-
if (duration > 0) {
69-
long untilDate = Instant.now().getEpochSecond() + duration;
70-
banChatMember.setUntilDate((int) untilDate);
71-
}
71+
public void sendMessage(long chatId, String text, ReplyKeyboard replyKeyboard) {
72+
SendMessage message = new SendMessage();
73+
message.setChatId(chatId);
74+
message.setText(text);
75+
message.setReplyMarkup(replyKeyboard);
7276

7377
try {
74-
execute(banChatMember);
78+
execute(message);
7579
} catch (TelegramApiException e) {
76-
System.err.println(e.getMessage());
80+
this.logger.error(e.getMessage());
7781
}
78-
7982
}
8083

8184
@Override
@@ -88,11 +91,19 @@ public void editMessageText(long chatId, int messageId, String newText) {
8891
try {
8992
execute(messageText);
9093
} catch (TelegramApiException e) {
91-
throw new RuntimeException(e);
94+
this.logger.error(e.getMessage());
9295
}
9396

9497
}
9598

99+
@Override
100+
public void editMessageReplyMarkup(long chatId, int messageId, InlineKeyboardMarkup replyKeyboard) {
101+
EditMessageReplyMarkup editMessageReplyMarkup = new EditMessageReplyMarkup();
102+
editMessageReplyMarkup.setChatId(chatId);
103+
editMessageReplyMarkup.setMessageId(messageId);
104+
editMessageReplyMarkup.setReplyMarkup(replyKeyboard);
105+
}
106+
96107
@Override
97108
public void deleteMessage(long chatId, int messageId) {
98109
DeleteMessage deleteMessage = new DeleteMessage();
@@ -102,15 +113,10 @@ public void deleteMessage(long chatId, int messageId) {
102113
try {
103114
execute(deleteMessage);
104115
} catch (TelegramApiException e) {
105-
throw new RuntimeException(e);
116+
this.logger.error(e.getMessage());
106117
}
107118
}
108119

109-
@Override
110-
public void sendTypingAction(long chatId) {
111-
112-
}
113-
114120
@Override
115121
public void sendPhoto(long chatId, String caption, byte[] photo) {
116122
SendPhoto sendPhoto = new SendPhoto();
@@ -123,6 +129,27 @@ public void sendPhoto(long chatId, String caption, byte[] photo) {
123129

124130
@Override
125131
public void answerCallbackQuery(String callbackQueryId, String text, boolean showAlert) {
132+
AnswerCallbackQuery answerCallbackQuery = new AnswerCallbackQuery();
133+
answerCallbackQuery.setCallbackQueryId(callbackQueryId);
134+
answerCallbackQuery.setText(text);
135+
answerCallbackQuery.setShowAlert(showAlert);
136+
}
137+
138+
public void banChatMember(long chatId, long userId, int duration) {
139+
BanChatMember banChatMember = new BanChatMember();
140+
banChatMember.setChatId(chatId);
141+
banChatMember.setUserId(userId);
142+
143+
if (duration > 0) {
144+
long untilDate = Instant.now().getEpochSecond() + duration;
145+
banChatMember.setUntilDate((int) untilDate);
146+
}
147+
148+
try {
149+
execute(banChatMember);
150+
} catch (TelegramApiException e) {
151+
System.err.println(e.getMessage());
152+
}
126153

127154
}
128155

@@ -135,13 +162,23 @@ public void onUpdateReceived(Update update) {
135162
StorageKey key = new StorageKey(updateContext.getChatId(), updateContext.getUserId());
136163

137164
for (Middleware middleware : this.middlewares) {
138-
if (!middleware.preHandle(update)){
165+
try {
166+
if (!middleware.preHandle(update)) {
167+
logger.debug("Middleware prevented handling update: {}", update);
168+
return;
169+
}
170+
} catch (Exception e) {
171+
logger.error("Exception in middleware: ", e);
139172
return;
140173
}
141174
}
142175

143176
for (Router router : this.routers) {
144-
router.routeUpdate(update, this.storage.getOrCreateContext(key));
177+
try {
178+
router.routeUpdate(update, this.storage.getOrCreateContext(key));
179+
} catch (Exception e) {
180+
logger.error("Exception in router {} while handling update: {}", router.getClass().getSimpleName(), update, e);
181+
}
145182
}
146183
}
147184

src/main/java/ru/untitled_devs/core/client/BotClient.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
package ru.untitled_devs.core.client;
22

33
import org.telegram.telegrambots.meta.api.objects.Update;
4+
import org.telegram.telegrambots.meta.api.objects.replykeyboard.InlineKeyboardMarkup;
45

56
public interface BotClient {
67
void sendMessage(long chatId, String text);
78
void banChatMember(long chatId, long userId, int duration);
89
void editMessageText(long chatId, int messageId, String newText);
10+
void editMessageReplyMarkup(long chatId, int messageId, InlineKeyboardMarkup replyKeyboard);
911
void deleteMessage(long chatId, int messageId);
10-
void sendTypingAction(long chatId);
1112
void sendPhoto(long chatId, String caption, byte[] photo);
1213
void answerCallbackQuery(String callbackQueryId, String text, boolean showAlert);
1314
void onUpdateReceived(Update update);

src/main/java/ru/untitled_devs/core/client/TestClient.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
package ru.untitled_devs.core.client;
22

33
import org.telegram.telegrambots.meta.api.objects.Update;
4+
import org.telegram.telegrambots.meta.api.objects.replykeyboard.InlineKeyboardMarkup;
45

56
public class TestClient implements BotClient {
7+
68
@Override
79
public void sendMessage(long chatId, String text) {
810

@@ -19,12 +21,12 @@ public void editMessageText(long chatId, int messageId, String newText) {
1921
}
2022

2123
@Override
22-
public void deleteMessage(long chatId, int messageId) {
24+
public void editMessageReplyMarkup(long chatId, int messageId, InlineKeyboardMarkup replyKeyboard) {
2325

2426
}
2527

2628
@Override
27-
public void sendTypingAction(long chatId) {
29+
public void deleteMessage(long chatId, int messageId) {
2830

2931
}
3032

src/main/java/ru/untitled_devs/core/fsm/context/DataKey.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,3 +35,4 @@ public int hashCode() {
3535
return Objects.hash(name, type);
3636
}
3737
}
38+
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
package ru.untitled_devs.core.middlewares;
2+
3+
import org.apache.logging.log4j.Logger;
4+
import org.telegram.telegrambots.meta.api.objects.*;
5+
6+
public class LoggingMiddleware implements Middleware {
7+
8+
private final Logger logger;
9+
10+
public LoggingMiddleware(Logger logger) {
11+
this.logger = logger;
12+
}
13+
14+
@Override
15+
public boolean preHandle(Update update) {
16+
if (update.hasMessage()) {
17+
Message msg = update.getMessage();
18+
logger.info("[MESSAGE] From: {} (ID: {}), Chat: {}, Text: {}",
19+
msg.getFrom().getUserName(),
20+
msg.getFrom().getId(),
21+
msg.getChatId(),
22+
msg.getText());
23+
} else if (update.hasCallbackQuery()) {
24+
CallbackQuery cb = update.getCallbackQuery();
25+
logger.info("[CALLBACK] From: {} (ID: {}), Chat: {}, Data: {}",
26+
cb.getFrom().getUserName(),
27+
cb.getFrom().getId(),
28+
cb.getMessage().getChatId(),
29+
cb.getData());
30+
} else if (update.hasEditedMessage()) {
31+
Message msg = update.getEditedMessage();
32+
logger.info("[EDITED_MESSAGE] From: {} (ID: {}), Chat: {}, Text: {}",
33+
msg.getFrom().getUserName(),
34+
msg.getFrom().getId(),
35+
msg.getChatId(),
36+
msg.getText());
37+
}
38+
else {
39+
logger.info("[UNKNOWN] Update type: {}", update);
40+
}
41+
42+
return true;
43+
}
44+
}

src/test/java/ru/untitleddevs/core/client/BotTest.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package ru.untitleddevs.core.client;
22

3+
import org.apache.commons.logging.Log;
4+
import org.apache.logging.log4j.Logger;
35
import org.junit.jupiter.api.BeforeEach;
46
import org.junit.jupiter.api.Test;
57
import org.telegram.telegrambots.meta.api.methods.groupadministration.BanChatMember;
@@ -24,12 +26,14 @@ class BotTest {
2426
private Bot bot;
2527
private Storage storage;
2628
private Router router;
29+
private Logger logger;
2730

2831
@BeforeEach
2932
void setUp() {
3033
storage = mock(Storage.class);
3134
router = mock(Router.class);
32-
bot = new Bot("testToken", "testUsername", storage);
35+
logger = mock(Logger.class);
36+
bot = new Bot("testToken", "testUsername", storage, logger);
3337
bot.addRouter(router);
3438
}
3539

0 commit comments

Comments
 (0)