예제 #1
0
        public Corrigendum(ChatboxConnector connector, JObject config)
            : base(connector)
        {
            _config    = new CorrigConfig(config);
            _wordLists = new Dictionary <string, HashSet <string> >();

            // read the dictionaries
            foreach (var item in _config.Items)
            {
                if (_wordLists.ContainsKey(item.WordListFilename))
                {
                    // done already
                    continue;
                }

                using (var dictFile = new StreamReader(item.WordListFilename, Encoding.UTF8))
                {
                    var wordSet = new HashSet <string>();

                    string line;
                    while ((line = dictFile.ReadLine()) != null)
                    {
                        var trimmedLine = line.Trim().ToLower();
                        if (trimmedLine.Length > 0)
                        {
                            wordSet.Add(trimmedLine);
                        }
                    }

                    _wordLists[item.WordListFilename] = wordSet;
                }
            }
        }
예제 #2
0
        public Echelon(ChatboxConnector connector, JObject config)
            : base(connector)
        {
            _config     = new EchelonConfig(config);
            _regexCache = new Dictionary <string, Regex>();
            _wordLists  = new Dictionary <string, HashSet <string> >();

            // read the dictionaries
            foreach (var wordList in _config.WordLists)
            {
                using (var dictFile = new StreamReader(wordList, Encoding.UTF8))
                {
                    var wordSet = new HashSet <string>();

                    string line;
                    while ((line = dictFile.ReadLine()) != null)
                    {
                        var trimmedLine = line.Trim().ToLower();
                        if (trimmedLine.Length > 0)
                        {
                            wordSet.Add(trimmedLine);
                        }
                    }

                    _wordLists[wordList] = wordSet;
                }
            }
        }
예제 #3
0
        public HttpInterface(ChatboxConnector connector, JObject config)
            : base(connector)
        {
            Config      = new InterfaceConfig(config);
            MessageList = new LinkedList <ChatboxMessage>();

            _responder = new Responder(this);
            _responder.Start();
        }
예제 #4
0
        public Stfu(ChatboxConnector connector, JObject cfg)
            : base(connector)
        {
            _config = new StfuConfig(cfg);

            // clear out old bans
            using (var context = GetNewContext())
            {
                foreach (var expiredBan in context.Bans.Where(b => b.Deadline.HasValue && b.Deadline.Value < DateTime.Now))
                {
                    context.Bans.Remove(expiredBan);
                }
            }
        }
예제 #5
0
        static void Main(string[] args)
        {
            // log to console
            var repo = (Hierarchy)LogManager.GetRepository();

            repo.Root.Level = Level.Debug;
            repo.Configured = true;
            var layout = new PatternLayout
            {
                ConversionPattern = "%-6timestamp [%15.15thread] %-5level %30.30logger %ndc - %message%newline"
            };

            layout.ActivateOptions();
            var conApp = new ConsoleAppender
            {
                Layout = layout
            };

            conApp.ActivateOptions();
            repo.Root.AddAppender(conApp);

            // load configuration
            Config config;
            var    configPath = Path.Combine(Util.ProgramDirectory, "Config.json");

            using (var reader = new StreamReader(configPath, Encoding.UTF8))
            {
                config = new Config(reader.ReadToEnd());
            }

            // initialize HTML decompiler and chatbox connector
            var decompiler = new HtmlDecompiler(config.HtmlDecompiler.SmileyUrlToSymbol, config.HtmlDecompiler.TeXPrefix);
            var connector  = new ChatboxConnector(config.Forum, decompiler);

            // load modules
            ModuleLoader.LoadModules(config, connector);

            // launch connector
            connector.Start();
        }
예제 #6
0
 public Messenger(ChatboxConnector connector, JObject config)
     : base(connector)
 {
     _config = new MessengerConfig(config);
 }
예제 #7
0
 public IsTuwelDown(ChatboxConnector connector, JObject cfg)
     : base(connector)
 {
     _config = new TuwelDownConfig(cfg);
 }
예제 #8
0
 public LinkInfo(ChatboxConnector connector, JObject config)
     : base(connector)
 {
 }
예제 #9
0
 public LastSeenApi(ChatboxConnector connector, JObject cfg)
     : base(connector)
 {
     _config = new SeenConfig(cfg);
 }
예제 #10
0
 public Motivator(ChatboxConnector connector, JObject config)
     : base(connector)
 {
     _config = new MotivatorConfig(config);
     _random = new Random();
 }
예제 #11
0
 public Thanks(ChatboxConnector connector, JObject config)
     : base(connector)
 {
     _config = new ThanksConfig(config);
 }
예제 #12
0
 public BinAdmin(ChatboxConnector connector, JObject cfg)
     : base(connector)
 {
     _config = new BinAdminConfig(cfg);
 }
예제 #13
0
 public Allograph(ChatboxConnector connector, JObject config)
     : base(connector)
 {
     _config = new AllographConfig(config);
     _random = new Random();
 }
예제 #14
0
 public GroupPressure(ChatboxConnector connector, JObject cfg)
     : base(connector)
 {
     _backlog = new Queue <BacklogMessage>();
     _config  = new PressureConfig(cfg);
 }