Browse Source

1. Refactor directionsbot

master
Rubenlagu 11 years ago
committed by Rubenlagus
parent
commit
e27300d6ab
  1. 158
      src/main/java/org/telegram/updateshandlers/DirectionsHandlers.java

158
src/main/java/org/telegram/updateshandlers/DirectionsHandlers.java

@ -52,86 +52,43 @@ public class DirectionsHandlers implements UpdatesCallback {
Message message = update.getMessage(); Message message = update.getMessage();
if (message != null && message.hasText()) { if (message != null && message.hasText()) {
if (languageMessages.contains(message.getFrom().getId())) { if (languageMessages.contains(message.getFrom().getId())) {
String[] parts = message.getText().split("-->", 2); onLanguageSelected(message);
SendMessage sendMessageRequest = new SendMessage();
sendMessageRequest.setChatId(message.getChatId());
if (LocalisationService.getInstance().supportedLanguages.containsKey(parts[0].trim())) {
DatabaseManager.getInstance().putUserLanguage(message.getFrom().getId(), parts[0].trim());
sendMessageRequest.setText(LocalisationService.getInstance().getString("languageModified", parts[0].trim()));
} else {
sendMessageRequest.setText(LocalisationService.getInstance().getString("errorLanguage"));
}
sendMessageRequest.setReplayToMessageId(message.getMessageId());
ReplyKeyboardHide replyKeyboardHide = new ReplyKeyboardHide();
replyKeyboardHide.setHideKeyboard(true);
replyKeyboardHide.setSelective(true);
sendMessageRequest.setReplayMarkup(replyKeyboardHide);
SenderHelper.SendMessage(sendMessageRequest, TOKEN);
languageMessages.remove(message.getFrom().getId());
} else { } else {
String language = DatabaseManager.getInstance().getUserLanguage(update.getMessage().getFrom().getId()); String language = DatabaseManager.getInstance().getUserLanguage(update.getMessage().getFrom().getId());
if (message.getText().startsWith(Commands.setLanguageCommand)) { if (message.getText().startsWith(Commands.setLanguageCommand)) {
SendMessage sendMessageRequest = new SendMessage(); onSetLanguageCommand(message, language);
sendMessageRequest.setChatId(message.getChatId());
ReplyKeyboardMarkup replyKeyboardMarkup = new ReplyKeyboardMarkup();
HashMap<String, String> languages = LocalisationService.getInstance().supportedLanguages;
List<List<String>> commands = new ArrayList<>();
for (Map.Entry<String, String> entry : languages.entrySet()) {
List<String> commandRow = new ArrayList<>();
commandRow.add(entry.getKey() + " --> " + entry.getValue());
commands.add(commandRow);
}
replyKeyboardMarkup.setResizeKeyboard(true);
replyKeyboardMarkup.setOneTimeKeyboad(true);
replyKeyboardMarkup.setKeyboard(commands);
replyKeyboardMarkup.setSelective(true);
sendMessageRequest.setReplayMarkup(replyKeyboardMarkup);
sendMessageRequest.setText(LocalisationService.getInstance().getString("chooselanguage", language));
SenderHelper.SendMessage(sendMessageRequest, TOKEN);
languageMessages.add(message.getFrom().getId());
} else if (message.getText().startsWith(Commands.startDirectionCommand)) { } else if (message.getText().startsWith(Commands.startDirectionCommand)) {
SendMessage sendMessageRequest = new SendMessage(); onStartdirectionsCommand(message, language);
sendMessageRequest.setChatId(message.getChatId());
sendMessageRequest.setReplayToMessageId(message.getMessageId());
ForceReply forceReply = new ForceReply();
forceReply.setSelective(true);
sendMessageRequest.setReplayMarkup(forceReply);
sendMessageRequest.setText(LocalisationService.getInstance().getString("initDirections", language));
Message sentMessage = SenderHelper.SendMessage(sendMessageRequest, TOKEN);
if (sentMessage != null) {
DatabaseManager.getInstance().addUserForDirection(message.getFrom().getId(), WATING_ORIGIN_STATUS,
sentMessage.getMessageId(), null);
}
} else if ((message.getText().startsWith(Commands.help) || } else if ((message.getText().startsWith(Commands.help) ||
(message.getText().startsWith(Commands.startCommand) || !message.isGroupMessage())) && (message.getText().startsWith(Commands.startCommand) || !message.isGroupMessage())) &&
DatabaseManager.getInstance().getUserDestinationStatus(message.getFrom().getId()) == -1) { DatabaseManager.getInstance().getUserDestinationStatus(message.getFrom().getId()) == -1) {
SendMessage sendMessageRequest = new SendMessage(); sendHelpMessage(message, language);
String helpDirectionsFormated = String.format(
LocalisationService.getInstance().getString("helpDirections", language),
Commands.startDirectionCommand);
sendMessageRequest.setText(helpDirectionsFormated);
sendMessageRequest.setChatId(message.getChatId());
SenderHelper.SendMessage(sendMessageRequest, TOKEN);
} else if (!message.getText().startsWith("/")) { } else if (!message.getText().startsWith("/")) {
if (DatabaseManager.getInstance().getUserDestinationStatus(message.getFrom().getId()) == WATING_ORIGIN_STATUS && if (DatabaseManager.getInstance().getUserDestinationStatus(message.getFrom().getId()) == WATING_ORIGIN_STATUS &&
message.hasReplayMessage() && message.hasReplayMessage() &&
DatabaseManager.getInstance().getUserDestinationMessageId(message.getFrom().getId()) == message.getReplyToMessage().getMessageId()) { DatabaseManager.getInstance().getUserDestinationMessageId(message.getFrom().getId()) == message.getReplyToMessage().getMessageId()) {
SendMessage sendMessageRequest = new SendMessage(); onOriginReceived(message, language);
sendMessageRequest.setChatId(message.getChatId());
sendMessageRequest.setReplayToMessageId(message.getMessageId());
ForceReply forceReply = new ForceReply();
forceReply.setSelective(true);
sendMessageRequest.setReplayMarkup(forceReply);
sendMessageRequest.setText(LocalisationService.getInstance().getString("sendDestination", language));
Message sentMessage = SenderHelper.SendMessage(sendMessageRequest, TOKEN);
if (sentMessage != null) {
DatabaseManager.getInstance().addUserForDirection(message.getFrom().getId(), WATING_DESTINY_STATUS,
sentMessage.getMessageId(), message.getText());
}
} else if (DatabaseManager.getInstance().getUserDestinationStatus(message.getFrom().getId()) == WATING_DESTINY_STATUS && } else if (DatabaseManager.getInstance().getUserDestinationStatus(message.getFrom().getId()) == WATING_DESTINY_STATUS &&
message.hasReplayMessage() && message.hasReplayMessage() &&
DatabaseManager.getInstance().getUserDestinationMessageId(message.getFrom().getId()) == message.getReplyToMessage().getMessageId()) { DatabaseManager.getInstance().getUserDestinationMessageId(message.getFrom().getId()) == message.getReplyToMessage().getMessageId()) {
onDestinationReceived(message, language);
} else if (!message.hasReplayMessage()) {
if (DatabaseManager.getInstance().getUserDestinationStatus(message.getFrom().getId()) == -1) {
sendHelpMessage(message, language);
} else {
SendMessage sendMessageRequest = new SendMessage();
sendMessageRequest.setText(LocalisationService.getInstance().getString("youNeedReplyDirections", language));
sendMessageRequest.setChatId(message.getChatId());
SenderHelper.SendMessage(sendMessageRequest, TOKEN);
}
}
}
}
}
}
private void onDestinationReceived(Message message, String language) {
String origin = DatabaseManager.getInstance().getUserOrigin(message.getFrom().getId()); String origin = DatabaseManager.getInstance().getUserOrigin(message.getFrom().getId());
String destiny = message.getText(); String destiny = message.getText();
List<String> directions = DirectionsService.getInstance().getDirections(origin, destiny, language); List<String> directions = DirectionsService.getInstance().getDirections(origin, destiny, language);
@ -149,8 +106,24 @@ public class DirectionsHandlers implements UpdatesCallback {
if (sentMessage != null) { if (sentMessage != null) {
DatabaseManager.getInstance().deleteUserForDirections(message.getFrom().getId()); DatabaseManager.getInstance().deleteUserForDirections(message.getFrom().getId());
} }
} else if (!message.hasReplayMessage()) { }
if (DatabaseManager.getInstance().getUserDestinationStatus(message.getFrom().getId()) == -1) {
private void onOriginReceived(Message message, String language) {
SendMessage sendMessageRequest = new SendMessage();
sendMessageRequest.setChatId(message.getChatId());
sendMessageRequest.setReplayToMessageId(message.getMessageId());
ForceReply forceReply = new ForceReply();
forceReply.setSelective(true);
sendMessageRequest.setReplayMarkup(forceReply);
sendMessageRequest.setText(LocalisationService.getInstance().getString("sendDestination", language));
Message sentMessage = SenderHelper.SendMessage(sendMessageRequest, TOKEN);
if (sentMessage != null) {
DatabaseManager.getInstance().addUserForDirection(message.getFrom().getId(), WATING_DESTINY_STATUS,
sentMessage.getMessageId(), message.getText());
}
}
private void sendHelpMessage(Message message, String language) {
SendMessage sendMessageRequest = new SendMessage(); SendMessage sendMessageRequest = new SendMessage();
String helpDirectionsFormated = String.format( String helpDirectionsFormated = String.format(
LocalisationService.getInstance().getString("helpDirections", language), LocalisationService.getInstance().getString("helpDirections", language),
@ -158,15 +131,60 @@ public class DirectionsHandlers implements UpdatesCallback {
sendMessageRequest.setText(helpDirectionsFormated); sendMessageRequest.setText(helpDirectionsFormated);
sendMessageRequest.setChatId(message.getChatId()); sendMessageRequest.setChatId(message.getChatId());
SenderHelper.SendMessage(sendMessageRequest, TOKEN); SenderHelper.SendMessage(sendMessageRequest, TOKEN);
} else { }
private void onStartdirectionsCommand(Message message, String language) {
SendMessage sendMessageRequest = new SendMessage(); SendMessage sendMessageRequest = new SendMessage();
sendMessageRequest.setText(LocalisationService.getInstance().getString("youNeedReplyDirections", language));
sendMessageRequest.setChatId(message.getChatId()); sendMessageRequest.setChatId(message.getChatId());
SenderHelper.SendMessage(sendMessageRequest, TOKEN); sendMessageRequest.setReplayToMessageId(message.getMessageId());
ForceReply forceReply = new ForceReply();
forceReply.setSelective(true);
sendMessageRequest.setReplayMarkup(forceReply);
sendMessageRequest.setText(LocalisationService.getInstance().getString("initDirections", language));
Message sentMessage = SenderHelper.SendMessage(sendMessageRequest, TOKEN);
if (sentMessage != null) {
DatabaseManager.getInstance().addUserForDirection(message.getFrom().getId(), WATING_ORIGIN_STATUS,
sentMessage.getMessageId(), null);
} }
} }
private void onSetLanguageCommand(Message message, String language) {
SendMessage sendMessageRequest = new SendMessage();
sendMessageRequest.setChatId(message.getChatId());
ReplyKeyboardMarkup replyKeyboardMarkup = new ReplyKeyboardMarkup();
HashMap<String, String> languages = LocalisationService.getInstance().supportedLanguages;
List<List<String>> commands = new ArrayList<>();
for (Map.Entry<String, String> entry : languages.entrySet()) {
List<String> commandRow = new ArrayList<>();
commandRow.add(entry.getKey() + " --> " + entry.getValue());
commands.add(commandRow);
} }
replyKeyboardMarkup.setResizeKeyboard(true);
replyKeyboardMarkup.setOneTimeKeyboad(true);
replyKeyboardMarkup.setKeyboard(commands);
replyKeyboardMarkup.setSelective(true);
sendMessageRequest.setReplayMarkup(replyKeyboardMarkup);
sendMessageRequest.setText(LocalisationService.getInstance().getString("chooselanguage", language));
SenderHelper.SendMessage(sendMessageRequest, TOKEN);
languageMessages.add(message.getFrom().getId());
} }
private void onLanguageSelected(Message message) {
String[] parts = message.getText().split("-->", 2);
SendMessage sendMessageRequest = new SendMessage();
sendMessageRequest.setChatId(message.getChatId());
if (LocalisationService.getInstance().supportedLanguages.containsKey(parts[0].trim())) {
DatabaseManager.getInstance().putUserLanguage(message.getFrom().getId(), parts[0].trim());
sendMessageRequest.setText(LocalisationService.getInstance().getString("languageModified", parts[0].trim()));
} else {
sendMessageRequest.setText(LocalisationService.getInstance().getString("errorLanguage"));
} }
sendMessageRequest.setReplayToMessageId(message.getMessageId());
ReplyKeyboardHide replyKeyboardHide = new ReplyKeyboardHide();
replyKeyboardHide.setHideKeyboard(true);
replyKeyboardHide.setSelective(true);
sendMessageRequest.setReplayMarkup(replyKeyboardHide);
SenderHelper.SendMessage(sendMessageRequest, TOKEN);
languageMessages.remove(message.getFrom().getId());
} }
} }

Loading…
Cancel
Save