diff --git a/.idea/compiler.xml b/.idea/compiler.xml index 434b83a..8035028 100644 --- a/.idea/compiler.xml +++ b/.idea/compiler.xml @@ -17,7 +17,7 @@ - + diff --git a/.idea/libraries/Maven__com_github_rubenlagus_TelegramBots_v1_0.xml b/.idea/libraries/Maven__com_github_rubenlagus_TelegramBots_v2_3_3_1.xml similarity index 55% rename from .idea/libraries/Maven__com_github_rubenlagus_TelegramBots_v1_0.xml rename to .idea/libraries/Maven__com_github_rubenlagus_TelegramBots_v2_3_3_1.xml index dd13cd3..00b2b88 100644 --- a/.idea/libraries/Maven__com_github_rubenlagus_TelegramBots_v1_0.xml +++ b/.idea/libraries/Maven__com_github_rubenlagus_TelegramBots_v2_3_3_1.xml @@ -1,13 +1,13 @@ - + - + - + - + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_sun_jersey_jersey_bundle_1_19.xml b/.idea/libraries/Maven__com_sun_jersey_jersey_bundle_1_19_1.xml similarity index 59% rename from .idea/libraries/Maven__com_sun_jersey_jersey_bundle_1_19.xml rename to .idea/libraries/Maven__com_sun_jersey_jersey_bundle_1_19_1.xml index 015dbda..4d626a6 100644 --- a/.idea/libraries/Maven__com_sun_jersey_jersey_bundle_1_19.xml +++ b/.idea/libraries/Maven__com_sun_jersey_jersey_bundle_1_19_1.xml @@ -1,13 +1,13 @@ - + - + - + - + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_sun_jersey_jersey_server_1_19.xml b/.idea/libraries/Maven__com_sun_jersey_jersey_core_1_19_1.xml similarity index 60% rename from .idea/libraries/Maven__com_sun_jersey_jersey_server_1_19.xml rename to .idea/libraries/Maven__com_sun_jersey_jersey_core_1_19_1.xml index 47f74e7..91d65b2 100644 --- a/.idea/libraries/Maven__com_sun_jersey_jersey_server_1_19.xml +++ b/.idea/libraries/Maven__com_sun_jersey_jersey_core_1_19_1.xml @@ -1,13 +1,13 @@ - + - + - + - + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_sun_jersey_jersey_grizzly2_1_19_1.xml b/.idea/libraries/Maven__com_sun_jersey_jersey_grizzly2_1_19_1.xml new file mode 100644 index 0000000..ec38da5 --- /dev/null +++ b/.idea/libraries/Maven__com_sun_jersey_jersey_grizzly2_1_19_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_sun_jersey_jersey_grizzly2_servlet_1_19.xml b/.idea/libraries/Maven__com_sun_jersey_jersey_grizzly2_servlet_1_19_1.xml similarity index 62% rename from .idea/libraries/Maven__com_sun_jersey_jersey_grizzly2_servlet_1_19.xml rename to .idea/libraries/Maven__com_sun_jersey_jersey_grizzly2_servlet_1_19_1.xml index 2f3fb72..e61c7cb 100644 --- a/.idea/libraries/Maven__com_sun_jersey_jersey_grizzly2_servlet_1_19.xml +++ b/.idea/libraries/Maven__com_sun_jersey_jersey_grizzly2_servlet_1_19_1.xml @@ -1,13 +1,13 @@ - + - + - + - + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_sun_jersey_jersey_core_1_19.xml b/.idea/libraries/Maven__com_sun_jersey_jersey_server_1_19_1.xml similarity index 59% rename from .idea/libraries/Maven__com_sun_jersey_jersey_core_1_19.xml rename to .idea/libraries/Maven__com_sun_jersey_jersey_server_1_19_1.xml index 3ac29b2..b4ad3de 100644 --- a/.idea/libraries/Maven__com_sun_jersey_jersey_core_1_19.xml +++ b/.idea/libraries/Maven__com_sun_jersey_jersey_server_1_19_1.xml @@ -1,13 +1,13 @@ - + - + - + - + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_sun_jersey_jersey_servlet_1_19.xml b/.idea/libraries/Maven__com_sun_jersey_jersey_servlet_1_19.xml deleted file mode 100644 index 882f842..0000000 --- a/.idea/libraries/Maven__com_sun_jersey_jersey_servlet_1_19.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/Maven__com_sun_jersey_jersey_grizzly2_1_19.xml b/.idea/libraries/Maven__com_sun_jersey_jersey_servlet_1_19_1.xml similarity index 58% rename from .idea/libraries/Maven__com_sun_jersey_jersey_grizzly2_1_19.xml rename to .idea/libraries/Maven__com_sun_jersey_jersey_servlet_1_19_1.xml index 8734ae4..943df5a 100644 --- a/.idea/libraries/Maven__com_sun_jersey_jersey_grizzly2_1_19.xml +++ b/.idea/libraries/Maven__com_sun_jersey_jersey_servlet_1_19_1.xml @@ -1,13 +1,13 @@ - + - + - + - + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_httpcomponents_httpclient_4_5_1.xml b/.idea/libraries/Maven__org_apache_httpcomponents_httpclient_4_5_2.xml similarity index 68% rename from .idea/libraries/Maven__org_apache_httpcomponents_httpclient_4_5_1.xml rename to .idea/libraries/Maven__org_apache_httpcomponents_httpclient_4_5_2.xml index 958a9fa..fdb7ead 100644 --- a/.idea/libraries/Maven__org_apache_httpcomponents_httpclient_4_5_1.xml +++ b/.idea/libraries/Maven__org_apache_httpcomponents_httpclient_4_5_2.xml @@ -1,13 +1,13 @@ - + - + - + - + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_httpcomponents_httpcore_4_4_3.xml b/.idea/libraries/Maven__org_apache_httpcomponents_httpcore_4_4_4.xml similarity index 59% rename from .idea/libraries/Maven__org_apache_httpcomponents_httpcore_4_4_3.xml rename to .idea/libraries/Maven__org_apache_httpcomponents_httpcore_4_4_4.xml index a9f8d49..3a5aa19 100644 --- a/.idea/libraries/Maven__org_apache_httpcomponents_httpcore_4_4_3.xml +++ b/.idea/libraries/Maven__org_apache_httpcomponents_httpcore_4_4_4.xml @@ -1,13 +1,13 @@ - + - + - + - + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_httpcomponents_httpmime_4_5_1.xml b/.idea/libraries/Maven__org_apache_httpcomponents_httpmime_4_5_2.xml similarity index 59% rename from .idea/libraries/Maven__org_apache_httpcomponents_httpmime_4_5_1.xml rename to .idea/libraries/Maven__org_apache_httpcomponents_httpmime_4_5_2.xml index 793e63d..4b2025a 100644 --- a/.idea/libraries/Maven__org_apache_httpcomponents_httpmime_4_5_1.xml +++ b/.idea/libraries/Maven__org_apache_httpcomponents_httpmime_4_5_2.xml @@ -1,13 +1,13 @@ - + - + - + - + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_glassfish_hk2_external_aopalliance_repackaged_2_4_0_b31.xml b/.idea/libraries/Maven__org_glassfish_hk2_external_aopalliance_repackaged_2_4_0_b34.xml similarity index 56% rename from .idea/libraries/Maven__org_glassfish_hk2_external_aopalliance_repackaged_2_4_0_b31.xml rename to .idea/libraries/Maven__org_glassfish_hk2_external_aopalliance_repackaged_2_4_0_b34.xml index 874c890..1908e81 100644 --- a/.idea/libraries/Maven__org_glassfish_hk2_external_aopalliance_repackaged_2_4_0_b31.xml +++ b/.idea/libraries/Maven__org_glassfish_hk2_external_aopalliance_repackaged_2_4_0_b34.xml @@ -1,13 +1,13 @@ - + - + - + - + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_glassfish_hk2_external_javax_inject_2_4_0_b31.xml b/.idea/libraries/Maven__org_glassfish_hk2_external_javax_inject_2_4_0_b34.xml similarity index 65% rename from .idea/libraries/Maven__org_glassfish_hk2_external_javax_inject_2_4_0_b31.xml rename to .idea/libraries/Maven__org_glassfish_hk2_external_javax_inject_2_4_0_b34.xml index 87ed334..8ef6daa 100644 --- a/.idea/libraries/Maven__org_glassfish_hk2_external_javax_inject_2_4_0_b31.xml +++ b/.idea/libraries/Maven__org_glassfish_hk2_external_javax_inject_2_4_0_b34.xml @@ -1,13 +1,13 @@ - + - + - + - + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_glassfish_hk2_hk2_api_2_4_0_b31.xml b/.idea/libraries/Maven__org_glassfish_hk2_hk2_api_2_4_0_b34.xml similarity index 60% rename from .idea/libraries/Maven__org_glassfish_hk2_hk2_api_2_4_0_b31.xml rename to .idea/libraries/Maven__org_glassfish_hk2_hk2_api_2_4_0_b34.xml index 14746f4..97dd43f 100644 --- a/.idea/libraries/Maven__org_glassfish_hk2_hk2_api_2_4_0_b31.xml +++ b/.idea/libraries/Maven__org_glassfish_hk2_hk2_api_2_4_0_b34.xml @@ -1,13 +1,13 @@ - + - + - + - + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_glassfish_hk2_hk2_locator_2_4_0_b31.xml b/.idea/libraries/Maven__org_glassfish_hk2_hk2_locator_2_4_0_b34.xml similarity index 57% rename from .idea/libraries/Maven__org_glassfish_hk2_hk2_locator_2_4_0_b31.xml rename to .idea/libraries/Maven__org_glassfish_hk2_hk2_locator_2_4_0_b34.xml index e57e76f..e15594e 100644 --- a/.idea/libraries/Maven__org_glassfish_hk2_hk2_locator_2_4_0_b31.xml +++ b/.idea/libraries/Maven__org_glassfish_hk2_hk2_locator_2_4_0_b34.xml @@ -1,13 +1,13 @@ - + - + - + - + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_glassfish_hk2_hk2_utils_2_4_0_b31.xml b/.idea/libraries/Maven__org_glassfish_hk2_hk2_utils_2_4_0_b34.xml similarity index 58% rename from .idea/libraries/Maven__org_glassfish_hk2_hk2_utils_2_4_0_b31.xml rename to .idea/libraries/Maven__org_glassfish_hk2_hk2_utils_2_4_0_b34.xml index e99f973..00ca710 100644 --- a/.idea/libraries/Maven__org_glassfish_hk2_hk2_utils_2_4_0_b31.xml +++ b/.idea/libraries/Maven__org_glassfish_hk2_hk2_utils_2_4_0_b34.xml @@ -1,13 +1,13 @@ - + - + - + - + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_glassfish_jersey_bundles_repackaged_jersey_guava_2_22_1.xml b/.idea/libraries/Maven__org_glassfish_jersey_bundles_repackaged_jersey_guava_2_22_2.xml similarity index 64% rename from .idea/libraries/Maven__org_glassfish_jersey_bundles_repackaged_jersey_guava_2_22_1.xml rename to .idea/libraries/Maven__org_glassfish_jersey_bundles_repackaged_jersey_guava_2_22_2.xml index 3836fa4..4a0aac2 100644 --- a/.idea/libraries/Maven__org_glassfish_jersey_bundles_repackaged_jersey_guava_2_22_1.xml +++ b/.idea/libraries/Maven__org_glassfish_jersey_bundles_repackaged_jersey_guava_2_22_2.xml @@ -1,13 +1,13 @@ - + - + - + - + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_glassfish_jersey_containers_jersey_container_grizzly2_http_2_22_1.xml b/.idea/libraries/Maven__org_glassfish_jersey_containers_jersey_container_grizzly2_http_2_22_2.xml similarity index 52% rename from .idea/libraries/Maven__org_glassfish_jersey_containers_jersey_container_grizzly2_http_2_22_1.xml rename to .idea/libraries/Maven__org_glassfish_jersey_containers_jersey_container_grizzly2_http_2_22_2.xml index cd470f3..8dea8ef 100644 --- a/.idea/libraries/Maven__org_glassfish_jersey_containers_jersey_container_grizzly2_http_2_22_1.xml +++ b/.idea/libraries/Maven__org_glassfish_jersey_containers_jersey_container_grizzly2_http_2_22_2.xml @@ -1,13 +1,13 @@ - + - + - + - + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_glassfish_jersey_core_jersey_client_2_22_1.xml b/.idea/libraries/Maven__org_glassfish_jersey_core_jersey_client_2_22_2.xml similarity index 65% rename from .idea/libraries/Maven__org_glassfish_jersey_core_jersey_client_2_22_1.xml rename to .idea/libraries/Maven__org_glassfish_jersey_core_jersey_client_2_22_2.xml index d9aea91..37260b9 100644 --- a/.idea/libraries/Maven__org_glassfish_jersey_core_jersey_client_2_22_1.xml +++ b/.idea/libraries/Maven__org_glassfish_jersey_core_jersey_client_2_22_2.xml @@ -1,13 +1,13 @@ - + - + - + - + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_glassfish_jersey_core_jersey_common_2_22_1.xml b/.idea/libraries/Maven__org_glassfish_jersey_core_jersey_common_2_22_2.xml similarity index 65% rename from .idea/libraries/Maven__org_glassfish_jersey_core_jersey_common_2_22_1.xml rename to .idea/libraries/Maven__org_glassfish_jersey_core_jersey_common_2_22_2.xml index beb58fe..5ada064 100644 --- a/.idea/libraries/Maven__org_glassfish_jersey_core_jersey_common_2_22_1.xml +++ b/.idea/libraries/Maven__org_glassfish_jersey_core_jersey_common_2_22_2.xml @@ -1,13 +1,13 @@ - + - + - + - + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_glassfish_jersey_core_jersey_server_2_22_1.xml b/.idea/libraries/Maven__org_glassfish_jersey_core_jersey_server_2_22_2.xml similarity index 65% rename from .idea/libraries/Maven__org_glassfish_jersey_core_jersey_server_2_22_1.xml rename to .idea/libraries/Maven__org_glassfish_jersey_core_jersey_server_2_22_2.xml index c069857..04a4246 100644 --- a/.idea/libraries/Maven__org_glassfish_jersey_core_jersey_server_2_22_1.xml +++ b/.idea/libraries/Maven__org_glassfish_jersey_core_jersey_server_2_22_2.xml @@ -1,13 +1,13 @@ - + - + - + - + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_glassfish_jersey_ext_jersey_entity_filtering_2_22_1.xml b/.idea/libraries/Maven__org_glassfish_jersey_ext_jersey_entity_filtering_2_22_2.xml similarity index 66% rename from .idea/libraries/Maven__org_glassfish_jersey_ext_jersey_entity_filtering_2_22_1.xml rename to .idea/libraries/Maven__org_glassfish_jersey_ext_jersey_entity_filtering_2_22_2.xml index 3d6acfa..3024084 100644 --- a/.idea/libraries/Maven__org_glassfish_jersey_ext_jersey_entity_filtering_2_22_1.xml +++ b/.idea/libraries/Maven__org_glassfish_jersey_ext_jersey_entity_filtering_2_22_2.xml @@ -1,13 +1,13 @@ - + - + - + - + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_glassfish_jersey_media_jersey_media_jaxb_2_22_1.xml b/.idea/libraries/Maven__org_glassfish_jersey_media_jersey_media_jaxb_2_22_2.xml similarity index 65% rename from .idea/libraries/Maven__org_glassfish_jersey_media_jersey_media_jaxb_2_22_1.xml rename to .idea/libraries/Maven__org_glassfish_jersey_media_jersey_media_jaxb_2_22_2.xml index e3cc3ce..8c59a6a 100644 --- a/.idea/libraries/Maven__org_glassfish_jersey_media_jersey_media_jaxb_2_22_1.xml +++ b/.idea/libraries/Maven__org_glassfish_jersey_media_jersey_media_jaxb_2_22_2.xml @@ -1,13 +1,13 @@ - + - + - + - + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_glassfish_jersey_media_jersey_media_json_jackson_2_22_1.xml b/.idea/libraries/Maven__org_glassfish_jersey_media_jersey_media_json_jackson_2_22_2.xml similarity index 56% rename from .idea/libraries/Maven__org_glassfish_jersey_media_jersey_media_json_jackson_2_22_1.xml rename to .idea/libraries/Maven__org_glassfish_jersey_media_jersey_media_json_jackson_2_22_2.xml index 17b61a1..3e399f2 100644 --- a/.idea/libraries/Maven__org_glassfish_jersey_media_jersey_media_json_jackson_2_22_1.xml +++ b/.idea/libraries/Maven__org_glassfish_jersey_media_jersey_media_json_jackson_2_22_2.xml @@ -1,13 +1,13 @@ - + - + - + - + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_json_json_20151123.xml b/.idea/libraries/Maven__org_json_json_20151123.xml deleted file mode 100644 index 324279d..0000000 --- a/.idea/libraries/Maven__org_json_json_20151123.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/Maven__org_json_json_20160212.xml b/.idea/libraries/Maven__org_json_json_20160212.xml new file mode 100644 index 0000000..44a278c --- /dev/null +++ b/.idea/libraries/Maven__org_json_json_20160212.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/workspace.xml b/.idea/workspace.xml index 751365b..dce803c 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -1,83 +1,22 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + @@ -127,25 +66,11 @@ - - - - - - - - - - - - - - - + - - + + @@ -153,26 +78,6 @@ - - - - - - - - - - - - - - - - - - - - @@ -187,6 +92,7 @@ @@ -208,15 +114,9 @@ - - + + true + DEFINITION_ORDER - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -903,13 +765,12 @@ - - - + + @@ -1025,7 +886,7 @@ - + @@ -1112,6 +973,7 @@ + project @@ -1123,10 +985,12 @@ + + /usr/local/bin/node $PROJECT_DIR$ true @@ -1207,6 +1071,7 @@ 1434808152627 - @@ -1599,7 +1525,7 @@ - + @@ -1610,27 +1536,27 @@ - + - + - + - - + + @@ -1678,11 +1604,6 @@ - - - - - @@ -1703,7 +1624,12 @@ - @@ -1711,7 +1637,7 @@ file://$PROJECT_DIR$/src/main/java/org/telegram/services/WeatherService.java - 172 + 173 @@ -1723,7 +1649,7 @@ file://$PROJECT_DIR$/src/main/java/org/telegram/services/TransifexService.java - 323 + 330 @@ -1734,28 +1660,40 @@ - @@ -1764,452 +1702,335 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + + + + + + + + + + + + + - - + + - + + + + + - - + + - + - - + + - - - - - + + + + - - - - + + - + - - + + - + - - + + - + - - + + - + - - + + - + - - + + - + - - + + - + - - - - - - - - - - - + - + - - - + + - + - - + + - + - - + + - - + + - - - - - - - - - - - - - + + + - + - - - - - + + + - + - - + + - - - - - - - - + + - + - - - - - + + - - - - - - - - - + + + - + - - + + - - - - + + - - - - - - - - - + - - + + - + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - + + - + - - + + - + - - + + - + - - - + + + + + - + - - + + - + - - + + - - - + - - + + - + - - + + - - + + - - - - - - - - - - - - - - - - diff --git a/BotAPi.iml b/BotAPi.iml index 4ff71c6..448ca73 100644 --- a/BotAPi.iml +++ b/BotAPi.iml @@ -11,50 +11,50 @@ - - - + + + - + - - - - - + + + + + - - - + + + - - + + - + - + - - - + + + - - + + - - + + - + diff --git a/pom.xml b/pom.xml index fa0cd85..7081b55 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ BotApi org.telegram.botapi - 1.0 + 2.0 @@ -24,9 +24,10 @@ UTF-8 UTF-8 - 2.22.1 - 4.5.1 - v1.0 + 4.5.2 + v2.3.3.1 + 20160212 + 5.1.38 @@ -51,25 +52,10 @@ org.glassfish.jersey.containers jersey-container-grizzly2-http - - org.glassfish.jersey.media - jersey-media-json-jackson - ${jersey.version} - - - com.sun.jersey - jersey-bundle - 1.19 - - - com.sun.jersey - jersey-grizzly2-servlet - 1.19 - org.json json - 20151123 + ${json.version} commons-io @@ -89,7 +75,7 @@ mysql mysql-connector-java - 5.1.38 + ${mysql.version} org.jsoup diff --git a/src/main/java/org/telegram/Main.java b/src/main/java/org/telegram/Main.java index aa5a067..474e4ff 100644 --- a/src/main/java/org/telegram/Main.java +++ b/src/main/java/org/telegram/Main.java @@ -1,9 +1,19 @@ package org.telegram; -import org.telegram.services.BotLogger; import org.telegram.telegrambots.TelegramApiException; import org.telegram.telegrambots.TelegramBotsApi; -import org.telegram.updateshandlers.*; +import org.telegram.telegrambots.logging.BotLogger; +import org.telegram.telegrambots.logging.BotsFileHandler; +import org.telegram.updateshandlers.ChannelHandlers; +import org.telegram.updateshandlers.DirectionsHandlers; +import org.telegram.updateshandlers.FilesHandlers; +import org.telegram.updateshandlers.RaeHandlers; +import org.telegram.updateshandlers.TransifexHandlers; +import org.telegram.updateshandlers.WeatherHandlers; + +import java.io.IOException; +import java.util.logging.ConsoleHandler; +import java.util.logging.Level; /** * @author Ruben Bermudez @@ -15,6 +25,13 @@ public class Main { private static final String LOGTAG = "MAIN"; public static void main(String[] args) { + BotLogger.setLevel(Level.ALL); + BotLogger.registerLogger(new ConsoleHandler()); + try { + BotLogger.registerLogger(new BotsFileHandler()); + } catch (IOException e) { + BotLogger.severe("MAIN", e); + } TelegramBotsApi telegramBotsApi = new TelegramBotsApi(); try { diff --git a/src/main/java/org/telegram/database/ConectionDB.java b/src/main/java/org/telegram/database/ConectionDB.java index 5a98513..ed74781 100644 --- a/src/main/java/org/telegram/database/ConectionDB.java +++ b/src/main/java/org/telegram/database/ConectionDB.java @@ -8,9 +8,15 @@ package org.telegram.database; import org.telegram.BuildVars; -import org.telegram.services.BotLogger; +import org.telegram.telegrambots.logging.BotLogger; -import java.sql.*; +import java.sql.Connection; +import java.sql.DatabaseMetaData; +import java.sql.DriverManager; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; /** * @author Ruben Bermudez diff --git a/src/main/java/org/telegram/database/DatabaseManager.java b/src/main/java/org/telegram/database/DatabaseManager.java index 861ed4c..7921338 100644 --- a/src/main/java/org/telegram/database/DatabaseManager.java +++ b/src/main/java/org/telegram/database/DatabaseManager.java @@ -7,8 +7,8 @@ */ package org.telegram.database; -import org.telegram.services.BotLogger; import org.telegram.structure.WeatherAlert; +import org.telegram.telegrambots.logging.BotLogger; import java.sql.PreparedStatement; import java.sql.ResultSet; @@ -566,6 +566,18 @@ public class DatabaseManager { return updatedRows > 0; } + public boolean deleteAlertsForUser(Integer userId) { + int updatedRows = 0; + try { + final PreparedStatement preparedStatement = connetion.getPreparedStatement("DELETE FROM WeatherAlert WHERE userId=?"); + preparedStatement.setInt(1, userId); + updatedRows = preparedStatement.executeUpdate(); + } catch (SQLException e) { + e.printStackTrace(); + } + return updatedRows > 0; + } + public List getAllAlerts() { List allAlerts = new ArrayList<>(); diff --git a/src/main/java/org/telegram/services/BotLogger.java b/src/main/java/org/telegram/services/BotLogger.java deleted file mode 100644 index fd180b9..0000000 --- a/src/main/java/org/telegram/services/BotLogger.java +++ /dev/null @@ -1,348 +0,0 @@ -package org.telegram.services; - -import org.telegram.BuildVars; - -import javax.validation.constraints.NotNull; -import java.io.*; -import java.time.LocalDateTime; -import java.util.concurrent.ConcurrentLinkedQueue; -import java.util.logging.ConsoleHandler; -import java.util.logging.Level; -import java.util.logging.Logger; - -/** - * @author Ruben Bermudez - * @version 2.0 - * @brief Logger to file - * @date 21/01/15 - */ -public class BotLogger { - private static final Object lockToWrite = new Object(); - private static volatile PrintWriter logginFile; - private static volatile String currentFileName; - private static final Logger logger = Logger.getLogger("Tsupport Bot"); - private static volatile LocalDateTime lastFileDate; - private static LoggerThread loggerThread = new LoggerThread(); - private static final ConcurrentLinkedQueue logsToFile = new ConcurrentLinkedQueue<>(); - - static { - logger.setLevel(Level.ALL); - logger.addHandler(new ConsoleHandler()); - loggerThread.start(); - lastFileDate = LocalDateTime.now(); - if ((currentFileName == null) || (currentFileName.compareTo("") == 0)) { - currentFileName = dateFormatterForFileName(lastFileDate) + ".log"; - try { - final File file = new File(currentFileName); - if (file.exists()) { - logginFile = new PrintWriter(new BufferedWriter(new FileWriter(currentFileName, true))); - } else { - final boolean created = file.createNewFile(); - if (created) { - logginFile = new PrintWriter(new BufferedWriter(new FileWriter(currentFileName, true))); - } else { - throw new NullPointerException("File for logging error"); - } - } - } catch (IOException e) { - e.printStackTrace(); - } - - } - } - - public static void log(@NotNull Level level, String tag, String msg) { - logger.log(level, String.format("[%s] %s", tag, msg)); - logToFile(level, tag, msg); - } - - - public static void severe(String tag, String msg) { - logger.severe(String.format("[%s] %s", tag, msg)); - logToFile(Level.SEVERE, tag, msg); - } - - public static void warn(String tag, String msg) { - warning(tag, msg); - } - - public static void debug(String tag, String msg) { - fine(tag, msg); - } - - public static void error(String tag, String msg) { - severe(tag, msg); - } - - public static void trace(String tag, String msg) { - finer(tag, msg); - } - - public static void warning(String tag, String msg) { - logger.warning(String.format("[%s] %s", tag, msg)); - logToFile(Level.WARNING, tag, msg); - } - - - public static void info(String tag, String msg) { - logger.info(String.format("[%s] %s", tag, msg)); - logToFile(Level.INFO, tag, msg); - } - - - public static void config(String tag, String msg) { - logger.config(String.format("[%s] %s", tag, msg)); - logToFile(Level.CONFIG, tag, msg); - } - - - public static void fine(String tag, String msg) { - logger.fine(String.format("[%s] %s", tag, msg)); - logToFile(Level.FINE, tag, msg); - } - - - public static void finer(String tag, String msg) { - logger.finer(String.format("[%s] %s", tag, msg)); - logToFile(Level.FINER, tag, msg); - } - - - public static void finest(String tag, String msg) { - logger.finest(String.format("[%s] %s", tag, msg)); - logToFile(Level.FINEST, tag, msg); - } - - - public static void log(@NotNull Level level, @NotNull String tag, @NotNull Throwable throwable) { - logger.log(level, String.format("[%s] Exception", tag), throwable); - logToFile(level, tag, throwable); - } - - public static void log(@NotNull Level level, @NotNull String tag, @NotNull String msg, @NotNull Throwable thrown) { - logger.log(level, msg, thrown); - logToFile(level, msg, thrown); - } - - public static void severe(@NotNull String tag, @NotNull Throwable throwable) { - logToFile(Level.SEVERE, tag, throwable); - } - - public static void warning(@NotNull String tag, @NotNull Throwable throwable) { - logToFile(Level.WARNING, tag, throwable); - } - - public static void info(@NotNull String tag, @NotNull Throwable throwable) { - logToFile(Level.INFO, tag, throwable); - } - - public static void config(@NotNull String tag, @NotNull Throwable throwable) { - logToFile(Level.CONFIG, tag, throwable); - } - - public static void fine(@NotNull String tag, @NotNull Throwable throwable) { - logToFile(Level.FINE, tag, throwable); - } - - public static void finer(@NotNull String tag, @NotNull Throwable throwable) { - logToFile(Level.FINER, tag, throwable); - } - - public static void finest(@NotNull String tag, @NotNull Throwable throwable) { - logToFile(Level.FINEST, tag, throwable); - } - - public static void warn(@NotNull String tag, Throwable throwable) { - warning(tag, throwable); - } - - public static void debug(@NotNull String tag, Throwable throwable) { - fine(tag, throwable); - } - - public static void error(@NotNull String tag, Throwable throwable) { - severe(tag, throwable); - } - - public static void trace(@NotNull String tag, Throwable throwable) { - finer(tag, throwable); - } - - public static void severe(@NotNull String msg, @NotNull String tag, @NotNull Throwable throwable) { - log(Level.SEVERE, tag, msg, throwable); - } - - public static void warning(@NotNull String msg, @NotNull String tag, @NotNull Throwable throwable) { - log(Level.WARNING, tag, msg, throwable); - } - - public static void info(@NotNull String msg, @NotNull String tag, @NotNull Throwable throwable) { - log(Level.INFO, tag, msg, throwable); - } - - public static void config(@NotNull String msg, @NotNull String tag, @NotNull Throwable throwable) { - log(Level.CONFIG, tag, msg, throwable); - } - - public static void fine(@NotNull String msg, @NotNull String tag, @NotNull Throwable throwable) { - log(Level.FINE, tag, msg, throwable); - } - - public static void finer(@NotNull String msg, @NotNull String tag, @NotNull Throwable throwable) { - log(Level.FINER, tag, msg, throwable); - } - - public static void finest(@NotNull String msg, @NotNull String tag, @NotNull Throwable throwable) { - log(Level.FINEST, msg, throwable); - } - - public static void warn(@NotNull String msg, @NotNull String tag, @NotNull Throwable throwable) { - log(Level.WARNING, tag, msg, throwable); - } - - public static void debug(@NotNull String msg, @NotNull String tag, @NotNull Throwable throwable) { - log(Level.FINE, tag, msg, throwable); - } - - public static void error(@NotNull String msg, @NotNull String tag, @NotNull Throwable throwable) { - log(Level.SEVERE, tag, msg, throwable); - } - - public static void trace(@NotNull String msg, @NotNull String tag, @NotNull Throwable throwable) { - log(Level.FINER, tag, msg, throwable); - } - - private static boolean isCurrentDate(LocalDateTime dateTime) { - return dateTime.toLocalDate().isEqual(lastFileDate.toLocalDate()); - } - - private static String dateFormatterForFileName(@NotNull LocalDateTime dateTime) { - String dateString = ""; - dateString += dateTime.getDayOfMonth(); - dateString += dateTime.getMonthValue(); - dateString += dateTime.getYear(); - return dateString; - } - - private static String dateFormatterForLogs(@NotNull LocalDateTime dateTime) { - String dateString = "["; - dateString += dateTime.getDayOfMonth() + "_"; - dateString += dateTime.getMonthValue() + "_"; - dateString += dateTime.getYear() + "_"; - dateString += dateTime.getHour() + ":"; - dateString += dateTime.getMinute() + ":"; - dateString += dateTime.getSecond(); - dateString += "] "; - return dateString; - } - - private static void updateAndCreateFile(LocalDateTime dateTime) { - if (!isCurrentDate(dateTime)) { - lastFileDate = LocalDateTime.now(); - currentFileName = BuildVars.pathToLogs + dateFormatterForFileName(lastFileDate) + ".log"; - try { - logginFile.flush(); - logginFile.close(); - final File file = new File(currentFileName); - if (file.exists()) { - logginFile = new PrintWriter(new BufferedWriter(new FileWriter(currentFileName, true))); - } else { - final boolean created = file.createNewFile(); - if (created) { - logginFile = new PrintWriter(new BufferedWriter(new FileWriter(currentFileName, true))); - } else { - throw new NullPointerException("Error updating log file"); - } - } - } catch (IOException ignored) { - } - } - } - - - private static void logToFile(@NotNull Level level, @NotNull String tag, @NotNull Throwable throwable) { - if (isLoggable(level)) { - synchronized (lockToWrite) { - final LocalDateTime currentDate = LocalDateTime.now(); - final String dateForLog = dateFormatterForLogs(currentDate); - updateAndCreateFile(currentDate); - logThrowableToFile(level, tag, throwable, dateForLog); - } - } - } - - - - private static void logToFile(@NotNull Level level, @NotNull String tag, @NotNull String msg) { - if (isLoggable(level)) { - synchronized (lockToWrite) { - final LocalDateTime currentDate = LocalDateTime.now(); - updateAndCreateFile(currentDate); - final String dateForLog = dateFormatterForLogs(currentDate); - logMsgToFile(level, tag, msg, dateForLog); - } - } - } - - private static void logToFile(Level level, @NotNull String tag, @NotNull String msg, @NotNull Throwable throwable) { - if (isLoggable(level)) { - synchronized (lockToWrite) { - final LocalDateTime currentDate = LocalDateTime.now(); - updateAndCreateFile(currentDate); - final String dateForLog = dateFormatterForLogs(currentDate); - logMsgToFile(level, tag, msg, dateForLog); - logThrowableToFile(level, tag, throwable, dateForLog); - } - } - } - - private static void logMsgToFile(@NotNull Level level, @NotNull String tag, @NotNull String msg, @NotNull String dateForLog) { - final String logMessage = String.format("%s{%s} %s - %s", dateForLog, level.toString(), tag, msg); - logsToFile.add(logMessage); - synchronized (logsToFile) { - logsToFile.notifyAll(); - } - } - - private static void logThrowableToFile(@NotNull Level level, @NotNull String tag, @NotNull Throwable throwable, @NotNull String dateForLog) { - String throwableLog = String.format("%s{%s} %s - %s", dateForLog, level.toString(), tag, throwable.toString()); - for (StackTraceElement element : throwable.getStackTrace()) { - throwableLog += "\tat " + element + "\n"; - } - logsToFile.add(throwableLog); - synchronized (logsToFile) { - logsToFile.notifyAll(); - } - } - - private static boolean isLoggable(Level level) { - return logger.isLoggable(level) && BuildVars.debug; - } - - private static class LoggerThread extends Thread { - - @Override - public void run() { - while(true) { - final ConcurrentLinkedQueue stringsToLog = new ConcurrentLinkedQueue<>(); - synchronized (logsToFile) { - if (logsToFile.isEmpty()) { - try { - logsToFile.wait(); - } catch (InterruptedException e) { - return; - } - if (logsToFile.isEmpty()) { - continue; - } - } - stringsToLog.addAll(logsToFile); - logsToFile.clear(); - } - - stringsToLog.stream().forEach(logginFile::println); - logginFile.flush(); - } - } - } -} diff --git a/src/main/java/org/telegram/services/DirectionsService.java b/src/main/java/org/telegram/services/DirectionsService.java index 305a651..bd96e97 100644 --- a/src/main/java/org/telegram/services/DirectionsService.java +++ b/src/main/java/org/telegram/services/DirectionsService.java @@ -12,6 +12,7 @@ import org.json.JSONArray; import org.json.JSONObject; import org.jsoup.Jsoup; import org.telegram.BuildVars; +import org.telegram.telegrambots.logging.BotLogger; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; diff --git a/src/main/java/org/telegram/services/RaeService.java b/src/main/java/org/telegram/services/RaeService.java index 13712d9..505fb63 100644 --- a/src/main/java/org/telegram/services/RaeService.java +++ b/src/main/java/org/telegram/services/RaeService.java @@ -12,6 +12,7 @@ import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; +import org.telegram.telegrambots.logging.BotLogger; import java.io.IOException; import java.net.URLEncoder; diff --git a/src/main/java/org/telegram/services/TimerExecutor.java b/src/main/java/org/telegram/services/TimerExecutor.java index 278313e..68387f6 100644 --- a/src/main/java/org/telegram/services/TimerExecutor.java +++ b/src/main/java/org/telegram/services/TimerExecutor.java @@ -1,5 +1,7 @@ package org.telegram.services; +import org.telegram.telegrambots.logging.BotLogger; + import java.time.Clock; import java.time.Duration; import java.time.LocalDateTime; diff --git a/src/main/java/org/telegram/services/TransifexService.java b/src/main/java/org/telegram/services/TransifexService.java index ce8bb37..ce701ca 100644 --- a/src/main/java/org/telegram/services/TransifexService.java +++ b/src/main/java/org/telegram/services/TransifexService.java @@ -8,9 +8,16 @@ import org.apache.http.conn.ssl.NoopHostnameVerifier; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClientBuilder; import org.telegram.BuildVars; -import org.telegram.telegrambots.api.methods.SendDocument; +import org.telegram.telegrambots.api.methods.send.SendDocument; +import org.telegram.telegrambots.logging.BotLogger; -import java.io.*; +import java.io.BufferedReader; +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.PrintWriter; /** * @author Ruben Bermudez diff --git a/src/main/java/org/telegram/services/WeatherService.java b/src/main/java/org/telegram/services/WeatherService.java index 880a92a..a7a96ac 100644 --- a/src/main/java/org/telegram/services/WeatherService.java +++ b/src/main/java/org/telegram/services/WeatherService.java @@ -11,6 +11,7 @@ import org.apache.http.util.EntityUtils; import org.json.JSONObject; import org.telegram.BuildVars; import org.telegram.database.DatabaseManager; +import org.telegram.telegrambots.logging.BotLogger; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; diff --git a/src/main/java/org/telegram/updateshandlers/ChannelHandlers.java b/src/main/java/org/telegram/updateshandlers/ChannelHandlers.java index 85db7c2..1ff8323 100644 --- a/src/main/java/org/telegram/updateshandlers/ChannelHandlers.java +++ b/src/main/java/org/telegram/updateshandlers/ChannelHandlers.java @@ -1,14 +1,14 @@ package org.telegram.updateshandlers; import org.telegram.BotConfig; -import org.telegram.services.BotLogger; import org.telegram.telegrambots.TelegramApiException; -import org.telegram.telegrambots.api.methods.SendMessage; -import org.telegram.telegrambots.api.objects.ForceReplyKeyboard; +import org.telegram.telegrambots.api.methods.send.SendMessage; import org.telegram.telegrambots.api.objects.Message; -import org.telegram.telegrambots.api.objects.ReplyKeyboardMarkup; import org.telegram.telegrambots.api.objects.Update; +import org.telegram.telegrambots.api.objects.replykeyboard.ForceReplyKeyboard; +import org.telegram.telegrambots.api.objects.replykeyboard.ReplyKeyboardMarkup; import org.telegram.telegrambots.bots.TelegramLongPollingBot; +import org.telegram.telegrambots.logging.BotLogger; import java.io.InvalidObjectException; import java.util.concurrent.ConcurrentHashMap; @@ -36,13 +36,17 @@ public class ChannelHandlers extends TelegramLongPollingBot { @Override public void onUpdateReceived(Update update) { - Message message = update.getMessage(); - if (message != null && message.hasText()) { - try { - handleIncomingMessage(message); - } catch (InvalidObjectException e) { - BotLogger.severe(LOGTAG, e); + try { + Message message = update.getMessage(); + if (message != null && message.hasText()) { + try { + handleIncomingMessage(message); + } catch (InvalidObjectException e) { + BotLogger.severe(LOGTAG, e); + } } + } catch (Exception e) { + BotLogger.error(LOGTAG, e); } } diff --git a/src/main/java/org/telegram/updateshandlers/DirectionsHandlers.java b/src/main/java/org/telegram/updateshandlers/DirectionsHandlers.java index e53057b..366c9c1 100644 --- a/src/main/java/org/telegram/updateshandlers/DirectionsHandlers.java +++ b/src/main/java/org/telegram/updateshandlers/DirectionsHandlers.java @@ -4,14 +4,19 @@ import org.json.JSONObject; import org.telegram.BotConfig; import org.telegram.Commands; import org.telegram.database.DatabaseManager; -import org.telegram.services.BotLogger; import org.telegram.services.DirectionsService; import org.telegram.services.LocalisationService; import org.telegram.telegrambots.TelegramApiException; import org.telegram.telegrambots.api.methods.BotApiMethod; -import org.telegram.telegrambots.api.methods.SendMessage; -import org.telegram.telegrambots.api.objects.*; +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.ForceReplyKeyboard; +import org.telegram.telegrambots.api.objects.replykeyboard.ReplyKeyboardHide; +import org.telegram.telegrambots.api.objects.replykeyboard.ReplyKeyboardMarkup; +import org.telegram.telegrambots.api.objects.replykeyboard.buttons.KeyboardRow; import org.telegram.telegrambots.bots.TelegramLongPollingBot; +import org.telegram.telegrambots.logging.BotLogger; import org.telegram.telegrambots.updateshandlers.SentCallback; import java.io.InvalidObjectException; @@ -44,7 +49,7 @@ public class DirectionsHandlers extends TelegramLongPollingBot { public void onUpdateReceived(Update update) { try { handleDirections(update); - } catch (InvalidObjectException e) { + } catch (Exception e) { BotLogger.error(LOGTAG, e); } } @@ -71,15 +76,15 @@ public class DirectionsHandlers extends TelegramLongPollingBot { sendHelpMessage(message, language); } else if (!message.getText().startsWith("/")) { if (DatabaseManager.getInstance().getUserDestinationStatus(message.getFrom().getId()) == WATING_ORIGIN_STATUS && - message.hasReplayMessage() && + message.isReply() && DatabaseManager.getInstance().getUserDestinationMessageId(message.getFrom().getId()) == message.getReplyToMessage().getMessageId()) { onOriginReceived(message, language); } else if (DatabaseManager.getInstance().getUserDestinationStatus(message.getFrom().getId()) == WATING_DESTINY_STATUS && - message.hasReplayMessage() && + message.isReply() && DatabaseManager.getInstance().getUserDestinationMessageId(message.getFrom().getId()) == message.getReplyToMessage().getMessageId()) { onDestinationReceived(message, language); - } else if (!message.hasReplayMessage()) { + } else if (!message.isReply()) { if (DatabaseManager.getInstance().getUserDestinationStatus(message.getFrom().getId()) == -1) { sendHelpMessage(message, language); } else { @@ -222,9 +227,9 @@ public class DirectionsHandlers extends TelegramLongPollingBot { sendMessageRequest.setChatId(message.getChatId().toString()); ReplyKeyboardMarkup replyKeyboardMarkup = new ReplyKeyboardMarkup(); HashMap languages = LocalisationService.getInstance().getSupportedLanguages(); - List> commands = new ArrayList<>(); + List commands = new ArrayList<>(); for (Map.Entry entry : languages.entrySet()) { - List commandRow = new ArrayList<>(); + KeyboardRow commandRow = new KeyboardRow(); commandRow.add(entry.getKey() + " --> " + entry.getValue()); commands.add(commandRow); } diff --git a/src/main/java/org/telegram/updateshandlers/FilesHandlers.java b/src/main/java/org/telegram/updateshandlers/FilesHandlers.java index f0c9420..b5d1113 100644 --- a/src/main/java/org/telegram/updateshandlers/FilesHandlers.java +++ b/src/main/java/org/telegram/updateshandlers/FilesHandlers.java @@ -3,17 +3,18 @@ package org.telegram.updateshandlers; import org.telegram.BotConfig; import org.telegram.Commands; import org.telegram.database.DatabaseManager; -import org.telegram.services.BotLogger; import org.telegram.services.Emoji; import org.telegram.services.LocalisationService; import org.telegram.telegrambots.TelegramApiException; -import org.telegram.telegrambots.api.methods.SendDocument; -import org.telegram.telegrambots.api.methods.SendMessage; +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.ReplyKeyboardHide; -import org.telegram.telegrambots.api.objects.ReplyKeyboardMarkup; import org.telegram.telegrambots.api.objects.Update; +import org.telegram.telegrambots.api.objects.replykeyboard.ReplyKeyboardHide; +import org.telegram.telegrambots.api.objects.replykeyboard.ReplyKeyboardMarkup; +import org.telegram.telegrambots.api.objects.replykeyboard.buttons.KeyboardRow; import org.telegram.telegrambots.bots.TelegramLongPollingBot; +import org.telegram.telegrambots.logging.BotLogger; import java.io.InvalidObjectException; import java.util.ArrayList; @@ -44,8 +45,18 @@ public class FilesHandlers extends TelegramLongPollingBot { @Override public void onUpdateReceived(Update update) { try { - handleFileUpdate(update); - } catch (InvalidObjectException e) { + if (update.hasMessage()) { + try { + handleFileUpdate(update); + } catch (TelegramApiException e) { + if (e.getApiResponse().contains("Bot was blocked by the user")) { + if (update.getMessage().getFrom() != null) { + DatabaseManager.getInstance().deleteUserForFile(update.getMessage().getFrom().getId()); + } + } + } + } + } catch (Exception e) { BotLogger.error(LOGTAG, e); } } @@ -55,7 +66,7 @@ public class FilesHandlers extends TelegramLongPollingBot { return BotConfig.USERNAMEFILES; } - private void handleFileUpdate(Update update) throws InvalidObjectException { + private void handleFileUpdate(Update update) throws InvalidObjectException, TelegramApiException { Message message = update.getMessage(); if (message != null && message.hasText()) { if (languageMessages.contains(message.getFrom().getId())) { @@ -95,15 +106,11 @@ public class FilesHandlers extends TelegramLongPollingBot { sendMessageRequest.setText(LocalisationService.getInstance().getString("fileUploaded", language) + LocalisationService.getInstance().getString("uploadedFileURL", language) + message.getDocument().getFileId()); sendMessageRequest.setChatId(message.getChatId().toString()); - try { - sendMessage(sendMessageRequest); - } catch (TelegramApiException e) { - BotLogger.error(LOGTAG, e); - } + sendMessage(sendMessageRequest); } } - private void onListCommand(Message message, String language) throws InvalidObjectException { + private void onListCommand(Message message, String language) throws InvalidObjectException, TelegramApiException { HashMap files = DatabaseManager.getInstance().getFilesByUser(message.getFrom().getId()); SendMessage sendMessageRequest = new SendMessage(); if (files.size() > 0) { @@ -120,14 +127,10 @@ public class FilesHandlers extends TelegramLongPollingBot { ReplyKeyboardHide replyKeyboardHide = new ReplyKeyboardHide(); replyKeyboardHide.setHideKeyboard(true); sendMessageRequest.setReplayMarkup(replyKeyboardHide); - try { - sendMessage(sendMessageRequest); - } catch (TelegramApiException e) { - BotLogger.error(LOGTAG, e); - } + sendMessage(sendMessageRequest); } - private void onDeleteCommand(Message message, String language, String[] parts) throws InvalidObjectException { + private void onDeleteCommand(Message message, String language, String[] parts) throws InvalidObjectException, TelegramApiException { if (DatabaseManager.getInstance().getUserStatusForFile(message.getFrom().getId()) == DELETE_UPLOADED_STATUS && parts.length == 2) { onDeleteCommandWithParameters(message, language, parts[1]); @@ -136,7 +139,7 @@ public class FilesHandlers extends TelegramLongPollingBot { } } - private void onDeleteCommandWithoutParameters(Message message, String language) throws InvalidObjectException { + private void onDeleteCommandWithoutParameters(Message message, String language) throws InvalidObjectException, TelegramApiException { DatabaseManager.getInstance().addUserForFile(message.getFrom().getId(), DELETE_UPLOADED_STATUS); SendMessage sendMessageRequest = new SendMessage(); sendMessageRequest.setText(LocalisationService.getInstance().getString("deleteUploadedFile", language)); @@ -144,9 +147,9 @@ public class FilesHandlers extends TelegramLongPollingBot { HashMap files = DatabaseManager.getInstance().getFilesByUser(message.getFrom().getId()); ReplyKeyboardMarkup replyKeyboardMarkup = new ReplyKeyboardMarkup(); if (files.size() > 0) { - List> commands = new ArrayList<>(); + List commands = new ArrayList<>(); for (Map.Entry entry : files.entrySet()) { - List commandRow = new ArrayList<>(); + KeyboardRow commandRow = new KeyboardRow(); commandRow.add(Commands.deleteCommand + " " + entry.getKey() + " " + Emoji.LEFT_RIGHT_ARROW.toString() + " " + entry.getValue()); commands.add(commandRow); @@ -156,14 +159,10 @@ public class FilesHandlers extends TelegramLongPollingBot { replyKeyboardMarkup.setKeyboard(commands); } sendMessageRequest.setReplayMarkup(replyKeyboardMarkup); - try { - sendMessage(sendMessageRequest); - } catch (TelegramApiException e) { - BotLogger.error(LOGTAG, e); - } + sendMessage(sendMessageRequest); } - private void onDeleteCommandWithParameters(Message message, String language, String part) throws InvalidObjectException { + private void onDeleteCommandWithParameters(Message message, String language, String part) throws InvalidObjectException, TelegramApiException { String[] innerParts = part.split(Emoji.LEFT_RIGHT_ARROW.toString(), 2); boolean removed = DatabaseManager.getInstance().deleteFile(innerParts[0].trim()); SendMessage sendMessageRequest = new SendMessage(); @@ -173,40 +172,29 @@ public class FilesHandlers extends TelegramLongPollingBot { sendMessageRequest.setText(LocalisationService.getInstance().getString("wrongFileId", language)); } sendMessageRequest.setChatId(message.getChatId().toString()); - try { - sendMessage(sendMessageRequest); - DatabaseManager.getInstance().deleteUserForFile(message.getFrom().getId()); - } catch (TelegramApiException e) { - BotLogger.error(LOGTAG, e); - } + + sendMessage(sendMessageRequest); + DatabaseManager.getInstance().deleteUserForFile(message.getFrom().getId()); } - private void onCancelCommand(Message message, String language) throws InvalidObjectException { + private void onCancelCommand(Message message, String language) throws InvalidObjectException, TelegramApiException { DatabaseManager.getInstance().deleteUserForFile(message.getFrom().getId()); SendMessage sendMessageRequest = new SendMessage(); sendMessageRequest.setText(LocalisationService.getInstance().getString("processFinished", language)); sendMessageRequest.setChatId(message.getChatId().toString()); - try { - sendMessage(sendMessageRequest); - } catch (TelegramApiException e) { - BotLogger.error(LOGTAG, e); - } + sendMessage(sendMessageRequest); } - private void onUploadCommand(Message message, String language) throws InvalidObjectException { + private void onUploadCommand(Message message, String language) throws InvalidObjectException, TelegramApiException { DatabaseManager.getInstance().addUserForFile(message.getFrom().getId(), INITIAL_UPLOAD_STATUS); SendMessage sendMessageRequest = new SendMessage(); sendMessageRequest.setText(LocalisationService.getInstance().getString("sendFileToUpload", language)); sendMessageRequest.setChatId(message.getChatId().toString()); - try { - sendMessage(sendMessageRequest); - } catch (TelegramApiException e) { - BotLogger.error(LOGTAG, e); - } + sendMessage(sendMessageRequest); } - private void sendHelpMessage(Message message, String language) throws InvalidObjectException { + private void sendHelpMessage(Message message, String language) throws InvalidObjectException, TelegramApiException { SendMessage sendMessageRequest = new SendMessage(); String formatedString = String.format( LocalisationService.getInstance().getString("helpFiles", language), @@ -214,39 +202,31 @@ public class FilesHandlers extends TelegramLongPollingBot { Commands.listCommand); sendMessageRequest.setText(formatedString); sendMessageRequest.setChatId(message.getChatId().toString()); - try { - sendMessage(sendMessageRequest); - } catch (TelegramApiException e) { - BotLogger.error(LOGTAG, e); - } + sendMessage(sendMessageRequest); } - private void onStartWithParameters(Message message, String language, String part) throws InvalidObjectException { - try { - if (DatabaseManager.getInstance().doesFileExists(part.trim())) { - SendDocument sendDocumentRequest = new SendDocument(); - sendDocumentRequest.setDocument(part.trim()); - sendDocumentRequest.setChatId(message.getChatId().toString()); - sendDocument(sendDocumentRequest); - } else { - SendMessage sendMessageRequest = new SendMessage(); - sendMessageRequest.setText(LocalisationService.getInstance().getString("wrongFileId", language)); - sendMessageRequest.setChatId(message.getChatId().toString()); - sendMessage(sendMessageRequest); - } - } catch (TelegramApiException e) { - BotLogger.error(LOGTAG, e); + private void onStartWithParameters(Message message, String language, String part) throws InvalidObjectException, TelegramApiException { + if (DatabaseManager.getInstance().doesFileExists(part.trim())) { + SendDocument sendDocumentRequest = new SendDocument(); + sendDocumentRequest.setDocument(part.trim()); + sendDocumentRequest.setChatId(message.getChatId().toString()); + sendDocument(sendDocumentRequest); + } else { + SendMessage sendMessageRequest = new SendMessage(); + sendMessageRequest.setText(LocalisationService.getInstance().getString("wrongFileId", language)); + sendMessageRequest.setChatId(message.getChatId().toString()); + sendMessage(sendMessageRequest); } } - private void onSetLanguageCommand(Message message, String language) throws InvalidObjectException { + private void onSetLanguageCommand(Message message, String language) throws InvalidObjectException, TelegramApiException { SendMessage sendMessageRequest = new SendMessage(); sendMessageRequest.setChatId(message.getChatId().toString()); ReplyKeyboardMarkup replyKeyboardMarkup = new ReplyKeyboardMarkup(); HashMap languages = LocalisationService.getInstance().getSupportedLanguages(); - List> commands = new ArrayList<>(); + List commands = new ArrayList<>(); for (Map.Entry entry : languages.entrySet()) { - List commandRow = new ArrayList<>(); + KeyboardRow commandRow = new KeyboardRow(); commandRow.add(entry.getKey() + " " + Emoji.LEFT_RIGHT_ARROW.toString() + " " + entry.getValue()); commands.add(commandRow); } @@ -256,15 +236,11 @@ public class FilesHandlers extends TelegramLongPollingBot { replyKeyboardMarkup.setSelective(true); sendMessageRequest.setReplayMarkup(replyKeyboardMarkup); sendMessageRequest.setText(LocalisationService.getInstance().getString("chooselanguage", language)); - try { - sendMessage(sendMessageRequest); - languageMessages.add(message.getFrom().getId()); - } catch (TelegramApiException e) { - BotLogger.error(LOGTAG, e); - } + sendMessage(sendMessageRequest); + languageMessages.add(message.getFrom().getId()); } - private void onLanguageReceived(Message message) throws InvalidObjectException { + private void onLanguageReceived(Message message) throws InvalidObjectException, TelegramApiException { String[] parts = message.getText().split(Emoji.LEFT_RIGHT_ARROW.toString(), 2); SendMessage sendMessageRequest = new SendMessage(); sendMessageRequest.setChatId(message.getChatId().toString()); @@ -279,11 +255,7 @@ public class FilesHandlers extends TelegramLongPollingBot { replyKeyboardHide.setHideKeyboard(true); replyKeyboardHide.setSelective(true); sendMessageRequest.setReplayMarkup(replyKeyboardHide); - try { - sendMessage(sendMessageRequest); - languageMessages.remove(message.getFrom().getId()); - } catch (TelegramApiException e) { - BotLogger.error(LOGTAG, e); - } + sendMessage(sendMessageRequest); + languageMessages.remove(message.getFrom().getId()); } } diff --git a/src/main/java/org/telegram/updateshandlers/RaeHandlers.java b/src/main/java/org/telegram/updateshandlers/RaeHandlers.java index 6637772..7aac6ef 100644 --- a/src/main/java/org/telegram/updateshandlers/RaeHandlers.java +++ b/src/main/java/org/telegram/updateshandlers/RaeHandlers.java @@ -1,13 +1,18 @@ package org.telegram.updateshandlers; import org.telegram.BotConfig; -import org.telegram.services.BotLogger; import org.telegram.services.RaeService; import org.telegram.telegrambots.TelegramApiException; import org.telegram.telegrambots.api.methods.AnswerInlineQuery; -import org.telegram.telegrambots.api.methods.SendMessage; -import org.telegram.telegrambots.api.objects.*; +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.inlinequery.InlineQuery; +import org.telegram.telegrambots.api.objects.inlinequery.inputmessagecontent.InputTextMessageContent; +import org.telegram.telegrambots.api.objects.inlinequery.result.InlineQueryResult; +import org.telegram.telegrambots.api.objects.inlinequery.result.InlineQueryResultArticle; import org.telegram.telegrambots.bots.TelegramLongPollingBot; +import org.telegram.telegrambots.logging.BotLogger; import java.util.ArrayList; import java.util.List; @@ -38,14 +43,18 @@ public class RaeHandlers extends TelegramLongPollingBot { @Override public void onUpdateReceived(Update update) { - if (update.hasInlineQuery()) { - handleIncomingInlineQuery(update.getInlineQuery()); - } else if (update.hasMessage() && update.getMessage().isUserMessage()) { - try { - sendMessage(getHelpMessage(update.getMessage())); - } catch (TelegramApiException e) { - e.printStackTrace(); + try { + if (update.hasInlineQuery()) { + handleIncomingInlineQuery(update.getInlineQuery()); + } else if (update.hasMessage() && update.getMessage().isUserMessage()) { + try { + sendMessage(getHelpMessage(update.getMessage())); + } catch (TelegramApiException e) { + BotLogger.error(LOGTAG, e); + } } + } catch (Exception e) { + BotLogger.error(LOGTAG, e); } } @@ -64,9 +73,9 @@ public class RaeHandlers extends TelegramLongPollingBot { try { if (!query.isEmpty()) { List results = raeService.getResults(query); - sendAnswerInlineQuery(converteResultsToResponse(inlineQuery, results)); + answerInlineQuery(converteResultsToResponse(inlineQuery, results)); } else { - sendAnswerInlineQuery(converteResultsToResponse(inlineQuery, new ArrayList<>())); + answerInlineQuery(converteResultsToResponse(inlineQuery, new ArrayList<>())); } } catch (TelegramApiException e) { BotLogger.error(LOGTAG, e); @@ -97,11 +106,13 @@ public class RaeHandlers extends TelegramLongPollingBot { for (int i = 0; i < raeResults.size(); i++) { RaeService.RaeResult raeResult = raeResults.get(i); + InputTextMessageContent messageContent = new InputTextMessageContent(); + messageContent.disableWebPagePreview(); + messageContent.enableMarkdown(true); + messageContent.setMessageText(raeResult.getDefinition()); InlineQueryResultArticle article = new InlineQueryResultArticle(); - article.setDisableWebPagePreview(true); - article.enableMarkdown(true); + article.setInputMessageContent(messageContent); article.setId(Integer.toString(i)); - article.setMessageText(raeResult.getDefinition()); article.setTitle(raeResult.getTitle()); article.setDescription(raeResult.getDescription()); article.setThumbUrl(THUMBNAILBLUE); diff --git a/src/main/java/org/telegram/updateshandlers/TransifexHandlers.java b/src/main/java/org/telegram/updateshandlers/TransifexHandlers.java index 5b8bb4e..0929911 100644 --- a/src/main/java/org/telegram/updateshandlers/TransifexHandlers.java +++ b/src/main/java/org/telegram/updateshandlers/TransifexHandlers.java @@ -3,15 +3,15 @@ package org.telegram.updateshandlers; import org.telegram.BotConfig; import org.telegram.Commands; import org.telegram.database.DatabaseManager; -import org.telegram.services.BotLogger; import org.telegram.services.LocalisationService; import org.telegram.services.TransifexService; import org.telegram.telegrambots.TelegramApiException; -import org.telegram.telegrambots.api.methods.SendDocument; -import org.telegram.telegrambots.api.methods.SendMessage; +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.bots.TelegramLongPollingBot; +import org.telegram.telegrambots.logging.BotLogger; import java.io.InvalidObjectException; @@ -33,7 +33,7 @@ public class TransifexHandlers extends TelegramLongPollingBot { public void onUpdateReceived(Update update) { try { sendTransifexFile(update); - } catch (InvalidObjectException e) { + } catch (Exception e) { BotLogger.error(LOGTAG, e); } } diff --git a/src/main/java/org/telegram/updateshandlers/WeatherHandlers.java b/src/main/java/org/telegram/updateshandlers/WeatherHandlers.java index 3232b6a..87f85c4 100644 --- a/src/main/java/org/telegram/updateshandlers/WeatherHandlers.java +++ b/src/main/java/org/telegram/updateshandlers/WeatherHandlers.java @@ -3,12 +3,23 @@ package org.telegram.updateshandlers; import org.telegram.BotConfig; import org.telegram.Commands; import org.telegram.database.DatabaseManager; -import org.telegram.services.*; +import org.telegram.services.CustomTimerTask; +import org.telegram.services.Emoji; +import org.telegram.services.LocalisationService; +import org.telegram.services.TimerExecutor; +import org.telegram.services.WeatherService; import org.telegram.structure.WeatherAlert; import org.telegram.telegrambots.TelegramApiException; -import org.telegram.telegrambots.api.methods.SendMessage; -import org.telegram.telegrambots.api.objects.*; +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.ForceReplyKeyboard; +import org.telegram.telegrambots.api.objects.replykeyboard.ReplyKeyboard; +import org.telegram.telegrambots.api.objects.replykeyboard.ReplyKeyboardHide; +import org.telegram.telegrambots.api.objects.replykeyboard.ReplyKeyboardMarkup; +import org.telegram.telegrambots.api.objects.replykeyboard.buttons.KeyboardRow; import org.telegram.telegrambots.bots.TelegramLongPollingBot; +import org.telegram.telegrambots.logging.BotLogger; import java.util.ArrayList; import java.util.List; @@ -49,11 +60,15 @@ public class WeatherHandlers extends TelegramLongPollingBot { @Override public void onUpdateReceived(Update update) { - if (update.hasMessage()) { - Message message = update.getMessage(); - if (message.hasText() || message.hasLocation()) { - handleIncomingMessage(message); + try { + if (update.hasMessage()) { + Message message = update.getMessage(); + if (message.hasText() || message.hasLocation()) { + handleIncomingMessage(message); + } } + } catch (Exception e) { + BotLogger.error(LOGTAG, e); } } @@ -98,7 +113,12 @@ public class WeatherHandlers extends TelegramLongPollingBot { try { sendMessage(sendMessage); } catch (TelegramApiException e) { - BotLogger.error(LOGTAG, e); + BotLogger.warn(LOGTAG, e); + if (e.getApiResponse().contains("Can't access the chat") || e.getApiResponse().contains("Bot was blocked by the user")) { + DatabaseManager.getInstance().deleteAlertsForUser(weatherAlert.getUserId()); + } + } catch (Exception e) { + BotLogger.severe(LOGTAG, e); } } } @@ -118,7 +138,7 @@ public class WeatherHandlers extends TelegramLongPollingBot { // region Incoming messages handlers - private void handleIncomingMessage(Message message) { + private void handleIncomingMessage(Message message) throws TelegramApiException { final int state = DatabaseManager.getInstance().getWeatherState(message.getFrom().getId(), message.getChatId()); final String language = DatabaseManager.getInstance().getUserWeatherOptions(message.getFrom().getId())[0]; if (!message.isUserMessage() && message.hasText()) { @@ -163,14 +183,10 @@ public class WeatherHandlers extends TelegramLongPollingBot { break; } - try { sendMessage(sendMessageRequest); - } catch (TelegramApiException e) { - BotLogger.error(LOGTAG, e); - } } - private void sendHideKeyboard(Integer userId, Long chatId, Integer messageId) { + private void sendHideKeyboard(Integer userId, Long chatId, Integer messageId) throws TelegramApiException { SendMessage sendMessage = new SendMessage(); sendMessage.setChatId(chatId.toString()); sendMessage.enableMarkdown(true); @@ -182,13 +198,8 @@ public class WeatherHandlers extends TelegramLongPollingBot { replyKeyboardHide.setHideKeyboard(true); sendMessage.setReplayMarkup(replyKeyboardHide); - try { - sendMessage(sendMessage); - DatabaseManager.getInstance().insertWeatherState(userId, chatId, STARTSTATE); - } catch (TelegramApiException e) { - BotLogger.error(LOGTAG, e); - } - + sendMessage(sendMessage); + DatabaseManager.getInstance().insertWeatherState(userId, chatId, STARTSTATE); } private static boolean isCommandForOther(String text) { @@ -899,11 +910,11 @@ public class WeatherHandlers extends TelegramLongPollingBot { replyKeyboardMarkup.setResizeKeyboard(true); replyKeyboardMarkup.setOneTimeKeyboad(false); - List> keyboard = new ArrayList<>(); - List keyboardFirstRow = new ArrayList<>(); + List keyboard = new ArrayList<>(); + KeyboardRow keyboardFirstRow = new KeyboardRow(); keyboardFirstRow.add(getCurrentCommand(language)); keyboardFirstRow.add(getForecastCommand(language)); - List keyboardSecondRow = new ArrayList<>(); + KeyboardRow keyboardSecondRow = new KeyboardRow(); keyboardSecondRow.add(getSettingsCommand(language)); keyboardSecondRow.add(getRateCommand(language)); keyboard.add(keyboardFirstRow); @@ -919,14 +930,14 @@ public class WeatherHandlers extends TelegramLongPollingBot { replyKeyboardMarkup.setResizeKeyboard(true); replyKeyboardMarkup.setOneTimeKeyboad(false); - List> keyboard = new ArrayList<>(); + List keyboard = new ArrayList<>(); for (String languageName : LocalisationService.getInstance().getSupportedLanguages().values()) { - List row = new ArrayList<>(); + KeyboardRow row = new KeyboardRow(); row.add(languageName); keyboard.add(row); } - List row = new ArrayList<>(); + KeyboardRow row = new KeyboardRow(); row.add(getCancelCommand(language)); keyboard.add(row); replyKeyboardMarkup.setKeyboard(keyboard); @@ -940,14 +951,14 @@ public class WeatherHandlers extends TelegramLongPollingBot { replyKeyboardMarkup.setResizeKeyboard(true); replyKeyboardMarkup.setOneTimeKeyboad(false); - List> keyboard = new ArrayList<>(); - List row = new ArrayList<>(); + List keyboard = new ArrayList<>(); + KeyboardRow row = new KeyboardRow(); row.add(LocalisationService.getInstance().getString("metricSystem", language)); keyboard.add(row); - row = new ArrayList<>(); + row = new KeyboardRow(); row.add(LocalisationService.getInstance().getString("imperialSystem", language)); keyboard.add(row); - row = new ArrayList<>(); + row = new KeyboardRow(); row.add(getCancelCommand(language)); keyboard.add(row); replyKeyboardMarkup.setKeyboard(keyboard); @@ -961,11 +972,11 @@ public class WeatherHandlers extends TelegramLongPollingBot { replyKeyboardMarkup.setResizeKeyboard(true); replyKeyboardMarkup.setOneTimeKeyboad(false); - List> keyboard = new ArrayList<>(); - List keyboardFirstRow = new ArrayList<>(); + List keyboard = new ArrayList<>(); + KeyboardRow keyboardFirstRow = new KeyboardRow(); keyboardFirstRow.add(getLanguagesCommand(language)); keyboardFirstRow.add(getUnitsCommand(language)); - List keyboardSecondRow = new ArrayList<>(); + KeyboardRow keyboardSecondRow = new KeyboardRow(); keyboardSecondRow.add(getAlertsCommand(language)); keyboardSecondRow.add(getBackCommand(language)); keyboard.add(keyboardFirstRow); @@ -985,23 +996,23 @@ public class WeatherHandlers extends TelegramLongPollingBot { replyKeyboardMarkup.setResizeKeyboard(true); replyKeyboardMarkup.setOneTimeKeyboad(true); - List> keyboard = new ArrayList<>(); + List keyboard = new ArrayList<>(); for (String recentWeather : DatabaseManager.getInstance().getRecentWeather(userId)) { - List row = new ArrayList<>(); + KeyboardRow row = new KeyboardRow(); row.add(recentWeather); keyboard.add(row); } - List row = new ArrayList<>(); + KeyboardRow row = new KeyboardRow(); if (allowNew) { row.add(getLocationCommand(language)); keyboard.add(row); - row = new ArrayList<>(); + row = new KeyboardRow(); row.add(getNewCommand(language)); keyboard.add(row); - row = new ArrayList<>(); + row = new KeyboardRow(); } row.add(getCancelCommand(language)); keyboard.add(row); @@ -1017,14 +1028,14 @@ public class WeatherHandlers extends TelegramLongPollingBot { replyKeyboardMarkup.setResizeKeyboard(true); replyKeyboardMarkup.setOneTimeKeyboad(true); - List> keyboard = new ArrayList<>(); + List keyboard = new ArrayList<>(); - List row = new ArrayList<>(); + KeyboardRow row = new KeyboardRow(); row.add(getNewCommand(language)); row.add(getDeleteCommand(language)); keyboard.add(row); - row = new ArrayList<>(); + row = new KeyboardRow(); row.add(getListCommand(language)); row.add(getBackCommand(language)); keyboard.add(row); @@ -1044,13 +1055,13 @@ public class WeatherHandlers extends TelegramLongPollingBot { replyKeyboardMarkup.setResizeKeyboard(true); replyKeyboardMarkup.setOneTimeKeyboad(true); - List> keyboard = new ArrayList<>(); + List keyboard = new ArrayList<>(); for (String alertCityName: alertCitiesNames) { - List row = new ArrayList<>(); + KeyboardRow row = new KeyboardRow(); row.add(alertCityName); keyboard.add(row); } - List row = new ArrayList<>(); + KeyboardRow row = new KeyboardRow(); row.add(getCancelCommand(language)); keyboard.add(row);