Browse Source

Merge pull request #23 from rubenlagus/dev

Dev
master
Ruben Bermudez 10 years ago
parent
commit
26dc13b31c
  1. 2
      .idea/compiler.xml
  2. 8
      .idea/libraries/Maven__com_github_rubenlagus_TelegramBots_v2_3_3_1.xml
  3. 8
      .idea/libraries/Maven__com_sun_jersey_jersey_bundle_1_19_1.xml
  4. 8
      .idea/libraries/Maven__com_sun_jersey_jersey_core_1_19_1.xml
  5. 13
      .idea/libraries/Maven__com_sun_jersey_jersey_grizzly2_1_19_1.xml
  6. 8
      .idea/libraries/Maven__com_sun_jersey_jersey_grizzly2_servlet_1_19_1.xml
  7. 8
      .idea/libraries/Maven__com_sun_jersey_jersey_server_1_19_1.xml
  8. 13
      .idea/libraries/Maven__com_sun_jersey_jersey_servlet_1_19.xml
  9. 8
      .idea/libraries/Maven__com_sun_jersey_jersey_servlet_1_19_1.xml
  10. 8
      .idea/libraries/Maven__org_apache_httpcomponents_httpclient_4_5_2.xml
  11. 8
      .idea/libraries/Maven__org_apache_httpcomponents_httpcore_4_4_4.xml
  12. 8
      .idea/libraries/Maven__org_apache_httpcomponents_httpmime_4_5_2.xml
  13. 8
      .idea/libraries/Maven__org_glassfish_hk2_external_aopalliance_repackaged_2_4_0_b34.xml
  14. 8
      .idea/libraries/Maven__org_glassfish_hk2_external_javax_inject_2_4_0_b34.xml
  15. 8
      .idea/libraries/Maven__org_glassfish_hk2_hk2_api_2_4_0_b34.xml
  16. 8
      .idea/libraries/Maven__org_glassfish_hk2_hk2_locator_2_4_0_b34.xml
  17. 8
      .idea/libraries/Maven__org_glassfish_hk2_hk2_utils_2_4_0_b34.xml
  18. 8
      .idea/libraries/Maven__org_glassfish_jersey_bundles_repackaged_jersey_guava_2_22_2.xml
  19. 8
      .idea/libraries/Maven__org_glassfish_jersey_containers_jersey_container_grizzly2_http_2_22_2.xml
  20. 8
      .idea/libraries/Maven__org_glassfish_jersey_core_jersey_client_2_22_2.xml
  21. 8
      .idea/libraries/Maven__org_glassfish_jersey_core_jersey_common_2_22_2.xml
  22. 8
      .idea/libraries/Maven__org_glassfish_jersey_core_jersey_server_2_22_2.xml
  23. 8
      .idea/libraries/Maven__org_glassfish_jersey_ext_jersey_entity_filtering_2_22_2.xml
  24. 8
      .idea/libraries/Maven__org_glassfish_jersey_media_jersey_media_jaxb_2_22_2.xml
  25. 8
      .idea/libraries/Maven__org_glassfish_jersey_media_jersey_media_json_jackson_2_22_2.xml
  26. 13
      .idea/libraries/Maven__org_json_json_20151123.xml
  27. 13
      .idea/libraries/Maven__org_json_json_20160212.xml
  28. 913
      .idea/workspace.xml
  29. 48
      BotAPi.iml
  30. 28
      pom.xml
  31. 21
      src/main/java/org/telegram/Main.java
  32. 10
      src/main/java/org/telegram/database/ConectionDB.java
  33. 14
      src/main/java/org/telegram/database/DatabaseManager.java
  34. 348
      src/main/java/org/telegram/services/BotLogger.java
  35. 1
      src/main/java/org/telegram/services/DirectionsService.java
  36. 1
      src/main/java/org/telegram/services/RaeService.java
  37. 2
      src/main/java/org/telegram/services/TimerExecutor.java
  38. 11
      src/main/java/org/telegram/services/TransifexService.java
  39. 1
      src/main/java/org/telegram/services/WeatherService.java
  40. 12
      src/main/java/org/telegram/updateshandlers/ChannelHandlers.java
  41. 23
      src/main/java/org/telegram/updateshandlers/DirectionsHandlers.java
  42. 94
      src/main/java/org/telegram/updateshandlers/FilesHandlers.java
  43. 29
      src/main/java/org/telegram/updateshandlers/RaeHandlers.java
  44. 8
      src/main/java/org/telegram/updateshandlers/TransifexHandlers.java
  45. 89
      src/main/java/org/telegram/updateshandlers/WeatherHandlers.java

2
.idea/compiler.xml

@ -17,7 +17,7 @@
<profile default="true" name="Default" enabled="false">
<processorPath useClasspath="true" />
</profile>
<profile default="false" name="Annotation profile for BotAPi" enabled="true">
<profile default="false" name="Maven default annotation processors profile" enabled="true">
<sourceOutputDir name="target/generated-sources/annotations" />
<sourceTestOutputDir name="target/generated-test-sources/test-annotations" />
<outputRelativeToContentRoot value="true" />

8
.idea/libraries/Maven__com_github_rubenlagus_TelegramBots_v1_0.xml → .idea/libraries/Maven__com_github_rubenlagus_TelegramBots_v2_3_3_1.xml

