/// <summary> /// Возвращает сообщение из базы данных /// </summary> /// <param name="message_id">Идентификатор сообщения</param> /// <param name="user_id">Идентификатор пользователя</param> /// <param name="chat_id">Идентификатор чата</param> /// <returns></returns> private MessageTDB GetMessageFromDB(Int64 message_id, Int64 user_id, Int64 chat_id) { if (sqlConnection != null) { SQLiteCommand cmd = sqlConnection.CreateCommand(); cmd.CommandText = "SELECT direct, message_id, parent_id, text " + "FROM messages WHERE message_id = @message_id AND chat_id = @chat_id"; cmd.Parameters.AddWithValue("@message_id", message_id); cmd.Parameters.AddWithValue("@chat_id", chat_id); try { SQLiteDataReader r = cmd.ExecuteReader(); string line = String.Empty; MessageTDB message = null; while (r.Read()) { message = new MessageTDB(); message.Direct = r["direct"].ToString(); message.MessageID = Convert.ToInt32(r["message_id"]); message.ParentID = Convert.ToInt32(r["parent_id"]); message.Text = r["text"].ToString(); } r.Close(); return(message); } catch (SQLiteException ex) { Logger.Debug(tmSettings, "sql rd error: " + ex.Message.ToString(), true, mutLogger); } } return(null); }
/// <summary> /// Возвращает текст команды /// </summary> /// <param name="message">Сообщение, для которого надо получить вышестоящую команду</param> private string GetTextOfRootCommand(TelegramMessage message) { string commandText = ""; List <string> commandParams = new List <string>(); commandParams.Add(message.text); MessageTDB msg = null; Int64 parent_id = message.reply_to_message.message_id; while (parent_id > 0) { msg = GetMessageFromDB(parent_id, message.from.id, message.chat.id); if (msg == null) { parent_id = 0; } else if (msg.ParentID > 0) { parent_id = msg.ParentID; if (msg.Direct == "in") { commandParams.Add(msg.Text); } } else { parent_id = 0; commandText = msg.Text; } } string param = ""; int i = commandParams.Count - 1; while (0 <= i) { param += commandParams[i]; if (0 < i) { param += ","; } i--; } if (!String.IsNullOrEmpty(param)) { commandText += " " + param; } return(commandText); }