MeetBot is designed to assist in running meetings, taking notes, and so on. It is in pure python, as a plugin to supybot. However, there is a clear distinction between meeting-code and IRC-code, so it should be relatively easy to port to other bots. It is under the supybot license (3-clause BSD).
To discuss issues, feature requests or to request it enter another channel, please join #meetbot on OFTC. The current version is by ?RichardDarst (darst @ OFTC). The development mailing list is meetbot-devel on alioth.debian.org. It was started as a clone/replacement of meetbot by HolgerLevsen, which was itself a derivative of https://wiki.ubuntu.com/ScribesTeam/MootBot used by the Ubuntu Scribes team. MootBot and the original meetbot were plugins to the eggdrop IRC bot.
MeetBot is designed to be simple, not complex. Features are great, but not so much that it becomes hard to use or unwieldy to maintain.
Meeting notes and logs appear here after the meeting.
The full manual is located at http://meetbot.debian.net/Manual.html and contains many more tutorials, etc.
Commands start with a #. Not all commands give feedback. Bold commands are the main important ones - knowing just them is enough to run a great meeting.
Admin commands (for only Chairs):
#startmeeting - Start a meeting. You are designated the owner (and have permanent chair powers).
#endmeeting - End the meeting. Must be called by a chair.
#topic - Set a new topic.
#agreed - Document an agreement in the minutes.
Commands for Everyone:
#info - Add an info item to the minutes. People should liberally use this for important things they say, so that they can be logged in the minutes.
#action - Document an action item in the minutes. Include any nicknames in the line, and the item will be assigned to them. (nicknames are case-sensitive)
#idea - Add an idea to the minutes.
#help - Add a "Call for Help" to the minutes. Use this command when you need to recruit someone to do a task. (Counter-intuitively, this doesn't provide help on the bot)
#link - Add a link to the meeting minutes. The link should be the first non-command on the line, other commentary after the link is OK. Links beginning with http:// and a few other protocols are automatically detected.
More advanced commands are in the manual.
(add more feature requests here)
- Another command besides #info for nicknames to announce themselves (e.g, #rollcall John Smith or #here John Smith or #me Jane Smith)
- Publish certain channels only to http_auth protected directories (for sponsor meetings or similar channels where the logs should not be world readable) - ideally one could set the password via /msg to Meetbot
- Publish to a wiki page? (I'll do it if someone gives me wiki-posting code)
- Include a follow-up link (http, mailto or wiki?) to discuss afterwards
- Ability to run commands out-of-band (/msg #action foo)
- Pick up the next lines after #endmeeting, for 2 minutes. and then meetbot should say "final cut" or something so people know they can swear off
- Imported dynamic configuration.
- Work out prefix character issues (what to do about overlap with supybot char?)
Allow #agreed to be used by all. Make it configurable.
- Make permissions on all commands be configurable.
- Allow per-channel permissions.
- More per-channel configuration: timezones?
- Time reminders during the meeting.
#time N to give a time reminder in N minutes.
- All in python
- Multiple Chairs
- Posts direct links when done
- Stores and restores topic
- Sets topic in the channel
- Can restrict permissions on published logs.
- Counts lines spoken by attendees
- Tabulates action items by assigned person, including unassigned items.
- Flexible command definitions, simply add another method.
- Can replay logged meetings and re-generate the minutes from that.
- Can run meetings on multiple channels and servers concurrently.
Pingall command. MeetBot: pingall <ping message>. Open question: should permissions on this be restricted?
- Configurable timezone. Open question: make it configurable per-channel.
Configurable via meetingLocalConfig.py file.
- admin supybot commands (addchair, deletemeeting).
- Switch to a persistent cache: that won't be erased on reload.
- %(meetingname)s configuration
Meetbot runs on python2.4 or greater. It depends on supybot (meetbot a supybot plugin) and pygments (for IRC log highlighting). (Debian packages: supybot, python-pygments) To get the code, do:
darcs get http://anonscm.debian.org/darcs/collab-maint/MeetBot/ # stable code darcs get http://code.zgib.net/MeetBot/ # dev code
To update the code thereafter, use this from the repo directory:
After you have a change you like, just send me a diff (darcs diff -u). (Alternatively, you can darcs record and darcs send. The manual contains more development hints. Join #meetbot on irc.oftc.net to talk.
Installing MeetBot on OS X
pushd /tmp wget http://garr.dl.sourceforge.net/project/supybot/supybot/Supybot-0.83.4.1/Supybot-0.83.4.1.zip wget http://code.zgib.net/MeetBot/MeetBot-current.tar.gz unzip SupyBot-0.83.4.1.zip tar xvzf MeetBot-current.tar.gz mv MeetBot-current/ircmeeting MeetBot-current/MeetBot/ pushd
Now we’re ready to install ?SupyBot along with required plugins.
mkdir ircbot && cd ircbot virtualenv ircbot source ircbot/bin/activate which python pip pushd /tmp/Supybot-0.83.4.1/ python setup.py install popd mv /tmp/MeetBot-current/MeetBot ./ircbot/lib/python2.7/site-packages/supybot/plugins/MeetBot
There’s a wizard to do this, we have only a few answers to give but some items need to go in the config file afterwards.
Launch supybot-wizard and fill in the blanks!
Are you an advanced Supybot user? no
Create default directories? .
What IRC network will you be connecting to? freenode
What server would you like to connect to? leguin.freenode.net
Does this server require connection on a non-standard port? n
The nickname you pick next will also be used for log and config files:
What nick would you like your bot to use? bottled
Do you need a password for the IRC server? n
Do you want your bot to join some channels when it connects? y
Which channels? #bottled #myotherchan
Setting up Plugins
From the last steps a bunch of plugin configuration has already been done. But we need a little bit more, including setting up:
ChannelLogger to support writing logs to disk
MeetBot to help chair our meeting and handle minutes
Beginning configuration for Admin... Done! Beginning configuration for User... Done! Beginning configuration for Channel... Done! Beginning configuration for Misc... Done! Beginning configuration for Config... Done!
Would you like to look at plugins individually? y
What plugin would you like to look at? ChannelLogger
Would you like to load this plugin? y
Beginning configuration for ?ChannelLogger… Done!
What plugin would you like to look at? MeetBot
Would you like to load this plugin? y
Beginning configuration for MeetBot… Done!
Would you like add another plugin? n
Securing the Bot
Would you like to add an owner user for your bot? y
What should the owner’s username be? <your_irc_handle>
What should the owner’s password be? yadayadayada
Would you like to set the prefix char(s) for your bot? y
What would you like your bot’s prefix character(s) to be? #
All done! Your new bot configuration is fqdnbot.conf. If you're running a *nix based OS, you can probably start your bot with the command line 'supybot fqdnbot.conf'. If you're not running a *nix or similar machine, you'll just have to start it like you start all your other Python scripts.
Running the Bot
To start it, launch your python virtual env again as before, and just run supybot <your_bot_name.conf>. Then jump on IRC and PM your bot. You’ll need to authorise yourself user identify <admin> <passwd> before going further.