As of 2014 the Ubuntu Classroom project is no longer active.
Thanks to everyone for their support over the years. Write to the ubuntu-community-team mailing list if you have further ideas in this space.

ClassBot was designed by the Classroom Management team to make it easier to run classes in #ubuntu-classroom. It automates several tasks that previously were required to be performed manually.

User Interaction

Asking Question

To ask a question, you need to be in #ubuntu-classroom-chat and ask your question in the following format:

QUESTION: <question>

Where <question> is your actual question. If you do not begin the line with QUESTION:, ClassBot will not recognize it, and your question will most likely not get answered.

Instructor Interaction

Automatic Tasks

Channel Topic

Using the Learning Events Calendar, ClassBot will update the /topic in #ubuntu-classroom and #ubuntu-classroom-chat to contain information about the current session. Currently, this information includes the session title, names of the instructors, and the event (if present).

Channel Moderation

By default, classroom sessions are not moderated (-m). This means that anyone is able to talk in #ubuntu-classroom. However, if the session is part of an event (if it contains an Event: field on the calendar), it will be moderated by default (+m). During a moderated session, users are encouraged to join #ubuntu-classroom-chat, where they can ask questions and comment on the current session.

The 'Moderated:' field in the calendar can be used to change this default behavior. If you are leading a session, please let a member of the Classroom Management Team know whether you would like the channel to be moderated or not moderated, and they will take care of making the necessary changes on the calendar.

Voicing Instructors

All instructors will automatically be voiced in both #ubuntu-classroom and #ubuntu-classroom-chat at the start of their session. They will also automatically be devoiced at the end of the session.

Session Helpers

Some instructors prefer to have session helpers to assist with processing questions that are asked in #ubuntu-classroom-chat. Session Helpers have access to the same ClassBot features as Instructors. The only difference between an Instructor and a Session Helper (as far as ClassBot is concerned) is that Session Helpers will not appear in the /topic.


If your class utilizes the slide feature in Lernid, ClassBot will announce the URL of the slides at the start of the session in both #ubuntu-classroom and #ubuntu-classroom-chat. It will also add a link to the slides in the /topic of those channels.

Instructor Commands

The following commands can be used by instructors (or session helpers) to interact with the bot. They must be sent via private message to ClassBot.

Question Handling

!question / !q

Issuing this command to ClassBot will allow you to review the next question in the queue. You can then accept the question with !yes or reject the question with !no [comment].

!yes / !y

Replying !yes or !y after ClassBot has shown you a question for review (after doing !question) will post the question to #ubuntu-classroom for everyone to see. You can then proceed to answer the question.

!no / !n [comment]

Replying !no or !n after ClassBot has shown you a question for review (after doing !question) will reject the question. If you include an optional comment, (i.e.: !no This is not a support class. Please join #ubuntu for support.) ClassBot will send your comment to the user in #ubuntu-classroom-chat.

A question can be rejected if:

  • the question is not relevant to the current session
  • the question is a support question that is not appropriate for the classroom setting
  • the question will be answered later in the session

#ubuntu-classroom Moderation

Depending on the type of session you are running, ClassBot may or may not moderate #ubuntu-classroom by default. You can easily change if the channel is moderated or not.

!moderate / !m

The !moderate command can be used to quickly and easily toggle whether #ubuntu-classroom is moderated (+m) or not (-m).


You may wish to give voice to an additional instructor or someone from your team who can answer a question for you while #ubuntu-classroom is moderated.

!voice / !v <nickname>

The !voice command can be used to quickly add an additional voiced user on #ubuntu-classroom during a session.

!devoice / !dv

The !devoice command can be used to remove voice from a given participant in #ubuntu-classroom during a session.

Asking for help

An instructor may ask for help by using the !admin / !a command.

Administrative Commands

There are are few strictly defined administrators for ClassBot who can always use the above commands and more, including:


!calendar / !cal / !c

If an update to the calendar is made and you need to update ClassBot immediately, this command can be used to download the calendar file


!topic / !t) and !qtopic / !qt <new topic prefix>

