コード例 #1
0
ファイル: Logger.cs プロジェクト: Rafa652/IRCQueueBot
        private void ProcessIrc(IrcEvent ev)
        {
            // For the most part, just logging. A handful of events of interest will go to screen.
            string filetarget = null;

            if (ev is ServerEvent) {
                // All server events are assumed to be important enough to display on screen
                filetarget = "_serverstatus";
                ToConsole(ev.Timestamp, ev.ToString());
            } else if (ev is ChannelEvent) {
                // Target is channel
                filetarget = ((ChannelEvent)ev).Channel;
            } else if (ev is QuitEvent) {
                // Multiple targets
                var qe = (QuitEvent)ev;
                string line = qe.ToString();
                foreach (string channel in qe.Sender.Channels) {
                    ToFile(ev.Timestamp, channel, line);
                }
                if (qe.Sender.IsClient) ToConsole(ev.Timestamp, qe.ToString());
                return;
            } else if (ev is NickChangeEvent) {
                // Multiple targets also
                var nce = (NickChangeEvent)ev;
                string line = nce.ToString();
                foreach (string channel in nce.Sender.Channels) {
                    ToFile(ev.Timestamp, channel, line);
                }
                if (nce.Sender.IsClient) ToConsole(ev.Timestamp, nce.ToString());
                return;
            } else if (ev is UserEvent) {
                var ue = (UserEvent)ev;
                bool isClient = ue.Sender.IsClient;
                filetarget = ue.Sender;

                // If sender is bot, file target is event target
                // Also all of these are events of interest
                if (ue is CtcpEvent) {
                    if (isClient) filetarget = ((CtcpEvent)ue).Target;
                } else if (ue is MessageEvent) {
                    if (isClient) filetarget = ((MessageEvent)ue).Target;
                    else ToConsole(ev.Timestamp, ev.ToString());
                } else if (ue is InviteEvent) {
                    if (isClient) filetarget = ((InviteEvent)ue).Target;
                }
            } else if (ev is OutputEvent) {
                // Ignore.
                return;
            } else {
                // TODO Must find a place for these if they appear
                filetarget = "_unknown_irc";
            }

            if (filetarget != null) ToFile(ev.Timestamp, filetarget, ev.ToString());
        }
コード例 #2
0
ファイル: Startup.cs プロジェクト: papci/BipBipBot
 private void OnNextIrcEvent(IrcEvent obj)
 {
     Log(Json(obj), LogLevel.Information);
 }