コード例 #1
0
        /// <summary>
        /// Метод, обрабатывающий запрос пользователя
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void MessageListener(object sender, Telegram.Bot.Args.MessageEventArgs e)
        {
            string url;
            string cityName;
            string messageText = "";
            string response;

            if (e.Message.Text == null)
            {
                return;
            }
            else
            {
                cityName = e.Message.Text;
            }
            url = $"http://api.openweathermap.org/data/2.5/weather?q={cityName}&units=metric&appid=0452bfbba226fdd6b3dc9df0e173a75f";
            try
            {// Передача http запроса
                HttpWebRequest  httpWebRequest  = (HttpWebRequest)WebRequest.Create(url);
                HttpWebResponse httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();
                using (StreamReader streamReader = new StreamReader(httpWebResponse.GetResponseStream()))
                {
                    response = streamReader.ReadToEnd();
                }
                //WeatherResponse weatherResponse = JsonConvert.DeserializeObject<WeatherResponse>(response);
                WeatherResponse weatherResponse = new WeatherResponse(
                    JObject.Parse(response)["name"].ToString(),
                    (float)Convert.ToDouble(JObject.Parse(response)["main"]["temp"].ToString()),
                    (float)Convert.ToDouble(JObject.Parse(response)["main"]["feels_like"].ToString()),
                    (float)Convert.ToDouble(JObject.Parse(response)["main"]["pressure"].ToString()),
                    (float)Convert.ToDouble(JObject.Parse(response)["main"]["humidity"].ToString()),
                    (float)Convert.ToDouble(JObject.Parse(response)["wind"]["speed"].ToString()),
                    Convert.ToInt32(JObject.Parse(response)["clouds"]["all"].ToString())
                    );
                messageText = $"{weatherResponse.Name}:\n" +
                              $"Temperature: {weatherResponse.Temp} °C\n" +
                              $"Feels like: {weatherResponse.Feels_like} °C\n" +
                              $"Pressure: {weatherResponse.Pressure} hPa\n" +
                              $"Humidity: {weatherResponse.Humidity} %\n" +
                              $"Wind speed: {weatherResponse.WindSpeed} m/sec\n" +
                              $"Cloudiness: {weatherResponse.Clouds} %";
            }// Обработка ошибки запроса
            catch (WebException exception)
            {
                if (exception.Status == WebExceptionStatus.ProtocolError)
                {
                    messageText = "City name is wrong!";
                }
            }// Передача ответа пользователю
            bot.SendTextMessageAsync(e.Message.Chat.Id, messageText);


            w.Dispatcher.Invoke(() =>
            {
                MessageLog messageLog = new MessageLog(
                    DateTime.Now.ToLongTimeString(), cityName, e.Message.Chat.FirstName, e.Message.Chat.Id);
                BotMessageLog.Add(messageLog);
                if (saveLog)
                {
                    AddLog(messageLog);
                }
            });
        }
コード例 #2
0
 private void AddLog(MessageLog messageLog)
 {
     File.AppendAllText(@"messageLog.json", JsonConvert.SerializeObject(messageLog) + "\n");
 }