@ -1,13 +1,13 @@
<component name="libraryTable">
<library name="Maven: com.github.rubenlagus:TelegramBots:v1.0">
<library name="Maven: com.github.rubenlagus:TelegramBots:v2.3.3.1">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/com/github/rubenlagus/TelegramBots/v1.0/TelegramBots-v1.0.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/com/github/rubenlagus/TelegramBots/v2.3.3.1/TelegramBots-v2.3.3.1.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/com/github/rubenlagus/TelegramBots/v1.0/TelegramBots-v1.0-javadoc.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/com/github/rubenlagus/TelegramBots/v2.3.3.1/TelegramBots-v2.3.3.1-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/com/github/rubenlagus/TelegramBots/v1.0/TelegramBots-v1.0-sources.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/com/github/rubenlagus/TelegramBots/v2.3.3.1/TelegramBots-v2.3.3.1-sources.jar!/" />
</SOURCES>
</library>
</component>

8
.idea/libraries/Maven__com_sun_jersey_jersey_bundle_1_19.xml → .idea/libraries/Maven__com_sun_jersey_jersey_bundle_1_19_1.xml

@ -1,13 +1,13 @@
<component name="libraryTable">
<library name="Maven: com.sun.jersey:jersey-bundle:1.19">
<library name="Maven: com.sun.jersey:jersey-bundle:1.19.1">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/com/sun/jersey/jersey-bundle/1.19/jersey-bundle-1.19.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/com/sun/jersey/jersey-bundle/1.19.1/jersey-bundle-1.19.1.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/com/sun/jersey/jersey-bundle/1.19/jersey-bundle-1.19-javadoc.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/com/sun/jersey/jersey-bundle/1.19.1/jersey-bundle-1.19.1-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/com/sun/jersey/jersey-bundle/1.19/jersey-bundle-1.19-sources.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/com/sun/jersey/jersey-bundle/1.19.1/jersey-bundle-1.19.1-sources.jar!/" />
</SOURCES>
</library>
</component>

8
.idea/libraries/Maven__com_sun_jersey_jersey_server_1_19.xml → .idea/libraries/Maven__com_sun_jersey_jersey_core_1_19_1.xml

@ -1,13 +1,13 @@
<component name="libraryTable">
<library name="Maven: com.sun.jersey:jersey-server:1.19">
<library name="Maven: com.sun.jersey:jersey-core:1.19.1">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/com/sun/jersey/jersey-server/1.19/jersey-server-1.19.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/com/sun/jersey/jersey-core/1.19.1/jersey-core-1.19.1.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/com/sun/jersey/jersey-server/1.19/jersey-server-1.19-javadoc.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/com/sun/jersey/jersey-core/1.19.1/jersey-core-1.19.1-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/com/sun/jersey/jersey-server/1.19/jersey-server-1.19-sources.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/com/sun/jersey/jersey-core/1.19.1/jersey-core-1.19.1-sources.jar!/" />
</SOURCES>
</library>
</component>

13
.idea/libraries/Maven__com_sun_jersey_jersey_grizzly2_1_19_1.xml

@ -0,0 +1,13 @@
<component name="libraryTable">
<library name="Maven: com.sun.jersey:jersey-grizzly2:1.19.1">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/com/sun/jersey/jersey-grizzly2/1.19.1/jersey-grizzly2-1.19.1.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/com/sun/jersey/jersey-grizzly2/1.19.1/jersey-grizzly2-1.19.1-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/com/sun/jersey/jersey-grizzly2/1.19.1/jersey-grizzly2-1.19.1-sources.jar!/" />
</SOURCES>
</library>
</component>

8
.idea/libraries/Maven__com_sun_jersey_jersey_grizzly2_servlet_1_19.xml → .idea/libraries/Maven__com_sun_jersey_jersey_grizzly2_servlet_1_19_1.xml

@ -1,13 +1,13 @@
<component name="libraryTable">
<library name="Maven: com.sun.jersey:jersey-grizzly2-servlet:1.19">
<library name="Maven: com.sun.jersey:jersey-grizzly2-servlet:1.19.1">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/com/sun/jersey/jersey-grizzly2-servlet/1.19/jersey-grizzly2-servlet-1.19.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/com/sun/jersey/jersey-grizzly2-servlet/1.19.1/jersey-grizzly2-servlet-1.19.1.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/com/sun/jersey/jersey-grizzly2-servlet/1.19/jersey-grizzly2-servlet-1.19-javadoc.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/com/sun/jersey/jersey-grizzly2-servlet/1.19.1/jersey-grizzly2-servlet-1.19.1-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/com/sun/jersey/jersey-grizzly2-servlet/1.19/jersey-grizzly2-servlet-1.19-sources.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/com/sun/jersey/jersey-grizzly2-servlet/1.19.1/jersey-grizzly2-servlet-1.19.1-sources.jar!/" />
</SOURCES>
</library>
</component>

8
.idea/libraries/Maven__com_sun_jersey_jersey_core_1_19.xml → .idea/libraries/Maven__com_sun_jersey_jersey_server_1_19_1.xml

@ -1,13 +1,13 @@
<component name="libraryTable">
<library name="Maven: com.sun.jersey:jersey-core:1.19">
<library name="Maven: com.sun.jersey:jersey-server:1.19.1">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/com/sun/jersey/jersey-core/1.19/jersey-core-1.19.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/com/sun/jersey/jersey-server/1.19.1/jersey-server-1.19.1.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/com/sun/jersey/jersey-core/1.19/jersey-core-1.19-javadoc.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/com/sun/jersey/jersey-server/1.19.1/jersey-server-1.19.1-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/com/sun/jersey/jersey-core/1.19/jersey-core-1.19-sources.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/com/sun/jersey/jersey-server/1.19.1/jersey-server-1.19.1-sources.jar!/" />
</SOURCES>
</library>
</component>

13
.idea/libraries/Maven__com_sun_jersey_jersey_servlet_1_19.xml

