From 56825a5c3e570298677705d4e06914db8449fd2e Mon Sep 17 00:00:00 2001 From: brulijam Date: Tue, 2 Jul 2024 18:02:02 +0200 Subject: [PATCH] did a lot of stuff --- .../controller/TelegramBotController.java | 19 +++++++-- .../brulijam/minecraftapi/model/Tutel.java | 3 ++ .../minecraftapi/porter/exporter.java | 4 ++ .../minecraftapi/porter/importer.java | 4 ++ .../minecraftapi/service/TelegramService.java | 12 +++--- .../minecraftapi/service/TutelService.java | 7 +++- .../minecraftapi/telegrambot/TelegramBot.java | 39 ++++++++++++------- .../telegrambot/TelegramFormatter.java | 15 +++++++ 8 files changed, 79 insertions(+), 24 deletions(-) create mode 100644 src/main/java/com/brulijam/minecraftapi/porter/exporter.java create mode 100644 src/main/java/com/brulijam/minecraftapi/porter/importer.java create mode 100644 src/main/java/com/brulijam/minecraftapi/telegrambot/TelegramFormatter.java diff --git a/src/main/java/com/brulijam/minecraftapi/controller/TelegramBotController.java b/src/main/java/com/brulijam/minecraftapi/controller/TelegramBotController.java index 95e78a2..b02b062 100644 --- a/src/main/java/com/brulijam/minecraftapi/controller/TelegramBotController.java +++ b/src/main/java/com/brulijam/minecraftapi/controller/TelegramBotController.java @@ -19,14 +19,27 @@ public class TelegramBotController { private final TelegramService telegramService; private final TelegramBot telegramBot; - @Operation(summary = "sends a message") - @PostMapping(value = "/sendMessage/{userId}", produces = "application/json") - public void sendMessage(@PathVariable(name = "userId") long userId, + @Operation(summary = "sends a message debug") + @PostMapping(value = "/debugSendMessage/{userId}", produces = "application/json") + public void debugSendMessage(@PathVariable(name = "userId") long userId, @Parameter(name = "message", description = "message to send", example = "Some Message :)") @RequestBody String message) { log.info("{}", userId); telegramBot.sendMessage(userId, message); } + @Operation(summary = "sends a message") + @PostMapping(value = "/sendMessage/{userId}", produces = "application/json") + public void sendMessage(@PathVariable(name = "userId") long userId, + @Parameter(name = "message", description = "message to send", example = "Some Message :)") @RequestBody String message, + @Parameter(name = "accessToken", description = "Required token for sending messages to this user", example = "abcde12345") @RequestParam String accessToken) { + log.info("{}", userId); + if (accessToken.equals(telegramService.getTokenByUserId(userId))) { + telegramBot.sendMessage(userId, message); + } + } + + + @Operation(summary = "For debugging") @PostMapping(value = "/admin", produces = "application/json") public String admin() { diff --git a/src/main/java/com/brulijam/minecraftapi/model/Tutel.java b/src/main/java/com/brulijam/minecraftapi/model/Tutel.java index c50215a..dd7037f 100755 --- a/src/main/java/com/brulijam/minecraftapi/model/Tutel.java +++ b/src/main/java/com/brulijam/minecraftapi/model/Tutel.java @@ -22,6 +22,7 @@ public class Tutel { private final long telegramUserId; private final String label; private int fuelLevel; + private String task; private JSONObject inventory; @@ -33,5 +34,7 @@ public class Tutel { this.label = label; this.id = Math.abs(this.hashCode()); this.telegramUserId = telegramUserId; + this.fuelLevel = 0; + this.task = ""; } } diff --git a/src/main/java/com/brulijam/minecraftapi/porter/exporter.java b/src/main/java/com/brulijam/minecraftapi/porter/exporter.java new file mode 100644 index 0000000..ee4db70 --- /dev/null +++ b/src/main/java/com/brulijam/minecraftapi/porter/exporter.java @@ -0,0 +1,4 @@ +package com.brulijam.minecraftapi.porter; + +public class exporter { +} diff --git a/src/main/java/com/brulijam/minecraftapi/porter/importer.java b/src/main/java/com/brulijam/minecraftapi/porter/importer.java new file mode 100644 index 0000000..3e667c3 --- /dev/null +++ b/src/main/java/com/brulijam/minecraftapi/porter/importer.java @@ -0,0 +1,4 @@ +package com.brulijam.minecraftapi.porter; + +public class importer { +} diff --git a/src/main/java/com/brulijam/minecraftapi/service/TelegramService.java b/src/main/java/com/brulijam/minecraftapi/service/TelegramService.java index 9033e7c..8d87c7f 100644 --- a/src/main/java/com/brulijam/minecraftapi/service/TelegramService.java +++ b/src/main/java/com/brulijam/minecraftapi/service/TelegramService.java @@ -2,6 +2,7 @@ package com.brulijam.minecraftapi.service; import lombok.Getter; import lombok.RequiredArgsConstructor; +import org.apache.commons.lang3.RandomStringUtils; import org.springframework.stereotype.Component; import org.telegram.telegrambots.meta.api.objects.User; @@ -14,17 +15,18 @@ public class TelegramService { private final List telegramUsers = new ArrayList<>(); // Maps userId to token - private final Map tokens = new HashMap<>(); + private final Map accessTokens = new HashMap<>(); public void addUserToList(User user) { telegramUsers.add(user); - String randomUUID = UUID.randomUUID().toString().replaceAll("_", ""); - tokens.put(user.getId(), randomUUID); +// String randomString = UUID.randomUUID().toString().replaceAll("_", "").replace("-", ""); + String randomString = RandomStringUtils.randomAlphanumeric(32); + accessTokens.put(user.getId(), randomString); } public String getTokenByUserId(Long userId) { - return tokens.get(userId); + return accessTokens.get(userId); } public User getUserByUserId(long userId) { @@ -42,6 +44,6 @@ public class TelegramService { } public String getTokenByUserId(long userId) { - return tokens.get(userId); + return accessTokens.get(userId); } } diff --git a/src/main/java/com/brulijam/minecraftapi/service/TutelService.java b/src/main/java/com/brulijam/minecraftapi/service/TutelService.java index a2cbbf8..602e25d 100644 --- a/src/main/java/com/brulijam/minecraftapi/service/TutelService.java +++ b/src/main/java/com/brulijam/minecraftapi/service/TutelService.java @@ -1,6 +1,7 @@ package com.brulijam.minecraftapi.service; import com.brulijam.minecraftapi.model.Tutel; +import com.brulijam.minecraftapi.telegrambot.TelegramBot; import lombok.Getter; import lombok.RequiredArgsConstructor; import org.json.JSONArray; @@ -16,9 +17,13 @@ import java.util.List; public class TutelService { private final List tutelList = new ArrayList<>(); + private final TelegramBot telegramBot; // cycle :( public void addToList(Tutel tutel) { - tutelList.add(tutel); + if (!tutelList.contains(tutel)) { + tutelList.add(tutel); + telegramBot.sendMessage(tutel.getTelegramUserId(), tutel.getLabel().replace("-", "\\-")); + } } public void removeById(long id) { diff --git a/src/main/java/com/brulijam/minecraftapi/telegrambot/TelegramBot.java b/src/main/java/com/brulijam/minecraftapi/telegrambot/TelegramBot.java index 411ba77..a671a27 100644 --- a/src/main/java/com/brulijam/minecraftapi/telegrambot/TelegramBot.java +++ b/src/main/java/com/brulijam/minecraftapi/telegrambot/TelegramBot.java @@ -9,6 +9,7 @@ import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import org.telegram.telegrambots.bots.TelegramLongPollingBot; 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.User; import org.telegram.telegrambots.meta.exceptions.TelegramApiException; @@ -18,9 +19,11 @@ import java.util.List; /* Commands help - Displays help -list_tutels - Lists all registered Tutels -get_tutel - Get Tutel by label -stop_tutel - Stop Tutel by label +listtutels - Lists all registered Tutels +gettutel - Get Tutel by label +stoptutel - Stop Tutel by label +listchests - Get all placed Chests +getchest - Get Chest by ID */ @Component @@ -30,6 +33,7 @@ public class TelegramBot extends TelegramLongPollingBot { private final TutelService tutelService; private final TelegramService telegramService; + private final TelegramFormatter telegramFormatter; @Value("${bot.name}") private String botUsername; @@ -55,29 +59,33 @@ public class TelegramBot extends TelegramLongPollingBot { Long userId = fromUser.getId(); if (receivedMessage.equals("/start")) { - //check if user is already known - if (telegramService.getTokens().containsKey(userId)) { - sendMessage(userId, "You are already registered."); - } else { + if (!(telegramService.getAccessTokens().containsKey(userId))) { telegramService.addUserToList(fromUser); - String userToken = telegramService.getTokenByUserId(userId).replace("-", ""); - sendMessage(userId, "Your Telegram userId is " + userId + " and your access token is " + userToken); } + String accessToken = telegramService.getTokenByUserId(userId); + sendMessage(userId, "Your Telegram UserID is `" + userId + "` and your accessToken is ||" + accessToken + "||"); } else if (receivedMessage.equals("/help")) { - sendMessage(userId, "TODO List of commands"); + sendMessage(userId, "/start \\- Description\n/help -\\ This help\n/list_tutels \\- Description\n/get_tutel_by_label \\- Description\n/placeholder \\- Description\n/placeholder \\- Description\n"); - } else if (receivedMessage.equals("/list_tutels")) { + } else if (receivedMessage.equals("/listtutels")) { List tutels = tutelService.getTutelsForTelegramUser(userId); - sendMessage(userId, tutelService.tutelsToJson(tutels).toString()); + tutels.forEach(tutel -> sendMessage(userId, telegramFormatter.formatTutel(tutel))); - } else if (receivedMessage.startsWith("/get_tutel_by_label ")) { - String label = receivedMessage.substring(receivedMessage.indexOf(" ")); +// sendMessage(userId, tutelService.tutelsToJson(tutels).toString()); + + } else if (receivedMessage.startsWith("/gettutel ")) { + String label = receivedMessage.substring(receivedMessage.indexOf(" ")+1); + System.out.println(label); Tutel tutel = tutelService.getTutelList().stream() .filter(Tutel -> Tutel.getLabel().equals(label)) .findFirst() .orElse(null); - + if (tutel != null) { + sendMessage(userId, telegramFormatter.formatTutel(tutel)); + } else { + sendMessage(userId, "Tutel not found"); + } } else { sendMessage(userId, "I have no Idea what you want lol"); } @@ -96,6 +104,7 @@ public class TelegramBot extends TelegramLongPollingBot { public void sendMessage(Long chatId, String messageToSend) { SendMessage sendMessage = SendMessage.builder() .chatId(chatId.toString()) + .parseMode("MarkdownV2") .text(messageToSend) .build(); diff --git a/src/main/java/com/brulijam/minecraftapi/telegrambot/TelegramFormatter.java b/src/main/java/com/brulijam/minecraftapi/telegrambot/TelegramFormatter.java new file mode 100644 index 0000000..605bbc1 --- /dev/null +++ b/src/main/java/com/brulijam/minecraftapi/telegrambot/TelegramFormatter.java @@ -0,0 +1,15 @@ +package com.brulijam.minecraftapi.telegrambot; + +import com.brulijam.minecraftapi.model.Tutel; +import org.springframework.stereotype.Component; + +@Component +public class TelegramFormatter { + + public String formatTutel(Tutel tutel) { + return "__`" + tutel.getLabel().replace("-", "\\-") + "`__" + "\n" + + "ID: `" + tutel.getId() + "`\n" + + "Fuel: " + tutel.getFuelLevel() + "\n" + + "Task: " + tutel.getTask() + "\n"; + } +}