174 lines
7.3 KiB
Java
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);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|