@ -1,13 +0,0 @@
<component name="libraryTable">
<library name="Maven: com.sun.jersey:jersey-servlet:1.19">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/com/sun/jersey/jersey-servlet/1.19/jersey-servlet-1.19.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/com/sun/jersey/jersey-servlet/1.19/jersey-servlet-1.19-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/com/sun/jersey/jersey-servlet/1.19/jersey-servlet-1.19-sources.jar!/" />
</SOURCES>
</library>
</component>

8
.idea/libraries/Maven__com_sun_jersey_jersey_grizzly2_1_19.xml → .idea/libraries/Maven__com_sun_jersey_jersey_servlet_1_19_1.xml

@ -1,13 +1,13 @@
<component name="libraryTable">
<library name="Maven: com.sun.jersey:jersey-grizzly2:1.19">
<library name="Maven: com.sun.jersey:jersey-servlet:1.19.1">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/com/sun/jersey/jersey-grizzly2/1.19/jersey-grizzly2-1.19.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/com/sun/jersey/jersey-servlet/1.19.1/jersey-servlet-1.19.1.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/com/sun/jersey/jersey-grizzly2/1.19/jersey-grizzly2-1.19-javadoc.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/com/sun/jersey/jersey-servlet/1.19.1/jersey-servlet-1.19.1-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/com/sun/jersey/jersey-grizzly2/1.19/jersey-grizzly2-1.19-sources.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/com/sun/jersey/jersey-servlet/1.19.1/jersey-servlet-1.19.1-sources.jar!/" />
</SOURCES>
</library>
</component>

8
.idea/libraries/Maven__org_apache_httpcomponents_httpclient_4_5_1.xml → .idea/libraries/Maven__org_apache_httpcomponents_httpclient_4_5_2.xml

@ -1,13 +1,13 @@
<component name="libraryTable">
<library name="Maven: org.apache.httpcomponents:httpclient:4.5.1">
<library name="Maven: org.apache.httpcomponents:httpclient:4.5.2">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/httpcomponents/httpclient/4.5.1/httpclient-4.5.1.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/apache/httpcomponents/httpclient/4.5.2/httpclient-4.5.2.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/httpcomponents/httpclient/4.5.1/httpclient-4.5.1-javadoc.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/apache/httpcomponents/httpclient/4.5.2/httpclient-4.5.2-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/httpcomponents/httpclient/4.5.1/httpclient-4.5.1-sources.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/apache/httpcomponents/httpclient/4.5.2/httpclient-4.5.2-sources.jar!/" />
</SOURCES>
</library>
</component>

8
.idea/libraries/Maven__org_apache_httpcomponents_httpcore_4_4_3.xml → .idea/libraries/Maven__org_apache_httpcomponents_httpcore_4_4_4.xml

@ -1,13 +1,13 @@
<component name="libraryTable">
<library name="Maven: org.apache.httpcomponents:httpcore:4.4.3">
<library name="Maven: org.apache.httpcomponents:httpcore:4.4.4">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/httpcomponents/httpcore/4.4.3/httpcore-4.4.3.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/apache/httpcomponents/httpcore/4.4.4/httpcore-4.4.4.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/httpcomponents/httpcore/4.4.3/httpcore-4.4.3-javadoc.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/apache/httpcomponents/httpcore/4.4.4/httpcore-4.4.4-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/httpcomponents/httpcore/4.4.3/httpcore-4.4.3-sources.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/apache/httpcomponents/httpcore/4.4.4/httpcore-4.4.4-sources.jar!/" />
</SOURCES>
</library>
</component>

8
.idea/libraries/Maven__org_apache_httpcomponents_httpmime_4_5_1.xml → .idea/libraries/Maven__org_apache_httpcomponents_httpmime_4_5_2.xml

@ -1,13 +1,13 @@
<component name="libraryTable">
<library name="Maven: org.apache.httpcomponents:httpmime:4.5.1">
<library name="Maven: org.apache.httpcomponents:httpmime:4.5.2">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/httpcomponents/httpmime/4.5.1/httpmime-4.5.1.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/apache/httpcomponents/httpmime/4.5.2/httpmime-4.5.2.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/httpcomponents/httpmime/4.5.1/httpmime-4.5.1-javadoc.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/apache/httpcomponents/httpmime/4.5.2/httpmime-4.5.2-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/httpcomponents/httpmime/4.5.1/httpmime-4.5.1-sources.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/apache/httpcomponents/httpmime/4.5.2/httpmime-4.5.2-sources.jar!/" />
</SOURCES>
</library>
</component>

8
.idea/libraries/Maven__org_glassfish_hk2_external_aopalliance_repackaged_2_4_0_b31.xml → .idea/libraries/Maven__org_glassfish_hk2_external_aopalliance_repackaged_2_4_0_b34.xml

@ -1,13 +1,13 @@
<component name="libraryTable">
<library name="Maven: org.glassfish.hk2.external:aopalliance-repackaged:2.4.0-b31">
<library name="Maven: org.glassfish.hk2.external:aopalliance-repackaged:2.4.0-b34">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/glassfish/hk2/external/aopalliance-repackaged/2.4.0-b31/aopalliance-repackaged-2.4.0-b31.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/glassfish/hk2/external/aopalliance-repackaged/2.4.0-b34/aopalliance-repackaged-2.4.0-b34.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/glassfish/hk2/external/aopalliance-repackaged/2.4.0-b31/aopalliance-repackaged-2.4.0-b31-javadoc.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/glassfish/hk2/external/aopalliance-repackaged/2.4.0-b34/aopalliance-repackaged-2.4.0-b34-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/glassfish/hk2/external/aopalliance-repackaged/2.4.0-b31/aopalliance-repackaged-2.4.0-b31-sources.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/glassfish/hk2/external/aopalliance-repackaged/2.4.0-b34/aopalliance-repackaged-2.4.0-b34-sources.jar!/" />
</SOURCES>
</library>
</component>

