public bool TryProcessCMD(ChatEventArgs e)
        {
            if (!Enabled || !e.Message.StartsWith("@"))
            {
                return(false);
            }

            foreach (string cmd in e.Message.Substring(1).Split(','))
            {
                RLVRule rule = new RLVRule(e);

                switch (rule.Behaviour)
                {
                case "version":
                    int chan = 0;
                    if (int.TryParse(rule.Param, out chan) && chan > 0)
                    {
                        Respond(chan, "RestrainedLife viewer v1.23 (SteelCity Automaton - Alpha)");
                    }
                    break;

                case "versionnew":
                    chan = 0;
                    if (int.TryParse(rule.Param, out chan) && chan > 0)
                    {
                        Respond(chan, "RestrainedLove viewer v1.23 (SteelCity Automaton - Alpha)");
                    }
                    break;


                case "versionnum":
                    if (int.TryParse(rule.Param, out chan) && chan > 0)
                    {
                        Respond(chan, "1230100");
                    }
                    break;

                case "getgroup":
                    if (int.TryParse(rule.Param, out chan) && chan > 0)
                    {
                        UUID gid = Client.Self.ActiveGroup;
                        if (Am.Groups().ContainsKey(gid))
                        {
                            Respond(chan, Am.Groups()[gid].Name);
                        }
                    }
                    break;

                case "setgroup":
                {
                    if (rule.Param == "force")
                    {
                        Am.set_group(rule.Option);
                    }
                }
                break;

                //TODO MORE

                case "getinv":
                    if (int.TryParse(rule.Param, out chan) && chan > 0)
                    {
                        string        res    = string.Empty;
                        InventoryNode folder = FindFolder(rule.Option);
                        if (folder != null)
                        {
                            foreach (var f in folder.Nodes.Values)
                            {
                                if (f.Data is InventoryFolder && !f.Data.Name.StartsWith("."))
                                {
                                    res += f.Data.Name + ",";
                                }
                            }
                        }

                        Respond(chan, res.TrimEnd(','));
                    }
                    break;

                default:
                    Console.WriteLine("Invalid rlv behaviour:");
                    Console.WriteLine(rule.ToString());
                    break;
                }
            }
            return(true);
        }