Пример #1
0
        /// <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);
        }
Пример #2
0
        /// <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);
        }