Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
 public ConnectionManager([CanBeNull] string configPath)
     : this(SharpIrcBotUtil.LoadConfig(configPath))
 {
     ConfigFilePathKnown = true;
     ConfigPath          = configPath;
 }