8
.idea/libraries/Maven__org_glassfish_hk2_external_javax_inject_2_4_0_b31.xml → .idea/libraries/Maven__org_glassfish_hk2_external_javax_inject_2_4_0_b34.xml

@ -1,13 +1,13 @@
<component name="libraryTable">
<library name="Maven: org.glassfish.hk2.external:javax.inject:2.4.0-b31">
<library name="Maven: org.glassfish.hk2.external:javax.inject:2.4.0-b34">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/glassfish/hk2/external/javax.inject/2.4.0-b31/javax.inject-2.4.0-b31.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/glassfish/hk2/external/javax.inject/2.4.0-b34/javax.inject-2.4.0-b34.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/glassfish/hk2/external/javax.inject/2.4.0-b31/javax.inject-2.4.0-b31-javadoc.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/glassfish/hk2/external/javax.inject/2.4.0-b34/javax.inject-2.4.0-b34-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/glassfish/hk2/external/javax.inject/2.4.0-b31/javax.inject-2.4.0-b31-sources.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/glassfish/hk2/external/javax.inject/2.4.0-b34/javax.inject-2.4.0-b34-sources.jar!/" />
</SOURCES>
</library>
</component>

8
.idea/libraries/Maven__org_glassfish_hk2_hk2_api_2_4_0_b31.xml → .idea/libraries/Maven__org_glassfish_hk2_hk2_api_2_4_0_b34.xml

@ -1,13 +1,13 @@
<component name="libraryTable">
<library name="Maven: org.glassfish.hk2:hk2-api:2.4.0-b31">
<library name="Maven: org.glassfish.hk2:hk2-api:2.4.0-b34">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/glassfish/hk2/hk2-api/2.4.0-b31/hk2-api-2.4.0-b31.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/glassfish/hk2/hk2-api/2.4.0-b34/hk2-api-2.4.0-b34.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/glassfish/hk2/hk2-api/2.4.0-b31/hk2-api-2.4.0-b31-javadoc.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/glassfish/hk2/hk2-api/2.4.0-b34/hk2-api-2.4.0-b34-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/glassfish/hk2/hk2-api/2.4.0-b31/hk2-api-2.4.0-b31-sources.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/glassfish/hk2/hk2-api/2.4.0-b34/hk2-api-2.4.0-b34-sources.jar!/" />
</SOURCES>
</library>
</component>

8
.idea/libraries/Maven__org_glassfish_hk2_hk2_locator_2_4_0_b31.xml → .idea/libraries/Maven__org_glassfish_hk2_hk2_locator_2_4_0_b34.xml

@ -1,13 +1,13 @@
<component name="libraryTable">
<library name="Maven: org.glassfish.hk2:hk2-locator:2.4.0-b31">
<library name="Maven: org.glassfish.hk2:hk2-locator:2.4.0-b34">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/glassfish/hk2/hk2-locator/2.4.0-b31/hk2-locator-2.4.0-b31.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/glassfish/hk2/hk2-locator/2.4.0-b34/hk2-locator-2.4.0-b34.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/glassfish/hk2/hk2-locator/2.4.0-b31/hk2-locator-2.4.0-b31-javadoc.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/glassfish/hk2/hk2-locator/2.4.0-b34/hk2-locator-2.4.0-b34-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/glassfish/hk2/hk2-locator/2.4.0-b31/hk2-locator-2.4.0-b31-sources.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/glassfish/hk2/hk2-locator/2.4.0-b34/hk2-locator-2.4.0-b34-sources.jar!/" />
</SOURCES>
</library>
</component>

8
.idea/libraries/Maven__org_glassfish_hk2_hk2_utils_2_4_0_b31.xml → .idea/libraries/Maven__org_glassfish_hk2_hk2_utils_2_4_0_b34.xml

@ -1,13 +1,13 @@
<component name="libraryTable">
<library name="Maven: org.glassfish.hk2:hk2-utils:2.4.0-b31">
<library name="Maven: org.glassfish.hk2:hk2-utils:2.4.0-b34">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/glassfish/hk2/hk2-utils/2.4.0-b31/hk2-utils-2.4.0-b31.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/glassfish/hk2/hk2-utils/2.4.0-b34/hk2-utils-2.4.0-b34.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/glassfish/hk2/hk2-utils/2.4.0-b31/hk2-utils-2.4.0-b31-javadoc.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/glassfish/hk2/hk2-utils/2.4.0-b34/hk2-utils-2.4.0-b34-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/glassfish/hk2/hk2-utils/2.4.0-b31/hk2-utils-2.4.0-b31-sources.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/glassfish/hk2/hk2-utils/2.4.0-b34/hk2-utils-2.4.0-b34-sources.jar!/" />
</SOURCES>
</library>
</component>

8
.idea/libraries/Maven__org_glassfish_jersey_bundles_repackaged_jersey_guava_2_22_1.xml → .idea/libraries/Maven__org_glassfish_jersey_bundles_repackaged_jersey_guava_2_22_2.xml

@ -1,13 +1,13 @@
<component name="libraryTable">
<library name="Maven: org.glassfish.jersey.bundles.repackaged:jersey-guava:2.22.1">
<library name="Maven: org.glassfish.jersey.bundles.repackaged:jersey-guava:2.22.2">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/glassfish/jersey/bundles/repackaged/jersey-guava/2.22.1/jersey-guava-2.22.1.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/glassfish/jersey/bundles/repackaged/jersey-guava/2.22.2/jersey-guava-2.22.2.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/glassfish/jersey/bundles/repackaged/jersey-guava/2.22.1/jersey-guava-2.22.1-javadoc.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/glassfish/jersey/bundles/repackaged/jersey-guava/2.22.2/jersey-guava-2.22.2-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/glassfish/jersey/bundles/repackaged/jersey-guava/2.22.1/jersey-guava-2.22.1-sources.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/glassfish/jersey/bundles/repackaged/jersey-guava/2.22.2/jersey-guava-2.22.2-sources.jar!/" />
</SOURCES>
</library>
</component>

