diff --git a/plugins.py b/plugins.py index 2317718..862c8a3 100644 --- a/plugins.py +++ b/plugins.py @@ -139,55 +139,46 @@ def command_command(args): return { 'name': 'command', 'desc': 'lists commands', - 'args': ('data', 'reply_user', 'cmd_list'), + 'args': ('argv0', 'reply_user', 'cmd_list'), 'ratelimit_class': RATE_GLOBAL } - if 'command' in args['data']: - logger('plugin', 'sent command list') - return { - 'msg': args['reply_user'] + ': known commands: ' + str(args['cmd_list']).strip('[]') - } + if 'command' != args['argv0'] and 'commands' != args['argv0']: + return + + logger('plugin', 'sent command list') + return { + 'msg': args['reply_user'] + ': known commands: ' + str(args['cmd_list']).strip('[]') + } def command_help(args): if 'register' == args: return { 'name': 'help', 'desc': 'print help for a command', - 'args': ('data', 'reply_user', 'cmd_list'), + 'args': ('argv0', 'argv1', 'reply_user', 'cmd_list'), 'ratelimit_class': RATE_GLOBAL } - cmd = None - flag = False + if 'help' != args['argv0']: + return - for word in args['data'].split(): - if True == flag: - cmd = word - break - - if 'help' == word: - flag = True - - if False == flag: # no match on 'help' - return None - - if None == cmd: + if None == args['argv1']: logger('plugin', 'empty help request, sent all commands') - args['data'] += 'command' # this is a little hacky... + args['argv0'] = 'command' # this is a little hacky... return command_command(args) - if not cmd in [p['name'] for p in plugins['command']]: - logger('plugin', 'no help found for %s' % cmd) + if not args['argv1'] in [p['name'] for p in plugins['command']]: + logger('plugin', 'no help found for %s' % args['argv1']) return { - 'msg': args['reply_user'] + ': no such command: %s' % cmd + 'msg': args['reply_user'] + ': no such command: %s' % args['argv1'] } for p in plugins['command']: - if cmd == p['name']: - logger('plugin', 'sent help for %s' % cmd) + if args['argv1'] == p['name']: + logger('plugin', 'sent help for %s' % args['argv1']) return { - 'msg': args['reply_user'] + ': help for %s: %s' % (cmd, p['desc']) + 'msg': args['reply_user'] + ': help for %s: %s' % (args['argv1'], p['desc']) } @@ -196,157 +187,175 @@ def command_version(args): return { 'name': 'version', 'desc': 'prints version', - 'args': ('data', 'reply_user'), + 'args': ('argv0', 'reply_user'), 'ratelimit_class': RATE_GLOBAL } - if 'version' in args['data']: - logger('plugin', 'sent version string') - return { - 'msg': args['reply_user'] + (''': I'm running ''' + VERSION) - } + if 'version' != args['argv0']: + return + + logger('plugin', 'sent version string') + return { + 'msg': args['reply_user'] + (''': I'm running ''' + VERSION) + } def command_klammer(args): if 'register' == args: return { 'name': 'klammer', 'desc': 'prints an anoying paper clip aka. Karl Klammer', - 'args': ('data', 'reply_user'), + 'args': ('argv0', 'reply_user'), 'ratelimit_class': RATE_GLOBAL } - if 'klammer' in args['data']: - logger('plugin', 'sent karl klammer') - return { - 'msg': ( - args['reply_user'] + r''': _, Was moechten''', - args['reply_user'] + r''': ( _\_ Sie tun?''', - args['reply_user'] + r''': \0 O\ ''', - args['reply_user'] + r''': \\ \\ [ ] ja ''', - args['reply_user'] + r''': \`' ) [ ] noe''', - args['reply_user'] + r''': `'' ''' - ) - } + if 'klammer' != args['argv0']: + return + + logger('plugin', 'sent karl klammer') + return { + 'msg': ( + args['reply_user'] + ',', + r''' _, Was moechten''', + r'''( _\_ Sie tun?''', + r''' \0 O\ ''', + r''' \\ \\ [ ] ja ''', + r''' \`' ) [ ] noe''', + r''' `'' ''' + ) + } def command_unicode(args): if 'register' == args: return { 'name': 'unikot', 'desc': 'prints an unicode string', - 'args': ('data', 'reply_user'), + 'args': ('argv0', 'reply_user'), 'ratelimit_class': RATE_GLOBAL } - if 'unikot' in args['data']: - logger('plugin', 'sent some unicode') - return { - 'msg': ( - args['reply_user'] + ''': ┌────────┐''', - args['reply_user'] + ''': │Unicode!│''', - args['reply_user'] + ''': └────────┘''' - ) - } + if 'unikot' != args['argv0']: + return + + logger('plugin', 'sent some unicode') + return { + 'msg': ( + args['reply_user'] + ''', here's some''', + '''┌────────┐''', + '''│Unicode!│''', + '''└────────┘''' + ) + } def command_source(args): if 'register' == args: return { 'name': 'source', 'desc': 'prints git URL', - 'args': ('data', 'reply_user'), + 'args': ('argv0', 'reply_user'), 'ratelimit_class': RATE_GLOBAL } - if 'source' in args['data']: - logger('plugin', 'sent source URL') - return { - 'msg': 'My source code can be found at %s' % conf('src-url') - } + if 'source' != args['argv0']: + return + + logger('plugin', 'sent source URL') + return { + 'msg': 'My source code can be found at %s' % conf('src-url') + } def command_dice(args): if 'register' == args: return { 'name': 'dice', 'desc': 'rolls a dice', - 'args': ('data', 'reply_user'), + 'args': ('argv0', 'reply_user'), 'ratelimit_class': RATE_INTERACTIVE } - if 'dice' in args['data']: - if args['reply_user'] in conf('enhanced-random-user'): - rnd = 0 # this might confuse users. good. - logger('plugin', 'sent random (enhanced)') - else: - rnd = random.randint(1, 6) - logger('plugin', 'sent random') + if 'dice' != args['argv0']: + return - dice_char = ['◇', '⚀', '⚁', '⚂', '⚃', '⚄', '⚅'] - return { - 'msg': 'rolling a dice for %s: %s (%d)' % (args['reply_user'], dice_char[rnd], rnd) - } + if args['reply_user'] in conf('enhanced-random-user'): + rnd = 0 # this might confuse users. good. + logger('plugin', 'sent random (enhanced)') + else: + rnd = random.randint(1, 6) + logger('plugin', 'sent random') + + dice_char = ['◇', '⚀', '⚁', '⚂', '⚃', '⚄', '⚅'] + return { + 'msg': 'rolling a dice for %s: %s (%d)' % (args['reply_user'], dice_char[rnd], rnd) + } def command_uptime(args): if 'register' == args: return { 'name': 'uptime', 'desc': 'prints uptime', - 'args': ('data', 'reply_user'), + 'args': ('argv0', 'reply_user'), 'ratelimit_class': RATE_GLOBAL } - if 'uptime' in args['data']: - u = int(conf('uptime') + time.time()) - plural_uptime = 's' - plural_request = 's' + if 'uptime' != args['argv0']: + return - if 1 == u: - plural_uptime = '' - if 1 == conf('request_counter'): - plural_request = '' + u = int(conf('uptime') + time.time()) + plural_uptime = 's' + plural_request = 's' - logger('plugin', 'sent statistics') - return { - 'msg': args['reply_user'] + (''': happily serving for %d second%s, %d request%s so far.''' % (u, plural_uptime, conf('request_counter'), plural_request)) - } + if 1 == u: + plural_uptime = '' + if 1 == conf('request_counter'): + plural_request = '' + + logger('plugin', 'sent statistics') + return { + 'msg': args['reply_user'] + (''': happily serving for %d second%s, %d request%s so far.''' % (u, plural_uptime, conf('request_counter'), plural_request)) + } def command_ping(args): if 'register' == args: return { 'name': 'ping', 'desc': 'sends pong', - 'args': ('data', 'reply_user'), + 'args': ('argv0', 'reply_user'), 'ratelimit_class': RATE_INTERACTIVE } - if 'ping' in args['data']: - rnd = random.randint(0, 3) # 1:4 - if 0 == rnd: - msg = args['reply_user'] + ''': peng (You're dead now.)''' - logger('plugin', 'sent pong (variant)') - elif 1 == rnd: - msg = args['reply_user'] + ''': I don't like you, leave me alone.''' - logger('plugin', 'sent pong (dontlike)') - else: - msg = args['reply_user'] + ''': pong''' - logger('plugin', 'sent pong') + if 'ping' != args['argv0']: + return - return { - 'msg': msg - } + rnd = random.randint(0, 3) # 1:4 + if 0 == rnd: + msg = args['reply_user'] + ''': peng (You're dead now.)''' + logger('plugin', 'sent pong (variant)') + elif 1 == rnd: + msg = args['reply_user'] + ''': I don't like you, leave me alone.''' + logger('plugin', 'sent pong (dontlike)') + else: + msg = args['reply_user'] + ''': pong''' + logger('plugin', 'sent pong') + + return { + 'msg': msg + } def command_info(args): if 'register' == args: return { 'name': 'info', 'desc': 'prints info message', - 'args': ('data', 'reply_user'), + 'args': ('argv0', 'reply_user'), 'ratelimit_class': RATE_GLOBAL } - if 'info' in args['data']: - logger('plugin', 'sent long info') - return { - 'msg': args['reply_user'] + (''': I'm a bot, my job is to extract