Advertisement
Guest User

Untitled

a guest
Jan 21st, 2019
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.30 KB | None | 0 0
  1. public class Bot extends TelegramLongPollingBot {
  2. private static final String NAME_OF_BOT = "MyWeather129Bot";
  3. private static final String BOT_TOKEN = "657869679:AAGZ5xy_V5WyTDWy7Ex8HorP-UABJKT****";
  4. public SqlMethods source;
  5.  
  6. public void onUpdateReceived(Update update){
  7. Message message = update.getMessage();
  8. if(message.getText().equals("/start")){
  9. sendMSG(message, "Привет, "+ message.getChat().getFirstName()+"!"+ System.lineSeparator()+
  10. "Для просмотра погоды нужно выбрать место нахождения." +
  11. System.lineSeparator()+
  12. "Для этого достаточно написать название населенного пункта и страну в чат" +
  13. "(Например Sankt-Peterburg или Санкт-Петербург)");
  14. }
  15. else if(message != null && message.hasText() && !message.getText().equals("/start")) {
  16. try {
  17. sendMSG(message, Weather.getWeather(message.getText()));
  18. sendMSG(message, WeatherTomorrow.getWeatherTomorrow(message.getText()));
  19. } catch (IOException e) {
  20. sendMSG(message, "Город не найден!напишите название населенного пункта в чат " +
  21. "(Например Sankt-Peterburg или Санкт-Петербург)");
  22. }
  23. }
  24. else if (message.getText().equals("/subscribe")) {
  25. sendMSG(message, "Напишите название населённого пункта," +
  26. "для которого вы хотите получать ежедневный прогноз погоды");
  27. long id = message.getChatId();
  28. String userName = message.getChat().getUserName();
  29. String firstName = message.getChat().getFirstName();
  30. String location = message.getText();
  31. boolean subResult = source.addSubscriber(id, userName, firstName);
  32. if (subResult) {
  33. sendMSG(message, "Спасибо за подписку :)");
  34. } else {
  35. sendMSG(message, "Не удалось подписаться!");
  36. }
  37. }
  38. else if (message.getText().equals("/unsubscribe")){
  39. long deleteId = message.getChatId();
  40. boolean unsubResult = source.deleteSubscriber(deleteId);
  41. if(unsubResult){
  42. sendMSG(message, "Вы отписались от прогноза погоды :(");
  43. } else{
  44. sendMSG(message, "Не удалось отписаться!");
  45. }
  46. }
  47. else {
  48. sendMSG(message, "напишите название населенного пункта в чат " +
  49. "(Например Sankt-Peterburg или Санкт-Петербург)");
  50. }
  51. }
  52.  
  53. public void sendMSG(Message message, String text){
  54. SendMessage sendMessage = new SendMessage();
  55. sendMessage.enableMarkdown(true);
  56. sendMessage.setChatId(message.getChatId().toString());
  57. sendMessage.setReplyToMessageId(message.getMessageId());
  58.  
  59. sendMessage.setText(text);
  60. try {
  61. execute(sendMessage);
  62. setButtons(sendMessage);
  63.  
  64. }catch (TelegramApiException e){
  65. e.printStackTrace();
  66. }
  67. }
  68.  
  69. public void setButtons(SendMessage sendMessage){
  70. ReplyKeyboardMarkup replyKeyboardMarkup = new ReplyKeyboardMarkup();
  71. sendMessage.setReplyMarkup(replyKeyboardMarkup);
  72. replyKeyboardMarkup.setSelective(true);
  73. replyKeyboardMarkup.setOneTimeKeyboard(false);
  74. replyKeyboardMarkup.setOneTimeKeyboard(false);
  75.  
  76.  
  77. List<KeyboardRow> keyboardRowList = new ArrayList<>();
  78. KeyboardRow keyboardFirstRow = new KeyboardRow();
  79.  
  80. keyboardRowList.add(keyboardFirstRow);
  81. replyKeyboardMarkup.setKeyboard(keyboardRowList);
  82. }
  83.  
  84. public String getBotUsername(){
  85. return NAME_OF_BOT;
  86. }
  87.  
  88. public String getBotToken(){
  89. return BOT_TOKEN;
  90. }
  91. }
  92.  
  93. public class Weather {
  94.  
  95.  
  96. public static final String URL_SOURCE = "http://api.openweathermap.org/data/2.5/weather?q=";
  97. public static final String API_KEY = "&APPID=3ad54740fd37f3f14a3a32a09f09cd25";
  98. public static final String UNITS = "&units=metric";
  99. public static final String LANG = "&lang=ru";
  100.  
  101.  
  102. public static String getWeather(String message) throws IOException{
  103. // get weather data from URL
  104. URL url = new URL(URL_SOURCE + message + LANG + UNITS + API_KEY);
  105.  
  106. InputStreamReader reader = new InputStreamReader(url.openStream());
  107.  
  108. OneDayWeather todayWeatherData = null;
  109. Gson todayWeatherGson = new Gson();
  110.  
  111. todayWeatherData = todayWeatherGson.fromJson(reader, OneDayWeather.class);
  112.  
  113. System.out.println("В городе " + todayWeatherData.getName() + " сегодня "+ System.lineSeparator() +
  114. "Температура: " + String.format("%.1f", todayWeatherData.getTemp().getTemp()) + "°C, " + System.lineSeparator()+
  115. "Влажность: " + todayWeatherData.getTemp().getHumidity() + "%, " + System.lineSeparator()+
  116. "Осадки: " + todayWeatherData.getWeatherToday().get(0).getDescription()+ System.lineSeparator()+
  117. "Скорость ветра: " + (int)todayWeatherData.getWind().getSpeed() + " м/с" + System.lineSeparator()+
  118. "http://openweathermap.org/img/w/" + todayWeatherData.getWeatherToday().get(0).getIcon() + ".png");
  119.  
  120.  
  121. return "В городе: " + todayWeatherData.getName() + " сегодня "+ System.lineSeparator() +
  122. "Температура: " + String.format("%.1f", todayWeatherData.getTemp().getTemp()) + "°C, " + System.lineSeparator()+
  123. "Влажность: " + todayWeatherData.getTemp().getHumidity() + "%, " + System.lineSeparator()+
  124. "Осадки: " + todayWeatherData.getWeatherToday().get(0).getDescription() + System.lineSeparator()+
  125. "Скорость ветра: " + (int)todayWeatherData.getWind().getSpeed() + " м/с" + System.lineSeparator()+
  126. "http://openweathermap.org/img/w/" + todayWeatherData.getWeatherToday().get(0).getIcon() + ".png";
  127. }
  128. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement