MittweidaForFuture/src/main/java/Modules/UserMenue.java
2021-03-18 10:18:13 +01:00

174 lines
7.3 KiB
Java

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);
}
}
}
}
}