diff --git a/src/main/java/org/telegram/updateshandlers/TransifexHandlers.java b/src/main/java/org/telegram/updateshandlers/TransifexHandlers.java index e2feca9..4f780e4 100644 --- a/src/main/java/org/telegram/updateshandlers/TransifexHandlers.java +++ b/src/main/java/org/telegram/updateshandlers/TransifexHandlers.java @@ -1,6 +1,7 @@ package org.telegram.updateshandlers; import org.telegram.BotConfig; +import org.telegram.BuildVars; import org.telegram.Commands; import org.telegram.database.DatabaseManager; import org.telegram.services.LocalisationService; @@ -10,10 +11,14 @@ import org.telegram.telegrambots.api.methods.send.SendDocument; import org.telegram.telegrambots.api.methods.send.SendMessage; import org.telegram.telegrambots.api.objects.Message; import org.telegram.telegrambots.api.objects.Update; +import org.telegram.telegrambots.api.objects.replykeyboard.InlineKeyboardMarkup; +import org.telegram.telegrambots.api.objects.replykeyboard.buttons.InlineKeyboardButton; import org.telegram.telegrambots.bots.TelegramLongPollingBot; import org.telegram.telegrambots.logging.BotLogger; import java.io.InvalidObjectException; +import java.util.ArrayList; +import java.util.List; /** * @author Ruben Bermudez @@ -32,65 +37,49 @@ public class TransifexHandlers extends TelegramLongPollingBot { @Override public void onUpdateReceived(Update update) { try { - sendTransifexFile(update); - } catch (Exception e) { + handleUpdate(update); + } catch (Throwable e) { BotLogger.error(LOGTAG, e); } } + private void handleUpdate(Update update) throws InvalidObjectException, TelegramApiException { + if (update.hasMessage() && update.getMessage().hasText()) { + Message message = update.getMessage(); + if (BuildVars.ADMINS.contains(message.getFrom().getId())) { + sendTransifexFile(message); + } else { + sendMovedToMessage(message); + } + } + } + @Override public String getBotUsername() { return BotConfig.TRANSIFEX_USER; } - private void sendTransifexFile(Update update) throws InvalidObjectException { - Message message = update.getMessage(); - if (message != null && message.hasText()) { - String language = DatabaseManager.getInstance().getUserLanguage(update.getMessage().getFrom().getId()); - String text = message.getText(); - String[] parts = text.split(" ", 2); - SendDocument sendDocument = null; - if (parts.length == 2) { - if (parts[0].startsWith(Commands.transifexiOSCommand)) { - sendDocument = TransifexService.getInstance().getiOSLanguageFile(parts[1].trim()); - } else if (parts[0].startsWith(Commands.transifexAndroidCommand)) { - sendDocument = TransifexService.getInstance().getAndroidLanguageFile(parts[1].trim()); - } else if (parts[0].startsWith(Commands.transifexTDesktop)) { - sendDocument = TransifexService.getInstance().getTdesktopLanguageFile(parts[1].trim()); - } else if (parts[0].startsWith(Commands.transifexWebogram)) { - sendDocument = TransifexService.getInstance().getWebogramLanguageFile(parts[1].trim()); - } else if (parts[0].startsWith(Commands.transifexWP)) { - sendDocument = TransifexService.getInstance().getWPLanguageFile(parts[1].trim()); - } else if (parts[0].startsWith(Commands.transifexOSX)) { - sendDocument = TransifexService.getInstance().getOSXLanguageFile(parts[1].trim()); - } else if (parts[0].startsWith(Commands.transifexAndroidSupportCommand)) { - sendDocument = TransifexService.getInstance().getAndroidSupportLanguageFile(parts[1].trim()); - } else if (parts[0].startsWith(Commands.help)) { - SendMessage sendMessageRequest = new SendMessage(); - String helpFormated = String.format( - LocalisationService.getInstance().getString("helpTransifex", language), - Commands.transifexiOSCommand, Commands.transifexAndroidCommand, Commands.transifexWebogram, - Commands.transifexTDesktop, Commands.transifexOSX, Commands.transifexWP, - Commands.transifexAndroidSupportCommand); - sendMessageRequest.setText(helpFormated); - sendMessageRequest.setChatId(message.getChatId().toString()); - try { - sendMessage(sendMessageRequest); - } catch (TelegramApiException e) { - BotLogger.error(LOGTAG, e); - } - } - - if (sendDocument != null) { - sendDocument.setChatId(message.getChatId().toString()); - try { - sendDocument(sendDocument); - } catch (TelegramApiException e) { - BotLogger.error(LOGTAG, e); - } - } - } else if (parts[0].startsWith(Commands.help) || - (message.getText().startsWith(Commands.startCommand) || !message.isGroupMessage())) { + private void sendTransifexFile(Message message) throws InvalidObjectException { + String language = DatabaseManager.getInstance().getUserLanguage(message.getFrom().getId()); + String text = message.getText(); + String[] parts = text.split(" ", 2); + SendDocument sendDocument = null; + if (parts.length == 2) { + if (parts[0].startsWith(Commands.transifexiOSCommand)) { + sendDocument = TransifexService.getInstance().getiOSLanguageFile(parts[1].trim()); + } else if (parts[0].startsWith(Commands.transifexAndroidCommand)) { + sendDocument = TransifexService.getInstance().getAndroidLanguageFile(parts[1].trim()); + } else if (parts[0].startsWith(Commands.transifexTDesktop)) { + sendDocument = TransifexService.getInstance().getTdesktopLanguageFile(parts[1].trim()); + } else if (parts[0].startsWith(Commands.transifexWebogram)) { + sendDocument = TransifexService.getInstance().getWebogramLanguageFile(parts[1].trim()); + } else if (parts[0].startsWith(Commands.transifexWP)) { + sendDocument = TransifexService.getInstance().getWPLanguageFile(parts[1].trim()); + } else if (parts[0].startsWith(Commands.transifexOSX)) { + sendDocument = TransifexService.getInstance().getOSXLanguageFile(parts[1].trim()); + } else if (parts[0].startsWith(Commands.transifexAndroidSupportCommand)) { + sendDocument = TransifexService.getInstance().getAndroidSupportLanguageFile(parts[1].trim()); + } else if (parts[0].startsWith(Commands.help)) { SendMessage sendMessageRequest = new SendMessage(); String helpFormated = String.format( LocalisationService.getInstance().getString("helpTransifex", language), @@ -105,6 +94,49 @@ public class TransifexHandlers extends TelegramLongPollingBot { BotLogger.error(LOGTAG, e); } } + + if (sendDocument != null) { + sendDocument.setChatId(message.getChatId().toString()); + try { + sendDocument(sendDocument); + } catch (TelegramApiException e) { + BotLogger.error(LOGTAG, e); + } + } + } else if (parts[0].startsWith(Commands.help) || + (message.getText().startsWith(Commands.startCommand) || !message.isGroupMessage())) { + SendMessage sendMessageRequest = new SendMessage(); + String helpFormated = String.format( + LocalisationService.getInstance().getString("helpTransifex", language), + Commands.transifexiOSCommand, Commands.transifexAndroidCommand, Commands.transifexWebogram, + Commands.transifexTDesktop, Commands.transifexOSX, Commands.transifexWP, + Commands.transifexAndroidSupportCommand); + sendMessageRequest.setText(helpFormated); + sendMessageRequest.setChatId(message.getChatId().toString()); + try { + sendMessage(sendMessageRequest); + } catch (TelegramApiException e) { + BotLogger.error(LOGTAG, e); + } } } + + private void sendMovedToMessage(Message message) throws InvalidObjectException, TelegramApiException { + String language = DatabaseManager.getInstance().getUserLanguage(message.getFrom().getId()); + SendMessage answer = new SendMessage(); + answer.setChatId(message.getChatId().toString()); + answer.setReplyToMessageId(message.getMessageId()); + answer.setText(LocalisationService.getInstance().getString("movedToLangBot", language)); + InlineKeyboardMarkup inlineKeyboardMarkup = new InlineKeyboardMarkup(); + List> rows = new ArrayList<>(); + List row = new ArrayList<>(); + InlineKeyboardButton button = new InlineKeyboardButton(); + button.setText(LocalisationService.getInstance().getString("checkLangBot", language)); + button.setUrl("https://telegram.me/langbot"); + row.add(button); + rows.add(row); + inlineKeyboardMarkup.setKeyboard(rows); + answer.setReplyMarkup(inlineKeyboardMarkup); + sendMessage(answer); + } } diff --git a/src/main/resources/localisation/strings.properties b/src/main/resources/localisation/strings.properties index eb71f57..6771431 100644 --- a/src/main/resources/localisation/strings.properties +++ b/src/main/resources/localisation/strings.properties @@ -20,7 +20,8 @@ directionsNotFound= Directions not found between %s and %s. errorFetchingDirections= Error fetching directions info directionsStep= %s during %s (%s) languageModified= Your language setting has been updated. - +movedToLangBot=This bot has been moved to @langbot, enjoy it! +checkLangBot=Check @langbot helpWeatherMessage= Curious about the weather?\ \nJust send me these commands and you'll know a lot better\:\