示例#1
0
def main():
    # top-level parser
    parser = argparse.ArgumentParser(
        epilog='Multi-word values'
        ' must be encased in quotes, like "that".')
    subparsers = parser.add_subparsers()

    # subparser for the "add" command
    create_parser = subparsers.add_parser('add', help='create new task')
    create_parser.set_defaults(action='add')
    create_parser.add_argument(
        '--name',
        type=valid_name,
        required=True,
        help='name of the task (required, max. 20 characters)',
        metavar='')
    create_parser.add_argument(
        '--deadline',
        type=valid_date,
        help='task\'s deadline in ISO format (yyyy-mm-dd)',
        metavar='')
    create_parser.add_argument('--description',
                               type=str,
                               help='description of the task',
                               metavar='')

    # subparser for the "update" command
    update_parser = subparsers.add_parser('update', help='update task')
    update_parser.set_defaults(action='update')
    update_parser.add_argument('TASK_HASH', help='Task identifier')
    update_parser.add_argument('--name',
                               type=str,
                               help='name of the task',
                               metavar='')
    update_parser.add_argument(
        '--deadline',
        type=valid_date,
        help='task\'s deadline  in ISO format (yyyy-mm-dd)',
        metavar='')
    update_parser.add_argument('--description',
                               type=str,
                               help='description of the task',
                               metavar='')

    # subparser for the "delete" command
    delete_parser = subparsers.add_parser('delete', help='delete task')
    delete_parser.set_defaults(action='delete')
    delete_parser.add_argument('TASK_HASH', type=str, help='Task identifier')

    # subparser for the "list" command
    list_parser = subparsers.add_parser('list', help='list tasks')
    list_parser.set_defaults(action='list')
    list_group = list_parser.add_mutually_exclusive_group(required=True)
    list_group.add_argument('--all', action='store_true')
    list_group.add_argument('--today', action='store_true')

    args = parser.parse_args()

    task_manager = TaskManager()

    if args.action == "add":
        task_manager.add_task(args.name, args.deadline, args.description)
    elif args.action == "update":
        task_manager.update_task(args.TASK_HASH, args.name, args.deadline,
                                 args.description)
    elif args.action == "delete":
        task_manager.delete_task(args.TASK_HASH)
    elif args.action == "list":
        if args.all:
            task_manager.list_tasks('all')
        else:
            task_manager.list_tasks('today')
示例#2
0
class BotManager:
    def __init__(self):
        self.task_manager = TaskManager()
        self.issue_manager = IssueManager()
        self.url_handler = UrlHandler()

    def handle_updates(self, updates, chat_bot):
        """read the user command and calls the property methods"""
        for update in updates["result"]:
            try:
                message = self.url_handler.get_message(update)
                command = message["text"].split(" ", 1)[0]
            except:
                return
            msg = ''
            if len(message["text"].split(" ", 1)) > 1:
                msg = message["text"].split(" ", 1)[1].strip()

            chat = message["chat"]["id"]

            print('\n\n\n')
            print(command, msg, chat)
            print('\n\n\n')

            if command == '/new' or command == '/n':
                self.task_manager.new_task(msg, chat)

            elif command == '/newIssue' or command == '/ni':
                self.issue_manager.new_issue(msg, chat)

            elif command == '/renameIssue' or command == '/ri':
                self.issue_manager.rename_issue(msg, chat)

            elif command == '/rename' or command == '/r':
                self.task_manager.rename_task(msg, chat)

            elif command == '/duplicate' or command == '/dc':
                self.task_manager.duplicate_task(msg, chat)

            elif command == '/delete' or command == '/d':
                self.task_manager.delete_task(msg, chat)

            elif command == '/todo':
                self.task_manager.set_task_status(msg, chat, constants.TODO)

            elif command == '/doing':
                self.task_manager.set_task_status(msg, chat, constants.DOING)

            elif command == '/done':
                self.task_manager.set_task_status(msg, chat, constants.DONE)

            elif command == '/listP' or command == '/lp':
                order = Task.priority
                self.task_manager.list_tasks(chat, order)

            elif command == '/list' or command == '/l':
                order = Task.id
                self.task_manager.list_tasks(chat, order)

            elif command == '/listIssues' or command == '/li':
                self.issue_manager.list_issues(chat)

            elif command == '/dependson' or command == '/dp':
                self.task_manager.depend_on_task(msg, chat)

            elif command == '/priority' or command == '/p':
                self.task_manager.prioritize_task(msg, chat)

            elif command == '/duedate' or command == '/dd':
                self.task_manager.duedate_task(msg, chat)

            elif command == '/start':
                self.url_handler.send_message(
                    "Welcome! Here is a list of things you can do.", chat)
                self.url_handler.send_message(constants.HELP, chat)

            elif command == '/help' or command == '/h':
                self.url_handler.send_message(
                    "Here is a list of things you can do.", chat)
                self.url_handler.send_message(constants.HELP, chat)

            else:
                response = chat_bot.predict([message['text']])
                print(response)
                print(message['text'])
                response = str(response)
                print(response)
                self.url_handler.send_message(response[2:-2], chat)