8
.idea/libraries/Maven__org_glassfish_jersey_containers_jersey_container_grizzly2_http_2_22_1.xml → .idea/libraries/Maven__org_glassfish_jersey_containers_jersey_container_grizzly2_http_2_22_2.xml

@ -1,13 +1,13 @@
<component name="libraryTable">
<library name="Maven: org.glassfish.jersey.containers:jersey-container-grizzly2-http:2.22.1">
<library name="Maven: org.glassfish.jersey.containers:jersey-container-grizzly2-http:2.22.2">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/glassfish/jersey/containers/jersey-container-grizzly2-http/2.22.1/jersey-container-grizzly2-http-2.22.1.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/glassfish/jersey/containers/jersey-container-grizzly2-http/2.22.2/jersey-container-grizzly2-http-2.22.2.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/glassfish/jersey/containers/jersey-container-grizzly2-http/2.22.1/jersey-container-grizzly2-http-2.22.1-javadoc.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/glassfish/jersey/containers/jersey-container-grizzly2-http/2.22.2/jersey-container-grizzly2-http-2.22.2-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/glassfish/jersey/containers/jersey-container-grizzly2-http/2.22.1/jersey-container-grizzly2-http-2.22.1-sources.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/glassfish/jersey/containers/jersey-container-grizzly2-http/2.22.2/jersey-container-grizzly2-http-2.22.2-sources.jar!/" />
</SOURCES>
</library>
</component>

8
.idea/libraries/Maven__org_glassfish_jersey_core_jersey_client_2_22_1.xml → .idea/libraries/Maven__org_glassfish_jersey_core_jersey_client_2_22_2.xml

@ -1,13 +1,13 @@
<component name="libraryTable">
<library name="Maven: org.glassfish.jersey.core:jersey-client:2.22.1">
<library name="Maven: org.glassfish.jersey.core:jersey-client:2.22.2">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/glassfish/jersey/core/jersey-client/2.22.1/jersey-client-2.22.1.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/glassfish/jersey/core/jersey-client/2.22.2/jersey-client-2.22.2.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/glassfish/jersey/core/jersey-client/2.22.1/jersey-client-2.22.1-javadoc.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/glassfish/jersey/core/jersey-client/2.22.2/jersey-client-2.22.2-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/glassfish/jersey/core/jersey-client/2.22.1/jersey-client-2.22.1-sources.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/glassfish/jersey/core/jersey-client/2.22.2/jersey-client-2.22.2-sources.jar!/" />
</SOURCES>
</library>
</component>

8
.idea/libraries/Maven__org_glassfish_jersey_core_jersey_common_2_22_1.xml → .idea/libraries/Maven__org_glassfish_jersey_core_jersey_common_2_22_2.xml

@ -1,13 +1,13 @@
<component name="libraryTable">
<library name="Maven: org.glassfish.jersey.core:jersey-common:2.22.1">
<library name="Maven: org.glassfish.jersey.core:jersey-common:2.22.2">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/glassfish/jersey/core/jersey-common/2.22.1/jersey-common-2.22.1.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/glassfish/jersey/core/jersey-common/2.22.2/jersey-common-2.22.2.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/glassfish/jersey/core/jersey-common/2.22.1/jersey-common-2.22.1-javadoc.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/glassfish/jersey/core/jersey-common/2.22.2/jersey-common-2.22.2-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/glassfish/jersey/core/jersey-common/2.22.1/jersey-common-2.22.1-sources.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/glassfish/jersey/core/jersey-common/2.22.2/jersey-common-2.22.2-sources.jar!/" />
</SOURCES>
</library>
</component>

8
.idea/libraries/Maven__org_glassfish_jersey_core_jersey_server_2_22_1.xml → .idea/libraries/Maven__org_glassfish_jersey_core_jersey_server_2_22_2.xml

@ -1,13 +1,13 @@
<component name="libraryTable">
<library name="Maven: org.glassfish.jersey.core:jersey-server:2.22.1">
<library name="Maven: org.glassfish.jersey.core:jersey-server:2.22.2">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/glassfish/jersey/core/jersey-server/2.22.1/jersey-server-2.22.1.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/glassfish/jersey/core/jersey-server/2.22.2/jersey-server-2.22.2.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/glassfish/jersey/core/jersey-server/2.22.1/jersey-server-2.22.1-javadoc.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/glassfish/jersey/core/jersey-server/2.22.2/jersey-server-2.22.2-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/glassfish/jersey/core/jersey-server/2.22.1/jersey-server-2.22.1-sources.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/glassfish/jersey/core/jersey-server/2.22.2/jersey-server-2.22.2-sources.jar!/" />
</SOURCES>
</library>
</component>

8
.idea/libraries/Maven__org_glassfish_jersey_ext_jersey_entity_filtering_2_22_1.xml → .idea/libraries/Maven__org_glassfish_jersey_ext_jersey_entity_filtering_2_22_2.xml

