From f61e9205ec34881ca6b4573763cc6c8f8c2edd1b Mon Sep 17 00:00:00 2001 From: brulijam Date: Sat, 29 Jun 2024 17:48:07 +0200 Subject: [PATCH] did a lot of stuff --- .mvn/wrapper/maven-wrapper.properties | 0 mvnw.cmd | 0 .../controller/TelegramBotController.java | 10 ++++ .../controller/TutelController.java | 2 +- .../brulijam/minecraftapi/model/Tutel.java | 8 +--- .../minecraftapi/service/TelegramService.java | 5 ++ .../minecraftapi/service/TutelService.java | 29 ++++++++++++ .../minecraftapi/telegrambot/TelegramBot.java | 46 +++++++++++++++---- src/main/resources/application.properties | 1 - src/main/resources/application.yaml | 15 ++++++ 10 files changed, 98 insertions(+), 18 deletions(-) mode change 100644 => 100755 .mvn/wrapper/maven-wrapper.properties mode change 100644 => 100755 mvnw.cmd delete mode 100644 src/main/resources/application.properties create mode 100755 src/main/resources/application.yaml diff --git a/.mvn/wrapper/maven-wrapper.properties b/.mvn/wrapper/maven-wrapper.properties old mode 100644 new mode 100755 diff --git a/mvnw.cmd b/mvnw.cmd old mode 100644 new mode 100755 diff --git a/src/main/java/com/brulijam/minecraftapi/controller/TelegramBotController.java b/src/main/java/com/brulijam/minecraftapi/controller/TelegramBotController.java index 9f048a6..95e78a2 100644 --- a/src/main/java/com/brulijam/minecraftapi/controller/TelegramBotController.java +++ b/src/main/java/com/brulijam/minecraftapi/controller/TelegramBotController.java @@ -1,5 +1,6 @@ package com.brulijam.minecraftapi.controller; +import com.brulijam.minecraftapi.service.TelegramService; import com.brulijam.minecraftapi.telegrambot.TelegramBot; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; @@ -15,6 +16,7 @@ import org.springframework.web.bind.annotation.*; @RequiredArgsConstructor public class TelegramBotController { + private final TelegramService telegramService; private final TelegramBot telegramBot; @Operation(summary = "sends a message") @@ -24,4 +26,12 @@ public class TelegramBotController { log.info("{}", userId); telegramBot.sendMessage(userId, message); } + + @Operation(summary = "For debugging") + @PostMapping(value = "/admin", produces = "application/json") + public String admin() { + return telegramService.getTelegramUsers().toString(); + } + + } diff --git a/src/main/java/com/brulijam/minecraftapi/controller/TutelController.java b/src/main/java/com/brulijam/minecraftapi/controller/TutelController.java index 7e06df5..46afa09 100755 --- a/src/main/java/com/brulijam/minecraftapi/controller/TutelController.java +++ b/src/main/java/com/brulijam/minecraftapi/controller/TutelController.java @@ -31,7 +31,7 @@ public class TutelController { @Operation(summary = "adds a tutel") @PostMapping(value = "/add") public Tutel addTutel(@Parameter(name = "label", description = "label of the tutel") @RequestParam String label, - @Parameter(name = "telegramUserId", description = "Telegram ID of the user the Turtle belongs to") @RequestParam String telegramUserId) { + @Parameter(name = "telegramUserId", description = "Telegram ID of the user the Turtle belongs to") @RequestParam long telegramUserId) { Tutel tutel = new Tutel(label, telegramUserId); tutelService.addToList(tutel); return tutel; diff --git a/src/main/java/com/brulijam/minecraftapi/model/Tutel.java b/src/main/java/com/brulijam/minecraftapi/model/Tutel.java index b914069..c50215a 100755 --- a/src/main/java/com/brulijam/minecraftapi/model/Tutel.java +++ b/src/main/java/com/brulijam/minecraftapi/model/Tutel.java @@ -19,13 +19,13 @@ import java.util.Objects; public class Tutel { private final long id; - private final String telegramUserId; + private final long telegramUserId; private final String label; private int fuelLevel; private JSONObject inventory; - public Tutel(String label, String telegramUserId) { + public Tutel(String label, long telegramUserId) { if (label.endsWith("=")) { label = label.substring(0, label.length() - 1); } @@ -34,8 +34,4 @@ public class Tutel { this.id = Math.abs(this.hashCode()); this.telegramUserId = telegramUserId; } - - - - } diff --git a/src/main/java/com/brulijam/minecraftapi/service/TelegramService.java b/src/main/java/com/brulijam/minecraftapi/service/TelegramService.java index 0658d2b..9033e7c 100644 --- a/src/main/java/com/brulijam/minecraftapi/service/TelegramService.java +++ b/src/main/java/com/brulijam/minecraftapi/service/TelegramService.java @@ -1,5 +1,6 @@ package com.brulijam.minecraftapi.service; +import lombok.Getter; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Component; import org.telegram.telegrambots.meta.api.objects.User; @@ -8,6 +9,7 @@ import java.util.*; @Component @RequiredArgsConstructor +@Getter public class TelegramService { private final List telegramUsers = new ArrayList<>(); @@ -19,7 +21,10 @@ public class TelegramService { String randomUUID = UUID.randomUUID().toString().replaceAll("_", ""); tokens.put(user.getId(), randomUUID); + } + public String getTokenByUserId(Long userId) { + return tokens.get(userId); } public User getUserByUserId(long userId) { diff --git a/src/main/java/com/brulijam/minecraftapi/service/TutelService.java b/src/main/java/com/brulijam/minecraftapi/service/TutelService.java index beb90b3..a2cbbf8 100644 --- a/src/main/java/com/brulijam/minecraftapi/service/TutelService.java +++ b/src/main/java/com/brulijam/minecraftapi/service/TutelService.java @@ -3,6 +3,8 @@ package com.brulijam.minecraftapi.service; import com.brulijam.minecraftapi.model.Tutel; import lombok.Getter; import lombok.RequiredArgsConstructor; +import org.json.JSONArray; +import org.json.JSONObject; import org.springframework.stereotype.Component; import java.util.ArrayList; @@ -40,4 +42,31 @@ public class TutelService { .findFirst() .orElse(null); } + + public List getTutelsForTelegramUser(long telegramUserId) { + return tutelList.stream() + .filter(Tutel -> Tutel.getTelegramUserId() == telegramUserId) + .toList(); + } + + + public JSONObject tutelToJson(Tutel tutel) { + JSONObject jsonObject = new JSONObject(); + jsonObject.put("id", tutel.getId()); + jsonObject.put("label", tutel.getLabel()); + jsonObject.put("telegramUserId", tutel.getTelegramUserId()); + jsonObject.put("fuelLevel", tutel.getFuelLevel()); + jsonObject.put("inventory", tutel.getInventory()); + return jsonObject; + } + + public JSONArray tutelsToJson(List tutels) { + JSONArray jsonArray = new JSONArray(); + + for (Tutel tutel : tutels) { + jsonArray.put(tutelToJson(tutel)); + } + + return jsonArray; + } } diff --git a/src/main/java/com/brulijam/minecraftapi/telegrambot/TelegramBot.java b/src/main/java/com/brulijam/minecraftapi/telegrambot/TelegramBot.java index 64031e4..411ba77 100644 --- a/src/main/java/com/brulijam/minecraftapi/telegrambot/TelegramBot.java +++ b/src/main/java/com/brulijam/minecraftapi/telegrambot/TelegramBot.java @@ -1,5 +1,6 @@ package com.brulijam.minecraftapi.telegrambot; +import com.brulijam.minecraftapi.model.Tutel; import com.brulijam.minecraftapi.service.TelegramService; import com.brulijam.minecraftapi.service.TutelService; import lombok.Getter; @@ -12,6 +13,16 @@ import org.telegram.telegrambots.meta.api.objects.Update; import org.telegram.telegrambots.meta.api.objects.User; import org.telegram.telegrambots.meta.exceptions.TelegramApiException; +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 +*/ + @Component @RequiredArgsConstructor @Getter @@ -33,27 +44,42 @@ public class TelegramBot extends TelegramLongPollingBot { String receivedMessage = update.getMessage().getText(); - handeleMessage(fromUser, receivedMessage); + + handleMessage(fromUser, receivedMessage); } } - private void handeleMessage(User fromUser, String receivedMessage) { + private void handleMessage(User fromUser, String receivedMessage) { Long userId = fromUser.getId(); if (receivedMessage.equals("/start")) { - sendMessage(userId, "Your Telegram userId is " + userId); - } else if (receivedMessage.equals("/list_tutels")) { - if (userId == 5334468232L) { - sendMessage(userId, "user is Brulijam"); - // send all tutels - sendMessage(userId, tutelService.getTutelList().toString()); + //check if user is already known + if (telegramService.getTokens().containsKey(userId)) { + sendMessage(userId, "You are already registered."); } else { - sendMessage(userId, "who are you?"); + telegramService.addUserToList(fromUser); + String userToken = telegramService.getTokenByUserId(userId).replace("-", ""); + sendMessage(userId, "Your Telegram userId is " + userId + " and your access token is " + userToken); } + + } else if (receivedMessage.equals("/help")) { + sendMessage(userId, "TODO List of commands"); + + } else if (receivedMessage.equals("/list_tutels")) { + List tutels = tutelService.getTutelsForTelegramUser(userId); + sendMessage(userId, tutelService.tutelsToJson(tutels).toString()); + + } else if (receivedMessage.startsWith("/get_tutel_by_label ")) { + String label = receivedMessage.substring(receivedMessage.indexOf(" ")); + Tutel tutel = tutelService.getTutelList().stream() + .filter(Tutel -> Tutel.getLabel().equals(label)) + .findFirst() + .orElse(null); + } else { - sendMessage(userId, "huh?"); + sendMessage(userId, "I have no Idea what you want lol"); } } diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties deleted file mode 100644 index 4e4a42d..0000000 --- a/src/main/resources/application.properties +++ /dev/null @@ -1 +0,0 @@ -spring.application.name=minecraftapi diff --git a/src/main/resources/application.yaml b/src/main/resources/application.yaml new file mode 100755 index 0000000..36708aa --- /dev/null +++ b/src/main/resources/application.yaml @@ -0,0 +1,15 @@ +spring: + application: + name: minecraftapi + +server: + port: 42030 + servlet: + context-path: "/minecraftapi" +springdoc: + swagger-ui: + path: "/swagger-ui" + +bot: + name: "Minecraft Bot" + token: ${TELEGRAM_BOT_TOKEN} \ No newline at end of file