Пример #1
0
def wrap_as_bot_command(bot, function, name):
    """ Wrap the given function as a bot command. """

    is_bot_command = getattr(function, '_jabberbot_command', False)

    if is_bot_command:
       command = function

    else:

        @requires_subscription
        def wrapper(self, message, args):
            f_args = getargspec(function).args
            allowed_args = [bot, message, args]
            n = len(f_args)

            if n <= 3:
                args = allowed_args[3-n:]
                with captured_stdout() as captured:
                    result = function(*args)

                if captured.output:
                    self.message_queue.append(captured.output)

            else:
                result = None

            return result

        wrapper = update_wrapper(partial(wrapper, bot), function)

        command = botcmd(wrapper, name=name)

    return command
Пример #2
0
def directcmd(func):
    @wraps(func)
    def wrapper(self, origin, args):
        message = func(self, origin, args)
        username = unicode(origin.getFrom()).split('/')[1].replace(" ","")
        return u'@%s %s' % (username, message)
    return botcmd(wrapper)
Пример #3
0
def command(*_options, **kwargs):
    #Refactor me, use functools
    if not kwargs and len(_options) == 1 and hasattr(_options[0], '__call__'):
        f = _options[0]
        f = botcmd(f)
        return f
    else:

        def options_wrapper(func):
            parser = Options.build_parser(name=func.func_name,
                                          options=sorted(_options,
                                                         key=lambda o: o.dest))

            @wraps(func)
            def func_wrapper(self, mess, raw_args):
                func_options = process_args(raw_args, parser=parser, **kwargs)
                return func(self, mess, raw_args, func_options)

            func_wrapper = botcmd(func_wrapper)
            func_wrapper._options = _options
            func_wrapper.__doc__ = (func.__doc__ or "") + parser.format_help()

            return func_wrapper

    return options_wrapper
Пример #4
0
def directcmd(func):
    @wraps(func)
    def wrapper(self, origin, args):
        message = func(self, origin, args)
        username = unicode(origin.getFrom()).split('/')[1]
        return u'@"%s" %s' % (username, message)

    return botcmd(wrapper)
Пример #5
0
def directcmd(func):
    @wraps(func)
    def wrapper(self, origin, args):
        message = func(self, origin, args)
        username = unicode(origin.getFrom()).split("/")[1]
        return u'@"%s" %s' % (username, message)

    return botcmd(wrapper)
Пример #6
0
def directcmd(func):
    @wraps(func)
    def wrapper(self, origin, args):
        message = func(self, origin, args)
        if origin.getType() == 'groupchat':
            user = self.bot.get_sending_user(origin)
            return u'@%s %s' % (user.mention_name, message)
        else:
            return message
    return botcmd(wrapper)
Пример #7
0
def directcmd(func):
    @wraps(func)
    def wrapper(self, origin, args):
        message = func(self, origin, args)
        if origin.getType() == 'groupchat':
            user = self.bot.get_sending_user(origin)
            return u'@%s %s' % (user.mention_name, message)
        else:
            return message

    return botcmd(wrapper)
Пример #8
0
        def options_wrapper(func):
            parser = Options.build_parser(name=func.func_name,
                                          options=sorted(_options, key=lambda o: o.dest))

            @wraps(func)
            def func_wrapper(self, mess, raw_args):
                func_options = process_args(raw_args, parser=parser, **kwargs)
                return func(self, mess, raw_args, func_options)

            func_wrapper = botcmd(func_wrapper)
            func_wrapper._options = _options
            func_wrapper.__doc__ = (func.__doc__ or "") + parser.format_help()

            return func_wrapper
Пример #9
0
        def options_wrapper(func):
            parser = Options.build_parser(name=func.func_name,
                                          options=sorted(_options,
                                                         key=lambda o: o.dest))

            @wraps(func)
            def func_wrapper(self, mess, raw_args):
                func_options = process_args(raw_args, parser=parser, **kwargs)
                return func(self, mess, raw_args, func_options)

            func_wrapper = botcmd(func_wrapper)
            func_wrapper._options = _options
            func_wrapper.__doc__ = (func.__doc__ or "") + parser.format_help()

            return func_wrapper
Пример #10
0
def command(*_options, **kwargs):
    #Refactor me, use functools
    if not kwargs and len(_options) == 1 and hasattr(_options[0], '__call__'):
        f = _options[0]
        f = botcmd(f)
        return f
    else:
        def options_wrapper(func):
            parser = Options.build_parser(name=func.func_name,
                                          options=sorted(_options, key=lambda o: o.dest))

            @wraps(func)
            def func_wrapper(self, mess, raw_args):
                func_options = process_args(raw_args, parser=parser, **kwargs)
                return func(self, mess, raw_args, func_options)

            func_wrapper = botcmd(func_wrapper)
            func_wrapper._options = _options
            func_wrapper.__doc__ = (func.__doc__ or "") + parser.format_help()

            return func_wrapper

    return options_wrapper
Пример #11
0
def directcmd(func):
    def wrapper(self, origin, args):
        message = func(self, origin, args)
        username = unicode(origin.getFrom()).split('/')[1].split(' ')[0].lower()
        return "@%s %s" % (username, message)
    return botcmd(wrapper)