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." )