diff --git a/src/main/java/org/telegram/Commands.java b/src/main/java/org/telegram/Commands.java index 8c71e7f..ded6096 100644 --- a/src/main/java/org/telegram/Commands.java +++ b/src/main/java/org/telegram/Commands.java @@ -38,4 +38,6 @@ public class Commands { public static final String startDirectionCommand = commandInitChar + "directions"; /// Set Language command public static final String setLanguageCommand = commandInitChar + "language"; + + public static final String STOPCOMMAND = commandInitChar + "stop"; } diff --git a/src/main/java/org/telegram/services/Emoji.java b/src/main/java/org/telegram/services/Emoji.java index cbe2c32..260777f 100644 --- a/src/main/java/org/telegram/services/Emoji.java +++ b/src/main/java/org/telegram/services/Emoji.java @@ -162,7 +162,8 @@ public enum Emoji { TEAR_OFF_CALENDAR('\uD83D', '\uDCC6'), LARGE_ORANGE_DIAMOND('\uD83D', '\uDD36'), HUNDRED_POINTS_SYMBOL('\uD83D', '\uDCAF'), - ROUND_PUSHPIN('\uD83D', '\uDCCD'); + ROUND_PUSHPIN('\uD83D', '\uDCCD'), + WAVING_HAND_SIGN('\uD83D', '\uDC4B'); Character firstChar; Character secondChar; diff --git a/src/main/java/org/telegram/services/LocalisationService.java b/src/main/java/org/telegram/services/LocalisationService.java index afc2cf3..53e923f 100644 --- a/src/main/java/org/telegram/services/LocalisationService.java +++ b/src/main/java/org/telegram/services/LocalisationService.java @@ -90,6 +90,8 @@ public class LocalisationService { supportedLanguages.put("pt", "Português"); dutch = ResourceBundle.getBundle("localisation.strings", new Locale("nl", "NL"), loader); supportedLanguages.put("nl", "Nederlands"); + italian = ResourceBundle.getBundle("localisation.strings", new Locale("it", "IT"), loader); + supportedLanguages.put("it", "Italiano"); /* german = ResourceBundle.getBundle("localisation.strings", new Locale("de", "DE"), loader); supportedLanguages.put("de", "Deutsch"); @@ -150,12 +152,12 @@ public class LocalisationService { case "nl": result = dutch.getString(key); break; - /*case "de": - result = german.getString(key); - break; case "it": result = italian.getString(key); break; + /*case "de": + result = german.getString(key); + break; case "fr": result = french.getString(key); break; diff --git a/src/main/java/org/telegram/updateshandlers/WeatherHandlers.java b/src/main/java/org/telegram/updateshandlers/WeatherHandlers.java index b5083d8..29dc47e 100644 --- a/src/main/java/org/telegram/updateshandlers/WeatherHandlers.java +++ b/src/main/java/org/telegram/updateshandlers/WeatherHandlers.java @@ -2,6 +2,7 @@ package org.telegram.updateshandlers; import org.telegram.BotConfig; import org.telegram.BuildVars; +import org.telegram.Commands; import org.telegram.SenderHelper; import org.telegram.api.*; import org.telegram.database.DatabaseManager; @@ -23,6 +24,7 @@ import java.util.List; */ public class WeatherHandlers implements UpdatesCallback { private static final String TOKEN = BotConfig.TOKENWEATHER; + private static final int STARTSTATE = 0; private static final int MAINMENU = 1; private static final int CURRENTWEATHER = 2; private static final int CURRENTNEWWEATHER = 3; @@ -104,8 +106,13 @@ public class WeatherHandlers implements UpdatesCallback { private static void handleIncomingMessage(Message message) { final int state = DatabaseManager.getInstance().getWeatherState(message.getFrom().getId(), message.getChatId()); final String language = DatabaseManager.getInstance().getUserWeatherOptions(message.getFrom().getId())[0]; - if (message.isGroupMessage() && message.hasText() && isCommandForOther(message.getText())) { - return; + if (message.isGroupMessage() && message.hasText()) { + if (isCommandForOther(message.getText())) { + return; + } else if (message.getText().startsWith(Commands.STOPCOMMAND)){ + sendHideKeyboard(message.getFrom().getId(), message.getChatId(), message.getMessageId()); + return; + } } switch(state) { case MAINMENU: @@ -141,9 +148,25 @@ public class WeatherHandlers implements UpdatesCallback { } } + private static void sendHideKeyboard(Integer userId, Integer chatId, Integer messageId) { + SendMessage sendMessage = new SendMessage(); + sendMessage.setChatId(chatId); + sendMessage.setReplayToMessageId(messageId); + sendMessage.setText(Emoji.WAVING_HAND_SIGN.toString()); + + ReplyKeyboardHide replyKeyboardHide = new ReplyKeyboardHide(); + replyKeyboardHide.setSelective(true); + replyKeyboardHide.setHideKeyboard(true); + sendMessage.setReplayMarkup(replyKeyboardHide); + + SenderHelper.SendMessage(sendMessage, TOKEN); + DatabaseManager.getInstance().insertWeatherState(userId, chatId, STARTSTATE); + + } + private static boolean isCommandForOther(String text) { - boolean isSimpleCommand = text.equals("/start") || text.equals("/help"); - boolean isCommandForMe = text.equals("/start@weatherbot") || text.equals("/help@weatherbot"); + boolean isSimpleCommand = text.equals("/start") || text.equals("/help") || text.equals("/stop"); + boolean isCommandForMe = text.equals("/start@weatherbot") || text.equals("/help@weatherbot") || text.equals("/stop@weatherbot"); return text.startsWith("/") && !isSimpleCommand && !isCommandForMe; } diff --git a/src/main/resources/localisation/strings_it.properties b/src/main/resources/localisation/strings_it.properties new file mode 100644 index 0000000..0449046 --- /dev/null +++ b/src/main/resources/localisation/strings_it.properties @@ -0,0 +1,75 @@ +helpTransifex= Faccio giochetti con le parole, fai un tentativo, potrei migliorare la tua giornata.\n\nPer ottenere le ultime traduzioni di Telegram per una lingua\: \n|-- %s LANG_CODE \: Ottieni l'ultima traduzione per iOS.\n|-- %s LANG_CODE \: Ottieni l'ultima traduzione per Android.\n|-- %s LANG_CODE \: Ottieni l'ultima traduzione per Webogram.\n|-- %s LANG_CODE \: Ottieni l'ultima traduzione per Tdesktop.\n|-- %s LANG_CODE \: Ottieni l'ultima traduzione per l'app OSX.\n|-- %s LANG_CODE \: Ottieni l'ultima traduzione per Windows Phone.\n\n2. Per ottenere una traduzione aggiornata per l'app beta di Android\:\n|-- %s LANG_CODE \: Ottieni l'ultima traduzione della beta per Android.. +helpFiles= Lasciare un file in modo che altri lo trovino?\n\nCondividi i file tramite un link personalizzato\: \n|-- %s FILEID \: Ottieni il file tramite id.\n|-- %s \: Avvia il caricamento del file.\n|-- %s \: Seleziona una dei tuoi file per eliminarlo.\n|-- %s \: Mostra la lista dei tuoi file condivisi. +helpDirections= La strada davanti, con tutte le buone intenzioni, è quella corretta che cerco di indicarti.\n\nPer ottenere le indicazioni stradali tra due località\: \n|-- %s \: Inizia a ricevere indicazioni +sendFileToUpload= Per favore inviami il file che desideri condividere. Assicurati di inviarlo come file, non come immagine o video. +fileUploaded= Grandioso, il tuo file è stato caricato. Invia questo link a chiunque tu voglia e potrà scaricare il file\: \n\n +deleteUploadedFile= Per favore, seleziona il file che vuoi eliminare\: +fileDeleted= Il file è stato eliminato +wrongFileId= Ci spiace, non siamo riusciti a trovare un file con quell'ID. O è stato fatto un errore o il file è già stato eliminato. +listOfFiles= Questa è la lista dei file che hai condiviso fino ad ora\: +noFiles= Al momento non hai condiviso alcun file. +processFinished= Il processo corrente è stato annullato. +uploadedFileURL= https\://telegram.me/filesbot?start\= +initDirections= Per favore rispondi a questo messaggio con il tuo punto di partenza. +sendDestination= Per favore rispondi a questo messaggio con la tua destinazione. +youNeedReplyDirections= Mi spiace, non posso aiutarti finché non rispondi al messaggio che ti ho mandato. +chooselanguage= Per favore, selezionare una lingua dalla lista per cambiarla. +errorLanguage= Non supportiamo quella lingua o è stato fatto un errore. Il processo è stato annullato. +directionsInit= %s è %s lontano da %s e ci vuole %s per arrivare, seguendo queste direzioni\:\n +directionsNotFound= Indicazioni tra %s e %s non trovate. +errorFetchingDirections= Errore nel caricare le indicazioni +directionsStep= %s durante %s (%s) +languageModified= Le impostazioni della lingua sono state aggiornate + + +helpWeatherMessage= Curiosità sul meteo?\nBasta inviare questo comando per conoscerlo meglio\:\n\t\t%s Ottieni le previsioni attuali per una citta o una posizione\n\t\t%s Ottieni 3 giorni di previsioni per una città o una posizione\n\t\t%s Imposta gli avvisi \n\t\t%s Imposta la lingua delle previsioni\n\t\t%s Cambia l'unità di misura +forecast=%sPrevisioni +current=%sAttuale +help=%sAiuto +settings=%sImpostazioni +cancel=%sAnnulla +location=%sPosizione +new=%sNuovo +languages=%sLingua +alerts=%sAllarmi +units=%sUnità +back=%sIndietro +delete=%sElimina +showList=%sMostra lista +rateMe=%sVotami +metricSystem=Sistema Metrico +imperialSystem= Sistema Imperiale +selectLanguage=La lingua attuale è %s. Seleziona una lingua dalla lista per cambiarla in quella. +languageUpdated=Le impostazioni della lingua sono state aggiornate +errorLanguageNotFound= Non supportiamo quella lingua o c'è stato un errore. Per favore selezionane una dalla lista. +selectUnits=L'unità di misura attuale impostata è %s. Seleziona un'opzione dalla lista per cambiarla. +unitsUpdated=Le tue impostazioni di unità di misura sono state aggiornate. +errorUnitsNotFound= Non supportiamo quell'unità di misura o c'è stato un errore. Per favore selezionane uno dalla lista. +onWeatherNewCommand=Per favore inviami la città che ti interessa, e usa questo formato\: CITTÀ,PAESE +onWeatherLocationCommand=Per favore inviami la posizione che ti interessa. +onCurrentCommandFromHistory=Seleziona un'opzione dalle tue richieste recenti, "nuovo" per inviare una nuova città o "posizione" per inviare una posizione e ricevere le previsioni attuali. +onCurrentCommandWithoutHistory=Seleziona "nuovo" per inviare una nuova città o "posizione" per inviare una posizione e ricevere le previsioni attuali. +onForecastCommandFromHistory=Seleziona un'opzione dalle tue richieste recenti, "nuovo" per inviare una nuova città o "posizione" per inviare una posizione e ricevere le previsioni per 3 giorni. +onForecastCommandWithoutHistory=Seleziona "nuovo" per inviare una nuova città o "posizione" per inviare una posizione e ricevere le previsioni per 3 giorni. +weatherCurrent= Le previsioni per %s sono\:\n\n%s +currentWeatherPartMetric=\t- Meteo\: %s\n\t- Nuvolosità\: %s\n\t- Temperatura\: %s ºC\n\n +currentWeatherPartImperial=\t- Meteo\: %s\n\t- Nuvolosità\: %s\n\t- Temperatura\: %s ºC\n\n +weatherForcast= Le previsioni per %s saranno\:\n\n%s +forecastWeatherPartMetric= %s Il %s \n\t- Previsione\: %s\n\t- Temperatura massima\: %s ºC\n\t- Temperatura minima\: %s ºC\n\n +forecastWeatherPartImperial= %s Il %s \n\t- Previsione\: %s\n\t- Temperatura massima\: %s ºC\n\t- Temperatura minima\: %s ºC\n\n +weatherAlert= Le previsioni per %s saranno\:\n\n%s +alertWeatherPartMetric=\t- Previsione\: %s\n\t- Temperatura massima\: %s ºC\n\t- Temperatura minima\: %s ºC\n\n +alertWeatherPartImperial=\t- Previsione\: %s\n\t- Temperatura massima\: %s ºC\n\t- Temperatura minima\: %s ºC\n\n +chooseOption=Per favore, seleziona un'opzione dal menu. +backToMainMenu=Processo annullato, ritorna nel menu principale. +onSettingsCommand=Per favore, scegli un'opzione\:\n\t\t%s Lingue\: Seleziona la lingua per le previsioni\n\t\t%s Unità\: Seleziona l'unità di misura\n\t\t%s Avvisi\: Seleziona il numero di avvisi giornalieri\n\t\t%s Indietro\: Ritorna al menu principale +alertsMenuMessage=Qui puoi gestire i tuoi allarmi o aggiungerne di nuovi. +chooseNewAlertCity=Per quale città si desidera impostare un avviso? Seleziona un'opzione dalle richieste recenti +newAlertSaved=%s Il tuo avviso per %s è stato creato correttamente, riceverai l'aggiornamento meteo due volte al giorno. +initialAlertList=Hai %d allarmi\:\n\n%s +partialAlertList=%s%s\n +noAlertList=Non sono riuscito a trovare alcun allarme per te. +alertDeleted=L'allarme selezionato è stato eliminato. +cityNotFound= Città non trovata +errorFetchingWeather= Siamo spiacenti, c'è stato un errore nel caricare le previsioni. +rateMeMessage=Se ti piace questo bot, per favore votalo su https\://telegram.me/storebot?start\=weatherbot