void HandleMessageFromTG(object sender, MessageEventArgs messageEventArgs)
        {
            try
            {/*
              * var keyboard = new InlineKeyboardMarkup(new Telegram.Bot.Types.InlineKeyboardButton[][]
              *                         {new [] {
              *                                  new Telegram.Bot.Types.InlineKeyboardButton("Текст для первой кнопки","callback1"),
              *                                  new Telegram.Bot.Types.InlineKeyboardButton("Текст второй кнопки","callback2"),
              *                                  },
              *                        });
              *
              */
                var chatId  = messageEventArgs.Message.Chat.Id;
                var message = messageEventArgs.Message.Text;
                var ikm     = new InlineKeyboardMarkup(new[]
                {
                    new[]
                    {
                        InlineKeyboardButton.WithCallbackData("холодно ", "myCommand1"),
                    },
                    new[]
                    {
                        InlineKeyboardButton.WithCallbackData("нормально", "myCommand2"),
                    }, new[]
                    {
                        InlineKeyboardButton.WithCallbackData("жакро", "myCommand3"),
                    },
                });
                botClient.SendTextMessageAsync(chatId, "Приветсвую, " + messageEventArgs.Message.From.Username + ", в мбильной версии голосвания за првоетривание в помещении RND. Как вы оцениваете температуру сейчас?", replyMarkup: ikm);

                var data = Convert.ToInt32(message);

                botClient.OnCallbackQuery += async(object sc, Telegram.Bot.Args.CallbackQueryEventArgs ev) =>
                {
                    var z = ev.CallbackQuery.Message;
                    if (ev.CallbackQuery.Data == "myCommand1")
                    {
                        await botClient.AnswerCallbackQueryAsync(ev.CallbackQuery.Id, "Вам холодно, ваше мнение будет учтено", true);

                        data = 0;
                    }
                    else if (ev.CallbackQuery.Data == "myCommand2")
                    {
                        await botClient.AnswerCallbackQueryAsync(ev.CallbackQuery.Id, "Вас устраивает температура, ваше мнение будет учтено", true);

                        //await botClient.SendTextMessageAsync(message.Chat.Id, "2", replyToMessageId: message.MessageId);
                        //await botClient.AnswerCallbackQueryAsync(ev.CallbackQuery.Id); // отсылаем пустое, чтобы убрать "частики" на кнопке
                        data = 5;
                    }
                    else
                    if (ev.CallbackQuery.Data == "myCommand3")
                    {
                        await botClient.AnswerCallbackQueryAsync(ev.CallbackQuery.Id, "Вам жарко, ваше мнение будет учтено", true);

                        //await botClient.SendTextMessageAsync(message.Chat.Id, "3", replyToMessageId: message.MessageId);
                        //await botClient.AnswerCallbackQueryAsync(ev.CallbackQuery.Id); // отсылаем пустое, чтобы убрать "частики" на кнопке
                        data = 10;
                    }
                    var clientName = messageEventArgs.Message.From;

                    //botClient.SendTextMessageAsync(chatId, "Cпасибо ," +messageEventArgs.Message.From + ", за голос ", replyMarkup: ikm);

                    var indexName = _clientResponses.FindIndex(x => x.IpAddress == Convert.ToString(clientName));

                    lock (locker)
                    {
                        if (!string.IsNullOrEmpty(message))
                        {
                            var isIPinList = _clientResponses.Any(x => x.IpAddress == Convert.ToString(clientName));

                            if (!isIPinList)
                            {
                                _clientResponses.Add(new ClientResponse(clientName.ToString(), Convert.ToInt32(data), DateTime.Now, false));
                            }
                            else
                            {
                                _clientResponses[indexName] = new ClientResponse(clientName.ToString(), Convert.ToInt32(data), DateTime.Now, false);
                            }
                        }
                    }
                };
                //botClient.SendTextMessageAsync(chatId, "Cпасибо ," + messageEventArgs.Message.From + ", за голос ", replyMarkup: ikm);
            }
            catch
            {
            }
        }
        static void Main(string[] args)
        {
            Console.WriteLine("Connecting...");
            // Устанавливаем для сокета локальную конечную точку
            IPHostEntry ipHost     = Dns.GetHostEntry("10.0.10.254");
            IPAddress   ipAddr     = ipHost.AddressList[0];
            IPEndPoint  ipEndPoint = new IPEndPoint(ipAddr, 11000);
            var         average    = 0;

            var a = new TempInside();

            a.Connect();

            int[] ventTimeMass = { 9, 1, 6 };// массив со временем проветривания

            // Создаем сокет Tcp/Ip
            Socket sListener = new Socket(ipAddr.AddressFamily, SocketType.Stream, ProtocolType.Tcp);

            // Назначаем сокет локальной конечной точке и слушаем входящие сокеты
            try
            {
                sListener.Bind(ipEndPoint);
                sListener.Listen(10);

                var countUser = 0;
                // Начинаем слушать соединения
                var tg = new TGmodel();
                tg.GetMessageFromTG();
                DateTime dt         = DateTime.Now;
                string   bufDate    = dt.ToShortDateString();
                var      outweather = new OutWeather();
                var      outTemp    = "0"; // переменная для хранения температуры взятой с интернета
                while (true)
                {
                    //получение дня и если сегодня не было проверки температаруы то проверять
                    string curDate = dt.ToShortDateString();
                    if (curDate != bufDate) //для првоерки работы, должно быть !=
                    {
                        outTemp = outweather.GetData();
                    }
                    // Программа приостанавливается, ожидая входящее соединение
                    Socket handler = sListener.Accept();
                    string data    = null;

                    // Мы дождались клиента, пытающегося с нами соединиться
                    byte[] bytes    = new byte[1024];
                    var    bytesRec = handler.Receive(bytes);

                    data += Encoding.UTF8.GetString(bytes, 0, bytesRec);//получение данных от клиента (от 0 до 10)

                    IPEndPoint clientep;
                    clientep = (IPEndPoint)handler.RemoteEndPoint;

                    var isIPinList = _clientResponses.Any(x => x.IpAddress == Convert.ToString(clientep.Address));
                    var indexIp    = _clientResponses.FindIndex(x => x.IpAddress == Convert.ToString(clientep.Address));

                    //var ipAddress = clientep.Address.ToString();
                    if (!string.IsNullOrEmpty(data))
                    {
                        if (!isIPinList)
                        {
                            _clientResponses.Add(new ClientResponse(clientep.Address.ToString(), Convert.ToInt32(data), DateTime.Now, true));
                        }
                        else
                        {
                            _clientResponses[indexIp] = new ClientResponse(clientep.Address.ToString(), Convert.ToInt32(data), DateTime.Now, true);
                        }
                    }

                    if (outTemp.Length > 5)
                    {
                        outTemp = outTemp.Substring(0, outTemp.Length - 13);
                    }
                    //вывод информации в консоль
                    Console.Write("Температура на улице: " + outTemp + "\n");
                    Console.WriteLine("Погода в офисе: " + a.TempInsideValue);
                    Console.Write("Полученный текст: " + data + "  от " + clientep + "\n");
                    Console.Write("Всего пользователей подключено: " + _clientResponses.Count + "\n");

                    try
                    {
                        var timeNow       = DateTime.Now;
                        var maxDifference = TimeSpan.FromSeconds(30);

                        for (var i = 0; i < _clientResponses.Count; i++)
                        {
                            if ((timeNow - _clientResponses[i].Time) > maxDifference)
                            {
                                _clientResponses.RemoveAt(i);
                            }
                        }

                        var sum = 0;
                        for (var i = 0; i < _clientResponses.Count; i++)
                        {
                            sum += _clientResponses[i].Temperature;
                        }

                        average = sum / _clientResponses.Count;//расчет среднего
                    }
                    catch
                    {
                        //Console.WriteLine("Пришло сообщение с ошибкой!");
                    }

                    int hoursNow  = DateTime.Now.Hour;
                    int minuteNow = DateTime.Now.Minute;


                    //формирование сообщения о провертивании
                    string reply = "В " + Convert.ToString(ventTimeMass[1]) + ":00" + " будет проводиться проветривание.";

                    if (average < 3)
                    {
                        reply = "Окно будет скоро закрыто";
                    }
                    if (average > 7)
                    {
                        reply = "Окно будет скоро открыто";
                    }

                    if (hoursNow == ventTimeMass[0] && minuteNow < 15 || hoursNow == ventTimeMass[1] && minuteNow < 15 || hoursNow == ventTimeMass[2] && minuteNow < 15)
                    {
                        reply = "Идет проветривание, осталось: " + Convert.ToString(15 - minuteNow) + " минут";
                    }
                    else
                    {
                        if (hoursNow < 6)
                        {
                            hoursNow += 12;
                        }
                        var nearVentTime = 0;
                        for (int i = 0; i < ventTimeMass.Length; i++)
                        {
                            if (ventTimeMass[i] - hoursNow >= 0)
                            {
                                nearVentTime = ventTimeMass[i];
                                reply        = "В " + Convert.ToString(nearVentTime) + ":00" + " будет проводиться проветривание.";
                                break;
                            }
                            else
                            {
                            }
                        }
                    }
                    // reply = "Идет проветривание, осталось: " + Convert.ToString(15 - minuteNow) + " минут";//ДЛЯ ТЕСТА

                    reply = average + " " + reply;

                    byte[] msg = Encoding.UTF8.GetBytes(reply);
                    handler.Send(msg);
                    // Отправляем ответ клиенту\
                    Console.Write("Среднее число сейчас: " + average + "\n\n");

                    if (data.IndexOf("<TheEnd>") > -1)
                    {
                        Console.WriteLine("Сервер завершил соединение с клиентом.");
                        break;
                    }

                    handler.Shutdown(SocketShutdown.Both);
                    handler.Close();
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
            finally
            {
                Console.ReadLine();
            }
        }