These commands take one argument, the new content of the first part of /topic for the classroom and -chat channels respectively. These strings can contain certain variables:

  • $chan - The main classroom channel (#ubuntu-classroom for classbot)
  • $qchan - The -chat channel (#ubuntu-classroom-chat for classbot)
  • $qprefix - The localized question prefix (QUESTION: for classbot)

These will get replaced with the correct values for the session when the /topic is updated.

Keep in mind, these commands do not cause instant changes. The changes will only take affect when a /topic update is necessary (at the start/end of a session).

Social Media

Administrators can trigger a "dent" or post (which cross-posts to Twitter).

!dent <text of dent>

The !dent command, followed by the text of the dent, is used to update

Calendar Format

ClassBot uses the Learning Events Calendar. However, classroom sessions added to this calendar need to be in a specific format in order for ClassBot to be able to parse them.


The title of the event on the calendar should be the name of the classroom session. This name will show up in the /topic of the IRC channel and will be used to reference the session in blog posts, wiki logs, and several other places. The title should not contain the name of the event (only the name of the specific session) or the name(s) of the instructor(s).

When/Date & Time

When specifying the date/time of the session, please do not use recurring events or All Day events. These mess up ClassBot and several other scripts. If a session is really a full day, simply specify the specific start/end times and leave the All Day event box unchecked.

Remember, when you add a session using Google Calendar, you add it in your local time. Google Calendar will take care of all time conversions. You can verify that it got added correctly by checking here. All times on that page should be in UTC.

You should also be sure to check that there are no conflicts at that specific date/time. Only one session can take place at a time in #ubuntu-classroom, so if a session is already scheduled, you will need to find a different date/time for your session.


The Location field must contain the name of the IRC channel that the sessions will be held in. For most sessions, this will #ubuntu-classroom (Locations that do not contain #ubuntu-classroom will be ignored by the official ClassBot). An example of what the Location field might look like for a normal classroom session is: Location: #ubuntu-classroom on


Make sure that you add the event to the correct calendar. We use the Learning Events Calendar


The Description field contains most of the information about the session. Several fields are supported by ClassBot.



The Instructor (or Instructors) field lists the IRC nickname of the instructor(s) of the session. These are the people who will be doing the teaching. They will be listed in the /topic, voiced by ClassBot, and able to use !q/!y/!n to process questions. An example of how this field might look is: Instructors: nhandler, cjohnston, pleia2 Keep in mind, the 's' at the end of 'Instructors' is optional. Multiple instructors should be separated by a comma (with spaces following the comma being optional). All names are IRC nicknames, not Launchpad names or real names.


This field is very similar to the Instructors field. Helpers are identical to instructors, but they are not listed in the /topic or mentioned in most publications about the session. Helpers are usually members of the group that helped to organize the event. Usually, they are there to help process questions so that the instructor doesn't need to worry about them. An example of how this field might look is: Helpers: akgraner, jono, jcastro Just like with the Instructor field, the 's' at the end of 'Helpers' is optional, and multiple helpers are separated by commas.

Omit this field if there are no helpers.


The Event field is only present for sessions that are part of a larger event (i.e. Ubuntu Open Week, Ubuntu Developer Week, Ubuntu User Day, Packaging Training Session, etc). The name of the event will be listed in the /topic. Having the Event field present will also cause ClassBot to set the classroom +m (moderated). This means that all questions must be asked in #ubuntu-classroom-chat. The !moderate command can be used to change this once the session has started. An example of how an Event field might look is: Event: Ubuntu Open Week

Omit this field if the session is not part of an event.


The Moderated field is used to specify whether the classroom should be moderated (+m) or not (-m). When the classroom is moderated, questions must be asked in #ubuntu-classroom-chat. If it is unmoderated, questions can be asked directly in #ubuntu-classroom (however, ClassBot can't be used to process them). Sessions with an 'Event' field present are moderated by default; other sessions are unmoderated by default. The Moderated field overrides this default behavior. This field only has two possible values: Moderated: Yes or Moderated: No A value of Yes will cause the classroom to be moderated regardless of whether an Event field is present (the same goes for a value of No).

If this field is omitted, ClassBot will moderate sessions with an Event field and leave other sessions unmoderated.


The Slides field allows you to specify the URL of a PDF slideshow that goes with your session. An archive of slides is available here. If Lernid is being used for the session, it will detect slides specified in this field. At the start of the session, ClassBot will announce the slide URL in the channel and put a link in the /topic. An example of how this field might look is: Slides:

Keep in mind, slides are not required for sessions. For sessions that do not use Lernid, it will be up to the individual participants to download the pdf and follow along themselves.

This field should be omitted if there are no slides.

Bugs and Feature Requests

If you run into any issues with ClassBot, or have any suggestions on ways to improve it, please file a bug!

Classroom/ClassBot (last edited 2012-07-05 16:15:02 by lyz)