def execute(): print print SEPARATOR while True: stdout.write('[command]: ') raw_command = raw_input() command = CommandManager().parse(raw_command) if command: result = command.execute() if result: return Modes.PRINT_MODE else: print "\tUnknown command: %s" % raw_command
from command import CommandManager import json import slack import time with open('config.json', 'r') as f: config = json.load(f) CHESSTER_ID = config['CHESSTER']['ID'] SLEEP_SECONDS = config['GENERAL']['SLEEP_SECONDS'] command_queue = CommandManager() def start_chesster(): """Start up chesster""" if slack.connect(): print 'Chesster is up and running!' run_chesster() def run_chesster(): """Let chesster listen for any commands and act on them""" while True: command, channel = get_command_from_chat(slack.read()) if command is not None: command_queue.put_command_in_queue(command) response = command_queue.execute_top_command_in_queue() answer_in_chat(response, channel) time.sleep(SLEEP_SECONDS)
def __init__(self, storage, storageData): self.storage = storage self.storageData = storageData self.pages = storage.loadPages(storageData) self._manager = CommandManager(config.UNDO_HISTORY_SIZE)
class Document(object): def __init__(self, storage, storageData): self.storage = storage self.storageData = storageData self.pages = storage.loadPages(storageData) self._manager = CommandManager(config.UNDO_HISTORY_SIZE) def __len__(self): return len(self.pages) def __getitem__(self, key): return self.pages[key] def findItemByPoint(self, page, itemType, point): if isinstance(page, int): page = self[page] return page.findItem(itemType, lambda item: item.bounds.containsPoint(point)) def merge(self, page, itemType, bounds): if isinstance(page, int): page = self[page] page.flagByBounds(itemType, bounds.intersects) page.merge(itemType, self._manager) if self._manager.commit(): Publisher().sendMessage('DOCUMENT_CHANGE') def cutout(self, page, itemType, bounds): if isinstance(page, int): page = self[page] page.flagByBounds(itemType - 1, bounds.intersects) page.cutout(itemType, self._manager) if self._manager.commit(): Publisher().sendMessage('DOCUMENT_CHANGE') def cutout2(self, pagenb, itemType, bounds): self.pages[pagenb].flagByBounds(itemType - 1, bounds.intersects) self.pages[pagenb]._cutout2(itemType, self._manager) if self._manager.commit(): Publisher().sendMessage('DOCUMENT_CHANGE') def atomize(self, page, itemType, bounds): if isinstance(page, int): page = self[page] page.flagByBounds(itemType, bounds.intersects) page.atomize(itemType, self._manager) if self._manager.commit(): Publisher().sendMessage('DOCUMENT_CHANGE') def smartSplitWords(self, page, bounds): if isinstance(page, int): page = self[page] page.flagByBounds(constants.WORD, bounds.intersects) page.smartSplitWords(self._manager) if self._manager.commit(): Publisher().sendMessage('DOCUMENT_CHANGE') def changeLabel(self, zone, label): zone.setLabel(label, self._manager) if self._manager.commit(): Publisher().sendMessage('DOCUMENT_CHANGE') def changeLabels(self, page, bounds, label): if isinstance(page, int): page = self[page] for zone in page.iterItems(constants.ZONE, lambda item: bounds.intersects(item.bounds)): zone.setLabel(label, self._manager) if self._manager.commit(): Publisher().sendMessage('DOCUMENT_CHANGE') def canUndo(self): return self._manager.canUndo() def undo(self): if self._manager.undo(): Publisher().sendMessage('DOCUMENT_CHANGE') def canRedo(self): return self._manager.canRedo() def redo(self): if self._manager.redo(): Publisher().sendMessage('DOCUMENT_CHANGE') def isModified(self): """ Returns true if the document has been modified since last save and false otherwise. """ return not self._manager.isClean() def save(self, *args, **kwargs): self.storage.savePages(self.pages, self.storageData, *args, **kwargs) self._manager.clean()
logging.basicConfig(level=logging.INFO) wame_config = dict() xkcd_index = dict() xkcd_refs = dict() wame_config = CLIENT.loadJson(CONFIG) xkcd_index = CLIENT.loadJson(INDEX) xkcd_refs = CLIENT.loadJson(REF) blk_list = CLIENT.loadJson(BL) commands = CLIENT.loadJson(COMMANDS) Wame = discord.Client() wgame = discord.Game(name=wame_config['game']) comanager = CommandManager(Wame, xkcd_refs, xkcd_index, blk_list, commands, wame_config) @Wame.event async def on_ready(): await Wame.change_presence(game=wgame) bug_channel = Wame.get_channel(wame_config['report_channel']) CLIENT.greet(Wame, channel=bug_channel) @Wame.event async def on_message(message): if any([message.content.startswith(i) for i in wame_config['prefix']]): if message.mention_everyone \ or len(message.content.split("@here")) > 1 \ or len(message.mentions) > 1:
JSON = PATH['json'] # Yep you should rename your config.json and append priv to it # This way you won't add even more private stuff on github CONFIG = JSON + "priv.nhk.config.json" COMMANDS = JSON + "nhk.command.json" logging.basicConfig(level=logging.INFO) nhatz_config = CLIENT.loadJson(CONFIG) commands = CLIENT.loadJson(COMMANDS) censored = nhatz_config['censored'] Nhatz = discord.Client() last_msg = dict() comanager = CommandManager(Nhatz, commands, nhatz_config) def record_message(msg): if msg.channel.id in comanager.last_msg: comanager.last_msg[msg.channel.id].put(msg) else: comanager.last_msg[msg.channel.id] = queue.LifoQueue() comanager.last_msg[msg.channel.id].put(msg) @Nhatz.event async def on_ready(): CLIENT.greet(Nhatz)
class Document(object): def __init__(self, storage, storageData): self.storage = storage self.storageData = storageData self.pages = storage.loadPages(storageData) self._manager = CommandManager(config.UNDO_HISTORY_SIZE) def __len__(self): return len(self.pages) def __getitem__(self, key): return self.pages[key] def findItemByPoint(self, page, itemType, point): if isinstance(page, int): page = self[page] return page.findItem(itemType, lambda item: item.bounds.containsPoint(point)) def merge(self, page, itemType, bounds): if isinstance(page, int): page = self[page] page.flagByBounds(itemType, bounds.intersects) page.merge(itemType, self._manager) if self._manager.commit(): Publisher().sendMessage('DOCUMENT_CHANGE') def cutout(self, page, itemType, bounds): if isinstance(page, int): page = self[page] page.flagByBounds(itemType - 1, bounds.intersects) page.cutout(itemType, self._manager) if self._manager.commit(): Publisher().sendMessage('DOCUMENT_CHANGE') def cutout2(self, pagenb, itemType, bounds): self.pages[pagenb].flagByBounds(itemType - 1, bounds.intersects) self.pages[pagenb]._cutout2(itemType, self._manager) if self._manager.commit(): Publisher().sendMessage('DOCUMENT_CHANGE') def atomize(self, page, itemType, bounds): if isinstance(page, int): page = self[page] page.flagByBounds(itemType, bounds.intersects) page.atomize(itemType, self._manager) if self._manager.commit(): Publisher().sendMessage('DOCUMENT_CHANGE') def smartSplitWords(self, page, bounds): if isinstance(page, int): page = self[page] page.flagByBounds(constants.WORD, bounds.intersects) page.smartSplitWords(self._manager) if self._manager.commit(): Publisher().sendMessage('DOCUMENT_CHANGE') def changeLabel(self, zone, label): zone.setLabel(label, self._manager) if self._manager.commit(): Publisher().sendMessage('DOCUMENT_CHANGE') def changeLabels(self, page, bounds, label): if isinstance(page, int): page = self[page] for zone in page.iterItems( constants.ZONE, lambda item: bounds.intersects(item.bounds)): zone.setLabel(label, self._manager) if self._manager.commit(): Publisher().sendMessage('DOCUMENT_CHANGE') def canUndo(self): return self._manager.canUndo() def undo(self): if self._manager.undo(): Publisher().sendMessage('DOCUMENT_CHANGE') def canRedo(self): return self._manager.canRedo() def redo(self): if self._manager.redo(): Publisher().sendMessage('DOCUMENT_CHANGE') def isModified(self): """ Returns true if the document has been modified since last save and false otherwise. """ return not self._manager.isClean() def save(self, *args, **kwargs): self.storage.savePages(self.pages, self.storageData, *args, **kwargs) self._manager.clean()