protected void HandleSplitToChunks(object sender, MessageChunkingEventArgs e) { var newChunks = new List <IMessageChunk>(); foreach (IMessageChunk chunk in e.Chunks) { if (!(chunk is TextMessageChunk)) { newChunks.Add(chunk); continue; } var textChunk = (TextMessageChunk)chunk; var wordChunks = new List <IMessageChunk>(); foreach (string word in textChunk.Text.Split(' ')) { Uri uri; if (Uri.TryCreate(word, UriKind.Absolute, out uri)) { if (uri.Scheme != "http" && uri.Scheme != "https") { wordChunks.Add(new TextMessageChunk(word)); continue; } // Uri verifies that http(s) URIs are at least minimal (http://a) wordChunks.Add(new UriMessageChunk(word, uri)); } else if (TryCreateUriHeuristically(word, out uri)) { wordChunks.Add(new UriMessageChunk(word, uri)); } else { wordChunks.Add(new TextMessageChunk(word)); } } var spaceChunk = new TextMessageChunk(" "); for (int i = 0; i < wordChunks.Count; ++i) { newChunks.Add(wordChunks[i]); if (i < wordChunks.Count - 1) { newChunks.Add(spaceChunk); } } } e.Chunks = SharpIrcBotUtil.SimplifyAdjacentTextChunks(newChunks); }
public void ReloadConfiguration() { if (!ConfigFilePathKnown) { Logger.LogWarning("cannot reload configuration: configuration file path unknown"); } Config = SharpIrcBotUtil.LoadConfig(ConfigPath); CommandManager.Config = Config.Commands; if (PluginManager == null) { Logger.LogWarning("cannot reload plugin configuration: plugin manager is null"); return; } PluginManager.ReloadConfigurations(Config.Plugins); }
public ConnectionManager([CanBeNull] string configPath) : this(SharpIrcBotUtil.LoadConfig(configPath)) { ConfigFilePathKnown = true; ConfigPath = configPath; }