/// <summary> /// Adds the given name to _items and calls SaveItem() and UpdateARList() /// </summary> /// <param name="name">name of the new item</param> internal void AddNew(string name) { if (_items.ContainsKey(name)) { SaveItem(name); return; } AutoResponseItem item = new AutoResponseItem(); _items.Add(name, item); this.SaveItem(name); this.UpdateARList(); }
/// <summary> /// Updates clb_chat_arList /// </summary> private void UpdateARList() { int i = 0; AutoResponseItem[] items = new AutoResponseItem[_items.Count]; _items.Values.CopyTo(items, 0); // clear lis _b.GUI.clb_chat_arList.Items.Clear(); foreach (AutoResponseItem item in items) { _b.GUI.clb_chat_arList.Items.Add(item.Name); _b.GUI.clb_chat_arList.SetItemChecked(i, item.IsActive()); i++; } }
/// <summary> /// Checks all auto response items if any matches. /// </summary> /// <param name="msgIN">message to check</param> /// <param name="cl"></param> /// <returns>message(s)</returns> internal string[] Process(ChatMessage msgIN, GuiChatLobby cl) { // check if auto response is activated if (!_b.GUI.cb_chat_arEnable.Checked) { return(null); } // check if msg is too old System.Diagnostics.Debug.WriteLineIf(DEBUG, "rec msg: " + msgIN.send_time + " - now: " + Processor.conv_Date2Timestam(DateTime.UtcNow)); if (msgIN.send_time < Processor.conv_Date2Timestam(DateTime.UtcNow) - 60) { return(null); } // check if there are any items if (_items.Count == 0) { this.SetupBasicItems(); } List <string> msgOUT = new List <string>(); string s = ""; AutoResponseItem[] items = new AutoResponseItem[_items.Count]; _items.Values.CopyTo(items, 0); foreach (AutoResponseItem item in items) { if (item.IsActive() && !item.IsLobbyBlacklisted(cl.ID)) { s = item.Process(msgIN); } if (s != "") { msgOUT.Add(s); s = ""; } } return(msgOUT.ToArray()); }
/// <summary> /// Adds /time, /date and /manual command /// </summary> private void SetupBasicItems() { string name; // add /time command name = "time"; if (!_items.Keys.Contains <string>(name)) { ResponseFunctionDelegate timeDelegate = delegate(string s) { return(System.DateTime.UtcNow.ToLongTimeString() + " (UTC)"); }; AutoResponseItem time = new AutoResponseItem(name, "time", "", '/', true, false, false, timeDelegate); //time.Enable(); _items.Add(name, time); } // add /date command name = "date"; if (!_items.Keys.Contains <string>(name)) { ResponseFunctionDelegate dateDelegate = delegate(string s) { return(System.DateTime.UtcNow.ToShortDateString() + " (UTC)"); }; AutoResponseItem date = new AutoResponseItem(name, "date", "", '/', true, false, false, dateDelegate); //date.Enable(); _items.Add(name, date); } // add /manual command name = "manual EN"; if (!_items.Keys.Contains <string>(name)) { string s = ""; //s += "German: <a href=\"retroshare://file?name=RetroShare_Manual_German_2012_12_12.pdf&size=221437&hash=271cc46798434ffbc6163daae86cce475621c952\">RetroShare_Manual_German_2012_12_12.pdf</a> \r"; s += "English: <a href=\"retroshare://file?name=RetroShare_Manual_English_2012_12_12_UNFINISHED.pdf&size=183421&hash=b7196b802271946e979279f56e4dea4c1cdac9d0\">RetroShare_Manual_English_2012_12_12_UNFINISHED.pdf</a>"; AutoResponseItem manual = new AutoResponseItem(name, "manual", s, '/', true, false, false); //manual.Enable(); _items.Add(name, manual); } name = "manual DE"; if (!_items.Keys.Contains <string>(name)) { string s = ""; s += "German: <a href=\"retroshare://file?name=RetroShare_Manual_German_2012_12_12.pdf&size=221437&hash=271cc46798434ffbc6163daae86cce475621c952\">RetroShare_Manual_German_2012_12_12.pdf</a> \r"; //s += "English: <a href=\"retroshare://file?name=RetroShare_Manual_English_2012_12_12_UNFINISHED.pdf&size=183421&hash=b7196b802271946e979279f56e4dea4c1cdac9d0\">RetroShare_Manual_English_2012_12_12_UNFINISHED.pdf</a>"; AutoResponseItem manual = new AutoResponseItem(name, "manual", s, '/', true, false, false); //manual.Enable(); _items.Add(name, manual); } // add /insult command //name = "insult"; //if (!_items.Keys.Contains<string>(name)) //{ // ResponseFunctionDelegate insultDelegate = delegate(string msg) // { // string[] a = msg.Split(' '); // if (a == null || a.Length < 2) // return ""; // return ("@" + a[1] + ": " + Processor.GetRandomInsult()); // }; // AutoResponseItem insult = new AutoResponseItem(name, "insult", "", '/', false, true, false, insultDelegate); // //insult.Enable(); // _items.Add(name, insult); //} }