@ -1,13 +1,13 @@
<component name="libraryTable">
<library name="Maven: org.glassfish.jersey.ext:jersey-entity-filtering:2.22.1">
<library name="Maven: org.glassfish.jersey.ext:jersey-entity-filtering:2.22.2">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/glassfish/jersey/ext/jersey-entity-filtering/2.22.1/jersey-entity-filtering-2.22.1.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/glassfish/jersey/ext/jersey-entity-filtering/2.22.2/jersey-entity-filtering-2.22.2.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/glassfish/jersey/ext/jersey-entity-filtering/2.22.1/jersey-entity-filtering-2.22.1-javadoc.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/glassfish/jersey/ext/jersey-entity-filtering/2.22.2/jersey-entity-filtering-2.22.2-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/glassfish/jersey/ext/jersey-entity-filtering/2.22.1/jersey-entity-filtering-2.22.1-sources.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/glassfish/jersey/ext/jersey-entity-filtering/2.22.2/jersey-entity-filtering-2.22.2-sources.jar!/" />
</SOURCES>
</library>
</component>

8
.idea/libraries/Maven__org_glassfish_jersey_media_jersey_media_jaxb_2_22_1.xml → .idea/libraries/Maven__org_glassfish_jersey_media_jersey_media_jaxb_2_22_2.xml

@ -1,13 +1,13 @@
<component name="libraryTable">
<library name="Maven: org.glassfish.jersey.media:jersey-media-jaxb:2.22.1">
<library name="Maven: org.glassfish.jersey.media:jersey-media-jaxb:2.22.2">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/glassfish/jersey/media/jersey-media-jaxb/2.22.1/jersey-media-jaxb-2.22.1.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/glassfish/jersey/media/jersey-media-jaxb/2.22.2/jersey-media-jaxb-2.22.2.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/glassfish/jersey/media/jersey-media-jaxb/2.22.1/jersey-media-jaxb-2.22.1-javadoc.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/glassfish/jersey/media/jersey-media-jaxb/2.22.2/jersey-media-jaxb-2.22.2-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/glassfish/jersey/media/jersey-media-jaxb/2.22.1/jersey-media-jaxb-2.22.1-sources.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/glassfish/jersey/media/jersey-media-jaxb/2.22.2/jersey-media-jaxb-2.22.2-sources.jar!/" />
</SOURCES>
</library>
</component>

8
.idea/libraries/Maven__org_glassfish_jersey_media_jersey_media_json_jackson_2_22_1.xml → .idea/libraries/Maven__org_glassfish_jersey_media_jersey_media_json_jackson_2_22_2.xml

@ -1,13 +1,13 @@
<component name="libraryTable">
<library name="Maven: org.glassfish.jersey.media:jersey-media-json-jackson:2.22.1">
<library name="Maven: org.glassfish.jersey.media:jersey-media-json-jackson:2.22.2">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/glassfish/jersey/media/jersey-media-json-jackson/2.22.1/jersey-media-json-jackson-2.22.1.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/glassfish/jersey/media/jersey-media-json-jackson/2.22.2/jersey-media-json-jackson-2.22.2.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/glassfish/jersey/media/jersey-media-json-jackson/2.22.1/jersey-media-json-jackson-2.22.1-javadoc.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/glassfish/jersey/media/jersey-media-json-jackson/2.22.2/jersey-media-json-jackson-2.22.2-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/glassfish/jersey/media/jersey-media-json-jackson/2.22.1/jersey-media-json-jackson-2.22.1-sources.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/glassfish/jersey/media/jersey-media-json-jackson/2.22.2/jersey-media-json-jackson-2.22.2-sources.jar!/" />
</SOURCES>
</library>
</component>

13
.idea/libraries/Maven__org_json_json_20151123.xml

@ -1,13 +0,0 @@
<component name="libraryTable">
<library name="Maven: org.json:json:20151123">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/json/json/20151123/json-20151123.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/json/json/20151123/json-20151123-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/json/json/20151123/json-20151123-sources.jar!/" />
</SOURCES>
</library>
</component>

13
.idea/libraries/Maven__org_json_json_20160212.xml

@ -0,0 +1,13 @@
<component name="libraryTable">
<library name="Maven: org.json:json:20160212">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/json/json/20160212/json-20160212.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/json/json/20160212/json-20160212-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/json/json/20160212/json-20160212-sources.jar!/" />
</SOURCES>
</library>
</component>

913
.idea/workspace.xml

File diff suppressed because it is too large

48
BotAPi.iml

