/// <summary> /// Нажатие кнопки отправки погды /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private async void SndweatherButton_Click(object sender, RoutedEventArgs e) { //Если город выбран if (citiesCB.SelectedItem != null) { //Запрос погоды по выбранному городу weatherString = await WeatherClient.GetWeather(citiesCB.SelectedItem.ToString()); //Создание объекта погоды clientWeather.ow = JsonConvert.DeserializeObject <WeatherClient.OpenWeather>(weatherString); var weather = clientWeather.ow; //Строка для отправки пользователю string weatherMessage = $"City: {citiesCB.SelectedItem.ToString()}\n" + $"Temp: {weather.main.Temp.ToString("0.##")} ℃\n" + $"{weather.weather[0].description}\n" + $"Humidity: {weather.main.humidity.ToString()}\n" + $"Pressure: {((int)weather.main.Pressure).ToString()}\n" + $"WindSpeed: {weather.wind.speed.ToString()}\n" + $"WindDeg: {weather.wind.deg.ToString()}"; Dispatcher.Invoke(() => client.SendMessage(weatherMessage, forIdTB.Text)); } else { MessageBox.Show("Сперва выберите город."); } }
/// <summary> /// Обработчик телеграм кнопок /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Bot_OnCallbackQuery(object sender, Telegram.Bot.Args.CallbackQueryEventArgs e) { var m = e.CallbackQuery; //аргументы события //Если в списке городов есть совпадение с сообщением польозвателя if (wc.citiesCollection.Contains(m.Data)) { w.Dispatcher.Invoke(new Action(async() => { //Получение погоду weatherString = await WeatherClient.GetWeather(m.Data); //Создание объекта wc.ow = JsonConvert.DeserializeObject <WeatherClient.OpenWeather>(weatherString); var weather = wc.ow; //Составление строки из данных объекта погоды для отправки string weatherMessage = $"City: {m.Data}\n" + $"Temp: {weather.main.Temp.ToString("0.##")} ℃\n" + $"{weather.weather[0].description}\n" + $"Humidity: {weather.main.humidity.ToString()}\n" + $"Pressure: {((int)weather.main.Pressure).ToString()}\n" + $"WindSpeed: {weather.wind.speed.ToString()}\n" + $"WindDeg: {weather.wind.deg.ToString()}"; await bot.SendTextMessageAsync(m.From.Id, weatherMessage); })); } }
/// <summary> /// Выбор города в ComboBox /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void CitiesCB_SelectionChanged(object sender, SelectionChangedEventArgs e) { //Создание потока для обновления данных погоды на форме var thread = new System.Threading.Thread(() => { //Пока окно не закрыто while (!IsClosed) { //Запрос данных о погоде каждые 5 секунд и обновление элементов окна новыми данными Dispatcher.Invoke(new Action(async() => { weatherString = await WeatherClient.GetWeather(citiesCB.SelectedItem.ToString()); pathToFile.Text = weatherString; clientWeather.ow = JsonConvert.DeserializeObject <WeatherClient.OpenWeather>(weatherString); var weather = clientWeather.ow; tempLBL.Content = $"Temp: {weather.main.Temp.ToString("0.##")} ℃"; tempDescriptLBL.Content = $"{weather.weather[0].description}"; temphumidityLBL.Content = $"Humidity: {weather.main.humidity.ToString()}"; temppressureLBL.Content = $"Pressure: {((int)weather.main.Pressure).ToString()}"; tempwindspeedLBL.Content = $"WindSpeed: {weather.wind.speed.ToString()}"; tempwinddegLBL.Content = $"WindDeg: {weather.wind.deg.ToString()}"; })); System.Threading.Thread.Sleep(5000); } }); thread.Start(); }