167 lines
6.4 KiB
Java
167 lines
6.4 KiB
Java
package Modules;
|
|
|
|
|
|
import CORE.Core;
|
|
import Manager.UserManager;
|
|
|
|
import Utility.KeyBoards;
|
|
import Utility.MessageConstants;
|
|
import Utility.User.MyUser;
|
|
import Utility.User.Roles;
|
|
|
|
import Utility.User.State;
|
|
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 org.telegram.telegrambots.meta.api.objects.replykeyboard.buttons.InlineKeyboardButton;
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.List;
|
|
|
|
import static CORE.Core.NO_BOT_RIGHTS;
|
|
import static java.lang.Math.toIntExact;
|
|
|
|
public class BasicModule implements Module {
|
|
|
|
private Core core;
|
|
|
|
public BasicModule(Core core){
|
|
this.core = core;
|
|
}
|
|
|
|
@Override
|
|
public void execute(Update update) {
|
|
/*----------Update has Text----------*/
|
|
|
|
if (update.hasMessage() && update.getMessage().hasText()) {
|
|
|
|
String text = update.getMessage().getText();
|
|
|
|
long userId = update.getMessage().getFrom().getId();
|
|
|
|
State state = core.getUserMap().containsKey(userId) ? core.getUserMap().get(userId).getState() : null;
|
|
|
|
//Different Options to build the Main Menu
|
|
|
|
/*----------User is known, build main Menu----------*/
|
|
|
|
if (text.equalsIgnoreCase("/start") && UserManager.checkWhitelist(update.getMessage().getFrom().getId()) && state == null) {
|
|
MyUser myUser = UserManager.loadUser(update.getMessage().getFrom().getId());
|
|
|
|
SendMessage message = new SendMessage();
|
|
String message_text;
|
|
InlineKeyboardMarkup buttons;
|
|
|
|
if (myUser.getRole() == Roles.GUEST) {
|
|
buttons = KeyBoards.buildGuestMenu();
|
|
message_text = MessageConstants.MESSAGE_MENU_GUEST;
|
|
} else {
|
|
buttons = KeyBoards.buildMainMenu(userId);
|
|
message_text = MessageConstants.MESSAGE_MENU_MAIN;
|
|
}
|
|
|
|
message_text = message_text.replace("$user", CORE.Core.getUserAsMention(update.getMessage().getFrom()));
|
|
|
|
message.setChatId(userId).setParseMode(ParseMode.HTML).setReplyMarkup(buttons).setText(message_text);
|
|
|
|
core.send_message(message);
|
|
}
|
|
|
|
/*----------User is unknown, build Menu with Open Chat and
|
|
possibillities to request rights----------*/
|
|
|
|
else if (state == null && text.equalsIgnoreCase("/start") && !UserManager.checkBlacklist(update.getMessage().getFrom().getId())) {
|
|
SendMessage message = new SendMessage();
|
|
|
|
InlineKeyboardMarkup buttons = KeyBoards.buildOpenMenu();
|
|
|
|
if (NO_BOT_RIGHTS) {
|
|
message.setChatId(userId).setParseMode(ParseMode.HTML).setReplyMarkup(buttons).setText(
|
|
MessageConstants.MESSAGE_MENU_OPEN_NO_BOT_RIGHTS);
|
|
} else {
|
|
message.setChatId(userId).setParseMode(ParseMode.HTML).setReplyMarkup(buttons).setText(
|
|
MessageConstants.MESSAGE_MENU_OPEN);
|
|
}
|
|
|
|
core.send_message(message);
|
|
}
|
|
|
|
/*----------/help----------*/
|
|
|
|
else if (text.equalsIgnoreCase("/help") && !UserManager.checkBlacklist(update.getMessage().getFrom().getId()) && state == null) {
|
|
SendMessage message = new SendMessage();
|
|
|
|
message.setChatId(userId).setParseMode(ParseMode.HTML).setText(MessageConstants.MESSAGE_HELP);
|
|
|
|
core.send_message(message);
|
|
}
|
|
|
|
/*----------/changelog---------*/
|
|
|
|
else if (text.equalsIgnoreCase("/changelog") && UserManager.checkWhitelist(update.getMessage().getFrom().getId()) && state == null) {
|
|
SendMessage message = new SendMessage();
|
|
|
|
message.setChatId(userId).setParseMode(ParseMode.HTML).setText(MessageConstants.MESSAGE_CHANGELOG);
|
|
|
|
core.send_message(message);
|
|
}
|
|
|
|
/*----------Cancel any state----------*/
|
|
|
|
else if (state != null && text.equals("/cancel")) {
|
|
core.getUserMap().get(userId).setState(null);
|
|
|
|
InlineKeyboardMarkup keyboard = new InlineKeyboardMarkup();
|
|
|
|
List<List<InlineKeyboardButton>> buttons = new ArrayList<>();
|
|
List<InlineKeyboardButton> row = new ArrayList<>();
|
|
|
|
row.add(new InlineKeyboardButton().setText("Hauptmenü").setCallbackData("mainmenu"));
|
|
|
|
buttons.add(row);
|
|
|
|
keyboard.setKeyboard(buttons);
|
|
|
|
SendMessage message = new SendMessage().setChatId(userId).setParseMode(ParseMode.HTML).setReplyMarkup(
|
|
keyboard).setText(MessageConstants.MESSAGE_STATE_CANCELED);
|
|
|
|
core.send_message(message);
|
|
}
|
|
}
|
|
|
|
/*----------Update has Callback Query, aka as Button was clicked----------*/
|
|
|
|
else if (update.hasCallbackQuery()) {
|
|
|
|
String call_data = update.getCallbackQuery().getData();
|
|
|
|
long message_id = update.getCallbackQuery().getMessage().getMessageId();
|
|
long user_id = update.getCallbackQuery().getFrom().getId();
|
|
|
|
//Go back to Main Menu
|
|
if (call_data.equals("mainmenu") && UserManager.checkWhitelist(update.getCallbackQuery().getFrom().getId())) {
|
|
EditMessageText message = new EditMessageText();
|
|
|
|
InlineKeyboardMarkup keyboard = KeyBoards.buildMainMenu(user_id);
|
|
|
|
String message_text = MessageConstants.MESSAGE_MENU_MAIN.replace("$user", CORE.Core.getUserAsMention(update.getCallbackQuery().getFrom()));
|
|
|
|
message.setChatId(user_id).setParseMode(ParseMode.HTML).setMessageId(toIntExact(message_id))
|
|
.setReplyMarkup(keyboard).setText(message_text);
|
|
|
|
core.edit_message(message);
|
|
}
|
|
|
|
//Close Menu
|
|
else if (call_data.equals("close")) {
|
|
EditMessageText message = new EditMessageText().setChatId(user_id).setMessageId(toIntExact(message_id))
|
|
.setText(MessageConstants.MESSAGE_MENU_CLOSED);
|
|
|
|
core.edit_message(message);
|
|
}
|
|
}
|
|
}
|
|
}
|