@ -11,50 +11,50 @@
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" name="Maven: com.github.rubenlagus:TelegramBots:v1.0" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.jersey.containers:jersey-container-grizzly2-http:2.22.1" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.hk2.external:javax.inject:2.4.0-b31" level="project" />
<orderEntry type="library" name="Maven: com.github.rubenlagus:TelegramBots:v2.3.3.1" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.jersey.containers:jersey-container-grizzly2-http:2.22.2" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.hk2.external:javax.inject:2.4.0-b34" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.grizzly:grizzly-http-server:2.3.23" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.grizzly:grizzly-http:2.3.23" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.grizzly:grizzly-framework:2.3.23" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.jersey.core:jersey-common:2.22.1" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.jersey.core:jersey-common:2.22.2" level="project" />
<orderEntry type="library" name="Maven: javax.annotation:javax.annotation-api:1.2" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.jersey.bundles.repackaged:jersey-guava:2.22.1" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.hk2:hk2-api:2.4.0-b31" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.hk2:hk2-utils:2.4.0-b31" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.hk2.external:aopalliance-repackaged:2.4.0-b31" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.hk2:hk2-locator:2.4.0-b31" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.jersey.bundles.repackaged:jersey-guava:2.22.2" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.hk2:hk2-api:2.4.0-b34" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.hk2:hk2-utils:2.4.0-b34" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.hk2.external:aopalliance-repackaged:2.4.0-b34" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.hk2:hk2-locator:2.4.0-b34" level="project" />
<orderEntry type="library" name="Maven: org.javassist:javassist:3.18.1-GA" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.hk2:osgi-resource-locator:1.0.1" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.jersey.core:jersey-server:2.22.1" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.jersey.core:jersey-client:2.22.1" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.jersey.media:jersey-media-jaxb:2.22.1" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.jersey.core:jersey-server:2.22.2" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.jersey.core:jersey-client:2.22.2" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.jersey.media:jersey-media-jaxb:2.22.2" level="project" />
<orderEntry type="library" name="Maven: javax.validation:validation-api:1.1.0.Final" level="project" />
<orderEntry type="library" name="Maven: javax.ws.rs:javax.ws.rs-api:2.0.1" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.jersey.media:jersey-media-json-jackson:2.22.1" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.jersey.ext:jersey-entity-filtering:2.22.1" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.jersey.media:jersey-media-json-jackson:2.22.2" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.jersey.ext:jersey-entity-filtering:2.22.2" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.jaxrs:jackson-jaxrs-base:2.5.4" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.5.4" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.5.4" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider:2.5.4" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.module:jackson-module-jaxb-annotations:2.5.4" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.5.4" level="project" />
<orderEntry type="library" name="Maven: com.sun.jersey:jersey-bundle:1.19" level="project" />
<orderEntry type="library" name="Maven: com.sun.jersey:jersey-bundle:1.19.1" level="project" />
<orderEntry type="library" name="Maven: javax.ws.rs:jsr311-api:1.1.1" level="project" />
<orderEntry type="library" name="Maven: com.sun.jersey:jersey-grizzly2-servlet:1.19" level="project" />
<orderEntry type="library" name="Maven: com.sun.jersey:jersey-grizzly2-servlet:1.19.1" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.grizzly:grizzly-http-servlet:2.2.16" level="project" />
<orderEntry type="library" name="Maven: com.sun.jersey:jersey-grizzly2:1.19" level="project" />
<orderEntry type="library" name="Maven: com.sun.jersey:jersey-server:1.19" level="project" />
<orderEntry type="library" name="Maven: com.sun.jersey:jersey-core:1.19" level="project" />
<orderEntry type="library" name="Maven: com.sun.jersey:jersey-grizzly2:1.19.1" level="project" />
<orderEntry type="library" name="Maven: com.sun.jersey:jersey-server:1.19.1" level="project" />
<orderEntry type="library" name="Maven: com.sun.jersey:jersey-core:1.19.1" level="project" />
<orderEntry type="library" name="Maven: javax.servlet:javax.servlet-api:3.0.1" level="project" />
<orderEntry type="library" name="Maven: com.sun.jersey:jersey-servlet:1.19" level="project" />
<orderEntry type="library" name="Maven: org.json:json:20151123" level="project" />
<orderEntry type="library" name="Maven: com.sun.jersey:jersey-servlet:1.19.1" level="project" />
<orderEntry type="library" name="Maven: org.json:json:20160212" level="project" />
<orderEntry type="library" name="Maven: commons-io:commons-io:2.4" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpclient:4.5.1" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpcore:4.4.3" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpclient:4.5.2" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpcore:4.4.4" level="project" />
<orderEntry type="library" name="Maven: commons-logging:commons-logging:1.2" level="project" />
<orderEntry type="library" name="Maven: commons-codec:commons-codec:1.9" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpmime:4.5.1" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpmime:4.5.2" level="project" />
<orderEntry type="library" name="Maven: mysql:mysql-connector-java:5.1.38" level="project" />
<orderEntry type="library" name="Maven: org.jsoup:jsoup:1.8.3" level="project" />
</component>

28
pom.xml

@ -6,7 +6,7 @@
<groupId>BotApi</groupId>
<artifactId>org.telegram.botapi</artifactId>
<version>1.0</version>
<version>2.0</version>
<repositories>
<repository>
@ -24,9 +24,10 @@
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<jersey.version>2.22.1</jersey.version>
<httpcompontents.version>4.5.1</httpcompontents.version>
<telegrambots.version>v1.0</telegrambots.version>
<httpcompontents.version>4.5.2</httpcompontents.version>
<telegrambots.version>v2.3.3.1</telegrambots.version>
<json.version>20160212</json.version>
<mysql.version>5.1.38</mysql.version>
</properties>
<dependencyManagement>
@ -51,25 +52,10 @@
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-grizzly2-http</artifactId>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json-jackson</artifactId>
<version>${jersey.version}</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-bundle</artifactId>
<version>1.19</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-grizzly2-servlet</artifactId>
<version>1.19</version>
</dependency>
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20151123</version>
<version>${json.version}</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
@ -89,7 +75,7 @@
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.38</version>
<version>${mysql.version}</version>
</dependency>
<dependency>
<groupId>org.jsoup</groupId>

21
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 {

10
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

14
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<WeatherAlert> getAllAlerts() {
List<WeatherAlert> allAlerts = new ArrayList<>();

348
src/main/java/org/telegram/services/BotLogger.java

@ -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<String> 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<String> 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();
}
}
}
}

1
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;

1
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;

2
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;

11
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

1
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;

