/// <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(); }
/// <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("Сперва выберите город."); } }
} = false; //Флаг закрытия окна #endregion #region Конструктор public MainWindow(string tokenForBot) { InitializeComponent(); //Инициализация окна App.Current.MainWindow.Title = "SomeName2000_bot"; //Заголовок окна client = new TgMsgClient(this, tokenForBot); //Создание объекта клиента бота clientWeather = new WeatherClient(this); //Объект для работы с погодными данными ForMsgLB.ItemsSource = client.LastMSG; //Привязка объекта коллекции логов к элементу ЛистБокс (ForMsgLB) на форме citiesCB.ItemsSource = clientWeather.citiesCollection; //ComboBox заполняется городами из списка }
public static Dictionary <long, int> usersDictionary = new Dictionary <long, int>(); //Словарь для поиска добавленных пользователей по id #endregion #region Конструктор public TgMsgClient(MainWindow w, string token) { wc = new WeatherClient(w); this.LastMSG = new ObservableCollection <MsgLog>(); //Коллекция для последних сообщений this.BotMsgLog = new ObservableCollection <MsgLog> [0]; //Коллекции для логгирования this.w = w; //объект главного окнка bot = new TelegramBotClient(token); //клиент телеграм bot.OnCallbackQuery += Bot_OnCallbackQuery; //Подписка на события нажатых клавиш bot.OnMessage += Bot_OnMessage; //подписка на входящие bot.StartReceiving(); //начать отслеживание }