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.'