public bool newTokenDb(string Cuenta, string mail)
        {
            //Console.WriteLine(Cuenta);
            string selectQuery = "SELECT cuenta_telegram,fecha_ultimo_token from alumnos_bot where cuenta_telegram=@Cuenta";

            try
            {
                using var selectCommand = new SqlCommand(selectQuery, myConnection);
                OpenConnection();

                selectCommand.Parameters.Add(new SqlParameter("@Cuenta", Cuenta));
                SqlDataReader selectResult = selectCommand.ExecuteReader();
                while (selectResult.Read())
                {
                    // Console.WriteLine(selectResult.GetString(0));
                    if (Cuenta == selectResult.GetString(0))
                    {
                        DateTime actual = selectResult.GetDateTime(1);
                        actual = actual.AddMinutes(5);
                        DateTime nos     = DateTime.Now;
                        int      compare = DateTime.Compare(actual, nos);
                        // Console.WriteLine(nos);
                        if (DateTime.Compare(actual, nos) <= 0)
                        {
                            Console.WriteLine(mail);
                            CloseConnection();
                            string tokenNuevo = createToken();
                            EnviarCorreo(mail, tokenNuevo);

                            sqlserver db = new sqlserver();

                            string     updateQuery   = "UPDATE alumnos_bot set token_generado=@token,fecha_ultimo_token=@nos WHERE cuenta_telegram=@Cuenta";
                            SqlCommand updateCommand = new SqlCommand(updateQuery, db.myConnection);
                            db.OpenConnection();
                            updateCommand.Parameters.AddWithValue("@Cuenta", Cuenta);
                            updateCommand.Parameters.AddWithValue("@nos", nos);
                            updateCommand.Parameters.AddWithValue("@token", tokenNuevo);

                            var updateResult = updateCommand.ExecuteNonQuery();
                            db.CloseConnection();

                            return(true);
                        }
                    }
                }
            }
            catch (Exception e)
            {
                Console.WriteLine("new token" + e.Message);
            }


            return(false);
        }
        private static void Bot_OnMessage(object sender, Telegram.Bot.Args.MessageEventArgs e)
        {
            var message = e.Message;

            sqlserver sqlite = new sqlserver();

            Console.WriteLine($"Mensaje de @{message.Chat.Username}:" + message.Text);


            if (message == null || message.Type != Telegram.Bot.Types.Enums.MessageType.Text)
            {
                return;
            }
            ;

            bool exists = sqlite.ExisteDb(message.Chat.Username);
            bool estate = sqlite.estadoDb(message.Chat.Username);

            //Prueba oara dia actual
            // sqlite.FechaA();
            if (message.Chat.Username == null)
            {
                Bot.SendTextMessageAsync(message.Chat.Id, "Su cuenta de Telegram no esta configurada correctamente porfavor\n Ve a Ajustes>Elegir Nombre de Usuario");
            }
            else
            {
                if (exists && estate)
                {
                    string numCuenta = sqlite.GetCuentaNUMDb(message.Chat.Username);

                    string nombre = sqlite.GetCuentaDb(message.Chat.Username);
                    //Declaracion Botones
                    var BotonesHYD = new InlineKeyboardMarkup(new[]
                    {
                        new []
                        {
                            InlineKeyboardButton.WithCallbackData(
                                text: "Horas Totales",
                                callbackData: "Horas " + numCuenta), //Aqui mando el numero de Cuenta para devolver al usuario indicado
                            InlineKeyboardButton.WithCallbackData(
                                text: "Detalle de Horas",
                                callbackData: "Detalles " + numCuenta)
                        }
                    });
                    //INformacion botones

                    // MOstrar Botones
                    Bot.SendTextMessageAsync(
                        message.Chat.Id,
                        "Estimado estudiante " + nombre + ": Bienvenido al Asistente de Vinculación UNITEC-SPS \n Elija una Opcion",
                        replyMarkup: BotonesHYD);
                }
                else if (exists && estate == false)
                {
                    if (sqlite.VerificarDb(message.Chat.Username, message.Text.Split(" ").Last().ToString()))
                    {
                        bool verifcadoCorrectamen = sqlite.VerificarUpdateDb(message.Chat.Username, message.Text.Split(" ").Last().ToString());
                        if (verifcadoCorrectamen)
                        {
                            Bot.SendTextMessageAsync(message.Chat.Id, "Tu cuenta se Verifico Exitosamente");
                            //Declaracion Botones
                            string numCuenta  = sqlite.GetCuentaNUMDb(message.Chat.Username);
                            string nombre     = sqlite.GetCuentaDb(message.Chat.Username);
                            var    BotonesHYD = new InlineKeyboardMarkup(new[]
                            {
                                new []
                                {
                                    InlineKeyboardButton.WithCallbackData(
                                        text: "Horas Totales",
                                        callbackData: "Horas " + numCuenta),//Aqui mando el numero de Cuenta para devolver al usuario indicado
                                    InlineKeyboardButton.WithCallbackData(
                                        text: "Detalle de Horas",
                                        callbackData: "Detalles " + numCuenta)
                                }
                            });
                            //INformacion botones

                            // MOstrar Botones
                            Bot.SendTextMessageAsync(
                                message.Chat.Id,
                                "Estimado estudiante " + nombre + ": Bienvenido al Asistente de Vinculación UNITEC-SPS \n Elija una Opcion",
                                replyMarkup: BotonesHYD);
                        }
                    }
                    else if (message.Text.Split(" ").Last().ToString().ToLower() == "reenviar")
                    {
                        // Obtengo el correo de cuenta actual que quiere que le reenvie codigo
                        string cuenta = sqlite.GetCuentaNUMDb(message.Chat.Username);
                        string Mail   = sqlite.GetMailDb(cuenta);



                        // oculto ciertas partes del corroe para que no sea visible en su totalidad
                        string changedMail = sqlite.ConverMail(Mail);
                        //envio respeusta de donde envie su codigo de confirmacion
                        if (sqlite.newTokenDb(message.Chat.Username, Mail))
                        {
                            Console.WriteLine("Se reenvio un nuevo codigo a de confimacion al correo:" + changedMail);
                            Bot.SendTextMessageAsync(message.Chat.Id, "Se reenvio un nuevo codigo a de confimacion al correo:" + changedMail);
                        }
                        else
                        {
                            Bot.SendTextMessageAsync(message.Chat.Id, "Para Solicitar un nuevo codigo debes tener mas de 5 minutos de haber recibido tu ultimo codigo ");
                        }
                    }

                    else
                    {
                        Bot.SendTextMessageAsync(message.Chat.Id, "Token Ingresado Incorrecto\nEscribe reenviar para solicitar nuevo token");
                    }
                }
                else
                {
                    switch (message.Text.Split(" ").First().ToLower())
                    {
                    case "/start":


                        Bot.SendTextMessageAsync(message.Chat.Id,
                                                 "Estimado estudiante: Bienvenido al Asistente de Vinculación UNITEC-SPS\n\nIngrese su número de cuenta para sus consultas");

                        break;



                    default:

                        switch (!sqlite.CuentaExisteDb(message.Text.Split(" ").First().ToString()))
                        {
                        case false:
                            // revisa que el numero de cuenta venga solo sin ningun otra palabra
                            if (sqlite.CuentaExisteDb(message.Text.Split(" ").Last().ToString()))
                            {
                                // verificar si la cuenta esta verificada
                                switch (sqlite.CuentaVerificadaDb(message.Text))
                                {
                                //Caso cuenta verificada pero con otro user de telegram
                                case true:

                                    Bot.SendTextMessageAsync(message.Chat.Id, "El numero de Cuenta que ingresaste ya esta ligado a otra cuenta de telegram \nPara consultas enviar correo a:\[email protected] ó [email protected]");

                                    break;        //case cuenta verificada con otro user de telegram

                                //Caso Cuenta no verificada
                                case false:

                                    // Obtengo el correo de cuenta ingresada
                                    string Mail = sqlite.GetMailDb(message.Text);
                                    // oculto ciertas partes del corroe para que no sea visible en su totalidad
                                    string changedMail = sqlite.ConverMail(Mail);
                                    //envio respeusta de donde envie su codigo de confirmacion



                                    //Proceso de enviar correo y generar token
                                    if (Mail == null || Mail == "" || Mail == " " || Mail == "NULL")
                                    {
                                        Bot.SendTextMessageAsync(message.Chat.Id, "Tu Numero de cuenta no tiene un correo vinculado \nPara consultas enviar correo a:\[email protected] ó [email protected]");
                                    }
                                    else
                                    {
                                        Bot.SendTextMessageAsync(message.Chat.Id, "Numero de Cuenta no verificado \nPara verificar Tu Numero de Cuenta ingresas token enviado a tu correo: " + changedMail);

                                        sqlite.insertarDb(message.Chat.Username, message.Text, Mail);
                                        Console.WriteLine("Se ha reenviado un codigo de Verificacion al correo:" + Mail);
                                    }

                                    break;
                                }
                            }
                            break;

                        default:


                            Bot.SendTextMessageAsync(message.Chat.Id, "Numero de Cuenta Incorrecto Vuelve a ingresarlo Para consultas enviar correo a:\[email protected] ó [email protected]");


                            break;
                        }


                        break;
                    }
                }
            }
        }
        private static void Bot_OnCallbackQuery(object sender, CallbackQueryEventArgs callbackQueryEventArgs)
        {
            sqlserver sqlserver     = new sqlserver();
            var       callbackQuery = callbackQueryEventArgs.CallbackQuery;

            switch (callbackQuery.Data.Split(" ").First().ToLower())
            {
            case "horas":
                string totalHoras = sqlserver.HorasTotales(callbackQuery.Data.Split(" ").Last());

                ///vuelve a mostrar el boton

                var BotonesHYD = new InlineKeyboardMarkup(new[]
                {
                    new []
                    {
                        InlineKeyboardButton.WithCallbackData(
                            text: "Horas Totales",
                            callbackData: "Horas " + callbackQuery.Data.Split(" ").Last()),     //Aqui mando el numero de Cuenta para devolver al usuario indicado
                        InlineKeyboardButton.WithCallbackData(
                            text: "Detalle de Horas",
                            callbackData: "Detalles " + callbackQuery.Data.Split(" ").Last())
                    }
                });
                //vuelve a mostrar boton

                Bot.SendTextMessageAsync(
                    callbackQuery.Message.Chat.Id,
                    "Tienes un total de " + totalHoras + " horas a la fecha.\nPara consultas enviar correo a:\[email protected] ó [email protected]\n\nOpciones ",
                    replyMarkup: BotonesHYD);

                break;

            case "detalles":
                string DetalleHoras = sqlserver.HorasDetalle2(callbackQuery.Data.Split(" ").Last());
                ///vuelve a mostrar el boton

                var BotonesHY = new InlineKeyboardMarkup(new[]
                {
                    new []
                    {
                        InlineKeyboardButton.WithCallbackData(
                            text: "Horas Totales",
                            callbackData: "Horas " + callbackQuery.Data.Split(" ").Last()),      //Aqui mando el numero de Cuenta para devolver al usuario indicado
                        InlineKeyboardButton.WithCallbackData(
                            text: "Detalle de Horas",
                            callbackData: "Detalles " + callbackQuery.Data.Split(" ").Last())
                    }
                });
                //vuelve a mostrar boton

                Bot.SendTextMessageAsync(
                    callbackQuery.Message.Chat.Id,
                    "Tu Informacion es la siguiente:\n" + DetalleHoras + "\nPara consultas enviar correo a:\[email protected] ó [email protected]\n\nOpciones",
                    replyMarkup: BotonesHY);
                break;


            default:
                break;
            }
        }