Differences between revisions 33 and 34
Revision 33 as of 2014-10-14 10:12:13
Size: 9438
Editor: HolgerLevsen
Comment: the bikeshed should be blue
Revision 34 as of 2017-01-08 18:04:13
Size: 9469
Editor: ?DanielShahaf
Comment: clarify who can use #startmeeting (info from mapreri)
Deletions are marked like this. Additions are marked like this.
Line 17: Line 17:
 * '''`#startmeeting`''' - Start a meeting. You are designated the owner (and have permanent chair powers).  * '''`#startmeeting`''' - Start a meeting. You are designated the owner (and have permanent chair powers).  Anybody can use this command.

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.


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). Anybody can use this command.

  • #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

For Later

  • 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:

darcs pull

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

Installing SupyBot

Download supybot’s source and unpack it somewhere handy. Grab meetbot’s source too.

pushd /tmp
wget http://garr.dl.sourceforge.net/project/supybot/supybot/Supybot-
wget http://code.zgib.net/MeetBot/MeetBot-current.tar.gz
unzip SupyBot-
tar xvzf MeetBot-current.tar.gz
mv MeetBot-current/ircmeeting MeetBot-current/MeetBot/

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-
python setup.py install
mv /tmp/MeetBot-current/MeetBot ./ircbot/lib/python2.7/site-packages/supybot/plugins/MeetBot

Configuring SupyBot

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.