6. Presence

Presence describes the concept of a person's availability state, such as online or away, possibly with an optional message.

6.1. Callbacks for presence changes

Plugins may override callback_presence() in order to receive notifications of presence changes. You will receive a Presence object for every presence change received by Errbot.

Here's an example which simply logs each presence change to the log when it includes a status message:

from errbot import BotPlugin

class PluginExample(BotPlugin):
    def callback_presence(self, presence):
        if presence.get_message() is not None:
            self.log.info(presence)

6.2. Change the presence/status of the bot

You can also, depending on the backend you use, change the current status of the bot. This allows you to make a moody bot that leaves the room when it is in a bad mood ;)

from errbot import BotPlugin, botcmd, ONLINE, AWAY

class PluginExample(BotPlugin):
    @botcmd
    def grumpy(self, mess, args):
        self.change_presence(AWAY, 'I am tired of you all!')

    @botcmd
    def happy(self, mess, args):
        self.change_presence(ONLINE, 'I am back and so happy to see you!')