def main(settings="settings.py", verbose=False): """ Application entry point. """ # Expose settings global module try: settings = imp.load_source("settings", settings) except: sys.exit("Could not load settings file: %s" % settings) # Config logging level = verbose if logging.DEBUG else logging.INFO logging.basicConfig(level=level, stream=sys.stdout, format=LOG_FORMAT) logger.info("Starting sevabot") for skype_logger_name in ["Skype4Py.utils.EventHandlingBase", "Skype4Py.skype.Skype", "Skype4Py.api.darwin.SkypeAPI"]: skype_logger = logging.getLogger(skype_logger_name) skype_logger.setLevel(logging.WARN) from sevabot import modules modules.load_modules() sevabot = get_bot() logger.info("Skype API connection established") sevabot.start() server.run(settings.HTTP_HOST, settings.HTTP_PORT) # Should be never reached return 0
def handleMessages(self, msg, status): """ Handle incoming messages """ if status == "RECEIVED" or status == "SENT": logger.debug("%s - %s - %s: %s" % (status, msg.Chat.FriendlyName, msg.FromHandle, msg.Body)) if status in ["RECEIVED", "SENT"] and msg.Body: words = msg.Body.split() if len(words) < 0: return keyword = words[0] if not keyword.startswith("!"): return keyword = keyword[1:] logger.debug("Trying to identify keyword: %s" % keyword) if keyword == "reload": commands = modules.load_modules() msg.Chat.SendMessage("Available commands: %s" % ", ".join(commands)) return if modules.is_module(keyword): # Execute module asynchronously def callback(output): msg.Chat.SendMessage(output) modules.run_module(keyword, words[1:], callback) return if msg.Body == "!loadModules": msg.Chat.SendMessage("Loading modules...") try: self.loadModules() except Exception as e: msg.Chat.SendMessage(str(e)) return return elif msg.Body == "!loadChats": self.getChats() return