Code Realm

Log In

Main Page

Code Page

Supybot Plugins

Supybot-Channel Summer Page

AusImage Realm Code Projects

I have been helping the Ubuntu Community enhance their logging of IRC meetings. Now, I was looking for a way to automate the process of making summaries from IRC meetings. I took the tags from Mootbot and started to modify a Supybot plugin known as `ChannelLogger.

I hope to provide the plugin as soon as I am clear on the license.


Channel Summer is born

After much studying of the uncommented code, I figured out how to modify the existing code from Channel Logger. I modified the function doPrivmsg to only log when certain tags started a message.

    def doPrivmsg(self, irc, msg):
        """ Altered from Channel Logger to only log certain tagged lines """ 

        (recipients, text) = msg.args

        for channel in recipients.split(','):
            if irc.isChannel(channel):
                nick = msg.nick or irc.nick
                if text.startswith('[action]'):
                    # msg begins with [action]
                    self.doLog(irc, channel, '<%s> %s\n', nick, text)
                elif text.startswith('[idea]'):
                    # msg begins with [idea]
                    self.doLog(irc, channel, '<%s> %s\n', nick, text)
                elif text.startswith('[topic]'):
                    # msg begins with [topic]
                    self.doLog(irc, channel, '<%s> %s\n', nick, text)
                elif text.startswith('[agreed]'):
                    # msg begins with [agreed]
                    self.doLog(irc, channel, '<%s> %s\n', nick, text)
                elif text.startswith('[link]'):
                    # msg begins with [link]
                    self.doLog(irc, channel, '<%s> %s\n', nick, text)
                elif text.startswith('[todo]'):
                    # msg begins with [todo]
                    self.doLog(irc, channel, '<%s> %s\n', nick, text)
                elif text.startswith('[done]'):
                    # msg begins with [done]
                    self.doLog(irc, channel, '<%s> %s\n', nick, text)
                elif text.startswith('*end*'):
                    # mark log with end banner
                    self.doLog(irc, channel, '%s\n', '**** MEETING FINISHES HERE****')
                elif text.startswith('*start*'):
                    # mark log with start banner
                    self.doLog(irc, channel, '%s\n', '**** MEETING BEGINS HERE****')
                # else: 
                #   self.doLog(irc, channel, '%s\n', '')

I removed most of the 'do' functions from the code except for the doLog and doPrivmsg. I also replaced all instances of ChannelLogger with ChannelSummer in each file.

Channel Summer Tags

The following tags are outputted to the log.

 * [action] to denote an action to be taken.
 * [idea] to denote a choice or idea on a topic.
 * [topic] to denote a topic from the agenda.
 * [agreed]  to denote an agreement from a vote.
 * [link] to denote a link for more information.
 * [todo] to denote an item to be done.
 * [done] to denote an item that has been finished.

In addition, there are two other tags to mark out an IRC meeting block.

 * *start* marks the log with a start banner.
 * *end* marks the log with an end banner.

Additional Configuration

The original config file still operates like before. So you keep your similar settings between Channel Logger and Channel Summer.


Contact with Questions or Feedback: Send email to tjaustinbardo AT gmail DOT com

Creative Commons Attribution-NonCommercial-ShareAlike License

modified: August 18, 2007, at 08:27 PM