Beispiel #1
0
        /// <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);
                }));
            }
        }
Beispiel #2
0
        /// <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();
        }
Beispiel #3
0
        /// <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("Сперва выберите город.");
            }
        }
Beispiel #4
0
        } = 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 заполняется городами из списка
        }
Beispiel #5
0
        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();                                   //начать отслеживание
        }