Exemplo n.º 1
0
        internal ChatClient(Plugin plugin, ServerCfg configuration)
        {
            this.plugin        = plugin;
            this.configuration = configuration;
            StatsDatabase      = new StatsDatabaseManager(ConnectDatabase(configuration.Backend));

            var handlers = new List <ChatClientEventHandler>
            {
                // This handler binds ChatUsers to database users and should therefore run first
                new BindHandler(),
                // Logs client events to stdout and optionally the log file
                new LogHandler(),
                // Generates statistics
                new StatsHandler(),
                // Performs channel-administrative actions
                new AdministrationHandler(),
                // Processes commands
                new CommandHandler()
            };

            foreach (var handler in handlers)
            {
                handler.BindClient(this);
                handler.Initialise();
            }
            var eventManager = new ChatClientEventManager(handlers);

            AttachEventHandlers(eventManager);
        }
Exemplo n.º 2
0
 private void AttachEventHandlers(ChatClientEventManager eventManager)
 {
     plugin.OnMessageReceived += message => eventManager.HandleMessage(new MessageEvent(message,
                                                                                        reply => Reply(message.Channel, message.Sender, reply),
                                                                                        reply => SendMessage(message.Channel, reply)));
     plugin.OnNameChange += (oldName, newName) => eventManager.HandleNameChange(new NameChangeEvent(oldName, newName));
     plugin.OnKick       += (kickee, channel, kicker, reason) => eventManager.HandleKick(new KickEvent(kickee, channel, kicker, reason));
     plugin.OnKicked     += (channel, kicker, reason) => eventManager.HandleKicked(new KickedEvent(channel, kicker, reason));
     plugin.OnJoin       += (user, channel) => eventManager.HandleJoin(new JoinEvent(user, channel));
     plugin.OnPart       += (user, channel) => eventManager.HandlePart(new PartEvent(user, channel));
     plugin.OnQuit       += (user, reason) => eventManager.HandleQuit(new QuitEvent(user, reason));
 }