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; } }