#!/usr/bin/env python3 """ An iPython interactive console for debugging purposes. """ from IPython.terminal.embed import InteractiveShellEmbed import module def setup(bot): bot.memory["iconsole_running"] = False @module.require_admin("Only admins can start the interactive console") @module.commands('console') def interactive_shell(bot, trigger): """ Starts an interactive IPython console """ if bot.memory['iconsole_running']: return bot.say('Console already running') banner1 = 'Sopel interactive shell (embedded IPython)' banner2 = '`bot` and `trigger` are available. To exit, type exit' exitmsg = 'Interactive shell closed' console = InteractiveShellEmbed(banner1=banner1, banner2=banner2, exit_msg=exitmsg) bot.memory['iconsole_running'] = True bot.say('console started') console() bot.memory['iconsole_running'] = False