Source code for errbot.core_plugins.textcmds
from errbot import BotPlugin, botcmd
INROOM, USER, MULTILINE = 'inroom', 'user', 'multiline'
[docs]class TextModeCmds(BotPlugin):
"""
Internal to TextBackend.
"""
__errdoc__ = "Added commands for testing purposes"
[docs] def activate(self):
# This won't activate the plugin in anything else than text mode.
if self.mode != 'text':
return
super().activate()
# Some defaults if it was never used before'.
if INROOM not in self:
self[INROOM] = False
if USER not in self:
self[USER] = self.build_identifier(self.bot_config.BOT_ADMINS[0])
if MULTILINE not in self:
self[MULTILINE] = False
# Restore the values to their live state.
self._bot._inroom = self[INROOM]
self._bot.user = self[USER]
self._bot._multiline = self[MULTILINE]
[docs] def deactivate(self):
# Save the live state.
self[INROOM] = self._bot._inroom
self[USER] = self._bot.user
self[MULTILINE] = self._bot._multiline
super().deactivate()
[docs] @botcmd
def inroom(self, msg, args):
"""
This puts you in a room with the bot.
"""
self._bot._inroom = True
if args:
room = args
else:
room = '#testroom'
self._bot.query_room(room).join()
return f'Joined Room {room}.'
[docs] @botcmd
def inperson(self, msg, _):
"""
This puts you in a 1-1 chat with the bot.
"""
self._bot._inroom = False
return 'Now in one-on-one with the bot.'
[docs] @botcmd
def asuser(self, msg, args):
"""
This puts you in a room with the bot. You can specify a name otherwise it will default to 'luser'.
"""
if args:
usr = args
if usr[0] != '@':
usr = '@' + usr
self._bot.user = self.build_identifier(usr)
else:
self._bot.user = self.build_identifier('@luser')
return f'You are now: {self._bot.user}.'
[docs] @botcmd
def asadmin(self, msg, _):
"""
This puts you in a 1-1 chat with the bot.
"""
self._bot.user = self.build_identifier(self.bot_config.BOT_ADMINS[0])
return f'You are now an admin: {self._bot.user}.'
[docs] @botcmd
def ml(self, msg, _):
"""
Switch back and forth between normal mode and multiline mode. Use this if you want to test
commands spanning multiple lines. Note: in multiline, press enter twice to end and send the message.
"""
self._bot._multiline = not self._bot._multiline
return 'Multiline mode, press enter twice to end messages' if self._bot._multiline else 'Normal one line mode.'