package Modules; import CORE.Core; import Manager.ChatManager; import Manager.UserManager; import Utility.KeyBoards; import Utility.MessageConstants; import Utility.User.MyUser; import Utility.User.Roles; import Utility.chat.ChatCategory; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.telegram.telegrambots.meta.api.methods.ParseMode; import org.telegram.telegrambots.meta.api.methods.send.SendMessage; import org.telegram.telegrambots.meta.api.methods.updatingmessages.EditMessageText; import org.telegram.telegrambots.meta.api.objects.Update; import org.telegram.telegrambots.meta.api.objects.replykeyboard.InlineKeyboardMarkup; import static java.lang.Math.toIntExact; public class UserMenue implements Module { private static final Logger log = LoggerFactory.getLogger(UserManager.class); private Core core; public UserMenue(Core core){ this.core = core; } @Override public void execute(Update update) { if (update.hasCallbackQuery()) { String call_data = update.getCallbackQuery().getData(); long message_id = update.getCallbackQuery().getMessage().getMessageId(); long user_id = update.getCallbackQuery().getFrom().getId(); String user_name = Core.getUserAsMention(update.getCallbackQuery().getFrom()); /*----------Permission handling----------*/ /////////////////////////////////////////// // PERMISSION HANDLING /////////////////////////////////////////// if (call_data.startsWith("permission") && !UserManager.checkBlacklist(user_id)) { String[] call_data_parts = call_data.split(" "); // User is allready on whitelist if (UserManager.checkWhitelist(user_id)) { EditMessageText message = new EditMessageText(); message.setChatId(user_id).setParseMode(ParseMode.HTML).setMessageId(toIntExact(message_id)) .setText(MessageConstants.MESSAGE_PERMISSION_ALLREADYONWHITELIST); core.edit_message(message); } // User allready requested Permission else if (core.getOpen_requests().containsKey(user_id)) { EditMessageText message = new EditMessageText(); message.setChatId(user_id).setParseMode(ParseMode.HTML).setMessageId(toIntExact(message_id)) .setText(MessageConstants.MESSAGE_PERMISSION_ALLREADYREQUESTED); core.edit_message(message); } // New User requested permission else if (call_data_parts[1].equals("request")) { // Add user request to List of open requests core.getOpen_requests().put(user_id, new MyUser((int) user_id, user_name, Roles.USER)); // Edit user message to tell him, that his request got received EditMessageText message = new EditMessageText(); message.setChatId(user_id).setParseMode(ParseMode.HTML).setMessageId(toIntExact(message_id)) .setText(MessageConstants.MESSAGE_PERMISSION_USER_REQUEST_RECEIVED); core.edit_message(message); // Send message to Admingroup, that there is a new request SendMessage admin_message = new SendMessage(); String admin_message_text = MessageConstants.MESSAGE_PERMISSION_USER_REQUEST.replace("$user", user_name); admin_message.setParseMode(ParseMode.HTML).setText(admin_message_text); core.send_message_toadmins(admin_message); } // New Guest requested permission else if (call_data_parts[1].equals("requestguest")) { // Add user request to List of open requests MyUser guest = new MyUser((int) user_id, user_name, Roles.GUEST); core.getOpen_requests().put(user_id, guest); // Edit user message to tell him, that his request got received EditMessageText message = new EditMessageText(); message.setChatId(user_id).setParseMode(ParseMode.HTML).setMessageId(toIntExact(message_id)) .setText(MessageConstants.MESSAGE_PERMISSION_USER_REQUEST_RECEIVED); core.edit_message(message); // Send message to Admingroup, that there is a new request SendMessage admin_message = new SendMessage(); String admin_message_text = MessageConstants.MESSAGE_PERMISSION_GUEST_REQUEST.replace("$user", user_name); admin_message.setParseMode(ParseMode.HTML).setText(admin_message_text); core.send_message_toadmins(admin_message); } } ///////////////////////////// // Chat Browsing //////////////////////////// else if (call_data.startsWith("chats") && !UserManager.checkBlacklist(user_id)) { String[] call_data_parts = call_data.split(" "); /*----------Load all Categories----------*/ if (call_data_parts[1].equalsIgnoreCase("menu")) { InlineKeyboardMarkup keyboardMarkup = KeyBoards.buildCategoriesMenu(user_id); EditMessageText messageText = new EditMessageText().setChatId(user_id).setMessageId( toIntExact(message_id)).setParseMode(ParseMode.HTML).setReplyMarkup(keyboardMarkup).setText( MessageConstants.MESSAGE_CHATS_MENU); core.edit_message(messageText); } /*----------Load specific category----------*/ else if (call_data_parts[1].equalsIgnoreCase("loadcategory")) { long uid = Long.parseLong(call_data_parts[2]); ChatCategory category = ChatManager.loadCategory(uid); InlineKeyboardMarkup keyboardMarkup = KeyBoards.buildCategory(category, user_id); String messageText = category.getName() + ":"; EditMessageText message = new EditMessageText().setChatId(user_id).setMessageId( toIntExact(message_id)).setParseMode(ParseMode.HTML).setReplyMarkup(keyboardMarkup).setText( messageText); core.edit_message(message); } else if (call_data_parts[1].equalsIgnoreCase("permissionmissing")) { long uid = Long.parseLong(call_data_parts[2]); ChatCategory category = ChatManager.loadCategory(uid); InlineKeyboardMarkup keyboardMarkup = KeyBoards.buildBackToCategory(category); EditMessageText message = new EditMessageText() .setChatId(user_id) .setMessageId(Math.toIntExact(message_id)) .setParseMode(ParseMode.HTML).setReplyMarkup(keyboardMarkup) .setText(MessageConstants.MESSAGE_CHATS_NORIGHTS); core.edit_message(message); } } } } }