public void Talk(System.String message) { if (_Player != null) { _Player.Talk(message).OnValue += (result) => { TalkResult.Invoke(result); }; } }
private void PutNotification(Wiki wiki, TalkResult result, DateTime date) { string talkPageTemplate; string dateString = date.ToString("d MMMM yyyy"); if (!result.Moved) { talkPageTemplate = "{{Не переименовано|" + dateString + "|" + result.Title + "}}\n"; } else { talkPageTemplate = "{{Переименовано|" + dateString + "|" + result.Title + "|" + result.MovedTo + "}}\n"; } string talkPage = "Обсуждение:" + (result.Moved ? result.MovedTo : result.Title); Console.Out.WriteLine("Updating " + talkPage + "..."); try { ParameterCollection parameters = new ParameterCollection(); parameters.Add("rvprop", "content"); parameters.Add("rvsection", "0)"); parameters.Add("prop", "revisions"); XmlDocument xml = wiki.Query(QueryBy.Titles, parameters, new string[] { talkPage }); string content; XmlNode node = xml.SelectSingleNode("//rev"); if (node != null) { content = node.FirstChild != null ? node.FirstChild.Value : ""; } else { content = ""; } int index = content.IndexOf("{{talkheader", StringComparison.CurrentCultureIgnoreCase); if (index != -1) { int endIndex = content.IndexOf("}}", index); if (endIndex != -1) { content = content.Insert(endIndex + 2, "\n" + talkPageTemplate); } } else { index = content.IndexOf("{{заголовок обсуждения", StringComparison.CurrentCultureIgnoreCase); if (index != -1) { int endIndex = content.IndexOf("}}", index); if (endIndex != -1) { content = content.Insert(endIndex + 2, "\n" + talkPageTemplate); } } else { content = content.Insert(0, talkPageTemplate); } } wiki.SaveSection(talkPage, "0", content, "итог"); } catch (WikiException e) { Console.Out.WriteLine("Failed to update " + talkPage + ":" + e.Message); } }