12
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,6 +36,7 @@ public class ChannelHandlers extends TelegramLongPollingBot {
@Override
public void onUpdateReceived(Update update) {
try {
Message message = update.getMessage();
if (message != null && message.hasText()) {
try {
@ -44,6 +45,9 @@ public class ChannelHandlers extends TelegramLongPollingBot {
BotLogger.severe(LOGTAG, e);
}
}
} catch (Exception e) {
BotLogger.error(LOGTAG, e);
}
}
@Override

23
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<String, String> languages = LocalisationService.getInstance().getSupportedLanguages();
List<List<String>> commands = new ArrayList<>();
List<KeyboardRow> commands = new ArrayList<>();
for (Map.Entry<String, String> entry : languages.entrySet()) {
List<String> commandRow = new ArrayList<>();
KeyboardRow commandRow = new KeyboardRow();
commandRow.add(entry.getKey() + " --> " + entry.getValue());
commands.add(commandRow);
}

94
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;
@ -43,9 +44,19 @@ public class FilesHandlers extends TelegramLongPollingBot {
@Override
public void onUpdateReceived(Update update) {
try {
if (update.hasMessage()) {
try {
handleFileUpdate(update);
} catch (InvalidObjectException e) {
} 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);
}
}
}
private void onListCommand(Message message, String language) throws InvalidObjectException {
private void onListCommand(Message message, String language) throws InvalidObjectException, TelegramApiException {
HashMap<String, String> 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);
}
}
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<String, String> files = DatabaseManager.getInstance().getFilesByUser(message.getFrom().getId());
ReplyKeyboardMarkup replyKeyboardMarkup = new ReplyKeyboardMarkup();
if (files.size() > 0) {
List<List<String>> commands = new ArrayList<>();
List<KeyboardRow> commands = new ArrayList<>();
for (Map.Entry<String, String> entry : files.entrySet()) {
List<String> 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);
}
}
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);
}
}
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);
}
}
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);
}
}
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,15 +202,10 @@ 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);
}
}
private void onStartWithParameters(Message message, String language, String part) throws InvalidObjectException {
try {
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());
@ -234,19 +217,16 @@ public class FilesHandlers extends TelegramLongPollingBot {
sendMessageRequest.setChatId(message.getChatId().toString());
sendMessage(sendMessageRequest);
}
} catch (TelegramApiException e) {
BotLogger.error(LOGTAG, e);
}
}
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<String, String> languages = LocalisationService.getInstance().getSupportedLanguages();
List<List<String>> commands = new ArrayList<>();
List<KeyboardRow> commands = new ArrayList<>();
for (Map.Entry<String, String> entry : languages.entrySet()) {
List<String> 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);
}
}
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);
}
}
}

29
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,15 +43,19 @@ public class RaeHandlers extends TelegramLongPollingBot {
@Override
public void onUpdateReceived(Update update) {
try {
if (update.hasInlineQuery()) {
handleIncomingInlineQuery(update.getInlineQuery());
} else if (update.hasMessage() && update.getMessage().isUserMessage()) {
try {
sendMessage(getHelpMessage(update.getMessage()));
} catch (TelegramApiException e) {
e.printStackTrace();
BotLogger.error(LOGTAG, e);
}
}
} catch (Exception e) {
BotLogger.error(LOGTAG, e);
}
}
@Override
@ -64,9 +73,9 @@ public class RaeHandlers extends TelegramLongPollingBot {
try {
if (!query.isEmpty()) {
List<RaeService.RaeResult> 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);

8
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);
}
}

89
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,12 +60,16 @@ public class WeatherHandlers extends TelegramLongPollingBot {
@Override
public void onUpdateReceived(Update update) {
try {
if (update.hasMessage()) {
Message message = update.getMessage();
if (message.hasText() || message.hasLocation()) {
handleIncomingMessage(message);
}
}
} catch (Exception e) {
BotLogger.error(LOGTAG, e);
}
}
@Override
@ -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);
}
}
private static boolean isCommandForOther(String text) {
@ -899,11 +910,11 @@ public class WeatherHandlers extends TelegramLongPollingBot {
replyKeyboardMarkup.setResizeKeyboard(true);
replyKeyboardMarkup.setOneTimeKeyboad(false);
List<List<String>> keyboard = new ArrayList<>();
List<String> keyboardFirstRow = new ArrayList<>();
List<KeyboardRow> keyboard = new ArrayList<>();
KeyboardRow keyboardFirstRow = new KeyboardRow();
keyboardFirstRow.add(getCurrentCommand(language));
keyboardFirstRow.add(getForecastCommand(language));
List<String> 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<List<String>> keyboard = new ArrayList<>();
List<KeyboardRow> keyboard = new ArrayList<>();
for (String languageName : LocalisationService.getInstance().getSupportedLanguages().values()) {
List<String> row = new ArrayList<>();
KeyboardRow row = new KeyboardRow();
row.add(languageName);
keyboard.add(row);
}
List<String> 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<List<String>> keyboard = new ArrayList<>();
List<String> row = new ArrayList<>();
List<KeyboardRow> 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<List<String>> keyboard = new ArrayList<>();
List<String> keyboardFirstRow = new ArrayList<>();
List<KeyboardRow> keyboard = new ArrayList<>();
KeyboardRow keyboardFirstRow = new KeyboardRow();
keyboardFirstRow.add(getLanguagesCommand(language));
keyboardFirstRow.add(getUnitsCommand(language));
List<String> 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<List<String>> keyboard = new ArrayList<>();
List<KeyboardRow> keyboard = new ArrayList<>();
for (String recentWeather : DatabaseManager.getInstance().getRecentWeather(userId)) {
List<String> row = new ArrayList<>();
KeyboardRow row = new KeyboardRow();
row.add(recentWeather);
keyboard.add(row);
}
List<String> 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<List<String>> keyboard = new ArrayList<>();
List<KeyboardRow> keyboard = new ArrayList<>();
List<String> 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<List<String>> keyboard = new ArrayList<>();
List<KeyboardRow> keyboard = new ArrayList<>();
for (String alertCityName: alertCitiesNames) {
List<String> row = new ArrayList<>();
KeyboardRow row = new KeyboardRow();
row.add(alertCityName);
keyboard.add(row);
}
List<String> row = new ArrayList<>();
KeyboardRow row = new KeyboardRow();
row.add(getCancelCommand(language));
keyboard.add(row);

Loading…
Cancel
Save